virtual mass force

Submitted by rqwang on Tue, 05/24/2011 - 23:58

Hi cfdemers,

Has anyone developed the added mass force?

Since du/dt (for fluid phase) has to be calculated, I wonder whether uprev and unext should be calculated and stored as well.

Do you have any better idea? Thanks in advance.

rq

cgoniva's picture

cgoniva | Fri, 05/27/2011 - 12:41

Hi rq!

You mean virtual mass force (force due to acceleration of the surrounding fluid)?
This seems to be a very interesting topic - have not had time to implement sth like that.

Cheers,
Chris

cgoniva's picture

cgoniva | Fri, 05/27/2011 - 15:20

Dear cfdem users,

the latest cfdem release now comes with a virtual mass force model.

The model is not tested yet, please feel free to do so and give us a feedback.

The usage is explained in the settlingTestMPI testcase.

Cheers,
Chris

rqwang | Thu, 09/29/2011 - 03:36

Hi Chris,

Thank you for updating the code with virtualMassforce.

Adding this force makes my simulation unstable. I am thinking of the derivative of V_rel is an appropriate replacement of DV_f/Dt-dVp/dt

Please check it.

Thanks.

rq

rqwang | Thu, 09/29/2011 - 14:03

Hi Chris,

Yes, I have tried by my own. The virtual mass force just go to a very large number, which crashed my simulation.

Thanks.

rq

cgoniva's picture

cgoniva | Sat, 10/01/2011 - 14:55

Hi!

Thank you, it would be great if you could send me your version of the code, then I can put it into the next release update.

(I actually never worked with v.m.f., so I am happy for any feedback on that ;-)

Cheers,
Chris

rqwang | Fri, 10/07/2011 - 21:37

Hi Chris,

I think we just need to add two terms to complete the material derivative, sth like:

virtualMassForce = 0.5 * rho * Vs *(ddtUrel + fvc::div(phi,U_[cellI]) - fvc::div(phi_s,Us))

Could you help me modify the code like above?

Thanks.

rq

ckloss's picture

ckloss | Sun, 10/09/2011 - 10:00

Hi rq,

see cfdemParticle / subModels / forceModel / virtualMassForce / virtualMassForce.C
The force is calculated in void virtualMassForce::setForce()

Cheers, Christoph

rqwang | Mon, 10/10/2011 - 00:41

Hi Chris,

Do you need me to modify the code?

I have a difficulty that I don't know how to introduce the flux phi into the code in order to calculate the convection terms in the material derivatives. Could you give me some clue?

Thanks.

rq

ckloss's picture

ckloss | Mon, 10/10/2011 - 12:48

Chris is currently out of office for the next 3 weeks and will be checking by infrequently if at all.
I will forward your question - probably Alice can answer this better than me.

Christoph

rqwang | Sun, 10/16/2011 - 04:17

Hi Alice,

I found a bug in the virtualMassForce model, which overflow my simulation.

I found this is caused by this line:

UrelOld_[index][j] = Ur[j];

It looks the memory is not well managed.

Could you check it for me?

As well, a related question:

why is the UrelOld_ defined by mutable double **UrelOld_ in H file?

Thanks a lot.

rq

ckloss's picture

ckloss | Sun, 10/16/2011 - 09:07

>>Could you check it for me?
without a test case unfortunately not, could you please debug that on your side by running valgrind.

Christoph

rqwang | Sun, 10/16/2011 - 15:08

Hi Christoph,

Thank you for your help. I have never used valgrind. I will give a try.

Now, I added a variable to the particleCloud, i.e. particleCloud.UrelOld

I can call the function without problem.

I want to use this variable to store the old relative velocity for next time step, but this variable is reset to zero in the next time step.

Could you tell me how to keep the value of particleCloud.xxxx without updating or resetting?

Thanks.

rq

alice's picture

alice | Sun, 10/16/2011 - 16:24

hello,
actually, right before the functions for setting all fields like velocites_, voidfractions_ etc. are executed, the fields still contain the old values. (I understand that UrelOld lives in the same level as these fields?)
Maybe you can have a look at your field at different places to check out, where the resetting takes place.
Cheers,
Alice

rqwang | Sun, 10/16/2011 - 18:07

Hi Alice,

You are right. I put UrelOlds_ in the same level as velocities_ etc.

I think the way to change the value of UrelOld might be wrong in my case, i.e.

