Merge pull request #950 from paulromano/release-0.10

Final updates for next release
This commit is contained in:
Adam Nelson 2018-01-08 16:39:36 -05:00 committed by GitHub
commit 455efffdbf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 671 additions and 338 deletions

View file

@ -1,4 +1,4 @@
Copyright (c) 2011-2017 Massachusetts Institute of Technology
Copyright (c) 2011-2018 Massachusetts Institute of Technology
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -13,10 +13,6 @@ PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# SVG to PDF conversion
SVG2PDF = inkscape
PDFS = $(patsubst %.svg,%.pdf,$(wildcard $(IMAGEDIR)/*.svg))
# Tikz to PNG conversion
PNGS = $(patsubst %.tex,%.png,$(wildcard $(IMAGEDIR)/*.tex))
@ -41,21 +37,13 @@ help:
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
# Pattern rule for converting SVG to PDF
%.pdf: %.svg
$(SVG2PDF) -f $< -A $@
%.png: %.tex
pdflatex --interaction=nonstopmode --output-directory=$(IMAGEDIR) $<
pdftoppm -r 120 -singlefile $(patsubst %.tex,%.pdf, $<) $(basename $<)
convert -trim -fuzz 2% -transparent white $(patsubst %.tex,%.ppm,$<) $@
# Rule to build PDFs
images: $(PDFS) $(PNGS)
clean:
-rm -rf $(BUILDDIR)/*
-rm -rf $(PDFS)
-rm -rf source/pythonapi/generated/
html:

View file

@ -4,32 +4,191 @@
C API
=====
The libopenmc shared library that is built when installing OpenMC exports a
number of C interoperable functions and global variables that can be used for
in-memory coupling. While it is possible to directly use the C API as documented
here for coupling, most advanced users will find it easier to work with the
Python bindings in the :py:mod:`openmc.capi` module.
.. warning:: The C API is still experimental and may undergo substantial changes
in future releases.
----------------
Type Definitions
----------------
.. c:type:: Bank
Attributes of a source particle.
.. c:member:: double wgt
Weight of the particle
.. c:member:: double xyz[3]
Position of the particle (units of cm)
.. c:member:: double uvw[3]
Unit vector indicating direction of the particle
.. c:member:: double E
Energy of the particle in eV
.. c:member:: int delayed_group
If the particle is a delayed neutron, indicates which delayed precursor
group it was born from. If not a delayed neutron, this member is zero.
---------
Functions
---------
.. c:function:: void openmc_calculate_volumes()
Run a stochastic volume calculation
.. c:function:: int openmc_cell_get_fill(int32_t index, int* type, int32_t** indices, int32_t* n)
Get the fill for a cell
:param int32_t index: Index in the cells array
:param int* type: Type of the fill
:param int32_t** indices: Array of material indices for cell
:param int32_t* n: Length of indices array
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_cell_get_id(int32_t index, int32_t* id)
Get the ID of a cell
:param index: Index in the cells array
:type index: int32_t
:param id: ID of the cell
:type id: int32_t*
:param int32_t index: Index in the cells array
:param int32_t* id: ID of the cell
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_cell_set_temperature(index index, double T, int32_t* instance)
.. c:function:: int openmc_cell_set_fill(int32_t index, int type, int32_t n, const int32_t* indices)
Set the fill for a cell
:param int32_t index: Index in the cells array
:param int type: Type of the fill
:param int32_t n: Length of indices array
:param indices: Array of material indices for cell
:type indices: const int32_t*
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_cell_set_id(int32_t index, int32_t id)
Set the ID of a cell
:param int32_t index: Index in the cells array
:param int32_t id: ID of the cell
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_cell_set_temperature(index index, double T, const int32_t* instance)
Set the temperature of a cell.
:param index: Index in the cells array
:type index: int32_t
:param T: Temperature in Kelvin
:type T: double
:param int32_t index: Index in the cells array
:param double T: Temperature in Kelvin
:param instance: Which instance of the cell. To set the temperature for all
instances, pass a null pointer.
:type instance: int32_t*
:type instance: const int32_t*
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_energy_filter_get_bins(int32_t index, double** energies, int32_t* n)
Return the bounding energies for an energy filter
:param int32_t index: Index in the filters array
:param double** energies: Bounding energies of the bins for the energy filter
:param int32_t* n: Number of energies specified
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_energy_filter_set_bins(int32_t index, int32_t n, const double* energies)
Set the bounding energies for an energy filter
:param int32_t index: Index in the filters array
:param int32_t n: Number of energies specified
:param energies: Bounding energies of the bins for the energy filter
:type energies: const double*
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_extend_cells(int32_t n, int32_t* index_start, int32_t* index_end)
Extend the cells array by n elements
:param int32_t n: Number of cells to create
:param int32_t* index_start: Index of first new cell
:param int32_t* index_end: Index of last new cell
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_extend_filters(int32_t n, int32_t* index_start, int32_t* index_end)
Extend the filters array by n elements
:param int32_t n: Number of filters to create
:param int32_t* index_start: Index of first new filter
:param int32_t* index_end: Index of last new filter
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_extend_materials(int32_t n, int32_t* index_start, int32_t* index_end)
Extend the materials array by n elements
:param int32_t n: Number of materials to create
:param int32_t* index_start: Index of first new material
:param int32_t* index_end: Index of last new material
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_extend_sources(int32_t n, int32_t* index_start, int32_t* index_end)
Extend the external sources array by n elements
:param int32_t n: Number of sources to create
:param int32_t* index_start: Index of first new source
:param int32_t* index_end: Index of last new source
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_extend_tallies(int32_t n, int32_t* index_start, int32_t* index_end)
Extend the tallies array by n elements
:param int32_t n: Number of tallies to create
:param int32_t* index_start: Index of first new tally
:param int32_t* index_end: Index of last new tally
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_filter_get_id(int32_t index, int32_t* id)
Get the ID of a filter
:param int32_t index: Index in the filters array
:param int32_t* id: ID of the filter
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_filter_set_id(int32_t index, int32_t id)
Set the ID of a filter
:param int32_t index: Index in the filters array
:param int32_t id: ID of the filter
:return: Return status (negative if an error occurred)
:rtype: int
@ -41,54 +200,41 @@ C API
Determine the ID of the cell/material containing a given point
:param xyz: Cartesian coordinates
:type xyz: double[3]
:param rtype: Which ID to return (1=cell, 2=material)
:type rtype: int
:param id: ID of the cell/material found. If a material is requested and the
point is in a void, the ID is 0. If an error occurs, the ID is -1.
:type id: int32_t*
:param instance: If a cell is repetaed in the geometry, the instance of the
cell that was found and zero otherwise.
:type instance: int32_t*
:param double[3] xyz: Cartesian coordinates
:param int rtype: Which ID to return (1=cell, 2=material)
:param int32_t* id: ID of the cell/material found. If a material is requested
and the point is in a void, the ID is 0. If an error
occurs, the ID is -1.
:param int32_t* instance: If a cell is repeated in the geometry, the instance
of the cell that was found and zero otherwise.
.. c:function:: int openmc_get_cell_index(int32_t id, int32_t* index)
Get the index in the cells array for a cell with a given ID
:param id: ID of the cell
:type id: int32_t
:param index: Index in the cells array
:type index: int32_t*
:param int32_t id: ID of the cell
:param int32_t* index: Index in the cells array
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_get_keff(double k_combined[])
.. c:function:: int openmc_get_filter_index(int32_t id, int32_t* index)
:param k_combined: Combined estimate of k-effective
:type k_combined: double[2]
Get the index in the filters array for a filter with a given ID
:param int32_t id: ID of the filter
:param int32_t* index: Index in the filters array
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_get_nuclide_index(char name[], int* index)
.. c:function:: void openmc_get_filter_next_id(int32_t* id)
Get the index in the nuclides array for a nuclide with a given name
Get an integer ID that has not been used by any filters.
:param name: Name of the nuclide
:type name: char[]
:param index: Index in the nuclides array
:type index: int*
:return: Return status (negative if an error occurs)
:rtype: int
:param int32_t* id: Unused integer ID
.. c:function:: int openmc_get_tally_index(int32_t id, int32_t* index)
.. c:function:: int openmc_get_keff(double k_combined[2])
Get the index in the tallies array for a tally with a given ID
:param id: ID of the tally
:type id: int32_t
:param index: Index in the tallies array
:type index: int32_t*
:param double[2] k_combined: Combined estimate of k-effective
:return: Return status (negative if an error occurs)
:rtype: int
@ -96,10 +242,26 @@ C API
Get the index in the materials array for a material with a given ID
:param id: ID of the material
:type id: int32_t
:param index: Index in the materials array
:type index: int32_t*
:param int32_t id: ID of the material
:param int32_t* index: Index in the materials array
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_get_nuclide_index(char name[], int* index)
Get the index in the nuclides array for a nuclide with a given name
:param char[] name: Name of the nuclide
:param int* index: Index in the nuclides array
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_get_tally_index(int32_t id, int32_t* index)
Get the index in the tallies array for a tally with a given ID
:param int32_t id: ID of the tally
:param int32_t* index: Index in the tallies array
:return: Return status (negative if an error occurs)
:rtype: int
@ -107,48 +269,42 @@ C API
Reset tallies, timers, and pseudo-random number generator state
.. c:function:: void openmc_init(int intracomm)
.. c:function:: void openmc_init(const int* intracomm)
Initialize OpenMC
:param intracomm: MPI intracommunicator
:type intracomm: int
:param intracomm: MPI intracommunicator. If MPI is not being used, a null
pointer should be passed.
:type intracomm: const int*
.. c:function:: int openmc_load_nuclide(char name[])
Load data for a nuclide from the HDF5 data library.
:param name: Name of the nuclide.
:type name: char[]
:param char[] name: Name of the nuclide.
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_material_add_nuclide(int32_t index, char name[], double density)
.. c:function:: int openmc_material_add_nuclide(int32_t index, const char name[], double density)
Add a nuclide to an existing material. If the nuclide already exists, the
density is overwritten.
:param index: Index in the materials array
:type index: int32_t
:param int32_t index: Index in the materials array
:param name: Name of the nuclide
:type name: char[]
:param density: Density in atom/b-cm
:type density: double
:type name: const char[]
:param double density: Density in atom/b-cm
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_material_get_densities(int32_t index, int* nuclides[], double* densities[])
.. c:function:: int openmc_material_get_densities(int32_t index, int** nuclides, double** densities, int* n)
Get density for each nuclide in a material.
:param index: Index in the materials array
:type index: int32_t
:param nuclides: Pointer to array of nuclide indices
:type nuclides: int**
:param densities: Pointer to the array of densities
:type densities: double**
:param n: Length of the array
:type n: int
:param int32_t index: Index in the materials array
:param int** nuclides: Pointer to array of nuclide indices
:param double** densities: Pointer to the array of densities
:param int* n: Length of the array
:return: Return status (negative if an error occurs)
:rtype: int
@ -156,10 +312,8 @@ C API
Get the ID of a material
:param index: Index in the materials array
:type index: int32_t
:param id: ID of the material
:type id: int32_t*
:param int32_t index: Index in the materials array
:param int32_t* id: ID of the material
:return: Return status (negative if an error occurred)
:rtype: int
@ -167,34 +321,75 @@ C API
Set the density of a material.
:param index: Index in the materials array
:type index: int32_t
:param density: Density of the material in atom/b-cm
:type density: double
:param int32_t index: Index in the materials array
:param double density: Density of the material in atom/b-cm
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_material_set_densities(int32_t, n, char* name[], double density[])
.. c:function:: int openmc_material_set_densities(int32_t index, int n, const char** name, const double density*)
:param index: Index in the materials array
:type index: int32_t
:param n: Length of name/density
:type n: int
:param int32_t index: Index in the materials array
:param int n: Length of name/density
:param name: Array of nuclide names
:type name: char**
:type name: const char**
:param density: Array of densities
:type density: double[]
:type density: const double*
:return: Return status (negative if an error occurs)
:rtype: int
.. c:function:: int openmc_nuclide_name(int index, char* name[])
.. c:function:: int openmc_material_set_id(int32_t index, int32_t id)
Set the ID of a material
:param int32_t index: Index in the materials array
:param int32_t id: ID of the material
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_material_filter_get_bins(int32_t index, int32_t** bins, int32_t* n)
Get the bins for a material filter
:param int32_t index: Index in the filters array
:param int32_t** bins: Index in the materials array for each bin
:param int32_t* n: Number of bins
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_material_filter_set_bins(int32_t index, int32_t n, const int32_t* bins)
Set the bins for a material filter
:param int32_t index: Index in the filters array
:param int32_t n: Number of bins
:param bins: Index in the materials array for each bin
:type bins: const int32_t*
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_mesh_filter_set_mesh(int32_t index, int32_t index_mesh)
Set the mesh for a mesh filter
:param int32_t index: Index in the filters array
:param int32_t index_mesh: Index in the meshes array
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_next_batch()
Simulate next batch of particles. Must be called after openmc_simulation_init().
:return: Integer indicating whether simulation has finished (negative) or not
finished (zero).
:rtype: int
.. c:function:: int openmc_nuclide_name(int index, char** name)
Get name of a nuclide
:param index: Index in the nuclides array
:type index: int
:param name: Name of the nuclide
:type name: char**
:param int index: Index in the nuclides array
:param char** name: Name of the nuclide
:return: Return status (negative if an error occurs)
:rtype: int
@ -210,27 +405,84 @@ C API
Run a simulation
.. c:function:: void openmc_simulation_finalize()
Finalize a simulation.
.. c:function:: void openmc_simulation_init()
Initialize a simulation. Must be called after openmc_init().
.. c:function:: int openmc_source_bank(struct Bank** ptr, int64_t* n)
Return a pointer to the source bank array.
:param ptr: Pointer to the source bank array
:type ptr: struct Bank**
:param int64_t* n: Length of the source bank array
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_source_set_strength(int32_t index, double strength)
Set the strength of an external source
:param int32_t index: Index in the external source array
:param double strength: Source strength
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: void openmc_statepoint_write(const char filename[])
Write a statepoint file
:param filename: Name of file to create. If a null pointer is passed, a
filename is assigned automatically.
:type filename: const char[]
.. c:function:: int openmc_tally_get_id(int32_t index, int32_t* id)
Get the ID of a tally
:param index: Index in the tallies array
:type index: int32_t
:param id: ID of the tally
:type id: int32_t*
:param int32_t index: Index in the tallies array
:param int32_t* id: ID of the tally
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_get_nuclides(int32_t index, int* nuclides[], int* n)
.. c:function:: int openmc_tally_get_filters(int32_t index, int32_t** indices, int* n)
Get filters specified in a tally
:param int32_t index: Index in the tallies array
:param int32_t** indices: Array of filter indices
:param int* n: Number of filters
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_get_n_realizations(int32_t index, int32_t* n)
:param int32_t index: Index in the tallies array
:param int32_t* n: Number of realizations
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_get_nuclides(int32_t index, int** nuclides, int* n)
Get nuclides specified in a tally
:param index: Index in the tallies array
:type index: int32_t
:param nuclides: Array of nuclide indices
:type nuclides: int**
:param n: Number of nuclides
:type n: int*
:param int32_t index: Index in the tallies array
:param int** nuclides: Array of nuclide indices
:param int* n: Number of nuclides
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_get_scores(int32_t index, int** scores, int* n)
Get scores specified for a tally
:param int32_t index: Index in the tallies array
:param int** scores: Array of scores
:param int* n: Number of scores
:return: Return status (negative if an error occurred)
:rtype: int
@ -238,24 +490,50 @@ C API
Get a pointer to tally results array.
:param index: Index in the tallies array
:type index: int32_t
:param ptr: Pointer to the results array
:type ptr: double**
:param shape_: Shape of the results array
:type shape_: int[3]
:param int32_t index: Index in the tallies array
:param double** ptr: Pointer to the results array
:param int[3] shape_: Shape of the results array
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_set_nuclides(int32_t index, int n, char* nuclides[])
.. c:function:: int openmc_tally_set_filters(int32_t index, int n, const int32_t* indices)
Set filters for a tally
:param int32_t index: Index in the tallies array
:param int n: Number of filters
:param indices: Array of filter indices
:type indices: const int32_t*
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_set_id(int32_t index, int32_t id)
Set the ID of a tally
:param int32_t index: Index in the tallies array
:param int32_t id: ID of the tally
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_set_nuclides(int32_t index, int n, const char** nuclides)
Set the nuclides for a tally
:param index: Index in the tallies array
:type index: int32_t
:param n: Number of nuclides
:type n: int
:param int32_t index: Index in the tallies array
:param int n: Number of nuclides
:param nuclides: Array of nuclide names
:type nuclides: char**
:type nuclides: const char**
:return: Return status (negative if an error occurred)
:rtype: int
.. c:function:: int openmc_tally_set_scores(int32_t index, int n, const int* scores)
Set scores for a tally
:param int32_t index: Index in the tallies array
:param int n: Number of scores
:param scores: Array of scores
:type scores: const int*
:return: Return status (negative if an error occurred)
:rtype: int

View file

@ -27,7 +27,7 @@ except ImportError:
MOCK_MODULES = ['numpy', 'numpy.polynomial', 'numpy.polynomial.polynomial',
'numpy.ctypeslib', 'scipy', 'scipy.sparse', 'scipy.interpolate',
'scipy.integrate', 'scipy.optimize', 'scipy.special',
'scipy.stats', 'h5py', 'pandas', 'uncertainties',
'scipy.stats', 'h5py', 'pandas', 'uncertainties', 'matplotlib',
'matplotlib.pyplot','openmoc', 'openmc.data.reconstruct']
sys.modules.update((mod_name, MagicMock()) for mod_name in MOCK_MODULES)
@ -52,6 +52,7 @@ extensions = ['sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
'sphinx.ext.imgconverter',
'sphinx_numfig',
'notebook_sphinxext']
@ -69,16 +70,16 @@ master_doc = 'index'
# General information about the project.
project = u'OpenMC'
copyright = u'2011-2017, Massachusetts Institute of Technology'
copyright = u'2011-2018, Massachusetts Institute of Technology'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = "0.9"
version = "0.10"
# The full version, including alpha/beta/rc tags.
release = "0.9.0"
release = "0.10.0"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@ -253,5 +254,5 @@ intersphinx_mapping = {
'python': ('https://docs.python.org/3', None),
'numpy': ('https://docs.scipy.org/doc/numpy/', None),
'pandas': ('http://pandas.pydata.org/pandas-docs/stable/', None),
'matplotlib': ('http://matplotlib.org/', None)
'matplotlib': ('https://matplotlib.org/', None)
}

View file

@ -5,15 +5,16 @@ Building Sphinx Documentation
=============================
In order to build the documentation in the ``docs`` directory, you will need to
have the Sphinx_ third-party Python package. The easiest way to install Sphinx
is via pip:
have the `Sphinx <http://openmc.readthedocs.io/en/latest/>`_ third-party Python
package. The easiest way to install Sphinx is via pip:
.. code-block:: sh
sudo pip install sphinx
Additionally, you will also need a Sphinx extension for numbering figures. The
Numfig_ package can be installed directly with pip:
`Numfig <http://openmc.readthedocs.io/en/latest/>`_ package can be installed
directly with pip:
.. code-block:: sh
@ -24,7 +25,7 @@ Building Documentation as a Webpage
-----------------------------------
To build the documentation as a webpage (what appears at
http://mit-crpg.github.io/openmc), simply go to the ``docs`` directory and run:
http://openmc.readthedocs.io), simply go to the ``docs`` directory and run:
.. code-block:: sh
@ -35,21 +36,9 @@ Building Documentation as a PDF
-------------------------------
To build PDF documentation, you will need to have a LaTeX distribution installed
on your computer as well as Inkscape_, which is used to convert .svg files to
.pdf files. Inkscape can be installed in a Debian-derivative with:
.. code-block:: sh
sudo apt-get install inkscape
One the pre-requisites are installed, simply go to the ``docs`` directory and
run:
on your computer. Once you have a LaTeX distribution installed, simply go to the
``docs`` directory and run:
.. code-block:: sh
make latexpdf
.. _Sphinx: http://sphinx-doc.org
.. _sphinxcontrib-tikz: https://bitbucket.org/philexander/tikz
.. _Numfig: https://pypi.python.org/pypi/sphinx_numfig
.. _Inkscape: https://inkscape.org

View file

@ -4,7 +4,7 @@
License Agreement
=================
Copyright © 2011-2017 Massachusetts Institute of Technology
Copyright © 2011-2018 Massachusetts Institute of Technology
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -47,7 +47,7 @@ dividing space into two half-spaces.
.. _fig-halfspace:
.. figure:: ../_images/halfspace.*
.. figure:: ../_images/halfspace.svg
:align: center
:figclass: align-center
@ -63,7 +63,7 @@ defined as the intersection of an ellipse and two planes.
.. _fig-union:
.. figure:: ../_images/union.*
.. figure:: ../_images/union.svg
:align: center
:figclass: align-center
@ -482,7 +482,7 @@ upper-right tiles, respectively.
.. _fig-rect-lat:
.. figure:: ../_images/rect_lat.*
.. figure:: ../_images/rect_lat.svg
:align: center
:figclass: align-center
:width: 400px
@ -521,7 +521,7 @@ right side.
.. _fig-hex-lat:
.. figure:: ../_images/hex_lat.*
.. figure:: ../_images/hex_lat.svg
:align: center
:figclass: align-center
:width: 400px

View file

@ -1,6 +1,6 @@
---------------------------------------------------
:data:`openmc.capi` -- Python bindings to the C API
---------------------------------------------------
--------------------------------------------------
:mod:`openmc.capi` -- Python bindings to the C API
--------------------------------------------------
.. automodule:: openmc.capi
@ -12,25 +12,25 @@ Functions
:nosignatures:
:template: myfunction.rst
openmc.capi.calculate_volumes
openmc.capi.finalize
openmc.capi.find_cell
openmc.capi.find_material
openmc.capi.hard_reset
openmc.capi.init
openmc.capi.iter_batches
openmc.capi.keff
openmc.capi.load_nuclide
openmc.capi.next_batch
openmc.capi.num_realizations
openmc.capi.plot_geometry
openmc.capi.reset
openmc.capi.run
openmc.capi.run_in_memory
openmc.capi.simulation_init
openmc.capi.simulation_finalize
openmc.capi.source_bank
openmc.capi.statepoint_write
calculate_volumes
finalize
find_cell
find_material
hard_reset
init
iter_batches
keff
load_nuclide
next_batch
num_realizations
plot_geometry
reset
run
run_in_memory
simulation_init
simulation_finalize
source_bank
statepoint_write
Classes
-------
@ -40,9 +40,9 @@ Classes
:nosignatures:
:template: myclass.rst
openmc.capi.Cell
openmc.capi.EnergyFilter
openmc.capi.MaterialFilter
openmc.capi.Material
openmc.capi.Nuclide
openmc.capi.Tally
Cell
EnergyFilter
MaterialFilter
Material
Nuclide
Tally

View file

@ -44,13 +44,13 @@ Next, resynchronize the package index files:
.. code-block:: sh
sudo apt-get update
sudo apt update
Now OpenMC should be recognized within the repository and can be installed:
.. code-block:: sh
sudo apt-get install openmc
sudo apt install openmc
Binary packages from this PPA may exist for earlier versions of Ubuntu, but they
are no longer supported.
@ -69,9 +69,7 @@ installed directly from the package manager.
.. code-block:: sh
sudo apt-get install gfortran
sudo apt-get install cmake
sudo apt-get install libhdf5-dev
sudo apt install gfortran g++ cmake libhdf5-dev
After the packages have been installed, follow the instructions below for
building and installing OpenMC from source.

View file

@ -1,59 +1,41 @@
.. _releasenotes:
==============================
Release Notes for OpenMC 0.9.0
==============================
===============================
Release Notes for OpenMC 0.10.0
===============================
.. currentmodule:: openmc
This release of OpenMC is the first release to use a new native HDF5 cross
section format rather than ACE format cross sections. Other significant new
features include a nuclear data interface in the Python API (:mod:`openmc.data`)
a stochastic volume calculation capability, a random sphere packing algorithm
that can handle packing fractions up to 60%, and a new XML parser with
significantly better performance than the parser used previously.
.. caution:: With the new cross section format, the default energy units are now
**electronvolts (eV)** rather than megaelectronvolts (MeV)! If you
are specifying an energy filter for a tally, make sure you use
units of eV now.
This release of OpenMC includes several new features, performance improvements,
and bug fixes compared to version 0.9.0. Notably, a C API has been added that
enables in-memory coupling of neutronics to other physics fields, e.g., burnup
calculations and thermal-hydraulics. The C API is also backed by Python bindings
in a new :mod:`openmc.capi` package. Users should be forewarned that the C API
is still in an experimental state and the interface is likely to undergo changes
in future versions.
The Python API continues to improve over time; several backwards incompatible
changes were made in the API which users of previous versions should take note
of:
- Each type of tally filter is now specified with a separate class. For example::
- To indicate that nuclides in a material should be treated such that elastic
scattering is isotropic in the laboratory system, there is a new
:attr:`Material.isotropic` property::
energy_filter = openmc.EnergyFilter([0.0, 0.625, 4.0, 1.0e6, 20.0e6])
mat = openmc.Material()
mat.add_nuclide('H1', 1.0)
mat.isotropic = ['H1']
- Several attributes of the :class:`Plot` class have changed (``color`` ->
``color_by`` and ``col_spec`` > ``colors``). :attr:`Plot.colors` now accepts a
dictionary mapping :class:`Cell` or :class:`Material` instances to RGB
3-tuples or string colors names, e.g.::
To treat all nuclides in a material this way, the
:meth:`Material.make_isotropic_in_lab` method can still be used.
plot.colors = {
fuel: 'yellow',
water: 'blue'
}
- The initializers for :class:`openmc.Intersection` and :class:`openmc.Union`
now expect an iterable.
- ``make_hexagon_region`` is now :func:`get_hexagonal_prism`
- Several changes in :class:`Settings` attributes:
- Auto-generated unique IDs for classes now start from 1 rather than 10000.
- ``weight`` is now set as ``Settings.cutoff['weight']``
- Shannon entropy is now specified by passing a :class:`openmc.Mesh` to
:attr:`Settings.entropy_mesh`
- Uniform fission site method is now specified by passing a
:class:`openmc.Mesh` to :attr:`Settings.ufs_mesh`
- All ``sourcepoint_*`` options are now specified in a
:attr:`Settings.sourcepoint` dictionary
- Resonance scattering method is now specified as a dictionary in
:attr:`Settings.resonance_scattering`
- Multipole is now turned on by setting ``Settings.temperature['multipole'] =
True``
- The ``output_path`` attribute is now ``Settings.output['path']``
- All the ``openmc.mgxs.Nu*`` classes are gone. Instead, a ``nu`` argument was
added to the constructor of the corresponding classes.
.. attention:: This is the last release of OpenMC that will support Python
2.7. Future releases of OpenMC will require Python 3.4 or later.
-------------------
System Requirements
@ -69,69 +51,34 @@ problem at hand (mostly on the number of nuclides and tallies in the problem).
New Features
------------
- Stochastic volume calculations
- Multi-delayed group cross section generation
- Ability to calculate multi-group cross sections over meshes
- Temperature interpolation on cross section data
- Nuclear data interface in Python API, :mod:`openmc.data`
- Allow cutoff energy via :attr:`Settings.cutoff`
- Ability to define fuel by enrichment (see :meth:`Material.add_element`)
- Random sphere packing for TRISO particle generation,
:func:`openmc.model.pack_trisos`
- Critical eigenvalue search, :func:`openmc.search_for_keff`
- Model container, :class:`openmc.model.Model`
- In-line plotting in Jupyter, :func:`openmc.plot_inline`
- Energy function tally filters, :class:`openmc.EnergyFunctionFilter`
- Replaced FoX XML parser with `pugixml <http://pugixml.org/>`_
- Cell/material instance counting, :meth:`Geometry.determine_paths`
- Differential tallies (see :class:`openmc.TallyDerivative`)
- Consistent multi-group scattering matrices
- Improved documentation and new Jupyter notebooks
- OpenMOC compatibility module, :mod:`openmc.openmoc_compatible`
- Rotationally-periodic boundary conditions
- C API (with Python bindings) for in-memory coupling
- Improved correlation for Uranium enrichment
- Support for partial S(a,b) tables
- Improved handling of autogenerated IDs
- Many performance/memory improvements
---------
Bug Fixes
---------
- c5df6c_: Fix mesh filter max iterator check
- 1cfa39_: Reject external source only if 95% of sites are rejected
- 335359_: Fix bug in plotting meshlines
- 17c678_: Make sure system_clock uses high-resolution timer
- 23ec0b_: Fix use of S(a,b) with multipole data
- 7eefb7_: Fix several bugs in tally module
- 7880d4_: Allow plotting calculation with no boundary conditions
- ad2d9f_: Fix filter weight missing when scoring all nuclides
- 59fdca_: Fix use of source files for fixed source calculations
- 9eff5b_: Fix thermal scattering bugs
- 7848a9_: Fix combined k-eff estimator producing NaN
- f139ce_: Fix printing bug for tallies with AggregateNuclide
- b8ddfa_: Bugfix for short tracks near tally mesh edges
- ec3cfb_: Fix inconsistency in filter weights
- 5e9b06_: Fix XML representation for verbosity
- c39990_: Fix bug tallying reaction rates with multipole on
- c6b67e_: Fix fissionable source sampling bug
- 489540_: Check for void materials in tracklength tallies
- f0214f_: Fixes/improvements to the ARES algorithm
- 937469_: Fix energy group sampling for multi-group simulations
- a149ef_: Ensure mutable objects are not hashable
- 2c9b21_: Preserve backwards compatibility for generated HDF5 libraries
- 8047f6_: Handle units of division for tally arithmetic correctly
- 0beb4c_: Compatibility with newer versions of Pandas
- f124be_: Fix generating 0K data with openmc.data.njoy module
- 0c6915_: Bugfix for generating thermal scattering data
- 61ecb4_: Fix bugs in Python multipole objects
.. _c5df6c: https://github.com/mit-crpg/openmc/commit/c5df6c
.. _1cfa39: https://github.com/mit-crpg/openmc/commit/1cfa39
.. _335359: https://github.com/mit-crpg/openmc/commit/335359
.. _17c678: https://github.com/mit-crpg/openmc/commit/17c678
.. _23ec0b: https://github.com/mit-crpg/openmc/commit/23ec0b
.. _7eefb7: https://github.com/mit-crpg/openmc/commit/7eefb7
.. _7880d4: https://github.com/mit-crpg/openmc/commit/7880d4
.. _ad2d9f: https://github.com/mit-crpg/openmc/commit/ad2d9f
.. _59fdca: https://github.com/mit-crpg/openmc/commit/59fdca
.. _9eff5b: https://github.com/mit-crpg/openmc/commit/9eff5b
.. _7848a9: https://github.com/mit-crpg/openmc/commit/7848a9
.. _f139ce: https://github.com/mit-crpg/openmc/commit/f139ce
.. _b8ddfa: https://github.com/mit-crpg/openmc/commit/b8ddfa
.. _ec3cfb: https://github.com/mit-crpg/openmc/commit/ec3cfb
.. _5e9b06: https://github.com/mit-crpg/openmc/commit/5e9b06
.. _c39990: https://github.com/mit-crpg/openmc/commit/c39990
.. _c6b67e: https://github.com/mit-crpg/openmc/commit/c6b67e
.. _489540: https://github.com/mit-crpg/openmc/commit/489540
.. _f0214f: https://github.com/mit-crpg/openmc/commit/f0214f
.. _937469: https://github.com/mit-crpg/openmc/commit/937469
.. _a149ef: https://github.com/mit-crpg/openmc/commit/a149ef
.. _2c9b21: https://github.com/mit-crpg/openmc/commit/2c9b21
.. _8047f6: https://github.com/mit-crpg/openmc/commit/8047f6
.. _0beb4c: https://github.com/mit-crpg/openmc/commit/0beb4c
.. _f124be: https://github.com/mit-crpg/openmc/commit/f124be
.. _0c6915: https://github.com/mit-crpg/openmc/commit/0c6915
.. _61ecb4: https://github.com/mit-crpg/openmc/commit/61ecb4
------------
Contributors
@ -139,14 +86,19 @@ Contributors
This release contains new contributions from the following people:
- `Brody Bassett <brbass@umich.edu>`_
- `Will Boyd <wbinventor@gmail.com>`_
- `Guillaume Giudicelli <g_giud@mit.edu>`_
- `Brittany Grayson <graybri3@isu.edu>`_
- `Sterling Harper <sterlingmharper@gmail.com>`_
- `Qingming He <906459647@qq.com>`_
- `Colin Josey <cjosey@mit.edu>`_
- `Travis Labossiere-Hickman <tjlaboss@mit.edu>`_
- `Jingang Liang <liangjg2008@gmail.com>`_
- `Alex Lindsay <alexlindsay239@gmail.com>`_
- `Johnny Liu <johnny16.21@gmail.com>`_
- `Amanda Lund <alund@anl.gov>`_
- `April Novak <novak@berkeley.edu>`_
- `Adam Nelson <nelsonag@umich.edu>`_
- `Jose Salcedo Perez <salcedop@mit.edu>`_
- `Paul Romano <paul.k.romano@gmail.com>`_
- `Sam Shaner <samuelshaner@gmail.com>`_
- `Jon Walsh <jonathan.a.walsh@gmail.com>`_

View file

@ -222,6 +222,13 @@ named ``njoy`` available on your path. If you want to explicitly name the
executable, the ``njoy_exec`` optional argument can be used. Additionally, the
``stdout`` argument can be used to show the progress of the NJOY run.
To generate a thermal scattering file, you need to specify both an ENDF incident
neutron sub-library file as well as a thermal neutron scattering sub-library
file; for example::
light_water = openmc.data.ThermalScattering.from_njoy(
'neutrons/n-001_H_001.endf', 'thermal_scatt/tsl-HinH2O.endf')
Once you have instances of :class:`IncidentNeutron` and
:class:`ThermalScattering`, a library can be created by using the
``export_to_hdf5()`` methods and the :class:`DataLibrary` class as described in

View file

@ -95,10 +95,10 @@ Prerequisites
* A C/C++ compiler such as gcc_
OpenMC includes two libraries written in C and C++, respectively. These
libraries have been tested to work with a wide variety of compilers. If
you are using a Debian-based distribution, you can install the g++
compiler using the following command::
OpenMC includes various source files written in C and C++,
respectively. These source files have been tested to work with a wide
variety of compilers. If you are using a Debian-based distribution, you
can install the g++ compiler using the following command::
sudo apt install g++
@ -113,34 +113,38 @@ Prerequisites
* HDF5_ Library for portable binary output format
OpenMC uses HDF5 for binary output files. As such, you will need to have
HDF5 installed on your computer. The installed version will need to have
been compiled with the same compiler you intend to compile OpenMC with. If
you are using HDF5 in conjunction with MPI, we recommend that your HDF5
installation be built with parallel I/O features. An example of
configuring HDF5_ is listed below::
OpenMC uses HDF5 for many input/output files. As such, you will need to
have HDF5 installed on your computer. The installed version will need to
have been compiled with the same compiler you intend to compile OpenMC
with. If compiling with gcc from the APT repositories, users of Debian
derivatives can install HDF5 and/or parallel HDF5 through the package
manager::
FC=/opt/mpich/3.1/bin/mpif90 CC=/opt/mpich/3.1/bin/mpicc \
./configure --prefix=/opt/hdf5/1.8.12 --enable-fortran \
--enable-fortran2003 --enable-parallel
sudo apt install libhdf5-dev
Parallel versions of the HDF5 library called `libhdf5-mpich-dev` and
`libhdf5-openmpi-dev` exist which are built against MPICH and OpenMPI,
respectively. To link against a parallel HDF5 library, make sure to set
the HDF5_PREFER_PARALLEL CMake option, e.g.::
FC=mpifort.mpich cmake -DHDF5_PREFER_PARALLEL=on ..
Note that the exact package names may vary depending on your particular
distribution and version.
If you are using building HDF5 from source in conjunction with MPI, we
recommend that your HDF5 installation be built with parallel I/O
features. An example of configuring HDF5_ is listed below::
FC=mpifort ./configure --enable-fortran --enable-parallel
You may omit ``--enable-parallel`` if you want to compile HDF5_ in serial.
.. important::
OpenMC uses various parts of the HDF5 Fortran 2003 API; as such you
must include ``--enable-fortran2003`` or else OpenMC will not be able
to compile.
On Debian derivatives, HDF5 and/or parallel HDF5 can be installed through
the APT package manager:
.. code-block:: sh
sudo apt install libhdf5-dev hdf5-helpers
Note that the exact package names may vary depending on your particular
distribution and version.
If you are building HDF5 version 1.8.x or earlier, you must include
``--enable-fortran2003`` when configuring HDF5 or else OpenMC will not
be able to compile.
.. admonition:: Optional
:class: note
@ -163,7 +167,7 @@ Prerequisites
.. _CMake: http://www.cmake.org
.. _OpenMPI: http://www.open-mpi.org
.. _MPICH: http://www.mpich.org
.. _HDF5: http://www.hdfgroup.org/HDF5/
.. _HDF5: https://www.hdfgroup.org/solutions/hdf5/
Obtaining the Source
--------------------
@ -358,26 +362,9 @@ workarounds.
Testing Build
-------------
If you have ENDF/B-VII.1 cross sections from NNDC_ you can test your build.
Make sure the **OPENMC_CROSS_SECTIONS** environmental variable is set to the
*cross_sections.xml* file in the *data/nndc* directory.
There are two ways to run tests. The first is to use the Makefile present in
the source directory and run the following:
.. code-block:: sh
make test
If you want more options for testing you can use ctest_ command. For example,
if we wanted to run only the plot tests with 4 processors, we run:
.. code-block:: sh
cd build
ctest -j 4 -R plot
If you want to run the full test suite with different build options please
refer to our :ref:`test suite` documentation.
To run the test suite, you will first need to download a pre-generated cross
section library along with windowed multipole data. Please refer to our
:ref:`test suite` documentation for further details.
--------------------
Python Prerequisites

View file

@ -39,7 +39,7 @@ be specified:
'plot'
Generates slice or voxel plots (see :ref:`usersguide_plots`).
'particle_restart'
'particle restart'
Simulate a single source particle using a particle restart file.

116
include/openmc.h Normal file
View file

@ -0,0 +1,116 @@
#ifndef OPENMC_H
#define OPENMC_H
#include <stdint.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
struct Bank {
double wgt;
double xyz[3];
double uvw[3];
double E;
int delayed_group;
};
void openmc_calculate_voumes();
int openmc_cell_get_fill(int32_t index, int* type, int32_t** indices, int32_t* n);
int openmc_cell_get_id(int32_t index, int32_t* id);
int openmc_cell_set_fill(int32_t index, int type, int32_t n, const int32_t* indices);
int openmc_cell_set_id(int32_t index, int32_t id);
int openmc_cell_set_temperature(int32_t index, double T, const int32_t* instance);
int openmc_energy_filter_get_bins(int32_t index, double** energies, int32_t* n);
int openmc_energy_filter_set_bins(int32_t index, int32_t n, const double* energies);
int openmc_extend_cells(int32_t n, int32_t* index_start, int32_t* index_end);
int openmc_extend_filters(int32_t n, int32_t* index_start, int32_t* index_end);
int openmc_extend_materials(int32_t n, int32_t* index_start, int32_t* index_end);
int openmc_extend_sources(int32_t n, int32_t* index_start, int32_t* index_end);
int openmc_extend_tallies(int32_t n, int32_t* index_start, int32_t* index_end);
int openmc_filter_get_id(int32_t index, int32_t* id);
int openmc_filter_set_id(int32_t index, int32_t id);
void openmc_finalize();
int openmc_find(double* xyz, int rtype, int32_t* id, int32_t* instance);
int openmc_get_cell_index(int32_t id, int32_t* index);
int openmc_get_filter_index(int32_t id, int32_t* index);
void openmc_get_filter_next_id(int32_t* id);
int openmc_get_keff(double k_combined[]);
int openmc_get_material_index(int32_t id, int32_t* index);
int openmc_get_nuclide_index(char name[], int* index);
int openmc_get_tally_index(int32_t id, int32_t* index);
void openmc_hard_reset();
void openmc_init(const int* intracomm);
int openmc_load_nuclide(char name[]);
int openmc_material_add_nuclide(int32_t index, const char name[], double density);
int openmc_material_get_densities(int32_t index, int** nuclides, double** densities, int* n);
int openmc_material_get_id(int32_t index, int32_t* id);
int openmc_material_set_density(int32_t index, double density);
int openmc_material_set_densities(int32_t index, int n, const char** name, const double* density);
int openmc_material_set_id(int32_t index, int32_t id);
int openmc_material_filter_get_bins(int32_t index, int32_t** bins, int32_t* n);
int openmc_material_filter_set_bins(int32_t index, int32_t n, const int32_t* bins);
int openmc_mesh_filter_set_mesh(int32_t index, int32_t index_mesh);
int openmc_next_batch();
int openmc_nuclide_name(int index, char** name);
void openmc_plot_geometry();
void openmc_reset();
void openmc_run();
void openmc_simulation_finalize();
void openmc_simulation_init();
int openmc_source_bank(struct Bank** ptr, int64_t* n);
int openmc_source_set_strength(int32_t index, double strength);
void openmc_statepoint_write(const char filename[]);
int openmc_tally_get_id(int32_t index, int32_t* id);
int openmc_tally_get_filters(int32_t index, int32_t** indices, int* n);
int openmc_tally_get_n_realizations(int32_t index, int32_t* n);
int openmc_tally_get_nuclides(int32_t index, int** nuclides, int* n);
int openmc_tally_get_scores(int32_t index, int** scores, int* n);
int openmc_tally_results(int32_t index, double** ptr, int shape_[3]);
int openmc_tally_set_filters(int32_t index, int n, const int32_t* indices);
int openmc_tally_set_id(int32_t index, int32_t id);
int openmc_tally_set_nuclides(int32_t index, int n, const char** nuclides);
int openmc_tally_set_scores(int32_t index, int n, const int* scores);
// Error codes
extern int E_UNASSIGNED;
extern int E_ALLOCATE;
extern int E_OUT_OF_BOUNDS;
extern int E_INVALID_SIZE;
extern int E_INVALID_ARGUMENT;
extern int E_INVALID_TYPE;
extern int E_INVALID_ID;
extern int E_GEOMETRY;
extern int E_DATA;
extern int E_PHYSICS;
extern int E_WARNING;
// Global variables
extern char openmc_err_msg[256];
extern double keff;
extern double keff_std;
extern int32_t n_batches;
extern int32_t n_cells;
extern int32_t n_filters;
extern int32_t n_inactive;
extern int32_t n_lattices;
extern int32_t n_materials;
extern int32_t n_meshes;
extern int64_t n_particles;
extern int32_t n_plots;
extern int32_t n_realizations;
extern int32_t n_sab_tables;
extern int32_t n_sources;
extern int32_t n_surfaces;
extern int32_t n_tallies;
extern int32_t n_universes;
extern int run_mode;
extern bool simulation_initialized;
extern int verbosity;
#ifdef __cplusplus
}
#endif
#endif // OPENMC_H

View file

@ -59,7 +59,7 @@ Indicates the default path to a directory containing windowed multipole data if
the user has not specified the <multipole_library> tag in
.I materials.xml\fP.
.SH LICENSE
Copyright \(co 2011-2017 Massachusetts Institute of Technology.
Copyright \(co 2011-2018 Massachusetts Institute of Technology.
.PP
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View file

@ -32,4 +32,4 @@ from . import examples
# Import a few convencience functions that used to be here
from openmc.model import get_rectangular_prism, get_hexagonal_prism
__version__ = '0.9.0'
__version__ = '0.10.0'

View file

@ -21,6 +21,8 @@ _dll.openmc_cell_get_id.restype = c_int
_dll.openmc_cell_get_id.errcheck = _error_handler
_dll.openmc_cell_get_fill.argtypes = [
c_int32, POINTER(c_int), POINTER(POINTER(c_int32)), POINTER(c_int32)]
_dll.openmc_cell_get_fill.restype = c_int
_dll.openmc_cell_get_fill.errcheck = _error_handler
_dll.openmc_cell_set_fill.argtypes = [
c_int32, c_int, c_int32, POINTER(c_int32)]
_dll.openmc_cell_set_fill.restype = c_int

View file

@ -4,6 +4,7 @@ module openmc_api
use hdf5, only: HID_T, h5tclose_f, h5close_f
use bank_header, only: openmc_source_bank
use constants, only: K_BOLTZMANN
use eigenvalue, only: k_sum, openmc_get_keff
use error
@ -20,11 +21,13 @@ module openmc_api
use random_lcg, only: seed, openmc_set_seed
use settings
use simulation_header
use source_header, only: openmc_extend_sources, openmc_source_set_strength
use state_point, only: openmc_statepoint_write
use tally_header
use tally_filter_header
use tally_filter
use tally, only: openmc_tally_set_type
use simulation, only: openmc_run
use simulation
use string, only: to_f_string
use timer_header
use volume_calc, only: openmc_calculate_volumes
@ -43,6 +46,7 @@ module openmc_api
public :: openmc_extend_filters
public :: openmc_extend_cells
public :: openmc_extend_materials
public :: openmc_extend_sources
public :: openmc_extend_tallies
public :: openmc_filter_get_id
public :: openmc_filter_get_type
@ -57,6 +61,7 @@ module openmc_api
public :: openmc_get_material_index
public :: openmc_get_nuclide_index
public :: openmc_get_tally_index
public :: openmc_global_tallies
public :: openmc_hard_reset
public :: openmc_init
public :: openmc_load_nuclide
@ -69,12 +74,18 @@ module openmc_api
public :: openmc_material_filter_get_bins
public :: openmc_material_filter_set_bins
public :: openmc_mesh_filter_set_mesh
public :: openmc_next_batch
public :: openmc_nuclide_name
public :: openmc_plot_geometry
public :: openmc_reset
public :: openmc_run
public :: openmc_simulation_finalize
public :: openmc_simulation_init
public :: openmc_source_bank
public :: openmc_source_set_strength
public :: openmc_tally_get_id
public :: openmc_tally_get_filters
public :: openmc_tally_get_n_realizations
public :: openmc_tally_get_nuclides
public :: openmc_tally_get_scores
public :: openmc_tally_results

View file

@ -9,7 +9,7 @@ module constants
! OpenMC major, minor, and release numbers
integer, parameter :: VERSION_MAJOR = 0
integer, parameter :: VERSION_MINOR = 9
integer, parameter :: VERSION_MINOR = 10
integer, parameter :: VERSION_RELEASE = 0
integer, parameter :: &
VERSION(3) = [VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE]

View file

@ -524,7 +524,7 @@ contains
function openmc_cell_set_fill(index, type, n, indices) result(err) bind(C)
! Set the fill for a fill
! Set the fill for a cell
integer(C_INT32_T), value, intent(in) :: index ! index in cells
integer(C_INT), value, intent(in) :: type
integer(c_INT32_T), value, intent(in) :: n

View file

@ -76,10 +76,10 @@ contains
write(UNIT=OUTPUT_UNIT, FMT=*) &
' | The OpenMC Monte Carlo Code'
write(UNIT=OUTPUT_UNIT, FMT=*) &
' Copyright | 2011-2017 Massachusetts Institute of Technology'
' Copyright | 2011-2018 Massachusetts Institute of Technology'
write(UNIT=OUTPUT_UNIT, FMT=*) &
' License | http://openmc.readthedocs.io/en/latest/license.html'
write(UNIT=OUTPUT_UNIT, FMT='(11X,"Version | ",I1,".",I1,".",I1)') &
write(UNIT=OUTPUT_UNIT, FMT='(11X,"Version | ",I1,".",I2,".",I1)') &
VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE
#ifdef GIT_SHA1
write(UNIT=OUTPUT_UNIT, FMT='(10X,"Git SHA1 | ",A)') GIT_SHA1

View file

@ -43,6 +43,7 @@ module simulation
implicit none
private
public :: openmc_next_batch
public :: openmc_run
public :: openmc_simulation_init
public :: openmc_simulation_finalize

View file

@ -17,6 +17,8 @@ module source_header
implicit none
private
public :: free_memory_source
public :: openmc_extend_sources
public :: openmc_source_set_strength
integer :: n_accept = 0 ! Number of samples accepted
integer :: n_reject = 0 ! Number of samples rejected

View file

@ -26,6 +26,7 @@ module tally_header
public :: openmc_global_tallies
public :: openmc_tally_get_id
public :: openmc_tally_get_filters
public :: openmc_tally_get_n_realizations
public :: openmc_tally_get_nuclides
public :: openmc_tally_get_scores
public :: openmc_tally_results