Eulerian communicator for the Eulerian-Lagrangian coupling. More...
#include <EulerianCommBoundary.h>
Public Types | |
typedef T | Number |
The number type. | |
Public Member Functions | |
Constructors etc. | |
EulerianCommBoundary (const MPI_Comm comm, const MPI_Comm eulerian, const int lagrangianSize, const int lagrangianRoot, VertexIdentifierStyle vertexIdentifierStyle) | |
Construct from the communicators and Lagrangian info. | |
virtual | ~EulerianCommBoundary () |
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 nodes. |
Eulerian communicator for the Eulerian-Lagrangian coupling.
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 boundary of the solid 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(). This processor must set the pressure at all node positions that lie within its domain. The pressures 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().
EulerianCommBoundary< N, T >::EulerianCommBoundary | ( | 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 EulerianCommBoundary< N, T >::sendPressure | ( | ) | [virtual] |
Start sending the pressure to the relevant solid processors.
Call this function after the pressures at the nodes have been set.
Implements EulerianComm< N, T >.
virtual void EulerianCommBoundary< 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 >.