Skip to main content

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
  • WIP: 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.8. 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]

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

Code structure

Pyro object comprised of

  • Equilibrium
    • LocalGeometry
      • Miller
      • Fourier (to be added)
  • 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)

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

Future codes to be add

  • SimDB
  • OMFIT

Supported GK codes

The following gk codes are supported in pyrokinetics

  • CGYRO
  • GS2
  • GENE
  • TGLF

Codes to be added in the future

  • 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

It is possible to change the reference units but proceed with caution

Used By

This project is used by the following institutions

  • CCFE
  • University of York

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrokinetics-0.5.0.tar.gz (37.9 MB view details)

Uploaded Source

Built Distribution

pyrokinetics-0.5.0-py3-none-any.whl (37.1 MB view details)

Uploaded Python 3

File details

Details for the file pyrokinetics-0.5.0.tar.gz.

File metadata

  • Download URL: pyrokinetics-0.5.0.tar.gz
  • Upload date:
  • Size: 37.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pyrokinetics-0.5.0.tar.gz
Algorithm Hash digest
SHA256 d2988e48822508e30f6e1ddb146c816085c95cef145ef5fa26675c09e09187ba
MD5 3c7b48a78b1ac5b09f93f24dd8601e3f
BLAKE2b-256 1d78257e4c9d0b54207ef31652922c7f0562210f10491cc0fd3228d1cf541650

See more details on using hashes here.

File details

Details for the file pyrokinetics-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pyrokinetics-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 37.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pyrokinetics-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3537869c80390be2d08e079f74f6a40922ee6632d092e5bc1afeda67128d750
MD5 c18ea433e4c66b3344660f09e2201400
BLAKE2b-256 d3e567ef3de90755ab663c6ecbdff87f203d4a23244d6b31b29d34fcd2ddda1c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page