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()
199 Up = alphaFilm*UFilm + (1.0 - alphaFilm)*UAvePyr*nf;
203 fixedValueFvPatchVectorField::updateCoeffs();
213 os.writeEntryIfDifferent<
word>
216 "surfaceFilmProperties",
219 os.writeEntryIfDifferent<
word>
222 "pyrolysisProperties",
225 os.writeEntryIfDifferent<
word>(
"phi",
"phi", phiName_);
226 os.writeEntryIfDifferent<
word>(
"rho",
"rho", rhoName_);
238 filmPyrolysisVelocityCoupledFvPatchVectorField
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...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
static int & msgType() noexcept
Message tag of standard messages.
static int incrMsgType(int val=1) noexcept
Increment the message tag for standard messages.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
This boundary condition is designed to be used in conjunction with surface film and pyrolysis modelli...
virtual void write(Ostream &) const
Write.
filmPyrolysisVelocityCoupledFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
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.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
const Type * findObject(const word &name, const bool recursive=false) const
Return const pointer to the object of the given Type.
Base class for pyrolysis models.
const Time & time() const noexcept
Return the reference to the time database.
Base class for surface film models.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
OBJstream os(runTime.globalPath()/outputName)
#define makePatchTypeField(PatchTypeField, typePatchTypeField)
Define a concrete fvPatchField type and add to run-time tables Example, (fvPatchScalarField,...
const std::string patch
OpenFOAM patch number as a std::string.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Field< vector > vectorField
Specialisation of Field<T> for vector.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
const dimensionSet dimVolume(pow3(dimLength))
errorManipArg< error, int > exit(error &err, const int errNo=1)
fvPatchField< vector > fvPatchVectorField
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
constexpr char nl
The newline '\n' character (0x0a).