70 phiName_(ptf.phiName_),
86 phiName_(
dict.getOrDefault<
word>(
"phi",
"phi")),
87 rhoName_(
dict.getOrDefault<
word>(
"rho",
"rho")),
108 <<
"unphysical lInf specified (lInf < 0)" <<
nl
125 phiName_(ptpsf.phiName_),
140 phiName_(ptpsf.phiName_),
141 rhoName_(ptpsf.rhoName_),
142 fieldInf_(ptpsf.fieldInf_),
154 this->patch().template lookupPatchField<surfaceScalarField>(phiName_);
159 this->patch().template lookupPatchField<volScalarField>(rhoName_);
161 return phip/(rhop*this->patch().magSf());
165 return phip/this->
patch().magSf();
178 const fvMesh&
mesh = this->internalField().mesh();
184 scalar deltaT = this->db().time().deltaTValue();
187 this->db().objectRegistry::template
188 lookupObject<GeometricField<Type, fvPatchField, volMesh>>
190 this->internalField().name()
200 label patchi = this->
patch().index();
217 field.oldTime().boundaryField()[patchi] +
k*fieldInf_
220 this->valueFraction() = (1.0 +
k)/(1.0 +
alpha +
k);
226 2.0*
field.oldTime().boundaryField()[patchi]
227 - 0.5*
field.oldTime().oldTime().boundaryField()[patchi]
231 this->valueFraction() = (1.5 +
k)/(1.5 +
alpha +
k);
244 w*this->
patch().deltaCoeffs()/rDeltaT.boundaryField()[patchi]
248 const scalarField k(w/(rDeltaT.boundaryField()[patchi]*lInf_));
252 field.oldTime().boundaryField()[patchi] +
k*fieldInf_
255 this->valueFraction() = (1.0 +
k)/(1.0 +
alpha +
k);
261 <<
" on patch " << this->
patch().name()
262 <<
" of field " << this->internalField().name()
263 <<
" in file " << this->internalField().objectPath()
275 this->refValue() =
field.oldTime().boundaryField()[patchi];
277 this->valueFraction() = 1.0/(1.0 +
alpha);
283 2.0*
field.oldTime().boundaryField()[patchi]
284 - 0.5*
field.oldTime().oldTime().boundaryField()[patchi]
287 this->valueFraction() = 1.5/(1.5 +
alpha);
300 w*this->
patch().deltaCoeffs()/rDeltaT.boundaryField()[patchi]
303 this->refValue() =
field.oldTime().boundaryField()[patchi];
305 this->valueFraction() = 1.0/(1.0 +
alpha);
311 <<
"\n on patch " << this->
patch().name()
312 <<
" of field " << this->internalField().name()
313 <<
" in file " << this->internalField().objectPath()
327 os.writeEntryIfDifferent<word>(
"phi",
"phi", phiName_);
328 os.writeEntryIfDifferent<word>(
"rho",
"rho", rhoName_);
332 os.writeEntry(
"fieldInf", fieldInf_);
333 os.writeEntry(
"lInf", lInf_);
Macros for easy insertion into run-time selection tables.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
const Boundary & boundaryField() const noexcept
Return const-reference to the boundary field.
const word & name() const noexcept
Return the object name.
fileName objectPath() const
The complete path + object name.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
This boundary condition provides an advective outflow condition, based on solving DDt(W,...
virtual void write(Ostream &) const
Write.
advectiveFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
scalar lInf_
Relaxation length-scale.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
word phiName_
Name of the flux transporting the field.
Type fieldInf_
Field value of the far-field.
word rhoName_
Name of the density field used to normalise the mass flux if necessary.
virtual tmp< scalarField > advectionSpeed() const
Calculate and return the advection speed at the boundary.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
bool readIfPresent(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX) const
Find an entry if present, and assign to T val. FatalIOError if it is found and the number of tokens i...
Mesh data needed to do the Finite Volume discretisation.
const objectRegistry & db() const
The associated objectRegistry.
const fvPatch & patch() const noexcept
Return the patch.
bool updated() const noexcept
True if the boundary condition has already been updated.
A FieldMapper for finite-volume patch fields.
virtual void write(Ostream &) const
Write.
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
const DimensionedField< Type, volMesh > & internalField() const noexcept
Return const-reference to the dimensioned internal field.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
bool readValueEntry(const dictionary &dict, IOobjectOption::readOption readOpt=IOobjectOption::LAZY_READ)
Read the "value" entry into *this.
void extrapolateInternal()
Assign the patch field from the internal field.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
virtual const word & name() const
Return name.
Second-oder Crank-Nicolson implicit ddt using the current and previous time-step fields as well as th...
Basic first-order Euler implicit/explicit ddt using only the current and previous time-step values.
Second-order backward-differencing ddt using the current and two previous time-step values.
Local time-step first-order Euler implicit/explicit ddt.
static const volScalarField & localRDeltaT(const fvMesh &mesh)
Return the reciprocal of the local time-step.
This boundary condition provides a base class for 'mixed' type boundary conditions,...
mixedFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
virtual Field< Type > & refGrad()
virtual Field< Type > & refValue()
virtual scalarField & valueFraction()
ITstream & ddtScheme(const word &name) const
Get ddt scheme for given name, or default.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
OBJstream os(runTime.globalPath()/outputName)
const std::string patch
OpenFOAM patch number as a std::string.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
static constexpr const zero Zero
Global zero (0).
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
errorManipArg< error, int > exit(error &err, const int errNo=1)
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
constexpr char nl
The newline '\n' character (0x0a).