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
TristanV1plugin - 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e877689f295d5f0050848bf6aacc70a550dd0d7916f7088a56ede8725ba595fe
|
|
| MD5 |
b8242c29ae0aa9cf0190509022b78a89
|
|
| BLAKE2b-256 |
6e424e07a98a77eed631bc6b9b0c09f27952550100d29abca90fdf5945af3751
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c38e788ac3935370a04a602ab6cdc42cd6cfd9c6e378c8571da8e836475a642
|
|
| MD5 |
89814e619dce26446c1d85b8cbe4d523
|
|
| BLAKE2b-256 |
24043629663539af4702debdcb9c491679a61c62da32d5fa3b8847151a80bfed
|