Bugfix: Compressible solver update
This commit is contained in:
parent
f500470205
commit
c6b8528c19
35 changed files with 488 additions and 276 deletions
|
@ -52,17 +52,17 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
#include "readSIMPLEControls.H"
|
||||
#include "initConvergenceCheck.H"
|
||||
# include "readSIMPLEControls.H"
|
||||
# include "initConvergenceCheck.H"
|
||||
|
||||
p.storePrevIter();
|
||||
rho.storePrevIter();
|
||||
|
||||
// Pressure-velocity SIMPLE corrector
|
||||
{
|
||||
#include "UEqn.H"
|
||||
#include "hEqn.H"
|
||||
#include "pEqn.H"
|
||||
# include "UEqn.H"
|
||||
# include "hEqn.H"
|
||||
# include "pEqn.H"
|
||||
}
|
||||
|
||||
turbulence->correct();
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
# include "rhoEqn.H"
|
||||
}
|
||||
{
|
||||
scalar sumLocalContErr =
|
||||
sum
|
||||
(
|
||||
mag(rho.internalField() - (psi*p)().internalField())
|
||||
)/sum(rho.internalField());
|
||||
|
||||
scalar globalContErr =
|
||||
sum(rho.internalField() - (psi*p)().internalField())
|
||||
/sum(rho.internalField());
|
||||
|
||||
cumulativeContErr += globalContErr;
|
||||
|
||||
Info<< "time step continuity errors : sum local = " << sumLocalContErr
|
||||
<< ", global = " << globalContErr
|
||||
<< ", cumulative = " << cumulativeContErr << endl;
|
||||
}
|
|
@ -9,7 +9,9 @@
|
|||
volScalarField& T = const_cast<volScalarField&>(thermo.T());
|
||||
volScalarField& p = thermo.p();
|
||||
volScalarField& e = thermo.e();
|
||||
const volScalarField& psi = thermo.psi();
|
||||
|
||||
volScalarField psis("psi", thermo.psi()/thermo.Cp()*thermo.Cv());
|
||||
psis.oldTime();
|
||||
|
||||
volScalarField rho
|
||||
(
|
||||
|
@ -38,20 +40,6 @@
|
|||
|
||||
# include "compressibleCreatePhi.H"
|
||||
|
||||
// Store energy source term for under-relaxation
|
||||
volScalarField pDivU
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"pDivU",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
p*fvc::div(phi/fvc::interpolate(rho))
|
||||
);
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
autoPtr<compressible::turbulenceModel> turbulence
|
||||
(
|
||||
|
|
|
@ -5,7 +5,15 @@
|
|||
+ fvm::div(phi, e)
|
||||
- fvm::laplacian(turbulence->alphaEff(), e)
|
||||
==
|
||||
- fvm::SuSp(pDivU/e, e)
|
||||
- fvm::SuSp
|
||||
(
|
||||
p*fvc::div
|
||||
(
|
||||
phi/fvc::interpolate(rho)
|
||||
+ fvc::meshPhi(rho, U)
|
||||
)/e,
|
||||
e
|
||||
)
|
||||
// viscous heating?
|
||||
);
|
||||
|
||||
|
@ -40,4 +48,10 @@
|
|||
}
|
||||
|
||||
thermo.correct();
|
||||
|
||||
// Recalculate compressibility
|
||||
psis = thermo.psi()/thermo.Cp()*thermo.Cv();
|
||||
|
||||
// Recalculate density
|
||||
rho = thermo.rho();
|
||||
}
|
||||
|
|
|
@ -3,26 +3,37 @@
|
|||
|
||||
# include "limitU.H"
|
||||
|
||||
surfaceScalarField phid
|
||||
(
|
||||
"phid",
|
||||
fvc::interpolate(psi)*
|
||||
for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
// Calculate phi for boundary conditions
|
||||
phi = rhof*
|
||||
(
|
||||
(fvc::interpolate(U) & mesh.Sf())
|
||||
- fvc::meshPhi(rho, U)
|
||||
)
|
||||
);
|
||||
);
|
||||
|
||||
surfaceScalarField phid2 = rhoReff/rhof*phi;
|
||||
|
||||
surfaceScalarField phid("phid", psisf/rhof*phi);
|
||||
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
// Store pressure for under-relaxation
|
||||
p.storePrevIter();
|
||||
|
||||
volScalarField divPhid
|
||||
(
|
||||
"divPhid",
|
||||
fvc::div(phid)
|
||||
);
|
||||
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::ddt(psi, p)
|
||||
fvm::ddt(psis, p)
|
||||
+ fvm::div(phid, p)
|
||||
- fvm::laplacian(rho/UEqn.A(), p)
|
||||
// Convective flux relaxation terms
|
||||
+ fvm::SuSp(-divPhid, p)
|
||||
+ divPhid*p
|
||||
+ fvc::div(phid2)
|
||||
- fvm::laplacian(rho*rUA, p)
|
||||
);
|
||||
|
||||
if
|
||||
|
@ -42,9 +53,10 @@
|
|||
pEqn.solve(mesh.solutionDict().solver(p.name()));
|
||||
}
|
||||
|
||||
// Calculate the flux
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
phi = pEqn.flux();
|
||||
phi = phid2 + pEqn.flux();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,10 +27,11 @@ Application
|
|||
Description
|
||||
Transient solver for trans-sonic/supersonic for laminar or turbulent
|
||||
flow of a compressible gas with support for mesh motion and
|
||||
topological changes
|
||||
topological changes.
|
||||
|
||||
Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
|
||||
pseudo-transient simulations.
|
||||
pseudo-transient simulations. The pressure-energy coupling is done
|
||||
using the Rusche manoeuvre (isentropic compression/expansion).
|
||||
|
||||
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
|
||||
|
||||
|
@ -107,31 +108,25 @@ int main(int argc, char *argv[])
|
|||
label oCorr = 0;
|
||||
do
|
||||
{
|
||||
// Under-relax pDivU term
|
||||
pDivU.storePrevIter();
|
||||
|
||||
pDivU =
|
||||
p*fvc::div
|
||||
(
|
||||
phi/fvc::interpolate(rho)
|
||||
+ fvc::meshPhi(rho, U)
|
||||
);
|
||||
|
||||
pDivU.relax();
|
||||
|
||||
# include "rhoEqn.H"
|
||||
# include "eEqn.H"
|
||||
# include "UEqn.H"
|
||||
|
||||
// --- PISO loop
|
||||
volScalarField rUA = 1.0/UEqn.A();
|
||||
|
||||
surfaceScalarField psisf = fvc::interpolate(psis);
|
||||
surfaceScalarField rhof = fvc::interpolate(rho);
|
||||
|
||||
// Needs to be outside of loop since p is changing,
|
||||
// but psi and rho are not
|
||||
surfaceScalarField rhoReff = rhof - psisf*fvc::interpolate(p);
|
||||
|
||||
for (int corr = 0; corr < nCorr; corr++)
|
||||
{
|
||||
# include "pEqn.H"
|
||||
}
|
||||
|
||||
// Recalculate density
|
||||
rho = thermo.rho();
|
||||
|
||||
turbulence->correct();
|
||||
} while (++oCorr < nOuterCorr);
|
||||
|
||||
|
|
|
@ -1,8 +1,24 @@
|
|||
fvVectorMatrix UEqn
|
||||
(
|
||||
fvm::ddt(rho, U)
|
||||
+ fvm::div(phi, U)
|
||||
+ turbulence->divDevRhoReff(U)
|
||||
);
|
||||
fvVectorMatrix UEqn
|
||||
(
|
||||
fvm::ddt(rho, U)
|
||||
+ fvm::div(phi, U)
|
||||
+ turbulence->divDevRhoReff(U)
|
||||
);
|
||||
|
||||
solve(UEqn == -fvc::grad(p));
|
||||
if (oCorr == nOuterCorr - 1)
|
||||
{
|
||||
if (mesh.solutionDict().relax("UFinal"))
|
||||
{
|
||||
UEqn.relax(mesh.solutionDict().relaxationFactor("UFinal"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UEqn.relax(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UEqn.relax();
|
||||
}
|
||||
|
||||
solve(UEqn == -fvc::grad(p));
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
|
||||
volScalarField& p = thermo.p();
|
||||
volScalarField& e = thermo.e();
|
||||
const volScalarField& psi = thermo.psi();
|
||||
|
||||
volScalarField psis("psi", thermo.psi()/thermo.Cp()*thermo.Cv());
|
||||
psis.oldTime();
|
||||
|
||||
volScalarField rho
|
||||
(
|
||||
|
@ -35,8 +37,7 @@
|
|||
mesh
|
||||
);
|
||||
|
||||
#include "compressibleCreatePhi.H"
|
||||
|
||||
# include "compressibleCreatePhi.H"
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
autoPtr<compressible::turbulenceModel> turbulence
|
||||
|
|
|
@ -1,12 +1,42 @@
|
|||
{
|
||||
solve
|
||||
fvScalarMatrix eEqn
|
||||
(
|
||||
fvm::ddt(rho, e)
|
||||
+ fvm::div(phi, e)
|
||||
- fvm::laplacian(turbulence->alphaEff(), e)
|
||||
==
|
||||
==
|
||||
- p*fvc::div(phi/fvc::interpolate(rho))
|
||||
// - fvm::SuSp
|
||||
// (
|
||||
// p*fvc::div(phi/fvc::interpolate(rho))/e,
|
||||
// e
|
||||
// )
|
||||
// viscous heating?
|
||||
);
|
||||
|
||||
if (oCorr == nOuterCorr - 1)
|
||||
{
|
||||
if (mesh.solutionDict().relax("eFinal"))
|
||||
{
|
||||
eEqn.relax(mesh.solutionDict().relaxationFactor("eFinal"));
|
||||
}
|
||||
else
|
||||
{
|
||||
eEqn.relax(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
eEqn.relax();
|
||||
}
|
||||
|
||||
eEqn.solve();
|
||||
|
||||
thermo.correct();
|
||||
|
||||
// Recalculate compressibility
|
||||
psis = thermo.psi()/thermo.Cp()*thermo.Cv();
|
||||
|
||||
// Recalculate density
|
||||
rho = thermo.rho();
|
||||
}
|
||||
|
|
|
@ -1,37 +1,52 @@
|
|||
rho = thermo.rho();
|
||||
|
||||
volScalarField rUA = 1.0/UEqn.A();
|
||||
U = rUA*UEqn.H();
|
||||
|
||||
surfaceScalarField phid
|
||||
(
|
||||
"phid",
|
||||
fvc::interpolate(psi)
|
||||
*(
|
||||
(fvc::interpolate(U) & mesh.Sf())
|
||||
+ fvc::ddtPhiCorr(rUA, rho, U, phi)
|
||||
)
|
||||
);
|
||||
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::ddt(psi, p)
|
||||
+ fvm::div(phid, p)
|
||||
- fvm::laplacian(rho*rUA, p)
|
||||
);
|
||||
U = UEqn.H()/UEqn.A();
|
||||
|
||||
pEqn.solve();
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
phi = pEqn.flux();
|
||||
// Calculate phi for boundary conditions
|
||||
phi = rhof*
|
||||
(
|
||||
(fvc::interpolate(U) & mesh.Sf())
|
||||
);
|
||||
|
||||
surfaceScalarField phid2 = rhoReff/rhof*phi;
|
||||
|
||||
surfaceScalarField phid("phid", psisf/rhof*phi);
|
||||
|
||||
// Store pressure for under-relaxation
|
||||
p.storePrevIter();
|
||||
|
||||
volScalarField divPhid
|
||||
(
|
||||
"divPhid",
|
||||
fvc::div(phid)
|
||||
);
|
||||
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::ddt(psis, p)
|
||||
+ fvm::div(phid, p)
|
||||
// Convective flux relaxation terms
|
||||
+ fvm::SuSp(-divPhid, p)
|
||||
+ divPhid*p
|
||||
+ fvc::div(phid2)
|
||||
- fvm::laplacian(rho*rUA, p)
|
||||
);
|
||||
|
||||
pEqn.solve();
|
||||
|
||||
// Calculate the flux
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
phi = phid2 + pEqn.flux();
|
||||
}
|
||||
|
||||
// Relax the pressure
|
||||
p.relax();
|
||||
}
|
||||
|
||||
# include "compressibleContinuityErrs.H"
|
||||
|
||||
U -= fvc::grad(p)/UEqn.A();
|
||||
U.correctBoundaryConditions();
|
||||
}
|
||||
|
||||
#include "rhoEqn.H"
|
||||
#include "compressibleContinuityErrs.H"
|
||||
|
||||
U -= rUA*fvc::grad(p);
|
||||
U.correctBoundaryConditions();
|
||||
|
|
|
@ -25,8 +25,17 @@ Application
|
|||
sonicFoam
|
||||
|
||||
Description
|
||||
Transient solver for trans-sonic/supersonic, laminar or turbulent flow
|
||||
of a compressible gas.
|
||||
Transient solver for trans-sonic/supersonic for laminar or turbulent
|
||||
flow of a compressible gas.
|
||||
|
||||
Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
|
||||
pseudo-transient simulations. The pressure-energy coupling is done
|
||||
using the Rusche manoeuvre (isentropic compression/expansion).
|
||||
|
||||
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
|
@ -48,30 +57,42 @@ int main(int argc, char *argv[])
|
|||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
while (runTime.loop())
|
||||
while (runTime.run())
|
||||
{
|
||||
# include "readTimeControls.H"
|
||||
# include "readPIMPLEControls.H"
|
||||
# include "compressibleCourantNo.H"
|
||||
# include "setDeltaT.H"
|
||||
|
||||
runTime++;
|
||||
Info<< "deltaT = " << runTime.deltaT().value() << nl << endl;
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
# include "readPISOControls.H"
|
||||
# include "compressibleCourantNo.H"
|
||||
|
||||
# include "rhoEqn.H"
|
||||
|
||||
# include "UEqn.H"
|
||||
|
||||
# include "eEqn.H"
|
||||
|
||||
|
||||
// --- PISO loop
|
||||
|
||||
for (int corr = 0; corr < nCorr; corr++)
|
||||
// --- PIMPLE loop
|
||||
label oCorr = 0;
|
||||
do
|
||||
{
|
||||
# include "pEqn.H"
|
||||
}
|
||||
# include "rhoEqn.H"
|
||||
# include "eEqn.H"
|
||||
# include "UEqn.H"
|
||||
|
||||
turbulence->correct();
|
||||
// --- PISO loop
|
||||
volScalarField rUA = 1.0/UEqn.A();
|
||||
|
||||
rho = thermo.rho();
|
||||
surfaceScalarField psisf = fvc::interpolate(psis);
|
||||
surfaceScalarField rhof = fvc::interpolate(rho);
|
||||
|
||||
// Needs to be outside of loop since p is changing,
|
||||
// but psi and rho are not
|
||||
surfaceScalarField rhoReff = rhof - psisf*fvc::interpolate(p);
|
||||
|
||||
for (int corr = 0; corr < nCorr; corr++)
|
||||
{
|
||||
# include "pEqn.H"
|
||||
}
|
||||
|
||||
turbulence->correct();
|
||||
} while (++oCorr < nOuterCorr);
|
||||
|
||||
runTime.write();
|
||||
|
||||
|
@ -82,7 +103,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
return 0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ EXE_INC = \
|
|||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels \
|
||||
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/RASModel \
|
||||
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/RASModel
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
// Needs to be outside of loop since p is changing, but psi and rho are not
|
||||
surfaceScalarField rhoReff = rhof - psisf*fvc::interpolate(p);
|
||||
|
||||
// --- PISO loop
|
||||
for (int corr = 0; corr < nCorr; corr++)
|
||||
{
|
||||
U = rUA*UEqn.H();
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
==
|
||||
// ddt(p) term removed: steady-state. HJ, 27/Apr/2010
|
||||
fvc::div(faceU, p, "div(U,p)")
|
||||
- p*fvc::div(faceU))
|
||||
- p*fvc::div(faceU)
|
||||
// Viscous heating: note sign (devRhoReff has a minus in it)
|
||||
- (turbulence->devRhoReff() && fvc::grad(Urel))
|
||||
);
|
||||
|
|
|
@ -28,17 +28,17 @@ boundaryField
|
|||
|
||||
outlet
|
||||
{
|
||||
type waveTransmissive;
|
||||
field p;
|
||||
phi phi;
|
||||
rho rho;
|
||||
psi psi;
|
||||
gamma 1.4;
|
||||
fieldInf 1;
|
||||
lInf 3;
|
||||
inletOutlet off;
|
||||
correctSupercritical off;
|
||||
value uniform 1;
|
||||
type zeroGradient;
|
||||
// field p;
|
||||
// phi phi;
|
||||
// rho rho;
|
||||
// psi psi;
|
||||
// gamma 1.4;
|
||||
// fieldInf 1;
|
||||
// lInf 3;
|
||||
// inletOutlet off;
|
||||
// correctSupercritical on;
|
||||
// value uniform 1;
|
||||
}
|
||||
|
||||
bottom
|
||||
|
|
0
tutorials/compressible/sonicFoam/laminar/forwardStep/Allrun
Normal file → Executable file
0
tutorials/compressible/sonicFoam/laminar/forwardStep/Allrun
Normal file → Executable file
|
@ -3,7 +3,7 @@
|
|||
| \\ / F ield | foam-extend: Open Source CFD |
|
||||
| \\ / O peration | Version: 3.2 |
|
||||
| \\ / A nd | Web: http://www.foam-extend.org |
|
||||
| \\/ M anipulation | |
|
||||
| \\/ M anipulation | For copyright notice see file Copyright |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
|
|
|
@ -29,7 +29,7 @@ deltaT 0.002;
|
|||
|
||||
writeControl runTime;
|
||||
|
||||
writeInterval 0.5;
|
||||
writeInterval 1;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
|
@ -37,7 +37,7 @@ writeFormat ascii;
|
|||
|
||||
writePrecision 6;
|
||||
|
||||
writeCompression uncompressed;
|
||||
writeCompression compressed;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
|
@ -45,4 +45,59 @@ timePrecision 6;
|
|||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep no;
|
||||
maxCo 10;
|
||||
|
||||
functions
|
||||
(
|
||||
Mach
|
||||
{
|
||||
type MachNumber;
|
||||
UName U;
|
||||
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
}
|
||||
|
||||
minMaxU
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name U;
|
||||
}
|
||||
|
||||
minMaxP
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name p;
|
||||
}
|
||||
|
||||
minMaxRho
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name rho;
|
||||
}
|
||||
|
||||
minMaxT
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name T;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -23,26 +23,20 @@ ddtSchemes
|
|||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
grad(p) Gauss linear;
|
||||
grad(U) Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss upwind;
|
||||
div(phid,p) Gauss limitedLinear 1;
|
||||
div(phi,e) Gauss limitedLinear 1;
|
||||
div(phiU,p) Gauss limitedLinear 1;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear 1;
|
||||
div(phid,p) Gauss upwind;
|
||||
div(phi,e) Gauss upwind;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian(alphaEff,e) Gauss linear corrected;
|
||||
default Gauss linear limited 0.5;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
|
@ -58,7 +52,7 @@ snGradSchemes
|
|||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
p;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -17,42 +17,38 @@ FoamFile
|
|||
|
||||
solvers
|
||||
{
|
||||
rho
|
||||
{}
|
||||
|
||||
p
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-06;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
rho
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-05;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
e
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
PIMPLE
|
||||
{
|
||||
nCorrectors 2;
|
||||
nOuterCorrectors 1;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||
|
||||
cleanCase
|
||||
rm -rf 0
|
||||
cp -r 0.org 0
|
||||
cleanSamples
|
||||
|
||||
\rm -rf 0
|
||||
cp -r 0.org 0
|
||||
|
|
|
@ -45,4 +45,7 @@ timePrecision 6;
|
|||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep no;
|
||||
maxCo 10;
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -22,27 +22,24 @@ ddtSchemes
|
|||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
grad(p) Gauss linear;
|
||||
grad(U) Gauss linear;
|
||||
default cellLimited Gauss linear 1;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss upwind;
|
||||
div(phid,p) Gauss limitedLinear 1;
|
||||
div(phi,e) Gauss limitedLinear 1;
|
||||
div(phiU,p) Gauss limitedLinear 1;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear 1;
|
||||
div(phi,U) Gauss vanLeer;
|
||||
div(phid,p) Gauss vanLeer;
|
||||
div(phi,e) Gauss vanLeer;
|
||||
div(phiU,p) Gauss vanLeer;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
|
||||
div(interpolate(rho),U) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian(alphaEff,e) Gauss linear corrected;
|
||||
default Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
|
|
|
@ -19,17 +19,17 @@ solvers
|
|||
{
|
||||
p
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-15;
|
||||
tolerance 1e-8;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-15;
|
||||
tolerance 1e-8;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
|
@ -37,22 +37,23 @@ solvers
|
|||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-15;
|
||||
tolerance 1e-8;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
e
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-15;
|
||||
tolerance 1e-8;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
PIMPLE
|
||||
{
|
||||
nCorrectors 2;
|
||||
nOuterCorrectors 1;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,4 +21,6 @@ turbulence on;
|
|||
|
||||
printCoeffs on;
|
||||
|
||||
nuRatio 1000;
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
| \\ / F ield | foam-extend: Open Source CFD |
|
||||
| \\ / O peration | Version: 3.2 |
|
||||
| \\ / A nd | Web: http://www.foam-extend.org |
|
||||
| \\/ M anipulation | |
|
||||
| \\/ M anipulation | For copyright notice see file Copyright |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
|
|
|
@ -25,11 +25,11 @@ stopAt endTime;
|
|||
|
||||
endTime 0.01;
|
||||
|
||||
deltaT 4e-08;
|
||||
deltaT 5e-08;
|
||||
|
||||
writeControl runTime;
|
||||
|
||||
writeInterval 2e-04;
|
||||
writeInterval 1e-05;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
|
@ -45,8 +45,11 @@ timePrecision 6;
|
|||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep no;
|
||||
maxCo 10;
|
||||
|
||||
functions
|
||||
{
|
||||
(
|
||||
forces
|
||||
{
|
||||
type forceCoeffs;
|
||||
|
@ -69,6 +72,54 @@ functions
|
|||
lRef 1;
|
||||
Aref 1;
|
||||
}
|
||||
}
|
||||
|
||||
Mach
|
||||
{
|
||||
type MachNumber;
|
||||
UName U;
|
||||
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
}
|
||||
|
||||
minMaxU
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name U;
|
||||
}
|
||||
|
||||
minMaxP
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name p;
|
||||
}
|
||||
|
||||
minMaxRho
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name rho;
|
||||
}
|
||||
|
||||
minMaxT
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name T;
|
||||
}
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -41,13 +41,7 @@ divSchemes
|
|||
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear limited 0.5;
|
||||
laplacian(DkEff,k) Gauss linear limited 0.5;
|
||||
laplacian(DREff,R) Gauss linear limited 0.5;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.5;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear limited 0.5;
|
||||
laplacian(alphaEff,e) Gauss linear limited 0.5;
|
||||
default Gauss linear limited 0.5;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
|
|
|
@ -17,41 +17,38 @@ FoamFile
|
|||
|
||||
solvers
|
||||
{
|
||||
rho
|
||||
{}
|
||||
|
||||
p
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-12;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
rho
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-08;
|
||||
minIter 1;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
e
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
k
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
|
@ -59,7 +56,7 @@ solvers
|
|||
|
||||
epsilon
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
|
@ -74,10 +71,23 @@ solvers
|
|||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
SIMPLE
|
||||
{
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 2;
|
||||
}
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
nOuterCorrectors 2;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
U 0.8;
|
||||
p 0.8;
|
||||
e 0.8;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -16,7 +16,7 @@ FoamFile
|
|||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (650 0 0);
|
||||
internalField uniform (0 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
|
|
|
@ -28,17 +28,7 @@ boundaryField
|
|||
|
||||
outlet
|
||||
{
|
||||
type waveTransmissive;
|
||||
field p;
|
||||
phi phi;
|
||||
rho rho;
|
||||
psi psi;
|
||||
gamma 1.3;
|
||||
fieldInf 100000;
|
||||
lInf 1;
|
||||
inletOutlet off;
|
||||
correctSupercritical off;
|
||||
value uniform 100000;
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
bottomWall
|
||||
|
|
0
tutorials/compressible/sonicFoam/ras/prism/Allrun
Normal file → Executable file
0
tutorials/compressible/sonicFoam/ras/prism/Allrun
Normal file → Executable file
|
@ -23,9 +23,9 @@ startTime 0;
|
|||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 0.0004;
|
||||
endTime 0.005;
|
||||
|
||||
deltaT 5e-07;
|
||||
deltaT 1e-06;
|
||||
|
||||
writeControl runTime;
|
||||
|
||||
|
@ -37,7 +37,7 @@ writeFormat ascii;
|
|||
|
||||
writePrecision 6;
|
||||
|
||||
writeCompression uncompressed;
|
||||
writeCompression compressed;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
|
@ -45,4 +45,59 @@ timePrecision 6;
|
|||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep no;
|
||||
maxCo 10;
|
||||
|
||||
functions
|
||||
(
|
||||
Mach
|
||||
{
|
||||
type MachNumber;
|
||||
UName U;
|
||||
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
}
|
||||
|
||||
minMaxU
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name U;
|
||||
}
|
||||
|
||||
minMaxP
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name p;
|
||||
}
|
||||
|
||||
minMaxRho
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name rho;
|
||||
}
|
||||
|
||||
minMaxT
|
||||
{
|
||||
type minMaxField;
|
||||
|
||||
// Where to load it from (if not already in solver)
|
||||
functionObjectLibs ("libfieldFunctionObjects.so");
|
||||
|
||||
name T;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
@ -22,32 +22,26 @@ ddtSchemes
|
|||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
default cellLimited Gauss linear 1;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss limitedLinearV 1;
|
||||
div(phi,U) Gauss upwind;
|
||||
div(phid,p) Gauss upwind;
|
||||
div(phi,e) Gauss upwind;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
|
||||
div(phi,k) Gauss upwind;
|
||||
div(phi,epsilon) Gauss upwind;
|
||||
div(phi,R) Gauss upwind;
|
||||
div(R) Gauss linear;
|
||||
div(phid,p) Gauss limitedLinear 1;
|
||||
div(phiU,p) Gauss limitedLinear 1;
|
||||
div(phi,e) Gauss limitedLinear 1;
|
||||
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DREff,R) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(alphaEff,e) Gauss linear corrected;
|
||||
default Gauss linear limited 0.5;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
|
|
|
@ -17,41 +17,36 @@ FoamFile
|
|||
|
||||
solvers
|
||||
{
|
||||
rho
|
||||
{}
|
||||
|
||||
p
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
rho
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
e
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
k
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
|
@ -59,7 +54,7 @@ solvers
|
|||
|
||||
epsilon
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
|
@ -67,17 +62,18 @@ solvers
|
|||
|
||||
R
|
||||
{
|
||||
solver PBiCG;
|
||||
solver BiCGStab;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PISO
|
||||
PIMPLE
|
||||
{
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 2;
|
||||
nOuterCorrectors 2;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
Reference in a new issue