compressibleTwoPhaseEulerFoam: Completed update to energy equations and tutorials

This commit is contained in:
Henry
2013-01-18 22:01:51 +00:00
parent 31e8073128
commit 0aee45baaa
16 changed files with 208 additions and 120 deletions

View File

@ -14,14 +14,18 @@
volScalarField& he1 = thermo1.he(); volScalarField& he1 = thermo1.he();
volScalarField& he2 = thermo2.he(); volScalarField& he2 = thermo2.he();
volScalarField Cpv1(thermo1.Cpv());
volScalarField Cpv2(thermo2.Cpv());
fvScalarMatrix he1Eqn fvScalarMatrix he1Eqn
( (
fvm::ddt(alpha1, he1) fvm::ddt(alpha1, he1)
+ fvm::div(alphaPhi1, he1) + fvm::div(alphaPhi1, he1)
- fvm::laplacian(k1, he1) - fvm::laplacian(k1, he1)
== ==
heatTransferCoeff*(thermo1.he(p, thermo2.T())/thermo1.Cp())/rho1 heatTransferCoeff*(thermo2.T() - thermo1.T())/rho1
- fvm::Sp(heatTransferCoeff/thermo1.Cp()/rho1, he1) + heatTransferCoeff*he1/Cpv1/rho1
- fvm::Sp(heatTransferCoeff/Cpv1/rho1, he1)
+ alpha1*(dpdt/rho1 - (fvc::ddt(K1) + fvc::div(phi1, K1))) + alpha1*(dpdt/rho1 - (fvc::ddt(K1) + fvc::div(phi1, K1)))
); );
@ -31,8 +35,9 @@
+ fvm::div(alphaPhi2, he2) + fvm::div(alphaPhi2, he2)
- fvm::laplacian(k2, he2) - fvm::laplacian(k2, he2)
== ==
heatTransferCoeff*(thermo2.he(p, thermo1.T())/thermo2.Cp())/rho2 heatTransferCoeff*(thermo1.T() - thermo2.T())/rho2
- fvm::Sp(heatTransferCoeff/thermo2.Cp()/rho2, he2) + heatTransferCoeff*he2/Cpv2/rho2
- fvm::Sp(heatTransferCoeff/Cpv2/rho2, he2)
+ alpha2*(dpdt/rho2 - (fvc::ddt(K2) + fvc::div(phi2, K2))) + alpha2*(dpdt/rho2 - (fvc::ddt(K2) + fvc::div(phi2, K2)))
); );

View File

@ -2,8 +2,8 @@ surfaceScalarField alphaPhi1("alphaPhi" + phase1Name, phi1);
surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2);
{ {
word alphaScheme("div(phi,alpha)"); word alphaScheme("div(phi," + alpha1.name() + ')');
word alpharScheme("div(phir,alpha)"); word alpharScheme("div(phir," + alpha1.name() + ')');
surfaceScalarField phic("phic", phi); surfaceScalarField phic("phic", phi);
surfaceScalarField phir("phir", phi1 - phi2); surfaceScalarField phir("phir", phi1 - phi2);

View File

@ -1,4 +1,4 @@
EXE_INC = \ EXE_INC = -g \
-IphaseModel/lnInclude \ -IphaseModel/lnInclude \
-ImultiphaseSystem/lnInclude \ -ImultiphaseSystem/lnInclude \
-ImultiphaseFixedFluxPressure \ -ImultiphaseFixedFluxPressure \

View File

@ -32,9 +32,10 @@ forAllIter(PtrDictionary<phaseModel>, fluid.phases(), iter)
"div(Rc)" "div(Rc)"
) )
== ==
- fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U) //- fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U)
//- (alpha*phase.rho())*fluid.lift(phase) //- (alpha*phase.rho())*fluid.lift(phase)
+ (alpha/phase.rho())*fluid.Svm(phase) //+
(alpha/phase.rho())*fluid.Svm(phase)
- fvm::Sp - fvm::Sp
( (
slamDampCoeff slamDampCoeff
@ -53,7 +54,7 @@ forAllIter(PtrDictionary<phaseModel>, fluid.phases(), iter)
alpha*(1 + (1/phase.rho())*fluid.Cvm(phase)), alpha*(1 + (1/phase.rho())*fluid.Cvm(phase)),
UEqns[phasei] UEqns[phasei]
); );
UEqns[phasei].relax(); //UEqns[phasei].relax();
phasei++; phasei++;
} }

