# writing a udf for a specific body force

 Register Blogs Members List Search Today's Posts Mark Forums Read

 October 10, 2014, 21:01 writing a udf for a specific body force #1 New Member   Amirali Join Date: Oct 2014 Posts: 3 Rep Power: 11 hi i managed to solve a problem with matlab and now i have a matrix which consists of magnitude of a force which is applied to the particles in all of the domain. in this matrix i component is equivalent to x position and j component is equivalent to y position. now if want to write a udf to take this force file and apply it to particles as a body force. could anyone help me how to write this udf ? should i use define_dpm_body_ force or another macro? how could i read this matrix file? thanks

 October 13, 2014, 11:04 #2 Senior Member   Join Date: Nov 2013 Posts: 1,965 Rep Power: 26 Basic steps for your udf file: 1. Define a global array to contain your force. If you have a two-dimensional problem, and the matrix that you calculated is 400x600, your global array should be 400x600x2 (x2 because you need two components of the force). 2. Write a DEFINE_ON_DEMAND macro to read the contents of your data file into the global array. 3. Write a DEFINE_DPM_BODY_FORCE macro. This macro should: A. Find the location of the particle using P_POS(p). B. Calculate from the position which entry of your matrix should be used. C. Get the corresponding force from the global array. D. Assign the force to the particle. When you do the real calculation, you should first execute the DEFINE_ON_DEMAND macro, before you do the dpm calculations. In this way, the data file will only be read once, which will speed up your calculations a lot. Good luck!

October 15, 2014, 02:13
#3
New Member

Amirali
Join Date: Oct 2014
Posts: 3
Rep Power: 11
Quote:
 Originally Posted by pakk Basic steps for your udf file: 1. Define a global array to contain your force. If you have a two-dimensional problem, and the matrix that you calculated is 400x600, your global array should be 400x600x2 (x2 because you need two components of the force). 2. Write a DEFINE_ON_DEMAND macro to read the contents of your data file into the global array. 3. Write a DEFINE_DPM_BODY_FORCE macro. This macro should: A. Find the location of the particle using P_POS(p). B. Calculate from the position which entry of your matrix should be used. C. Get the corresponding force from the global array. D. Assign the force to the particle. When you do the real calculation, you should first execute the DEFINE_ON_DEMAND macro, before you do the dpm calculations. In this way, the data file will only be read once, which will speed up your calculations a lot. Good luck!
thank you very much pakk for your very useful guidance. how could i read a global array file with the define_on_demand macro? is there exists any prepared code to use?

 October 15, 2014, 03:37 #4 Senior Member   Join Date: Nov 2013 Posts: 1,965 Rep Power: 26 That is standard programming with arrays in c. There are many websites that explain it better than I can, just google for "arrays in c".

 Tags body force, dpm, reading force matrix, udf