Simplest contrete lduMesh which stores the addressing needed by lduMatrix. More...
Public Member Functions | |
ClassName ("lduPrimitiveMesh") | |
lduPrimitiveMesh (const label nCells, labelList &l, labelList &u, const label comm, bool reuse) | |
Construct from components but without interfaces. Add interfaces. More... | |
void | addInterfaces (lduInterfacePtrsList &interfaces, const lduSchedule &ps) |
Add interfaces to a mesh constructed without. More... | |
lduPrimitiveMesh (const label nCells, labelList &l, labelList &u, PtrList< const lduInterface > &primitiveInterfaces, const lduSchedule &ps, const label comm) | |
Construct from components and re-use storage. More... | |
lduPrimitiveMesh (const label comm, const labelList &procAgglomMap, const labelList &procIDs, const lduMesh &myMesh, const PtrList< lduPrimitiveMesh > &otherMeshes, labelList &cellOffsets, labelList &faceOffsets, labelListList &faceMap, labelListList &boundaryMap, labelListListList &boundaryFaceMap) | |
Construct by combining multiple meshes. The meshes come from. More... | |
virtual | ~lduPrimitiveMesh ()=default |
Destructor. More... | |
virtual bool | hasDb () const |
Return true if thisDb() is a valid DB. More... | |
virtual const lduAddressing & | lduAddr () const |
Return ldu addressing. More... | |
virtual lduInterfacePtrsList | interfaces () const |
Return a list of pointers for each patch. More... | |
const lduInterfacePtrsList & | rawInterfaces () const |
Return a list of pointers for each patch. More... | |
virtual label | comm () const |
Return communicator used for parallel communication. More... | |
virtual const labelUList & | lowerAddr () const |
Return Lower addressing. More... | |
virtual const labelUList & | upperAddr () const |
Return Upper addressing. More... | |
virtual const labelUList & | patchAddr (const label i) const |
Return patch addressing. More... | |
virtual const lduSchedule & | patchSchedule () const |
Return patch evaluation schedule. More... | |
template<class ProcPatch > | |
Foam::lduSchedule | nonBlockingSchedule (const lduInterfacePtrsList &interfaces) |
Public Member Functions inherited from lduMesh | |
TypeName ("lduMesh") | |
Runtime type information. More... | |
virtual | ~lduMesh ()=default |
Destructor. More... | |
virtual const objectRegistry & | thisDb () const |
Return the object registry. More... | |
template<class T , class BinaryOp > | |
void | reduce (T &Value, const BinaryOp &bop) const |
Helper: reduce with current communicator. More... | |
InfoProxy< lduMesh > | info () const |
Return info proxy. More... | |
Public Member Functions inherited from lduAddressing | |
lduAddressing (const label nEqns) | |
Construct with size (number of equations) More... | |
virtual | ~lduAddressing () |
Destructor. More... | |
label | size () const |
Return number of equations. More... | |
void | clearOut () |
Clear additional addressing. More... | |
const labelUList & | losortAddr () const |
Return losort addressing. More... | |
const labelUList & | ownerStartAddr () const |
Return owner start addressing. More... | |
const labelUList & | losortStartAddr () const |
Return losort start addressing. More... | |
label | triIndex (const label a, const label b) const |
Return off-diagonal index given owner and neighbour label. More... | |
Tuple2< label, scalar > | band () const |
Calculate bandwidth and profile of addressing. More... | |
Static Public Member Functions | |
static const lduMesh & | mesh (const lduMesh &mesh0, const PtrList< lduPrimitiveMesh > &otherMeshes, const label meshI) |
Select either mesh0 (meshI is 0) or otherMeshes[meshI-1]. More... | |
static void | gather (const label comm, const lduMesh &mesh, const labelList &procIDs, PtrList< lduPrimitiveMesh > &otherMeshes) |
Gather meshes from other processors onto procIDs[0]. More... | |
template<class ProcPatch > | |
static lduSchedule | nonBlockingSchedule (const lduInterfacePtrsList &) |
Get non-scheduled send/receive schedule. More... | |
static labelList | upperTriOrder (const label nCells, const labelUList &lower, const labelUList &upper) |
Calculate upper-triangular order. More... | |
static void | checkUpperTriangular (const label size, const labelUList &l, const labelUList &u) |
Check if in upper-triangular ordering. More... | |
Simplest contrete lduMesh which stores the addressing needed by lduMatrix.
Definition at line 52 of file lduPrimitiveMesh.H.
Construct from components but without interfaces. Add interfaces.
separately using addInterfaces
Definition at line 205 of file lduPrimitiveMesh.C.
lduPrimitiveMesh | ( | const label | nCells, |
labelList & | l, | ||
labelList & | u, | ||
PtrList< const lduInterface > & | primitiveInterfaces, | ||
const lduSchedule & | ps, | ||
const label | comm | ||
) |
Construct from components and re-use storage.
Definition at line 242 of file lduPrimitiveMesh.C.
References forAll.
lduPrimitiveMesh | ( | const label | comm, |
const labelList & | procAgglomMap, | ||
const labelList & | procIDs, | ||
const lduMesh & | myMesh, | ||
const PtrList< lduPrimitiveMesh > & | otherMeshes, | ||
labelList & | cellOffsets, | ||
labelList & | faceOffsets, | ||
labelListList & | faceMap, | ||
labelListList & | boundaryMap, | ||
labelListListList & | boundaryFaceMap | ||
) |
Construct by combining multiple meshes. The meshes come from.
processors procIDs: procIDs[0] : local processor (myMesh) procIDs[i] : processor where otherMeshes[i-1] comes from procAgglomMap : for every processor which processor it agglomerates onto. The new processor numbers are in compact numbering (so ranks in communicator comm), i.e. similar to cell-restrict-addressing. We need this information to be able to map inter-processor interfaces cellOffsets : for every processor the offset it gets in the mesh faceMap : for every processor, for every face, the destination face. Negative for flipped faces. boundaryMap : for every processor, for every patch, -1 or the new patch index in the mesh. boundaryFaceMap : for every processor, for every patch, for every patch face:
Definition at line 273 of file lduPrimitiveMesh.C.
References Foam::abort(), lduMesh::comm(), Foam::expressions::patchExpr::debug, Foam::endl(), Foam::exit(), lduInterface::faceCells(), Foam::faceMap(), Foam::FatalError, FatalErrorInFunction, forAll, forAllConstIters(), Foam::inplaceReorder(), lduMesh::interfaces(), fvMesh::interfaces(), lduMesh::lduAddr(), lduAddressing::lowerAddr(), Foam::max(), mesh, Foam::min(), UPstream::msgType(), processorLduInterface::myProcNo(), UPstream::myProcNo(), n, processorLduInterface::neighbProcNo(), Foam::Pout, UPtrList< T >::set(), List< T >::setSize(), UList< T >::size(), UPtrList< T >::size(), lduAddressing::size(), Foam::sortedOrder(), lduAddressing::upperAddr(), WarningInFunction, and Foam::Zero.
|
virtualdefault |
Destructor.
ClassName | ( | "lduPrimitiveMesh" | ) |
void addInterfaces | ( | lduInterfacePtrsList & | interfaces, |
const lduSchedule & | ps | ||
) |
Add interfaces to a mesh constructed without.
Definition at line 221 of file lduPrimitiveMesh.C.
References forAll, and List< T >::setSize().
|
inlinevirtual |
Return true if thisDb() is a valid DB.
Implements lduMesh.
Definition at line 177 of file lduPrimitiveMesh.H.
|
inlinevirtual |
|
inlinevirtual |
Return a list of pointers for each patch.
with only those pointing to interfaces being set
Implements lduMesh.
Definition at line 190 of file lduPrimitiveMesh.H.
|
inline |
Return a list of pointers for each patch.
with only those pointing to interfaces being set (reference to cached interfaces)
Definition at line 198 of file lduPrimitiveMesh.H.
|
inlinevirtual |
Return communicator used for parallel communication.
Implements lduMesh.
Definition at line 204 of file lduPrimitiveMesh.H.
|
inlinevirtual |
Return Lower addressing.
Implements lduAddressing.
Definition at line 210 of file lduPrimitiveMesh.H.
|
inlinevirtual |
Return Upper addressing.
Implements lduAddressing.
Definition at line 216 of file lduPrimitiveMesh.H.
|
inlinevirtual |
Return patch addressing.
Implements lduAddressing.
Definition at line 222 of file lduPrimitiveMesh.H.
|
inlinevirtual |
Return patch evaluation schedule.
Implements lduAddressing.
Definition at line 228 of file lduPrimitiveMesh.H.
|
static |
Select either mesh0 (meshI is 0) or otherMeshes[meshI-1].
Definition at line 938 of file lduPrimitiveMesh.C.
|
static |
Gather meshes from other processors onto procIDs[0].
Received meshes get GAMGInterface and communicator comm
Definition at line 949 of file lduPrimitiveMesh.C.
References forAll, interface(), fvMesh::interfaces(), fvMesh::lduAddr(), lduAddressing::lowerAddr(), mesh, UPstream::msgType(), UPstream::myProcNo(), GAMGInterface::New(), lduAddressing::patchSchedule(), Foam::readLabel(), Foam::refCast(), UPstream::scheduled, PtrList< T >::set(), UPtrList< T >::set(), PtrList< T >::setSize(), UPtrList< T >::size(), lduAddressing::size(), and lduAddressing::upperAddr().
|
static |
Get non-scheduled send/receive schedule.
|
static |
Calculate upper-triangular order.
Definition at line 132 of file lduPrimitiveMesh.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::stringOps::lower(), List< T >::setSize(), Foam::sortedOrder(), Foam::stringOps::upper(), and Foam::Zero.
|
static |
Check if in upper-triangular ordering.
Definition at line 64 of file lduPrimitiveMesh.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, and UList< T >::size().
Foam::lduSchedule nonBlockingSchedule | ( | const lduInterfacePtrsList & | interfaces | ) |
Definition at line 34 of file lduPrimitiveMeshTemplates.C.
References forAll, UPtrList< T >::set(), and UPtrList< T >::size().