Eulerian communicator for the Eulerian-Lagrangian coupling for a shell. More...
#include <EulerianCommShell.h>
Public Types | |
typedef T | Number |
The number type. | |
Public Member Functions | |
Constructors etc. | |
EulerianCommShell (const MPI_Comm comm, const MPI_Comm eulerian, const int lagrangianSize, const int lagrangianRoot, VertexIdentifierStyle vertexIdentifierStyle) | |
Construct from the communicators and Lagrangian info. | |
virtual | ~EulerianCommShell () |
Destructor. | |
Communication. | |
virtual void | sendPressure () |
Start sending the pressure to the relevant solid processors. | |
virtual void | waitForPressure () |
Wait for the pressure sends to be copied into communication buffers. | |
Protected Member Functions | |
virtual void | initializePressure () |
Initialize the pressure at the faces. |
Eulerian communicator for the Eulerian-Lagrangian coupling for a shell.
N | is the space dimension. 2 and 3 are supported. | |
T | is the floating point number type. By default it is double. |
This class is instantiated in each Eulerian (fluid) processor. The relevant portions of the solid shell are received from the solid processors with either receiveMesh(const BBox& domain) or receiveMesh(const Number* domain) followed by a call to waitForMesh().
One can access the node positions with either getPositions() or getPositionsData(); the node velocities can be access with getVelocities() or getVelocitiesData(); the face normals and centroids can be accessed with getFaceNormals() and getFaceCentroids(). For each face that lies within this processor's computational domain, it must set the pressure difference across the face. (The face is in the computational domain if the centroid is in the domain.) The pressure differences may be manipulated through getPressures() or getPressuresData().
After the pressures have been set, they are sent to the relevant Lagrangian processors with sendPressure() and waitForPressure().
EulerianCommShell< N, T >::EulerianCommShell | ( | const MPI_Comm | comm, | |
const MPI_Comm | eulerian, | |||
const int | lagrangianSize, | |||
const int | lagrangianRoot, | |||
VertexIdentifierStyle | vertexIdentifierStyle | |||
) | [inline] |
Construct from the communicators and Lagrangian info.
comm | is the communicator that contains the Eulerian and Lagrangian processors. | |
eulerian | is the Eulerian communicator. It is duplicated to avoid message conflicts. | |
lagrangianSize | is the number of Lagrangian processors. | |
lagrangianRoot | is the rank of the Lagrangian root in comm . | |
vertexIdentifierStyle | is either LocalIndices or GlobalIdentifiers. |
virtual void EulerianCommShell< N, T >::sendPressure | ( | ) | [virtual] |
Start sending the pressure to the relevant solid processors.
Call this function after the pressure differences across the faces have been set.
Implements EulerianComm< N, T >.
virtual void EulerianCommShell< N, T >::waitForPressure | ( | ) | [virtual] |
Wait for the pressure sends to be copied into communication buffers.
This function must be called after send_pressure().
Implements EulerianComm< N, T >.