Go to the documentation of this file.
50 (KsPlus - 2.25)/87.75 +
Cs*KsPlus,
51 sin(0.4258*(
log(KsPlus) - 0.811))
56 return (1.0 +
Cs*KsPlus);
64 const label patchi =
patch().index();
71 internalField().
group()
75 const tmp<volScalarField> tk = turbModel.k();
77 const tmp<scalarField> tnuw = turbModel.nu(patchi);
80 const scalar Cmu25 =
pow025(Cmu_);
87 const label celli =
patch().faceCells()[facei];
89 const scalar uStar = Cmu25*
sqrt(
k[celli]);
90 const scalar
yPlus = uStar*
y[facei]/nuw[facei];
91 const scalar KsPlus = uStar*Ks_[facei]/nuw[facei];
96 Edash /= fnRough(KsPlus, Cs_[facei]);
99 const scalar limitingNutw =
max(nutw[facei], nuw[facei]);
117 <<
", KsPlus = " << KsPlus
118 <<
", Edash = " << Edash
119 <<
", nutw = " << nutw[facei]
153 Ks_(ptf.Ks_, mapper),
168 Cs_(
"Cs",
dict,
p.size())
204 nutkWallFunctionFvPatchScalarField::autoMap(m);
216 nutkWallFunctionFvPatchScalarField::rmap(ptf, addr);
219 refCast<const nutkRoughWallFunctionFvPatchScalarField>(ptf);
221 Ks_.rmap(nrwfpsf.
Ks_, addr);
222 Cs_.rmap(nrwfpsf.
Cs_, addr);
232 writeLocalEntries(
os);
233 Cs_.writeEntry(
"Cs",
os);
234 Ks_.writeEntry(
"Ks",
os);
235 writeEntry(
"value",
os);
246 nutkRoughWallFunctionFvPatchScalarField
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
fvPatchField< scalar > fvPatchScalarField
virtual void write(Ostream &) const
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
virtual tmp< volScalarField > nu() const =0
virtual void write(Ostream &) const
constexpr const char *const group
A class for managing temporary objects.
static constexpr const zero Zero
dimensionedScalar sin(const dimensionedScalar &ds)
virtual scalar fnRough(const scalar KsPlus, const scalar Cs) const
static const word propertiesName
Ostream & endl(Ostream &os)
const nearWallDist & y() const
virtual void rmap(const fvPatchScalarField &, const labelList &)
label min(const labelHashSet &set, label minValue=labelMax)
dimensionedScalar pow025(const dimensionedScalar &ds)
Generic templated field type.
ThermalDiffusivity< CompressibleTurbulenceModel< fluidThermo > > turbulenceModel
nutkRoughWallFunctionFvPatchScalarField(const fvPatch &, const DimensionedField< scalar, volMesh > &)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
virtual void autoMap(const fvPatchFieldMapper &)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
virtual tmp< scalarField > yPlus() const
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
label max(const labelHashSet &set, label maxValue=labelMin)
Abstract base class for turbulence models (RAS, LES and laminar).
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
dimensionedScalar log(const dimensionedScalar &ds)
OBJstream os(runTime.globalPath()/outputName)
Macros for easy insertion into run-time selection tables.
virtual tmp< volScalarField > k() const =0
This boundary condition provides a wall constraint on the turbulent viscosity, i.e....
static const nutWallFunctionFvPatchScalarField & nutw(const turbulenceModel &turbModel, const label patchi)
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
dimensionedScalar sqrt(const dimensionedScalar &ds)
const dimensionedScalar e
virtual tmp< scalarField > calcNut() const
Foam::fvPatchFieldMapper.
static word groupName(StringType base, const word &group)
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
makePatchTypeField(fvPatchScalarField, atmBoundaryLayerInletEpsilonFvPatchScalarField)
Generic GeometricField class.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
This boundary condition provides a wall constraint on the turbulent viscosity, i.e....