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:
- The
data
structure contains all the simulation parameters. It is generated by the preprocessor, which reads a configuration filesimrc
given by the user. The defaultsimrc
file, which can serve as a template for the user files, is found under the+akiles2d
directory. - The
solution
structure stores the current solution during the iteration, and the final solution after it. All postprocessing functions add to this function, too.
The simulation is stored in a single directory, given by
data.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
: Themoment
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
: Themoment
function that can be found in+ions\+(potential model)\+(ions model)
allows calculating any moment of the ion velocity distribution function.+preprocessor
: Contains thepreprocessor
function, which facilitates the preparation of thedata
structure from multiple sources (defaultsimrc
file, usersimrc
file, and additional fields given through the console)+solver
: Containssolver
anderrorfcn
, two functions used in the iterative solution process by akiles2d.+postprocessor
: functions intended to update thesolution
structure after converging to the self-consitent solutions are stored here.+potential
: Some convenience functions for computing the potentialphi
for each potential model.
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.