| XGCa
    | 
#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.