  Runko is a new open-source plasma simulation framework implemented in C++ and
Python. It is designed to function as an easy-to-extend general toolbox for
simulating astrophysical plasmas with different theoretical and numerical
models. Computationally intensive low-level kernels are written in modern C++
taking advantage of polymorphic classes, multiple inheritance, and template
metaprogramming. High-level functionality is operated with Python scripts. The
hybrid program design ensures good code performance together with ease of use.
The framework has a modular object-oriented design that allows the user to
easily add new numerical algorithms to the system. The code can be run on
various computing platforms ranging from laptops (shared-memory systems) to
massively parallel supercomputer architectures (distributed-memory systems).
The framework supports heterogeneous multiphysics simulations in which
different physical solvers can be combined and run simultaneously. Here we
showcase the framework's relativistic particle-in-cell (PIC) module by
presenting (i) 1D simulations of relativistic Weibel instability, (ii) 2D
simulations of relativistic kinetic turbulence in a suddenly stirred
magnetically-dominated pair plasma, and (iii) 3D simulations of collisionless
shocks in an unmagnetized medium.
