Merge commit 'mitcrpgopenmc/develop' into res_scat

Conflicts:

	src/DEPENDENCIES
This commit is contained in:
walshjon 2014-03-26 05:07:51 -07:00
commit 20f2a4309c
23 changed files with 851 additions and 866 deletions

6
.gitignore vendored
View file

@ -21,6 +21,12 @@ src/openmc
docs/build
docs/source/_images/*.pdf
# Source build
src/build
# build from src/utils/setup.py
src/utils/build
# xml-fortran reader
src/xml-fortran/xmlreader

View file

@ -4,6 +4,296 @@
State Point Binary File Specifications
======================================
-----------
Revision 11
-----------
**integer(4) FILETYPE_STATEPOINT**
Flags whether this file is a statepoint file or a particle restart file.
**integer(4) REVISION_STATEPOINT**
Revision of the binary state point file. Any time a change is made in the
format of the state-point file, this integer is incremented.
**integer(4) VERSION_MAJOR**
Major version number for OpenMC
**integer(4) VERSION_MINOR**
Minor version number for OpenMC
**integer(4) VERSION_RELEASE**
Release version number for OpenMC
**character(19) time_stamp**
Date and time the state point was written.
**character(255) path**
Absolute path to directory containing input files.
**integer(8) seed**
Pseudo-random number generator seed.
**integer(4) run_mode**
run mode used. The modes are described in constants.F90.
**integer(8) n_particles**
Number of particles used per generation.
**integer(4) n_batches**
Total number of batches (active + inactive).
**integer(4) current_batch**
The number of batches already simulated.
if (run_mode == MODE_EIGENVALUE)
**integer(4) n_inactive**
Number of inactive batches
**integer(4) gen_per_batch**
Number of generations per batch for criticality calculations
*do i = 1, current_batch \* gen_per_batch*
**real(8) k_generation(i)**
k-effective for the i-th total generation
*do i = 1, current_batch \* gen_per_batch*
**real(8) entropy(i)**
Shannon entropy for the i-th total generation
**real(8) k_col_abs**
Sum of product of collision/absorption estimates of k-effective
**real(8) k_col_tra**
Sum of product of collision/track-length estimates of k-effective
**real(8) k_abs_tra**
Sum of product of absorption/track-length estimates of k-effective
**real(8) k_combined(2)**
Mean and standard deviation of a combined estimate of k-effective
**integer(4) cmfd_on**
Flag that cmfd is on
if (cmfd_on)
**integer(4) cmfd % indices**
Indices for cmfd mesh (i,j,k,g)
**real(8) cmfd % k_cmfd(1:current_batch)**
CMFD eigenvalues
**real(8) cmfd % src(1:G,1:I,1:J,1:K)**
CMFD fission source
**real(8) cmfd % entropy(1:current_batch)**
CMFD estimate of Shannon entropy
**real(8) cmfd % balance(1:current_batch)**
RMS of the residual neutron balance equation on CMFD mesh
**real(8) cmfd % dom(1:current_batch)**
CMFD estimate of dominance ratio
**real(8) cmfd % scr_cmp(1:current_batch)**
RMS comparison of difference between OpenMC and CMFD fission source
**integer(4) n_meshes**
Number of meshes in tallies.xml file
*do i = 1, n_meshes*
**integer(4) meshes(i) % id**
Unique ID of mesh.
**integer(4) meshes(i) % type**
Type of mesh.
**integer(4) meshes(i) % n_dimension**
Number of dimensions for mesh (2 or 3).
**integer(4) meshes(i) % dimension(:)**
Number of mesh cells in each dimension.
**real(8) meshes(i) % lower_left(:)**
Coordinates of lower-left corner of mesh.
**real(8) meshes(i) % upper_right(:)**
Coordinates of upper-right corner of mesh.
**real(8) meshes(i) % width(:)**
Width of each mesh cell in each dimension.
**integer(4) n_tallies**
*do i = 1, n_tallies*
**integer(4) tallies(i) % id**
Unique ID of tally.
**integer(4) tallies(i) % n_realizations**
Number of realizations for the i-th tally.
**integer(4) size(tallies(i) % scores, 1)**
Total number of score bins for the i-th tally
**integer(4) size(tallies(i) % scores, 2)**
Total number of filter bins for the i-th tally
**integer(4) tallies(i) % n_filters**
*do j = 1, tallies(i) % n_filters*
**integer(4) tallies(i) % filter(j) % type**
Type of tally filter.
**integer(4) tallies(i) % filter(j) % n_bins**
Number of bins for filter.
**integer(4)/real(8) tallies(i) % filter(j) % bins(:)**
Value for each filter bin of this type.
**integer(4) tallies(i) % n_nuclide_bins**
Number of nuclide bins. If none are specified, this is just one.
*do j = 1, tallies(i) % n_nuclide_bins*
**integer(4) tallies(i) % nuclide_bins(j)**
Values of specified nuclide bins
**integer(4) tallies(i) % n_score_bins**
Number of scoring bins.
*do j = 1, tallies(i) % n_score_bins*
**integer(4) tallies(i) % score_bins(j)**
Values of specified scoring bins (e.g. SCORE_FLUX).
*do j = 1, tallies(i) % n_score_bins*
**integer(4) tallies(i) % scatt_order(j)**
Scattering Order specified scoring bins.
**integer(4) tallies(i) % n_score_bins**
Number of scoring bins without accounting for those added by
the scatter-pn command.
**integer(4) source_present**
Flag indicated if source bank is present in the file
**integer(4) n_realizations**
Number of realizations for global tallies.
**integer(4) N_GLOBAL_TALLIES**
Number of global tally scores
*do i = 1, N_GLOBAL_TALLIES*
**real(8) global_tallies(i) % sum**
Accumulated sum for the i-th global tally
**real(8) global_tallies(i) % sum_sq**
Accumulated sum of squares for the i-th global tally
**integer(4) tallies_on**
Flag indicated if tallies are present in the file.
if (tallies_on > 0)
*do i = 1, n_tallies*
*do k = 1, size(tallies(i) % scores, 2)*
*do j = 1, size(tallies(i) % scores, 1)*
**real(8) tallies(i) % scores(j,k) % sum**
Accumulated sum for the j-th score and k-th filter of the
i-th tally
**real(8) tallies(i) % scores(j,k) % sum_sq**
Accumulated sum of squares for the j-th score and k-th
filter of the i-th tally
if (run_mode == MODE_EIGENVALUE and source_present)
*do i = 1, n_particles*
**real(8) source_bank(i) % wgt**
Weight of the i-th source particle
**real(8) source_bank(i) % xyz(1:3)**
Coordinates of the i-th source particle.
**real(8) source_bank(i) % uvw(1:3)**
Direction of the i-th source particle
**real(8) source_bank(i) % E**
Energy of the i-th source particle.
-----------
Revision 10
-----------

View file

@ -4,10 +4,6 @@
Release Notes for OpenMC 0.5.4
==============================
.. note::
These release notes are for an upcoming release of OpenMC and are still
subject to change.
-------------------
System Requirements
-------------------
@ -21,16 +17,17 @@ the problem at hand (mostly on the number of nuclides in the problem).
New Features
------------
- New XML parsing backend (FoX)
- Source sites outside geometry are resampled
- XML-Fortran backend replaced by FoX XML
- Ability to write particle track files
- Handle lost particles more gracefully (via particle track files)
- Source sites outside geometry are resampled
- Multiple random number generator streams
- plot_mesh_tally.py utility converted to use Tkinter rather than PyQt
- Mesh tally plotting utility converted to use Tkinter rather than PyQt
- Script added to download ACE data from NNDC
- Mixed ASCII/binary cross_sections.xml now allowed
- Expanded options for writing source bank
- Re-enabled ability to use source file as starting source
- S(a,b) recalculation avoided when same nuclide and S(a,b) table are accessed
---------
Bug Fixes
@ -41,12 +38,16 @@ Bug Fixes
- 8884fb_: Check for all ZAIDs for S(a,b) tables
- b38af0_: Fix XML reading on multiple levels of input
- d28750_: Fix bug in convert_xsdir.py
- cf567c_: ENDF/B-VI data checked for compatibility
- 6b9461_: Fix p_valid sampling inside of sample_energy
.. _32c03c: https://github.com/mit-crpg/openmc/commit/32c03c
.. _c71ef5: https://github.com/mit-crpg/openmc/commit/c71ef5
.. _8884fb: https://github.com/mit-crpg/openmc/commit/8884fb
.. _b38af0: https://github.com/mit-crpg/openmc/commit/b38af0
.. _d28750: https://github.com/mit-crpg/openmc/commit/d28750
.. _cf567c: https://github.com/mit-crpg/openmc/commit/cf567c
.. _6b9461: https://github.com/mit-crpg/openmc/commit/6b9461
------------
Contributors

View file

@ -470,6 +470,8 @@ attributes/sub-elements:
source bank will be available. It should be noted that a user can set both
this element to "true" and specify batches to write a permanent source bank.
*Default*: false
``<survival_biasing>`` Element
------------------------------

View file

@ -50,6 +50,15 @@ Prerequisites
sudo apt-get install gfortran
* CMake_ cross-platform build system
The compiling and linking of source files is handled by CMake in a
platform-independent manner. If you are using Debian or a Debian
derivative such as Ubuntu, you can install CMake using the following
command::
sudo apt-get install cmake
.. admonition:: Optional
* An MPI implementation for distributed-memory parallel runs
@ -74,8 +83,8 @@ Prerequisites
OpenMC with. HDF5_ must be built with parallel I/O features if you intend
to use HDF5_ with MPI. An example of configuring HDF5_ is listed below::
FC=/opt/mpich/3.0.4-gnu/bin/mpif90 CC=/opt/mpich/3.0.4-gnu/bin/mpicc \
./configure --prefix=/opt/hdf5/1.8.11-gnu --enable-fortran \
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
You may omit ``--enable-parallel`` if you want to compile HDF5_ in serial.
@ -88,8 +97,8 @@ Prerequisites
requires PETSc_ to be configured with Fortran datatypes. An example of
configuring PETSc_ is listed below::
./configure --prefix=/opt/petsc/3.4.2-gnu --download-f-blas-lapack \
--with-mpi-dir=/opt/mpich/3.0.4-gnu/ --with-shared-libraries=0 \
./configure --prefix=/opt/petsc/3.4.4 --download-f-blas-lapack \
--with-mpi-dir=/opt/mpich/3.1 --with-shared-libraries \
--with-fortran-datatypes
The BLAS/LAPACK library is not required to be downloaded and can be linked
@ -98,6 +107,7 @@ Prerequisites
* git_ version control software for obtaining source code
.. _gfortran: http://gcc.gnu.org/wiki/GFortran
.. _CMake: http://www.cmake.org
.. _OpenMPI: http://www.open-mpi.org
.. _MPICH: http://www.mpich.org
.. _HDF5: http://www.hdfgroup.org/HDF5/
@ -131,50 +141,95 @@ switch to the source of the latest stable release, run the following commands::
Build Configuration
-------------------
All configuration for OpenMC is done within the Makefile located in
``src/Makefile``. In the Makefile, you will see that there are a number of User
Options which can be changed. It is recommended that you do not change anything
else in the Makefile unless you are experienced with compiling and building
software using Makefiles. The following parameters can be set from the User
Options sections in the Makefile:
Compiling OpenMC with CMake is carried out in two steps. First, ``cmake`` is run
to determine the compiler, whether optional packages (MPI, HDF5, PETSc) are
available, to generate a list of dependencies between source files so that they
may be compiled in the correct order, and to generate a normal Makefile. The
Makefile is then used by ``make`` to actually carry out the compile and linking
commands. A typical out-of-source build would thus look something like the
following
COMPILER
This variable tells the Makefile which compiler to use. Valid options are
gnu, intel, pgi, ibm, and cray. The default is gnu (gfortran).
.. code-block:: sh
DEBUG
mkdir src/build
cd src/build
cmake ..
make
Note that first a build directory is created as a subdirectory of the source
directory. The Makefile in ``src/`` will automatically perform an out-of-source
build with default options.
CMakeLists.txt Options
++++++++++++++++++++++
The following options are available in the CMakeLists.txt file:
debug
Enables debugging when compiling. The flags added are dependent on which
compiler is used.
PROFILE
profile
Enables profiling using the GNU profiler, gprof.
OPTIMIZE
optimize
Enables high-optimization using compiler-dependent flags. For gfortran and
Intel Fortran, this compiles with -O3.
MPI
Enables parallel runs using the Message Passing Interface. The MPI_DIR
variable should be set to the base directory of the MPI implementation.
OPENMP
openmp
Enables shared-memory parallelism using the OpenMP API. The Fortran compiler
being used must support OpenMP.
HDF5
Enables HDF5 output in addition to normal screen and text file output. The
HDF5_DIR variable should be set to the base directory of the HDF5
installation.
PETSC
petsc
Enables PETSc for use in CMFD acceleration. The PETSC_DIR variable should be
set to the base directory of the PETSc installation.
It is also possible to change these options from the command line itself. For
example, if you want to compile with DEBUG turned on without actually change the
Makefile, you can enter the following from a terminal::
To set any of these options (e.g. turning on debug mode), the following form
should be used:
make DEBUG=yes
.. code-block:: sh
cmake -Ddebug=on /path/to/src
Compiling with MPI
++++++++++++++++++
To compile with MPI, set the :envvar:`FC` environment variable to the path to
the MPI Fortran wrapper. For example, in a bash shell:
.. code-block:: sh
export FC=mpif90
cmake /path/to/src
Note that in many shells, an environment variable can be set for a single
command, i.e.
.. code-block:: sh
FC=mpif90 cmake /path/to/src
Compiling with HDF5
+++++++++++++++++++
To compile with MPI, set the :envvar:`FC` environment variable to the path to
the HDF5 Fortran wrapper. For example, in a bash shell:
.. code-block:: sh
export FC=h5fc
cmake /path/to/src
As noted above, an environment variable can typically be set for a single
command, i.e.
.. code-block:: sh
FC=h5fc cmake /path/to/src
To compile with support for both MPI and HDF5, use the parallel HDF5 wrapper
``h5pfc`` instead. Note that this requires that your HDF5 installation be
compiled with ``--enable-parallel``.
Compiling on Linux and Mac OS X
-------------------------------
@ -210,9 +265,10 @@ a Linux-like environment for Windows. You will need to first `install
Cygwin`_. When you are asked to select packages, make sure the following are
selected:
* Devel: gcc4-core
* Devel: gcc4-fortran
* Devel: gcc-core
* Devel: gcc-fortran
* Devel: make
* Devel: cmake
If you plan on obtaining the source code directly using git, select the
following packages:

209
src/CMakeLists.txt Normal file
View file

@ -0,0 +1,209 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(openmc Fortran)
# Setup output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/include)
#===============================================================================
# Command line options
#===============================================================================
option(openmp "Enable shared-memory parallelism with OpenMP" OFF)
option(profile "Compile with profiling flags" OFF)
option(petsc "Enable PETSC for use in CMFD acceleration" OFF)
option(debug "Compile with debug flags" OFF)
option(optimize "Turn on all compiler optimization flags" OFF)
option(verbose "Create verbose Makefiles" OFF)
if (verbose)
set(CMAKE_VERBOSE_MAKEFILE on)
endif()
#===============================================================================
# MPI for distributed-memory parallelism / HDF5 for binary output
#===============================================================================
if($ENV{FC} MATCHES "mpi.*")
message("-- Detected MPI wrapper: $ENV{FC}")
add_definitions(-DMPI)
elseif($ENV{FC} MATCHES "h5fc$")
message("-- Detected HDF5 wrapper: $ENV{FC}")
add_definitions(-DHDF5)
elseif($ENV{FC} MATCHES "h5pfc$")
message("-- Detected parallel HDF5 wrapper: $ENV{FC}")
add_definitions(-DMPI -DHDF5)
endif()
#===============================================================================
# Set compile/link flags based on which compiler is being used
#===============================================================================
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
# GNU Fortran compiler options
set(f90flags "-cpp -std=f2008 -fbacktrace")
if(debug)
set(f90flags "-g -Wall -pedantic -fbounds-check -ffpe-trap=invalid,overflow,underflow ${f90flags}")
set(ldflags "-g")
endif()
if(profile)
set(f90flags "-pg ${f90flags}")
set(ldflags "-pg ${ldflags}")
endif()
if(optimize)
set(f90flags "-O3 ${f90flags}")
endif()
if(openmp)
set(f90flags "-fopenmp ${f90flags}")
set(ldflags "-fopenmp ${ldflags}")
endif()
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
# Intel Fortran compiler options
set(f90flags "-fpp -std08 -assume byterecl -traceback")
if(debug)
set(f90flags "-g -warn -ftrapuv -fp-stack-check -check all -fpe0 ${f90flags}")
set(ldflags "-g")
endif()
if(profile)
set(f90flags "-pg ${f90flags}")
set(ldflags "-pg ${ldflags}")
endif()
if(optimize)
set(f90flags "-O3 ${f90flags}")
endif()
if(openmp)
set(f90flags "-openmp ${f90flags}")
set(ldflags "-openmp ${ldflags}")
endif()
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
# PGI Fortran compiler options
set(f90flags "-Mpreprocess -Minform=inform -traceback")
add_definitions(-DNO_F2008)
if(debug)
set(f90flags "-g -Mbounds -Mchkptr -Mchkstk ${f90flags}")
set(ldflags "-g")
endif()
if(profile)
set(f90flags "-pg ${f90flags}")
set(ldflags "-pg ${ldflags}")
endif()
if(optimize)
set(f90flags "-fast -Mipa ${f90flags}")
endif()
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
# IBM XL compiler options
set(f90flags "-WF,-DNO_F2008 -O2")
if(debug)
set(f90flags "-g -C -qflag=i:i -u")
set(ldflags "-g")
endif()
if(profile)
set(f90flags "-p ${f90flags}")
set(ldflags "-p ${ldflags}")
endif()
if(optimize)
set(f90flags "-O3 ${f90flags}")
endif()
if(openmp)
set(f90flags "-qsmp=omp ${f90flags}")
set(ldflags "-qsmp=omp ${ldflags}")
endif()
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
# Cray Fortran compiler options
set(f90flags "-e Z -m 0")
if(debug)
set(f90flags "-g -R abcnsp -O0 ${f90flags}")
set(ldflags "-g")
endif()
endif()
#===============================================================================
# PETSc for CMFD functionality
#===============================================================================
if(petsc)
find_package(PETSc REQUIRED HINTS $ENV{PETSC_DIR}/conf)
find_library(libpetsc petsc $ENV{PETSC_DIR}/lib)
# If libfblas wasn't found, search the PETSc lib directory
if(PETSC_FBLAS_LIB STREQUAL "PETSC_FBLAS_LIB-NOTFOUND")
find_library(PETSC_FBLAS_LIB fblas $ENV{PETSC_DIR}/lib)
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_FBLAS_LIB-NOTFOUND)
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_FBLAS_LIB})
endif()
# If libflapack wasn't found, search the PETSc lib directory
if(PETSC_FLAPACK_LIB STREQUAL "PETSC_FLAPACK_LIB-NOTFOUND")
find_library(PETSC_FLAPACK_LIB flapack $ENV{PETSC_DIR}/lib)
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_FLAPACK_LIB-NOTFOUND)
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_FLAPACK_LIB})
endif()
message("-- Using PETSC: ${libpetsc}")
add_definitions(-DPETSC)
include_directories($ENV{PETSC_DIR}/include)
set(libraries "${libpetsc};${PETSC_PACKAGE_LIBS};${libraries}")
endif()
#===============================================================================
# git SHA1 hash
#===============================================================================
execute_process(COMMAND git rev-parse -q HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SHA1_SUCCESS
OUTPUT_VARIABLE GIT_SHA1
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(GIT_SHA1_SUCCESS EQUAL 0)
add_definitions(-DGIT_SHA1="${GIT_SHA1}")
endif()
#===============================================================================
# FoX Fortran XML Library
#===============================================================================
file(GLOB_RECURSE source_fox xml/*.F90)
add_library(fox STATIC ${source_fox})
#===============================================================================
# Build OpenMC executable
#===============================================================================
set(program "openmc")
file(GLOB source *.F90)
add_executable(${program} ${source})
target_link_libraries(${program} ${libraries} fox)
set_target_properties(${program} PROPERTIES
COMPILE_FLAGS "${f90flags}"
LINK_FLAGS "${ldflags}")
#===============================================================================
# Install executable, scripts, manpage, license
#===============================================================================
install(TARGETS ${program} RUNTIME DESTINATION bin)
install(PROGRAMS utils/statepoint_cmp.py
DESTINATION bin
RENAME statepoint_cmp)
install(PROGRAMS utils/statepoint_histogram.py
DESTINATION bin
RENAME statepoint_histogram)
install(PROGRAMS utils/statepoint_meshplot.py
DESTINATION bin
RENAME statepoint_meshplot)
install(FILES ../man/man1/openmc.1 DESTINATION share/man/man1)
install(FILES ../LICENSE DESTINATION "share/doc/${program}/copyright")
find_package(PythonInterp)
if(PYTHONINTERP_FOUND)
install(CODE "execute_process(
COMMAND ${PYTHON_EXECUTABLE} setup.py install --user
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils)")
endif()

View file

@ -1,397 +0,0 @@
ace.o: ace_header.o
ace.o: constants.o
ace.o: endf.o
ace.o: error.o
ace.o: fission.o
ace.o: global.o
ace.o: material_header.o
ace.o: output.o
ace.o: set_header.o
ace.o: string.o
ace_header.o: constants.o
ace_header.o: endf_header.o
cmfd_data.o: cmfd_header.o
cmfd_data.o: constants.o
cmfd_data.o: error.o
cmfd_data.o: global.o
cmfd_data.o: mesh.o
cmfd_data.o: mesh_header.o
cmfd_data.o: string.o
cmfd_data.o: tally_header.o
cmfd_execute.o: cmfd_data.o
cmfd_execute.o: cmfd_jfnk_solver.o
cmfd_execute.o: cmfd_power_solver.o
cmfd_execute.o: constants.o
cmfd_execute.o: error.o
cmfd_execute.o: global.o
cmfd_execute.o: mesh.o
cmfd_execute.o: mesh_header.o
cmfd_execute.o: output.o
cmfd_execute.o: search.o
cmfd_execute.o: tally.o
cmfd_header.o: constants.o
cmfd_input.o: cmfd_header.o
cmfd_input.o: constants.o
cmfd_input.o: error.o
cmfd_input.o: global.o
cmfd_input.o: mesh_header.o
cmfd_input.o: output.o
cmfd_input.o: string.o
cmfd_input.o: tally.o
cmfd_input.o: tally_header.o
cmfd_input.o: tally_initialize.o
cmfd_input.o: xml_interface.o
cmfd_jfnk_solver.o: cmfd_loss_operator.o
cmfd_jfnk_solver.o: cmfd_power_solver.o
cmfd_jfnk_solver.o: cmfd_prod_operator.o
cmfd_jfnk_solver.o: constants.o
cmfd_jfnk_solver.o: global.o
cmfd_jfnk_solver.o: matrix_header.o
cmfd_jfnk_solver.o: solver_interface.o
cmfd_jfnk_solver.o: vector_header.o
cmfd_loss_operator.o: constants.o
cmfd_loss_operator.o: global.o
cmfd_loss_operator.o: matrix_header.o
cmfd_power_solver.o: cmfd_loss_operator.o
cmfd_power_solver.o: cmfd_prod_operator.o
cmfd_power_solver.o: constants.o
cmfd_power_solver.o: global.o
cmfd_power_solver.o: matrix_header.o
cmfd_power_solver.o: solver_interface.o
cmfd_power_solver.o: vector_header.o
cmfd_prod_operator.o: constants.o
cmfd_prod_operator.o: global.o
cmfd_prod_operator.o: matrix_header.o
cmfd_slepc_solver.o: cmfd_loss_operator.o
cmfd_slepc_solver.o: cmfd_prod_operator.o
cmfd_slepc_solver.o: constants.o
cmfd_slepc_solver.o: global.o
cross_section.o: ace_header.o
cross_section.o: constants.o
cross_section.o: error.o
cross_section.o: fission.o
cross_section.o: global.o
cross_section.o: material_header.o
cross_section.o: particle_header.o
cross_section.o: random_lcg.o
cross_section.o: search.o
doppler.o: constants.o
eigenvalue.o: cmfd_execute.o
eigenvalue.o: constants.o
eigenvalue.o: error.o
eigenvalue.o: global.o
eigenvalue.o: math.o
eigenvalue.o: mesh.o
eigenvalue.o: mesh_header.o
eigenvalue.o: output.o
eigenvalue.o: particle_header.o
eigenvalue.o: random_lcg.o
eigenvalue.o: search.o
eigenvalue.o: source.o
eigenvalue.o: state_point.o
eigenvalue.o: string.o
eigenvalue.o: tally.o
eigenvalue.o: tracking.o
endf.o: constants.o
endf.o: string.o
energy_grid.o: constants.o
energy_grid.o: global.o
energy_grid.o: list_header.o
energy_grid.o: output.o
error.o: global.o
finalize.o: global.o
finalize.o: hdf5_interface.o
finalize.o: output.o
finalize.o: tally.o
fission.o: ace_header.o
fission.o: constants.o
fission.o: error.o
fission.o: global.o
fission.o: interpolation.o
fission.o: search.o
fixed_source.o: constants.o
fixed_source.o: global.o
fixed_source.o: output.o
fixed_source.o: particle_header.o
fixed_source.o: random_lcg.o
fixed_source.o: source.o
fixed_source.o: state_point.o
fixed_source.o: string.o
fixed_source.o: tally.o
fixed_source.o: tracking.o
geometry.o: constants.o
geometry.o: error.o
geometry.o: geometry_header.o
geometry.o: global.o
geometry.o: output.o
geometry.o: particle_header.o
geometry.o: particle_restart_write.o
geometry.o: string.o
geometry.o: tally.o
global.o: ace_header.o
global.o: bank_header.o
global.o: cmfd_header.o
global.o: constants.o
global.o: dict_header.o
global.o: geometry_header.o
global.o: hdf5_interface.o
global.o: material_header.o
global.o: mesh_header.o
global.o: plot_header.o
global.o: set_header.o
global.o: source_header.o
global.o: tally_header.o
global.o: timer_header.o
hdf5_summary.o: ace_header.o
hdf5_summary.o: constants.o
hdf5_summary.o: endf.o
hdf5_summary.o: geometry_header.o
hdf5_summary.o: global.o
hdf5_summary.o: material_header.o
hdf5_summary.o: mesh_header.o
hdf5_summary.o: output.o
hdf5_summary.o: output_interface.o
hdf5_summary.o: string.o
hdf5_summary.o: tally_header.o
initialize.o: ace.o
initialize.o: bank_header.o
initialize.o: constants.o
initialize.o: dict_header.o
initialize.o: energy_grid.o
initialize.o: error.o
initialize.o: geometry.o
initialize.o: geometry_header.o
initialize.o: global.o
initialize.o: hdf5_interface.o
initialize.o: hdf5_summary.o
initialize.o: input_xml.o
initialize.o: output.o
initialize.o: output_interface.o
initialize.o: random_lcg.o
initialize.o: source.o
initialize.o: state_point.o
initialize.o: string.o
initialize.o: tally_header.o
initialize.o: tally_initialize.o
input_xml.o: cmfd_input.o
input_xml.o: constants.o
input_xml.o: dict_header.o
input_xml.o: error.o
input_xml.o: geometry_header.o
input_xml.o: global.o
input_xml.o: list_header.o
input_xml.o: mesh_header.o
input_xml.o: output.o
input_xml.o: plot_header.o
input_xml.o: random_lcg.o
input_xml.o: string.o
input_xml.o: tally_header.o
input_xml.o: tally_initialize.o
input_xml.o: xml_interface.o
interpolation.o: constants.o
interpolation.o: endf_header.o
interpolation.o: error.o
interpolation.o: global.o
interpolation.o: search.o
interpolation.o: string.o
list_header.o: constants.o
main.o: constants.o
main.o: eigenvalue.o
main.o: finalize.o
main.o: fixed_source.o
main.o: global.o
main.o: initialize.o
main.o: particle_restart.o
main.o: plot.o
math.o: constants.o
math.o: random_lcg.o
matrix_header.o: constants.o
matrix_header.o: vector_header.o
mesh.o: constants.o
mesh.o: global.o
mesh.o: mesh_header.o
mesh.o: particle_header.o
mesh.o: search.o
output.o: ace_header.o
output.o: constants.o
output.o: endf.o
output.o: error.o
output.o: geometry_header.o
output.o: global.o
output.o: math.o
output.o: mesh.o
output.o: mesh_header.o
output.o: particle_header.o
output.o: plot_header.o
output.o: string.o
output.o: tally_header.o
output_interface.o: constants.o
output_interface.o: error.o
output_interface.o: global.o
output_interface.o: hdf5_interface.o
output_interface.o: mpiio_interface.o
output_interface.o: tally_header.o
particle_header.o: constants.o
particle_header.o: geometry_header.o
particle_restart.o: bank_header.o
particle_restart.o: constants.o
particle_restart.o: geometry_header.o
particle_restart.o: global.o
particle_restart.o: output.o
particle_restart.o: output_interface.o
particle_restart.o: particle_header.o
particle_restart.o: random_lcg.o
particle_restart.o: tracking.o
particle_restart_write.o: bank_header.o
particle_restart_write.o: global.o
particle_restart_write.o: output_interface.o
particle_restart_write.o: particle_header.o
particle_restart_write.o: string.o
physics.o: ace_header.o
physics.o: constants.o
physics.o: cross_section.o
physics.o: endf.o
physics.o: error.o
physics.o: fission.o
physics.o: global.o
physics.o: interpolation.o
physics.o: material_header.o
physics.o: math.o
physics.o: mesh.o
physics.o: output.o
physics.o: particle_header.o
physics.o: particle_restart_write.o
physics.o: random_lcg.o
physics.o: search.o
physics.o: string.o
plot.o: constants.o
plot.o: error.o
plot.o: geometry.o
plot.o: geometry_header.o
plot.o: global.o
plot.o: output.o
plot.o: particle_header.o
plot.o: plot_header.o
plot.o: ppmlib.o
plot.o: string.o
plot_header.o: constants.o
random_lcg.o: global.o
search.o: error.o
search.o: global.o
set_header.o: constants.o
set_header.o: list_header.o
solver_interface.o: error.o
solver_interface.o: global.o
solver_interface.o: matrix_header.o
solver_interface.o: vector_header.o
source.o: bank_header.o
source.o: constants.o
source.o: error.o
source.o: geometry.o
source.o: geometry_header.o
source.o: global.o
source.o: math.o
source.o: output.o
source.o: particle_header.o
source.o: random_lcg.o
source.o: string.o
state_point.o: constants.o
state_point.o: error.o
state_point.o: global.o
state_point.o: output.o
state_point.o: output_interface.o
state_point.o: string.o
state_point.o: tally_header.o
string.o: constants.o
string.o: error.o
string.o: global.o
tally.o: ace_header.o
tally.o: constants.o
tally.o: error.o
tally.o: global.o
tally.o: math.o
tally.o: mesh.o
tally.o: mesh_header.o
tally.o: output.o
tally.o: particle_header.o
tally.o: search.o
tally.o: string.o
tally.o: tally_header.o
tally_header.o: constants.o
tally_initialize.o: constants.o
tally_initialize.o: global.o
tally_initialize.o: tally_header.o
timer_header.o: constants.o
track_output.o: global.o
track_output.o: output_interface.o
track_output.o: particle_header.o
track_output.o: string.o
tracking.o: cross_section.o
tracking.o: error.o
tracking.o: geometry.o
tracking.o: geometry_header.o
tracking.o: global.o
tracking.o: output.o
tracking.o: particle_header.o
tracking.o: physics.o
tracking.o: random_lcg.o
tracking.o: string.o
tracking.o: tally.o
tracking.o: track_output.o
vector_header.o: constants.o
xml_interface.o: constants.o
xml_interface.o: error.o
xml_interface.o: global.o

View file

@ -1,283 +1,12 @@
program = openmc
prefix = /usr/local
source = $(wildcard *.F90)
objects = $(source:.F90=.o)
xml_lib = -Lxml/lib -lxml
#===============================================================================
# User Options
#===============================================================================
COMPILER = gnu
DEBUG = no
PROFILE = no
OPTIMIZE = no
MPI = no
OPENMP = no
HDF5 = no
PETSC = no
#===============================================================================
# External Library Paths
#===============================================================================
MPI_DIR = /opt/mpich/3.0.4-$(COMPILER)
HDF5_DIR = /opt/hdf5/1.8.11-$(COMPILER)
PHDF5_DIR = /opt/phdf5/1.8.11-$(COMPILER)
PETSC_DIR = /opt/petsc/3.4.2-$(COMPILER)
#===============================================================================
# Add git SHA-1 hash
#===============================================================================
GIT_SHA1 = $(shell git log -1 2>/dev/null | head -n 1 | awk '{print $$2}')
#===============================================================================
# GNU Fortran compiler options
#===============================================================================
ifeq ($(COMPILER),gnu)
F90 = gfortran
F90FLAGS := -cpp -std=f2008 -fbacktrace
LDFLAGS =
# Debugging
ifeq ($(DEBUG),yes)
F90FLAGS += -g -Wall -pedantic -fbounds-check \
-ffpe-trap=invalid,overflow,underflow
LDFLAGS += -g
endif
# Profiling
ifeq ($(PROFILE),yes)
F90FLAGS += -pg
LDFLAGS += -pg
endif
# Optimization
ifeq ($(OPTIMIZE),yes)
F90FLAGS += -O3
endif
endif
#===============================================================================
# Intel Fortran compiler options
#===============================================================================
ifeq ($(COMPILER),intel)
F90 = ifort
F90FLAGS := -fpp -std08 -assume byterecl -traceback
LDFLAGS =
# Debugging
ifeq ($(DEBUG),yes)
F90FLAGS += -g -warn -ftrapuv -fp-stack-check -check all -fpe0
LDFLAGS += -g
endif
# Profiling
ifeq ($(PROFILE),yes)
F90FLAGS += -pg
LDFLAGS += -pg
endif
# Optimization
ifeq ($(OPTIMIZE),yes)
F90FLAGS += -O3
endif
endif
#===============================================================================
# PGI compiler options
#===============================================================================
ifeq ($(COMPILER),pgi)
F90 = pgf90
F90FLAGS := -Mpreprocess -DNO_F2008 -Minform=inform -traceback
LDFLAGS =
# Debugging
ifeq ($(DEBUG),yes)
F90FLAGS += -g -Mbounds -Mchkptr -Mchkstk
LDFLAGS += -g
endif
# Profiling
ifeq ($(PROFILE),yes)
F90FLAGS += -pg
LDFLAGS += -pg
endif
# Optimization
ifeq ($(OPTIMIZE),yes)
F90FLAGS += -fast -Mipa
endif
endif
#===============================================================================
# IBM XL compiler options
#===============================================================================
ifeq ($(COMPILER),ibm)
F90 = xlf2003
F90FLAGS := -WF,-DNO_F2008 -O2
# Debugging
ifeq ($(DEBUG),yes)
F90FLAGS += -g -C -qflag=i:i -u
LDFLAGS += -g
endif
# Profiling
ifeq ($(PROFILE),yes)
F90FLAGS += -p
LDFLAGS += -p
endif
# Optimization
ifeq ($(OPTIMIZE),yes)
F90FLAGS += -O3
endif
endif
#===============================================================================
# Cray compiler options
#===============================================================================
ifeq ($(COMPILER),cray)
F90 = ftn
F90FLAGS := -e Z -m 0
# Debugging
ifeq ($(DEBUG),yes)
F90FLAGS += -g -R abcnsp -O0
LDFLAGS += -g
endif
endif
#===============================================================================
# Setup External Libraries
#===============================================================================
# MPI for distributed-memory parallelism and HDF5 for I/O
ifeq ($(MPI),yes)
ifeq ($(HDF5),yes)
F90 = $(PHDF5_DIR)/bin/h5pfc
F90FLAGS += -DHDF5
else
F90 = $(MPI_DIR)/bin/mpif90
endif
F90FLAGS += -DMPI
else
ifeq ($(HDF5),yes)
F90 = $(HDF5_DIR)/bin/h5fc
F90FLAGS += -DHDF5
endif
endif
# OpenMP for shared-memory parallelism
ifeq ($(OPENMP),yes)
ifeq ($(COMPILER),intel)
F90FLAGS += -openmp
LDFLAGS += -openmp
endif
ifeq ($(COMPILER),gnu)
F90FLAGS += -fopenmp
LDFLAGS += -fopenmp
endif
ifeq ($(COMPILER),ibm)
F90FLAGS += -qsmp=omp
LDFLAGS += -qsmp=omp
endif
endif
# PETSC for CMFD functionality
ifeq ($(PETSC),yes)
# Check to make sure MPI is set
ifneq ($(MPI),yes)
$(error MPI must be enabled to compile with PETSC!)
endif
# Set up PETSc environment
include $(PETSC_DIR)/conf/petscvariables
F90FLAGS += -I$(PETSC_DIR)/include -DPETSC
LDFLAGS += $(PETSC_LIB)
endif
#===============================================================================
# Machine-specific setup
#===============================================================================
# IBM Blue Gene/P ANL supercomputer
ifeq ($(MACHINE),bluegene)
F90 = /bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf2003
F90FLAGS = -WF,-DNO_F2008,-DMPI,-DRESTRICTED_ASSOCIATED_BUG -O3
LDFLAGS = -lmpich.cnkf90
endif
# Cray XK6 ORNL Titan supercomputer
ifeq ($(MACHINE),crayxk6)
F90 = ftn
F90FLAGS += -DMPI
endif
# IBM Blue Gene/Q ANL supercomputer
ifeq ($(MACHINE),bluegeneq)
F90 = mpixlf2003
F90FLAGS = -WF,-DNO_F2008,-DMPI,-DRESTRICTED_ASSOCIATED_BUG -O5
endif
#===============================================================================
# Targets
#===============================================================================
all: xml $(program)
xml:
cd xml; make MACHINE=$(MACHINE) F90=$(F90) F90FLAGS="$(F90FLAGS)" LDFLAGS="$(LDFLAGS)"
$(program): $(objects)
$(F90) $(objects) $(xml_lib) $(LDFLAGS) -o $@
install:
@install -D $(program) $(DESTDIR)$(prefix)/bin/$(program)
@install -D utils/statepoint_cmp.py $(DESTDIR)$(prefix)/bin/statepoint_cmp
@install -D utils/statepoint_histogram.py $(DESTDIR)$(prefix)/bin/statepoint_histogram
@install -D utils/statepoint_meshplot.py $(DESTDIR)$(prefix)/bin/statepoint_meshplot
@install -D ../man/man1/openmc.1 $(DESTDIR)$(prefix)/share/man/man1/openmc.1
@install -D ../LICENSE $(DESTDIR)$(prefix)/share/doc/$(program)/copyright
uninstall:
@rm $(DESTDIR)$(prefix)/bin/$(program)
@rm $(DESTDIR)$(prefix)/bin/statepoint_cmp
@rm $(DESTDIR)$(prefix)/bin/statepoint_histogram
@rm $(DESTDIR)$(prefix)/bin/statepoint_meshplot
@rm $(DESTDIR)$(prefix)/share/man/man1/openmc.1
@rm $(DESTDIR)$(prefix)/share/doc/$(program)/copyright
distclean: clean
cd xml; make clean
all:
mkdir -p build
cmake -H. -Bbuild
make -s -C build
clean:
@rm -f *.o *.mod $(program)
neat:
@rm -f *.o *.mod
make -s -C build clean
distclean:
rm -fr build
install:
make -s -C build install
#===============================================================================
# Rules
#===============================================================================
.SUFFIXES: .F90 .o
.PHONY: all xml install uninstall clean neat distclean
%.o: %.F90
$(F90) $(F90FLAGS) -DGIT_SHA1="\"$(GIT_SHA1)\"" -Ixml/include -c $<
#===============================================================================
# Dependencies
#===============================================================================
include DEPENDENCIES
.PHONY: all clean distclean install

View file

@ -396,7 +396,7 @@ contains
end subroutine indices_to_matrix
!===============================================================================
! MATRIX_TO_INDICES converts a matrix index to spatial and group indicies
! MATRIX_TO_INDICES converts a matrix index to spatial and group indices
!===============================================================================
subroutine matrix_to_indices(irow, g, i, j, k, ng, nx, ny, nz)

View file

@ -8,7 +8,7 @@ module constants
! OpenMC major, minor, and release numbers
integer, parameter :: VERSION_MAJOR = 0
integer, parameter :: VERSION_MINOR = 5
integer, parameter :: VERSION_RELEASE = 3
integer, parameter :: VERSION_RELEASE = 4
! Revision numbers for binary files
integer, parameter :: REVISION_STATEPOINT = 11

View file

@ -359,7 +359,7 @@ module global
logical :: cmfd_tally_on = .true.
! CMFD display info
character(len=25) :: cmfd_display
character(len=25) :: cmfd_display = 'balance'
! Information about state points to be written
integer :: n_state_points = 0

View file

@ -688,7 +688,10 @@ contains
call get_node_value(node_sp, "overwrite_latest", temp_str)
call lower_case(temp_str)
if (trim(temp_str) == 'true' .or. &
trim(temp_str) == '1') source_latest = .true.
trim(temp_str) == '1') then
source_latest = .true.
source_separate = .true.
end if
end if
else
! If no <source_point> tag was present, by default we keep source bank in

View file

@ -7,7 +7,8 @@ module output_interface
#ifdef HDF5
use hdf5_interface
#elif MPI
#endif
#ifdef MPI
use mpiio_interface
#endif

View file

@ -1543,19 +1543,17 @@ contains
! SAMPLE ENERGY DISTRIBUTION IF THERE ARE MULTIPLE
if (associated(edist % next)) then
if (edist % p_valid % n_regions > 0) then
p_valid = interpolate_tab1(edist % p_valid, E_in)
p_valid = interpolate_tab1(edist % p_valid, E_in)
if (prn() > p_valid) then
if (edist % law == 44 .or. edist % law == 61) then
call sample_energy(edist%next, E_in, E_out, mu_out)
elseif (edist % law == 66) then
call sample_energy(edist%next, E_in, E_out, A=A, Q=Q)
else
call sample_energy(edist%next, E_in, E_out)
end if
return
if (prn() > p_valid) then
if (edist % law == 44 .or. edist % law == 61) then
call sample_energy(edist%next, E_in, E_out, mu_out)
elseif (edist % law == 66) then
call sample_energy(edist%next, E_in, E_out, A=A, Q=Q)
else
call sample_energy(edist%next, E_in, E_out)
end if
return
end if
end if

View file

@ -104,7 +104,7 @@ contains
! Write out CMFD info
if (cmfd_on) then
call sp % write_data(1, "cmfd_on")
call sp % write_data(cmfd % indices, "indicies", length=4, group="cmfd")
call sp % write_data(cmfd % indices, "indices", length=4, group="cmfd")
call sp % write_data(cmfd % k_cmfd, "k_cmfd", length=current_batch, &
group="cmfd")
call sp % write_data(cmfd % cmfd_src, "cmfd_src", &
@ -230,13 +230,13 @@ contains
end do TALLY_METADATA
end if
! Indicate where source bank is stored in statepoint
if (source_separate) then
call sp % write_data(0, "source_present")
else
call sp % write_data(1, "source_present")
end if
! Indicate where source bank is stored in statepoint
if (source_separate) then
call sp % write_data(0, "source_present")
else
call sp % write_data(1, "source_present")
end if
! Check for the no-tally-reduction method
@ -517,7 +517,6 @@ contains
subroutine load_state_point()
character(MAX_FILE_LEN) :: filename
character(MAX_FILE_LEN) :: path_temp
character(19) :: current_time
integer :: i
@ -599,7 +598,7 @@ contains
! Write out CMFD info
if (int_array(1) == 1) then
call sp % read_data(cmfd % indices, "indicies", length=4, group="cmfd")
call sp % read_data(cmfd % indices, "indices", length=4, group="cmfd")
call sp % read_data(cmfd % k_cmfd, "k_cmfd", length=restart_batch, &
group="cmfd")
length = cmfd % indices([4,1,2,3])
@ -790,7 +789,7 @@ contains
call sp % file_close()
! Write message
message = "Loading source file " // trim(filename) // "..."
message = "Loading source file " // trim(path_source_point) // "..."
call write_message(1)
! Open source file

11
src/utils/setup.py Normal file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env python
from distutils.core import setup
setup(name='statepoint',
version='0.5.4',
description='OpenMC StatePoint',
author='Paul Romano',
author_email='paul.k.romano@gmail.com',
url='https://github.com/mit-crpg/openmc',
py_modules=['statepoint'])

View file

@ -195,7 +195,7 @@ class StatePoint(object):
# Read CMFD information
cmfd_present = self._get_int(path='cmfd_on')[0]
if cmfd_present == 1:
self.cmfd_indices = self._get_int(4, path='cmfd/indicies')
self.cmfd_indices = self._get_int(4, path='cmfd/indices')
self.k_cmfd = self._get_double(self.current_batch,
path='cmfd/k_cmfd')
self.cmfd_src = self._get_double_array(np.product(self.cmfd_indices),

View file

@ -6,6 +6,7 @@ import os
import sys
import nose
import glob
import shutil
from subprocess import call
from nose_mpi import NoseMPI
@ -46,9 +47,8 @@ def run_suite(name=None, mpi=False):
try:
os.chdir(pwd)
os.rename(pwd + '/../src/openmc-' + name, pwd + '/../src/openmc')
shutil.copyfile(pwd + '/../src/openmc-' + name, pwd + '/../src/openmc')
result = nose.run(argv=argv, addplugins=plugins)
os.rename(pwd + '/../src/openmc', pwd + '/../src/openmc-' + name)
except OSError:
result = False
print('No OpenMC executable found for ' + name + ' tests')

View file

@ -15,10 +15,11 @@ import shutil
pwd = os.path.dirname(__file__)
if 'COMPILER' in os.environ:
compiler = 'COMPILER=' + os.environ['COMPILER']
else:
compiler = 'COMPILER=gnu'
# Set default copmilers
fc = 'gfortran'
h5fc = 'h5fc'
h5pfc = 'h5pfc'
mpifc = 'mpif90'
def setup():
@ -27,257 +28,333 @@ def setup():
def test_normal():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -H. -Bbuild'.format(fc))
assert returncode == 0
shutil.move('openmc', 'openmc-normal')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-normal')
def test_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(fc))
assert returncode == 0
shutil.move('openmc', 'openmc-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-debug')
def test_profile():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'PROFILE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dprofile=on -H. -Bbuild'.format(fc))
assert returncode == 0
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-profile')
def test_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(fc))
assert returncode == 0
shutil.move('openmc', 'openmc-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-optimize')
def test_mpi():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -H. -Bbuild'.format(mpifc))
assert returncode == 0
shutil.move('openmc', 'openmc-mpi')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi')
def test_mpi_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(mpifc))
assert returncode == 0
shutil.move('openmc', 'openmc-mpi-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi-debug')
def test_mpi_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(mpifc))
assert returncode == 0
shutil.move('openmc', 'openmc-mpi-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi-optimize')
def test_omp():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(fc))
assert returncode == 0
shutil.move('openmc', 'openmc-omp')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp')
def test_omp_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(fc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-debug')
def test_omp_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(fc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-optimize')
def test_hdf5():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'HDF5=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -H. -Bbuild'.format(h5fc))
assert returncode == 0
shutil.move('openmc', 'openmc-hdf5')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-hdf5')
def test_hdf5_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'HDF5=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(h5fc))
assert returncode == 0
shutil.move('openmc', 'openmc-hdf5-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-hdf5-debug')
def test_hdf5_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'HDF5=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(h5fc))
assert returncode == 0
shutil.move('openmc', 'openmc-hdf5-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-hdf5-optimize')
def test_omp_hdf5():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(h5fc))
assert returncode == 0
shutil.move('openmc', 'openmc-omp-hdf5')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-hdf5')
def test_omp_hdf5_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(h5fc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-hdf5-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-hdf5-debug')
def test_omp_hdf5_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(h5fc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-hdf5-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-hdf5-optimize')
def test_petsc():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -H. -Bbuild'.format(mpifc))
assert returncode == 0
shutil.move('openmc', 'openmc-petsc')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-petsc')
def test_petsc_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Ddebug=on '.format(mpifc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-petsc-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-petsc-debug')
def test_petsc_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes',
'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Doptimize=on '.format(mpifc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-petsc-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-petsc-optimize')
def test_mpi_omp():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(mpifc))
assert returncode == 0
shutil.move('openmc', 'openmc-mpi-omp')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi-omp')
def test_mpi_omp_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(mpifc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-mpi-omp-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi-omp-debug')
def test_mpi_omp_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(mpifc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-mpi-omp-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-mpi-omp-optimize')
def test_mpi_hdf5():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -H. -Bbuild'.format(h5pfc))
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5')
def test_mpi_hdf5_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(h5pfc))
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-debug')
def test_mpi_hdf5_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(h5pfc))
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-optimize')
def test_mpi_omp_hdf5():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(h5pfc))
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-omp')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-omp')
def test_mpi_omp_hdf5_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes',
'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(h5pfc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-omp-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-omp-debug')
def test_mpi_omp_hdf5_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes',
'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(h5pfc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-omp-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-omp-optimize')
def test_mpi_hdf5_petsc():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -H. -Bbuild'.format(h5pfc))
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-petsc')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-petsc')
def test_mpi_hdf5_petsc_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes',
'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Ddebug=on '.format(h5pfc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-petsc-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-petsc-debug')
def test_mpi_hdf5_petsc_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes',
'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Doptimize=on '.format(h5pfc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-phdf5-petsc-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-phdf5-petsc-optimize')
def test_mpi_omp_hdf5_petsc():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes',
'PETSC=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) +
'-H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-phdf5-petsc')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc')
def test_mpi_omp_hdf5_petsc_debug():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes',
'PETSC=yes', 'DEBUG=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) +
'-Ddebug=on -H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-phdf5-petsc-debug')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc-debug')
def test_mpi_omp_hdf5_petsc_optimize():
returncode = run(['make', 'distclean'])
returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes',
'PETSC=yes', 'OPTIMIZE=yes'])
shutil.rmtree('build', ignore_errors=True)
returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) +
'-Doptimize=on -H. -Bbuild')
assert returncode == 0
shutil.move('openmc', 'openmc-omp-phdf5-petsc-optimize')
returncode = run('make -s -C build')
assert returncode == 0
shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc-optimize')
def run(commands):
proc = Popen(commands, stderr=STDOUT, stdout=PIPE)
proc = Popen(commands, shell=True, stderr=STDOUT, stdout=PIPE)
print(proc.communicate()[0])
returncode = proc.returncode
return returncode
def teardown(commands):
returncode = run(['make', 'distclean'])
shutil.rmtree('build', ignore_errors=True)
shutil.copy('openmc-normal', 'openmc')

View file

@ -1,2 +1,2 @@
k-combined:
1.012443E+00 2.162448E-02
1.010190E+00 1.740589E-02

View file

@ -1,2 +1,2 @@
k-combined:
9.761880E-01 9.170415E-03
9.701793E-01 8.482149E-03

View file

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<settings>
<source_point batches="0" separate="true" overwrite_latest="true"/>
<source_point batches="0" overwrite_latest="true"/>
<eigenvalue>
<batches>10</batches>

View file

@ -1,2 +1,2 @@
k-combined:
1.010313E+00 3.162080E-02
1.006312E+00 3.000112E-02