70 phiName_(ptf.phiName_),
71 rhoName_(ptf.rhoName_),
72 fieldInf_(ptf.fieldInf_),
86 phiName_(
dict.getOrDefault<
word>(
"phi",
"phi")),
87 rhoName_(
dict.getOrDefault<
word>(
"rho",
"rho")),
114 <<
"unphysical lInf specified (lInf < 0)" <<
nl
131 phiName_(ptpsf.phiName_),
132 rhoName_(ptpsf.rhoName_),
133 fieldInf_(ptpsf.fieldInf_),
146 phiName_(ptpsf.phiName_),
147 rhoName_(ptpsf.rhoName_),
148 fieldInf_(ptpsf.fieldInf_),
160 this->db().objectRegistry::template lookupObject<surfaceScalarField>
164 this->patch().template lookupPatchField<surfaceScalarField, scalar>
172 this->patch().template lookupPatchField<volScalarField, scalar>
177 return phip/(rhop*this->patch().magSf());
181 return phip/this->patch().magSf();
194 const fvMesh&
mesh = this->internalField().mesh();
200 scalar deltaT = this->db().time().deltaTValue();
203 this->db().objectRegistry::template
204 lookupObject<GeometricField<Type, fvPatchField, volMesh>>
206 this->internalField().name()
216 label patchi = this->patch().index();
233 field.oldTime().boundaryField()[patchi] +
k*fieldInf_
236 this->valueFraction() = (1.0 +
k)/(1.0 +
alpha +
k);
242 2.0*
field.oldTime().boundaryField()[patchi]
243 - 0.5*
field.oldTime().oldTime().boundaryField()[patchi]
247 this->valueFraction() = (1.5 +
k)/(1.5 +
alpha +
k);
255 fv::localEulerDdt::localRDeltaT(
mesh);
260 w*this->patch().deltaCoeffs()/rDeltaT.
boundaryField()[patchi]
268 field.oldTime().boundaryField()[patchi] +
k*fieldInf_
271 this->valueFraction() = (1.0 +
k)/(1.0 +
alpha +
k);
277 <<
" on patch " << this->patch().name()
278 <<
" of field " << this->internalField().name()
279 <<
" in file " << this->internalField().objectPath()
291 this->refValue() =
field.oldTime().boundaryField()[patchi];
293 this->valueFraction() = 1.0/(1.0 +
alpha);
299 2.0*
field.oldTime().boundaryField()[patchi]
300 - 0.5*
field.oldTime().oldTime().boundaryField()[patchi]
303 this->valueFraction() = 1.5/(1.5 +
alpha);
311 fv::localEulerDdt::localRDeltaT(
mesh);
316 w*this->patch().deltaCoeffs()/rDeltaT.
boundaryField()[patchi]
319 this->refValue() =
field.oldTime().boundaryField()[patchi];
321 this->valueFraction() = 1.0/(1.0 +
alpha);
327 <<
"\n on patch " << this->patch().name()
328 <<
" of field " << this->internalField().name()
329 <<
" in file " << this->internalField().objectPath()
352 this->writeEntry(
"value",
os);
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...
const dimensionSet & dimensions() const
Return dimensions.
Generic templated field type.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Ostream & writeEntry(const keyType &key, const T &value)
Write a keyword/value entry.
Ostream & writeEntryIfDifferent(const word &key, const T &value1, const T &value2)
Write a keyword/value entry only when the two values differ.
void size(const label n)
Older name for setAddressableSize.
This boundary condition provides an advective outflow condition, based on solving DDt(W,...
scalar lInf_
Relaxation length-scale.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Type fieldInf_
Field value of the far-field.
virtual tmp< scalarField > advectionSpeed() const
Calculate and return the advection speed at the boundary.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
bool found(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Search for an entry (const access) with the given keyword.
bool readIfPresent(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX) const
bool readEntry(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX, bool mandatory=true) const
virtual bool write()
Write the output fields.
Mesh data needed to do the Finite Volume discretisation.
A FieldMapper for finite-volume patch fields.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch as patch field.
virtual void operator=(const UList< Type > &)
const DimensionedField< Type, volMesh > & internalField() const
Return dimensioned internal field reference.
const fvPatch & patch() const
Return patch.
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.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
This boundary condition provides a base class for 'mixed' type boundary conditions,...
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)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
const dimensionSet dimArea(sqr(dimLength))
const dimensionSet dimVelocity
static constexpr const zero Zero
Global zero (0)
const dimensionSet dimDensity
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a)