Brownian motion force calculation issue in OpenFoam
The Brownian force (https://cpp.openfoam.org/v11/Brownia...8C_source.html) is said to be calculated as in Ahmadi et. al (https://doi.org/10.1080/02786829208959550), as
. The force is then added to the list of forces acting on a particle (as an explicit contribution) as , where is the mass of the particle. The sum of forces gives the net force, which is then integrated to obtain the new particle position. The article states, that the Brownian motion force should be varying through the timestep, as shown here: https://bugs.openfoam.org/file_downl...=1616&type=bug, whereas in case of current implementation, it is clearly constant for each timestep. Moreover, tracking the time evolution of the RMS displacement of particles, given by gives a wrong result; time evolution is obtained, instead of as shown in theory (Ahmadi). This phenomena most likely stems from the fact that Brownian force is calculated and added to the sum of all forces just like any other force (drag, lift, ...), which is most likely incorrect. A thought on this matter from anyone will be greatly appreciated. |
Thank you for your response.
I am writing my interpretation of the Brownian force explanation, as shown here: https://bugs.openfoam.org/file_downl...=1616&type=bug The fact is, that the resulting RMS displacement from the simulation does not follow (as is Ahmadi), but rather . I can not explain this behavior and would need additional clarification whether it is expected, or am I missing something? Of course, a modeled particle force must be added to all other forces and then integrated, this was not in question. My guess was, that the Brownian motion should perhaps not be modeled as a force (equivalent to drag, lift, etc..), as this approach gives a result, different than that of the reference. |
Hmmm ... others have reported having issues as well - check out the following thread: https://www.cfd-online.com/Forums/op...-openfoam.html. Seems like you may have to play with the model a bit.
|
1 Attachment(s)
I tested a simple case of 2D Brownian motion from a point source (Brownian force only, constant temperature), and the results of RMS displacement for two different timesteps are attached below.
The RMS displacement was calculated as , where is the position vector of the particle, the starting position and the number of particles. Attachment 98399 The RMS displacement does not follow the theoretical curve (as in Ahmadi). Could the RMS displacement definition be wrong in my case, as the reference does not provide it? |
You could think about contacting the author of this issue:
https://develop.openfoam.com/Develop.../-/issues/2922 He seems to be working in that area. Probably easiest if you just add a comment onto that issue and ask if he has some thoughts on the subject. |
Great comment Mark - I didn't think of looking for a registered bug. From a quick skim of the link, one comment about your test case jenc24 is that it should really be 3D rather than 2D. But also read the part about the required changes to the coding. You'll also find an example test case for you to try. Good luck.
|
1 Attachment(s)
Thank you for both of your comments.
Fortunately, I was able to find the origin of the problem. The Brownian motion force behaves the same as in Ahmadi, only if drag is also considered: Attachment 98415 From physics point of view, that makes sense, as the sum of both forces dictates the direction and the magnitude of particle displacement. In real two phase systems, drag will always have an effect. It also makes me wonder - why is Brownian motion modeled as a force? Isn't the whole point of Brownian motion a random pertubation of particle position? Would the modelling of Brownian motion in the following way be wrong: where are random displacement vector and Brownian diffusivity respectively. Now I know, that Brownian motion is indeed a result of some force, but from a modelling point of view, the position-pertubation approach looks simpler. Furthermore, it eliminates the need for particle timestep fitting (particle relaxation time). Let me know what anyone thinks. |
Well done for figuring it out. As for the suggestion to model the motion with a position perturbation - I guess the current method is more general and allows for other forces to be added in, if necessary. Plus it's probably also easier to allow for boundary effects.
Nothing to stop you coding up the position perturbation approach instead and giving it a go! ;) Let us know how you get on. |
All times are GMT -4. The time now is 15:32. |