XGCa
|
Functions | |
void | cyclical_send_recv (const DomainDecomposition< DeviceType > &pol_decomp, const View< double *, CLayout, HostType > &send_buf, const View< double *, CLayout, HostType > &recv_buf, const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > &grid_field, int desired_plane, int source_rank) |
void | send_recv_potential (const DomainDecomposition< DeviceType > &pol_decomp, const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > &potential) |
void | send_recv_potential2 (const DomainDecomposition< DeviceType > &pol_decomp, const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > &potential) |
void cyclical_send_recv | ( | const DomainDecomposition< DeviceType > & | pol_decomp, |
const View< double *, CLayout, HostType > & | send_buf, | ||
const View< double *, CLayout, HostType > & | recv_buf, | ||
const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > & | grid_field, | ||
int | desired_plane, | ||
int | source_rank | ||
) |
Gathers requested data from grid_field of other MPI ranks. The grid_fields are assumed to have 2 ghost planes on the left; thus, their offset with respect to the global numbering of planes is my_intpl_rank-2. This information, as well as the global plane index of the data the user wishes to gather, and the MPI rank to fetch this data from, is sufficient to create a cyclical communication (looping around the simulation in the toroidal direction) so every rank gets the requested data.
[in] | pol_decomp | is the domain decomposition and is used here to determine offsets and for MPI |
[out] | send_buf | is a temporary allocation used by the function |
[out] | recv_buf | is a temporary allocation used by the function |
[in,out] | grid_field | is the data that will be updated by data from the grid_field of other MPI ranks |
[in] | desired_plane | is the global plane index that is desired to be copied to the local grid_field |
[in] | source_rank | is which MPI interplanar rank the desired plane data should be fetched from |
void send_recv_potential | ( | const DomainDecomposition< DeviceType > & | pol_decomp, |
const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > & | potential | ||
) |
Gathers data of the input potential belonging to the two neighboring planes to the left and the one to the right. The values in the third plane are presumed to be valid; these are shared with the three planes that need it. (The one to the left and the two to the right.)
[in] | pol_decomp | is the domain decomposition and is used here to determine offsets and for MPI |
[in,out] | potential | is a GridField with 4 planes. Plane 2 is an input; Planes 0, 1, and 3 are populated from other ranks |
void send_recv_potential2 | ( | const DomainDecomposition< DeviceType > & | pol_decomp, |
const GridField< HostType, VarType::Scalar, PhiInterpType::None, TorType::MultiplePlanes, KinType::DriftKin > & | potential | ||
) |
Gathers data of the input potential belonging to the neighboring plane to the left and to the right. The values in the second and third plane are presumed to be valid; these are shared with the two planes that need it. (The one to the left and the one to the right.)
[in] | pol_decomp | is the domain decomposition and is used here to determine offsets and for MPI |
[in,out] | potential | is a GridField with 4 planes. Planes 1 and 2 is an input; Planes 0, and 3 are populated from other ranks |