Python package for running and analysing gyrokinetic simulations
Project description
Pyrokinetics
This project aims to standardise gyrokinetic analysis.
A general pyro object can be loaded either from simulation/experimental data or from an existing gyrokinetics file.
In general pyrokinetics can do the following
- Read data in from:
- Gyrokinetic input files
- Simulations outputs
- Write input files for various GK codes
- Generate N-D pyro object for scans
- Read in gyrokinetic outputs
- Standardise analysis of gk outputs
At a minimum pyrokinetics needs the local geometry and species data. Example scripts can be found in the examples folder
Documentation
Documentation can be found at readthedocs.
Installation
Pyrokinetics requires a minimum Python version of 3.9. It may be necessary to upgrade
pip to install:
$ pip install --upgrade pip
To install the latest release:
$ pip install pyrokinetics
Otherwise, to install from source:
$ git clone https://github.com/pyro-kinetics/pyrokinetics.git
$ cd pyrokinetics
$ pip install .
If you are planning on developing pyrokinetics use the following instead to install:
$ pip install -e .[docs,tests]
Note that currently the installation of pyrokinetics requires an available Fortran compiler
Testing
To run the tests:
$ pip install -e .[tests]
$ pytest --cov .
Basic Usage
The simplest action in Pyrokinetics is to convert a gyrokinetics input file for code
'X' into an equivalent input file for code 'Y'. The easiest way to achieve this is to
use a Pyro object, which manages the various other classes in the API. For example,
to convert a GS2 input file to a CGYRO input file:
>>> from pyrokinetics import Pyro
>>> pyro = Pyro(gk_file="my_gs2_file.in") # file type is automatically inferred
>>> pyro.write_gk_file("input.cgyro", gk_code="CGYRO")
There are many other features in Pyrokinetics, such as methods for building gyrokinetics input files using global plasma equilibria and/or kinetics profiles. There are also methods for analysing and comparing the results from gyrokinetics code runs. Please read the docs for more information.
Command Line Interface
After installing, simple pyrokinetics operations can be performed on the command line using either of the following methods:
$ python3 -m pyrokinetics {args...}
$ pyro {args...}
For example, to convert a GS2 input file to CGYRO:
$ pyro convert CGYRO "my_gs2_file.in" -o "input.cgyro"
You can get help on how to use the command line interface or any of its subcommands
by providing -h or --help:
$ pyro --help
$ pyro convert --help
Docker
Pyrokinetics provides a Dockerfile from which you can build and run Docker containers.
To do so, you must have Docker installed on
your system. To build a local container:
$ docker build . -t pyrokinetics
It can then be run using:
$ docker run -it --rm -v ./path/to/local:/mymount pyrokinetics
where:
-itruns an interactive shell.--rmdeletes the Docker instance after use.-v ./path/to/local:/mymountmounts the local directory./path/to/localto the directory/mymountwithin the Docker container.
The container runs an IPython interpreter, with Pyrokinetics already installed. Note
that you will need to import Pyrokinetics before it can be used.
Code structure
Pyro object comprised of
- Equilibrium
- LocalGeometry
- Miller
- Fourier (to be added)
- LocalGeometry
- Kinetics
- LocalSpecies
- Numerics
- GKCodes
- GKOutput
- For nonlinear simulations
- Fields (field, kx, ky, theta, time)
- Fluxes (field, species, moment, ky, theta, time)
- For linear simulations
- Fields (field, kx, ky, theta, time)
- Fluxes (field, species, moment, ky, theta, time)
- Eigenfunctions (field, ky, theta, time)
- Eigenvalues - growth rate and mode freq (ky, time)
- For nonlinear simulations
There also exists the PyroScan object which allows you to make a N-D parameter scan of Pyro objects
Supports sources of Equilibrium data
pyrokinetics currently supports
Future formats to be added are
- CHEASE
Supported sources of Kinetic data
Sources of kinetic profile data currently supported are
- SCENE
- JETTO
- TRANSP
- GACODE
- PFILE
- IMAS
Future codes to be add
- SimDB
- OMFIT
Supported GK codes
The following gk codes are supported in pyrokinetics
- CGYRO
- GS2
- GENE
- TGLF
- GKW
- STELLA
- GX
Note on units
The pyro object uses standardised reference values to normalise the results. It will automatically handle converting to a GK codes standard units.
Note any scans/parameter changes made will be in standard pyro units so please account for this.
Reference values
- $T_{ref} = T_e$ Electron temperature at flux surface
- $n_{ref} = n_e$ Electron density at flux surface
- $m_{ref} = m_D$ Deuterium mass
- $v_{ref} = c_s = \sqrt{T_e/m_D}$ Ion sound speed at flux surface
- $B_{ref} = B_0$ Toroidal field at centre of the flux surface
- $L_{ref} = a$ Minor radius of the last closed flux surface
- $t_{ref} = a/c_s$ Ion sound time at flux surface
- $\rho_{ref} = \frac{c_s}{eB_0/m_D}$ Ion Larmor radius at flux surface
It is possible to change the reference units but proceed with caution
Used By
This project is used by the following institutions
- UKAEA
- University of York
Copyright owned by UKAEA. Pyrokinetics is licensed under LGPL-3.0, and is free to use, modify, and distribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyrokinetics-0.8.0.tar.gz.
File metadata
- Download URL: pyrokinetics-0.8.0.tar.gz
- Upload date:
- Size: 22.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46aa3d88469ed8e62b53464097e5ed1becbdf47647d5920c13819db74457b02f
|
|
| MD5 |
6a7aea063e816911f033be871ae9d6d0
|
|
| BLAKE2b-256 |
af88c31d0449a38ff9ac3348a96b95212c4f4755f2f624a73e07762d3ea28bda
|
Provenance
The following attestation bundles were made for pyrokinetics-0.8.0.tar.gz:
Publisher:
python_publish.yml on pyro-kinetics/pyrokinetics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyrokinetics-0.8.0.tar.gz -
Subject digest:
46aa3d88469ed8e62b53464097e5ed1becbdf47647d5920c13819db74457b02f - Sigstore transparency entry: 246246257
- Sigstore integration time:
-
Permalink:
pyro-kinetics/pyrokinetics@26aece516f5f33ff1b811544c907445c6bd96e24 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/pyro-kinetics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python_publish.yml@26aece516f5f33ff1b811544c907445c6bd96e24 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyrokinetics-0.8.0-py3-none-any.whl.
File metadata
- Download URL: pyrokinetics-0.8.0-py3-none-any.whl
- Upload date:
- Size: 17.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd19d38ad94b93899c3c1493db42ce775a47ea9b38cca76eb486fce9fdc6b274
|
|
| MD5 |
8ccf568d728d0be6523873756c30e541
|
|
| BLAKE2b-256 |
7259c93345a987c1dd4c6b1e5a3a94e72532e6648df82da0579083c0d7009b2c
|
Provenance
The following attestation bundles were made for pyrokinetics-0.8.0-py3-none-any.whl:
Publisher:
python_publish.yml on pyro-kinetics/pyrokinetics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyrokinetics-0.8.0-py3-none-any.whl -
Subject digest:
fd19d38ad94b93899c3c1493db42ce775a47ea9b38cca76eb486fce9fdc6b274 - Sigstore transparency entry: 246246265
- Sigstore integration time:
-
Permalink:
pyro-kinetics/pyrokinetics@26aece516f5f33ff1b811544c907445c6bd96e24 -
Branch / Tag:
refs/tags/v0.8.0 - Owner: https://github.com/pyro-kinetics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python_publish.yml@26aece516f5f33ff1b811544c907445c6bd96e24 -
Trigger Event:
push
-
Statement type: