A Python package for extracting and plotting the locations, directions, energy distributions of OpenMC source particles.
Project description
A Python package for plotting the positions, directions or energy distributions of OpenMC sources.
Installation
You will need to have OpenMC version 0.14.0 or newer installed first.
pip install openmc_source_plotter
Features
The package simply extends the default openmc.IndependentSourceBase
and openmc.Model
to provides additional functions that:
- extract the positions, directions and energy of particles
- visualise a source with respect to:
- direction
- energy
- position
Or just provide the initial particles with sample_initial_particles
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.IndependentSource with plotting functions
# initialises a new source object
my_source = openmc.IndependentSource()
# 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()
Plot of energy distribution of two sources
import openmc
import openmc_source_plotter # extends openmc.IndependentSource with plotting functions
# initialises a new source object
my_dt_source = openmc.IndependentSource()
# 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.IndependentSource()
# 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()
Plot direction of particles
import openmc
import openmc_source_plotter # extends openmc.IndependentSource with plotting functions
# initializes a new source object
my_source = openmc.IndependentSource()
# 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()
Plot position of particles
import openmc
import openmc_source_plotter # extends openmc.IndependentSource with plotting functions
# initialises a new source object
my_source = openmc.IndependentSource()
# 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()
Extract particle objects
A list of openmc.Particle
objects can be obtained using model.sample_initial_particles()
or openmc.SourceBase.sample_initial_particles()
import openmc
import openmc_source_plotter # extents openmc.Model with sample_initial_particles method
settings = openmc.Settings()
settings.particles = 1
settings.batches = 1
my_source = openmc.IndependentSource()
my_source.energy = openmc.stats.muir(e0=14080000.0, m_rat=5.0, kt=20000.0)
settings.source = my_source
materials = openmc.Materials()
sph = openmc.Sphere(r=100, boundary_type="vacuum")
cell = openmc.Cell(region=-sph)
geometry = openmc.Geometry([cell])
model = openmc.Model(geometry, materials, settings)
particles = model.sample_initial_particles(n_samples=10)
print(particles)
>>>[<SourceParticle: neutron at E=1.440285e+07 eV>, <SourceParticle: neutron at E=1.397691e+07 eV>, <SourceParticle: neutron at E=1.393681e+07 eV>, <SourceParticle: neutron at E=1.470896e+07 eV>, <SourceParticle: neutron at E=1.460563e+07 eV>, <SourceParticle: neutron at E=1.420684e+07 eV>, <SourceParticle: neutron at E=1.413932e+07 eV>, <SourceParticle: neutron at E=1.412428e+07 eV>, <SourceParticle: neutron at E=1.464779e+07 eV>, <SourceParticle: neutron at E=1.391648e+07 eV>]
print(particles[0].E)
>>>1.440285e+07
Related packages
Tokamak sources can also be plotted using the openmc-plasma-source package
Project details
Release history Release notifications | RSS feed
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
Hashes for openmc_source_plotter-0.6.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f218cca45ca6f0ff2c8f876b07a7e34c06dca8c0d673f4199a57cc58e48a869 |
|
MD5 | e5efcacb7412cc949728dd835612f06a |
|
BLAKE2b-256 | 4f89a2e295a959ee15f461cef38f3ee77137392de982ebf427a97f4cc969e97f |
Hashes for openmc_source_plotter-0.6.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdb2cd9700c4b71c9a8d9e2aef4750b9663e810fb15a2c69bfcc81c802235719 |
|
MD5 | 45118eecb4c20be3d449fc7def4e9c13 |
|
BLAKE2b-256 | 1446687453689baffb4ea3e2004ae519316a624f015a0e139280da2c6cc5cb64 |