waveSurfacePressureFvPatchScalarField: Updated to operate with p_rgh

so that it can now be used with either the isothermalFluid or fluid solver
modules, thus supporting non-uniform fluid properties, compressibility and
thermal effect.  This development makes the special potentialFreeSurfaceFoam
solver redundant as both the isothermalFluid and fluid solver modules are more
general and has been removed and replaced with a user redirection script.

The tutorials/multiphase/potentialFreeSurfaceFoam cases have been updated to run
with the isothermalFluid solver module:

    tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox
    tutorials/multiphase/potentialFreeSurfaceFoam/movingOscillatingBox

which demonstrate how to upgrade potentialFreeSurfaceFoam cases to
isothermalFluid.
This commit is contained in:
Henry Weller
2022-10-11 21:58:36 +01:00
parent 45fe16d325
commit 8976585b76
50 changed files with 285 additions and 462 deletions

View File

@ -55,7 +55,7 @@ bool Foam::solvers::isothermalFluid::moveMesh()
CorrectPhi
(
phi,
p,
buoyancy.valid() ? p_rgh : p,
rho,
thermo.psi(),
dimensionedScalar("rAUf", dimTime, 1),

View File

@ -1,3 +0,0 @@
potentialFreeSurfaceFoam.C
EXE = $(FOAM_APPBIN)/potentialFreeSurfaceFoam

View File

@ -1,17 +0,0 @@
EXE_INC = \
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/incompressible/lnInclude \
-I$(LIB_SRC)/physicalProperties/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-lphysicalProperties \
-lmomentumTransportModels \
-lincompressibleMomentumTransportModels \
-lfiniteVolume \
-lmeshTools \
-lfvModels \
-lfvConstraints \
-lsampling

View File

@ -1,20 +0,0 @@
tmp<fvVectorMatrix> tUEqn
(
fvm::ddt(U) + fvm::div(phi, U)
+ MRF.DDt(U)
+ turbulence->divDevSigma(U)
==
fvModels.source(U)
);
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax();
fvConstraints.constrain(UEqn);
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p_gh));
fvConstraints.constrain(U);
}

View File

@ -1,21 +0,0 @@
// Calculate absolute flux
// from the mapped surface velocity
phi = mesh.Sf() & Uf();
correctUphiBCs(U, phi, true);
CorrectPhi
(
phi,
U,
p_gh,
surfaceScalarField("rAUf", fvc::interpolate(rAU)),
geometricZeroField(),
pressureReference,
pimple
);
#include "continuityErrs.H"
// Make the flux relative to the mesh motion
fvc::makeRelative(phi, U);

View File

@ -1,65 +0,0 @@
Info<< "Reading field p (kinematic)\n" << endl;
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
#include "createPhi.H"
autoPtr<viscosityModel> viscosity(viscosityModel::New(mesh));
autoPtr<incompressible::momentumTransportModel> turbulence
(
incompressible::momentumTransportModel::New(U, phi, viscosity)
);
#include "readGravitationalAcceleration.H"
Info<< "Creating field p_gh\n" << endl;
volScalarField p_gh
(
IOobject
(
"p_gh",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// Force p_gh to be consistent with p
// Height is made relative to field 'refLevel'
p_gh = p - (g & mesh.C());
pressureReference pressureReference(p_gh, pimple.dict());
mesh.schemes().setFluxRequired(p_gh.name());
#include "createMRF.H"
#include "createFvModels.H"
#include "createFvConstraints.H"

View File

@ -1,15 +0,0 @@
if (!runTime.restart() &&correctPhi)
{
correctUphiBCs(U, phi, true);
CorrectPhi
(
phi,
U,
p_gh,
surfaceScalarField("rAUf", fvc::interpolate(rAU)),
geometricZeroField(),
pressureReference,
pimple
);
}

View File

@ -1,66 +0,0 @@
rAU = 1.0/UEqn.A();
surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_gh));
if (pimple.nCorrPiso() <= 1)
{
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(HbyA)
+ MRF.zeroFilter(rAUf*fvc::ddtCorr(U, phi, Uf))
);
MRF.makeRelative(phiHbyA);
if (p_gh.needReference())
{
fvc::makeRelative(phiHbyA, U);
adjustPhi(phiHbyA, U, p_gh);
fvc::makeAbsolute(phiHbyA, U);
}
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_gh, U, phiHbyA, rAUf);
// Non-orthogonal pressure corrector loop
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix p_ghEqn
(
fvm::laplacian(rAUf, p_gh) == fvc::div(phiHbyA)
);
p_ghEqn.setReference
(
pressureReference.refCell(),
pressureReference.refValue()
);
p_ghEqn.solve();
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA - p_ghEqn.flux();
// Explicitly relax pressure for momentum corrector
p_gh.relax();
U = HbyA - rAU*fvc::grad(p_gh);
U.correctBoundaryConditions();
fvConstraints.constrain(U);
}
}
#include "continuityErrs.H"
// Correct Uf if the mesh is moving
fvc::correctUf(Uf, U, phi, MRF);
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);
p = p_gh + (g & mesh.C());

