# Add Work due to body force in the energy equation for a lagrangian solver

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

 April 15, 2015, 05:09 Add Work due to body force in the energy equation for a lagrangian solver #1 New Member   Matthias Neben Join Date: Oct 2011 Location: Cottbus (Germany) Posts: 28 Rep Power: 14 Dear Foamers, for multiphase flows with disperse particles the literature recommends the usage of a source term in the energy equation (Multiphase flows with droplets and particles, Crowe et.al., p. 445). This term shall mention the work due to body forces acting on the particle, mainly the work due to the drag force. To get this I have to multiply the momentum source term with each cell’s number averaged particle velocity. Now there is the problem: How do I get an appropriate inner product of the momentum equation source term with a volVectorField? An Example: The momentum equation of the reactingParcelFoam-solver has on the left side a momentum source called parcels.SU(U). Additionally one needs a volVectorField Up which corresponds to a averaged particle velocity in each cell. Now I thought lets do something like Up&parcels.SU(U) and add this to the right side of the energy equation, but this fails because parcels.SU(U)is a Foam::tmp. Greetings Matthias Last edited by mneben; April 16, 2015 at 04:36.

April 15, 2015, 12:34
#2
Senior Member

Armin
Join Date: Feb 2011
Location: Helsinki, Finland
Posts: 156
Rep Power: 19
Quote:
 Originally Posted by mneben Now I thought lets do something like Up&parcels.SU(U) and add this to the left side of the energy equation, but this fails because because parcels.SU(U)is a Foam::tmp.
Jep you cannot take the inner product of a volVectorField and fvVectorMatrix.

But you can get UTrans, which is a DimensionedField, and use that one to compute what you want since you are not interested in the boundary field anyways.
Have a look at:
Code:
`src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H`
-Armin

 April 27, 2015, 10:04 #3 New Member   Matthias Neben Join Date: Oct 2011 Location: Cottbus (Germany) Posts: 28 Rep Power: 14 Hello Armin, thanks for your quick response. According to your recommendation I checked UTrans, especially the function calcVelocity written in KinematicParcel.C: dUTrans += dt*(Feff.Sp()*(Ures.average() - Uc_) - Fcp.Su()); whereas Utrans will be calculated by td.cloud().UTrans()[cellI] += np0*dUTrans When there is no lift force Fcp.SU() should be zero and UTrans should be the drag force times the timestep. To check this I created a test case with only one particle that is accelerated by the drag force. I added in uncoupledKinematicParcelFoam some lines Info<

April 28, 2015, 06:10
#4
Senior Member

Armin
Join Date: Feb 2011
Location: Helsinki, Finland
Posts: 156
Rep Power: 19
Quote:
 Originally Posted by mneben Why is Utrans zero? Where is my mistake?
Sorry, I cannot help you right much further since I would have to dig through the code and see what is really done there and I don't have time for that.

A couple of hints though:
• Are you running time-accurate or steady state?
• If you use a fully explicit coupling between Lagrangian and continuous phase, the source term in the momentum equation is (see KinematicCloudI.H):
Code:
`fvm.source() = -UTrans()/(this->db().time().deltaT());`

 November 30, 2015, 12:15 #5 Senior Member   Albrecht vBoetticher Join Date: Aug 2010 Location: Zürich, Swizerland Posts: 237 Rep Power: 16 Hi Matthias, could you get new insights? I try to introduce the drag of all parcels in a cell as a bodyforce (like gravity) into interFoam, based on UncoupledKinematicParcelFoam. The one-way coupling works fine, but getting the momentum sources into the UEqn is hard.

 December 1, 2015, 09:02 #6 New Member   Matthias Neben Join Date: Oct 2011 Location: Cottbus (Germany) Posts: 28 Rep Power: 14 Hello vonboett, a good reference for your question is the source code of the DPMFoam solver. Here we can find the following lines: fvVectorMatrix cloudSU(kinematicCloud.SU(Uc)); fvVectorMatrix UcEqn ( fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc) - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc) + continuousPhaseTurbulence->divDevRhoReff(Uc) == (1.0/rhoc)*cloudSU ); Greetings Matthias

 January 19, 2016, 06:30 #7 Senior Member   Albrecht vBoetticher Join Date: Aug 2010 Location: Zürich, Swizerland Posts: 237 Rep Power: 16 Hi Matthias, I can really recommend http://www.cfd-online.com/Forums/ope...tml#post547057 I managed to get the UEqn working but as soon as I add the explicit source of drag & buoyancy I'm getting unstable. Anyway, at least I can model one-way coupling including collisions