mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
twoPhaseEulerFoam: Add MRF support and remove MRFTwoPhaseEulerFoam
This commit is contained in:
@ -6,6 +6,5 @@ wclean libso phaseModel
|
|||||||
wclean libso interfacialModels
|
wclean libso interfacialModels
|
||||||
wclean libso kineticTheoryModels
|
wclean libso kineticTheoryModels
|
||||||
wclean
|
wclean
|
||||||
wclean MRFtwoPhaseEulerFoam
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -6,6 +6,5 @@ wmake libso phaseModel
|
|||||||
wmake libso interfacialModels
|
wmake libso interfacialModels
|
||||||
wmake libso kineticTheoryModels
|
wmake libso kineticTheoryModels
|
||||||
wmake
|
wmake
|
||||||
wmake MRFtwoPhaseEulerFoam
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -1,119 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
License
|
|
||||||
This file is part of OpenFOAM.
|
|
||||||
|
|
||||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Application
|
|
||||||
twoPhaseEulerFoam
|
|
||||||
|
|
||||||
Description
|
|
||||||
Solver for a system of 2 incompressible fluid phases with one phase
|
|
||||||
dispersed, e.g. gas bubbles in a liquid or solid particles in a gas.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "fvCFD.H"
|
|
||||||
#include "nearWallDist.H"
|
|
||||||
#include "wallFvPatch.H"
|
|
||||||
#include "Switch.H"
|
|
||||||
|
|
||||||
#include "IFstream.H"
|
|
||||||
#include "OFstream.H"
|
|
||||||
|
|
||||||
#include "dragModel.H"
|
|
||||||
#include "phaseModel.H"
|
|
||||||
#include "kineticTheoryModel.H"
|
|
||||||
|
|
||||||
#include "pimpleControl.H"
|
|
||||||
#include "MRFZones.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
#include "setRootCase.H"
|
|
||||||
|
|
||||||
#include "createTime.H"
|
|
||||||
#include "createMesh.H"
|
|
||||||
#include "readGravitationalAcceleration.H"
|
|
||||||
#include "createFields.H"
|
|
||||||
#include "readPPProperties.H"
|
|
||||||
#include "initContinuityErrs.H"
|
|
||||||
#include "createMRFZones.H"
|
|
||||||
#include "readTimeControls.H"
|
|
||||||
#include "CourantNo.H"
|
|
||||||
#include "setInitialDeltaT.H"
|
|
||||||
|
|
||||||
pimpleControl pimple(mesh);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
Info<< "\nStarting time loop\n" << endl;
|
|
||||||
|
|
||||||
while (runTime.run())
|
|
||||||
{
|
|
||||||
#include "readTwoPhaseEulerFoamControls.H"
|
|
||||||
#include "CourantNos.H"
|
|
||||||
#include "setDeltaT.H"
|
|
||||||
|
|
||||||
runTime++;
|
|
||||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
|
||||||
|
|
||||||
// --- Pressure-velocity PIMPLE corrector loop
|
|
||||||
while (pimple.loop())
|
|
||||||
{
|
|
||||||
#include "alphaEqn.H"
|
|
||||||
#include "liftDragCoeffs.H"
|
|
||||||
#include "UEqns.H"
|
|
||||||
|
|
||||||
// --- Pressure corrector loop
|
|
||||||
while (pimple.correct())
|
|
||||||
{
|
|
||||||
#include "pEqn.H"
|
|
||||||
|
|
||||||
if (correctAlpha && !pimple.finalIter())
|
|
||||||
{
|
|
||||||
#include "alphaEqn.H"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "DDtU.H"
|
|
||||||
|
|
||||||
if (pimple.turbCorr())
|
|
||||||
{
|
|
||||||
#include "kEpsilon.H"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "write.H"
|
|
||||||
|
|
||||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
|
||||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
|
||||||
<< nl << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Info<< "End\n" << endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
MRFTwoPhaseEulerFoam.C
|
|
||||||
|
|
||||||
EXE = $(FOAM_APPBIN)/MRFTwoPhaseEulerFoam
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
EXE_INC = \
|
|
||||||
-I.. \
|
|
||||||
-I../../bubbleFoam \
|
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
|
||||||
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
|
||||||
-IturbulenceModel \
|
|
||||||
-I../kineticTheoryModels/lnInclude \
|
|
||||||
-I../interfacialModels/lnInclude \
|
|
||||||
-I../phaseModel/lnInclude \
|
|
||||||
|
|
||||||
EXE_LIBS = \
|
|
||||||
-lEulerianInterfacialModels \
|
|
||||||
-lfiniteVolume \
|
|
||||||
-lmeshTools \
|
|
||||||
-lincompressibleTransportModels \
|
|
||||||
-lphaseModel \
|
|
||||||
-lkineticTheoryModel
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
fvVectorMatrix U1Eqn(U1, U1.dimensions()*dimVol/dimTime);
|
|
||||||
fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime);
|
|
||||||
|
|
||||||
{
|
|
||||||
{
|
|
||||||
volTensorField gradU1T(T(fvc::grad(U1)));
|
|
||||||
|
|
||||||
if (kineticTheory.on())
|
|
||||||
{
|
|
||||||
kineticTheory.solve(gradU1T);
|
|
||||||
nuEff1 = kineticTheory.mu1()/rho1;
|
|
||||||
}
|
|
||||||
else // If not using kinetic theory is using Ct model
|
|
||||||
{
|
|
||||||
nuEff1 = sqr(Ct)*nut2 + nu1;
|
|
||||||
}
|
|
||||||
|
|
||||||
volTensorField Rc1
|
|
||||||
(
|
|
||||||
"Rc1",
|
|
||||||
(((2.0/3.0)*I)*nuEff1)*tr(gradU1T) - nuEff1*gradU1T
|
|
||||||
);
|
|
||||||
|
|
||||||
if (kineticTheory.on())
|
|
||||||
{
|
|
||||||
Rc1 -= ((kineticTheory.lambda()/rho1)*tr(gradU1T))*tensor(I);
|
|
||||||
}
|
|
||||||
|
|
||||||
surfaceScalarField phiR1
|
|
||||||
(
|
|
||||||
-fvc::interpolate(nuEff1)*mesh.magSf()*fvc::snGrad(alpha1)
|
|
||||||
/fvc::interpolate(alpha1 + scalar(0.001))
|
|
||||||
);
|
|
||||||
|
|
||||||
U1Eqn =
|
|
||||||
(
|
|
||||||
(scalar(1) + Cvm*rho2*alpha2/rho1)*
|
|
||||||
(
|
|
||||||
fvm::ddt(U1)
|
|
||||||
+ fvm::div(phi1, U1, "div(phi1,U1)")
|
|
||||||
- fvm::Sp(fvc::div(phi1), U1)
|
|
||||||
)
|
|
||||||
|
|
||||||
- fvm::laplacian(nuEff1, U1)
|
|
||||||
+ fvc::div(Rc1)
|
|
||||||
|
|
||||||
+ fvm::div(phiR1, U1, "div(phi1,U1)")
|
|
||||||
- fvm::Sp(fvc::div(phiR1), U1)
|
|
||||||
+ (fvc::grad(alpha1)/(fvc::average(alpha1) + scalar(0.001)) & Rc1)
|
|
||||||
==
|
|
||||||
// g // Buoyancy term transfered to p-equation
|
|
||||||
- fvm::Sp(alpha2/rho1*K, U1)
|
|
||||||
//+ alpha2/rho1*K*U2 // Explicit drag transfered to p-equation
|
|
||||||
- alpha2/rho1*(liftCoeff - Cvm*rho2*DDtU2)
|
|
||||||
);
|
|
||||||
mrfZones.addCoriolis(U1Eqn);
|
|
||||||
U1Eqn.relax();
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
volTensorField gradU2T(T(fvc::grad(U2)));
|
|
||||||
volTensorField Rc2
|
|
||||||
(
|
|
||||||
"Rc2",
|
|
||||||
(((2.0/3.0)*I)*nuEff2)*tr(gradU2T) - nuEff2*gradU2T
|
|
||||||
);
|
|
||||||
|
|
||||||
surfaceScalarField phiR2
|
|
||||||
(
|
|
||||||
-fvc::interpolate(nuEff2)*mesh.magSf()*fvc::snGrad(alpha2)
|
|
||||||
/fvc::interpolate(alpha2 + scalar(0.001))
|
|
||||||
);
|
|
||||||
|
|
||||||
U2Eqn =
|
|
||||||
(
|
|
||||||
(scalar(1) + Cvm*rho2*alpha1/rho2)*
|
|
||||||
(
|
|
||||||
fvm::ddt(U2)
|
|
||||||
+ fvm::div(phi2, U2, "div(phi2,U2)")
|
|
||||||
- fvm::Sp(fvc::div(phi2), U2)
|
|
||||||
)
|
|
||||||
|
|
||||||
- fvm::laplacian(nuEff2, U2)
|
|
||||||
+ fvc::div(Rc2)
|
|
||||||
|
|
||||||
+ fvm::div(phiR2, U2, "div(phi2,U2)")
|
|
||||||
- fvm::Sp(fvc::div(phiR2), U2)
|
|
||||||
|
|
||||||
+ (fvc::grad(alpha2)/(fvc::average(alpha2) + scalar(0.001)) & Rc2)
|
|
||||||
==
|
|
||||||
// g // Buoyancy term transfered to p-equation
|
|
||||||
- fvm::Sp(alpha1/rho2*K, U2)
|
|
||||||
//+ alpha1/rho2*K*U1 // Explicit drag transfered to p-equation
|
|
||||||
+ alpha1/rho2*(liftCoeff + Cvm*rho2*DDtU1)
|
|
||||||
);
|
|
||||||
mrfZones.addCoriolis(U2Eqn);
|
|
||||||
U2Eqn.relax();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
MRFZones mrfZones(mesh);
|
|
||||||
mrfZones.correctBoundaryVelocity(U1);
|
|
||||||
mrfZones.correctBoundaryVelocity(U2);
|
|
||||||
mrfZones.correctBoundaryVelocity(U);
|
|
||||||
@ -1,118 +0,0 @@
|
|||||||
{
|
|
||||||
surfaceScalarField alpha1f(fvc::interpolate(alpha1));
|
|
||||||
surfaceScalarField alpha2f(scalar(1) - alpha1f);
|
|
||||||
|
|
||||||
volScalarField rAU1(1.0/U1Eqn.A());
|
|
||||||
volScalarField rAU2(1.0/U2Eqn.A());
|
|
||||||
|
|
||||||
rAU1f = fvc::interpolate(rAU1);
|
|
||||||
surfaceScalarField rAU2f(fvc::interpolate(rAU2));
|
|
||||||
|
|
||||||
volVectorField HbyA1("HbyA1", U1);
|
|
||||||
HbyA1 = rAU1*U1Eqn.H();
|
|
||||||
|
|
||||||
volVectorField HbyA2("HbyA2", U2);
|
|
||||||
HbyA2 = rAU2*U2Eqn.H();
|
|
||||||
|
|
||||||
mrfZones.absoluteFlux(phi1.oldTime());
|
|
||||||
mrfZones.absoluteFlux(phi1);
|
|
||||||
|
|
||||||
mrfZones.absoluteFlux(phi2.oldTime());
|
|
||||||
mrfZones.absoluteFlux(phi2);
|
|
||||||
|
|
||||||
surfaceScalarField phiDrag1
|
|
||||||
(
|
|
||||||
fvc::interpolate(alpha2/rho1*K*rAU1)*phi2 + rAU1f*(g & mesh.Sf())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (g0.value() > 0.0)
|
|
||||||
{
|
|
||||||
phiDrag1 -= ppMagf*fvc::snGrad(alpha1)*mesh.magSf();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kineticTheory.on())
|
|
||||||
{
|
|
||||||
phiDrag1 -= rAU1f*fvc::snGrad(kineticTheory.pa()/rho1)*mesh.magSf();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
surfaceScalarField phiDrag2
|
|
||||||
(
|
|
||||||
fvc::interpolate(alpha1/rho2*K*rAU2)*phi1 + rAU2f*(g & mesh.Sf())
|
|
||||||
);
|
|
||||||
|
|
||||||
// Fix for gravity on outlet boundary.
|
|
||||||
forAll(p.boundaryField(), patchi)
|
|
||||||
{
|
|
||||||
if (isA<zeroGradientFvPatchScalarField>(p.boundaryField()[patchi]))
|
|
||||||
{
|
|
||||||
phiDrag1.boundaryField()[patchi] = 0.0;
|
|
||||||
phiDrag2.boundaryField()[patchi] = 0.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
surfaceScalarField phiHbyA1
|
|
||||||
(
|
|
||||||
"phiHbyA1",
|
|
||||||
(fvc::interpolate(HbyA1) & mesh.Sf())
|
|
||||||
+ fvc::ddtPhiCorr(rAU1, U1, phi1)
|
|
||||||
+ phiDrag1
|
|
||||||
);
|
|
||||||
mrfZones.relativeFlux(phiHbyA1);
|
|
||||||
|
|
||||||
surfaceScalarField phiHbyA2
|
|
||||||
(
|
|
||||||
"phiHbyA2",
|
|
||||||
(fvc::interpolate(HbyA2) & mesh.Sf())
|
|
||||||
+ fvc::ddtPhiCorr(rAU2, U2, phi2)
|
|
||||||
+ phiDrag2
|
|
||||||
);
|
|
||||||
mrfZones.relativeFlux(phiHbyA2);
|
|
||||||
|
|
||||||
mrfZones.relativeFlux(phi1.oldTime());
|
|
||||||
mrfZones.relativeFlux(phi1);
|
|
||||||
mrfZones.relativeFlux(phi2.oldTime());
|
|
||||||
mrfZones.relativeFlux(phi2);
|
|
||||||
|
|
||||||
surfaceScalarField phiHbyA("phiHbyA", alpha1f*phiHbyA1 + alpha2f*phiHbyA2);
|
|
||||||
|
|
||||||
surfaceScalarField Dp
|
|
||||||
(
|
|
||||||
"Dp",
|
|
||||||
alpha1f*rAU1f/rho1 + alpha2f*rAU2f/rho2
|
|
||||||
);
|
|
||||||
|
|
||||||
while (pimple.correctNonOrthogonal())
|
|
||||||
{
|
|
||||||
fvScalarMatrix pEqn
|
|
||||||
(
|
|
||||||
fvm::laplacian(Dp, p) == fvc::div(phiHbyA)
|
|
||||||
);
|
|
||||||
|
|
||||||
pEqn.setReference(pRefCell, pRefValue);
|
|
||||||
|
|
||||||
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
|
|
||||||
|
|
||||||
if (pimple.finalNonOrthogonalIter())
|
|
||||||
{
|
|
||||||
surfaceScalarField SfGradp(pEqn.flux()/Dp);
|
|
||||||
|
|
||||||
phi1 = phiHbyA1 - rAU1f*SfGradp/rho1;
|
|
||||||
phi2 = phiHbyA2 - rAU2f*SfGradp/rho2;
|
|
||||||
phi = alpha1f*phi1 + alpha2f*phi2;
|
|
||||||
|
|
||||||
p.relax();
|
|
||||||
SfGradp = pEqn.flux()/Dp;
|
|
||||||
|
|
||||||
U1 = HbyA1 + fvc::reconstruct(phiDrag1 - rAU1f*SfGradp/rho1);
|
|
||||||
U1.correctBoundaryConditions();
|
|
||||||
|
|
||||||
U2 = HbyA2 + fvc::reconstruct(phiDrag2 - rAU2f*SfGradp/rho2);
|
|
||||||
U2.correctBoundaryConditions();
|
|
||||||
|
|
||||||
U = alpha1*U1 + alpha2*U2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "continuityErrs.H"
|
|
||||||
@ -53,7 +53,7 @@ fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime);
|
|||||||
//+ alpha2/rho1*K*U2 // Explicit drag transfered to p-equation
|
//+ alpha2/rho1*K*U2 // Explicit drag transfered to p-equation
|
||||||
- alpha2/rho1*(liftCoeff - Cvm*rho2*DDtU2)
|
- alpha2/rho1*(liftCoeff - Cvm*rho2*DDtU2)
|
||||||
);
|
);
|
||||||
|
mrfZones.addCoriolis(U1Eqn);
|
||||||
U1Eqn.relax();
|
U1Eqn.relax();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime);
|
|||||||
//+ alpha1/rho2*K*U1 // Explicit drag transfered to p-equation
|
//+ alpha1/rho2*K*U1 // Explicit drag transfered to p-equation
|
||||||
+ alpha1/rho2*(liftCoeff + Cvm*rho2*DDtU1)
|
+ alpha1/rho2*(liftCoeff + Cvm*rho2*DDtU1)
|
||||||
);
|
);
|
||||||
|
mrfZones.addCoriolis(U2Eqn);
|
||||||
U2Eqn.relax();
|
U2Eqn.relax();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,16 +93,22 @@
|
|||||||
|
|
||||||
dimensionedScalar Cvm
|
dimensionedScalar Cvm
|
||||||
(
|
(
|
||||||
|
"Cvm",
|
||||||
|
dimless,
|
||||||
transportProperties.lookup("Cvm")
|
transportProperties.lookup("Cvm")
|
||||||
);
|
);
|
||||||
|
|
||||||
dimensionedScalar Cl
|
dimensionedScalar Cl
|
||||||
(
|
(
|
||||||
|
"Cl",
|
||||||
|
dimless,
|
||||||
transportProperties.lookup("Cl")
|
transportProperties.lookup("Cl")
|
||||||
);
|
);
|
||||||
|
|
||||||
dimensionedScalar Ct
|
dimensionedScalar Ct
|
||||||
(
|
(
|
||||||
|
"Ct",
|
||||||
|
dimless,
|
||||||
transportProperties.lookup("Ct")
|
transportProperties.lookup("Ct")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,12 @@
|
|||||||
volVectorField HbyA2("HbyA2", U2);
|
volVectorField HbyA2("HbyA2", U2);
|
||||||
HbyA2 = rAU2*U2Eqn.H();
|
HbyA2 = rAU2*U2Eqn.H();
|
||||||
|
|
||||||
|
mrfZones.absoluteFlux(phi1.oldTime());
|
||||||
|
mrfZones.absoluteFlux(phi1);
|
||||||
|
|
||||||
|
mrfZones.absoluteFlux(phi2.oldTime());
|
||||||
|
mrfZones.absoluteFlux(phi2);
|
||||||
|
|
||||||
surfaceScalarField phiDrag1
|
surfaceScalarField phiDrag1
|
||||||
(
|
(
|
||||||
fvc::interpolate(alpha2/rho1*K*rAU1)*phi2 + rAU1f*(g & mesh.Sf())
|
fvc::interpolate(alpha2/rho1*K*rAU1)*phi2 + rAU1f*(g & mesh.Sf())
|
||||||
@ -29,6 +35,7 @@
|
|||||||
phiDrag1 -= rAU1f*fvc::snGrad(kineticTheory.pa()/rho1)*mesh.magSf();
|
phiDrag1 -= rAU1f*fvc::snGrad(kineticTheory.pa()/rho1)*mesh.magSf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
surfaceScalarField phiDrag2
|
surfaceScalarField phiDrag2
|
||||||
(
|
(
|
||||||
fvc::interpolate(alpha1/rho2*K*rAU2)*phi1 + rAU2f*(g & mesh.Sf())
|
fvc::interpolate(alpha1/rho2*K*rAU2)*phi1 + rAU2f*(g & mesh.Sf())
|
||||||
@ -51,6 +58,7 @@
|
|||||||
+ fvc::ddtPhiCorr(rAU1, U1, phi1)
|
+ fvc::ddtPhiCorr(rAU1, U1, phi1)
|
||||||
+ phiDrag1
|
+ phiDrag1
|
||||||
);
|
);
|
||||||
|
mrfZones.relativeFlux(phiHbyA1);
|
||||||
|
|
||||||
surfaceScalarField phiHbyA2
|
surfaceScalarField phiHbyA2
|
||||||
(
|
(
|
||||||
@ -59,6 +67,12 @@
|
|||||||
+ fvc::ddtPhiCorr(rAU2, U2, phi2)
|
+ fvc::ddtPhiCorr(rAU2, U2, phi2)
|
||||||
+ phiDrag2
|
+ phiDrag2
|
||||||
);
|
);
|
||||||
|
mrfZones.relativeFlux(phiHbyA2);
|
||||||
|
|
||||||
|
mrfZones.relativeFlux(phi1.oldTime());
|
||||||
|
mrfZones.relativeFlux(phi1);
|
||||||
|
mrfZones.relativeFlux(phi2.oldTime());
|
||||||
|
mrfZones.relativeFlux(phi2);
|
||||||
|
|
||||||
surfaceScalarField phiHbyA("phiHbyA", alpha1f*phiHbyA1 + alpha2f*phiHbyA2);
|
surfaceScalarField phiHbyA("phiHbyA", alpha1f*phiHbyA1 + alpha2f*phiHbyA2);
|
||||||
|
|
||||||
@ -83,14 +97,8 @@
|
|||||||
{
|
{
|
||||||
surfaceScalarField SfGradp(pEqn.flux()/Dp);
|
surfaceScalarField SfGradp(pEqn.flux()/Dp);
|
||||||
|
|
||||||
phi1.boundaryField() ==
|
|
||||||
(fvc::interpolate(U1) & mesh.Sf())().boundaryField();
|
|
||||||
phi1 = phiHbyA1 - rAU1f*SfGradp/rho1;
|
phi1 = phiHbyA1 - rAU1f*SfGradp/rho1;
|
||||||
|
|
||||||
phi2.boundaryField() ==
|
|
||||||
(fvc::interpolate(U2) & mesh.Sf())().boundaryField();
|
|
||||||
phi2 = phiHbyA2 - rAU2f*SfGradp/rho2;
|
phi2 = phiHbyA2 - rAU2f*SfGradp/rho2;
|
||||||
|
|
||||||
phi = alpha1f*phi1 + alpha2f*phi2;
|
phi = alpha1f*phi1 + alpha2f*phi2;
|
||||||
|
|
||||||
p.relax();
|
p.relax();
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -43,6 +43,7 @@ Description
|
|||||||
#include "kineticTheoryModel.H"
|
#include "kineticTheoryModel.H"
|
||||||
|
|
||||||
#include "pimpleControl.H"
|
#include "pimpleControl.H"
|
||||||
|
#include "MRFZones.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -56,6 +57,7 @@ int main(int argc, char *argv[])
|
|||||||
#include "createFields.H"
|
#include "createFields.H"
|
||||||
#include "readPPProperties.H"
|
#include "readPPProperties.H"
|
||||||
#include "initContinuityErrs.H"
|
#include "initContinuityErrs.H"
|
||||||
|
#include "createMRFZones.H"
|
||||||
#include "readTimeControls.H"
|
#include "readTimeControls.H"
|
||||||
#include "CourantNo.H"
|
#include "CourantNo.H"
|
||||||
#include "setInitialDeltaT.H"
|
#include "setInitialDeltaT.H"
|
||||||
|
|||||||
Reference in New Issue
Block a user