View File

@ -1,165 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2022 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
potentialFreeSurfaceFoam
Description
Incompressible Navier-Stokes solver with inclusion of a wave height field
to enable single-phase free-surface approximations, with optional mesh
motion and mesh topology changes.
Wave height field, zeta, used by pressure boundary conditions.
Optional mesh motion and mesh topology changes including adaptive
re-meshing.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "viscosityModel.H"
#include "incompressibleMomentumTransportModels.H"
#include "pimpleControl.H"
#include "pressureReference.H"
#include "fvModels.H"
#include "fvConstraints.H"
#include "CorrectPhi.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "postProcess.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "initContinuityErrs.H"
#include "createDyMControls.H"
#include "createFields.H"
volScalarField rAU
(
IOobject
(
"rAU",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar(dimTime, 1.0)
);
#include "initCorrectPhi.H"
#include "createUfIfPresent.H"
turbulence->validate();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (pimple.run(runTime))
{
#include "readDyMControls.H"
#include "CourantNo.H"
#include "setDeltaT.H"
fvModels.preUpdateMesh();
const scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
// Update the mesh for topology change, mesh to mesh mapping
const bool topoChanged = mesh.update();
if (topoChanged)
{
Info<< "Execution time for mesh.update() = "
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
<< " s" << endl;
}
runTime++;
Info<< "Time = " << runTime.userTimeName() << nl << endl;
// --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop())
{
if (pimple.firstPimpleIter() || pimple.moveMeshOuterCorrectors())
{
// Move the mesh
mesh.move();
if (mesh.changing())
{
MRF.update();
if (correctPhi)
{
#include "correctPhi.H"
}
if (checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
}
}
fvModels.correct();
#include "UEqn.H"
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
}
if (pimple.turbCorr())
{
viscosity->correct();
turbulence->correct();
}
}
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -35,7 +35,7 @@
cat <<EOF
SRFPimpleFoam has been superseded and replaced by the more general
fluid solver module executed by the foamRun application:
incompressibleFluid solver module executed by the foamRun application:
foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF
SRFSimpleFoam has been superseded and replaced by the more general
fluid solver module executed by the foamRun application:
incompressibleFluid solver module executed by the foamRun application:
foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF
pimpleFoam has been superseded and replaced by the more general
fluid solver module executed by the foamRun application:
incompressibleFluid solver module executed by the foamRun application:
foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF
pisoFoam has been superseded and replaced by the more general
fluid solver module executed by the foamRun application:
incompressibleFluid solver module executed by the foamRun application:
foamRun -solver incompressibleFluid

48
bin/potentialFreeSurfaceFoam Executable file
View File

@ -0,0 +1,48 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | Website: https://openfoam.org
# \\ / A nd | Copyright (C) 2022 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/>.
#
# Script
# potentialFreeSurfaceFoam
#
# Description
# Script to inform the user that potentialFreeSurfaceFoam has been
# superseded and replaced by the more general isothermalFluid solver
# module executed by the foamRun application.
#
#------------------------------------------------------------------------------
cat <<EOF
potentialFreeSurfaceFoam has been superseded and replaced by the more general
isothermalFluid solver module executed by the foamRun application:
foamRun -solver isothermalFluid
For examples of how to upgrade potentialFreeSurfaceFoam to isothermalFluid see
modules/isothermalFluid tutorail cases potentialFreeSurfaceMovingOscillatingBox
and potentialFreeSurfaceOscillatingBox
EOF
#------------------------------------------------------------------------------

View File

@ -35,7 +35,7 @@
cat <<EOF
simpleFoam has been superseded and replaced by the more general
fluid solver module executed by the foamRun application:
incompressibleFluid solver module executed by the foamRun application:
foamRun -solver incompressibleFluid

View File

@ -2695,31 +2695,6 @@ _potentialFoam_ ()
}
complete -o filenames -o nospace -F _potentialFoam_ potentialFoam
_potentialFreeSurfaceFoam_ ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}"
local line=${COMP_LINE}
local used=$(echo "$line" | grep -oE "\-[a-zA-Z]+ ")
opts="-case -doc -fileHandler -help -hostRoots -libs -listFunctionObjects -listFvConstraints -listFvModels -listMomentumTransportModels -listScalarBCs -listSwitches -listVectorBCs -noFunctionObjects -parallel -postProcess -roots -srcDoc"
for o in $used ; do opts="${opts/$o/}" ; done
extra=""
[ "$COMP_CWORD" = 1 ] || \
case "$prev" in
-case)
opts="" ; extra="-d" ;;
-fileHandler)
opts="uncollated collated masterUncollated" ; extra="" ;;
-hostRoots|-libs|-roots)
opts="" ; extra="" ;;
*) ;;
esac
COMPREPLY=( $(compgen -W "${opts}" $extra -- ${cur}) )
}
complete -o filenames -o nospace -F _potentialFreeSurfaceFoam_ potentialFreeSurfaceFoam
_reconstructPar_ ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"

