XGC1
|
#include <domain_decomposition.hpp>
Public Member Functions | |
DomainDecomposition (NLReader::NamelistReader &nlr) | |
DomainDecomposition (NLReader::NamelistReader &nlr, int nnodes_in) | |
DomainDecomposition (int nranks_in) | |
void | setup_gvid0_pid (NLReader::NamelistReader &nlr, int nnodes_in) |
void | update (int new_f0_inode1) |
void | update_pol_decomp () |
void | update_flux_surf (const View< int **, CLayout, HostType > &surf_idx, const View< int *, CLayout, HostType > &nnodes_on_surface) |
KOKKOS_INLINE_FUNCTION int | node_to_plane_rank (int node) const |
KOKKOS_INLINE_FUNCTION void | node_to_rank (const SimdGridWeights< Order::Zero, PIT_GLOBAL > &grid_wts0, const Simd< int > &iphi, bool plane_sort_only, Simd< int > &pid) const |
int | node_to_plane_rank_h (int node, int initial_guess) const |
Public Attributes | |
int | nplanes |
bool | pol_decomp |
Use poloidal decomposition. More... | |
int | pe_per_plane |
Processors per plane. More... | |
int | plane_totalpe |
Processors per plane? More... | |
int | n_pids |
Processors per plane? More... | |
int | my_pid |
ID of this processor. More... | |
int | my_plane_pid |
Poloidal ID of this processor. More... | |
int | plane_index |
Offset of local plane. More... | |
int | nnodes_on_plane |
Number of nodes on local plane. More... | |
bool | decompose_fields |
Whether to decompose fields. More... | |
FieldDecomposition< Device > | field_decomp |
int | node_offset |
Offset of first mesh node belonging to this MPI rank. More... | |
int | nnodes |
Number of nodes belonging to this MPI rank. More... | |
Kokkos::View< int *, Kokkos::LayoutRight, HostType > | gvid0_pid_h |
Which processors get which vertices (host) More... | |
Kokkos::View< int *, Kokkos::LayoutRight, Device > | gvid0_pid |
Which processors get which vertices. More... | |
View< int *, CLayout, HostType > | surfs |
Which surfaces are at least partially on this rank. More... | |
View< int *, CLayout, HostType > | ranks_sharing_flux_surf |
Which processors share a flux surface with this one. More... | |
DomainDecomposition< Device >::DomainDecomposition | ( | NLReader::NamelistReader & | nlr | ) |
Constructor for DomainDecomposition class
DomainDecomposition< Device >::DomainDecomposition | ( | NLReader::NamelistReader & | nlr, |
int | nnodes_in | ||
) |
DomainDecomposition< Device >::DomainDecomposition | ( | int | nranks_in | ) |
KOKKOS_INLINE_FUNCTION int DomainDecomposition< Device >::node_to_plane_rank | ( | int | node | ) | const |
Determine which processor a given mesh vertex belongs
[in] | node | The mesh vertex (one indexed) |
|
inline |
Determine which processor a given mesh vertex belongs, on CPU
[in] | node | The mesh vertex (one indexed) |
[in] | initial_guess | Provide an initial starting guess for the processor rank |
KOKKOS_INLINE_FUNCTION void DomainDecomposition< Device >::node_to_rank | ( | const SimdGridWeights< Order::Zero, PIT_GLOBAL > & | grid_wts0, |
const Simd< int > & | iphi, | ||
bool | plane_sort_only, | ||
Simd< int > & | pid | ||
) | const |
void DomainDecomposition< Device >::setup_gvid0_pid | ( | NLReader::NamelistReader & | nlr, |
int | nnodes_in | ||
) |
void DomainDecomposition< Device >::update | ( | int | new_f0_inode1 | ) |
Update the vertex offset of the local rank with the provided value, then do an allgather to update all ranks
void DomainDecomposition< Device >::update_flux_surf | ( | const View< int **, CLayout, HostType > & | surf_idx, |
const View< int *, CLayout, HostType > & | nnodes_on_surface | ||
) |
Update the list of poloidal plane ranks that share a flux surface with this one
void DomainDecomposition< Device >::update_pol_decomp | ( | ) |
Update the poloidal decomposition. Pretty sure that gvid0_pid is the only thing that actually needs to be updated
bool DomainDecomposition< Device >::decompose_fields |
Whether to decompose fields.
FieldDecomposition<Device> DomainDecomposition< Device >::field_decomp |
Kokkos::View<int*,Kokkos::LayoutRight,Device> DomainDecomposition< Device >::gvid0_pid |
Which processors get which vertices.
Kokkos::View<int*,Kokkos::LayoutRight,HostType> DomainDecomposition< Device >::gvid0_pid_h |
Which processors get which vertices (host)
int DomainDecomposition< Device >::my_pid |
ID of this processor.
int DomainDecomposition< Device >::my_plane_pid |
Poloidal ID of this processor.
int DomainDecomposition< Device >::n_pids |
Processors per plane?
int DomainDecomposition< Device >::nnodes |
Number of nodes belonging to this MPI rank.
int DomainDecomposition< Device >::nnodes_on_plane |
Number of nodes on local plane.
int DomainDecomposition< Device >::node_offset |
Offset of first mesh node belonging to this MPI rank.
int DomainDecomposition< Device >::nplanes |
int DomainDecomposition< Device >::pe_per_plane |
Processors per plane.
int DomainDecomposition< Device >::plane_index |
Offset of local plane.
int DomainDecomposition< Device >::plane_totalpe |
Processors per plane?
bool DomainDecomposition< Device >::pol_decomp |
Use poloidal decomposition.
View<int*,CLayout,HostType> DomainDecomposition< Device >::ranks_sharing_flux_surf |
Which processors share a flux surface with this one.
View<int*,CLayout,HostType> DomainDecomposition< Device >::surfs |
Which surfaces are at least partially on this rank.