|
IPPL (Independent Parallel Particle Layer)
IPPL
|
Structure holding MPI neighbor and boundary information. More...
Public Member Functions | |
| BoundaryInfo (std::vector< size_t > neighbors, std::vector< Kokkos::View< size_t * > > sendIdxs, std::vector< Kokkos::View< size_t * > > recvIdxs_m) | |
constructor for a BoundaryInfo object. | |
Public Attributes | |
| std::vector< size_t > | neighbors_m |
| Stores the ranks of the neighboring MPI tasks. | |
| std::vector< Kokkos::View< size_t * > > | sendIdxs_m |
Stores indices of FEMVector::data_m which need to be send to the MPI neighbors. | |
| std::vector< Kokkos::View< size_t * > > | recvIdxs_m |
Stores indices of FEMVector::data_m which are part of the halo. | |
| detail::FieldBufferData< T > | commBuffer_m |
| Buffer for MPI communication. | |
Structure holding MPI neighbor and boundary information.
This struct holds all the information regarding MPI (neighbor list, indecies which need to be exchanged...) and additionaly boundary information, like what type of boundary we have. The FEMVector class then has a pointer to an object of this, the reason behind is that this allows us to copy a FEMVector onto the device cheaply, without having to worry about copying much additional information.
Definition at line 293 of file FEMVector.h.
| ippl::FEMVector< T >::BoundaryInfo::BoundaryInfo | ( | std::vector< size_t > | neighbors, |
| std::vector< Kokkos::View< size_t * > > | sendIdxs, | ||
| std::vector< Kokkos::View< size_t * > > | recvIdxs_m ) |
constructor for a BoundaryInfo object.
Constructor to be used to create an object of type BoundaryInfo.
| neighbors | The ranks of the neighboring MPI tasks. |
| sendIdxs | The indices for which the data should be sent to the MPI neighbors. |
| recvIdxs | The halo cell indices. |
Definition at line 29 of file FEMVector.hpp.
References neighbors_m, recvIdxs_m, and sendIdxs_m.
| detail::FieldBufferData<T> ippl::FEMVector< T >::BoundaryInfo::commBuffer_m |
Buffer for MPI communication.
This buffer is used during MPI communication in order to store the values which should be send to the neighbors. We are using a ippl::detail::FieldBufferData even though we do not have a ippl::Field , but this buffer struct is general enough to allow for such things.
Definition at line 364 of file FEMVector.h.
| std::vector<size_t> ippl::FEMVector< T >::BoundaryInfo::neighbors_m |
Stores the ranks of the neighboring MPI tasks.
A vector storing the ranks of the neighboring MPI tasks. This is used during halo operators in combination with BoundaryInfo::sendIdxs_m and BoundaryInfo::recvIdxs_m in order to send the correct data to the correct ranks.
Definition at line 320 of file FEMVector.h.
Referenced by BoundaryInfo().
| std::vector< Kokkos::View<size_t*> > ippl::FEMVector< T >::BoundaryInfo::recvIdxs_m |
Stores indices of FEMVector::data_m which are part of the halo.
This is a 2D list which stores the indices of the FEMVector::data_m variable which are part of the halo. The first dimension goes over all the neighbors and should be used in combination with BoundaryInfo::neighbors_m while the second dimension goes over the actual indices.
It is called recvIdxs to be in line with ippl::detail::HaloCells and because it stores the indices for which we recive data from the neighbors.
Definition at line 352 of file FEMVector.h.
Referenced by BoundaryInfo().
| std::vector< Kokkos::View<size_t*> > ippl::FEMVector< T >::BoundaryInfo::sendIdxs_m |
Stores indices of FEMVector::data_m which need to be send to the MPI neighbors.
This is a 2D list which stores the indices of the FEMVector::data_m variable which need to be sent to the MPI neighbors. The first dimension goes over all the neighbors and should be used in combination with BoundaryInfo::neighbors_m while the second dimension goes over the actual indices.
This corresponds to the indices which belong to this rank but are shared by the halos of the other ranks.
Definition at line 335 of file FEMVector.h.
Referenced by BoundaryInfo().