[0][1]***********************************************.
[0][1]____O_______O__A_______A________M__________M.
[0][1]___O_O______O__A______A_A_______M_M______M_M.
[0][1]__O___O_____O_A______A___A______M_M______M_M.
[0][1]_OOOOOOO____0A______AAAAAAA_____M___M___M__M.
[0][1]_O_____0____O_A____A_______A____M_____M____M.
[0][1]O_______O___O__A__A_________A___M__________M.
[0][1]Arbitrary_Kinetic_Algorithm___________M_____.
[0][1]***********************************************.
AKAM is a three-dimensional hybrid PIC–fluid code for multiphysics plasma modeling. Ions are treated kinetically, while electrons are described by a ten-moment fluid model, enabling efficient simulation of ion-scale dynamics, pressure anisotropy, and non-Maxwellian effects. Laser–plasma interaction is modeled using a laser envelope formulation that captures energy deposition, electrons ponderomotive heating, and ions collisional absorption. The framework is designed for scalable, end-to-end simulations of laser-driven and high-energy-density plasmas.
stack: C++11, MPI, HDF5, python2-3
Paper reference: [Andrey Sladkov, Hybrid PIC-fluid model for numerical simulation of laser-plasma interaction, 2026. (https://arxiv.org/abs/2601.01633)]
-
before 'make' need to set in makefile
HDF5_PATH= path to hdf5 lib (last well used 1.10.5)
MPI_PATH= path to mpi lib (last well used openmpi 9.0.0)
PYTHON_INC= path to python include
PYTHON_LIB= path to python lib -
for running default example from src/input/Initializer.py
mpirun -n 2 akam.exe -
normally need to set input file path containing Initializer.py
mpirun -n 2 akam.exe PATH/TO/PYTHON/INPUT/FILE -
before running need to create output folder and set in Initializer.py
-
for visualization use python notebook in folder NOTEBOOK/
-
space and time quantities are normalized on:
- ion inertia length d0 = c/omega_pi
- inverse ion gyrofrequency 1/Omega_ci
-
electro-magnetic fields are calculated on two staggered grid (G1 and G2)
using predictor-corrector scheme (see EleMagManager.cpp)E = -[VixB] + [JxB]/n - divPe/n - eta ΔJ
B' = -rotE
J = rotB
-
ions are described in a kinetic way,
dynamics is solved using first order interpolation of em fields -
electrons are described in a fluid way by:
- density (equals to ion density ne=ni=n)
- bulk velocity Ve = Vi - J/n
- six-component pressure tensor Pij
-
six-component pressure tensor P is integrated in time
using subcycling explicit schemeP' = - Ve.∇P - P∇.Ve - P.∇Ve - (P.∇Ve)^T - q/m [ PxB + (PxB)^T ]
where Ve - electron flow velocity
q - electron charge
m - electron mass
B - magnetic field -
laser–plasma interaction is done via envelope model with ponderomotive heating and inverse Bremsstrahlung absorption
-
electron–ion collisions are included through a Landau–Spitzer relaxation operator, enabling temperature equilibration and pressure feedback between ions and the electron fluid
-
ionisation processes are included via rate-based evolution of particle charge states driven by local electron density and temperature.
-
AKAM is 3D, parallel (MPI), multispecies code
-
BC type for em fields and hydro quantities: 1 - periodic, 0 - ideal (see GridManager.cpp)
-
BC type for particle properties: 2 - reflect 1 - periodic 0 - outflow (see BoundaryManager.cpp) *outflow BC - reaching border particle leaves domain forever
-
for small scale dissipation use resistivity (eta) parameter
-
for pressure tensor integration need to set:
- electron mass
- relaxation factor for izotropization operator (see ClosureManager.cpp)
- smooth stride for pressure tensor smoothing
-
use 'make FLAGS=-DLOG' to set debug log level in Logger.hpp