View File

@ -86,7 +86,31 @@ waveSurfacePressureFvPatchScalarField
phiName_(dict.lookupOrDefault<word>("phi", "phi")),
zetaName_(dict.lookupOrDefault<word>("zeta", "zeta")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho"))
{}
{
if (!db().foundObject<volVectorField>(zetaName_))
{
Info << "Creating field " << zetaName_ << endl;
tmp<volVectorField> tzeta
(
new volVectorField
(
IOobject
(
"zeta",
db().time().timeName(),
db(),
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
patch().boundaryMesh().mesh(),
dimensionedVector(dimLength, Zero)
)
);
regIOobject::store(tzeta.ptr());
}
}
Foam::waveSurfacePressureFvPatchScalarField::
@ -128,30 +152,6 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
return;
}
if (!db().foundObject<volVectorField>(zetaName_))
{
Info << "Creating field " << zetaName_ << endl;
tmp<volVectorField> tzeta
(
new volVectorField
(
IOobject
(
"zeta",
db().time().timeName(),
db(),
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
patch().boundaryMesh().mesh(),
dimensionedVector(dimLength, Zero)
)
);
regIOobject::store(tzeta.ptr());
}
// Retrieve non-const access to zeta field from the database
volVectorField& zeta = db().lookupObjectRef<volVectorField>(zetaName_);
@ -169,6 +169,9 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
const surfaceScalarField& phi =
db().lookupObject<surfaceScalarField>(phiName_);
const scalarField& rhop =
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
// Cache the patch face-normal vectors
tmp<vectorField> nf(patch().nf());
@ -177,16 +180,11 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
if (phi.dimensions() == dimMassFlux)
{
const scalarField& rhop =
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
dZetap /= rhop;
}
const volVectorField& zeta0 = zeta.oldTime();
Info << zeta0 << endl;
switch (ddtScheme)
{
case tsEuler:
@ -224,15 +222,14 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
}
}
Info<< "min/max zetap = " << gMin(zetap & nf()) << ", "
<< gMax(zetap & nf()) << endl;
// Update the surface pressure
const uniformDimensionedVectorField& g =
db().lookupObject<uniformDimensionedVectorField>("g");
operator==(-g.value() & zetap);
const uniformDimensionedScalarField& pRef =
this->db().template lookupObject<uniformDimensionedScalarField>("pRef");
operator==(pRef.value() - rhop*(g.value() & zetap));
fixedValueFvPatchScalarField::updateCoeffs();
}

