44 fixedValueFvPatchVectorField(
p, iF),
45 filmRegionName_(
"surfaceFilmProperties"),
46 pyrolysisRegionName_(
"pyrolysisProperties"),
61 fixedValueFvPatchVectorField(ptf,
p, iF, mapper),
62 filmRegionName_(ptf.filmRegionName_),
63 pyrolysisRegionName_(ptf.pyrolysisRegionName_),
64 phiName_(ptf.phiName_),
65 rhoName_(ptf.rhoName_)
77 fixedValueFvPatchVectorField(
p, iF,
dict),
80 dict.getOrDefault<
word>(
"filmRegion",
"surfaceFilmProperties")
84 dict.getOrDefault<
word>(
"pyrolysisRegion",
"pyrolysisProperties")
86 phiName_(
dict.getOrDefault<
word>(
"phi",
"phi")),
87 rhoName_(
dict.getOrDefault<
word>(
"rho",
"rho"))
97 fixedValueFvPatchVectorField(fpvpvf),
98 filmRegionName_(fpvpvf.filmRegionName_),
99 pyrolysisRegionName_(fpvpvf.pyrolysisRegionName_),
100 phiName_(fpvpvf.phiName_),
101 rhoName_(fpvpvf.rhoName_)
112 fixedValueFvPatchVectorField(fpvpvf, iF),
113 filmRegionName_(fpvpvf.filmRegionName_),
114 pyrolysisRegionName_(fpvpvf.pyrolysisRegionName_),
115 phiName_(fpvpvf.phiName_),
116 rhoName_(fpvpvf.rhoName_)
130 const auto* filmModelPtr = db().time().findObject
131 <regionModels::surfaceFilmModels::surfaceFilmRegionModel>
135 const auto* pyrModelPtr = db().time().findObject
136 <regionModels::pyrolysisModels::pyrolysisModel>
137 (pyrolysisRegionName_);
140 if (!filmModelPtr || !pyrModelPtr)
146 const auto& filmModel = *filmModelPtr;
147 const auto& pyrModel = *pyrModelPtr;
156 const label patchi =
patch().index();
159 const label filmPatchi = filmModel.regionPatchID(patchi);
161 scalarField alphaFilm = filmModel.alpha().boundaryField()[filmPatchi];
162 filmModel.toPrimary(filmPatchi, alphaFilm);
164 vectorField UFilm = filmModel.Us().boundaryField()[filmPatchi];
165 filmModel.toPrimary(filmPatchi, UFilm);
168 const label pyrPatchi = pyrModel.regionPatchID(patchi);
170 scalarField phiPyr = pyrModel.phiGas().boundaryField()[pyrPatchi];
171 pyrModel.toPrimary(pyrPatchi, phiPyr);
186 <<
"Unable to process flux field phi with dimensions " 187 <<
phi.dimensions() <<
nl 188 <<
" on patch " <<
patch().name()
189 <<
" of field " << internalField().name()
190 <<
" in file " << internalField().objectPath()
195 tmp<vectorField> nf(
patch().nf());
199 Up = alphaFilm*UFilm + (1.0 - alphaFilm)*UAvePyr*nf;
203 fixedValueFvPatchVectorField::updateCoeffs();
216 "surfaceFilmProperties",
222 "pyrolysisProperties",
238 filmPyrolysisVelocityCoupledFvPatchVectorField
This boundary condition is designed to be used in conjunction with surface film and pyrolysis modelli...
fvPatchField< vector > fvPatchVectorField
virtual void write(Ostream &) const
Write.
errorManipArg< error, int > exit(error &err, const int errNo=1)
static int incrMsgType(int val=1) noexcept
Increment the message tag for standard messages.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
constexpr char nl
The newline '\n' character (0x0a)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
static int & msgType() noexcept
Message tag of standard messages.
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
virtual void write(Ostream &) const
Write.
Macros for easy insertion into run-time selection tables.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const dimensionSet dimVolume(pow3(dimLength))
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
A FieldMapper for finite-volume patch fields.
Ostream & writeEntryIfDifferent(const word &key, const T &value1, const T &value2)
Write a keyword/value entry only when the two values differ.
filmPyrolysisVelocityCoupledFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
OBJstream os(runTime.globalPath()/outputName)
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const std::string patch
OpenFOAM patch number as a std::string.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Field< vector > vectorField
Specialisation of Field<T> for vector.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
makePatchTypeField(fvPatchScalarField, atmBoundaryLayerInletEpsilonFvPatchScalarField)