View File

@ -67,8 +67,29 @@
const volScalarField& alpha = phase; const volScalarField& alpha = phase;
alphafs.set(phasei, fvc::interpolate(alpha).ptr()); alphafs.set(phasei, fvc::interpolate(alpha).ptr());
rAUs.set(phasei, (1.0/UEqns[phasei].A()).ptr());
rAlphaAUfs.set(phasei, fvc::interpolate(alpha*rAUs[phasei]).ptr()); volScalarField dragCoeffi
(
IOobject
(
"dragCoeffi",
runTime.timeName(),
mesh
),
fluid.dragCoeff(phase, dragCoeffs())/phase.rho(),
zeroGradientFvPatchScalarField::typeName
);
dragCoeffi.correctBoundaryConditions();
rAUs.set(phasei, (1.0/(UEqns[phasei].A() + dragCoeffi)).ptr());
rAlphaAUfs.set
(
phasei,
(
alphafs[phasei]
/fvc::interpolate(UEqns[phasei].A() + dragCoeffi)
).ptr()
);
HbyAs[phasei] = rAUs[phasei]*UEqns[phasei].H(); HbyAs[phasei] = rAUs[phasei]*UEqns[phasei].H();
@ -115,10 +136,9 @@
} }
phiHbyAs[phasei] += phiHbyAs[phasei] +=
fvc::interpolate fvc::interpolate((*dcIter())/phase.rho())
( /fvc::interpolate(UEqns[phasei].A() + dragCoeffi)
(1.0/phase.rho())*rAUs[phasei]*(*dcIter()) *phase2Ptr->phi();
)*phase2Ptr->phi();
HbyAs[phasei] += HbyAs[phasei] +=
(1.0/phase.rho())*rAUs[phasei]*(*dcIter()) (1.0/phase.rho())*rAUs[phasei]*(*dcIter())
@ -240,7 +260,7 @@
+ rAlphaAUfs[phasei]*mSfGradp/phase.rho() + rAlphaAUfs[phasei]*mSfGradp/phase.rho()
); );
// phase.U() = fvc::reconstruct(phase.phi()); //phase.U() = fvc::reconstruct(phase.phi());
phase.U().correctBoundaryConditions(); phase.U().correctBoundaryConditions();
U += alpha*phase.U(); U += alpha*phase.U();

View File

@ -18,6 +18,8 @@ FoamFile
ddtSchemes ddtSchemes
{ {
default Euler; default Euler;
"ddt\(alpha.*,.*\)" bounded Euler;
} }
gradSchemes gradSchemes
@ -27,25 +29,20 @@ gradSchemes
divSchemes divSchemes
{ {
default none; default none;
div(phi,alpha) Gauss limitedLinear01 1; div(phi,alphaair) Gauss vanLeer;
div(phir,alpha) Gauss limitedLinear01 1; div(phir,alphaair) Gauss vanLeer;
div(alphaPhiair,Uair) Gauss limitedLinearV 1;
div(alphaPhiwater,Uwater) Gauss limitedLinearV 1; "div\(alphaPhi.*,U.*\)" bounded Gauss limitedLinearV 1;
div(phiair,Uair) Gauss limitedLinearV 1; "div\(phi.*,U.*\)" Gauss limitedLinearV 1;
div(phiwater,Uwater) Gauss limitedLinearV 1; "div\(\(alpha.*Rc\)\)" Gauss linear;
div((alphaair*Rc)) Gauss linear; "div\(phid.*,p\)" Gauss upwind;
div((alphawater*Rc)) Gauss linear;
div(alphaPhiair,hair) Gauss limitedLinear 1; "div\(alphaPhi.*,h.*\)" bounded Gauss limitedLinear 1;
div(alphaPhiwater,hwater) Gauss limitedLinear 1; "div\(phi.*,K.*\)" Gauss limitedLinear 1;
div(alphaPhiwater,k) Gauss limitedLinear 1;
div(alphaPhiwater,epsilon) Gauss limitedLinear 1; "div\(alphaPhi.*,(k|epsilon)\)" bounded Gauss limitedLinear 1;
div(phi,Theta) Gauss limitedLinear 1;
div(phidair,p) Gauss upwind;
div(phidwater,p) Gauss upwind;
div(phiair,Kair) Gauss limitedLinear 1;
div(phiwater,Kwater) Gauss limitedLinear 1;
} }
laplacianSchemes laplacianSchemes

