Skip to content

paulwilhelmvlasov/NumericalFlowIteration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Numerical Flow Iteration is a numerical solver for the kinetic, non-linear Vlasov-Poisson system 
arising in the context of high temperature plasmas assuming the collisionless, electro-static limit.
The aproach is based on a backwards-in-time iteration procedure making use of the solution structure
through the Lagrangian formulation: the characteristic map can be evaluated on-the-fly via
application of Hamiltonian operator splitting via the Stoermer-Verlet time-integration scheme. 
This allows to evaluate the solution of the Vlasov equation on-the-fly without the need to store the 
high dimensional distribution function explicitly. 

For further technical details consider the following publications:

[1] The Numerical Flow Iteration for the Vlasov–Poisson Equation (2024), Kirchhart, Matthias and Wilhelm, R.-Paul,
SIAM Journal on Scientific Computing, 46, 3, https://doi.org/10.1137/23M154710X.

[2] Introduction to the numerical flow iteration for the Vlasov–Poisson equation (2023), Wilhelm, R.-Paul Wilhelm,
Kirchhart, Mathhias and Torrilhon, Manuel, Special Issue:93rd Annual Meeting of the International Association of 
Applied Mathematics and Mechanics (GAMM), 23, 3, https://doi.org/10.1002/pamm.202300162.

When using this codebase please cite the previously mentioned works. 

The implementation includes:
* Support for computations on CPU using OpenMP and MPI communication. 
* Support for computation on NVIDIA GPU's using CUDA and MPI.

Additional features like solving the multi-species Vlasov-Poisson equation, Vlasov-Maxwell equation or handling
of non-periodic boundary conditions can be found on the feature branches. Note, however, that these features
are still in development and thus (partially) not tested yet. 


To install and run the code you require the automake toolchain. Additionally you require a working installation of 
Blas, Lapack, MPI and CUDA (this can be avoided by switching to a CPU-only branch). 
After cloning the repository locally you need to run the following commands:
```
autoreconf --install
./configure
make
```
You can test the install via:
```
mkdir test
cd test
../bin/test_nufi_cpu_1d
```

The pre-made executables can be found in the bin-folder.