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:
@ -55,7 +55,7 @@ bool Foam::solvers::isothermalFluid::moveMesh()
|
||||
CorrectPhi
|
||||
(
|
||||
phi,
|
||||
p,
|
||||
buoyancy.valid() ? p_rgh : p,
|
||||
rho,
|
||||
thermo.psi(),
|
||||
dimensionedScalar("rAUf", dimTime, 1),
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
potentialFreeSurfaceFoam.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/potentialFreeSurfaceFoam
|
||||
@ -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
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
@ -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"
|
||||
@ -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
|
||||
);
|
||||
}
|
||||
@ -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());
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
48
bin/potentialFreeSurfaceFoam
Executable 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
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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]}"
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -14,7 +14,9 @@ FoamFile
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application potentialFreeSurfaceFoam;
|
||||
application foamRun;
|
||||
|
||||
solver isothermalFluid;
|
||||
|
||||
startFrom startTime;
|
||||
|
||||
@ -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
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -14,7 +14,7 @@ FoamFile
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -14,7 +14,9 @@ FoamFile
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application potentialFreeSurfaceFoam;
|
||||
application foamRun;
|
||||
|
||||
solver isothermalFluid;
|
||||
|
||||
startFrom startTime;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user