View File

@ -0,0 +1,48 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
freeSurface
{
type calculated;
value uniform 300;
}
".*Wall"
{
type calculated;
value uniform 300;
}
"floatingObject.*"
{
type calculated;
value uniform 300;
}
frontAndBack
{
type empty;
}
}
// ************************************************************************* //

View File

@ -14,7 +14,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
@ -25,16 +25,19 @@ boundaryField
type calculated;
value uniform 0;
}
".*Wall"
{
type calculated;
value uniform 0;
}
"floatingObject.*"
{
type calculated;
value uniform 0;
}
frontAndBack
{
type empty;

View File

@ -10,11 +10,11 @@ FoamFile
format ascii;
class volScalarField;
location "0";
object p_gh;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
@ -25,15 +25,19 @@ boundaryField
type waveSurfacePressure;
value uniform 0;
}
".*Wall"
{
type zeroGradient;
type fixedFluxPressure;
value uniform 0;
}
"floatingObject.*"
{
type fixedFluxPressure;
value uniform 0;
}
frontAndBack
{
type empty;

View File

@ -9,13 +9,43 @@ FoamFile
{
format ascii;
class dictionary;
location "constant";
object physicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
viscosityModel constant;
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
nu [0 2 -1 0 0 0 0] 1e-06;
mixture
{
specie
{
molWeight 18;
}
equationOfState
{
rho 1000;
}
thermodynamics
{
Cv 4184;
Hf 0;
}
transport
{
mu 1e-3;
Pr 1;
}
}
// ************************************************************************* //

View File

@ -14,7 +14,9 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application potentialFreeSurfaceFoam;
application foamRun;
solver isothermalFluid;
startFrom startTime;

View File

@ -22,15 +22,16 @@ ddtSchemes
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss upwind;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
div(meshPhi,p) Gauss linear;
}
laplacianSchemes
@ -41,7 +42,6 @@ laplacianSchemes
interpolationSchemes
{
default linear;
interpolate(U) linear;
}
snGradSchemes

View File

@ -33,16 +33,21 @@ solvers
maxIter 100;
}
p_gh
"rho.*"
{
solver diagonal;
}
p_rgh
{
$pcorr;
tolerance 1e-7;
relTol 0.1;
}
p_ghFinal
p_rghFinal
{
$p_gh;
$p_rgh;
relTol 0;
}

View File

@ -0,0 +1,45 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
freeSurface
{
type calculated;
value uniform 300;
}
walls
{
type calculated;
value uniform 300;
}
floatingObject
{
type calculated;
value uniform 300;
}
frontAndBack
{
type empty;
}
}
// ************************************************************************* //

View File

@ -14,7 +14,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;

View File

@ -10,11 +10,11 @@ FoamFile
format ascii;
class volScalarField;
location "0";
object p_gh;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;

View File

@ -9,13 +9,43 @@ FoamFile
{
format ascii;
class dictionary;
location "constant";
object physicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
viscosityModel constant;
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
nu [0 2 -1 0 0 0 0] 1e-06;
mixture
{
specie
{
molWeight 18;
}
equationOfState
{
rho 1000;
}
thermodynamics
{
Cv 4184;
Hf 0;
}
transport
{
mu 1e-3;
Pr 1;
}
}
// ************************************************************************* //

View File

@ -14,7 +14,9 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application potentialFreeSurfaceFoam;
application foamRun;
solver isothermalFluid;
startFrom startTime;

View File

@ -28,7 +28,7 @@ divSchemes
{
default none;
div(phi,U) Gauss upwind;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
@ -46,4 +46,5 @@ snGradSchemes
default corrected;
}
// ************************************************************************* //

View File

@ -16,7 +16,12 @@ FoamFile
solvers
{
p_gh
"rho.*"
{
solver diagonal;
}
p_rgh
{
solver GAMG;
tolerance 1e-7;
@ -25,9 +30,9 @@ solvers
maxIter 100;
}
p_ghFinal
p_rghFinal
{
$p_gh;
$p_rgh;
tolerance 1e-7;
relTol 0;
}