ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
parmove.hpp File Reference

MPI marker migration across toroidal spatial subdomains. More...

#include "prec_const.hpp"
#include "globals.hpp"
#include <Kokkos_Core.hpp>
#include <mpi.h>
#include <vector>
+ Include dependency graph for parmove.hpp:

Classes

struct  orb5x::PackSendBufferFunctor
 Kokkos-compatible real-attribute packing functor. More...
 
class  orb5x::ParMove
 Migrate complete marker records between toroidal spatial subdomains. More...
 
struct  orb5x::UnpackReceiveBufferFunctor
 Kokkos-compatible real-attribute receive-unpacking functor. More...
 

Namespaces

namespace  orb5x
 Public C++ interface of the ORB5X gyrokinetic application.
 

Functions

void orb5x::count_leaving_markers (Kokkos::View< Real *, Kokkos::LayoutStride > pos, Kokkos::View< int * > scount, Real lsd_inv, int nsd, int me_sd, int np)
 Histogram outgoing markers by destination subdomain on device.
 
void orb5x::fill_leaving_marker_holes (Kokkos::View< Real *, Kokkos::LayoutStride > pos, Kokkos::View< int * > cursor, Kokkos::View< int * > iphole, Real lsd_inv, int nsd, int me_sd, int np)
 Place each outgoing marker's index into its destination's region of iphole, sorted by destination.
 

Detailed Description

MPI marker migration across toroidal spatial subdomains.

Counts and packs complete marker records, exchanges them with neighboring domains, and unpacks received markers into Kokkos storage.