|
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 HostArray< VertexList > &surfaces) |
| 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 |
| DistributionPlan | mpi_distribution_plan (int nv) const |
| VertexList | vertex_list () const |
| VertexList | vertex_list (int ipid) 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 | ||
| ) |
Constructor for DomainDecomposition class
| DomainDecomposition< Device >::DomainDecomposition | ( | int | nranks_in | ) |
| DistributionPlan DomainDecomposition< Device >::mpi_distribution_plan | ( | int | nv | ) | const |

| 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 HostArray< VertexList > & | surfaces | ) |
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

| VertexList DomainDecomposition< Device >::vertex_list |

| VertexList DomainDecomposition< Device >::vertex_list | ( | int | ipid | ) | const |
| 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.