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 CorrectPhi
( (
phi, phi,
p, buoyancy.valid() ? p_rgh : p,
rho, rho,
thermo.psi(), thermo.psi(),
dimensionedScalar("rAUf", dimTime, 1), 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 cat <<EOF
SRFPimpleFoam has been superseded and replaced by the more general 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 foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF cat <<EOF
SRFSimpleFoam has been superseded and replaced by the more general 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 foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF cat <<EOF
pimpleFoam has been superseded and replaced by the more general 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 foamRun -solver incompressibleFluid

View File

@ -35,7 +35,7 @@
cat <<EOF cat <<EOF
pisoFoam has been superseded and replaced by the more general 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 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 cat <<EOF
simpleFoam has been superseded and replaced by the more general 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 foamRun -solver incompressibleFluid

View File

@ -2695,31 +2695,6 @@ _potentialFoam_ ()
} }
complete -o filenames -o nospace -F _potentialFoam_ 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_ () _reconstructPar_ ()
{ {
local cur="${COMP_WORDS[COMP_CWORD]}" local cur="${COMP_WORDS[COMP_CWORD]}"

View File

@ -86,7 +86,31 @@ waveSurfacePressureFvPatchScalarField
phiName_(dict.lookupOrDefault<word>("phi", "phi")), phiName_(dict.lookupOrDefault<word>("phi", "phi")),
zetaName_(dict.lookupOrDefault<word>("zeta", "zeta")), zetaName_(dict.lookupOrDefault<word>("zeta", "zeta")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")) 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:: Foam::waveSurfacePressureFvPatchScalarField::
@ -128,30 +152,6 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
return; 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 // Retrieve non-const access to zeta field from the database
volVectorField& zeta = db().lookupObjectRef<volVectorField>(zetaName_); volVectorField& zeta = db().lookupObjectRef<volVectorField>(zetaName_);
@ -169,6 +169,9 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
const surfaceScalarField& phi = const surfaceScalarField& phi =
db().lookupObject<surfaceScalarField>(phiName_); db().lookupObject<surfaceScalarField>(phiName_);
const scalarField& rhop =
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
// Cache the patch face-normal vectors // Cache the patch face-normal vectors
tmp<vectorField> nf(patch().nf()); tmp<vectorField> nf(patch().nf());
@ -177,16 +180,11 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs()
if (phi.dimensions() == dimMassFlux) if (phi.dimensions() == dimMassFlux)
{ {
const scalarField& rhop =
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
dZetap /= rhop; dZetap /= rhop;
} }
const volVectorField& zeta0 = zeta.oldTime(); const volVectorField& zeta0 = zeta.oldTime();
Info << zeta0 << endl;
switch (ddtScheme) switch (ddtScheme)
{ {
case tsEuler: 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 // Update the surface pressure
const uniformDimensionedVectorField& g = const uniformDimensionedVectorField& g =
db().lookupObject<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(); 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; internalField uniform 0;
@ -25,16 +25,19 @@ boundaryField
type calculated; type calculated;
value uniform 0; value uniform 0;
} }
".*Wall" ".*Wall"
{ {
type calculated; type calculated;
value uniform 0; value uniform 0;
} }
"floatingObject.*" "floatingObject.*"
{ {
type calculated; type calculated;
value uniform 0; value uniform 0;
} }
frontAndBack frontAndBack
{ {
type empty; type empty;

View File

@ -10,11 +10,11 @@ FoamFile
format ascii; format ascii;
class volScalarField; class volScalarField;
location "0"; 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; internalField uniform 0;
@ -25,15 +25,19 @@ boundaryField
type waveSurfacePressure; type waveSurfacePressure;
value uniform 0; value uniform 0;
} }
".*Wall" ".*Wall"
{ {
type zeroGradient; type fixedFluxPressure;
value uniform 0;
} }
"floatingObject.*" "floatingObject.*"
{ {
type fixedFluxPressure; type fixedFluxPressure;
value uniform 0; value uniform 0;
} }
frontAndBack frontAndBack
{ {
type empty; type empty;

View File

@ -9,13 +9,43 @@ FoamFile
{ {
format ascii; format ascii;
class dictionary; class dictionary;
location "constant";
object physicalProperties; 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; startFrom startTime;

View File

@ -22,15 +22,16 @@ ddtSchemes
gradSchemes gradSchemes
{ {
default Gauss linear; default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
} }
divSchemes divSchemes
{ {
default none; default none;
div(phi,U) Gauss upwind; 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 laplacianSchemes
@ -41,7 +42,6 @@ laplacianSchemes
interpolationSchemes interpolationSchemes
{ {
default linear; default linear;
interpolate(U) linear;
} }
snGradSchemes snGradSchemes

View File

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

View File

@ -10,11 +10,11 @@ FoamFile
format ascii; format ascii;
class volScalarField; class volScalarField;
location "0"; 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; internalField uniform 0;

View File

@ -9,13 +9,43 @@ FoamFile
{ {
format ascii; format ascii;
class dictionary; class dictionary;
location "constant";
object physicalProperties; 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; startFrom startTime;

View File

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

View File

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