Giter Site home page Giter Site logo

akiles's Introduction

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:

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

akiles's People

Contributors

mariomerinomartinez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

astrojuanlu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.