particleCloud_.UrelOld(index) = Ur;

This function didn't change the value of UrelOlds_, since particleCloud_.UrelOld(index) just calls the function.

Now I change the access property of UrelOld_ to public and update the value directly by

particleCloud_.UrelOlds_[index] = Ur;

It works well so far.

Thanks.

rq

rqwang | Sun, 10/16/2011 - 16:25

Hi Christoph,

I put the new variable UrelOlds_ into public of particleCloud. (I believe not the best solution)

It works so far.

Thanks and hope this bug can be fixed in new version.

rq

cgoniva's picture

cgoniva | Thu, 10/27/2011 - 17:26

Hi rq,

probably you could come up with a new forum entry on that topic including the literature ref. of your model.

To be honest, it is not totally clear to me what you tried to implemented / implemented in the end and why you need the old values

:-)

Cheers,
Chris

rqwang | Sun, 10/16/2011 - 05:44

Hi Alice,

Another question, now I try to add UrelOld in cfdemCloud. So every time I can update particleCloud.UrelOld(index) by Ur. But I found in every new time step, particleCloud.UrelOld(index) is reset to (0,0,0).

Could you tell me how to keep the old value of particleCloud without resetting?

Thanks.

rq

alice's picture

alice | Mon, 10/10/2011 - 13:08

Hi,
in order to calculate the flux you' re gonna need the data from the previous time step. As far as i know you should be able to access it using [your volVectorField].oldTime()
Hope this helps...
Best,
Alice

rqwang | Fri, 10/14/2011 - 04:36

Hi Alice,

I try to write div(phi_,U_) in virtualMassForce.C, but the compiler gave me the error like

no matching function for call to 'div(const volVectorfield&,const volVectorfield&)'

Do you have any idea to overcome?

Thanks.

rq

alice's picture

alice | Fri, 10/14/2011 - 08:42

Good morning,
the function div is an OF function that lives in the fvm-namespace, so you can call it by writing fvm::div(). (cf. the use of div, laplacian etc. in the solvers...).
Cheers,
Alice

rqwang | Fri, 10/14/2011 - 22:48

Hi Alice,

Both of fvm::div and fvc::div give the same error message as my last post.

Do you have any idea?

Thanks.

rq

rqwang | Sat, 10/15/2011 - 02:35

Hi Alice,

I found the mistake is the definition of phi.

It should be surfaceScalarField instead of volVectorField.

Thanks.

rq

Roger | Tue, 05/19/2015 - 15:17

Dear CFDEM developers,

searching about the virtual mass force implemented in CFDEM I found the reference of the equation proposed above by rqwang: Crowe, Clayton T.; Sommerfeld, Martin; Tsuji, Yutaka (1998). Multiphase flows with droplets and particles. CRC Press. I thought it would be helpful for the completeness of the thread.

And now the question ;) In this source, a nice derivation of the equation is given. However, this equation is only valid for inviscid fluids. For viscous fluids, a virtual mass coefficient proposed by Odar and Hamilton (1964) is recommended. A complete description of the virtual mass force, the virtual mass coefficient and a parameter called acceleration number may be found in: Sommerfeld, Martin; van Wachem, Berend; Oliemans, René (2008). Best Practice Guidelines for Computational Fluid Dynamics of Dispersed Multi-phase Flows. ERCOFTAC. I was wondering if you have considered the implementation of this model?

Best regards,
Roger

Roger | Fri, 05/15/2015 - 12:14

Dear CFDEM developers,

searching about the virtual mass force implemented in CFDEM I found the reference of the equation proposed above by rqwang: Crowe, Clayton T.; Sommerfeld, Martin; Tsuji, Yutaka (1998). Multiphase flows with droplets and particles. CRC Press. I thought it would be helpful for the completeness of the thread.

And now the question ;) In this source, a nice derivation of the equation is given. However, this equation is only valid for inviscid fluids. For viscous fluids, a virtual mass coefficient proposed by Odar and Hamilton (1964) is recommended. A complete description of the virtual mass force, the virtual mass coefficient and a parameter called acceleration number may be found in: Sommerfeld, Martin; van Wachem, Berend; Oliemans, René (2008). Best Practice Guidelines for Computational Fluid Dynamics of Dispersed Multi-phase Flows. ERCOFTAC. I was wondering if you have considered the implementation of this model?

Best regards,
Roger