Advanced Kinetic Iterative pLasma Expansion Solver 2D
Akiles is the
Matlab implementation of the kinetic plasma plume model described in
M. Merino et al., “Kinetic electron model for plasma thruster plumes,” Plasma Sources Science and Technology 27, 035013 (2018).
The code allows to compute the electric potential and
the electron distribution function in a paraxial, collisonless plume and compute any moment of the distribution function.
The name Akiles2d stands for “Advanced Kinetic Iterative pLasma Expansion Solver 2D.”
The first version of this code was funded by ESA under contract
4000116180/15/NL/PS. It was developed by Mario Merino and Javier
Mauriño, the latter during a research visit to the EP2
group at UC3M,
funded by a UK Royal Academy of Engineering Engineering Leaders
Scholarship (ELAA1516/1/87).
Akiles2d solves iteratively for the electric potential and the EVDF weight in a paraxial, unmagnetized, steady-state plasma plume to satisfy quasineutrality and a global condition on the net electric current. It can be readily used for magnetized plumes in magnetic nozzles as well. After successful convergence to the self-consistent solution, the Akiles2d computes the most frequently used moments of the ion and electron distribution functions.
Currently, only the radially-parabolic electric potential and the
semi-Maxwellian electron distribution upstream are implemented, but the code
is structured to allow easy extension to other cases.
Installation requires simply that you
download Akiles2d
and add the base directory (the one that contains the +akiles2d
directory)
to your Matlab path.
A recent version of Matlab is needed to run the code.
Akiles2d has been developed in Matlab R2016b Academic version.
Akiles2d depends on other Matlab packages that you can download from this
GitHub account: logger. These
packages must be installed and in your Matlab path to run Akiles2d.
Akiles2d main function akiles2d
is found under the +akiles2d
directory.
This function performs a complete simulation, including the call to the
preprocessor, the solver, and the postprocessor. All file writing
and message logging operations are done in this function.
To run Akiles2d without any user inputs, simply add the base directory to the Matlab path and run:
[data, solution] = akiles2d.akiles2d();
Akiles2d uses two structures to operate:
data
structure contains all the simulation parameters. It is generatedsimrc
given by thesimrc
file, which can serve as a template for the user+akiles2d
directory.solution
structure stores the current solution during the iteration,The simulation is stored in a single directory, given bydata.akiles2d.simdir
. This is where the log file log.txt
is stored.
The data
structure is saved by the main function after being generated by
the preprocessor to data.mat
.
Each solution
structure of each iteration step is saved as a
separate file, named simply #.mat
, where #
is the iteration number.
The final iteration is saved to final.mat
.
After postprocessing, the solution
structure is also saved to post.mat
.
Besides the akiles2d
and simrc
files described above,
the code is structured into several Matlab subpackages as follows.
In the listing below,+(potential model)
, +(EVDF model)
, and +(ions model)
are placeholders
for the name of the corresponding model. Presently, only+parabolic
, +semimaxwellian
, and +cold
are available, respectively.
+electrons
: The moment
function that can be found in+electrons\+(potential model)\+(EVDF model)
allows calculating any moment of the electron velocity distribution function, at any point. Some additional electron functions can be found in +electrons\+(potential model)
.+ions
: The moment
function that can be found in+ions\+(potential model)\+(ions model)
allows calculating any moment of the ion velocity distribution function.+preprocessor
: Contains the preprocessor
function, which facilitates thedata
structure from multiple sources (default simrc
simrc
file, and additional fields given through the console)+solver
: Contains solver
and errorfcn
, two functions used in the+postprocessor
: functions intended to update the solution
structure+potential
: Some convenience functions for computing the potential phi
Unit tests are found in the /test
subdirectory. After adding the package to
your Matlab path, you can run all tests by executing runtests
from this
subdirectory.
Currently, the usage of test points out of the plume axis is not fully
implemented. Therefore, the input vector r must be zero, or an error will be
thrown.
Future developments will add the moment integrals for other EVDFs than
semi-Maxwelllian, and proper documentation.
If you have any comments for improvement or
are interested in contributing to the continued
development of this or any of my other codes, you can contact us
through our website.
For updates and news, follow us on Twitter: @ep2lab..
This program is the result of substantial effort by us. It is released as open
source in the hope that it will be useful to other people. If you find it
useful and/or use it in any of your works, we kindly ask you to acknowledge it
by citing the main article of the Akiles2d model,
Mario Merino, Javier Mauriño, Eduardo Ahedo,
“Kinetic electron model for plasma thruster plumes,” Plasma Sources Science and Technology 27, 035013 (2018), DOI: 10.1088/1361-6595/aab3a1
and/or citing the code directly as:
Mario Merino, Javier Mauriño (2017). Akiles2d code: Advanced Kinetic
Iterative pLasma Expansion Solver 2D, DOI: 10.5281/zenodo.1098432
Copyright (c) 2017 Mario Merino and Javier Mauriño.
The software is released as open source with the MIT License.