38 namespace regionModels
46 void Foam::regionModels::singleLayerRegion::constructMeshObjects()
90 void Foam::regionModels::singleLayerRegion::initialise()
94 Pout<<
"singleLayerRegion::initialise()" <<
endl;
97 label nBoundaryFaces = 0;
98 const polyBoundaryMesh& rbm = regionMesh().boundaryMesh();
101 forAll(intCoupledPatchIDs_, i)
103 const label patchi = intCoupledPatchIDs_[i];
104 const polyPatch&
pp = rbm[patchi];
107 nBoundaryFaces += fCells.size();
109 UIndirectList<vector>(nHat, fCells) =
pp.faceNormals();
110 UIndirectList<scalar>(magSf, fCells) =
mag(
pp.faceAreas());
112 nHat.correctBoundaryConditions();
113 magSf.correctBoundaryConditions();
115 if (nBoundaryFaces != regionMesh().nCells())
118 <<
"Number of primary region coupled boundary faces not equal to " 119 <<
"the number of cells in the local region" <<
nl <<
nl 120 <<
"Number of cells = " << regionMesh().nCells() <<
nl 121 <<
"Boundary faces = " << nBoundaryFaces <<
nl 126 passivePatchIDs_.
setSize(intCoupledPatchIDs_.size(), -1);
127 forAll(intCoupledPatchIDs_, i)
129 const label patchi = intCoupledPatchIDs_[i];
130 const polyPatch& ppIntCoupled = rbm[patchi];
131 if (ppIntCoupled.size() > 0)
133 label
cellId = rbm[patchi].faceCells()[0];
134 const cell& cFaces = regionMesh().cells()[
cellId];
136 label facei = ppIntCoupled.start();
137 label faceO = cFaces.opposingFaceLabel(facei, regionMesh().faces());
139 label passivePatchi = rbm.whichPatch(faceO);
140 passivePatchIDs_[i] = passivePatchi;
141 const polyPatch& ppPassive = rbm[passivePatchi];
142 UIndirectList<scalar>(passiveMagSf, ppPassive.faceCells()) =
143 mag(ppPassive.faceAreas());
149 magSf.field() = 0.5*(magSf + passiveMagSf);
150 magSf.correctBoundaryConditions();
164 Foam::regionModels::singleLayerRegion::singleLayerRegion
167 const word& regionType
177 Foam::regionModels::singleLayerRegion::singleLayerRegion
180 const word& regionType,
181 const word& modelName,
192 constructMeshObjects();
216 <<
"Region patch normal vectors not available" 229 <<
"Region patch areas not available" 240 return passivePatchIDs_;
static const word & zeroGradientType() noexcept
The type name for zeroGradient patch fields.
virtual ~singleLayerRegion()
Destructor.
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...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual const labelList & passivePatchIDs() const
Return the list of patch IDs opposite to internally.
constexpr char nl
The newline '\n' character (0x0a)
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Ignore writing from objectRegistry::writeObject()
const dimensionSet dimless
Dimensionless.
GeometricField< vector, fvPatchField, volMesh > volVectorField
#define forAll(list, i)
Loop across all elements in list.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
void setSize(const label n)
Alias for resize()
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const NameMatchPredicate &selectedFields, DynamicList< regIOobject *> &storedObjects)
Read the selected GeometricFields of the templated type and store on the objectRegistry.
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
virtual bool read()
Read control parameters from dictionary.
Reading is optional [identical to LAZY_READ].
virtual const volVectorField & nHat() const
Return the patch normal vectors.
const fvMesh & regionMesh() const
Return the region mesh database.
errorManip< error > abort(error &err)
static word timeName(const scalar t, const int precision=precision_)
Return a time name for the given scalar time value formatted with the given precision.
Switch active_
Active flag.
int debug
Static debugging option.
autoPtr< volScalarField > magSfPtr_
Face area magnitudes / [m2].
virtual const volScalarField & magSf() const
Return the face area magnitudes / [m2].
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const Time & time_
Reference to the time database.
Mesh data needed to do the Finite Volume discretisation.
autoPtr< volVectorField > nHatPtr_
Patch normal vectors.
Base class for region models.
List< label > labelList
A List of labels.
defineTypeNameAndDebug(KirchhoffShell, 0)
prefixOSstream Pout
OSstream wrapped stdout (std::cout) with parallel prefix.
Do not request registration (bool: false)
const dimensionSet dimArea(sqr(dimLength))
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
static void listCombineReduce(List< T > &values, const CombineOp &cop, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
Combines List elements. After completion all processors have the same data.
virtual bool read()
Read control parameters from dictionary.
static constexpr const zero Zero
Global zero (0)