Base class Lagrangian communicator for the Eulerian-Lagrangian coupling. More...
#include <LagrangianComm.h>
Public Types | |
typedef Base::Number | Number |
The number type. | |
Public Member Functions | |
Constructors etc. | |
LagrangianComm (const MPI_Comm comm, const MPI_Comm lagrangian, const int eulerianSize, const int eulerianRoot, VertexIdentifierStyle vertexIdentifierStyle) | |
Construct from the communicators and Eulerian information. | |
virtual | ~LagrangianComm () |
Destructor. Free the communicator. | |
Communication. | |
void | sendMesh (const int numNodes, const void *identifiers, const void *positions, const void *velocities, const int numFaces, const void *connectivities) |
Post sends for sending the local Lagrangian mesh to the relevant Eulerian processors. | |
void | waitForMesh () |
Wait for the sends to complete. | |
void | receivePressure (const int numPoints, void *pressures) |
Post receives for the pressure from the relevant Eulerian processors. | |
void | waitForPressure () |
Wait for the pressure receives to complete. Composite the pressures. | |
Protected Types | |
typedef Base::Point | Point |
A Cartesian point. | |
typedef Base::BBox | BBox |
A bounding box. | |
typedef Base::MpiRequest | MpiRequest |
An MPI request. | |
typedef Base::MpiStatus | MpiStatus |
Status for an MPI request. |
Base class Lagrangian communicator for the Eulerian-Lagrangian coupling.
N | is the space dimension. 1, 2 and 3 are supported. | |
T | is the floating point number type. |
Implements the common functionality for boundaries and shells.
LagrangianComm< N, T >::LagrangianComm | ( | const MPI_Comm | comm, | |
const MPI_Comm | lagrangian, | |||
const int | eulerianSize, | |||
const int | eulerianRoot, | |||
VertexIdentifierStyle | vertexIdentifierStyle | |||
) | [inline] |
Construct from the communicators and Eulerian information.
comm | is the communicator that contains the Eulerian and Lagrangian processors. | |
lagrangian | is the Lagrangian communicator. It is duplicated to avoid message conflicts. | |
eulerianSize | is the number of Eulerian processors. | |
eulerianRoot | is the rank of the Eulerian root in comm . | |
vertexIdentifierStyle | is either LocalIndices or GlobalIdentifiers. |
void LagrangianComm< N, T >::sendMesh | ( | const int | numNodes, | |
const void * | identifiers, | |||
const void * | positions, | |||
const void * | velocities, | |||
const int | numFaces, | |||
const void * | connectivities | |||
) |
Post sends for sending the local Lagrangian mesh to the relevant Eulerian processors.
numNodes | is the number of nodes in the mesh. | |
identifiers | are the global mesh node identifiers. | |
positions | are the meh node positions. This is an array of N-tuples of numbers. Each N-tuple is a Cartesian point. | |
velocities | are the mesh node velocities. | |
numFaces | is the number of faces in the mesh. | |
connectivities | describes the connectivites of the nodes to form faces. This is an array of N-tuples of integers. Each N-tuple represents on indexed face (line segment in 2-D, triangle in 3-D). If the vertex identifier style is LocalIndices , then each index is in the range [0..numFaces). If the style is GlobalIdentifers , then each element of connectivities is listed in the identifiers array. |