ESVM

ESVM: an open-source finite volume Electrostatic Vlasov-Maxwell code - Published in JOSS (2021)

https://github.com/michaeltouati/esvm

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    1 of 6 committers (16.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

electrostatic-wakefield finite-volume landau-damping maxwell plasmas two-stream-instability vlasov
Last synced: 6 months ago · JSON representation

Repository

Finite-volume Vlasov-Maxwell code for Plasma Physics simulations

Basic Info
  • Host: GitHub
  • Owner: michaeltouati
  • License: gpl-3.0
  • Language: Fortran
  • Default Branch: master
  • Homepage:
  • Size: 8.18 MB
Statistics
  • Stars: 14
  • Watchers: 1
  • Forks: 3
  • Open Issues: 0
  • Releases: 1
Topics
electrostatic-wakefield finite-volume landau-damping maxwell plasmas two-stream-instability vlasov
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct

readme.md

JOSS : status License : GPLv3 Contributor Covenant Clones : 14 days Compilation check Tests check Plotting tools check Open issues Closed issues Open pull requests Closed pull requests <!-- Views : 14 days --> <!-- Downloads -->

Written by Michaël J TOUATI

ESVM (ElectroStatic Vlasov-Maxwell) is a Vlasov-Maxwell Fortran 95 standard-compliant code, parallelized with OpenMP and using Python 3 for post-processing, that allows for the study of collisionless plasmas. Vlasov equation is coupled with the self-consistent Maxwell-Gauss equation, or equivalently with the Maxwell-Ampere equation with Maxwell-Gauss equation computed at the first time step, only. Both absorbing and periodic boundary conditions for both the particles and the fields are implemented. More pieces of information can be found in the readme.pdf peer-reviewed article draft. Python scripts, using the Matplotlib and Numpy packages, are provided to automatically extract and plot the stored simulation results. The simulation parameters are described in the input-deck and they can be modified without having to recompile the code. Compilation rules can be modified in the makefile depending on the user compiler preferences. Classical Plasma Physics academic case simulations that need less than one CPUxhour each, tools for testing the compilation of the code and tools for checking the simulation parameters are provided.

Simulation plot examples

Code units

The code units consist in the commonly used electrostatic units : the electron mass for masses, the elementary charge for electrical charges, the inverse of the Langmuir plasma electron angular frequency for times, the Debye electron screening length for spaces and the average plasma electron density for spatial densities. The initial plasma electron velocity distribution standard deviation is therefore an important unit parameter of normalization since it fixes indirectly the spatial unit.

Compiling the code

Modify the makefile as a function of the wished compilation options and the Fortran compiler installed on your computer and then type

sh make The compilation can be tested by typing sh make test The tests consist in comparing file1 and file2 where : * file1 is one test simulation terminal output performed with an input deck located in the directory 'test-cases/Tests/' and * file2 is the terminal output of the corresponding simulation already performed by the developper also located in 'test-cases/Tests/'.

Running a simulation

Fill the wished input-deck (all parameters are described inside), eventually check them by typing sh ./check-input-deck or sh make check and then type sh ./esvm or sh make run to run the simulation.

Plotting the simulation results

All simulation results are stored in files located in the directory 'results'. Python scripts allowing to extract and plot the simulation results are located in the directory 'sources/plot'. They can be used by simply typing : sh make plot to plot all the results, even when the simulation is still running. The resulting plots will be stored in the directory 'figures'. It can also be plotted separately : - the energies scalar plots by typing : sh make plot_energies or sh python3 sources/plot/plot_logfe.py - the 1D plasma electron hydrodynamic moments space-time density maps by typing : sh make plot_hydro2D or sh python3 sources/plot/plot_hydro2d.py - the 1D plasma electron hydrodynamic moments scalar plots by typing : sh make plot_hydro1D or sh python3 sources/plot/plot_hydro1d.py - or the 1D1V plasma electron distribution function phase-space density maps by typing : sh make plot_fe or sh python3 sources/plot/plot_fe.py If you need to plot the 1D1V plasma electron distribution function phase-space density maps in logarithmic scale instead, type : sh make plot_logfe or sh python3 sources/plot/plot_logfe.py

Cleaning the directory

If you want to remove from the ESVM directory : - the compilation files and executables, type : sh make distclean - the directory 'figures' containing all simulations results plots, type : sh make figclean - the directory 'results' containing all simulations results data files, type : sh make resclean - the three previous ones, type : sh make clean Be careful, the three latters will remove all simulations results and or figures. Store them elsewhere if you don't want to lose them.

License

ESVM is distributed under the terms of the GPLv3 license.

JOSS Publication

ESVM: an open-source finite volume Electrostatic Vlasov-Maxwell code
Published
November 29, 2021
Volume 6, Issue 67, Page 3618
Authors
Michaël J. Touati ORCID
Department of Electrical Engineering, University of California Los Angeles, Los Angeles, CA 90095, USA, Group of Lasers and Plasmas, IPFN, IST, Universidade de Lisboa, Lisbon, Portugal, Centro de Láseres Pulsados de Salamanca (CLPU), Edificio M5, Parque Cientfico, C/ Adaja 8, 37185 Villamayor, Salamanca, Spain (current affiliation)
Editor
Daniel S. Katz ORCID
Tags
OpenMP Electrostatic Collisionless Plasma Poisson Maxwell-Gauss Maxwell-Ampere Vlasov Advection Finite volume Donor-cell Lax-Wendroff Beam-Warming Fromm minmod superbee Van Leer MUSCL Landau damping Two-stream instability Electrostatic wakefield

GitHub Events

Total
  • Push event: 273
Last Year
  • Push event: 274

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 2,281
  • Total Committers: 6
  • Avg Commits per committer: 380.167
  • Development Distribution Score (DDS): 0.36
Past Year
  • Commits: 365
  • Committers: 1
  • Avg Commits per committer: 365.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
GitHub Action a****n@g****m 1,459
Michael Touati 1****i 705
michaeltouati t****l@g****m 105
User u****r@M****l 8
Daniel S. Katz d****z@i****g 3
nzeal n****a@y****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 10
  • Total pull requests: 7
  • Average time to close issues: 13 days
  • Average time to close pull requests: about 3 hours
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 2.7
  • Average comments per pull request: 0.14
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • tclune (7)
  • TomGoffrey (2)
  • michaeltouati (1)
Pull Request Authors
  • michaeltouati (3)
  • danielskatz (3)
  • tclune (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/clones.yml actions
  • actions/checkout v2 composite
  • ad-m/github-push-action master composite
.github/workflows/compilation.yml actions
  • actions/checkout v2 composite
.github/workflows/plots.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/tests.yml actions
  • actions/checkout v2 composite
.github/workflows/views.yml actions
  • actions/checkout v2 composite
  • ad-m/github-push-action master composite