mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
reactingTwoPhaseEulerFoam: Added LTS support to the face-momentum algorithm
This commit is contained in:
@ -29,37 +29,25 @@ for (int Ecorr=0; Ecorr<nEnergyCorrectors; Ecorr++)
|
||||
}
|
||||
|
||||
{
|
||||
tmp<fvScalarMatrix> E2eqn(phase2.heEqn());
|
||||
tmp<fvScalarMatrix> E2Eqn(phase2.heEqn());
|
||||
|
||||
if (E2eqn.valid())
|
||||
if (E2Eqn.valid())
|
||||
{
|
||||
E2eqn =
|
||||
E2Eqn =
|
||||
(
|
||||
E2eqn
|
||||
E2Eqn
|
||||
==
|
||||
*heatTransfer[phase2.name()]
|
||||
+ alpha2*rho2*(U2&g)
|
||||
+ fvOptions(alpha2, rho2, phase2.thermo().he())
|
||||
);
|
||||
|
||||
E2eqn->relax();
|
||||
fvOptions.constrain(E2eqn.ref());
|
||||
E2eqn->solve();
|
||||
E2Eqn->relax();
|
||||
fvOptions.constrain(E2Eqn.ref());
|
||||
E2Eqn->solve();
|
||||
}
|
||||
}
|
||||
|
||||
fluid.correctThermo();
|
||||
fluid.correct();
|
||||
}
|
||||
|
||||
Info<< phase1.name() << " min/max T "
|
||||
<< min(phase1.thermo().T()).value()
|
||||
<< " - "
|
||||
<< max(phase1.thermo().T()).value()
|
||||
<< endl;
|
||||
|
||||
Info<< phase2.name() << " min/max T "
|
||||
<< min(phase2.thermo().T()).value()
|
||||
<< " - "
|
||||
<< max(phase2.thermo().T()).value()
|
||||
<< endl;
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
tmp<surfaceScalarField> trDeltaTf;
|
||||
|
||||
if (LTS && faceMomentum)
|
||||
{
|
||||
trDeltaTf = tmp<surfaceScalarField>
|
||||
(
|
||||
new surfaceScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fv::localEulerDdt::rDeltaTfName,
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::READ_IF_PRESENT,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar("one", dimless/dimTime, 1)
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -1,9 +1,2 @@
|
||||
ddtPhi1 =
|
||||
(
|
||||
(phi1 - phi1.oldTime())/runTime.deltaT()
|
||||
);
|
||||
|
||||
ddtPhi2 =
|
||||
(
|
||||
(phi2 - phi2.oldTime())/runTime.deltaT()
|
||||
);
|
||||
ddtPhi1 = fvc::ddt(phi1);
|
||||
ddtPhi2 = fvc::ddt(phi2);
|
||||
|
||||
@ -1,9 +1,2 @@
|
||||
surfaceScalarField ddtPhi1
|
||||
(
|
||||
(phi1 - phi1.oldTime())/runTime.deltaT()
|
||||
);
|
||||
|
||||
surfaceScalarField ddtPhi2
|
||||
(
|
||||
(phi2 - phi2.oldTime())/runTime.deltaT()
|
||||
);
|
||||
surfaceScalarField ddtPhi1(fvc::ddt(phi1));
|
||||
surfaceScalarField ddtPhi2(fvc::ddt(phi2));
|
||||
|
||||
@ -27,15 +27,17 @@ surfaceScalarField Kdf("Kdf", fluid.Kdf());
|
||||
// Virtual-mass coefficient
|
||||
surfaceScalarField Vmf("Vmf", fluid.Vmf());
|
||||
|
||||
const surfaceScalarField& rDeltaTf = fv::localEulerDdt::localRDeltaTf(mesh);
|
||||
|
||||
surfaceScalarField rAUf1
|
||||
(
|
||||
IOobject::groupName("rAUf", phase1.name()),
|
||||
1.0
|
||||
/(
|
||||
(alphaRhof10 + Vmf)/runTime.deltaT()
|
||||
rDeltaTf*(alphaRhof10 + Vmf)
|
||||
+ fvc::interpolate(U1Eqn.A())
|
||||
+ Kdf
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
surfaceScalarField rAUf2
|
||||
@ -43,10 +45,10 @@ surfaceScalarField rAUf2
|
||||
IOobject::groupName("rAUf", phase2.name()),
|
||||
1.0
|
||||
/(
|
||||
(alphaRhof20 + Vmf)/runTime.deltaT()
|
||||
rDeltaTf*(alphaRhof20 + Vmf)
|
||||
+ fvc::interpolate(U2Eqn.A())
|
||||
+ Kdf
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@ -157,7 +159,7 @@ while (pimple.correct())
|
||||
rAUf1
|
||||
*(
|
||||
(alphaRhof10 + Vmf)
|
||||
*MRF.absolute(phi1.oldTime())/runTime.deltaT()
|
||||
*rDeltaTf*MRF.absolute(phi1.oldTime())
|
||||
+ fvc::flux(U1Eqn.H())
|
||||
+ Vmf*ddtPhi2
|
||||
+ Kdf*MRF.absolute(phi2)
|
||||
@ -175,7 +177,7 @@ while (pimple.correct())
|
||||
rAUf2
|
||||
*(
|
||||
(alphaRhof20 + Vmf)
|
||||
*MRF.absolute(phi2.oldTime())/runTime.deltaT()
|
||||
*rDeltaTf*MRF.absolute(phi2.oldTime())
|
||||
+ fvc::flux(U2Eqn.H())
|
||||
+ Vmf*ddtPhi1
|
||||
+ Kdf*MRF.absolute(phi1)
|
||||
|
||||
@ -73,6 +73,7 @@ int main(int argc, char *argv[])
|
||||
)
|
||||
);
|
||||
|
||||
#include "createRDeltaTf.H"
|
||||
#include "pUf/createDDtU.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -91,6 +92,10 @@ int main(int argc, char *argv[])
|
||||
if (LTS)
|
||||
{
|
||||
#include "setRDeltaT.H"
|
||||
if (faceMomentum)
|
||||
{
|
||||
#include "setRDeltaTf.H"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -0,0 +1 @@
|
||||
trDeltaTf.ref() = fvc::interpolate(fv::localEulerDdt::localRDeltaT(mesh));
|
||||
Reference in New Issue
Block a user