/openmc_source_plotter

A Python package for extracting and plotting the locations, directions, energy distributions of OpenMC source particles

Primary LanguagePythonMIT LicenseMIT

CI with install

Upload Python Package

A Python package for plotting the positions, directions or energy distributions of OpenMC sources.

Installation

pip install openmc_source_plotter

Features

The package simply extends the default openmc.Source to provides additional functions that:

  • extract the positions, directions and energy of particles
  • visualise an osp.SourceWithPlotting with respect to:
    • direction
    • energy
    • position

Example plots

Below are some basic examples, for more examples see the examples folder for example usage scripts.

Plot of energy distribution of the source

import openmc
import openmc_source_plotter  # extends openmc.Source with plotting functions

# initialises a new source object
my_source = openmc.Source()

# sets the energy distribution to a Muir distribution neutrons for DT fusion neutrons
my_source.energy = openmc.stats.Muir(e0=14080000.0, m_rat=5.0, kt=20000.0)

# plots the particle energy distribution
plot = my_source.plot_source_energy(n_samples=2000)

plot.show()

openmc particle source energy plot

Plot of energy distribution of two sources

import openmc
import openmc_source_plotter  # extends openmc.Source with plotting functions

# initialises a new source object
my_dt_source = openmc.Source()

# sets the energy distribution to a Muir distribution DT neutrons
my_dt_source.energy = openmc.stats.Muir(e0=14080000.0, m_rat=5.0, kt=20000.0)

# initialises a new source object
my_dd_source = openmc.Source()
# sets the energy distribution to a Muir distribution DD neutrons
my_dd_source.energy = openmc.stats.Muir(e0=2080000.0, m_rat=2.0, kt=20000.0)

# plots the particle energy distribution by building on the first plot
figure1 = my_dd_source.plot_source_energy(n_samples=10000)
figure2 = my_dt_source.plot_source_energy(figure=figure1, n_samples=10000)

figure2.show()

openmc particle source energy plot

Plot direction of particles

import openmc
import openmc_source_plotter  # extends openmc.Source with plotting functions

# initializes a new source object
my_source = openmc.Source()

# sets the direction to isotropic
my_source.angle = openmc.stats.Isotropic()

# plots the particle energy distribution
plot = my_source.plot_source_direction(n_samples=200)

plot.show()

openmc particle source direction plot

Plot position of particles

import openmc
import openmc_source_plotter  # extends openmc.Source with plotting functions

# initialises a new source object
my_source = openmc.Source()

# the distribution of radius is just a single value
radius = openmc.stats.Discrete([10], [1])

# the distribution of source z values is just a single value
z_values = openmc.stats.Discrete([0], [1])

# the distribution of source azimuthal angles
# values is a uniform distribution between 0 and 2 Pi
angle = openmc.stats.Uniform(a=0.0, b=2 * 3.14159265359)

# this makes the ring source using the three distributions and a radius
my_source.space = openmc.stats.CylindricalIndependent(
    r=radius, phi=angle, z=z_values, origin=(0.0, 0.0, 0.0)
)

# plots the particle energy distribution
plot = my_source.plot_source_position()

plot.show()

openmc particle source position plot

Tokamak sources can also be plotted using the openmc-plasma-source package openmc_source_plotter_openmc-plasma-source_tokamak