mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 13:45:36 -04:00
Style and spacing changes
This commit is contained in:
parent
62af773108
commit
4eda693133
5 changed files with 45 additions and 34 deletions
|
|
@ -182,19 +182,22 @@ been selected. There are three methods available:
|
|||
NCrystal materials
|
||||
------------------
|
||||
|
||||
As an alternative of the standard thermal scattering treatment using :math:`S(\alpha,\beta)`
|
||||
tables, OpenMC allows to create materials using NCrystal_. In addition to the regular thermal elastic,
|
||||
and thermal inelastic processes, NCrystal allows the generation of models for materials that
|
||||
cannot currently included in ACE files such as oriented single crystals (see the `NCrystal paper`_),
|
||||
and further extend the physics `using plugins`_. Thermal scattering kernels are generated on
|
||||
the fly from dynamic and structural data, or loaded from :math:`S(\alpha,\beta)` tables converted
|
||||
from ENDF6 evaluations. These kernels are sampled in a direct way using a fast `rejection algorithm`_
|
||||
that does not require previous processing. A `large library`_ of materials is already included in
|
||||
the NCrystal distribution, and new materials can be easily defined from scratch in the `NCMAT format`_
|
||||
or `combining existing files`_.
|
||||
As an alternative of the standard thermal scattering treatment using
|
||||
:math:`S(\alpha,\beta)` tables, OpenMC allows to create materials using
|
||||
NCrystal_. In addition to the regular thermal elastic, and thermal inelastic
|
||||
processes, NCrystal allows the generation of models for materials that cannot
|
||||
currently included in ACE files such as oriented single crystals (see the
|
||||
`NCrystal paper`_), and further extend the physics `using plugins`_. Thermal
|
||||
scattering kernels are generated on the fly from dynamic and structural data, or
|
||||
loaded from :math:`S(\alpha,\beta)` tables converted from ENDF6 evaluations.
|
||||
These kernels are sampled in a direct way using a fast `rejection algorithm`_
|
||||
that does not require previous processing. A `large library`_ of materials is
|
||||
already included in the NCrystal distribution, and new materials can be easily
|
||||
defined from scratch in the `NCMAT format`_ or `combining existing files`_.
|
||||
|
||||
The compositions of the materials defined in NCrystal are passed on to OpenMC all other reactions
|
||||
except for thermal neutron scattering are handled by continuous energy ACE libraries.
|
||||
The compositions of the materials defined in NCrystal are passed on to OpenMC
|
||||
all other reactions except for thermal neutron scattering are handled by
|
||||
continuous energy ACE libraries.
|
||||
|
||||
----------------
|
||||
Multi-Group Data
|
||||
|
|
|
|||
|
|
@ -274,9 +274,10 @@ Prerequisites
|
|||
* NCrystal_ library for defining materials with enhanced thermal neutron transport
|
||||
|
||||
Adding this option allows the creation of materials from NCrystal, which
|
||||
replaces the scattering kernel treatment of ACE files with a modular, on-the-fly approach.
|
||||
To use it `install <https://github.com/mctools/ncrystal/wiki/Get-NCrystal>`_ and
|
||||
`initialize <https://github.com/mctools/ncrystal/wiki/Using-NCrystal#setting-up>`_
|
||||
replaces the scattering kernel treatment of ACE files with a modular,
|
||||
on-the-fly approach. To use it `install
|
||||
<https://github.com/mctools/ncrystal/wiki/Get-NCrystal>`_ and `initialize
|
||||
<https://github.com/mctools/ncrystal/wiki/Using-NCrystal#setting-up>`_
|
||||
NCrystal and turn on the option in the CMake configuration step:
|
||||
|
||||
cmake -DOPENMC_USE_NCRYSTAL=on ..
|
||||
|
|
@ -374,8 +375,8 @@ OPENMC_USE_DAGMC
|
|||
(Default: off)
|
||||
|
||||
OPENMC_USE_NCRYSTAL
|
||||
Turns on support for NCrystal materials. NCrystal must be
|
||||
`installed <https://github.com/mctools/ncrystal/wiki/Get-NCrystal>`_ and
|
||||
Turns on support for NCrystal materials. NCrystal must be
|
||||
`installed <https://github.com/mctools/ncrystal/wiki/Get-NCrystal>`_ and
|
||||
`initialized <https://github.com/mctools/ncrystal/wiki/Using-NCrystal#setting-up>`_.
|
||||
(Default: off)
|
||||
|
||||
|
|
|
|||
|
|
@ -105,12 +105,14 @@ you would need to add hydrogen and oxygen to a material and then assign the
|
|||
Adding NCrystal materials
|
||||
-------------------------
|
||||
|
||||
Additional support for thermal scattering can be added by using NCrystal_.
|
||||
The :meth:`Material.from_ncrystal` class method generates a :class:`openmc.Material` object from
|
||||
an `NCrystal configuration string <https://github.com/mctools/ncrystal/wiki/Using-NCrystal#uniform-material-configuration-syntax>`_.
|
||||
Temperature, material composition, and density are passed from the configuration string
|
||||
and the `NCMAT file <https://github.com/mctools/ncrystal/wiki/NCMAT-format>`_
|
||||
that define the material, e.g.::
|
||||
Additional support for thermal scattering can be added by using NCrystal_. The
|
||||
:meth:`Material.from_ncrystal` class method generates a :class:`openmc.Material`
|
||||
object from an `NCrystal configuration string
|
||||
<https://github.com/mctools/ncrystal/wiki/Using-NCrystal#uniform-material-configuration-syntax>`_.
|
||||
Temperature, material composition, and density are passed from the configuration
|
||||
string and the `NCMAT file
|
||||
<https://github.com/mctools/ncrystal/wiki/NCMAT-format>`_ that define the
|
||||
material, e.g.::
|
||||
|
||||
mat = openmc.Material.from_ncrystal('Al_sg225.ncmat;temp=300K')
|
||||
|
||||
|
|
@ -125,12 +127,12 @@ defines a material containing polycrystalline alumnium,
|
|||
defines an oriented germanium single crystal with 40 arcsec mosaicity.
|
||||
|
||||
NCrystal only handles low energy neutron interactions. Other interactions are
|
||||
provided by standard ACE files. NCrystal_ comes with a `predefined library
|
||||
provided by standard ACE files. NCrystal_ comes with a `predefined library
|
||||
<https://github.com/mctools/ncrystal/wiki/Data-library>`_ but more materials can
|
||||
be added by creating NCMAT files or on-the-fly in the configuration string.
|
||||
|
||||
.. warning:: Currently, NCrystal_ materials cannot be modified after they are created.
|
||||
Density, temperature and composition should be defined in the
|
||||
.. warning:: Currently, NCrystal_ materials cannot be modified after they are created.
|
||||
Density, temperature and composition should be defined in the
|
||||
configuration string or the NCMAT file.
|
||||
|
||||
.. _NCrystal: https://github.com/mctools/ncrystal
|
||||
|
|
|
|||
|
|
@ -96,8 +96,9 @@ void inelastic_scatter(const Nuclide& nuc, const Reaction& rx, Particle& p);
|
|||
|
||||
void sample_secondary_photons(Particle& p, int i_nuclide);
|
||||
|
||||
// !Split or Roulette particles based their weight and the lower weight window
|
||||
// bound.
|
||||
//! Split or Roulette particles based their weight and the lower weight window
|
||||
//! bound.
|
||||
//
|
||||
//! \param[in] p, particle to be split or rouletted with the weight window.
|
||||
void split_particle(Particle& p);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
from math import pi
|
||||
|
||||
import numpy as np
|
||||
import openmc
|
||||
import openmc.lib
|
||||
|
|
@ -9,6 +11,7 @@ pytestmark = pytest.mark.skipif(
|
|||
not openmc.lib._ncrystal_enabled(),
|
||||
reason="NCrystal materials are not enabled.")
|
||||
|
||||
|
||||
def pencil_beam_model(cfg, E0, N):
|
||||
"""Return an openmc.Model() object for a monoenergetic pencil
|
||||
beam hitting a 1 mm sphere filled with the material defined by
|
||||
|
|
@ -24,7 +27,7 @@ def pencil_beam_model(cfg, E0, N):
|
|||
sample_sphere = openmc.Sphere(r=0.1)
|
||||
outer_sphere = openmc.Sphere(r=100, boundary_type="vacuum")
|
||||
cell1 = openmc.Cell(region=-sample_sphere, fill=m1)
|
||||
cell2_region= +sample_sphere & -outer_sphere
|
||||
cell2_region = +sample_sphere & -outer_sphere
|
||||
cell2 = openmc.Cell(region=cell2_region, fill=None)
|
||||
geometry = openmc.Geometry([cell1, cell2])
|
||||
|
||||
|
|
@ -48,7 +51,7 @@ def pencil_beam_model(cfg, E0, N):
|
|||
tally1 = openmc.Tally(name="angular distribution")
|
||||
tally1.scores = ["current"]
|
||||
filter1 = openmc.SurfaceFilter(sample_sphere)
|
||||
filter2 = openmc.PolarFilter(np.linspace(0, np.pi, 180+1))
|
||||
filter2 = openmc.PolarFilter(np.linspace(0, pi, 180+1))
|
||||
filter3 = openmc.CellFromFilter(cell1)
|
||||
tally1.filters = [filter1, filter2, filter3]
|
||||
tallies = openmc.Tallies([tally1])
|
||||
|
|
@ -66,11 +69,12 @@ class NCrystalTest(PyAPITestHarness):
|
|||
df = tal.get_pandas_dataframe()
|
||||
return df.to_string()
|
||||
|
||||
|
||||
def test_ncrystal():
|
||||
NParticles = 100000
|
||||
T = 293.6 # K
|
||||
E0 = 0.012 # eV
|
||||
n_particles = 100000
|
||||
T = 293.6 # K
|
||||
E0 = 0.012 # eV
|
||||
cfg = 'Al_sg225.ncmat'
|
||||
test = pencil_beam_model(cfg, E0, NParticles)
|
||||
test = pencil_beam_model(cfg, E0, n_particles)
|
||||
harness = NCrystalTest('statepoint.10.h5', model=test)
|
||||
harness.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue