VlaPy

VlaPy: A Python package for Eulerian Vlasov-Poisson-Fokker-Planck Simulations - Published in JOSS (2020)

https://github.com/joglekara/vlapy

Science Score: 93.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, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

numerical-methods plasma-physics python tests vlasov

Keywords from Contributors

stellarator fusion closember simulations
Last synced: 4 months ago · JSON representation

Repository

1D-1V Vlasov-Poisson(-Fokker-Planck), Plasma Physics PDE Simulation Tool in NumPy and experiment management in MLFlow

Basic Info
  • Host: GitHub
  • Owner: joglekara
  • License: mit
  • Language: Jupyter Notebook
  • Default Branch: master
  • Homepage:
  • Size: 4.11 MB
Statistics
  • Stars: 34
  • Watchers: 5
  • Forks: 11
  • Open Issues: 0
  • Releases: 1
Topics
numerical-methods plasma-physics python tests vlasov
Created almost 6 years ago · Last pushed about 2 years ago
Metadata Files
Readme Contributing License Code of conduct

README.md

CircleCI codecov Documentation Status License: MIT Contributor Covenant status DOI

VlaPy

Usage details and the latest documentation can be found here

Code of Conduct

Please adhere to the guidelines from the Contributor Covenant listed in the Code of Conduct.

Quick Usage

To install dependencies, run python3 setup.py install from the base directory of the repository.

After this step, python3 run_nlepw.py can be executed to run a simulation of a Non-Linear Electron Plasma Wave with collisions.

This will create a temporary directory for the simulation files. Once completed, MLFlow will move the simulation folder into a centralized datastore. This datastore can be accessed through a web-browser based UI provided by leveraging MLFlow.

To start the MLFlow UI server, type mlflow ui into the terminal and then navigate to localhost:5000 in your web browser. The page will look like the following

MLFlow UI

Clicking into that run will show you

MLFlow damping

Overview

VlaPy is a 1-spatial-dimension, 1-velocity-dimension, Vlasov-Poisson-Fokker-Planck code written in Python.

Statement of Need

The 1D-1V VPFP equation set solved here has been applied in research of laser-plasma interactions in the context of inertial fusion, of plasma-based accelerators, of space physics, and of fundamental plasma physics (references can be found in the manuscript). While there are VPFP software libraries which are available in academic settings, research laboratories, and industry, the community has yet to benefit from a simple-to-read, open-source Python implementation. This lack of capability is currently echoed in conversations within the PlasmaPy community (PlasmaPy is a collection of open-source plasma physics resources). Our aim with VlaPy is to take a step towards filling this need for a research and educational tool in the open-source community.

VlaPy is intended to help students learn fundamental concepts and help researchers discover novel physics and applications in plasma physics, fluid physics, computational physics, and numerical methods. It is also designed to provide a science-accessible introduction to industry and software engineering best-practices, including unit and integrated testing, and extensible and maintainable code.

The details of the VlaPy implementation are provided in the following sections.

Implementation

The Vlasov-Poisson-Fokker-Planck system can be decomposed into 4 components.

Vlasov - Spatial Advection

The spatial advection operator is pushed using an exponential integrator. The system is periodic in x.

This operator is tested in the fully integrated tests to reproduce solutions of the 1D-1V Vlasov-Poisson system, namely, Landau damping.

Vlasov - Velocity Advection

The velocity advection operator is pushed using an exponential integrator. The system is periodic in v.

This operator is tested in the fully integrated tests to reproduce solutions of the 1D-1V Vlasov-Poisson system, namely, Landau damping.

Poisson Solver

The Poisson equation is solved pseudospectrally.

This solver is tested to reproduce analytical solutions to a periodic Poisson system.

Fokker-Planck Solver

The Fokker-Planck equation is solved using an implicit finite-difference scheme because of the need to perform a diffusion time-step.

This solver is tested to 1) return df/dt = 0 if a Maxwell-Boltzmann distribution is provided as input 2) conserve energy and density 3) relax to a Maxwellian of the right temperature and without a drift velocity

Tests

All tests are performed in CircleCI. There are unit tests as well as integrated tests. One of the most fundamental plasma physics phenomenon is that described by Landau damping.

Plasmas can support electrostatic oscillations. The oscillation frequency is given by the electrostatic electron plasma wave (EPW) dispersion relation. When a wave of sufficiently small amplitude is driven at the resonant wave-number and frequency pairing, there is a resonant exchange of energy between the plasma and the electric field, and the electrons can damp the electric field.

In VlaPy, we verify that the damping rate is reproduced for a few different wave numbers. This is shown in notebooks/landau_damping.ipynb.

We include validation against this phenomenon as an integrated test.

Other practical considerations

File Storage

XArray enables a user-friendly interface to labeling multi-dimensional arrays along with a powerful and performant backend. Therefore, we use XArray (http://xarray.pydata.org/en/stable/) for a performant Pythonic storage mechanism that promises lazy loading and incremental writes (through some tricks).

Simulation Management

We use MLFlow (https://mlflow.org/) for simulation management. This is typically used for managing machine-learning lifecycles but is perfectly suited for managing numerical simulations. We believe UI capability to manage simulations significantly eases the physicist's workflow.

There are more details about how the diagnostics for a particular type of simulation are packaged and provided to the run manager object. These will be described in time. One can infer these from the code as well.

Contributing to VlaPy

Please see the guide in contribution guidelines for this project

Owner

  • Name: Archis Joglekar
  • Login: joglekara
  • Kind: user
  • Location: San Francisco, CA

You know, a lotta ins, a lotta outs, lotta what-have-yous

JOSS Publication

VlaPy: A Python package for Eulerian Vlasov-Poisson-Fokker-Planck Simulations
Published
September 17, 2020
Volume 5, Issue 53, Page 2182
Authors
Archis S. Joglekar ORCID
Noble.AI, 8 California St, Suite 400, San Francisco, California 94111
Matthew C. Levy ORCID
Noble.AI, 8 California St, Suite 400, San Francisco, California 94111
Editor
David P. Sanders ORCID
Tags
plasma physics dynamics astrophysics fusion

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 229
  • Total Committers: 6
  • Avg Commits per committer: 38.167
  • Development Distribution Score (DDS): 0.066
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Archis Joglekar j****a 214
archis a****r@n****i 11
Kyle Niemeyer k****r@f****m 1
Dominik Stańczak s****k@g****m 1
David P. Sanders d****s@g****m 1
Arfon Smith a****n 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 40
  • Total pull requests: 59
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 1 day
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 1.03
  • Average comments per pull request: 0.97
  • Merged pull requests: 59
  • 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
  • joglekara (27)
  • StanczakDominik (6)
  • dpsanders (5)
  • subodhdahal1988 (1)
  • TomGoffrey (1)
Pull Request Authors
  • joglekara (55)
  • StanczakDominik (1)
  • dpsanders (1)
  • arfon (1)
  • kyleniemeyer (1)
Top Labels
Issue Labels
enhancement (21) good first issue (8) documentation (7) bug (4) help wanted (3)
Pull Request Labels
enhancement (8) documentation (6) bug (6)

Dependencies

docs/requirements.txt pypi
  • sphinxcontrib-bibtex *
setup.py pypi