49 extrapolateProfile_(false)
63 rhoInlet_(
dict.getOrDefault<scalar>(
"rhoInlet", -VGREAT)),
67 dict.getOrDefault<
Switch>(
"extrapolateProfile", false)
70 if (
dict.found(
"volumetricFlowRate"))
76 else if (
dict.found(
"massFlowRate"))
79 flowRate_ = Function1<scalar>::New(
"massFlowRate",
dict, &db());
80 rhoName_ =
dict.getOrDefault<word>(
"rho",
"rho");
85 <<
"Please supply either 'volumetricFlowRate' or" 86 <<
" 'massFlowRate' and 'rho'" <<
nl 91 if (
dict.found(
"value"))
108 const flowRateInletVelocityFvPatchVectorField& ptf,
110 const DimensionedField<vector, volMesh>& iF,
111 const fvPatchFieldMapper& mapper
114 fixedValueFvPatchField<
vector>(ptf,
p, iF, mapper),
115 flowRate_(ptf.flowRate_.clone()),
116 rhoName_(ptf.rhoName_),
117 rhoInlet_(ptf.rhoInlet_),
118 volumetric_(ptf.volumetric_),
119 extrapolateProfile_(ptf.extrapolateProfile_)
130 flowRate_(ptf.flowRate_.clone()),
131 rhoName_(ptf.rhoName_),
132 rhoInlet_(ptf.rhoInlet_),
133 volumetric_(ptf.volumetric_),
134 extrapolateProfile_(ptf.extrapolateProfile_)
146 flowRate_(ptf.flowRate_.clone()),
147 rhoName_(ptf.rhoName_),
148 rhoInlet_(ptf.rhoInlet_),
149 volumetric_(ptf.volumetric_),
150 extrapolateProfile_(ptf.extrapolateProfile_)
156 template<
class RhoType>
157 void Foam::flowRateInletVelocityFvPatchVectorField::updateValues
162 const scalar t = db().time().timeOutputValue();
166 if (extrapolateProfile_)
177 nUp =
min(nUp, scalar(0));
179 const scalar flowRate = flowRate_->value(t);
180 const scalar estimatedFlowRate = -
gSum(
rho*(this->
patch().magSf()*nUp));
182 if (estimatedFlowRate > 0.5*flowRate)
184 nUp *= (
mag(flowRate)/
mag(estimatedFlowRate));
188 nUp -= ((flowRate - estimatedFlowRate)/
gSum(
rho*
patch().magSf()));
199 const scalar avgU = -flowRate_->value(t)/
gSum(
rho*
patch().magSf());
212 if (volumetric_ || rhoName_ ==
"none")
219 if (db().foundObject<volScalarField>(rhoName_))
221 const fvPatchField<scalar>& rhop =
232 <<
"Did not find registered density field " << rhoName_
233 <<
" and no constant density 'rhoInlet' specified" 237 updateValues(rhoInlet_);
241 fixedValueFvPatchVectorField::updateCoeffs();
248 flowRate_->writeData(
os);
254 if (extrapolateProfile_)
256 os.
writeEntry(
"extrapolateProfile", extrapolateProfile_);
258 writeEntry(
"value",
os);
269 flowRateInletVelocityFvPatchVectorField
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
"blocking" : (MPI_Bsend, MPI_Recv)
fvPatchField< vector > fvPatchVectorField
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
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.
friend Ostream & operator(Ostream &, const fvPatchField< Type > &)
constexpr char nl
The newline '\n' character (0x0a)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
A simple wrapper around bool so that it can be read as a word: true/false, on/off, yes/no, any/none. Also accepts 0/1 as a string and shortcuts t/f, y/n.
Ostream & writeEntry(const keyType &key, const T &value)
Write a keyword/value entry.
virtual void write(Ostream &) const
Write.
virtual void write(Ostream &) const
Write.
Macros for easy insertion into run-time selection tables.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Type gSum(const FieldField< Field, Type > &f)
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
flowRateInletVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
string evaluate(label fieldWidth, const std::string &s, size_t pos=0, size_t len=std::string::npos)
String evaluation with specified (positive, non-zero) field width.
Velocity inlet boundary condition either correcting the extrapolated velocity or creating a uniform v...
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Ostream & writeEntryIfDifferent(const word &key, const T &value1, const T &value2)
Write a keyword/value entry only when the two values differ.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
OBJstream os(runTime.globalPath()/outputName)
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
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.
Field< vector > vectorField
Specialisation of Field<T> for vector.
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
makePatchTypeField(fvPatchScalarField, atmBoundaryLayerInletEpsilonFvPatchScalarField)
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...