View File

@ -63,23 +63,7 @@ solvers
relTol 0; relTol 0;
} }
"Theta.*" "(k|epsilon|Theta).*"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-05;
relTol 0;
}
"k.*"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-05;
relTol 0;
}
"epsilon.*"
{ {
solver PBiCG; solver PBiCG;
preconditioner DILU; preconditioner DILU;

View File

@ -17,7 +17,7 @@ FoamFile
application compressibleTwoPhaseEulerFoam; application compressibleTwoPhaseEulerFoam;
startFrom latestTime; startFrom startTime;
startTime 0; startTime 0;

View File

@ -17,57 +17,54 @@ FoamFile
ddtSchemes ddtSchemes
{ {
default Euler; default Euler;
"ddt\(alpha.,.*\)" bounded Euler;
} }
gradSchemes gradSchemes
{ {
default Gauss linear; default Gauss linear;
} }
divSchemes divSchemes
{ {
default none; default none;
div(alphaPhi1,U1) Gauss limitedLinearV 1; div(phi,alpha1) Gauss vanLeer;
div(alphaPhi2,U2) Gauss limitedLinearV 1; div(phir,alpha1) Gauss vanLeer;
div(phi1,U1) Gauss limitedLinearV 1;
div(phi2,U2) Gauss limitedLinearV 1; "div\(alphaPhi.,U.\)" bounded Gauss limitedLinearV 1;
div(alphaPhi1,h1) Gauss limitedLinear 1; "div\(phi.,U.\)" Gauss limitedLinearV 1;
div(alphaPhi2,h2) Gauss limitedLinear 1; "div\(\(alpha.*Rc\)\)" Gauss linear;
div(alphaPhi2,k) Gauss limitedLinear 1; "div\(phid.,p\)" Gauss upwind;
div(alphaPhi2,epsilon) Gauss limitedLinear 1;
div(phi,alpha) Gauss limitedLinear01 1; "div\(alphaPhi.,h.\)" bounded Gauss limitedLinear 1;
div(phir,alpha) Gauss limitedLinear01 1; "div\(phi.,K.\)" Gauss limitedLinear 1;
div(phi,Theta) Gauss limitedLinear 1;
div((alpha1*Rc)) Gauss linear; div(alphaPhi2,k) bounded Gauss limitedLinear 1;
div((alpha2*Rc)) Gauss linear; div(alphaPhi2,epsilon) bounded Gauss limitedLinear 1;
div(phid1,p) Gauss upwind;
div(phid2,p) Gauss upwind;
div(phi1,K1) Gauss limitedLinear 1;
div(phi2,K2) Gauss limitedLinear 1;
} }
laplacianSchemes laplacianSchemes
{ {
default Gauss linear uncorrected; default Gauss linear uncorrected;
} }
interpolationSchemes interpolationSchemes
{ {
default linear; default linear;
} }
snGradSchemes snGradSchemes
{ {
default uncorrected; default uncorrected;
} }
fluxRequired fluxRequired
{ {
default no; default no;
p ; p ;
alpha1 ;
} }

View File

@ -90,8 +90,8 @@ solvers
PIMPLE PIMPLE
{ {
nOuterCorrectors 1; nOuterCorrectors 3;
nCorrectors 2; nCorrectors 1;
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 0;
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 2; nAlphaSubCycles 2;

View File

@ -32,12 +32,14 @@ FoamFile
front front
{ {
type empty; type empty;
inGroups 1(empty);
nFaces 3072; nFaces 3072;
startFace 6336; startFace 6336;
} }
back back
{ {
type empty; type empty;
inGroups 1(empty);
nFaces 3072; nFaces 3072;
startFace 9408; startFace 9408;
} }

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo hConst;
equationOfState perfectGas;
specie specie;
energy sensibleEnthalpy;
}
mixture
{
specie
{
nMoles 1;
molWeight 28.9;
}
thermodynamics
{
Cp 1007;
Hf 0;
}
transport
{
mu 1.84e-05;
Pr 0.7;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo hConst;
equationOfState perfectFluid;
specie specie;
energy sensibleEnthalpy;
}
mixture
{
specie
{
nMoles 1;
molWeight 28.9;
}
equationOfState
{
rho0 1027;
}
thermodynamics
{
Cp 4195;
Hf 0;
}
transport
{
mu 3.645e-4;
Pr 2.289;
}
}
// ************************************************************************* //

View File

@ -17,14 +17,6 @@ FoamFile
phase1 phase1
{ {
rho0 0;
rho 0.88;
R 287;
Cp 1007;
nu 2.46e-05;
d 4e-3;
kappa 2.63e-2;
diameterModel isothermal; diameterModel isothermal;
isothermalCoeffs isothermalCoeffs
{ {
@ -35,14 +27,6 @@ phase1
phase2 phase2
{ {
rho 733;
rho0 733;
R 1e10;
Cp 4195;
nu 2.73e-6;
d 1e-4;
kappa 0.668;
diameterModel constant; diameterModel constant;
constantCoeffs constantCoeffs
{ {
@ -54,12 +38,13 @@ phase2
Cvm 0.5; Cvm 0.5;
// Lift coefficient // Lift coefficient
Cl 0; Cl 0;
// Dispersed-phase turbulence coefficient // Dispersed-phase turbulence coefficient
Ct 0.2; Ct 1;
// Minimum allowable pressure // Minimum allowable pressure
pMin 10000; pMin 10000;
// ************************************************************************* // // ************************************************************************* //

View File

@ -18,6 +18,8 @@ FoamFile
ddtSchemes ddtSchemes
{ {
default Euler; default Euler;
"ddt\(alpha.*,.*\)" bounded Euler;
} }
gradSchemes gradSchemes
@ -29,16 +31,18 @@ divSchemes
{ {
default none; default none;
div(phi,alpha1) Gauss limitedLinear01 1; div(phi,alpha1) Gauss vanLeer;
div(phir,alpha1) Gauss limitedLinear01 1; div(phir,alpha1) Gauss vanLeer;
"div\(alphaPhi.,U.\)" bounded Gauss limitedLinearV 1;
"div\(phi.,U.\)" Gauss limitedLinearV 1; "div\(phi.,U.\)" Gauss limitedLinearV 1;
"div\(alphaPhi.,U.\)" Gauss limitedLinearV 1; "div\(\(alpha.*Rc\)\)" Gauss linear;
"div\(\(alpha.*Rc.\)\)" Gauss linear;
"div\(alphaPhi.,(k|epsilon)\)" Gauss limitedLinear 1;
div(phi,Theta) Gauss limitedLinear 1;
"div\(phi.,K.\)" Gauss linear;
"div\(alphaPhi.,T.\)" Gauss limitedLinear 1;
"div\(phid.,p\)" Gauss linear; "div\(phid.,p\)" Gauss linear;
"div\(alphaPhi.,h.\)" bounded Gauss limitedLinear 1;
"div\(phi.,K.\)" Gauss linear;
"div\(alphaPhi.,(k|epsilon)\)" bounded Gauss limitedLinear 1;
} }
laplacianSchemes laplacianSchemes

View File

@ -36,7 +36,7 @@ solvers
relTol 0; relTol 0;
} }
U "U.*"
{ {
solver smoothSolver; solver smoothSolver;
smoother GaussSeidel; smoother GaussSeidel;
@ -45,14 +45,6 @@ solvers
relTol 0.1; relTol 0.1;
} }
UFinal
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-07;
relTol 0;
}
"alpha.*" "alpha.*"
{ {
solver PBiCG; solver PBiCG;
@ -61,7 +53,7 @@ solvers
relTol 0; relTol 0;
} }
"(k|epsilon|Theta|T).*" "(k|epsilon|Theta|h).*"
{ {
solver PBiCG; solver PBiCG;
preconditioner DILU; preconditioner DILU;
@ -76,7 +68,7 @@ PIMPLE
nCorrectors 3; nCorrectors 3;
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 0;
nAlphaCorr 1; nAlphaCorr 1;
correctAlpha yes; nAlphaSubCycles 2;
pRefCell 0; pRefCell 0;
pRefValue 0; pRefValue 0;
} }
@ -85,16 +77,15 @@ relaxationFactors
{ {
fields fields
{ {
p 1;
} }
equations equations
{ {
"U.*" 1; "U.*" 1;
"h.*" 1;
"alpha.*" 1; "alpha.*" 1;
"Theta.*" 1; "Theta.*" 1;
"k.*" 1; "k.*" 1;
"epsilon.*" 1; "epsilon.*" 1;
"T.*" 1;
} }
} }