Parametric plasma source for fusion simulations in OpenMC
Project description
parametric-plasma-source
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file parametric_plasma_source-0.0.8-cp38-cp38-manylinux2014_x86_64.whl
.
File metadata
- Download URL: parametric_plasma_source-0.0.8-cp38-cp38-manylinux2014_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.8
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 849671625123f8fdc217482842d231d0ee0ecbe5dedc28ba431457ecbb4812ae |
|
MD5 | 492bf3ae169ffc4cf5110dbfdb09062f |
|
BLAKE2b-256 | 12ac2eb3bbfe18b1c12ab8f698b1a89ebb8ca9069dcfca212679e9e7df903ceb |
File details
Details for the file parametric_plasma_source-0.0.8-cp37-cp37m-manylinux2014_x86_64.whl
.
File metadata
- Download URL: parametric_plasma_source-0.0.8-cp37-cp37m-manylinux2014_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.7m
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6441ae60dc18296ac190fb96023e3515ceb3457e05fd9fdb020b531991fa5146 |
|
MD5 | d0bf4e46e5a8396a33f78686d7106e25 |
|
BLAKE2b-256 | b4f7cafcda5a8d75740a1e8bf1730cd89505adb359a4819e780f963b637af2e1 |
File details
Details for the file parametric_plasma_source-0.0.8-cp36-cp36m-manylinux2014_x86_64.whl
.
File metadata
- Download URL: parametric_plasma_source-0.0.8-cp36-cp36m-manylinux2014_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: CPython 3.6m
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33a45b1bd3dcc2900ef92e815aa4903e8c3ada7668ca0306ea75f9264891b907 |
|
MD5 | 0790ccfc61d637bf5d3f0ae3143cd23c |
|
BLAKE2b-256 | b0ec5ccb36910f4d8dd34f3e9036bed0c30e7561ae6bfde2e5d2453feddc7e23 |