twoPhaseEulerFoam: Add fvOptions support and tutorial

This commit is contained in:
Henry
2014-05-08 11:45:50 +01:00
committed by Andrew Heather
parent e481e1a05a
commit 24679abcc5
25 changed files with 2940 additions and 22 deletions

View File

@ -10,10 +10,10 @@
fvScalarMatrix he1Eqn
(
fvm::ddt(alpha1, rho1, he1) + fvm::div(alphaRhoPhi1, he1)
- fvm::Sp(fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1), he1)
- fvm::Sp(contErr1, he1)
+ fvc::ddt(alpha1, rho1, K1) + fvc::div(alphaRhoPhi1, K1)
- (fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1))*K1
- contErr1*K1
+ (
he1.name() == thermo1.phasePropertyName("e")
@ -33,15 +33,16 @@
heatTransferCoeff*(thermo2.T() - thermo1.T())
+ heatTransferCoeff*he1/Cpv1
- fvm::Sp(heatTransferCoeff/Cpv1, he1)
+ fvOptions(alpha1, rho1, he1)
);
fvScalarMatrix he2Eqn
(
fvm::ddt(alpha2, rho2, he2) + fvm::div(alphaRhoPhi2, he2)
- fvm::Sp(fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2), he2)
- fvm::Sp(contErr2, he2)
+ fvc::ddt(alpha2, rho2, K2) + fvc::div(alphaRhoPhi2, K2)
- (fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2))*K2
- contErr2*K2
+ (
he2.name() == thermo2.phasePropertyName("e")
@ -61,12 +62,15 @@
heatTransferCoeff*(thermo1.T() - thermo2.T())
+ heatTransferCoeff*he2/Cpv2
- fvm::Sp(heatTransferCoeff/Cpv2, he2)
+ fvOptions(alpha2, rho2, he2)
);
he1Eqn.relax();
fvOptions.constrain(he1Eqn);
he1Eqn.solve();
he2Eqn.relax();
fvOptions.constrain(he2Eqn);
he2Eqn.solve();
thermo1.correct();

View File

@ -9,7 +9,10 @@ EXE_INC = \
-IphaseCompressibleTurbulenceModels/lnInclude \
-IinterfacialModels/lnInclude \
-ItwoPhaseSystem/lnInclude \
-Iaveraging
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-lfluidThermophysicalModels \
@ -21,4 +24,6 @@ EXE_LIBS = \
-lcompressibleTwoPhaseSystem \
-lcompressibleEulerianInterfacialModels \
-lfiniteVolume \
-lmeshTools
-lfvOptions \
-lmeshTools \
-lsampling

View File

@ -9,7 +9,6 @@ volScalarField dragCoeff(fluid.dragCoeff());
{
volScalarField virtualMassCoeff(fluid.virtualMassCoeff());
volVectorField liftForce(fluid.liftForce());
volVectorField wallLubricationForce(fluid.wallLubricationForce());
volVectorField turbulentDispersionForce(fluid.turbulentDispersionForce());
@ -19,15 +18,14 @@ volScalarField dragCoeff(fluid.dragCoeff());
(
fvm::ddt(alpha1, rho1, U1)
+ fvm::div(alphaRhoPhi1, U1)
- fvm::Sp(fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1), U1)
- fvm::Sp(contErr1, U1)
+ mrfZones(alpha1*rho1 + virtualMassCoeff, U1)
+ phase1.turbulence().divDevRhoReff(U1)
==
- fvm::Sp(dragCoeff, U1)
- (
liftForce
+ wallLubricationForce
+ turbulentDispersionForce
)
- liftForce
- wallLubricationForce
- turbulentDispersionForce
- virtualMassCoeff
*(
fvm::ddt(U1)
@ -35,9 +33,10 @@ volScalarField dragCoeff(fluid.dragCoeff());
- fvm::Sp(fvc::div(phi1), U1)
- DDtU2
)
+ fvOptions(alpha1, rho1, U1)
);
mrfZones.addCoriolis(alpha1*rho1 + virtualMassCoeff, U1Eqn);
U1Eqn.relax();
fvOptions.constrain(U1Eqn);
}
{
@ -45,15 +44,14 @@ volScalarField dragCoeff(fluid.dragCoeff());
(
fvm::ddt(alpha2, rho2, U2)
+ fvm::div(alphaRhoPhi2, U2)
- fvm::Sp(fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2), U2)
- fvm::Sp(contErr2, U2)
+ mrfZones(alpha2*rho2 + virtualMassCoeff, U2)
+ phase2.turbulence().divDevRhoReff(U2)
==
- fvm::Sp(dragCoeff, U2)
+ (
liftForce
+ wallLubricationForce
+ turbulentDispersionForce
)
+ liftForce
+ wallLubricationForce
+ turbulentDispersionForce
- virtualMassCoeff
*(
fvm::ddt(U2)
@ -61,8 +59,9 @@ volScalarField dragCoeff(fluid.dragCoeff());
- fvm::Sp(fvc::div(phi2), U2)
- DDtU1
)
+ fvOptions(alpha2, rho2, U2)
);
mrfZones.addCoriolis(alpha2*rho2 + virtualMassCoeff, U2Eqn);
U2Eqn.relax();
fvOptions.constrain(U2Eqn);
}
}

View File

@ -130,6 +130,7 @@
pEqnComp1 =
(
fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1)
- (fvOptions(alpha1, rho1)&rho1)
- fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
)/rho1
+ (alpha1/rho1)*correction
@ -143,7 +144,9 @@
pEqnComp2 =
(
fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2)
- (fvOptions(alpha2, rho2)&rho2)
- fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
)/rho2
+ (alpha2/rho2)*correction
(
@ -158,6 +161,7 @@
pEqnComp1 =
(
fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1)
- (fvOptions(alpha1, rho1)&rho1)
- fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
)/rho1
+ (alpha1*psi1/rho1)*correction(fvm::ddt(p));
@ -165,6 +169,7 @@
pEqnComp2 =
(
fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2)
- (fvOptions(alpha2, rho2)&rho2)
- fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
)/rho2
+ (alpha2*psi2/rho2)*correction(fvm::ddt(p));
@ -227,6 +232,7 @@
- phiP1
);
U1.correctBoundaryConditions();
fvOptions.correct(U1);
U2 = HbyA2
+ fvc::reconstruct
@ -239,6 +245,7 @@
- phiP2
);
U2.correctBoundaryConditions();
fvOptions.correct(U2);
U = fluid.U();
}

View File

@ -35,6 +35,7 @@ Description
#include "PhaseCompressibleTurbulenceModel.H"
#include "pimpleControl.H"
#include "IOMRFZoneList.H"
#include "fvIOoptionList.H"
#include "fixedFluxPressureFvPatchScalarField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -48,6 +49,7 @@ int main(int argc, char *argv[])
#include "readGravitationalAcceleration.H"
#include "createFields.H"
#include "createMRFZones.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
#include "readTimeControls.H"
#include "CourantNos.H"
@ -74,8 +76,21 @@ int main(int argc, char *argv[])
fluid.solve();
fluid.correct();
#include "EEqns.H"
volScalarField contErr1
(
fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1)
- (fvOptions(alpha1, rho1)&rho1)
);
volScalarField contErr2
(
fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2)
- (fvOptions(alpha2, rho2)&rho2)
);
#include "UEqns.H"
#include "EEqns.H"
// --- Pressure corrector loop
while (pimple.correct())