项目作者: ep2lab

项目描述 :
Advanced Kinetic Iterative pLasma Expansion Solver 2D
高级语言: MATLAB
项目地址: git://github.com/ep2lab/akiles.git
创建时间: 2017-12-09T17:51:25Z
项目社区:https://github.com/ep2lab/akiles

开源协议:Other

下载


AKILES 2D

DOI

Akiles logo

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

Installation requires simply that you
download Akiles2d
and add the base directory (the one that contains the +akiles2d directory)
to your Matlab path.

Dependencies

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.

Quick usage guide

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:

  1. [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 file simrc given by the
    user. The default simrc 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.

Code structure

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 the
    preparation of the data structure from multiple sources (default simrc
    file, user simrc file, and additional fields given through the console)
  • +solver: Contains solver and errorfcn, two functions used in the
    iterative solution process by akiles2d.
  • +postprocessor: functions intended to update the solution structure
    after converging to the self-consitent solutions are stored here.
  • +potential: Some convenience functions for computing the potential phi
    for each potential model.

Testing

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.

Development of features

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.

Contributing

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..

Acknowledging

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

License

Copyright (c) 2017 Mario Merino and Javier Mauriño.
The software is released as open source with the MIT License.