38 namespace regionModels
46 void Foam::regionModels::singleLayerRegion::constructMeshObjects()
88 void Foam::regionModels::singleLayerRegion::initialise()
92 Pout<<
"singleLayerRegion::initialise()" <<
endl;
95 label nBoundaryFaces = 0;
96 const polyBoundaryMesh& rbm = regionMesh().boundaryMesh();
99 forAll(intCoupledPatchIDs_, i)
101 const label patchi = intCoupledPatchIDs_[i];
102 const polyPatch&
pp = rbm[patchi];
105 nBoundaryFaces += fCells.size();
107 UIndirectList<vector>(nHat, fCells) =
pp.faceNormals();
108 UIndirectList<scalar>(magSf, fCells) =
mag(
pp.faceAreas());
110 nHat.correctBoundaryConditions();
111 magSf.correctBoundaryConditions();
113 if (nBoundaryFaces != regionMesh().nCells())
116 <<
"Number of primary region coupled boundary faces not equal to " 117 <<
"the number of cells in the local region" <<
nl <<
nl 118 <<
"Number of cells = " << regionMesh().nCells() <<
nl 119 <<
"Boundary faces = " << nBoundaryFaces <<
nl 124 passivePatchIDs_.
setSize(intCoupledPatchIDs_.size(), -1);
125 forAll(intCoupledPatchIDs_, i)
127 const label patchi = intCoupledPatchIDs_[i];
128 const polyPatch& ppIntCoupled = rbm[patchi];
129 if (ppIntCoupled.size() > 0)
131 label
cellId = rbm[patchi].faceCells()[0];
132 const cell& cFaces = regionMesh().cells()[
cellId];
134 label facei = ppIntCoupled.start();
135 label faceO = cFaces.opposingFaceLabel(facei, regionMesh().faces());
137 label passivePatchi = rbm.whichPatch(faceO);
138 passivePatchIDs_[i] = passivePatchi;
139 const polyPatch& ppPassive = rbm[passivePatchi];
140 UIndirectList<scalar>(passiveMagSf, ppPassive.faceCells()) =
141 mag(ppPassive.faceAreas());
147 magSf.field() = 0.5*(magSf + passiveMagSf);
148 magSf.correctBoundaryConditions();
162 Foam::regionModels::singleLayerRegion::singleLayerRegion
165 const word& regionType
175 Foam::regionModels::singleLayerRegion::singleLayerRegion
178 const word& regionType,
179 const word& modelName,
190 constructMeshObjects();
214 <<
"Region patch normal vectors not available" 227 <<
"Region patch areas not available" 238 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.
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)
After completion all processors have the same data.
virtual bool read()
Read control parameters from dictionary.
static constexpr const zero Zero
Global zero (0)