Vlasiator targets global hybrid kinetic magnetospheric simulations.

### Physical Model

Vlasiator simulates the dynamics of plasma using a hybrid-Vlasov model, where protons are described by their distribution function $$f(r,v,t)$$ in ordinary ($$r$$) and velocity ($$v$$) space, and electrons are a charge-neutralising fluid. This approach neglects electron kinetic effects but retains ion kinetics. The time-evolution of $$f(r,v,t)$$ is given by Vlasov's equation, $$\frac{\partial}{\partial t}f(\mathbf{r},\mathbf{v},t)+\mathbf{v}\cdot\nabla_{r}f(\mathbf{r},\mathbf{v},t)+\frac{q}{m}(\mathbf{E}+\mathbf{v}\times\mathbf{B}) \cdot\nabla_{v}f(\mathbf{r},\mathbf{v},t)=0$$ which is coupled self-consistently to Maxwell's equations giving the evolution of the electric and magnetic fields E and B. Maxwell's equations neglect the displacement current. The equations are closed by a generalised Ohm's law including the Hall term. $$\mathbf{E}=-\mathbf{V}_{\mathrm{i}}\times\mathbf{B}+\frac{1}{\rho_{q}}\mathbf{j}\times\mathbf{B}$$

### Numerical Methods

Vlasiator propagates the distribution function forward in time with a conservative fifth-order accurate Semi-Lagrangian algorithm. This algorithm allows using long time steps even in the presence of strong magnetic fields, as the propagation in velocity space is not limited by the Courant-Friedrichs-Levy (CFL) condition. The field solver is a second-order accurate divergence-free upwind-constrained transport method.

Vlasiator has a parallel Cartesian mesh in ordinary space. In each spatial cell there is a 3-dimensional sparse velocity grid, modelling the in the full 6-dimensional distribution function. Empty velocity space cells are neither stored nor propagated, which in a typical case reduces the total number of phase space cells by a factor of at least 100 while impacting mass conservation to a relative level of no more than $$10^{-6}$$.

The ordinary space grid is implemented using the open source DCCRG grid library developed by the group. It is parallelized using MPI-based domain decomposition and OpenMP-based threading is used to further parallelise the work done by each process. The Vlasov solver is vectorised using AVX intrinsics. The load is balanced with the Zoltan library using its recursive coordinate bisection partitioner. I/O is performed using our own parallel VLSV file format, which can be analyzed using VisIt or by using the python based Analysator package.