45 interRegionExplicitPorositySource,
60 const word zoneName(
name_ +
":porous");
72 cz.setSize(zoneID + 1);
80 nbrMesh.faceNeighbour(),
91 <<
"Unable to create porous cellZone " << zoneName
92 <<
": zone already exists" 116 const word& modelType,
122 porosityPtr_(nullptr),
124 UName_(coeffs_.getOrDefault<
word>(
"U",
"U")),
125 muName_(coeffs_.getOrDefault<
word>(
"mu",
"thermo:mu"))
145 const auto& nbrMesh = mesh_.time().lookupObject<
fvMesh>(nbrRegionName_);
154 nbrMesh.time().timeName(),
164 meshInterp().mapSrcToTgt
173 porosityPtr_->addResistance(nbrEqn);
180 Udiag.setSize(eqn.
diag().size(), 0.0);
199 const auto& nbrMesh = mesh_.time().lookupObject<
fvMesh>(nbrRegionName_);
208 nbrMesh.time().timeName(),
218 meshInterp().mapSrcToTgt
232 nbrMesh.time().timeName(),
246 nbrMesh.time().timeName(),
258 meshInterp().mapSrcToTgt
260 rho.primitiveField(),
262 rhoNbr.primitiveFieldRef()
266 meshInterp().mapSrcToTgt
270 muNbr.primitiveFieldRef()
273 porosityPtr_->addResistance(nbrEqn, rhoNbr, muNbr);
280 Udiag.setSize(eqn.
diag().size(), 0.0);
294 coeffs_.readIfPresent(
"U", UName_);
295 coeffs_.readIfPresent(
"mu", muName_);
void size(const label n)
Older name for setAddressableSize.
const Type & lookupObject(const word &name, const bool recursive=false) const
Lookup and return const reference to the object of the given Type. Fatal if not found or the wrong ty...
Intermediate class for handling inter-region exchanges.
virtual bool read(const dictionary &dict)
Read dictionary.
wordList fieldNames_
Field names to apply source to - populated by derived models.
void resize(const label len)
Adjust allocated size of list.
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...
defineTypeNameAndDebug(atmAmbientTurbSource, 0)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const fvMesh & mesh_
Reference to the mesh database.
virtual void addSup(fvMatrix< vector > &eqn, const label fieldi)
Vector.
const dimensionSet dimViscosity
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
static autoPtr< porosityModel > New(const word &name, const fvMesh &mesh, const dictionary &dict, const wordRe &cellZoneName=wordRe::null)
Selector.
Ignore writing from objectRegistry::writeObject()
const Time & time() const
Return the top-level database.
Macros for easy insertion into run-time selection tables.
virtual bool read(const dictionary &dict)
Read dictionary.
const GeometricField< Type, fvPatchField, volMesh > & psi(const label i=0) const
Return psi.
void setSize(const label n)
Alias for resize()
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
label findZoneID(const word &zoneName) const
Find zone index by name, return -1 if not found.
const word name_
Source name.
A class for handling words, derived from Foam::string.
word UName_
Name of operand velocity field.
label size() const noexcept
The number of elements in the list.
interRegionExplicitPorositySource(const word &name, const word &modelType, const dictionary &dict, const fvMesh &mesh)
Construct from components.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
word nbrRegionName_
Name of the neighbour region to map.
errorManip< error > abort(error &err)
addToRunTimeSelectionTable(option, atmAmbientTurbSource, dictionary)
void initialise()
Initialise.
const dimensionSet dimDensity
autoPtr< porosityModel > porosityPtr_
Run-time selectable porosity model.
const dimensionedScalar mu
Atomic mass unit.
Field< Type > & source() noexcept
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
Return a reference to the internal field values.
const dimensionSet & dimensions() const noexcept
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Mesh data needed to do the Finite Volume discretisation.
void resetApplied()
Resize/reset applied flag list for all fieldNames_ entries.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
Defines the attributes of an object for which implicit objectRegistry management is supported...
dictionary coeffs_
Dictionary containing source coefficients.
bool active_
Source active flag.
ZoneMesh< cellZone, polyMesh > cellZoneMesh
A ZoneMesh with the type cellZone.
bool firstIter_
First iteration.
static constexpr const zero Zero
Global zero (0)