70 const scalar a =
aZone_[i];
76 for (label zonei : zones)
80 for (label celli : cz)
105 auto& inertiaCoeff = tinertiaCoeff.ref();
111 const scalar a = aZone_[i];
112 const scalar
N = NZone_[i];
113 const scalar Cm = CmZone_[i];
117 for (label zonei : zones)
119 const cellZone& cz = mesh_.cellZones()[zonei];
121 for (label celli : cz)
123 inertiaCoeff[celli] = 0.25*(Cm+1)*
pi*a*a*
N;
128 inertiaCoeff.correctBoundaryConditions();
130 return tinertiaCoeff;
136Foam::fv::multiphaseMangrovesSource::multiphaseMangrovesSource
139 const word& modelType,
199 if (!coeffs_.readIfPresent(
"UNames", fieldNames_))
201 fieldNames_.resize(1);
202 fieldNames_.first() = coeffs_.getOrDefault<
word>(
"U",
"U");
207 const dictionary& regionsDict(coeffs_.subDict(
"regions"));
220 const word zoneName(modelDict.
get<
word>(
"cellZone"));
222 zoneIDs_[i] = mesh_.cellZones().indices(zoneName);
223 if (zoneIDs_[i].empty())
226 <<
"Unable to find cellZone " << zoneName <<
nl
227 <<
"Valid cellZones are:" << mesh_.cellZones().names()
constexpr scalar pi(M_PI)
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const word &patchFieldType=fvPatchField< scalar >::calculatedType())
@ NO_REGISTER
Do not request registration (bool: false).
static word scopedName(const std::string &scope, const word &name)
Create scope:name or scope_name string.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
T get(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a T. FatalIOError if not found, or if the number of tokens is incorrect.
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
bool readEntry(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX, IOobjectOption::readOption readOpt=IOobjectOption::MUST_READ) const
Find entry and assign to T val. FatalIOError if it is found and the number of tokens is incorrect,...
wordList toc() const
Return the table of contents.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
const GeometricField< Type, fvPatchField, volMesh > & psi(const label i=0) const
Return psi.
Mesh data needed to do the Finite Volume discretisation.
labelListList zoneIDs_
Porosity coefficient.
virtual bool read(const dictionary &dict)
Read dictionary.
tmp< volScalarField > dragCoeff(const volVectorField &U) const
Return the drag force coefficient.
scalarList aZone_
Width of the vegetation element.
tmp< volScalarField > inertiaCoeff() const
Return the inertia force coefficient.
scalarList NZone_
Number of plants per unit of area.
virtual void addSup(fvMatrix< vector > &eqn, const label fieldi)
Add implicit contribution to momentum equation.
scalarList CmZone_
Inertia coefficient.
scalarList CdZone_
Drag coefficient.
Base abstract class for handling finite volume options (i.e. fvOption).
const word & name() const noexcept
Return const access to the source name.
const fvMesh & mesh_
Reference to the mesh database.
wordList fieldNames_
Field names to apply source to - populated by derived models.
option(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
Construct from components.
virtual bool read(const dictionary &dict)
Read source dictionary.
dictionary coeffs_
Dictionary containing source coefficients.
void resetApplied()
Resize/reset applied flag list for all fieldNames_ entries.
const fvMesh & mesh() const noexcept
Return const access to the mesh database.
const cellZoneMesh & cellZones() const noexcept
Return cell zone mesh.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Foam::word regionName(args.getOrDefault< word >("region", Foam::polyMesh::defaultRegion))
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
Calculate the matrix for the first temporal derivative.
Calculate the finiteVolume matrix for implicit and explicit sources.
constexpr scalar pi(M_PI)
Namespace for finite-volume.
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
zeroField Sp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
List< word > wordList
List of word.
GeometricField< vector, fvPatchField, volMesh > volVectorField
const dimensionSet dimless
Dimensionless.
bool read(const char *buf, int32_t &val)
Same as readInt32.
List< label > labelList
A List of labels.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static constexpr const zero Zero
Global zero (0).
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a).
#define forAll(list, i)
Loop across all elements in list.
const Vector< label > N(dict.get< Vector< label > >("N"))