Moment_Kinetics

The moment kinetics proxyapp solves the kinetic-type equations derived in the Oxford project (Parra et al.). The proxyapp prototypes three features:

The code implements a “moment kinetics" approach to kinetic equations, where the particle distribution function is modified to remove the density, parallel bulk velocity and/or temperature. These fluid moments are then evolved separately from the distribution function. This approach allows a simulation to dynamically switch between a kinetic and a fluid model.

The code is implemented using a Chebychev spectral element approach in both physical space and velocity space. This gives spectral convergence with grid resolution while still allowing the flexibility to model complicated physical domains. For comparison, the code is also implemented using a standard finite difference approach.

The code is implemented in the Julia language. Thus by leveraging Julia community packages, the code can execute on CPUs and GPUs with minimal input from the developer (e.g. no explicit domain decomposition between MPI ranks). This may provide an alternative approach to performance portability, as opposed to the current expected approach of using C++ with code generation and domain-specific languages (DSLs).

dynamics.

Moment_Kinetics is publicly available at https://github.com/mabarnes/moment_kinetics.