Skip to main content

library for efficient loading of particle-in-cell simulation data produced by a variety of different codes

Project description

graph-et [grɑːf iː.tiː.]

dask and xarray based library for loading particle-in-cell simulation data produced by a variety of different codes. The support for arbitrary codes is provided through the so-called plugins. Currently supported (and planned) codes include:

  • Tristan v1
  • Tristan v2

Usage example

from graphet import Data, Dashboard
from graphet.plugins import TristanV2

# to monitor usage etc using a locally hosted dashboard
Dashboard()

# load the metadata using the TristanV2 plugin
d = Data(
    TristanV2,              # plugin
    steps=range(150),       # steps to load metadata for
    path=f"output/",        # path to the data
    cfg_fname=f"input.cfg", # configuration file
    params=True,            # read configuration file
    coord_transform={       # time/coordinate transformation
        "t": lambda t, prm: t * prm["output:interval"] * prm["algorithm:c"] / prm["grid:my0"],
        "x": lambda x, prm: (x - x.mean()) / prm["grid:my0"],
        "z": lambda z, prm: (z - z.mean()) / prm["grid:my0"],
        "y": lambda y, prm: (y - y.mean()) / prm["grid:my0"],
    },
    swapaxes=[(0, 1), (2, 1)],  # axes swapping "zyx" -> "yxz"
)

# main containers are
d.fields      # <- fields
d.particles   # <- particles
d.spectra     # <- spectra

## Examples of doing useful stuff

# plot averaged spectra of species #2 between 1.5 < t < 2.2
d.spectra.n2.sel(t=slice(1.5, 2.2)).mean("t").plot()

# plot the density of species #1 and #2 at time t = 2.5 and y = 0.1
(d.fields.dens1 + d.fields.dens2).sel(y=0.1, t=2.5, method="nearest").plot(cmap="turbo")

# compute the distribution function from the particle data for species #3 at 1.5 < t < 2.2
cnt, _ = np.histogram(
    (np.sqrt(1 + d.particles[3].u ** 2 + d.particles[3].v ** 2 + d.particles[3].w ** 2) - 1)
    .sel(t=slice(1.5, 2.2)).mean("t"),
    bins=np.logspace(-1, 3, 100),
)

# to track the energy of a single particle of species #2 with, e.g., idx = 13500000000000, across timesteps
prtl = d.particles[2].sel(idx=13500000000000)
np.sqrt(1.0 + prtl.u**2 + prtl.v**2 + prtl.w**2).plot()

Todo

  • Add support for TristanV1 plugin
  • Coordinate transformations for particles
  • Support for coordinate swapping in field names
  • Support for custom defined fields

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

graph_et-0.1.4.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

graph_et-0.1.4-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file graph_et-0.1.4.tar.gz.

File metadata

  • Download URL: graph_et-0.1.4.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for graph_et-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e877689f295d5f0050848bf6aacc70a550dd0d7916f7088a56ede8725ba595fe
MD5 b8242c29ae0aa9cf0190509022b78a89
BLAKE2b-256 6e424e07a98a77eed631bc6b9b0c09f27952550100d29abca90fdf5945af3751

See more details on using hashes here.

File details

Details for the file graph_et-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: graph_et-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for graph_et-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2c38e788ac3935370a04a602ab6cdc42cd6cfd9c6e378c8571da8e836475a642
MD5 89814e619dce26446c1d85b8cbe4d523
BLAKE2b-256 24043629663539af4702debdcb9c491679a61c62da32d5fa3b8847151a80bfed

See more details on using hashes here.

Supported by

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