Parse GVEC output in Python
Project description
3D GVEC equilibria in Python
PyPI install:
pip install gvec_to_python
Or from source:
git clone git@gitlab.mpcdf.mpg.de:gvec-group/gvec_to_python.git
cd gvec_to_python
pip install -e .
Compile kernels for faster evaluations:
compile-gvec-tp
Usage
The Galerkin Variational Equilibrium Code (GVEC) calculates magneto-hydrodynamic (MHD) equilibria for Tokamaks and Stellarators. gvec_to_python
parses the GVEC output file (.dat
) and collects the data in a .json
file:
from gvec_to_python.reader.gvec_reader import create_GVEC_json
create_GVEC_json(dat_file_in, json_file_out) # give absolute paths to the files
In a second step, callables of MHD equilibrium quantities are created as methods of the GVEC class:
from gvec_to_python import GVEC
gvec = GVEC(json_file_out, mapping='gvec')
Profiles can be evaluated via
gvec.profiles.profile(s, name='phi') # toroidal flux profile (radial coordinate s~sqrt(phi_norm)
gvec.profiles.profile(s, name='chi') # poloidal flux profile
gvec.profiles.profile(s, name='iota') # iota profile
gvec.profiles.profile(s, name='pressure') # pressure profile
where the radial coordinate s
is the square-root of the normalized toroidal flux. Profile derivatives are callable via
gvec.profiles.profile(s, name='phi', der='s') # first derivative
gvec.profiles.profile(s, name='phi', der='ss') # second derivative
The mapping and metric coefficients are called via
gvec.f(s, a1, a2) # mapping
gvec.df(s, a1, a2) # Jacobian matrix
gvec.det_df(s, a1, a2) # Jacobian determinant
gvec.df_inv(s, a1, a2) # inverse Jacobian matrix
gvec.g(s, a1, a2) # metric tensor
gvec.g_inv(s, a1, a2) # inverse metric tensor
The radial coordinate denotes s
is always the square-root of the normalized toroidal flux, a1
is the poloidal angle and a2
denotes the toroidal angle.
Five different mappings can be invoked by the mapping.setter
:
# gvec standard coordinates: (s, th, ze) -> (x, y, z)
# from (s,a1,a2)=(s,theta,zeta) in [0,1],[0,2pi],[0,2pi] to cartesian coordinates (x,y,z)
gvec.mapping = 'gvec'
# gvec straight-field-line mapping (PEST) (s, theta*, zeta*) -> (x, y, z)
# from (s,a1,a2)=(s,theta*,zeta*) in [0,1],[0,2pi],[0,2pi] to cartesian coordinates (x,y,z)
gvec.mapping = 'pest'
# gvec with unit cube as logical domain (s, u, v) -> (x,y,z)
# from (s,a1,a2)=(s,u,v) in [0,1],[0,1],[0,1] to cartesian coordinates (x,y,z)
gvec.mapping = 'unit'
# gvec straight-field-line (PEST) with unit cube as logical domain (s, u*, v*) -> (x,y,z)
# from (s,a1,a2)=(s,u*,v*) in [0,1],[0,1],[0,1] to cartesian coordinates (x,y,z)
gvec.mapping = 'unit_pest'
# gvec without hmap (s,th,ze) -> (X1,X2,zeta)
# from (s,a1,a2)=(s,theta,zeta) in [0,1],[0,2pi],[0,2pi] to GVECs internal coordinates (X1,X2,zeta)
# if default torus (hmap=1) is used in GVEC, then (R,Z,phi)=(X1,X2,-zeta)
gvec.mapping = 'wo_hmap'
The MHD quantities are called via
gvec.p0(s, a1, a2) # pressure as 0-form
gvec.p3(s, a1, a2) # pressure as 3-form
gvec.bv(s, a1, a2) # contra-variant B-field
gvec.b1(s, a1, a2) # co-variant B-field (1-form)
gvec.b2(s, a1, a2) # 2-form B-field
gvec.b_cart(s, a1, a2) # Cartesian B-field
gvec.av(s, a1, a2) # contra-variant vector potential
gvec.a1(s, a1, a2) # co-variant vector potential (1-form)
gvec.a2(s, a1, a2) # 2-form vector potential
gvec.a_cart(s, a1, a2) # Cartesian vector potential
gvec.jv(s, a1, a2) # contra-variant current
gvec.j1(s, a1, a2) # co-variant current (1-form)
gvec.j2(s, a1, a2) # 2-form current
gvec.j_cart(s, a1, a2) # Cartesian current
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
Built Distribution
File details
Details for the file gvec-to-python-1.2.2.tar.gz
.
File metadata
- Download URL: gvec-to-python-1.2.2.tar.gz
- Upload date:
- Size: 235.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b90bcb4670acdc340228f85b2dd22889a0d1a039f43f516ed4e826a8b5ab0060 |
|
MD5 | 50100d844f8e173b0d7bbb73eae2d0ce |
|
BLAKE2b-256 | f8cfc321b2ceb0909e15936f2e494e7ed27d27fe67892aa14de8337271451ed9 |
File details
Details for the file gvec_to_python-1.2.2-py3-none-any.whl
.
File metadata
- Download URL: gvec_to_python-1.2.2-py3-none-any.whl
- Upload date:
- Size: 241.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b18be45a1ebf5758f8e8f1957bb47d71a81c367817510b7abd05147290f2d73 |
|
MD5 | c3e4b51e1d5c7c624de55339dc2741ff |
|
BLAKE2b-256 | 1c9c9da0b649470a514db1c8f5df9c8020369c8aee83d434d0568a47277fe6c9 |