lduPrimitiveMesh Class Reference

Simplest contrete lduMesh which stores the addressing needed by lduMatrix. More...

Inheritance diagram for lduPrimitiveMesh:
Collaboration diagram for lduPrimitiveMesh:

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...
 
 lduPrimitiveMesh (const lduPrimitiveMesh &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~lduPrimitiveMesh ()
 Destructor. 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...
 
void operator= (const lduPrimitiveMesh &)=delete
 Disallow default bitwise assignment. More...
 
template<class ProcPatch >
Foam::lduSchedule nonBlockingSchedule (const lduInterfacePtrsList &interfaces)
 
- Public Member Functions inherited from lduMesh
 TypeName ("lduMesh")
 Runtime type information. More...
 
virtual ~lduMesh ()
 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)
 
 lduAddressing (const lduAddressing &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~lduAddressing ()
 Destructor. More...
 
label size () const
 Return number of equations. 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...
 
void operator= (const lduAddressing &)=delete
 Disallow default bitwise assignment. 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...
 

Detailed Description

Simplest contrete lduMesh which stores the addressing needed by lduMatrix.

Source files

Definition at line 49 of file lduPrimitiveMesh.H.

Constructor & Destructor Documentation

◆ lduPrimitiveMesh() [1/4]

lduPrimitiveMesh ( const label  nCells,
labelList &  l,
labelList &  u,
const label  comm,
bool  reuse 
)

Construct from components but without interfaces. Add interfaces.

separately using addInterfaces

Definition at line 204 of file lduPrimitiveMesh.C.

References lduPrimitiveMesh::addInterfaces().

Referenced by lduPrimitiveMesh::addInterfaces(), lduPrimitiveMesh::lduPrimitiveMesh(), and procLess::operator()().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lduPrimitiveMesh() [2/4]

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 241 of file lduPrimitiveMesh.C.

References forAll, and lduPrimitiveMesh::lduPrimitiveMesh().

Here is the call graph for this function:

◆ lduPrimitiveMesh() [3/4]

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:

  • the new internal face (if boundaryMap=-1)
  • the new patch face (if boundaryMap>=0) Faces becoming internal are negative for flipped faces.

Definition at line 272 of file lduPrimitiveMesh.C.

References Foam::abort(), lduMesh::comm(), HashTableCore::end(), Foam::endl(), Foam::exit(), lduInterface::faceCells(), Foam::FatalError, FatalErrorInFunction, HashTable< T, Key, Hash >::find(), Foam::findIndex(), Foam::findIndices(), forAll, forAllConstIter(), Foam::inplaceReorder(), HashTable< T, edge, Hash< edge > >::insert(), lduMesh::interfaces(), UList< T >::last(), lduMesh::lduAddr(), lduAddressing::lowerAddr(), Foam::max(), mesh, lduPrimitiveMesh::mesh(), Foam::min(), UPstream::msgType(), processorLduInterface::myProcNo(), UPstream::myProcNo(), n, processorLduInterface::neighbProcNo(), Foam::Pout, UPtrList< T >::set(), List< T >::setSize(), UPtrList< T >::size(), List< T >::size(), lduAddressing::size(), UList< T >::size(), Foam::sortedOrder(), lduAddressing::upperAddr(), and WarningInFunction.

Here is the call graph for this function:

◆ lduPrimitiveMesh() [4/4]

lduPrimitiveMesh ( const lduPrimitiveMesh &  )
delete

Disallow default bitwise copy construction.

◆ ~lduPrimitiveMesh()

virtual ~lduPrimitiveMesh ( )
inlinevirtual

Destructor.

Definition at line 177 of file lduPrimitiveMesh.H.

Member Function Documentation

◆ ClassName()

ClassName ( "lduPrimitiveMesh"  )

◆ addInterfaces()

void addInterfaces ( lduInterfacePtrsList &  interfaces,
const lduSchedule &  ps 
)

Add interfaces to a mesh constructed without.

Definition at line 220 of file lduPrimitiveMesh.C.

References forAll, lduPrimitiveMesh::lduPrimitiveMesh(), and List< T >::setSize().

Referenced by lduPrimitiveMesh::lduPrimitiveMesh().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lduAddr()

virtual const lduAddressing& lduAddr ( ) const
inlinevirtual

Return ldu addressing.

Implements lduMesh.

Definition at line 186 of file lduPrimitiveMesh.H.

References lduPrimitiveMesh::interfaces(), and lduPrimitiveMesh::rawInterfaces().

Here is the call graph for this function:

◆ interfaces()

virtual lduInterfacePtrsList interfaces ( ) const
inlinevirtual

Return a list of pointers for each patch.

with only those pointing to interfaces being set

Implements lduMesh.

Definition at line 193 of file lduPrimitiveMesh.H.

Referenced by lduPrimitiveMesh::lduAddr().

Here is the caller graph for this function:

◆ rawInterfaces()

const lduInterfacePtrsList& rawInterfaces ( ) const
inline

Return a list of pointers for each patch.

with only those pointing to interfaces being set (reference to cached interfaces)

Definition at line 201 of file lduPrimitiveMesh.H.

Referenced by lduPrimitiveMesh::lduAddr().

Here is the caller graph for this function:

◆ comm()

virtual label comm ( ) const
inlinevirtual

Return communicator used for parallel communication.

Implements lduMesh.

Definition at line 207 of file lduPrimitiveMesh.H.

◆ lowerAddr()

virtual const labelUList& lowerAddr ( ) const
inlinevirtual

Return Lower addressing.

Implements lduAddressing.

Definition at line 213 of file lduPrimitiveMesh.H.

◆ upperAddr()

virtual const labelUList& upperAddr ( ) const
inlinevirtual

Return Upper addressing.

Implements lduAddressing.

Definition at line 219 of file lduPrimitiveMesh.H.

◆ patchAddr()

virtual const labelUList& patchAddr ( const label  i) const
inlinevirtual

Return patch addressing.

Implements lduAddressing.

Definition at line 225 of file lduPrimitiveMesh.H.

◆ patchSchedule()

virtual const lduSchedule& patchSchedule ( ) const
inlinevirtual

Return patch evaluation schedule.

Implements lduAddressing.

Definition at line 231 of file lduPrimitiveMesh.H.

References lduPrimitiveMesh::gather(), lduPrimitiveMesh::mesh(), lduPrimitiveMesh::nonBlockingSchedule(), and lduPrimitiveMesh::operator=().

Here is the call graph for this function:

◆ mesh()

const Foam::lduMesh & mesh ( const lduMesh &  mesh0,
const PtrList< lduPrimitiveMesh > &  otherMeshes,
const label  meshI 
)
static

Select either mesh0 (meshI is 0) or otherMeshes[meshI-1].

Definition at line 963 of file lduPrimitiveMesh.C.

References lduPrimitiveMesh::gather().

Referenced by lduPrimitiveMesh::lduPrimitiveMesh(), and lduPrimitiveMesh::patchSchedule().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gather()

void gather ( const label  comm,
const lduMesh &  mesh,
const labelList &  procIDs,
PtrList< lduPrimitiveMesh > &  otherMeshes 
)
static

◆ nonBlockingSchedule() [1/2]

static lduSchedule nonBlockingSchedule ( const lduInterfacePtrsList &  )
static

Get non-scheduled send/receive schedule.

Referenced by lduPrimitiveMesh::patchSchedule().

Here is the caller graph for this function:

◆ operator=()

void operator= ( const lduPrimitiveMesh &  )
delete

Disallow default bitwise assignment.

Referenced by lduPrimitiveMesh::patchSchedule().

Here is the caller graph for this function:

◆ nonBlockingSchedule() [2/2]

Foam::lduSchedule nonBlockingSchedule ( const lduInterfacePtrsList &  interfaces)

Definition at line 32 of file lduPrimitiveMeshTemplates.C.

References forAll, UPtrList< T >::set(), and UPtrList< T >::size().

Here is the call graph for this function:

The documentation for this class was generated from the following files: