Public Member Functions | Static Public Member Functions | List of all members
lduPrimitiveMesh Class Reference

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

Inheritance diagram for lduPrimitiveMesh:
Inheritance graph
[legend]
Collaboration diagram for lduPrimitiveMesh:
Collaboration graph
[legend]

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 ()
 Destructor. More...
 
virtual const lduAddressinglduAddr () const
 Return ldu addressing. More...
 
virtual lduInterfacePtrsList interfaces () const
 Return a list of pointers for each patch. More...
 
const lduInterfacePtrsListrawInterfaces () const
 Return a list of pointers for each patch. More...
 
virtual label comm () const
 Return communicator used for parallel communication. More...
 
virtual const labelUListlowerAddr () const
 Return Lower addressing. More...
 
virtual const labelUListupperAddr () const
 Return Upper addressing. More...
 
virtual const labelUListpatchAddr (const label i) const
 Return patch addressing. More...
 
virtual const lduSchedulepatchSchedule () 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 ()
 Destructor. More...
 
virtual const objectRegistrythisDb () 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< lduMeshinfo () const
 Return info proxy. More...
 
- Public Member Functions inherited from lduAddressing
 lduAddressing (const label nEqns)
 
virtual ~lduAddressing ()
 Destructor. More...
 
label size () const
 Return number of equations. More...
 
const labelUListlosortAddr () const
 Return losort addressing. More...
 
const labelUListownerStartAddr () const
 Return owner start addressing. More...
 
const labelUListlosortStartAddr () 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 lduMeshmesh (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 ( 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().

Here is the call graph for this function:

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.

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(), List< T >::size(), UPtrList< T >::size(), lduAddressing::size(), UList< T >::size(), Foam::sortedOrder(), lduAddressing::upperAddr(), and WarningInFunction.

Here is the call graph for this function:

virtual ~lduPrimitiveMesh ( )
inlinevirtual

Destructor.

Definition at line 179 of file lduPrimitiveMesh.H.

Member Function Documentation

ClassName ( "lduPrimitiveMesh"  )
void addInterfaces ( lduInterfacePtrsList interfaces,
const lduSchedule ps 
)

Add interfaces to a mesh constructed without.

Definition at line 220 of file lduPrimitiveMesh.C.

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

Referenced by lduPrimitiveMesh::lduPrimitiveMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual const lduAddressing& lduAddr ( ) const
inlinevirtual

Return ldu addressing.

Implements lduMesh.

Definition at line 188 of file lduPrimitiveMesh.H.

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

Here is the call graph for this function:

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 195 of file lduPrimitiveMesh.H.

Referenced by lduPrimitiveMesh::lduAddr().

Here is the caller graph for this function:

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 203 of file lduPrimitiveMesh.H.

Referenced by lduPrimitiveMesh::lduAddr().

Here is the caller graph for this function:

virtual label comm ( ) const
inlinevirtual

Return communicator used for parallel communication.

Implements lduMesh.

Definition at line 209 of file lduPrimitiveMesh.H.

virtual const labelUList& lowerAddr ( ) const
inlinevirtual

Return Lower addressing.

Implements lduAddressing.

Definition at line 215 of file lduPrimitiveMesh.H.

virtual const labelUList& upperAddr ( ) const
inlinevirtual

Return Upper addressing.

Implements lduAddressing.

Definition at line 221 of file lduPrimitiveMesh.H.

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

Return patch addressing.

Implements lduAddressing.

Definition at line 227 of file lduPrimitiveMesh.H.

virtual const lduSchedule& patchSchedule ( ) const
inlinevirtual

Return patch evaluation schedule.

Implements lduAddressing.

Definition at line 233 of file lduPrimitiveMesh.H.

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

Here is the call graph for this function:

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:

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

Get non-scheduled send/receive schedule.

Referenced by lduPrimitiveMesh::patchSchedule().

Here is the caller graph for this function:

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: