51 if (geometricD[iDir] == -1)
53 averageVol /=
bounds.span()[iDir];
56 scalar radius =
pow(averageVol, scalar(1)/scalar(
mesh_.nGeometricD()));
58 scalar multMeanRadius =
dict.getOrDefault<scalar>(
"meanRadiusMult", 10);
59 Info<<
"Computed a mean radius of " << radius
60 <<
" and multiplying with " << multMeanRadius <<
endl;
61 return multMeanRadius*radius;
67Foam::isotropic::isotropic
71 bool adjustWallThickness
81 dict_.getOrDefault<scalar>(
"radius", computeRadius(
dict))
86 if (adjustWallThickness)
88 const scalar wallThicknessMult =
89 dict.getOrDefault<scalar>(
"wallThicknessMult", 0.75);
91 "Adjusting wall thickness by " << wallThicknessMult <<
endl;
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Templated 3D Vector derived from VectorSpace adding construction from 3 components,...
A bounding box defined in terms of min/max extrema points.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
const GeometricField< Type, fvPatchField, volMesh > & psi(const label i=0) const
Return psi.
Mesh data needed to do the Finite Volume discretisation.
const DimensionedField< scalar, volMesh > & V() const
Return cell volumes.
An isotropic regularisationRadius (same in all spatial directions).
dimensionedScalar radius_
Smoothing radius of the first regulatisation.
virtual void addRegularisationTerm(fvScalarMatrix &matrix, bool isTopoField) const
Add a Laplacian term with an isotropic diffusivity.
scalar computeRadius(const dictionary &dict)
Compute smoothing radius, if not directly given.
const boundBox & bounds() const noexcept
Return mesh bounding box.
const Vector< label > & geometricD() const
Return the vector of geometric directions in mesh.
Base class for selecting the regulatisation radius.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
#define DebugInfo
Report an information message using Foam::Info.
Namespace for bounding specifications. At the moment, mostly for tables.
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Type gAverage(const FieldField< Field, Type > &f, const label comm)
The global arithmetic average of a FieldField.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
fvMatrix< scalar > fvScalarMatrix
GeometricField< scalar, fvPatchField, volMesh > volScalarField
messageStream Info
Information stream (stdout output on master, null elsewhere).
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensionedScalar sqrt(const dimensionedScalar &ds)
#define forAll(list, i)
Loop across all elements in list.