Skip to main content

parametric-plasma-source

Python package

ActionsCI

Python package, C++ source and build files for parametric plasma source for use in fusion neutron transport calculations with OpenMC.

The plasma source is based on a paper by C. Fausser et al

Installation

Installing from PyPI

pip install parametric_plasma_source

Installing from source

Installation of the parametric plasma source from source requires cmake to build the underlying C++ code. This can be obtained from your OS's package manager by e.g. sudo apt-get install cmake or from cmake source.

If you intend to develop the code then it is recommended to work in a virtual environment.

The requirements for developing the code can be installed by running:

pip install -r requirements-develop.txt

The package can be built and installed in editable mode by:

pip install -e .

Usage

The parametric plasma source can be sampled either directly in Python 3, sampled in an OpenMC simulation, or sampled using OpenMC via a standalone executable without simulation.

For a better understanding of the varibles take a look at the C. Fausser et al paper.

Sampling in Python

The parametric plasma source can be imported an used in Python 3 in the following manner:

from parametric_plasma_source import PlasmaSource
from random import random

plasma_params = {
    "elongation": 1.557,
    "ion_density_origin": 1.09e20,
    "ion_density_peaking_factor": 1,
    "ion_density_pedestal": 1.09e20,
    "ion_density_separatrix": 3e19,
    "ion_temperature_origin": 45.9,
    "ion_temperature_peaking_factor": 8.06,
    "ion_temperature_pedestal": 6.09,
    "ion_temperature_separatrix": 0.1,
    "major_radius": 9.06,
    "minor_radius": 2.92258,
    "pedestal_radius": 0.8 * 2.92258,
    "plasma_id": 1,
    "shafranov_shift": 0.44789,
    "triangularity": 0.270,
    "ion_temperature_beta": 6,
}

my_plasma = PlasmaSource(**plasma_params)
sample = my_plasma.sample([random(), random(), random(), random(), random(), random(), random(), random()])
particle_x, particle_y, particle_z = sample[0], sample[1], sample[2]
particle_x_dir, particle_y_dir, particle_z_dir = sample[3], sample[4], sample[5]
particle_energy_mev = sample[6]

Sampling in OpenMC

The parametric plasma source also contains a plugin library for OpenMC to allow the source to be sampled in an OpenMC simulation.

When using the OpenMC sampling the inputs must be provided in meters where applicable (the sampling will convert to cm).

from parametric_plasma_source import PlasmaSource, SOURCE_SAMPLING_PATH
import openmc

plasma_params = {
    "elongation": 1.557,
    "ion_density_origin": 1.09e20,
    "ion_density_peaking_factor": 1,
    "ion_density_pedestal": 1.09e20,
    "ion_density_separatrix": 3e19,
    "ion_temperature_origin": 45.9,
    "ion_temperature_peaking_factor": 8.06,
    "ion_temperature_pedestal": 6.09,
    "ion_temperature_separatrix": 0.1,
    "major_radius": 9.06,
    "minor_radius": 2.92258,
    "pedestal_radius": 0.8 * 2.92258,
    "plasma_id": 1,
    "shafranov_shift": 0.44789,
    "triangularity": 0.270,
    "ion_temperature_beta": 6,
}

my_plasma = PlasmaSource(**plasma_params)
settings = openmc.Settings()
settings.run_mode = "fixed source"
settings.batches = 10
settings.particles = 1000
source = openmc.Source()
source.library = SOURCE_SAMPLING_PATH
source.parameters = str(my_plasma)
settings.source = source
settings.export_to_xml()

Sampling using Executable

It is also possible to generate a source outside of OpenMC by creating the source_generator executable by running cmake -H. -Bbuild and then cmake --build build or cmake --build build --target source_generator. The source_generator can then be run as below:

Usage:
source_generator [OPTIONS]

Options:
 -l,--library      Source library, mandatory
 -n,--particles    Number of particles, default 1000
 -o,--output       Output directory, default {current directory}
 -v,--verbosity    Verbosity, default 5

This will use OpenMC commands to sample the source generated using the specified library with the specified number of particles and output the resulting initial_source.h5 file in the requested output directory. The initial_source.h5 can then be analysed to check the properties of the source being generated.

Running Tests

The tests are run by executing pytest tests from within your virtual environment.

Metadata

Release files for parametric-plasma-source 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for parametric-plasma-source 0.0.8
File Interpreter ABI Platform
parametric_plasma_source-0.0.8-cp38-cp38-manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
parametric_plasma_source-0.0.8-cp37-cp37m-manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
parametric_plasma_source-0.0.8-cp36-cp36m-manylinux2014_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64 Details

Total release size: 11.5 MB

Release files / parametric_plasma_source-0.0.8-cp38-cp38-manylinux2014_x86_64.whl

Download URL parametric_plasma_source-0.0.8-cp38-cp38-manylinux2014_x86_64.whl
Size 3.8 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
849671625123f8fdc217482842d231d0ee0ecbe5dedc28ba431457ecbb4812ae
BLAKE2b-256 checksum
How to use checksums
12ac2eb3bbfe18b1c12ab8f698b1a89ebb8ca9069dcfca212679e9e7df903ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.9

Release files / parametric_plasma_source-0.0.8-cp37-cp37m-manylinux2014_x86_64.whl

Download URL parametric_plasma_source-0.0.8-cp37-cp37m-manylinux2014_x86_64.whl
Size 3.8 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6441ae60dc18296ac190fb96023e3515ceb3457e05fd9fdb020b531991fa5146
BLAKE2b-256 checksum
How to use checksums
b4f7cafcda5a8d75740a1e8bf1730cd89505adb359a4819e780f963b637af2e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.9

Release files / parametric_plasma_source-0.0.8-cp36-cp36m-manylinux2014_x86_64.whl

Download URL parametric_plasma_source-0.0.8-cp36-cp36m-manylinux2014_x86_64.whl
Size 3.8 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
33a45b1bd3dcc2900ef92e815aa4903e8c3ada7668ca0306ea75f9264891b907
BLAKE2b-256 checksum
How to use checksums
b0ec5ccb36910f4d8dd34f3e9036bed0c30e7561ae6bfde2e5d2453feddc7e23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.9

Release history Release notifications | RSS feed

This release

0.0.8 This release

3 release files

0.0.7

1 release file

0.0.6

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page