This python-based package offers a collection of pre-built OpenMC neutron sources for fusion applications.
OpenMC is required to use this package.
To install openmc_plasma_source, simply run:
pip install openmc_plasma_source
Create a source with a spatial and temperature distribution of a tokamak plasma.
The function returns a single openmc.MeshSource backed by a CylindricalMesh.
The plasma cross-section is discretised onto the mesh and each mesh voxel is
assigned its own neutron source strength (the probability that a neutron spawns
in that voxel) and energy distribution based on the local ion temperature.
The equations implemented here are taken from this paper.
from openmc_plasma_source import tokamak_source
my_source = tokamak_source(
elongation=1.557,
ion_density_centre=1.09e20,
ion_density_pedestal=1.09e20,
ion_density_peaking_factor=1,
ion_density_separatrix=3e19,
ion_temperature_centre=45.9e3,
ion_temperature_pedestal=6.09e3,
ion_temperature_separatrix=0.1e3,
ion_temperature_peaking_factor=8.06,
ion_temperature_beta=6,
major_radius=906,
minor_radius=292.258,
pedestal_radius=0.8 * 292.258,
mode="H",
shafranov_factor=0.44789,
triangularity=0.270,
fuel={"D": 0.5, "T": 0.5},
)The mesh resolution and the density of the internal sampling grid can be controlled with optional arguments, along with the toroidal extent of the source:
my_source = tokamak_source(
# ... plasma parameters as above ...
start_angle=0, # toroidal start angle in radians
rotation_angle=2 * 3.14159, # toroidal extent in radians
mesh_resolution=(100, 100), # number of mesh bins in (r, z)
grid_density=500, # points per dimension in the (a, alpha) grid
)For a more complete example check out the example script.
Create a ring source with temperature distribution of a 2000 eV plasma.
from openmc_plasma_source import fusion_ring_source
my_source = fusion_ring_source(
radius=700,
start_angle=0.0, # toroidal start angle in radians
rotation_angle=2 * math.pi, # toroidal extent in radians (360deg source)
temperature=20000.0,
fuel={"D": 0.5, "T": 0.5},
)Create a point source with temperature distribution of a 2000 eV plasma.
from openmc_plasma_source import fusion_point_source
my_source = fusion_point_source(
coordinate=(0, 0, 0),
temperature=20000.0,
fuel={"D": 0.09, "T": 0.91}, # note this is mainly tritium fuel so that TT reactions are more likely
)To run the tests, simply run
pytest tests

