XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | List of all members
DomainDecomposition< Device > Class Template Reference

#include <domain_decomposition.hpp>

Public Member Functions

 DomainDecomposition (NLReader::NamelistReader &nlr, int nplanes, int nnodes)
 
 DomainDecomposition (int nranks_in)
 
void update (int new_f0_inode1)
 
void update_pol_decomp ()
 
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, Simd< int > &pid) const
 

Public Attributes

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

Constructor & Destructor Documentation

template<class Device >
DomainDecomposition< Device >::DomainDecomposition ( NLReader::NamelistReader nlr,
int  nplanes,
int  nnodes_in 
)

Constructor for DomainDecomposition class

Here is the call graph for this function:

template<class Device >
DomainDecomposition< Device >::DomainDecomposition ( int  nranks_in)

Member Function Documentation

template<class Device >
KOKKOS_INLINE_FUNCTION int DomainDecomposition< Device >::node_to_plane_rank ( int  node) const

Determine which processor a given mesh vertex belongs

Parameters
[in]nodeThe mesh vertex (one indexed)
Returns
The processor the the vertex belongs to
template<class Device >
KOKKOS_INLINE_FUNCTION void DomainDecomposition< Device >::node_to_rank ( const SimdGridWeights< Order::Zero, PIT_GLOBAL > &  grid_wts0,
const Simd< int > &  iphi,
Simd< int > &  pid 
) const

Here is the caller graph for this function:

template<class Device >
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

Here is the caller graph for this function:

template<class Device >
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

Here is the caller graph for this function:

Member Data Documentation

template<class Device>
bool DomainDecomposition< Device >::decompose_fields

Whether to decompose fields.

template<class Device>
FieldDecomposition<Device> DomainDecomposition< Device >::field_decomp
template<class Device>
Kokkos::View<int*,Kokkos::LayoutRight,Device> DomainDecomposition< Device >::gvid0_pid

Which processors get which vertices.

template<class Device>
Kokkos::View<int*,Kokkos::LayoutRight,HostType> DomainDecomposition< Device >::gvid0_pid_h

Which processors get which vertices (host)

template<class Device>
int DomainDecomposition< Device >::my_pid

ID of this processor.

template<class Device>
int DomainDecomposition< Device >::my_plane_pid

Poloidal ID of this processor.

template<class Device>
int DomainDecomposition< Device >::n_pids

Processors per plane?

template<class Device>
int DomainDecomposition< Device >::nnodes

Number of nodes belonging to this MPI rank.

template<class Device>
int DomainDecomposition< Device >::nnodes_on_plane

Number of nodes on local plane.

template<class Device>
int DomainDecomposition< Device >::node_offset

Offset of first mesh node belonging to this MPI rank.

template<class Device>
int DomainDecomposition< Device >::pe_per_plane

Processors per plane.

template<class Device>
int DomainDecomposition< Device >::plane_index

Offset of local plane.

template<class Device>
int DomainDecomposition< Device >::plane_totalpe

Processors per plane?

template<class Device>
bool DomainDecomposition< Device >::pol_decomp

Use poloidal decomposition.


The documentation for this class was generated from the following files: