Go to the documentation of this file.
38 namespace regionModels
46 void Foam::regionModels::singleLayerRegion::constructMeshObjects()
63 zeroGradientFvPatchField<vector>::typeName
82 zeroGradientFvPatchField<scalar>::typeName
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];
103 const labelList& fCells = pp.faceCells();
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());
148 magSf.field() = 0.5*(magSf + passiveMagSf);
149 magSf.correctBoundaryConditions();
163 Foam::regionModels::singleLayerRegion::singleLayerRegion
166 const word& regionType
176 Foam::regionModels::singleLayerRegion::singleLayerRegion
179 const word& regionType,
180 const word& modelName,
191 constructMeshObjects();
215 <<
"Region patch normal vectors not available"
228 <<
"Region patch areas not available"
239 return passivePatchIDs_;
int debug
Static debugging option.
virtual const labelList & passivePatchIDs() const
Return the list of patch IDs opposite to internally.
List< label > labelList
A List of labels.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
A class for handling words, derived from Foam::string.
defineTypeNameAndDebug(KirchhoffShell, 0)
static constexpr const zero Zero
Global zero (0)
virtual ~singleLayerRegion()
Destructor.
bool read(const char *buf, int32_t &val)
Same as readInt32.
static word timeName(const scalar t, const int precision=precision_)
IOobject(const IOobject &)=default
Copy construct.
Ostream & endl(Ostream &os)
Add newline and flush stream.
prefixOSstream Pout
OSstream wrapped stdout (std::cout) with parallel prefix.
#define forAll(list, i)
Loop across all elements in list.
Base class for region models.
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
const dimensionSet dimArea(sqr(dimLength))
autoPtr< volScalarField > magSfPtr_
Face area magnitudes / [m2].
virtual const volScalarField & magSf() const
Return the face area magnitudes / [m2].
const fvMesh & regionMesh() const
Return the region mesh database.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
virtual bool read()
Read control parameters from dictionary.
Mesh data needed to do the Finite Volume discretisation.
errorManip< error > abort(error &err)
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
GeometricField< vector, fvPatchField, volMesh > volVectorField
static void listCombineGather(const List< commsStruct > &comms, List< T > &Value, const CombineOp &cop, const int tag, const label comm)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const Time & time_
Reference to the time database.
autoPtr< volVectorField > nHatPtr_
Patch normal vectors.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
virtual const volVectorField & nHat() const
Return the patch normal vectors.
static void listCombineScatter(const List< commsStruct > &comms, List< T > &Value, const int tag, const label comm)
Scatter data. Reverse of combineGather.
virtual bool read()
Read control parameters from dictionary.
const dimensionSet dimless
Dimensionless.