mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Merge branch 'release-0.7.0'
This commit is contained in:
commit
31c1f86f44
546 changed files with 33026 additions and 228766 deletions
34
.gitignore
vendored
34
.gitignore
vendored
|
|
@ -8,8 +8,12 @@
|
|||
# Compiler python objects
|
||||
*.pyc
|
||||
|
||||
# OpenMC executable
|
||||
src/openmc
|
||||
# Python distribution
|
||||
dist/
|
||||
openmc.egg-info/
|
||||
|
||||
# Inputs generated from Python API
|
||||
examples/python/**/*.xml
|
||||
|
||||
# emacs backups
|
||||
*~
|
||||
|
|
@ -22,7 +26,7 @@ docs/build
|
|||
docs/source/_images/*.pdf
|
||||
|
||||
# Source build
|
||||
src/build
|
||||
build
|
||||
|
||||
# build from src/utils/setup.py
|
||||
src/utils/build
|
||||
|
|
@ -30,14 +34,32 @@ src/utils/build
|
|||
# xml-fortran reader
|
||||
src/xml-fortran/xmlreader
|
||||
|
||||
# Modules built from XML templates
|
||||
src/templates/*.f90
|
||||
|
||||
# Test results error file
|
||||
results_error.dat
|
||||
|
||||
# Test build files
|
||||
tests/build/
|
||||
tests/ctestscript.run
|
||||
|
||||
# HDF5 files
|
||||
*.h5
|
||||
|
||||
# Build files
|
||||
src/CMakeCache.txt
|
||||
src/CMakeFiles/
|
||||
src/bin/
|
||||
src/cmake_install.cmake
|
||||
src/install_manifest.txt
|
||||
|
||||
# Data downloaded from NNDC
|
||||
data/nndc
|
||||
|
||||
#Images
|
||||
*.ppm
|
||||
|
||||
# PyCharm project configuration files
|
||||
.idea
|
||||
.idea/*
|
||||
|
||||
# IPython notebook checkpoints
|
||||
.ipynb_checkpoints
|
||||
54
.travis.yml
Normal file
54
.travis.yml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
sudo: false
|
||||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
- "3.4"
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- gfortran
|
||||
- g++
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/mpich_install
|
||||
- $HOME/hdf5_install
|
||||
- $HOME/phdf5_install
|
||||
|
||||
before_install:
|
||||
# ============== Handle Python third-party packages ==============
|
||||
- if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
|
||||
wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||
else
|
||||
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||
fi
|
||||
- bash miniconda.sh -b -p $HOME/miniconda
|
||||
- export PATH="$HOME/miniconda/bin:$PATH"
|
||||
- hash -r
|
||||
- conda config --set always_yes yes --set changeps1 no
|
||||
- conda update -q conda
|
||||
- conda info -a
|
||||
- conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy h5py
|
||||
- source activate test-environment
|
||||
|
||||
# Install GCC, MPICH, HDF5, PHDF5
|
||||
- ./tests/travis_install.sh
|
||||
- export FC=gfortran
|
||||
- export MPI_DIR=$HOME/mpich_install
|
||||
- export PHDF5_DIR=$HOME/phdf5_install
|
||||
- export HDF5_DIR=$HOME/hdf5_install
|
||||
|
||||
install: true
|
||||
|
||||
before_script:
|
||||
- cd data
|
||||
- git clone --branch=master git://github.com/bhermanmit/nndc_xs nndc_xs
|
||||
- cat nndc_xs/nndc.tar.gza* | tar xzvf -
|
||||
- rm -rf nndc_xs
|
||||
- export CROSS_SECTIONS=$PWD/nndc/cross_sections.xml
|
||||
- cd ..
|
||||
|
||||
script:
|
||||
- cd tests
|
||||
- export OMP_NUM_THREADS=3
|
||||
- ./travis.sh
|
||||
- cd ..
|
||||
|
|
@ -21,23 +21,27 @@ endif()
|
|||
|
||||
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)
|
||||
option(coverage "Compile with flags" OFF)
|
||||
option(coverage "Compile with coverage analysis flags" OFF)
|
||||
option(mpif08 "Use Fortran 2008 MPI interface" OFF)
|
||||
|
||||
if (verbose)
|
||||
set(CMAKE_VERBOSE_MAKEFILE on)
|
||||
endif()
|
||||
|
||||
# Maximum number of nested coordinates levels
|
||||
set(maxcoord 10 CACHE STRING "Maximum number of nested coordinate levels")
|
||||
add_definitions(-DMAX_COORD=${maxcoord})
|
||||
|
||||
#===============================================================================
|
||||
# MPI for distributed-memory parallelism / HDF5 for binary output
|
||||
#===============================================================================
|
||||
|
||||
set(MPI_ENABLED FALSE)
|
||||
set(HDF5_ENABLED FALSE)
|
||||
if($ENV{FC} MATCHES "mpi.*")
|
||||
if($ENV{FC} MATCHES "mpi[^/]*$")
|
||||
message("-- Detected MPI wrapper: $ENV{FC}")
|
||||
add_definitions(-DMPI)
|
||||
set(MPI_ENABLED TRUE)
|
||||
|
|
@ -52,11 +56,24 @@ elseif($ENV{FC} MATCHES "h5pfc$")
|
|||
set(HDF5_ENABLED TRUE)
|
||||
endif()
|
||||
|
||||
# Check for Fortran 2008 MPI interface
|
||||
if(MPI_ENABLED AND mpif08)
|
||||
message("-- Using Fortran 2008 MPI bindings")
|
||||
add_definitions(-DMPIF08)
|
||||
endif()
|
||||
|
||||
#===============================================================================
|
||||
# Set compile/link flags based on which compiler is being used
|
||||
#===============================================================================
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
|
||||
# Make sure version is sufficient
|
||||
execute_process(COMMAND ${CMAKE_Fortran_COMPILER} -dumpversion
|
||||
OUTPUT_VARIABLE GCC_VERSION)
|
||||
if(GCC_VERSION VERSION_LESS 4.6)
|
||||
message(FATAL_ERROR "gfortran version must be 4.6 or higher")
|
||||
endif()
|
||||
|
||||
# GNU Fortran compiler options
|
||||
set(f90flags "-cpp -std=f2008 -fbacktrace")
|
||||
if(debug)
|
||||
|
|
@ -116,7 +133,8 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
|
|||
|
||||
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
|
||||
# IBM XL compiler options
|
||||
set(f90flags "-WF,-DNO_F2008 -O2")
|
||||
set(f90flags "-O2")
|
||||
add_definitions(-DNO_F2008)
|
||||
if(debug)
|
||||
set(f90flags "-g -C -qflag=i:i -u")
|
||||
set(ldflags "-g")
|
||||
|
|
@ -143,78 +161,6 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
|
|||
|
||||
endif()
|
||||
|
||||
#===============================================================================
|
||||
# PETSc for CMFD functionality
|
||||
#===============================================================================
|
||||
|
||||
set (PETSC_ENABLED FALSE)
|
||||
if(petsc)
|
||||
set(PETSC_ENABLED TRUE)
|
||||
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()
|
||||
|
||||
# If libdl wasn't found, search /usr/lib64
|
||||
if(PETSC_DL_LIB STREQUAL "PETSC_DL_LIB-NOTFOUND")
|
||||
find_library(PETSC_DL_LIB libdl.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_DL_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_DL_LIB})
|
||||
endif()
|
||||
|
||||
# If libm wasn't found, search /usr/lib64
|
||||
if(PETSC_M_LIB STREQUAL "PETSC_M_LIB-NOTFOUND")
|
||||
find_library(PETSC_M_LIB libm.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_M_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_M_LIB})
|
||||
endif()
|
||||
|
||||
# If libpthread wasn't found, search /usr/lib64
|
||||
if(PETSC_PTHREAD_LIB STREQUAL "PETSC_PTHREAD_LIB-NOTFOUND")
|
||||
find_library(PETSC_PTHREAD_LIB libpthread.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_PTHREAD_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_PTHREAD_LIB})
|
||||
endif()
|
||||
|
||||
# If librt wasn't found, search /usr/lib64
|
||||
if(PETSC_RT_LIB STREQUAL "PETSC_RT_LIB-NOTFOUND")
|
||||
find_library(PETSC_RT_LIB librt.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_RT_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_RT_LIB})
|
||||
endif()
|
||||
|
||||
# If libssl wasn't found, search /usr/lib64
|
||||
if(PETSC_SSL_LIB STREQUAL "PETSC_SSL_LIB-NOTFOUND")
|
||||
find_library(PETSC_SSL_LIB libssl.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_SSL_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_SSL_LIB})
|
||||
endif()
|
||||
|
||||
# If libcrypto wasn't found, search /usr/lib64
|
||||
if(PETSC_CRYPTO_LIB STREQUAL "PETSC_CRYPTO_LIB-NOTFOUND")
|
||||
find_library(PETSC_CRYPTO_LIB libcrypto.so /usr/lib64)
|
||||
list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_CRYPTO_LIB-NOTFOUND)
|
||||
list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_CRYPTO_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
|
||||
#===============================================================================
|
||||
|
|
@ -234,21 +180,29 @@ endif()
|
|||
|
||||
# Only initialize git submodules if it is not there. User is responsible
|
||||
# for future updates of fox xml submodule.
|
||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/xml/fox/.git)
|
||||
message("-- Initializing/Updating FoX XML submodule...")
|
||||
execute_process(COMMAND git submodule init
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
execute_process(COMMAND git submodule update
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/xml/fox/.git)
|
||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
|
||||
message("-- Cloning FoX XML git repository...")
|
||||
execute_process(COMMAND git clone https://github.com/mit-crpg/fox.git src/xml/fox
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
execute_process(COMMAND git checkout bdc852f4f43d969fb1b179cba79295c1e095a455
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/xml/fox)
|
||||
else()
|
||||
message("-- Initializing/Updating FoX XML submodule...")
|
||||
execute_process(COMMAND git submodule init
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
execute_process(COMMAND git submodule update
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
add_subdirectory(xml/fox)
|
||||
add_subdirectory(src/xml/fox)
|
||||
|
||||
#===============================================================================
|
||||
# Build OpenMC executable
|
||||
#===============================================================================
|
||||
|
||||
set(program "openmc")
|
||||
file(GLOB source *.F90 xml/openmc_fox.F90)
|
||||
file(GLOB source src/*.F90 src/xml/openmc_fox.F90)
|
||||
add_executable(${program} ${source})
|
||||
target_link_libraries(${program} ${libraries} fox_dom)
|
||||
set_target_properties(${program} PROPERTIES
|
||||
|
|
@ -260,24 +214,16 @@ set_target_properties(${program} PROPERTIES
|
|||
#===============================================================================
|
||||
|
||||
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")
|
||||
install(DIRECTORY src/relaxng DESTINATION share/openmc)
|
||||
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
|
||||
--prefix=${CMAKE_INSTALL_PREFIX}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils)")
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})")
|
||||
endif()
|
||||
|
||||
#===============================================================================
|
||||
|
|
@ -288,15 +234,7 @@ endif()
|
|||
include(CTest)
|
||||
|
||||
# Get a list of all the tests to run
|
||||
file(GLOB_RECURSE TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../tests/test_*.py)
|
||||
|
||||
# Check to see if PETSC is compiled for CMFD tests
|
||||
if (NOT ${PETSC_ENABLED})
|
||||
file(GLOB_RECURSE CMFD_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../tests/test_cmfd_jfnk.py)
|
||||
foreach(cmfd_test in ${CMFD_TESTS})
|
||||
list(REMOVE_ITEM TESTS ${cmfd_test})
|
||||
endforeach(cmfd_test)
|
||||
endif(NOT ${PETSC_ENABLED})
|
||||
file(GLOB_RECURSE TESTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_*.py)
|
||||
|
||||
# Check for MEM_CHECK and COVERAGE variables
|
||||
if (DEFINED ENV{MEM_CHECK})
|
||||
|
|
@ -349,6 +287,22 @@ foreach(test ${TESTS})
|
|||
WORKING_DIRECTORY ${TEST_PATH}
|
||||
COMMAND $<TARGET_FILE:openmc> -p ${TEST_PATH})
|
||||
|
||||
elseif(${test} MATCHES "test_filter_distribcell")
|
||||
|
||||
# Add each case for distribcell tests
|
||||
add_test(NAME ${TEST_NAME}_case-1
|
||||
WORKING_DIRECTORY ${TEST_PATH}/case-1
|
||||
COMMAND $<TARGET_FILE:openmc> ${TEST_PATH}/case-1)
|
||||
add_test(NAME ${TEST_NAME}_case-2
|
||||
WORKING_DIRECTORY ${TEST_PATH}/case-2
|
||||
COMMAND $<TARGET_FILE:openmc> ${TEST_PATH}/case-2)
|
||||
add_test(NAME ${TEST_NAME}_case-3
|
||||
WORKING_DIRECTORY ${TEST_PATH}/case-3
|
||||
COMMAND $<TARGET_FILE:openmc> ${TEST_PATH}/case-3)
|
||||
add_test(NAME ${TEST_NAME}_case-4
|
||||
WORKING_DIRECTORY ${TEST_PATH}/case-4
|
||||
COMMAND $<TARGET_FILE:openmc> ${TEST_PATH}/case-4)
|
||||
|
||||
# If a restart test is encounted, need to run with -r and restart file(s)
|
||||
elseif(${test} MATCHES "restart")
|
||||
|
||||
|
|
@ -8,6 +8,12 @@ import sys
|
|||
import tarfile
|
||||
import glob
|
||||
import hashlib
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-b', '--batch', action = 'store_true',
|
||||
help = 'supresses standard in')
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
from urllib.request import urlopen
|
||||
|
|
@ -15,8 +21,8 @@ except ImportError:
|
|||
from urllib2 import urlopen
|
||||
|
||||
cwd = os.getcwd()
|
||||
sys.path.append(os.path.join(cwd, '..', 'src', 'utils'))
|
||||
from convert_binary import ascii_to_binary
|
||||
sys.path.insert(0, os.path.join(cwd, '..'))
|
||||
from openmc.ace import ascii_to_binary
|
||||
|
||||
baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/'
|
||||
files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz',
|
||||
|
|
@ -73,7 +79,7 @@ for f in files:
|
|||
|
||||
print('Verifying MD5 checksums...')
|
||||
for f, checksum in zip(files, checksums):
|
||||
downloadsum = hashlib.md5(open(f, 'r').read()).hexdigest()
|
||||
downloadsum = hashlib.md5(open(f, 'rb').read()).hexdigest()
|
||||
if downloadsum != checksum:
|
||||
raise IOError("MD5 checksum for {} does not match. If this is your first "
|
||||
"time receiving this message, please re-run the script. "
|
||||
|
|
@ -118,10 +124,13 @@ shutil.copyfile('cross_sections_nndc.xml', 'nndc/cross_sections.xml')
|
|||
# PROMPT USER TO DELETE .TAR.GZ FILES
|
||||
|
||||
# Ask user to delete
|
||||
if sys.version_info[0] < 3:
|
||||
response = raw_input('Delete *.tar.gz files? ([y]/n) ')
|
||||
if not args.batch:
|
||||
if sys.version_info[0] < 3:
|
||||
response = raw_input('Delete *.tar.gz files? ([y]/n) ')
|
||||
else:
|
||||
response = input('Delete *.tar.gz files? ([y]/n) ')
|
||||
else:
|
||||
response = input('Delete *.tar.gz files? ([y]/n) ')
|
||||
response = 'y'
|
||||
|
||||
# Delete files if requested
|
||||
if not response or response.lower().startswith('y'):
|
||||
|
|
@ -134,10 +143,13 @@ if not response or response.lower().startswith('y'):
|
|||
# PROMPT USER TO CONVERT ASCII TO BINARY
|
||||
|
||||
# Ask user to convert
|
||||
if sys.version_info[0] < 3:
|
||||
response = raw_input('Convert ACE files to binary? ([y]/n) ')
|
||||
if not args.batch:
|
||||
if sys.version_info[0] < 3:
|
||||
response = raw_input('Convert ACE files to binary? ([y]/n) ')
|
||||
else:
|
||||
response = input('Convert ACE files to binary? ([y]/n) ')
|
||||
else:
|
||||
response = input('Convert ACE files to binary? ([y]/n) ')
|
||||
response = 'y'
|
||||
|
||||
# Convert files if requested
|
||||
if not response or response.lower().startswith('y'):
|
||||
|
|
|
|||
780
docs/source/_images/hex_lat.svg
Normal file
780
docs/source/_images/hex_lat.svg
Normal file
|
|
@ -0,0 +1,780 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="513pt" version="1.1" viewBox="0 0 513 513" width="513pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="
|
||||
M0 513
|
||||
L513 513
|
||||
L513 0
|
||||
L0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="patch_2">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M231.818 213.75
|
||||
L207.137 256.5
|
||||
L231.818 299.25
|
||||
L281.182 299.25
|
||||
L305.863 256.5
|
||||
L281.182 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_3">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M234.286 218.025
|
||||
L212.073 256.5
|
||||
L234.286 294.975
|
||||
L278.714 294.975
|
||||
L300.927 256.5
|
||||
L278.714 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_4">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M231.818 128.25
|
||||
L207.137 171
|
||||
L231.818 213.75
|
||||
L281.182 213.75
|
||||
L305.863 171
|
||||
L281.182 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_5">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M234.286 132.525
|
||||
L212.073 171
|
||||
L234.286 209.475
|
||||
L278.714 209.475
|
||||
L300.927 171
|
||||
L278.714 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_6">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M305.863 171
|
||||
L281.182 213.75
|
||||
L305.863 256.5
|
||||
L355.227 256.5
|
||||
L379.909 213.75
|
||||
L355.227 171
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_7">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M308.332 175.275
|
||||
L286.118 213.75
|
||||
L308.332 252.225
|
||||
L352.759 252.225
|
||||
L374.972 213.75
|
||||
L352.759 175.275
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_8">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M305.863 256.5
|
||||
L281.182 299.25
|
||||
L305.863 342
|
||||
L355.227 342
|
||||
L379.909 299.25
|
||||
L355.227 256.5
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_9">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M308.332 260.775
|
||||
L286.118 299.25
|
||||
L308.332 337.725
|
||||
L352.759 337.725
|
||||
L374.972 299.25
|
||||
L352.759 260.775
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_10">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M231.818 299.25
|
||||
L207.137 342
|
||||
L231.818 384.75
|
||||
L281.182 384.75
|
||||
L305.863 342
|
||||
L281.182 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_11">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M234.286 303.525
|
||||
L212.073 342
|
||||
L234.286 380.475
|
||||
L278.714 380.475
|
||||
L300.927 342
|
||||
L278.714 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_12">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M157.773 256.5
|
||||
L133.091 299.25
|
||||
L157.773 342
|
||||
L207.137 342
|
||||
L231.818 299.25
|
||||
L207.137 256.5
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_13">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M160.241 260.775
|
||||
L138.028 299.25
|
||||
L160.241 337.725
|
||||
L204.668 337.725
|
||||
L226.882 299.25
|
||||
L204.668 260.775
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_14">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M157.773 171
|
||||
L133.091 213.75
|
||||
L157.773 256.5
|
||||
L207.137 256.5
|
||||
L231.818 213.75
|
||||
L207.137 171
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_15">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M160.241 175.275
|
||||
L138.028 213.75
|
||||
L160.241 252.225
|
||||
L204.668 252.225
|
||||
L226.882 213.75
|
||||
L204.668 175.275
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_16">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M231.818 42.75
|
||||
L207.137 85.5
|
||||
L231.818 128.25
|
||||
L281.182 128.25
|
||||
L305.863 85.5
|
||||
L281.182 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_17">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M234.286 47.025
|
||||
L212.073 85.5
|
||||
L234.286 123.975
|
||||
L278.714 123.975
|
||||
L300.927 85.5
|
||||
L278.714 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_18">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M305.863 85.5
|
||||
L281.182 128.25
|
||||
L305.863 171
|
||||
L355.227 171
|
||||
L379.909 128.25
|
||||
L355.227 85.5
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_19">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M308.332 89.775
|
||||
L286.118 128.25
|
||||
L308.332 166.725
|
||||
L352.759 166.725
|
||||
L374.972 128.25
|
||||
L352.759 89.775
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_20">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M379.909 128.25
|
||||
L355.227 171
|
||||
L379.909 213.75
|
||||
L429.272 213.75
|
||||
L453.954 171
|
||||
L429.272 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_21">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M382.377 132.525
|
||||
L360.163 171
|
||||
L382.377 209.475
|
||||
L426.804 209.475
|
||||
L449.017 171
|
||||
L426.804 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_22">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M379.909 213.75
|
||||
L355.227 256.5
|
||||
L379.909 299.25
|
||||
L429.272 299.25
|
||||
L453.954 256.5
|
||||
L429.272 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_23">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M382.377 218.025
|
||||
L360.163 256.5
|
||||
L382.377 294.975
|
||||
L426.804 294.975
|
||||
L449.017 256.5
|
||||
L426.804 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_24">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M379.909 299.25
|
||||
L355.227 342
|
||||
L379.909 384.75
|
||||
L429.272 384.75
|
||||
L453.954 342
|
||||
L429.272 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_25">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M382.377 303.525
|
||||
L360.163 342
|
||||
L382.377 380.475
|
||||
L426.804 380.475
|
||||
L449.017 342
|
||||
L426.804 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_26">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M305.863 342
|
||||
L281.182 384.75
|
||||
L305.863 427.5
|
||||
L355.227 427.5
|
||||
L379.909 384.75
|
||||
L355.227 342
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_27">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M308.332 346.275
|
||||
L286.118 384.75
|
||||
L308.332 423.225
|
||||
L352.759 423.225
|
||||
L374.972 384.75
|
||||
L352.759 346.275
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_28">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M231.818 384.75
|
||||
L207.137 427.5
|
||||
L231.818 470.25
|
||||
L281.182 470.25
|
||||
L305.863 427.5
|
||||
L281.182 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_29">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M234.286 389.025
|
||||
L212.073 427.5
|
||||
L234.286 465.975
|
||||
L278.714 465.975
|
||||
L300.927 427.5
|
||||
L278.714 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_30">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M157.773 342
|
||||
L133.091 384.75
|
||||
L157.773 427.5
|
||||
L207.137 427.5
|
||||
L231.818 384.75
|
||||
L207.137 342
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_31">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M160.241 346.275
|
||||
L138.028 384.75
|
||||
L160.241 423.225
|
||||
L204.668 423.225
|
||||
L226.882 384.75
|
||||
L204.668 346.275
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_32">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M83.7279 299.25
|
||||
L59.0462 342
|
||||
L83.7279 384.75
|
||||
L133.091 384.75
|
||||
L157.773 342
|
||||
L133.091 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_33">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M86.1961 303.525
|
||||
L63.9826 342
|
||||
L86.1961 380.475
|
||||
L130.623 380.475
|
||||
L152.837 342
|
||||
L130.623 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_34">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M83.7279 213.75
|
||||
L59.0462 256.5
|
||||
L83.7279 299.25
|
||||
L133.091 299.25
|
||||
L157.773 256.5
|
||||
L133.091 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_35">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M86.1961 218.025
|
||||
L63.9826 256.5
|
||||
L86.1961 294.975
|
||||
L130.623 294.975
|
||||
L152.837 256.5
|
||||
L130.623 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_36">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M83.7279 128.25
|
||||
L59.0462 171
|
||||
L83.7279 213.75
|
||||
L133.091 213.75
|
||||
L157.773 171
|
||||
L133.091 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_37">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M86.1961 132.525
|
||||
L63.9826 171
|
||||
L86.1961 209.475
|
||||
L130.623 209.475
|
||||
L152.837 171
|
||||
L130.623 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_38">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M157.773 85.5
|
||||
L133.091 128.25
|
||||
L157.773 171
|
||||
L207.137 171
|
||||
L231.818 128.25
|
||||
L207.137 85.5
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_39">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M160.241 89.775
|
||||
L138.028 128.25
|
||||
L160.241 166.725
|
||||
L204.668 166.725
|
||||
L226.882 128.25
|
||||
L204.668 89.775
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_40">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M41.04 58.995
|
||||
L41.04 64.125
|
||||
L82.08 64.125
|
||||
L82.08 69.255
|
||||
L92.34 61.56
|
||||
L82.08 53.865
|
||||
L82.08 58.995
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_41">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M38.8186 62.8425
|
||||
L43.2614 60.2775
|
||||
L22.7414 24.7358
|
||||
L27.1841 22.1708
|
||||
L15.39 17.1329
|
||||
L13.8559 29.8658
|
||||
L18.2986 27.3008
|
||||
z
|
||||
" style="fill:#ff0000;stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="line2d_1">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M108.41 513
|
||||
L108.41 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_2">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 575.59
|
||||
M106.678 514
|
||||
L513 279.41" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_3">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M182.455 513
|
||||
L182.455 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_4">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 490.09
|
||||
L513 193.91" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_5">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M256.5 513
|
||||
L256.5 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_6">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 404.59
|
||||
L513 108.41" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_7">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M330.545 513
|
||||
L330.545 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_8">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 319.09
|
||||
L513 22.9097" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_9">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M404.59 513
|
||||
L404.59 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_10">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 233.59
|
||||
L406.322 -1" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="text_1">
|
||||
<!-- -2 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M19.1875 8.29688
|
||||
L53.6094 8.29688
|
||||
L53.6094 0
|
||||
L7.32812 0
|
||||
L7.32812 8.29688
|
||||
Q12.9375 14.1094 22.625 23.8906
|
||||
Q32.3281 33.6875 34.8125 36.5312
|
||||
Q39.5469 41.8438 41.4219 45.5312
|
||||
Q43.3125 49.2188 43.3125 52.7812
|
||||
Q43.3125 58.5938 39.2344 62.25
|
||||
Q35.1562 65.9219 28.6094 65.9219
|
||||
Q23.9688 65.9219 18.8125 64.3125
|
||||
Q13.6719 62.7031 7.8125 59.4219
|
||||
L7.8125 69.3906
|
||||
Q13.7656 71.7812 18.9375 73
|
||||
Q24.125 74.2188 28.4219 74.2188
|
||||
Q39.75 74.2188 46.4844 68.5469
|
||||
Q53.2188 62.8906 53.2188 53.4219
|
||||
Q53.2188 48.9219 51.5312 44.8906
|
||||
Q49.8594 40.875 45.4062 35.4062
|
||||
Q44.1875 33.9844 37.6406 27.2188
|
||||
Q31.1094 20.4531 19.1875 8.29688" id="DejaVuSans-32"/>
|
||||
<path d="
|
||||
M4.89062 31.3906
|
||||
L31.2031 31.3906
|
||||
L31.2031 23.3906
|
||||
L4.89062 23.3906
|
||||
z
|
||||
" id="DejaVuSans-2d"/>
|
||||
</defs>
|
||||
<g transform="translate(116.959655953 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-2d"/>
|
||||
<use x="36.083984375" xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_2">
|
||||
<!-- -1 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M12.4062 8.29688
|
||||
L28.5156 8.29688
|
||||
L28.5156 63.9219
|
||||
L10.9844 60.4062
|
||||
L10.9844 69.3906
|
||||
L28.4219 72.9062
|
||||
L38.2812 72.9062
|
||||
L38.2812 8.29688
|
||||
L54.3906 8.29688
|
||||
L54.3906 0
|
||||
L12.4062 0
|
||||
z
|
||||
" id="DejaVuSans-31"/>
|
||||
</defs>
|
||||
<g transform="translate(191.004827976 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-2d"/>
|
||||
<use x="36.083984375" xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_3">
|
||||
<!-- -1 -->
|
||||
<g transform="translate(8.55 472.990344047)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-2d"/>
|
||||
<use x="36.083984375" xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_4">
|
||||
<!-- 0 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M31.7812 66.4062
|
||||
Q24.1719 66.4062 20.3281 58.9062
|
||||
Q16.5 51.4219 16.5 36.375
|
||||
Q16.5 21.3906 20.3281 13.8906
|
||||
Q24.1719 6.39062 31.7812 6.39062
|
||||
Q39.4531 6.39062 43.2812 13.8906
|
||||
Q47.125 21.3906 47.125 36.375
|
||||
Q47.125 51.4219 43.2812 58.9062
|
||||
Q39.4531 66.4062 31.7812 66.4062
|
||||
M31.7812 74.2188
|
||||
Q44.0469 74.2188 50.5156 64.5156
|
||||
Q56.9844 54.8281 56.9844 36.375
|
||||
Q56.9844 17.9688 50.5156 8.26562
|
||||
Q44.0469 -1.42188 31.7812 -1.42188
|
||||
Q19.5312 -1.42188 13.0625 8.26562
|
||||
Q6.59375 17.9688 6.59375 36.375
|
||||
Q6.59375 54.8281 13.0625 64.5156
|
||||
Q19.5312 74.2188 31.7812 74.2188" id="DejaVuSans-30"/>
|
||||
</defs>
|
||||
<g transform="translate(265.05 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_5">
|
||||
<!-- 0 -->
|
||||
<g transform="translate(8.55 387.490344047)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-30"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_6">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(339.095172024 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_7">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(8.55 301.990344047)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_8">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(413.140344047 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_9">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(8.55 216.490344047)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_10">
|
||||
<!-- $\hat x$ -->
|
||||
<defs>
|
||||
<path d="
|
||||
M13.4844 53.8125
|
||||
L11.5312 55.9062
|
||||
L25 69.3906
|
||||
L38.375 55.9062
|
||||
L36.375 53.8125
|
||||
L25 63.8125
|
||||
z
|
||||
" id="Cmr10-5e"/>
|
||||
<path d="
|
||||
M7.8125 2.875
|
||||
Q9.57812 1.51562 12.7969 1.51562
|
||||
Q15.9219 1.51562 18.3125 4.51562
|
||||
Q20.7031 7.51562 21.5781 11.0781
|
||||
L26.125 28.8125
|
||||
Q27.2031 33.6406 27.2031 35.4062
|
||||
Q27.2031 37.8906 25.8125 39.75
|
||||
Q24.4219 41.6094 21.9219 41.6094
|
||||
Q18.75 41.6094 15.9688 39.625
|
||||
Q13.1875 37.6406 11.2812 34.5938
|
||||
Q9.375 31.5469 8.59375 28.4219
|
||||
Q8.40625 27.7812 7.8125 27.7812
|
||||
L6.59375 27.7812
|
||||
Q5.8125 27.7812 5.8125 28.7188
|
||||
L5.8125 29
|
||||
Q6.78125 32.7188 9.125 36.25
|
||||
Q11.4688 39.7969 14.8594 41.9844
|
||||
Q18.2656 44.1875 22.125 44.1875
|
||||
Q25.7812 44.1875 28.7344 42.2344
|
||||
Q31.6875 40.2812 32.9062 36.9219
|
||||
Q34.625 39.9844 37.2812 42.0781
|
||||
Q39.9375 44.1875 43.1094 44.1875
|
||||
Q45.2656 44.1875 47.5 43.4219
|
||||
Q49.75 42.6719 51.1719 41.1094
|
||||
Q52.5938 39.5469 52.5938 37.2031
|
||||
Q52.5938 34.6719 50.9531 32.8281
|
||||
Q49.3125 31 46.7812 31
|
||||
Q45.1719 31 44.0938 32.0312
|
||||
Q43.0156 33.0625 43.0156 34.625
|
||||
Q43.0156 36.7188 44.4531 38.2969
|
||||
Q45.9062 39.8906 47.9062 40.1875
|
||||
Q46.0938 41.6094 42.9219 41.6094
|
||||
Q39.7031 41.6094 37.3281 38.625
|
||||
Q34.9688 35.6406 33.9844 31.9844
|
||||
L29.5938 14.3125
|
||||
Q28.5156 10.2969 28.5156 7.71875
|
||||
Q28.5156 5.17188 29.9531 3.34375
|
||||
Q31.3906 1.51562 33.7969 1.51562
|
||||
Q38.4844 1.51562 42.1562 5.64062
|
||||
Q45.8438 9.76562 47.0156 14.7031
|
||||
Q47.2188 15.2812 47.7969 15.2812
|
||||
L49.0312 15.2812
|
||||
Q49.4219 15.2812 49.6562 15.0156
|
||||
Q49.9062 14.75 49.9062 14.4062
|
||||
Q49.9062 14.3125 49.8125 14.1094
|
||||
Q48.3906 8.15625 43.8438 3.51562
|
||||
Q39.3125 -1.125 33.5938 -1.125
|
||||
Q29.9375 -1.125 26.9844 0.84375
|
||||
Q24.0312 2.82812 22.7969 6.20312
|
||||
Q21.2344 3.26562 18.4688 1.0625
|
||||
Q15.7188 -1.125 12.5938 -1.125
|
||||
Q10.4531 -1.125 8.17188 -0.359375
|
||||
Q5.90625 0.390625 4.48438 1.95312
|
||||
Q3.07812 3.51562 3.07812 5.90625
|
||||
Q3.07812 8.25 4.70312 10.1719
|
||||
Q6.34375 12.1094 8.79688 12.1094
|
||||
Q10.4531 12.1094 11.5781 11.1094
|
||||
Q12.7031 10.1094 12.7031 8.5
|
||||
Q12.7031 6.39062 11.2969 4.82812
|
||||
Q9.90625 3.26562 7.8125 2.875" id="Cmmi10-78"/>
|
||||
</defs>
|
||||
<g transform="translate(61.56 81.886875)scale(0.2 -0.2)">
|
||||
<use transform="translate(-0.53125 3.609375)" xlink:href="#Cmr10-5e"/>
|
||||
<use transform="translate(0.0 0.734375)" xlink:href="#Cmmi10-78"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_11">
|
||||
<!-- $\hat \alpha$ -->
|
||||
<defs>
|
||||
<path d="
|
||||
M20.125 -1.125
|
||||
Q15.375 -1.125 11.6875 1.125
|
||||
Q8.01562 3.375 6 7.17188
|
||||
Q4 10.9844 4 15.8281
|
||||
Q4 22.6094 7.78125 29.25
|
||||
Q11.5781 35.8906 17.8438 40.0312
|
||||
Q24.125 44.1875 31 44.1875
|
||||
Q36.0781 44.1875 39.9375 41.5312
|
||||
Q43.7969 38.875 45.7969 34.4531
|
||||
Q47.7969 30.0312 47.7969 25
|
||||
L47.9062 18.3125
|
||||
Q51.3125 23.0469 53.6875 28.1406
|
||||
Q56.0625 33.25 57.3281 38.7188
|
||||
Q57.5156 39.3125 58.1094 39.3125
|
||||
L59.2812 39.3125
|
||||
Q60.2031 39.3125 60.2031 38.375
|
||||
Q60.2031 38.2812 60.1094 38.0938
|
||||
Q58.9375 33.5 57.1719 29.2656
|
||||
Q55.4219 25.0469 53.0469 21.0938
|
||||
Q50.6875 17.1406 47.9062 13.9219
|
||||
Q47.9062 1.51562 50.7812 1.51562
|
||||
Q52.6406 1.51562 53.8281 2.60938
|
||||
Q55.0312 3.71875 55.9375 5.32812
|
||||
Q56.8438 6.9375 57.0781 6.98438
|
||||
L58.2969 6.98438
|
||||
Q59.0781 6.98438 59.0781 6
|
||||
Q59.0781 3.51562 56.2188 1.1875
|
||||
Q53.375 -1.125 50.5938 -1.125
|
||||
Q46.9688 -1.125 44.5781 1.21875
|
||||
Q42.1875 3.5625 41.3125 7.32812
|
||||
Q36.625 3.32812 31.1562 1.09375
|
||||
Q25.6875 -1.125 20.125 -1.125
|
||||
M20.3125 1.51562
|
||||
Q31 1.51562 40.8281 10.2969
|
||||
Q40.7656 10.8906 40.6719 11.7344
|
||||
Q40.5781 12.5938 40.5781 12.7031
|
||||
L40.5781 23.4844
|
||||
Q40.5781 41.6094 30.8125 41.6094
|
||||
Q24.9531 41.6094 20.5469 36.5938
|
||||
Q16.1562 31.5938 13.9375 24.625
|
||||
Q11.7188 17.6719 11.7188 11.9219
|
||||
Q11.7188 7.5625 13.9375 4.53125
|
||||
Q16.1562 1.51562 20.3125 1.51562" id="Cmmi10-ae"/>
|
||||
</defs>
|
||||
<g transform="translate(35.91 35.91)scale(0.2 -0.2)">
|
||||
<use transform="translate(3.46875 3.609375)" xlink:href="#Cmr10-5e"/>
|
||||
<use transform="translate(0.0 0.734375)" xlink:href="#Cmmi10-ae"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p5382b9a736">
|
||||
<rect height="513.0" width="513.0" x="0.0" y="0.0"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
711
docs/source/_images/rect_lat.svg
Normal file
711
docs/source/_images/rect_lat.svg
Normal file
|
|
@ -0,0 +1,711 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="513pt" version="1.1" viewBox="0 0 513 513" width="513pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="
|
||||
M0 513
|
||||
L513 513
|
||||
L513 0
|
||||
L0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="patch_2">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M42.75 470.25
|
||||
L128.25 470.25
|
||||
L128.25 384.75
|
||||
L42.75 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_3">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M47.025 465.975
|
||||
L123.975 465.975
|
||||
L123.975 389.025
|
||||
L47.025 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_4">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M128.25 470.25
|
||||
L213.75 470.25
|
||||
L213.75 384.75
|
||||
L128.25 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_5">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M132.525 465.975
|
||||
L209.475 465.975
|
||||
L209.475 389.025
|
||||
L132.525 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_6">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M213.75 470.25
|
||||
L299.25 470.25
|
||||
L299.25 384.75
|
||||
L213.75 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_7">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M218.025 465.975
|
||||
L294.975 465.975
|
||||
L294.975 389.025
|
||||
L218.025 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_8">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M299.25 470.25
|
||||
L384.75 470.25
|
||||
L384.75 384.75
|
||||
L299.25 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_9">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M303.525 465.975
|
||||
L380.475 465.975
|
||||
L380.475 389.025
|
||||
L303.525 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_10">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M384.75 470.25
|
||||
L470.25 470.25
|
||||
L470.25 384.75
|
||||
L384.75 384.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_11">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M389.025 465.975
|
||||
L465.975 465.975
|
||||
L465.975 389.025
|
||||
L389.025 389.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_12">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M42.75 384.75
|
||||
L128.25 384.75
|
||||
L128.25 299.25
|
||||
L42.75 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_13">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M47.025 380.475
|
||||
L123.975 380.475
|
||||
L123.975 303.525
|
||||
L47.025 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_14">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M128.25 384.75
|
||||
L213.75 384.75
|
||||
L213.75 299.25
|
||||
L128.25 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_15">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M132.525 380.475
|
||||
L209.475 380.475
|
||||
L209.475 303.525
|
||||
L132.525 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_16">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M213.75 384.75
|
||||
L299.25 384.75
|
||||
L299.25 299.25
|
||||
L213.75 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_17">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M218.025 380.475
|
||||
L294.975 380.475
|
||||
L294.975 303.525
|
||||
L218.025 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_18">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M299.25 384.75
|
||||
L384.75 384.75
|
||||
L384.75 299.25
|
||||
L299.25 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_19">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M303.525 380.475
|
||||
L380.475 380.475
|
||||
L380.475 303.525
|
||||
L303.525 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_20">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M384.75 384.75
|
||||
L470.25 384.75
|
||||
L470.25 299.25
|
||||
L384.75 299.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_21">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M389.025 380.475
|
||||
L465.975 380.475
|
||||
L465.975 303.525
|
||||
L389.025 303.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_22">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M42.75 299.25
|
||||
L128.25 299.25
|
||||
L128.25 213.75
|
||||
L42.75 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_23">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M47.025 294.975
|
||||
L123.975 294.975
|
||||
L123.975 218.025
|
||||
L47.025 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_24">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M128.25 299.25
|
||||
L213.75 299.25
|
||||
L213.75 213.75
|
||||
L128.25 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_25">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M132.525 294.975
|
||||
L209.475 294.975
|
||||
L209.475 218.025
|
||||
L132.525 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_26">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M213.75 299.25
|
||||
L299.25 299.25
|
||||
L299.25 213.75
|
||||
L213.75 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_27">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M218.025 294.975
|
||||
L294.975 294.975
|
||||
L294.975 218.025
|
||||
L218.025 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_28">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M299.25 299.25
|
||||
L384.75 299.25
|
||||
L384.75 213.75
|
||||
L299.25 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_29">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M303.525 294.975
|
||||
L380.475 294.975
|
||||
L380.475 218.025
|
||||
L303.525 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_30">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M384.75 299.25
|
||||
L470.25 299.25
|
||||
L470.25 213.75
|
||||
L384.75 213.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_31">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M389.025 294.975
|
||||
L465.975 294.975
|
||||
L465.975 218.025
|
||||
L389.025 218.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_32">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M42.75 213.75
|
||||
L128.25 213.75
|
||||
L128.25 128.25
|
||||
L42.75 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_33">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M47.025 209.475
|
||||
L123.975 209.475
|
||||
L123.975 132.525
|
||||
L47.025 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_34">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M128.25 213.75
|
||||
L213.75 213.75
|
||||
L213.75 128.25
|
||||
L128.25 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_35">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M132.525 209.475
|
||||
L209.475 209.475
|
||||
L209.475 132.525
|
||||
L132.525 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_36">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M213.75 213.75
|
||||
L299.25 213.75
|
||||
L299.25 128.25
|
||||
L213.75 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_37">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M218.025 209.475
|
||||
L294.975 209.475
|
||||
L294.975 132.525
|
||||
L218.025 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_38">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M299.25 213.75
|
||||
L384.75 213.75
|
||||
L384.75 128.25
|
||||
L299.25 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_39">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M303.525 209.475
|
||||
L380.475 209.475
|
||||
L380.475 132.525
|
||||
L303.525 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_40">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M384.75 213.75
|
||||
L470.25 213.75
|
||||
L470.25 128.25
|
||||
L384.75 128.25
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_41">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M389.025 209.475
|
||||
L465.975 209.475
|
||||
L465.975 132.525
|
||||
L389.025 132.525
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_42">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M42.75 128.25
|
||||
L128.25 128.25
|
||||
L128.25 42.75
|
||||
L42.75 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_43">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M47.025 123.975
|
||||
L123.975 123.975
|
||||
L123.975 47.025
|
||||
L47.025 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_44">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M128.25 128.25
|
||||
L213.75 128.25
|
||||
L213.75 42.75
|
||||
L128.25 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_45">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M132.525 123.975
|
||||
L209.475 123.975
|
||||
L209.475 47.025
|
||||
L132.525 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_46">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M213.75 128.25
|
||||
L299.25 128.25
|
||||
L299.25 42.75
|
||||
L213.75 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_47">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M218.025 123.975
|
||||
L294.975 123.975
|
||||
L294.975 47.025
|
||||
L218.025 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_48">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M299.25 128.25
|
||||
L384.75 128.25
|
||||
L384.75 42.75
|
||||
L299.25 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_49">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M303.525 123.975
|
||||
L380.475 123.975
|
||||
L380.475 47.025
|
||||
L303.525 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="patch_50">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M384.75 128.25
|
||||
L470.25 128.25
|
||||
L470.25 42.75
|
||||
L384.75 42.75
|
||||
z
|
||||
" style="stroke:#000000;"/>
|
||||
</g>
|
||||
<g id="patch_51">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M389.025 123.975
|
||||
L465.975 123.975
|
||||
L465.975 47.025
|
||||
L389.025 47.025
|
||||
z
|
||||
" style="fill:#ffffff;stroke:#ffffff;"/>
|
||||
</g>
|
||||
<g id="line2d_1">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M85.5 513
|
||||
L85.5 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_2">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M171 513
|
||||
L171 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_3">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M256.5 513
|
||||
L256.5 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_4">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M342 513
|
||||
L342 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_5">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M427.5 513
|
||||
L427.5 0" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_6">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 427.5
|
||||
L513 427.5" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_7">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 342
|
||||
L513 342" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_8">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 256.5
|
||||
L513 256.5" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_9">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 171
|
||||
L513 171" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="line2d_10">
|
||||
<path clip-path="url(#p5382b9a736)" d="
|
||||
M0 85.5
|
||||
L513 85.5" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:3;"/>
|
||||
</g>
|
||||
<g id="text_1">
|
||||
<!-- 1 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M12.4062 8.29688
|
||||
L28.5156 8.29688
|
||||
L28.5156 63.9219
|
||||
L10.9844 60.4062
|
||||
L10.9844 69.3906
|
||||
L28.4219 72.9062
|
||||
L38.2812 72.9062
|
||||
L38.2812 8.29688
|
||||
L54.3906 8.29688
|
||||
L54.3906 0
|
||||
L12.4062 0
|
||||
z
|
||||
" id="DejaVuSans-31"/>
|
||||
</defs>
|
||||
<g transform="translate(94.05 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_2">
|
||||
<!-- 2 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M19.1875 8.29688
|
||||
L53.6094 8.29688
|
||||
L53.6094 0
|
||||
L7.32812 0
|
||||
L7.32812 8.29688
|
||||
Q12.9375 14.1094 22.625 23.8906
|
||||
Q32.3281 33.6875 34.8125 36.5312
|
||||
Q39.5469 41.8438 41.4219 45.5312
|
||||
Q43.3125 49.2188 43.3125 52.7812
|
||||
Q43.3125 58.5938 39.2344 62.25
|
||||
Q35.1562 65.9219 28.6094 65.9219
|
||||
Q23.9688 65.9219 18.8125 64.3125
|
||||
Q13.6719 62.7031 7.8125 59.4219
|
||||
L7.8125 69.3906
|
||||
Q13.7656 71.7812 18.9375 73
|
||||
Q24.125 74.2188 28.4219 74.2188
|
||||
Q39.75 74.2188 46.4844 68.5469
|
||||
Q53.2188 62.8906 53.2188 53.4219
|
||||
Q53.2188 48.9219 51.5312 44.8906
|
||||
Q49.8594 40.875 45.4062 35.4062
|
||||
Q44.1875 33.9844 37.6406 27.2188
|
||||
Q31.1094 20.4531 19.1875 8.29688" id="DejaVuSans-32"/>
|
||||
</defs>
|
||||
<g transform="translate(179.55 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_3">
|
||||
<!-- 3 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M40.5781 39.3125
|
||||
Q47.6562 37.7969 51.625 33
|
||||
Q55.6094 28.2188 55.6094 21.1875
|
||||
Q55.6094 10.4062 48.1875 4.48438
|
||||
Q40.7656 -1.42188 27.0938 -1.42188
|
||||
Q22.5156 -1.42188 17.6562 -0.515625
|
||||
Q12.7969 0.390625 7.625 2.20312
|
||||
L7.625 11.7188
|
||||
Q11.7188 9.32812 16.5938 8.10938
|
||||
Q21.4844 6.89062 26.8125 6.89062
|
||||
Q36.0781 6.89062 40.9375 10.5469
|
||||
Q45.7969 14.2031 45.7969 21.1875
|
||||
Q45.7969 27.6406 41.2812 31.2656
|
||||
Q36.7656 34.9062 28.7188 34.9062
|
||||
L20.2188 34.9062
|
||||
L20.2188 43.0156
|
||||
L29.1094 43.0156
|
||||
Q36.375 43.0156 40.2344 45.9219
|
||||
Q44.0938 48.8281 44.0938 54.2969
|
||||
Q44.0938 59.9062 40.1094 62.9062
|
||||
Q36.1406 65.9219 28.7188 65.9219
|
||||
Q24.6562 65.9219 20.0156 65.0312
|
||||
Q15.375 64.1562 9.8125 62.3125
|
||||
L9.8125 71.0938
|
||||
Q15.4375 72.6562 20.3438 73.4375
|
||||
Q25.25 74.2188 29.5938 74.2188
|
||||
Q40.8281 74.2188 47.3594 69.1094
|
||||
Q53.9062 64.0156 53.9062 55.3281
|
||||
Q53.9062 49.2656 50.4375 45.0938
|
||||
Q46.9688 40.9219 40.5781 39.3125" id="DejaVuSans-33"/>
|
||||
</defs>
|
||||
<g transform="translate(265.05 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_4">
|
||||
<!-- 4 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M37.7969 64.3125
|
||||
L12.8906 25.3906
|
||||
L37.7969 25.3906
|
||||
z
|
||||
|
||||
M35.2031 72.9062
|
||||
L47.6094 72.9062
|
||||
L47.6094 25.3906
|
||||
L58.0156 25.3906
|
||||
L58.0156 17.1875
|
||||
L47.6094 17.1875
|
||||
L47.6094 0
|
||||
L37.7969 0
|
||||
L37.7969 17.1875
|
||||
L4.89062 17.1875
|
||||
L4.89062 26.7031
|
||||
z
|
||||
" id="DejaVuSans-34"/>
|
||||
</defs>
|
||||
<g transform="translate(350.55 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-34"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_5">
|
||||
<!-- 5 -->
|
||||
<defs>
|
||||
<path d="
|
||||
M10.7969 72.9062
|
||||
L49.5156 72.9062
|
||||
L49.5156 64.5938
|
||||
L19.8281 64.5938
|
||||
L19.8281 46.7344
|
||||
Q21.9688 47.4688 24.1094 47.8281
|
||||
Q26.2656 48.1875 28.4219 48.1875
|
||||
Q40.625 48.1875 47.75 41.5
|
||||
Q54.8906 34.8125 54.8906 23.3906
|
||||
Q54.8906 11.625 47.5625 5.09375
|
||||
Q40.2344 -1.42188 26.9062 -1.42188
|
||||
Q22.3125 -1.42188 17.5469 -0.640625
|
||||
Q12.7969 0.140625 7.71875 1.70312
|
||||
L7.71875 11.625
|
||||
Q12.1094 9.23438 16.7969 8.0625
|
||||
Q21.4844 6.89062 26.7031 6.89062
|
||||
Q35.1562 6.89062 40.0781 11.3281
|
||||
Q45.0156 15.7656 45.0156 23.3906
|
||||
Q45.0156 31 40.0781 35.4375
|
||||
Q35.1562 39.8906 26.7031 39.8906
|
||||
Q22.75 39.8906 18.8125 39.0156
|
||||
Q14.8906 38.1406 10.7969 36.2812
|
||||
z
|
||||
" id="DejaVuSans-35"/>
|
||||
</defs>
|
||||
<g transform="translate(436.05 504.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-35"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_6">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(8.55 418.95)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_7">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(8.55 333.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_8">
|
||||
<!-- 3 -->
|
||||
<g transform="translate(8.55 247.95)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_9">
|
||||
<!-- 4 -->
|
||||
<g transform="translate(8.55 162.45)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-34"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_10">
|
||||
<!-- 5 -->
|
||||
<g transform="translate(8.55 76.95)scale(0.2 -0.2)">
|
||||
<use xlink:href="#DejaVuSans-35"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p5382b9a736">
|
||||
<rect height="513.0" width="513.0" x="0.0" y="0.0"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -17,13 +17,19 @@ import sys, os
|
|||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('../sphinxext'))
|
||||
sys.path.insert(0, os.path.abspath('../..'))
|
||||
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = ['sphinx.ext.pngmath', 'sphinxcontrib.tikz']
|
||||
extensions = ['sphinx.ext.autodoc',
|
||||
'sphinx.ext.napoleon',
|
||||
'sphinx.ext.pngmath',
|
||||
'sphinxcontrib.tikz',
|
||||
'sphinx_numfig',
|
||||
'notebook_sphinxext']
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
|
@ -39,16 +45,16 @@ master_doc = 'index'
|
|||
|
||||
# General information about the project.
|
||||
project = u'OpenMC'
|
||||
copyright = u'2011-2014, Massachusetts Institute of Technology'
|
||||
copyright = u'2011-2015, 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.6"
|
||||
version = "0.7"
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = "0.6.2"
|
||||
release = "0.7.0"
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
@ -189,12 +195,19 @@ latex_documents = [
|
|||
]
|
||||
|
||||
latex_elements = {
|
||||
'preamble': '''
|
||||
'preamble': r"""
|
||||
\usepackage{enumitem}
|
||||
\usepackage{amsfonts}
|
||||
\usepackage{amsmath}
|
||||
\setlistdepth{9}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{shapes,snakes,shadows,arrows,calc,decorations.markings,patterns,fit,matrix,spy}
|
||||
'''
|
||||
\usepackage{fixltx2e}
|
||||
\hypersetup{bookmarksdepth=3}
|
||||
\setcounter{tocdepth}{2}
|
||||
\numberwithin{equation}{section}
|
||||
""",
|
||||
'printindex': r""
|
||||
}
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ Active development of the OpenMC Monte Carlo code is currently led by:
|
|||
* `Nick Horelik <https://github.com/nhorelik>`_
|
||||
* `Adam Nelson <https://github.com/nelsonag>`_
|
||||
* `Jon Walsh <https://github.com/walshjon>`_
|
||||
* `Sterling Harper <https://github.com/walshjon>`_
|
||||
* `Sterling Harper <https://github.com/smharper>`_
|
||||
* `Will Boyd <https://github.com/wbinventor>`_
|
||||
* `Benoit Forget <http://web.mit.edu/nse/people/faculty/forget.html>`_
|
||||
* `Kord Smith <http://web.mit.edu/nse/people/faculty/smith.html>`_
|
||||
* `Andrew Siegel <http://www.mcs.anl.gov/about/people_detail.php?id=404>`_
|
||||
|
|
|
|||
62
docs/source/devguide/docbuild.rst
Normal file
62
docs/source/devguide/docbuild.rst
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
.. _devguide_docbuild:
|
||||
|
||||
=============================
|
||||
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:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
sudo pip install sphinx
|
||||
|
||||
Additionally, you will also need two Sphinx extensions for TikZ support and
|
||||
numbering figures. The sphinxcontrib-tikz_ package should be installed directly
|
||||
from the git repository as such:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
sudo pip install https://bitbucket.org/philexander/tikz/get/HEAD.tar.gz
|
||||
|
||||
The Numfig_ package can be installed directly with pip:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
sudo pip install sphinx-numfig
|
||||
|
||||
-----------------------------------
|
||||
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:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
make html
|
||||
|
||||
-------------------------------
|
||||
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:
|
||||
|
||||
.. 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
|
||||
|
|
@ -18,3 +18,4 @@ as debugging.
|
|||
xml-parsing
|
||||
statepoint
|
||||
voxel
|
||||
docbuild
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -8,7 +8,10 @@ In order to keep the OpenMC code base consistent in style, this guide specifies
|
|||
a number of rules which should be adhered to when modified existing code or
|
||||
adding new code in OpenMC.
|
||||
|
||||
-------------
|
||||
-------
|
||||
Fortran
|
||||
-------
|
||||
|
||||
General Rules
|
||||
-------------
|
||||
|
||||
|
|
@ -35,7 +38,6 @@ Don't use ``print *`` or ``write(*,*)``. If writing to a file, use a specific
|
|||
unit. Writing to standard output or standard error should be handled by the
|
||||
``write_message`` subroutine or functionality in the error module.
|
||||
|
||||
----------
|
||||
Procedures
|
||||
----------
|
||||
|
||||
|
|
@ -47,7 +49,6 @@ intent(in), intent(out), or intent(inout).
|
|||
|
||||
Include a comment describing what each argument to a procedure is.
|
||||
|
||||
---------
|
||||
Variables
|
||||
---------
|
||||
|
||||
|
|
@ -91,7 +92,7 @@ allocation instead. Use allocatable variables instead of pointer variables when
|
|||
possible.
|
||||
|
||||
Shared/Module Variables
|
||||
-----------------------
|
||||
+++++++++++++++++++++++
|
||||
|
||||
Always put shared variables in modules. Access module variables through a
|
||||
``use`` statement. Always use the ``only`` specifier on the ``use`` statement
|
||||
|
|
@ -99,14 +100,12 @@ except for variables from the global, constants, and various header modules.
|
|||
|
||||
Never use ``equivalence`` statements, ``common`` blocks, or ``data`` statements.
|
||||
|
||||
-------------------------
|
||||
Derived Types and Classes
|
||||
-------------------------
|
||||
|
||||
Derived types and classes should have CamelCase names with words not separated
|
||||
by underscores or hyphens.
|
||||
|
||||
-----------
|
||||
Indentation
|
||||
-----------
|
||||
|
||||
|
|
@ -126,14 +125,21 @@ program, subroutine, function, if, associate, etc. Emacs users should set the
|
|||
variables f90-if-indent, f90-do-indent, f90-continuation-indent,
|
||||
f90-type-indent, f90-associate-indent, and f90-program indent to 2.
|
||||
|
||||
Continuation lines should be indented by an extra 5 spaces. This is the default
|
||||
value of f90-continuation-indent in Emacs.
|
||||
Continuation lines should be indented by at least 5 spaces. They may be indented
|
||||
more in order to make the content match the context. For example, either of
|
||||
these are valid continuation indentations:
|
||||
|
||||
.. code-block:: fortran
|
||||
|
||||
local_xyz(1) = xyz(1) - (this % lower_left(1) + &
|
||||
(i_xyz(1) - HALF)*this % pitch(1))
|
||||
call which_data(scatt_type, get_scatt, get_nuscatt, get_chi_t, get_chi_p, &
|
||||
get_chi_d, scatt_order)
|
||||
|
||||
-------------------------
|
||||
Whitespace in Expressions
|
||||
-------------------------
|
||||
|
||||
Use a single space between arguments to procedures.
|
||||
Use a single space between arguments to procedures.
|
||||
|
||||
Avoid extraneous whitespace in the following situations:
|
||||
|
||||
|
|
@ -146,3 +152,25 @@ Avoid extraneous whitespace in the following situations:
|
|||
|
||||
Yes: if (variable == 2) then
|
||||
No: if ( variable==2 ) then
|
||||
|
||||
Do not leave trailing whitespace at the end of a line.
|
||||
|
||||
------
|
||||
Python
|
||||
------
|
||||
|
||||
Style for Python code should follow PEP8_.
|
||||
|
||||
Docstrings for functions and methods should follow numpydoc_ style.
|
||||
|
||||
Python code should work with both Python 2.7+ and Python 3.0+.
|
||||
|
||||
Use of third-party Python packages should be limited to numpy_, scipy_, and
|
||||
h5py_. Use of other third-party packages must be implemented as optional
|
||||
dependencies rather than required dependencies.
|
||||
|
||||
.. _PEP8: https://www.python.org/dev/peps/pep-0008/
|
||||
.. _numpydoc: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
|
||||
.. _numpy: http://www.numpy.org/
|
||||
.. _scipy: http://www.scipy.org/
|
||||
.. _h5py: http://www.h5py.org/
|
||||
|
|
|
|||
|
|
@ -4,9 +4,7 @@
|
|||
Voxel Plot Binary File Specifications
|
||||
=====================================
|
||||
|
||||
----------
|
||||
Revision 1
|
||||
----------
|
||||
The current revision of the voxel plot binary file is 1.
|
||||
|
||||
**integer(4) n_voxels_x**
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ Development Workflow
|
|||
Anyone wishing to make contributions to OpenMC should be fully acquianted and
|
||||
comfortable working with git_ and GitHub_. We assume here that you have git
|
||||
installed on your system, have a GitHub account, and have setup SSH keys to be
|
||||
able to create/push to repositories on GitHub.
|
||||
able to create/push to repositories on GitHub.
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
|
@ -71,7 +71,7 @@ features and bug fixes. The general steps for contributing are as follows:
|
|||
git checkout -b newbranch develop
|
||||
|
||||
3. Make your changes on the new branch that you intend to have included in
|
||||
*develop*. If you have made other changes that should not be merged back,
|
||||
*develop*. If you have made other changes that should not be merged back,
|
||||
ensure that those changes are made on a different branch.
|
||||
|
||||
4. Issue a pull request from GitHub and select the *develop* branch of
|
||||
|
|
@ -98,7 +98,7 @@ OpenMC Test Suite
|
|||
|
||||
The purpose of this test suite is to ensure that OpenMC compiles using various
|
||||
combinations of compiler flags and options, and that all user input options can
|
||||
be used successfully without breaking the code. The test suite is comprised of
|
||||
be used successfully without breaking the code. The test suite is comprised of
|
||||
regression tests where different types of input files are configured and the
|
||||
full OpenMC code is executed. Results from simulations are compared with
|
||||
expected results. The test suite is comprised of many build configurations
|
||||
|
|
@ -114,7 +114,7 @@ download these cross sections please do the following:
|
|||
.. code-block:: sh
|
||||
|
||||
cd ../data
|
||||
python get_nndc.py
|
||||
python get_nndc_data.py
|
||||
export CROSS_SECTIONS=<path_to_data_folder>/nndc/cross_sections.xml
|
||||
|
||||
The test suite can be run on an already existing build using:
|
||||
|
|
@ -143,19 +143,15 @@ variables should be set if the default paths are incorrect:
|
|||
|
||||
* **MPI_DIR** - The path to the MPI directory.
|
||||
|
||||
* Default - */opt/mpich/3.1-gnu*
|
||||
* Default - */opt/mpich/3.1.3-gnu*
|
||||
|
||||
* **HDF5_DIR** - The path to the HDF5 directory.
|
||||
|
||||
* Default - */opt/hdf5/1.8.12-gnu*
|
||||
* Default - */opt/hdf5/1.8.14-gnu*
|
||||
|
||||
* **PHDF5_DIR** - The path to the parallel HDF5 directory.
|
||||
|
||||
* Default - */opt/phdf5/1.8.12-gnu*
|
||||
|
||||
* **PETSC_DIR** - The path to the PETSc directory.
|
||||
|
||||
* Default - */opt/petsc/3.4.4-gnu*
|
||||
* Default - */opt/phdf5/1.8.14-gnu*
|
||||
|
||||
To run the full test suite, the following command can be executed in the
|
||||
tests directory:
|
||||
|
|
@ -192,7 +188,7 @@ Adding tests to test suite
|
|||
|
||||
To add a new test to the test suite, create a sub-directory in the tests
|
||||
directory that conforms to the regular expression *test_*. To configure
|
||||
a test you need to add the following files to your new test directory,
|
||||
a test you need to add the following files to your new test directory,
|
||||
*test_name* for example:
|
||||
|
||||
* OpenMC input XML files
|
||||
|
|
|
|||
|
|
@ -18,18 +18,21 @@ free to send a message to the User's Group `mailing list`_.
|
|||
.. _Massachusetts Institute of Technology: http://web.mit.edu
|
||||
.. _mailing list: https://groups.google.com/forum/?fromgroups=#!forum/openmc-users
|
||||
|
||||
--------
|
||||
Contents
|
||||
--------
|
||||
.. only:: html
|
||||
|
||||
--------
|
||||
Contents
|
||||
--------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
quickinstall
|
||||
releasenotes/index
|
||||
releasenotes
|
||||
methods/index
|
||||
usersguide/index
|
||||
devguide/index
|
||||
pythonapi/index
|
||||
publications
|
||||
license
|
||||
developers
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ directions. An example of this is shown in the following expression:
|
|||
:label: not1
|
||||
|
||||
\sum\limits_{u\in(x,y,z)}\left\langle\overline{J}^{u,g}_{l+1/2,m,n}
|
||||
\Delta_m^v\Delta_n^w\right\rangle
|
||||
\Delta_m^v\Delta_n^w\right\rangle
|
||||
|
||||
Here, :math:`u` takes on each direction one at a time. The parameter :math:`J`
|
||||
is surface area-averaged over the transverse indices :math:`m` and :math:`n`
|
||||
|
|
@ -142,7 +142,7 @@ defined from MC tallies as follows:
|
|||
{\left\langle\overline{\overline\phi}_{l,m,n}^h
|
||||
\Delta_l^u\Delta_m^v\Delta_n^w\right\rangle}
|
||||
|
||||
and
|
||||
and
|
||||
|
||||
.. math::
|
||||
:label: xs3
|
||||
|
|
@ -303,13 +303,13 @@ interior cell,
|
|||
\sum_{u\in
|
||||
x,y,x}\frac{1}{\Delta_l^u}\left[\left(-\tilde{D}_{l-1/2,m,n}^{u,g} -
|
||||
\hat{D}_{l-1/2,m,n}^{u,g}\right)\overline{\overline{\phi}}_{l-1,m,n}^g\right.
|
||||
+ \left(\tilde{D}_{l-1/2,m,n}^{u,g} +
|
||||
\\ + \left(\tilde{D}_{l-1/2,m,n}^{u,g} +
|
||||
\tilde{D}_{l+1/2,m,n}^{u,g} - \hat{D}_{l-1/2,m,n}^{u,g} +
|
||||
\hat{D}_{l+1/2,m,n}^{u,g}\right)\overline{\overline{\phi}}_{l,m,n}^g
|
||||
\\ +
|
||||
\\ +
|
||||
\left. \left(-\tilde{D}_{l+1/2,m,n}^{u,g} +
|
||||
\hat{D}_{l+1/2,m,n}^{u,g}\right)\overline{\overline{\phi}}_{l+1,m,n}^g
|
||||
\right] +
|
||||
\right] \\ +
|
||||
\overline{\overline\Sigma}_{t_{l,m,n}}^g\overline{\overline{\phi}}_{l,m,n}^g
|
||||
- \sum\limits_{h=1}^G\overline{\overline{\nu_s\Sigma}}^{h\rightarrow
|
||||
g}_{s_{l,m,n}}\overline{\overline{\phi}}_{l,m,n}^h =
|
||||
|
|
@ -318,7 +318,7 @@ interior cell,
|
|||
|
||||
It should be noted that before substitution, eq. :eq:`eq_neut_bal` was divided
|
||||
by the volume of the cell, :math:`\Delta_l^u\Delta_m^v\Delta_n^w`. Equation
|
||||
:eq:`eq_cmfd_sys` can be represented in operator form as
|
||||
:eq:`eq_cmfd_sys` can be represented in operator form as
|
||||
|
||||
.. math::
|
||||
:label: eq_CMFDopers
|
||||
|
|
@ -349,7 +349,7 @@ and energy group. This is represented as
|
|||
p_{l,m,n}^g =
|
||||
\frac{\sum_{h=1}^{G}\overline{\overline{\nu_f\Sigma}}^{h\rightarrow
|
||||
g}_{f_{l,m,n}}\overline{\overline{\phi}}_{l,m,n}^h\Delta_l^u\Delta_m^v
|
||||
\Delta_n^w}{\sum_n\sum_m\sum_l\sum_{h=1}^{G}\overline{
|
||||
\Delta_n^w}{\sum_n\sum_m\sum_l\sum_{h=1}^{G}\overline{
|
||||
\overline{\nu_f\Sigma}}^{h\rightarrow
|
||||
g}_{f_{l,m,n}}\overline{\overline{\phi}}_{l,m,n}^h\Delta_l^u\Delta_m^v
|
||||
\Delta_n^w}.
|
||||
|
|
@ -439,7 +439,7 @@ by the user. Once all diffusion parameters are calculated, CMFD matrices are
|
|||
formed where energy groups are the inner most iteration index. In OpenMC,
|
||||
compressed row storage sparse matrices are used due to the sparsity of CMFD
|
||||
operators. An example of this sparsity is shown for the 3-D BEAVRS model in
|
||||
figures :ref:`fig_loss` and :ref:`fig_prod` [BEAVRS]_. These matrices represent
|
||||
figures :num:`fig-loss` and :num:`fig-prod` [BEAVRS]_. These matrices represent
|
||||
an assembly radial mesh, 24 cell mesh in the axial direction and two energy
|
||||
groups. The loss matrix is 99.92% sparse and the production matrix is 99.99%
|
||||
sparse. Although the loss matrix looks like it is tridiagonal, it is really a
|
||||
|
|
@ -473,19 +473,19 @@ no fission neutrons appear with energies in the thermal group.
|
|||
| \ :math:`\left\langle\overline{J}^{u,g}_{l\pm 1/2,m,n}\Delta_m^v\Delta_n^w\right\rangle` | current | mesh, energy |
|
||||
+--------------------------------------------------------------------------------------------+----------------+---------------------------+
|
||||
|
||||
.. _fig_loss:
|
||||
.. _fig-loss:
|
||||
|
||||
.. figure:: ../_images/loss.png
|
||||
:scale: 50
|
||||
|
||||
Sparsity of Neutron Loss Operator
|
||||
Sparsity of Neutron Loss Operator
|
||||
|
||||
.. _fig_prod:
|
||||
.. _fig-prod:
|
||||
|
||||
.. figure:: ../_images/prod.png
|
||||
:scale: 50
|
||||
|
||||
Sparsity of Neutron Production Operator
|
||||
Sparsity of Neutron Production Operator
|
||||
|
||||
To solve the eigenvalue problem with these matrices, different source iteration
|
||||
and linear solvers can be used. The most common source iteration solver used is
|
||||
|
|
@ -511,7 +511,7 @@ implemented to obtain eigenvalue and multigroup fluxes as described in [Gill]_
|
|||
and [Knoll]_. This method is not the primary one used, but has gotten recent
|
||||
attention due to its coupling advantages to other physics such as thermal
|
||||
hydraulics. Once multigroup fluxes are obtained, a normalized fission source is
|
||||
calculated in the code using eq. :eq:`eq_cmfd_psrc` directly.
|
||||
calculated in the code using eq. :eq:`eq_cmfd_psrc` directly.
|
||||
|
||||
The next step in the process is to compute weight adjustment factors. These are
|
||||
calculated by taking the ratio of the expected number of neutrons from the CMFD
|
||||
|
|
@ -523,11 +523,11 @@ the current MC source, OpenMC sums the statistical
|
|||
weights of neutrons from the source bank on a given spatial and energy mesh.
|
||||
Once weight adjustment factors were calculated, each neutron's statistical
|
||||
weight in the source bank was modified according to its location and energy.
|
||||
Examples of CMFD simulations using OpenMC can be found in [Herman_Thesis]_.
|
||||
Examples of CMFD simulations using OpenMC can be found in [HermanThesis]_.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [BEAVRS] Nick Horelik, Bryan Herman. *Benchmark for Evaluation And Verification of Reactor
|
||||
Simulations*. Massachusetts Institute of Technology, http://crpg.mit.edu/pub/beavrs
|
||||
|
|
@ -536,23 +536,23 @@ References
|
|||
.. [Gill] Daniel F. Gill. *Newton-Krylov methods for the solution of the k-eigenvalue problem in
|
||||
multigroup neutronics calculations*. Ph.D. thesis, Pennsylvania State University, 2010.
|
||||
|
||||
.. [Hebert] Alain Hebert. *Applied reactor physics*. Presses Internationales Polytechnique,
|
||||
.. [Hebert] Alain Hebert. *Applied reactor physics*. Presses Internationales Polytechnique,
|
||||
Montreal, 2009.
|
||||
|
||||
.. [Herman] Bryan R. Herman, Benoit Forget, Kord Smith, and Brian N. Aviles. Improved
|
||||
diffusion coefficients generated from Monte Carlo codes. In *Proceedings of M&C
|
||||
2013*, Sun Valley, ID, USA, May 5 - 9, 2013.
|
||||
|
||||
.. [Herman_Thesis] Bryan R. Herman. *Monte Carlo and Thermal Hydraulic Coupling using
|
||||
Low-Order Nonlinear Diffusion Acceleration*. Sc.D. thesis,
|
||||
Massachusetts Institute of Technology, 2014.
|
||||
.. [HermanThesis] Bryan R. Herman. *Monte Carlo and Thermal Hydraulic Coupling using
|
||||
Low-Order Nonlinear Diffusion Acceleration*. Sc.D. thesis,
|
||||
Massachusetts Institute of Technology, 2014.
|
||||
|
||||
.. [Knoll] D.A. Knoll, H. Park, and C. Newman. *Acceleration of k-eigenvalue/criticality
|
||||
calculations using the Jacobian-free Newton-Krylov method*. Nuclear Science and
|
||||
Engineering, 167:133–140, 2011.
|
||||
|
||||
.. [Park] H. Park, D.A. Knoll, and C.K. Newman. *Nonlinear acceleration of transport
|
||||
criticality problems*. Nuclear Science and Engineering, 172:52–65, 2012.
|
||||
criticality problems*. Nuclear Science and Engineering, 172:52–65, 2012.
|
||||
|
||||
.. [Rhodes] Joel Rhodes and Malte Edenius. *CASMO-4 --- A Fuel Assembly Burnup Program.
|
||||
User’s Manual*. Studsvik of America, ssp-09/443-u rev 0, proprietary edition, 2001.
|
||||
|
|
|
|||
|
|
@ -63,9 +63,9 @@ Other Methods
|
|||
A good survey of other energy grid techniques, including unionized energy grids,
|
||||
can be found in a paper by Leppanen_.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [Brown] Forrest B. Brown, "New Hash-based Energy Lookup Algorithm for Monte
|
||||
Carlo codes," LA-UR-14-24530, Los Alamos National Laboratory (2014).
|
||||
|
|
|
|||
|
|
@ -42,9 +42,11 @@ One can confirm that any point inside this sphere will correspond to
|
|||
In OpenMC, every surface defined by the user is assigned an integer to uniquely
|
||||
identify it. We can then refer to either of the two half-spaces created by a
|
||||
surface by a combination of the unique ID of the surface and a positive/negative
|
||||
sign. The following illustration shows an example of an ellipse with unique ID 1
|
||||
sign. Figure :num:`fig-halfspace` shows an example of an ellipse with unique ID 1
|
||||
dividing space into two half-spaces.
|
||||
|
||||
.. _fig-halfspace:
|
||||
|
||||
.. figure:: ../_images/halfspace.*
|
||||
:align: center
|
||||
:figclass: align-center
|
||||
|
|
@ -57,9 +59,11 @@ to be defined by intersections, unions, and differences or half-spaces, OpenMC
|
|||
is currently limited to cells defined only as intersections of
|
||||
half-spaces. Thus, the specification of the cell must include a list of
|
||||
half-space references whose intersection defines the region. The region is then
|
||||
assigned a material defined elsewhere. The following illustration shows an
|
||||
assigned a material defined elsewhere. Figure :num:`fig-union` shows an
|
||||
example of a cell defined as the intersection of an ellipse and two planes.
|
||||
|
||||
|
||||
.. _fig-union:
|
||||
|
||||
.. figure:: ../_images/union.*
|
||||
:align: center
|
||||
:figclass: align-center
|
||||
|
|
@ -385,6 +389,106 @@ is found that contains the specified point.
|
|||
|
||||
.. _cell-contains:
|
||||
|
||||
----------------------
|
||||
Finding a Lattice Tile
|
||||
----------------------
|
||||
|
||||
If a particle is inside a lattice, its position inside the lattice must be
|
||||
determined before assigning it to a cell. Throughout this section, the
|
||||
volumetric units of the lattice will be referred to as "tiles". Tiles are
|
||||
identified by thier indices, and the process of discovering which tile contains
|
||||
the particle is referred to as "indexing".
|
||||
|
||||
Rectilinear Lattice Indexing
|
||||
----------------------------
|
||||
|
||||
Indices are assigned to tiles in a rectilinear lattice based on the tile's
|
||||
position along the :math:`x`, :math:`y`, and :math:`z` axes. Figure
|
||||
:num:`fig-rect-lat` maps the indices for a 2D lattice. The indices, (1, 1),
|
||||
map to the lower-left tile. (5, 1) and (5, 5) map to the lower-right and
|
||||
upper-right tiles, respectively.
|
||||
|
||||
.. _fig-rect-lat:
|
||||
|
||||
.. figure:: ../_images/rect_lat.*
|
||||
:align: center
|
||||
:figclass: align-center
|
||||
:width: 400px
|
||||
|
||||
Rectilinear lattice tile indices.
|
||||
|
||||
In general, a lattice tile is specified by the three indices,
|
||||
:math:`(i_x, i_y, i_z)`. If a particle's current coordinates are
|
||||
:math:`(x, y, z)` then the indices can be determined from these formulas:
|
||||
|
||||
.. math::
|
||||
:label: rect_indexing
|
||||
|
||||
i_x = \left \lceil \frac{x - x_0}{p_0} \right \rceil
|
||||
|
||||
i_y = \left \lceil \frac{y - y_0}{p_1} \right \rceil
|
||||
|
||||
i_z = \left \lceil \frac{z - z_0}{p_2} \right \rceil
|
||||
|
||||
where :math:`(x_0, y_0, z_0)` are the coordinates to the lower-left-bottom
|
||||
corner of the lattice, and :math:`p_0, p_1, p_2` are the pitches along the
|
||||
:math:`x`, :math:`y`, and :math:`z` axes, respectively.
|
||||
|
||||
Hexagonal Lattice Indexing
|
||||
--------------------------
|
||||
|
||||
A skewed coordinate system is used for indexing hexagonal lattice tiles.
|
||||
Rather than a :math:`y`-axis, another axis is used that is rotated 30 degrees
|
||||
counter-clockwise from the :math:`y`-axis. This axis is referred to as the
|
||||
:math:`\alpha`-axis. Figure :num:`fig-hex-lat` shows how 2D hexagonal tiles
|
||||
are mapped with the :math:`(x, \alpha)` basis. In this system, (0, 0) maps to
|
||||
the center tile, (0, 2) to the top tile, and (2, -1) to the middle tile on the
|
||||
right side.
|
||||
|
||||
.. _fig-hex-lat:
|
||||
|
||||
.. figure:: ../_images/hex_lat.*
|
||||
:align: center
|
||||
:figclass: align-center
|
||||
:width: 400px
|
||||
|
||||
Hexagonal lattice tile indices.
|
||||
|
||||
Unfortunately, the indices cannot be determined with one simple formula as
|
||||
before. Indexing requires a two-step process, a coarse step which determines a
|
||||
set of four tiles that contains the particle and a fine step that determines
|
||||
which of those four tiles actually contains the particle.
|
||||
|
||||
In the first step, indices are found using these formulas:
|
||||
|
||||
.. math::
|
||||
:label: hex_indexing
|
||||
|
||||
\alpha = -\frac{x}{\sqrt{3}} + y
|
||||
|
||||
i_x^* = \left \lfloor \frac{x}{p_0 \sqrt{3} / 2} \right \rfloor
|
||||
|
||||
i_\alpha^* = \left \lfloor \frac{\alpha}{p_0} \right \rfloor
|
||||
|
||||
where :math:`p_0` is the lattice pitch (in the :math:`x`-:math:`y` plane). The
|
||||
true index of the particle could be :math:`(i_x^*, i_\alpha^*)`,
|
||||
:math:`(i_x^* + 1, i_\alpha^*)`, :math:`(i_x^*, i_\alpha^* + 1)`, or
|
||||
:math:`(i_x^* + 1, i_\alpha^* + 1)`.
|
||||
|
||||
The second step selects the correct tile from that neighborhood of 4. OpenMC
|
||||
does this by calculating the distance between the particle and the centers of
|
||||
each of the 4 tiles, and then picking the closest tile. This works because
|
||||
regular hexagonal tiles form a Voronoi tessellation which means that all of the
|
||||
points within a tile are closest to the center of that same tile.
|
||||
|
||||
Indexing along the :math:`z`-axis uses the same method from rectilinear
|
||||
lattices, i.e.
|
||||
|
||||
.. math::
|
||||
:label: hex_indexing_z
|
||||
|
||||
i_z = \left \lceil \frac{z - z_0}{p_2} \right \rceil
|
||||
|
||||
----------------------------------------
|
||||
Determining if a Coordinate is in a Cell
|
||||
----------------------------------------
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ one master process that controls the scheduling of work and the remaining
|
|||
processes wait to receive work from the master, process the work, and then send
|
||||
their results to the master at the end of the simulation (or a source iteration
|
||||
in the case of an eigenvalue calculation). This idea is illustrated in
|
||||
:ref:`Figure 1 <figure-master-slave>`.
|
||||
:ref:`figure-master-slave`.
|
||||
|
||||
.. _figure-master-slave:
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ in the case of an eigenvalue calculation). This idea is illustrated in
|
|||
:align: center
|
||||
:figclass: align-center
|
||||
|
||||
**Figure 1**: Communication pattern in master-slave algorithm.
|
||||
Communication pattern in master-slave algorithm.
|
||||
|
||||
Eigenvalue calculations are slightly more difficult to parallelize than fixed
|
||||
source calculations since it is necessary to converge on the fission source
|
||||
|
|
@ -117,8 +117,7 @@ Nearest Neighbors Algorithm
|
|||
To reduce the amount of communication required in a fission bank synchronization
|
||||
algorithm, it is desirable to move away from the typical master-slave algorithm
|
||||
to an algorithm whereby the compute nodes communicate with one another only as
|
||||
needed. This concept is illustrated in :ref:`Figure 2
|
||||
<figure-nearest-neighbor>`.
|
||||
needed. This concept is illustrated in :ref:`figure-nearest-neighbor`.
|
||||
|
||||
.. _figure-nearest-neighbor:
|
||||
|
||||
|
|
@ -126,7 +125,7 @@ needed. This concept is illustrated in :ref:`Figure 2
|
|||
:align: center
|
||||
:figclass: align-center
|
||||
|
||||
**Figure 2**: Communication pattern in nearest neighbor algorithm.
|
||||
Communication pattern in nearest neighbor algorithm.
|
||||
|
||||
Since the source sites for each cycle are sampled from the fission sites banked
|
||||
from the previous cycle, it is a common occurrence for a fission site to be
|
||||
|
|
@ -196,8 +195,8 @@ and :math:`p_3` has 245. Note that the total number of sampled sites is 1000 as
|
|||
needed. For each node to have the same number of source sites, :math:`p_0` needs
|
||||
to send its right-most 10 sites to :math:`p_1`, and :math:`p_2` needs to send
|
||||
its left-most 25 sites to :math:`p_1` and its right-most 5 sites to
|
||||
:math:`p_3`. A schematic of this example is shown in :ref:`Figure 3
|
||||
<figure-neighbor-example>`. The data local to each node is given a different
|
||||
:math:`p_3`. A schematic of this example is shown in
|
||||
:ref:`figure-neighbor-example`. The data local to each node is given a different
|
||||
hatching, and the cross-hatched regions represent source sites that are
|
||||
communicated between adjacent nodes.
|
||||
|
||||
|
|
@ -207,7 +206,7 @@ communicated between adjacent nodes.
|
|||
:align: center
|
||||
:figclass: align-center
|
||||
|
||||
**Figure 3**: Example of nearest neighbor algorithm.
|
||||
Example of nearest neighbor algorithm.
|
||||
|
||||
.. _master-slave-cost:
|
||||
|
||||
|
|
@ -600,9 +599,9 @@ is actually independent of the number of nodes:
|
|||
E \left [ \Lambda_{j_{\text{max}}} \right ] = \sqrt{ \frac{N\sigma^2}{2\pi
|
||||
k^2}}.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [Troubetzkoy] E. Troubetzkoy, H. Steinberg, and M. Kalos, "Monte Carlo
|
||||
Radiation Penetration Calculations on a Parallel Computer,"
|
||||
|
|
|
|||
|
|
@ -1552,9 +1552,9 @@ default, the cutoff weight in OpenMC is :math:`w_c = 0.25` and the survival
|
|||
weight is :math:`w_s = 1.0`. These parameters vary from one Monte Carlo code to
|
||||
another.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [Doyas] Richard J. Doyas and Sterrett T. Perkins, "Interpolation of Tabular
|
||||
Secondary Neutron and Photon Energy Distributions," *Nucl. Sci. Eng.*,
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ Note that :eq:`lcg-skipahead` has the same general form as \eqref{eq:lcg}, so
|
|||
the idea is to determine the new multiplicative and additive constants in
|
||||
:math:`O(\log_2 N)` operations.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [LEcuyer] P. L’Ecuyer, "Tables of Linear Congruential Generators of
|
||||
Different Sizes and Good Lattice Structures," *Math. Comput.*, **68**, 249
|
||||
|
|
|
|||
|
|
@ -475,9 +475,9 @@ normal distribution, we use an `unpublished rational approximation`_. After
|
|||
using the rational approximation, one iteration of Newton's method is applied to
|
||||
improve the estimate of the percentile.
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
.. only:: html
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. [George] E. E. Olusegun George and Meenakshi Sivaram, "A modification of the
|
||||
Fisher-Cornish approximation for the student t percentiles," Communication
|
||||
|
|
|
|||
|
|
@ -4,6 +4,104 @@
|
|||
Publications
|
||||
============
|
||||
|
||||
---------
|
||||
Overviews
|
||||
---------
|
||||
|
||||
- Paul K. Romano, Nicholas E. Horelik, Bryan R. Herman, Adam G. Nelson, Benoit
|
||||
Forget, and Kord Smith, "OpenMC: A State-of-the-Art Monte Carlo Code for
|
||||
Research and Development," *Ann. Nucl. Energy*, **82**, 90--97
|
||||
(2015). `<http://dx.doi.org/10.1016/j.anucene.2014.07.048>`_
|
||||
|
||||
- Paul K. Romano, Bryan R. Herman, Nicholas E. Horelik, Benoit Forget, Kord
|
||||
Smith, and Andrew R. Siegel, "Progress and Status of the OpenMC Monte Carlo
|
||||
Code," *Proc. Int. Conf. Mathematics and Computational Methods Applied to
|
||||
Nuclear Science and Engineering*, Sun Valley, Idaho, May 5--9 (2013).
|
||||
|
||||
- Paul K. Romano and Benoit Forget, "The OpenMC Monte Carlo Particle Transport
|
||||
Code," *Ann. Nucl. Energy*, **51**, 274--281
|
||||
(2013). `<http://dx.doi.org/10.1016/j.anucene.2012.06.040>`_
|
||||
|
||||
------------
|
||||
Benchmarking
|
||||
------------
|
||||
|
||||
- Daniel J. Kelly, Brian N. Aviles, Paul K. Romano, Bryan R. Herman,
|
||||
Nicholas E. Horelik, and Benoit Forget, "Analysis of select BEAVRS PWR
|
||||
benchmark cycle 1 results using MC21 and OpenMC," *Proc. PHYSOR*, Kyoto,
|
||||
Japan, Sep. 28--Oct. 3 (2014).
|
||||
|
||||
- Bryan R. Herman, Benoit Forget, Kord Smith, Paul K. Romano, Thomas M. Sutton,
|
||||
Daniel J. Kelly, III, and Brian N. Aviles, "Analysis of tally correlations in
|
||||
large light water reactors," *Proc. PHYSOR*, Kyoto, Japan, Sep. 28--Oct. 3
|
||||
(2014).
|
||||
|
||||
- Nicholas Horelik, Bryan Herman, Benoit Forget, and Kord Smith, "Benchmark for
|
||||
Evaluation and Validation of Reactor Simulations,"
|
||||
*Proc. Int. Conf. Mathematics and Computational Methods Applied to Nuclear
|
||||
Science and Engineering*, Sun Valley, Idaho, May 5--9 (2013).
|
||||
|
||||
- Jonathan A. Walsh, Benoit Forget, and Kord S. Smith, "Validation of OpenMC
|
||||
Reactor Physics Simulations with the B&W 1810 Series Benchmarks,"
|
||||
*Trans. Am. Nucl. Soc.*, **109**, 1301--1304 (2013).
|
||||
|
||||
--------------------------
|
||||
Coupling and Multi-physics
|
||||
--------------------------
|
||||
|
||||
- Matt Ellis, Benoit Forget, Kord Smith, and Derek Gaston, "Preliminary coupling
|
||||
of the Monte Carlo code OpenMC and the Multiphysics Object-Oriented Simulation
|
||||
Environment (MOOSE) for analyzing Doppler feedback in Monte Carlo
|
||||
simulations," *Proc. Joint Int. Conf. M&C+SNA+MC*, Nashville, Tennessee,
|
||||
Apr. 19--23 (2015).
|
||||
|
||||
- Bryan R. Herman, Benoit Forget, and Kord Smith, "Progress toward Monte
|
||||
Carlo-thermal hydraulic coupling using low-order nonlinear diffusion
|
||||
acceleration methods." In press, *Ann. Nucl. Energy*,
|
||||
(2014). `<http://dx.doi.org/10.1016/j.anucene/2014.10.029>`_
|
||||
|
||||
- Adam G. Nelson and William R. Martin, "Improved Convergence of Monte Carlo
|
||||
Generated Multi-Group Scattering Moments," *Proc. Int. Conf. Mathematics and
|
||||
Computational Methods Applied to Nuclear Science and Engineering*, Sun Valley,
|
||||
Idaho, May 5--9 (2013).
|
||||
|
||||
- Bryan R. Herman, Benoit Forget, and Kord Smith, "Utilizing CMFD in OpenMC to
|
||||
Estimate Dominance Ratio and Adjoint," *Trans. Am. Nucl. Soc.*, **109**,
|
||||
1389-1392 (2013).
|
||||
|
||||
--------
|
||||
Geometry
|
||||
--------
|
||||
|
||||
- Derek Lax, William Boyd, Nicholas Horelik, Benoit Forget, and Kord Smith, "A
|
||||
memory efficient algorithm for classifying unique regions in constructive
|
||||
solid geometries," *Proc. PHYSOR*, Kyoto, Japan, Sep. 28--Oct. 3 (2014).
|
||||
|
||||
-------------
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
- Timothy P. Burke, Brian C. Kiedrowski, and William R. Martin, "Flux and
|
||||
Reaction Rate Kernel Density Estimators in OpenMC," *Trans. Am. Nucl. Soc.*,
|
||||
**109**, 683-686 (2013).
|
||||
|
||||
------------
|
||||
Nuclear Data
|
||||
------------
|
||||
|
||||
- Jonathan A. Walsh, Benoit Forget, Kord S. Smith, Brian C. Kiedrowski, and
|
||||
Forrest B. Brown, "Direct, on-the-fly calculation of unresolved resonance
|
||||
region cross sections in Monte Carlo simulations," *Proc. Joint
|
||||
Int. Conf. M&C+SNA+MC*, Nashville, Tennessee, Apr. 19--23 (2015).
|
||||
|
||||
- Paul K. Romano and Timothy H. Trumbull, "Comparison of algorithms for Doppler
|
||||
broadening pointwise tabulated cross sections," *Ann. Nucl. Energy*, **75**,
|
||||
358--364 (2015). `<http://dx.doi.org/10.1016/j.anucene.2014.08.046>`_
|
||||
|
||||
- Tuomas Viitanen, Jaakko Leppanen, and Benoit Forget, "Target motion sampling
|
||||
temperature treatment technique with track-length esimators in OpenMC --
|
||||
Preliminary results," *Proc. PHYSOR*, Kyoto, Japan, Sep. 28--Oct. 3 (2014).
|
||||
|
||||
- Jonathan A. Walsh, Benoit Forget, and Kord S. Smith, "Accelerated sampling
|
||||
of the free gas resonance elastic scattering kernel," *Ann. Nucl. Energy*,
|
||||
**69**, 116--124 (2014). `<http://dx.doi.org/10.1016/j.anucene.2014.01.017>`_
|
||||
|
|
@ -12,35 +110,42 @@ Publications
|
|||
Carlo simulations using the multipole representation," *Ann. Nucl. Energy*,
|
||||
**64**, 78--85 (2014). `<http://dx.doi.org/10.1016/j.anucene.2013.09.043>`_
|
||||
|
||||
-----------
|
||||
Parallelism
|
||||
-----------
|
||||
|
||||
- David Ozog, Allen D. Malony, and Andrew R. Siegel, "A performance analysis of
|
||||
SIMD algorithms for Monte Carlo simulations of nuclear reactor cores,"
|
||||
*Proc. IEEE Int. Parallel and Distributed Processing Symposium*, Hyderabad,
|
||||
India, May 25--29 (2015).
|
||||
|
||||
- David Ozog, Allen D. Malony, and Andrew Siegel, "Full-core PWR transport
|
||||
simulations on Xeon Phi clusters," *Proc. Joint Int. Conf. M&C+SNA+MC*,
|
||||
Nashville, Tennessee, Apr. 19--23 (2015).
|
||||
|
||||
- Paul K. Romano, Andrew R. Siegel, and Ronald O. Rahaman, "Influence of the
|
||||
memory subsystem on Monte Carlo code performance," *Proc. Joint
|
||||
Int. Conf. M&C+SNA+MC*, Nashville, Tennessee, Apr. 19--23 (2015).
|
||||
|
||||
- Nicholas Horelik, Benoit Forget, Kord Smith, and Andrew Siegel, "Domain
|
||||
decomposition and terabyte tallies with the OpenMC Monte Carlo neutron
|
||||
transport code," *Proc. PHYSOR*, Kyoto Japan, Sep. 28--Oct. 3 (2014).
|
||||
|
||||
- Nicholas Horelik, Andrew Siegel, Benoit Forget, and Kord Smith, "Monte Carlo
|
||||
domain decomposition for robust nuclear reactor analysis," *Parallel Comput.*,
|
||||
**40**, 646--660 (2014). `<http://dx.doi.org/10.1016/j.parco.2014.10.001>`_
|
||||
|
||||
- Andrew Siegel, Kord Smith, Kyle Felker, Paul Romano, Benoit Forget, and Peter
|
||||
Beckman, "Improved cache performance in Monte Carlo transport calculations
|
||||
using energy banding," *Comput. Phys. Commun.*, **185** (4), 1195--1199
|
||||
(2014). `<http://dx.doi.org/10.1016/j.cpc.2013.10.008>`_
|
||||
|
||||
- Jonathan A. Walsh, Benoit Forget, and Kord S. Smith, "Validation of OpenMC
|
||||
Reactor Physics Simulations with the B&W 1810 Series Benchmarks,"
|
||||
*Trans. Am. Nucl. Soc.*, **109**, 1301--1304 (2013).
|
||||
|
||||
- Bryan R. Herman, Benoit Forget, and Kord Smith, "Utilizing CMFD in OpenMC to
|
||||
Estimate Dominance Ratio and Adjoint," *Trans. Am. Nucl. Soc.*, **109**,
|
||||
1389-1392 (2013).
|
||||
|
||||
- Timothy P. Burke, Brian C. Kiedrowski, and William R. Martin, "Flux and
|
||||
Reaction Rate Kernel Density Estimators in OpenMC," *Trans. Am. Nucl. Soc.*,
|
||||
**109**, 683-686 (2013).
|
||||
|
||||
- Paul K. Romano, Benoit Forget, Kord Smith, and Andrew Siegel, "On the use of
|
||||
tally servers in Monte Carlo simulations of light-water reactors,"
|
||||
*Proc. Joint International Conference on Supercomputing in Nuclear
|
||||
Applications and Monte Carlo*, Paris, France, Oct. 27--31
|
||||
(2013). `<http://dx.doi.org/10.1051/snamc/201404301>`_
|
||||
|
||||
- Paul K. Romano, Nicholas E. Horelik, Bryan R. Herman, Adam G. Nelson, Benoit
|
||||
Forget, and Kord Smith, "OpenMC: A State-of-the-Art Monte Carlo Code for
|
||||
Research and Development," *Proc. Joint International Conference on
|
||||
Supercomputing in Nuclear Applications and Monte Carlo*, Paris, France,
|
||||
Oct. 27--31 (2013). `<http://dx.doi.org/10.1051/snamc/201406016>`_
|
||||
|
||||
- Kyle G. Felker, Andrew R. Siegel, Kord S. Smith, Paul K. Romano, and Benoit
|
||||
Forget, "The energy band memory server algorithm for parallel Monte Carlo
|
||||
calculations," *Proc. Joint International Conference on Supercomputing in
|
||||
|
|
@ -62,25 +167,6 @@ Publications
|
|||
servers," *J. Comput. Phys.*, **252**, 20--36
|
||||
(2013). `<http://dx.doi.org/10.1016/j.jcp.2013.06.011>`_
|
||||
|
||||
- Paul K. Romano, Bryan R. Herman, Nicholas E. Horelik, Benoit Forget, Kord
|
||||
Smith, and Andrew R. Siegel, "Progress and Status of the OpenMC Monte Carlo
|
||||
Code," *Proc. Int. Conf. Mathematics and Computational Methods Applied to
|
||||
Nuclear Science and Engineering*, Sun Valley, Idaho, May 5--9 (2013).
|
||||
|
||||
- Nicholas Horelik, Bryan Herman, Benoit Forget, and Kord Smith, "Benchmark for
|
||||
Evaluation and Validation of Reactor Simulations,"
|
||||
*Proc. Int. Conf. Mathematics and Computational Methods Applied to Nuclear
|
||||
Science and Engineering*, Sun Valley, Idaho, May 5--9 (2013).
|
||||
|
||||
- Adam G. Nelson and William R. Martin, "Improved Convergence of Monte Carlo
|
||||
Generated Multi-Group Scattering Moments," *Proc. Int. Conf. Mathematics and
|
||||
Computational Methods Applied to Nuclear Science and Engineering*, Sun Valley,
|
||||
Idaho, May 5--9 (2013).
|
||||
|
||||
- Paul K. Romano and Benoit Forget, "The OpenMC Monte Carlo Particle Transport
|
||||
Code," *Ann. Nucl. Energy*, **51**, 274--281
|
||||
(2013). `<http://dx.doi.org/10.1016/j.anucene.2012.06.040>`_
|
||||
|
||||
- Andrew R. Siegel, Kord Smith, Paul K. Romano, Benoit Forget, and Kyle Felker,
|
||||
"The effect of load imbalances on the performance of Monte Carlo codes in LWR
|
||||
analysis", *J. Comput. Phys.*, **235**, 901--911 (2013).
|
||||
|
|
|
|||
8
docs/source/pythonapi/ace.rst
Normal file
8
docs/source/pythonapi/ace.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_ace:
|
||||
|
||||
==========
|
||||
ACE Format
|
||||
==========
|
||||
|
||||
.. automodule:: openmc.ace
|
||||
:members:
|
||||
8
docs/source/pythonapi/cmfd.rst
Normal file
8
docs/source/pythonapi/cmfd.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_cmfd:
|
||||
|
||||
====
|
||||
CMFD
|
||||
====
|
||||
|
||||
.. automodule:: openmc.cmfd
|
||||
:members:
|
||||
8
docs/source/pythonapi/element.rst
Normal file
8
docs/source/pythonapi/element.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_element:
|
||||
|
||||
=======
|
||||
Element
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.element
|
||||
:members:
|
||||
2467
docs/source/pythonapi/examples/pandas-dataframes.ipynb
Normal file
2467
docs/source/pythonapi/examples/pandas-dataframes.ipynb
Normal file
File diff suppressed because one or more lines are too long
11
docs/source/pythonapi/examples/pandas-dataframes.rst
Normal file
11
docs/source/pythonapi/examples/pandas-dataframes.rst
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
=================
|
||||
Pandas Dataframes
|
||||
=================
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. notebook:: pandas-dataframes.ipynb
|
||||
|
||||
.. only:: latex
|
||||
|
||||
IPython notebooks must be viewed in the online HTML documentation.
|
||||
1657
docs/source/pythonapi/examples/tally-arithmetic.ipynb
Normal file
1657
docs/source/pythonapi/examples/tally-arithmetic.ipynb
Normal file
File diff suppressed because it is too large
Load diff
11
docs/source/pythonapi/examples/tally-arithmetic.rst
Normal file
11
docs/source/pythonapi/examples/tally-arithmetic.rst
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
================
|
||||
Tally Arithmetic
|
||||
================
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. notebook:: tally-arithmetic.ipynb
|
||||
|
||||
.. only:: latex
|
||||
|
||||
IPython notebooks must be viewed in the online HTML documentation.
|
||||
8
docs/source/pythonapi/executor.rst
Normal file
8
docs/source/pythonapi/executor.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_executor:
|
||||
|
||||
========
|
||||
Executor
|
||||
========
|
||||
|
||||
.. automodule:: openmc.executor
|
||||
:members:
|
||||
8
docs/source/pythonapi/filter.rst
Normal file
8
docs/source/pythonapi/filter.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_filter:
|
||||
|
||||
======
|
||||
Filter
|
||||
======
|
||||
|
||||
.. automodule:: openmc.filter
|
||||
:members:
|
||||
8
docs/source/pythonapi/geometry.rst
Normal file
8
docs/source/pythonapi/geometry.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_geometry:
|
||||
|
||||
========
|
||||
Geometry
|
||||
========
|
||||
|
||||
.. automodule:: openmc.geometry
|
||||
:members:
|
||||
71
docs/source/pythonapi/index.rst
Normal file
71
docs/source/pythonapi/index.rst
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
.. _pythonapi:
|
||||
|
||||
==========
|
||||
Python API
|
||||
==========
|
||||
|
||||
OpenMC includes a rich Python API that enables programmatic pre- and
|
||||
post-processing. The easiest way to begin using the API is to take a look at the
|
||||
example Jupyter_ notebooks provided. However, this assumes that you are already
|
||||
familiar with Python and common third-party packages such as NumPy_. If you have
|
||||
never programmed in Python before, there are many good tutorials available
|
||||
online. We recommend going through the modules from Codecademy_ and/or the
|
||||
`Scipy lectures`_. The full API documentation serves to provide more information
|
||||
on a given module or class.
|
||||
|
||||
**Handling nuclear data:**
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
ace
|
||||
|
||||
**Creating input files:**
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
cmfd
|
||||
element
|
||||
filter
|
||||
geometry
|
||||
material
|
||||
mesh
|
||||
nuclide
|
||||
opencg_compatible
|
||||
plots
|
||||
settings
|
||||
surface
|
||||
tallies
|
||||
trigger
|
||||
universe
|
||||
|
||||
**Running OpenMC:**
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
executor
|
||||
|
||||
**Post-processing:**
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
particle_restart
|
||||
statepoint
|
||||
summary
|
||||
tallies
|
||||
|
||||
**Example Jupyter Notebooks:**
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
examples/pandas-dataframes
|
||||
examples/tally-arithmetic
|
||||
|
||||
.. _Jupyter: https://jupyter.org/
|
||||
.. _NumPy: http://www.numpy.org/
|
||||
.. _Codecademy: https://www.codecademy.com/tracks/python
|
||||
.. _Scipy lectures: https://scipy-lectures.github.io/
|
||||
8
docs/source/pythonapi/material.rst
Normal file
8
docs/source/pythonapi/material.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_material:
|
||||
|
||||
=========
|
||||
Materials
|
||||
=========
|
||||
|
||||
.. automodule:: openmc.material
|
||||
:members:
|
||||
8
docs/source/pythonapi/mesh.rst
Normal file
8
docs/source/pythonapi/mesh.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_mesh:
|
||||
|
||||
====
|
||||
Mesh
|
||||
====
|
||||
|
||||
.. automodule:: openmc.mesh
|
||||
:members:
|
||||
8
docs/source/pythonapi/nuclide.rst
Normal file
8
docs/source/pythonapi/nuclide.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_nuclide:
|
||||
|
||||
=======
|
||||
Nuclide
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.nuclide
|
||||
:members:
|
||||
8
docs/source/pythonapi/opencg_compatible.rst
Normal file
8
docs/source/pythonapi/opencg_compatible.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_opencg_compatible:
|
||||
|
||||
====================
|
||||
OpenCG Compatibility
|
||||
====================
|
||||
|
||||
.. automodule:: openmc.opencg_compatible
|
||||
:members:
|
||||
8
docs/source/pythonapi/particle_restart.rst
Normal file
8
docs/source/pythonapi/particle_restart.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_particle_restart:
|
||||
|
||||
================
|
||||
Particle Restart
|
||||
================
|
||||
|
||||
.. automodule:: openmc.particle_restart
|
||||
:members:
|
||||
8
docs/source/pythonapi/plots.rst
Normal file
8
docs/source/pythonapi/plots.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_plots:
|
||||
|
||||
=====
|
||||
Plots
|
||||
=====
|
||||
|
||||
.. automodule:: openmc.plots
|
||||
:members:
|
||||
8
docs/source/pythonapi/settings.rst
Normal file
8
docs/source/pythonapi/settings.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_settings:
|
||||
|
||||
========
|
||||
Settings
|
||||
========
|
||||
|
||||
.. automodule:: openmc.settings
|
||||
:members:
|
||||
8
docs/source/pythonapi/statepoint.rst
Normal file
8
docs/source/pythonapi/statepoint.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_statepoint:
|
||||
|
||||
==========
|
||||
Statepoint
|
||||
==========
|
||||
|
||||
.. automodule:: openmc.statepoint
|
||||
:members:
|
||||
8
docs/source/pythonapi/summary.rst
Normal file
8
docs/source/pythonapi/summary.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_summary:
|
||||
|
||||
=======
|
||||
Summary
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.summary
|
||||
:members:
|
||||
8
docs/source/pythonapi/surface.rst
Normal file
8
docs/source/pythonapi/surface.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_surface:
|
||||
|
||||
=======
|
||||
Surface
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.surface
|
||||
:members:
|
||||
8
docs/source/pythonapi/tallies.rst
Normal file
8
docs/source/pythonapi/tallies.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_tallies:
|
||||
|
||||
=======
|
||||
Tallies
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.tallies
|
||||
:members:
|
||||
8
docs/source/pythonapi/trigger.rst
Normal file
8
docs/source/pythonapi/trigger.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_trigger:
|
||||
|
||||
=======
|
||||
Trigger
|
||||
=======
|
||||
|
||||
.. automodule:: openmc.trigger
|
||||
:members:
|
||||
8
docs/source/pythonapi/universe.rst
Normal file
8
docs/source/pythonapi/universe.rst
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.. _pythonapi_universe:
|
||||
|
||||
========
|
||||
Universe
|
||||
========
|
||||
|
||||
.. automodule:: openmc.universe
|
||||
:members:
|
||||
|
|
@ -22,14 +22,13 @@ package manager`_. Simply enter the following commands into the terminal:
|
|||
sudo apt-get update
|
||||
sudo apt-get install openmc
|
||||
|
||||
Currently, the binary package does not allow for parallel simulations, HDF5_, or
|
||||
CMFD acceleration through PETSc_. Users who need such capabilities should build
|
||||
OpenMC from source as is described in :ref:`usersguide_install`.
|
||||
Currently, the binary package does not allow for parallel simulations or use of
|
||||
HDF5_. Users who need such capabilities should build OpenMC from source as is
|
||||
described in :ref:`usersguide_install`.
|
||||
|
||||
.. _Personal Package Archive: https://launchpad.net/~paulromano/+archive/staging
|
||||
.. _APT package manager: https://help.ubuntu.com/community/AptGet/Howto
|
||||
.. _HDF5: http://www.hdfgroup.org/HDF5/
|
||||
.. _PETSc: http://www.mcs.anl.gov/petsc/
|
||||
|
||||
-------------------------------------------
|
||||
Installing from Source on Linux or Mac OS X
|
||||
|
|
@ -41,19 +40,21 @@ the following commands in a terminal:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
git clone git://github.com/mit-crpg/openmc.git
|
||||
cd openmc/src
|
||||
git clone https://github.com/mit-crpg/openmc.git
|
||||
cd openmc
|
||||
git checkout -b master origin/master
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
sudo make install
|
||||
|
||||
This will build an executable named ``openmc`` and install it (by default in
|
||||
/usr/local/bin). If you do not have administrator privileges, the last command
|
||||
can be replaced with a local install, e.g.
|
||||
/usr/local/bin). If you do not have administrator privileges, the cmake command
|
||||
should specify an installation directory where you have write access, e.g.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
make install -e prefix=$HOME/.local
|
||||
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
|
||||
|
||||
.. _GitHub: https://github.com/mit-crpg/openmc
|
||||
.. _git: http://git-scm.com
|
||||
|
|
|
|||
67
docs/source/releasenotes.rst
Normal file
67
docs/source/releasenotes.rst
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
.. _releasenotes:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.7.0
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Complete Python API
|
||||
- Python 3 compatability for all scripts
|
||||
- All scripts consistently named openmc-* and installed together
|
||||
- New 'distribcell' tally filter for repeated cells
|
||||
- Ability to specify outer lattice universe
|
||||
- XML input validation utility (openmc-validate-xml)
|
||||
- Support for hexagonal lattices
|
||||
- Material union energy grid method
|
||||
- Tally triggers
|
||||
- Remove dependence on PETSc
|
||||
- Significant OpenMP performance improvements
|
||||
- Support for Fortran 2008 MPI interface
|
||||
- Use of Travis CI for continuous integration
|
||||
- Simplifications and improvements to test suite
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- b5f712_: Fix bug in spherical harmonics tallies
|
||||
- e6675b_: Ensure all constants are double precision
|
||||
- 04e2c1_: Fix potential bug in sample_nuclide routine
|
||||
- 6121d9_: Fix bugs related to particle track files
|
||||
- 2f0e89_: Fixes for nuclide specification in tallies
|
||||
|
||||
.. _b5f712: https://github.com/mit-crpg/openmc/commit/b5f712
|
||||
.. _e6675b: https://github.com/mit-crpg/openmc/commit/e6675b
|
||||
.. _04e2c1: https://github.com/mit-crpg/openmc/commit/04e2c1
|
||||
.. _6121d9: https://github.com/mit-crpg/openmc/commit/6121d9
|
||||
.. _2f0e89: https://github.com/mit-crpg/openmc/commit/2f0e89
|
||||
|
||||
------------
|
||||
Contributors
|
||||
------------
|
||||
|
||||
This release contains new contributions from the following people:
|
||||
|
||||
- `Will Boyd <wbinventor@gmail.com>`_
|
||||
- `Matt Ellis <mellis13@mit.edu>`_
|
||||
- `Sterling Harper <sterlingmharper@mit.edu>`_
|
||||
- `Bryan Herman <bherman@mit.edu>`_
|
||||
- `Nicholas Horelik <nicholas.horelik@gmail.com>`_
|
||||
- `Colin Josey <cjosey@mit.edu>`_
|
||||
- `William Lyu <PaleNeutron@users.noreply.github.com>`_
|
||||
- `Adam Nelson <nelsonag@umich.edu>`_
|
||||
- `Paul Romano <paul.k.romano@gmail.com>`_
|
||||
- `Anthony Scopatz <scopatz@gmail.com>`_
|
||||
- `Jon Walsh <walshjon@mit.edu>`_
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
.. _releasenotes:
|
||||
|
||||
=============
|
||||
Release Notes
|
||||
=============
|
||||
|
||||
The release notes for OpenMC give a list of system requirements, new features,
|
||||
bugs fixed, and known issues for each successive release.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
notes_0.6.2
|
||||
notes_0.6.1
|
||||
notes_0.6.0
|
||||
notes_0.5.4
|
||||
notes_0.5.3
|
||||
notes_0.5.2
|
||||
notes_0.5.1
|
||||
notes_0.5.0
|
||||
notes_0.4.4
|
||||
notes_0.4.3
|
||||
notes_0.4.2
|
||||
notes_0.4.1
|
||||
notes_0.4.0
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
.. _notes_0.4.0:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.4.0
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions as well as
|
||||
Mac OS X. However, it has not been tested yet on any releases of Microsoft
|
||||
Windows. Memory requirements will vary depending on the size of the problem at
|
||||
hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- The probability table method for treatment of energy self-shielding in the
|
||||
unresolved resonance range has been implemented and is now turned on by
|
||||
default.
|
||||
- Calculation of Shannon entropy for assessing convergence of the fission source
|
||||
distribution.
|
||||
- Ability to compile with the PGI Fortran compiler.
|
||||
- Ability to run on IBM BlueGene/P machines.
|
||||
- Completely rewrote how nested universes are handled. Geometry is now much more
|
||||
robust.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- Many geometry errors have been fixed. The Monte Carlo performance benchmark
|
||||
can now be successfully run in OpenMC.
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
.. _notes_0.4.1:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.4.1
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions as well as
|
||||
Mac OS X. However, it has not been tested yet on any releases of Microsoft
|
||||
Windows. Memory requirements will vary depending on the size of the problem at
|
||||
hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- A batching method has been implemented so that statistics can be calculated
|
||||
based on multiple generations instead of a single generation. This can help to
|
||||
overcome problems with underpredicted variance in problems where there is
|
||||
correlation between successive fission source iterations.
|
||||
- Users now have the option to select a non-unionized energy grid for problems
|
||||
with many nuclides where the use of a unionized grid is not feasible.
|
||||
- Improved plotting capability (Nick Horelik). The plotting input is now in
|
||||
``plots.xml`` instead of ``plot.xml``.
|
||||
- Added multiple estimators for k-effective and added a global tally for
|
||||
leakage.
|
||||
- Moved cross section-related output into cross_sections.out.
|
||||
- Improved timing capabilities.
|
||||
- Can now use more than 2**31 - 1 particles per generation.
|
||||
- Improved fission bank synchronization method. This also necessitated changing
|
||||
the source bank to be of type Bank rather than of type Particle.
|
||||
- Added HDF5 output (not complete yet).
|
||||
- Major changes to tally implementation.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- `b206a8`_: Fixed subtle error in the sampling of energy distributions.
|
||||
- `800742`_: Fixed error in sampling of angle and rotating angles.
|
||||
- `a07c08`_: Fixed bug in linear-linear interpolation during sampling energy.
|
||||
- `a75283`_: Fixed energy and energyout tally filters to support many bins.
|
||||
- `95cfac`_: Fixed error in cell neighbor searches.
|
||||
- `83a803`_: Fixed bug related to probability tables.
|
||||
|
||||
.. _b206a8: https://github.com/mit-crpg/openmc/commit/b206a8
|
||||
.. _800742: https://github.com/mit-crpg/openmc/commit/800742
|
||||
.. _a07c08: https://github.com/mit-crpg/openmc/commit/a07c08
|
||||
.. _a75283: https://github.com/mit-crpg/openmc/commit/a75283
|
||||
.. _95cfac: https://github.com/mit-crpg/openmc/commit/95cfac
|
||||
.. _83a803: https://github.com/mit-crpg/openmc/commit/83a803
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
.. _notes_0.4.2:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.4.2
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Ability to specify void materials.
|
||||
- Option to not reduce tallies across processors at end of each batch.
|
||||
- Uniform fission site method for reducing variance on local tallies.
|
||||
- Reading/writing binary source files.
|
||||
- Added more messages for <trace> or high verbosity.
|
||||
- Estimator for diffusion coefficient.
|
||||
- Ability to specify 'point' source type.
|
||||
- Ability to change random number seed.
|
||||
- Users can now specify units='sum' on a <density> tag. This tells the code that
|
||||
the total material density is the sum of the atom fractions listed for each
|
||||
nuclide on the material.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- a27f8f_: Fixed runtime error bug when using Intel compiler with DEBUG on.
|
||||
- afe121_: Fixed minor bug in fission bank algorithms.
|
||||
- e0968e_: Force re-evaluation of cross-sections when each particle is born.
|
||||
- 298db8_: Fixed bug in surface currents when using energy-in filter.
|
||||
- 2f3bbe_: Fixed subtle bug in S(a,b) cross section calculation.
|
||||
- 671f30_: Fixed surface currents on mesh not encompassing geometry.
|
||||
- b2c40e_: Fixed bug in incoming energy filter for track-length tallies.
|
||||
- 5524fd_: Mesh filter now works with track-length tallies.
|
||||
- d050c7_: Added Bessel's correction to make estimate of variance unbiased.
|
||||
- 2a5b9c_: Fixed regression in plotting.
|
||||
|
||||
.. _a27f8f: https://github.com/mit-crpg/openmc/commit/a27f8f
|
||||
.. _afe121: https://github.com/mit-crpg/openmc/commit/afe121
|
||||
.. _e0968e: https://github.com/mit-crpg/openmc/commit/e0968e
|
||||
.. _298db8: https://github.com/mit-crpg/openmc/commit/298db8
|
||||
.. _2f3bbe: https://github.com/mit-crpg/openmc/commit/2f3bbe
|
||||
.. _671f30: https://github.com/mit-crpg/openmc/commit/671f30
|
||||
.. _b2c40e: https://github.com/mit-crpg/openmc/commit/b2c40e
|
||||
.. _5524fd: https://github.com/mit-crpg/openmc/commit/5524fd
|
||||
.. _d050c7: https://github.com/mit-crpg/openmc/commit/d050c7
|
||||
.. _2a5b9c: https://github.com/mit-crpg/openmc/commit/2a5b9c
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
.. _notes_0.4.3:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.4.3
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Option to report confidence intervals for tally results.
|
||||
- Rotation and translation for filled cells.
|
||||
- Ability to explicitly specify <estimator> for tallies.
|
||||
- Ability to store state points and use them to restart runs.
|
||||
- Fixed source calculations (no subcritical multiplication however).
|
||||
- Expanded options for external source distribution.
|
||||
- Ability to tally reaction rates for individual nuclides within a material.
|
||||
- Reduced memory usage by removing redundant storage or some cross-sections.
|
||||
- 3bd35b_: Log-log interpolation for URR probability tables.
|
||||
- Support to specify labels on tallies (nelsonag_).
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 33f29a_: Handle negative values in probability table.
|
||||
- 1c472d_: Fixed survival biasing with probability tables.
|
||||
- 3c6e80_: Fixed writing tallies with no filters.
|
||||
- 460ef1_: Invalid results for duplicate tallies.
|
||||
- 0069d5_: Fixed bug with 0 inactive batches.
|
||||
- 7af2cf_: Fixed bug in score_analog_tallies.
|
||||
- 85a60e_: Pick closest angular distribution for law 61.
|
||||
- 3212f5_: Fixed issue with blank line at beginning of XML files.
|
||||
|
||||
.. _nelsonag: https://github.com/nelsonag
|
||||
.. _33f29a: https://github.com/mit-crpg/openmc/commit/33f29a
|
||||
.. _1c472d: https://github.com/mit-crpg/openmc/commit/1c472d
|
||||
.. _3c6e80: https://github.com/mit-crpg/openmc/commit/3c6e80
|
||||
.. _3bd35b: https://github.com/mit-crpg/openmc/commit/3bd35b
|
||||
.. _0069d5: https://github.com/mit-crpg/openmc/commit/0069d5
|
||||
.. _7af2cf: https://github.com/mit-crpg/openmc/commit/7af2cf
|
||||
.. _460ef1: https://github.com/mit-crpg/openmc/commit/460ef1
|
||||
.. _85a60e: https://github.com/mit-crpg/openmc/commit/85a60e
|
||||
.. _3212f5: https://github.com/mit-crpg/openmc/commit/3212f5
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
.. _notes_0.4.4:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.4.4
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Ability to write state points when using <no_reduce>.
|
||||
- Real-time XML validation in GNU Emacs with RELAX NG schemata.
|
||||
- Writing state points every n batches with <state_point interval="..." />
|
||||
- Suppress creation of summary.out and cross_sections.out by default with option
|
||||
to turn them on with <output> tag in settings.xml file.
|
||||
- Ability to create HDF5 state points.
|
||||
- Binary source file is now part of state point file by default.
|
||||
- Enhanced state point usage and added state point Python scripts.
|
||||
- Turning confidence intervals on affects k-effective.
|
||||
- Option to specify <upper_right> for tally meshes.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 4654ee_: Fixed plotting with void cells.
|
||||
- 7ee461_: Fixed bug with multi-line input using type='word'.
|
||||
- 792eb3_: Fixed degrees of freedom for confidence intervals.
|
||||
- 7fd617_: Fixed bug with restart runs in parallel.
|
||||
- dc4a8f_: Fixed bug with fixed source restart runs.
|
||||
|
||||
.. _4654ee: https://github.com/mit-crpg/openmc/commit/4654ee
|
||||
.. _7ee461: https://github.com/mit-crpg/openmc/commit/7ee461
|
||||
.. _792eb3: https://github.com/mit-crpg/openmc/commit/792eb3
|
||||
.. _7fd617: https://github.com/mit-crpg/openmc/commit/7fd617
|
||||
.. _dc4a8f: https://github.com/mit-crpg/openmc/commit/dc4a8f
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
.. _notes_0.5.0:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.5.0
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- All user input options that formerly accepted "off" or "on" should now be
|
||||
"false" or "true" (the proper XML schema datatype).
|
||||
- The <criticality> element is deprecated and was replaced with <eigenvalue>.
|
||||
- Added 'events' score that returns number of events that scored to a tally.
|
||||
- Restructured tally filter implementation and user input.
|
||||
- Source convergence acceleration via CMFD (implemented with PETSc).
|
||||
- Ability to read source files in parallel when number of particles is greater
|
||||
than that number of source sites.
|
||||
- Cone surface types.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 737b90_: Coincident surfaces from separate universes / particle traveling
|
||||
tangent to a surface.
|
||||
- a819b4_: Output of surface neighbors in summary.out file.
|
||||
- b11696_: Reading long attribute lists in XML input.
|
||||
- 2bd46a_: Search for tallying nuclides when no default_xs specified.
|
||||
- 7a1f08_: Fix word wrapping when writing messages.
|
||||
- c0e3ec_: Prevent underflow when compiling with MPI=yes and DEBUG=yes.
|
||||
- 6f8d9d_: Set default tally labels.
|
||||
- 6a3a5e_: Fix problem with corner-crossing in lattices.
|
||||
|
||||
.. _737b90: https://github.com/mit-crpg/openmc/commit/737b90
|
||||
.. _a819b4: https://github.com/mit-crpg/openmc/commit/a819b4
|
||||
.. _b11696: https://github.com/mit-crpg/openmc/commit/b11696
|
||||
.. _2bd46a: https://github.com/mit-crpg/openmc/commit/2bd46a
|
||||
.. _7a1f08: https://github.com/mit-crpg/openmc/commit/7a1f08
|
||||
.. _c0e3ec: https://github.com/mit-crpg/openmc/commit/c0e3ec
|
||||
.. _6f8d9d: https://github.com/mit-crpg/openmc/commit/6f8d9d
|
||||
.. _6a3a5e: https://github.com/mit-crpg/openmc/commit/6a3a5e
|
||||
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
.. _notes_0.5.1:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.5.1
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Absorption and combined estimators for k-effective.
|
||||
- Natural elements can now be specified in materials using <element> rather than
|
||||
<nuclide>.
|
||||
- Support for multiple S(a,b) tables in a single material (e.g. BeO).
|
||||
- Test suite using Python nosetests.
|
||||
- Proper install capability with 'make install'.
|
||||
- Lattices can now be 2 or 3 dimensions.
|
||||
- New scatter-PN score type.
|
||||
- New kappa-fission score type.
|
||||
- Ability to tally any reaction by specifying MT.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 94103e_: Two checks for outgoing energy filters.
|
||||
- e77059_: Fix reaction name for MT=849.
|
||||
- b0fe88_: Fix distance to surface for cones.
|
||||
- 63bfd2_: Fix tracklength tallies with cell filter and universes.
|
||||
- 88daf7_: Fix analog tallies with survival biasing.
|
||||
|
||||
.. _94103e: https://github.com/mit-crpg/openmc/commit/94103e
|
||||
.. _e77059: https://github.com/mit-crpg/openmc/commit/e77059
|
||||
.. _b0fe88: https://github.com/mit-crpg/openmc/commit/b0fe88
|
||||
.. _63bfd2: https://github.com/mit-crpg/openmc/commit/63bfd2
|
||||
.. _88daf7: https://github.com/mit-crpg/openmc/commit/88daf7
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
.. _notes_0.5.2:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.5.2
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Python script for mesh tally plotting
|
||||
- Isotopic abundances based on IUPAC 2009 when using <element>
|
||||
- Particle restart files for debugging
|
||||
- Code will abort after certain number of lost particles (defaults to 10)
|
||||
- Region outside lattice can be filled with material (void by default)
|
||||
- 3D voxel plots
|
||||
- Full HDF5/PHDF5 support (including support in statepoint.py)
|
||||
- Cell overlap checking with -g command line flag (or when plotting)
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 7632f3_: Fixed bug in statepoint.py for multiple generations per batch.
|
||||
- f85ac4_: Fix infinite loop bug in error module.
|
||||
- 49c36b_: Don't convert surface ids if surface filter is for current tallies.
|
||||
- 5ccc78_: Fix bug in reassignment of bins for mesh filter.
|
||||
- b1f52f_: Fixed bug in plot color specification.
|
||||
- eae7e5_: Fixed many memory leaks.
|
||||
- 10c1cc_: Minor CMFD fixes.
|
||||
- afdb50_: Add compatibility for XML comments without whitespace.
|
||||
- a3c593_: Fixed bug in use of free gas scattering for H-1.
|
||||
- 3a66e3_: Fixed bug in 2D mesh tally implementation.
|
||||
- ab0793_: Corrected PETSC_NULL references to their correct types.
|
||||
- 182ebd_: Use analog estimator with energyout filter.
|
||||
|
||||
.. _7632f3: https://github.com/mit-crpg/openmc/commit/7632f3
|
||||
.. _f85ac4: https://github.com/mit-crpg/openmc/commit/f85ac4
|
||||
.. _49c36b: https://github.com/mit-crpg/openmc/commit/49c36b
|
||||
.. _5ccc78: https://github.com/mit-crpg/openmc/commit/5ccc78
|
||||
.. _b1f52f: https://github.com/mit-crpg/openmc/commit/b1f52f
|
||||
.. _eae7e5: https://github.com/mit-crpg/openmc/commit/eae7e5
|
||||
.. _10c1cc: https://github.com/mit-crpg/openmc/commit/10c1cc
|
||||
.. _afdb50: https://github.com/mit-crpg/openmc/commit/afdb50
|
||||
.. _a3c593: https://github.com/mit-crpg/openmc/commit/a3c593
|
||||
.. _3a66e3: https://github.com/mit-crpg/openmc/commit/3a66e3
|
||||
.. _ab0793: https://github.com/mit-crpg/openmc/commit/ab0793
|
||||
.. _182ebd: https://github.com/mit-crpg/openmc/commit/182ebd
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
.. _notes_0.5.3:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.5.3
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Output interface enhanced to allow multiple files handles to be opened
|
||||
- Particle restart file linked to output interface
|
||||
- Particle restarts and state point restarts are both identified with the -r
|
||||
command line flag.
|
||||
- Particle instance no longer global, passed to all physics routines
|
||||
- Physics routines refactored to rely less on global memory, more arguments
|
||||
passed in
|
||||
- CMFD routines refactored and now can compute dominance ratio on the fly
|
||||
- PETSc 3.4.2 or higher must be used and compiled with fortran datatype support
|
||||
- Memory leaks fixed except for ones from xml-fortran package
|
||||
- Test suite enhanced to test output with different compiler options
|
||||
- Description of OpenMC development workflow added
|
||||
- OpenMP shared-memory parallelism added
|
||||
- Special run mode --tallies removed.
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 2b1e8a_: Normalize direction vector after reflecting particle.
|
||||
- 5853d2_: Set blank default for cross section listing alias.
|
||||
- e178c7_: Fix infinite loop with words greater than 80 characters in write_message.
|
||||
- c18a6e_: Check for valid secondary mode on S(a,b) tables.
|
||||
- 82c456_: Fix bug where last process could have zero particles.
|
||||
|
||||
.. _2b1e8a: https://github.com/mit-crpg/openmc/commit/2b1e8a
|
||||
.. _5853d2: https://github.com/mit-crpg/openmc/commit/5853d2
|
||||
.. _e178c7: https://github.com/mit-crpg/openmc/commit/e178c7
|
||||
.. _c18a6e: https://github.com/mit-crpg/openmc/commit/c18a6e
|
||||
.. _82c456: https://github.com/mit-crpg/openmc/commit/82c456
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
.. _notes_0.5.4:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.5.4
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- 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)
|
||||
- Multiple random number generator streams
|
||||
- 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
|
||||
---------
|
||||
|
||||
- 32c03c_: Check for valid data in cross_sections.xml
|
||||
- c71ef5_: Fix bug in statepoint.py
|
||||
- 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
|
||||
------------
|
||||
|
||||
This release contains new contributions from the following people:
|
||||
|
||||
- `Sterling Harper <smharper@mit.edu>`_
|
||||
- `Bryan Herman <bherman@mit.edu>`_
|
||||
- `Nick Horelik <nhorelik@mit.edu>`_
|
||||
- `Adam Nelson <nelsonag@umich.edu>`_
|
||||
- `Paul Romano <paul.k.romano@gmail.com>`_
|
||||
- `Tuomas Viitanen <tuomas.viitanen@vtt.fi>`_
|
||||
- `Jon Walsh <walshjon@mit.edu>`_
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
.. _notes_0.6.0:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.6.0
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Legendre and spherical harmonic expansion tally scores
|
||||
- CMake is now default build system
|
||||
- Regression test suite based on CTests and NNDC cross sections
|
||||
- FoX is now a git submodule
|
||||
- Support for older cross sections (e.g. MCNP 66c)
|
||||
- Progress bar for plots
|
||||
- Expanded support for natural elements via <natural_elements> in settings.xml
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 41f7ca_: Fixed erroneous results from survival biasing
|
||||
- 038736_: Fix tallies over void materials
|
||||
- 46f9e8_: Check for negative values in probability tables
|
||||
- d1ca35_: Fixed sampling of angular distribution
|
||||
- 0291c0_: Fixed indexing error in plotting
|
||||
- d7a7d0_: Fix bug with <element> specifying xs attribute
|
||||
- 85b3cb_: Fix out-of-bounds error with OpenMP threading
|
||||
|
||||
.. _41f7ca: https://github.com/mit-crpg/openmc/commit/41f7ca
|
||||
.. _038736: https://github.com/mit-crpg/openmc/commit/038736
|
||||
.. _46f9e8: https://github.com/mit-crpg/openmc/commit/46f9e8
|
||||
.. _d1ca35: https://github.com/mit-crpg/openmc/commit/d1ca35
|
||||
.. _0291c0: https://github.com/mit-crpg/openmc/commit/0291c0
|
||||
.. _d7a7d0: https://github.com/mit-crpg/openmc/commit/d7a7d0
|
||||
.. _85b3cb: https://github.com/mit-crpg/openmc/commit/85b3cb
|
||||
|
||||
------------
|
||||
Contributors
|
||||
------------
|
||||
|
||||
This release contains new contributions from the following people:
|
||||
|
||||
- `Sterling Harper <smharper@mit.edu>`_
|
||||
- `Bryan Herman <bherman@mit.edu>`_
|
||||
- `Nick Horelik <nhorelik@mit.edu>`_
|
||||
- `Adam Nelson <nelsonag@umich.edu>`_
|
||||
- `Paul Romano <paul.k.romano@gmail.com>`_
|
||||
- `Jon Walsh <walshjon@mit.edu>`_
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
.. _notes_0.6.1:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.6.1
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Coarse mesh finite difference (CMFD) acceleration no longer requires PETSc
|
||||
- Statepoint file numbering is now zero-padded
|
||||
- Python scripts now compatible with Python 2 or 3
|
||||
- Ability to run particle restarts in fixed source calculations
|
||||
- Capability to filter box source by fissionable materials
|
||||
- Nuclide/element names are now case insensitive in input files
|
||||
- Improved treatment of resonance scattering for heavy nuclides
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 03e890_: Check for energy-dependent multiplicities in ACE files
|
||||
- 4439de_: Fix distance-to-surface calculation for general plane surface
|
||||
- 5808ed_: Account for differences in URR band probabilities at different energies
|
||||
- 2e60c0_: Allow zero atom/weight percents in materials
|
||||
- 3e0870_: Don't use PWD environment variable when setting path to input files
|
||||
- dc4776_: Handle probability table resampling correctly
|
||||
- 01178b_: Fix metastables nuclides in NNDC cross_sections.xml file
|
||||
- 62ec43_: Don't read tallies.xml when OpenMC is run in plotting mode
|
||||
- 2a95ef_: Prevent segmentation fault on "current" score without mesh filter
|
||||
- 93e482_: Check for negative values in probability tables
|
||||
|
||||
.. _03e890: https://github.com/mit-crpg/openmc/commit/03e890
|
||||
.. _4439de: https://github.com/mit-crpg/openmc/commit/4439de
|
||||
.. _5808ed: https://github.com/mit-crpg/openmc/commit/5808ed
|
||||
.. _2e60c0: https://github.com/mit-crpg/openmc/commit/2e60c0
|
||||
.. _3e0870: https://github.com/mit-crpg/openmc/commit/3e0870
|
||||
.. _dc4776: https://github.com/mit-crpg/openmc/commit/dc4776
|
||||
.. _01178b: https://github.com/mit-crpg/openmc/commit/01178b
|
||||
.. _62ec43: https://github.com/mit-crpg/openmc/commit/62ec43
|
||||
.. _2a95ef: https://github.com/mit-crpg/openmc/commit/2a95ef
|
||||
.. _93e482: https://github.com/mit-crpg/openmc/commit/93e482
|
||||
|
||||
------------
|
||||
Contributors
|
||||
------------
|
||||
|
||||
This release contains new contributions from the following people:
|
||||
|
||||
- `Sterling Harper <smharper@mit.edu>`_
|
||||
- `Bryan Herman <bherman@mit.edu>`_
|
||||
- `Adam Nelson <nelsonag@umich.edu>`_
|
||||
- `Paul Romano <paul.k.romano@gmail.com>`_
|
||||
- `Jon Walsh <walshjon@mit.edu>`_
|
||||
- `Will Boyd <wbinventor@gmail.com>`_
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
.. _notes_0.6.2:
|
||||
|
||||
==============================
|
||||
Release Notes for OpenMC 0.6.2
|
||||
==============================
|
||||
|
||||
-------------------
|
||||
System Requirements
|
||||
-------------------
|
||||
|
||||
There are no special requirements for running the OpenMC code. As of this
|
||||
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
|
||||
and Microsoft Windows 7. Memory requirements will vary depending on the size of
|
||||
the problem at hand (mostly on the number of nuclides in the problem).
|
||||
|
||||
------------
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Meshline plotting capability
|
||||
- Support for plotting cells/materials on middle universe levels
|
||||
- Ability to model cells with no surfaces
|
||||
- Compatibility with PETSc 3.5
|
||||
- Compatability with OpenMPI 1.7/1.8
|
||||
- Improved overall performance via logarithmic-mapped energy grid search
|
||||
- Improved multi-threaded performance with atomic operations
|
||||
- Support for fixed source problems with fissionable materials
|
||||
|
||||
---------
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
- 26fb93_: Fix problem with -t, --track command-line flag
|
||||
- 2f07c0_: Improved evaporation spectrum algorithm
|
||||
- e6abb9_: Fix segfault when tallying in a void material
|
||||
- 291b45_: Handle metastable nuclides in NNDC data and multiplicities in MT=5 data
|
||||
|
||||
.. _26fb93: https://github.com/mit-crpg/openmc/commit/26fb93
|
||||
.. _2f07c0: https://github.com/mit-crpg/openmc/commit/2f07c0
|
||||
.. _e6abb9: https://github.com/mit-crpg/openmc/commit/e6abb9
|
||||
.. _291b45: https://github.com/mit-crpg/openmc/commit/291b45
|
||||
|
||||
------------
|
||||
Contributors
|
||||
------------
|
||||
|
||||
This release contains new contributions from the following people:
|
||||
|
||||
- `Will Boyd <wbinventor@gmail.com>`_
|
||||
- `Matt Ellis <mellis13@mit.edu>`_
|
||||
- `Sterling Harper <smharper@mit.edu>`_
|
||||
- `Bryan Herman <bherman@mit.edu>`_
|
||||
- `Nicholas Horelik <nicholas.horelik@gmail.com>`_
|
||||
- `Anton Leontiev <bunder@t-25.ru>`_
|
||||
- `Adam Nelson <nelsonag@umich.edu>`_
|
||||
- `Paul Romano <paul.k.romano@gmail.com>`_
|
||||
- `Jon Walsh <walshjon@mit.edu>`_
|
||||
- `John Xia <john.danger.xia@gmail.com>`_
|
||||
|
|
@ -146,13 +146,12 @@ and `Volume II`_. You may also find it helpful to review the following terms:
|
|||
.. _constructive solid geometry: http://en.wikipedia.org/wiki/Constructive_solid_geometry
|
||||
.. _git: http://git-scm.com/
|
||||
.. _git tutorials: http://git-scm.com/documentation
|
||||
.. _Reactor Concepts Manual: http://web.mit.edu/romano7/www/reactor_concepts.pdf
|
||||
.. _Volume I: http://www.hss.doe.gov/nuclearsafety/techstds/docs/handbook/h1019v1.pdf
|
||||
.. _Volume II: http://www.hss.doe.gov/nuclearsafety/techstds/docs/handbook/h1019v2.pdf
|
||||
.. _Reactor Concepts Manual: http://www.tayloredge.com/periodic/trivia/ReactorConcepts.pdf
|
||||
.. _Volume I: http://energy.gov/sites/prod/files/2013/06/f2/h1019v1.pdf
|
||||
.. _Volume II: http://energy.gov/sites/prod/files/2013/06/f2/h1019v2.pdf
|
||||
.. _OpenMC source code: https://github.com/mit-crpg/openmc
|
||||
.. _GitHub: https://github.com/
|
||||
.. _bug reports: https://github.com/mit-crpg/openmc/issues
|
||||
.. _Neutron cross section: http://en.wikipedia.org/wiki/Neutron_cross_section
|
||||
.. _Effective multiplication factor: http://en.wikipedia.org/wiki/Effective_multiplication_factor
|
||||
.. _Flux: http://en.wikipedia.org/wiki/Neutron_flux
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,43 @@ files are called:
|
|||
* ``plots.xml``
|
||||
* ``cmfd.xml``
|
||||
|
||||
--------------------
|
||||
Validating XML Files
|
||||
--------------------
|
||||
|
||||
Input files can be checked before executing OpenMC using the
|
||||
``openmc-validate-xml`` script which is installed alongside the Python API. Two
|
||||
command line arguments can be set when running ``openmc-validate-xml``:
|
||||
|
||||
* ``-i``, ``--input-path`` - Location of OpenMC input files.
|
||||
*Default*: current working directory
|
||||
* ``-r``, ``--relaxng-path`` - Location of OpenMC RelaxNG files.
|
||||
*Default*: None
|
||||
|
||||
If the RelaxNG path is not set, the script will search for these files because
|
||||
it expects that the user is either running the script located in the install
|
||||
directory ``bin`` folder or in ``src/utils``. Once executed, it will match
|
||||
OpenMC XML files with their RelaxNG schema and check if they are valid. Below
|
||||
is a table of the messages that will be printed after each file is checked.
|
||||
|
||||
======================== ===================================
|
||||
Message Description
|
||||
======================== ===================================
|
||||
[XML ERROR] Cannot parse XML file.
|
||||
[NO RELAXNG FOUND] No RelaxNG file found for XML file.
|
||||
[NOT VALID] XML file does not match RelaxNG.
|
||||
[VALID] XML file matches RelaxNG.
|
||||
======================== ===================================
|
||||
|
||||
As an example, if OpenMC is installed in the directory
|
||||
``/opt/openmc/0.6.2`` and the current working directory is where
|
||||
OpenMC XML input files are located, they can be validated using
|
||||
the following command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
/opt/openmc/0.6.2/bin/xml_validate
|
||||
|
||||
--------------------------------------
|
||||
Settings Specification -- settings.xml
|
||||
--------------------------------------
|
||||
|
|
@ -99,6 +136,8 @@ default. This element has the following attributes/sub-elements:
|
|||
|
||||
*Default*: 1.0
|
||||
|
||||
.. _eigenvalue:
|
||||
|
||||
``<eigenvalue>`` Element
|
||||
------------------------
|
||||
|
||||
|
|
@ -130,15 +169,47 @@ should be performed. It has the following attributes/sub-elements:
|
|||
|
||||
*Default*: None
|
||||
|
||||
:keff_trigger:
|
||||
This tag specifies a precision trigger on the combined :math:`k_{eff}`. The
|
||||
trigger is a convergence criterion on the uncertainty of the estimated
|
||||
eigenvalue. It has the following attributes/sub-elements:
|
||||
|
||||
:type:
|
||||
The type of precision trigger. Accepted options are "variance", "std_dev",
|
||||
and "rel_err".
|
||||
|
||||
:variance:
|
||||
Variance of the batch mean :math:`\sigma^2`
|
||||
|
||||
:std_dev:
|
||||
Standard deviation of the batch mean :math:`\sigma`
|
||||
|
||||
:rel_err:
|
||||
Relative error of the batch mean :math:`\frac{\sigma}{\mu}`
|
||||
|
||||
*Default*: None
|
||||
|
||||
:threshold:
|
||||
The precision trigger's convergence criterion for the
|
||||
combined :math:`k_{eff}`.
|
||||
|
||||
*Default*: None
|
||||
|
||||
.. note:: See section on the :ref:`trigger` for more information.
|
||||
|
||||
``<energy_grid>`` Element
|
||||
-------------------------
|
||||
|
||||
The ``<energy_grid>`` element determines the treatment of the energy grid during
|
||||
a simulation. The valid options are "nuclide" and "logarithm". Setting this
|
||||
element to "nuclide" will cause OpenMC to use a nuclide's energy grid when
|
||||
determining what points to interpolate between for determining cross sections
|
||||
(i.e. non-unionized energy grid). Setting this element to "logarithm" causes
|
||||
OpenMC to use a logarithmic mapping technique described in LA-UR-14-24530_.
|
||||
a simulation. The valid options are "nuclide", "logarithm", and
|
||||
"material-union". Setting this element to "nuclide" will cause OpenMC to use a
|
||||
nuclide's energy grid when determining what points to interpolate between for
|
||||
determining cross sections (i.e. non-unionized energy grid). Setting this
|
||||
element to "logarithm" causes OpenMC to use a logarithmic mapping technique
|
||||
described in LA-UR-14-24530_. Setting this element to "material-union" will
|
||||
cause OpenMC to create energy grids that are unionized material-by-material and
|
||||
use these grids when determining the energy-cross section pairs to interpolate
|
||||
cross section values between.
|
||||
|
||||
*Default*: logarithm
|
||||
|
||||
|
|
@ -170,8 +241,8 @@ problem. It has the following attributes/sub-elements:
|
|||
``<fixed_source>`` Element
|
||||
--------------------------
|
||||
|
||||
The ``<fixed_source>`` element indicates that a fixed source calculation should be
|
||||
performed. It has the following attributes/sub-elements:
|
||||
The ``<fixed_source>`` element indicates that a fixed source calculation should
|
||||
be performed. It has the following attributes/sub-elements:
|
||||
|
||||
:batches:
|
||||
The total number of batches. For fixed source calculations, each batch
|
||||
|
|
@ -252,7 +323,8 @@ out the file and "false" will not.
|
|||
|
||||
*Default*: true
|
||||
|
||||
.. note:: The tally results will always be written to a binary/HDF5 state point file.
|
||||
.. note:: The tally results will always be written to a binary/HDF5 state
|
||||
point file.
|
||||
|
||||
``<output_path>`` Element
|
||||
-------------------------
|
||||
|
|
@ -369,24 +441,22 @@ attributes/sub-elements:
|
|||
has the following attributes:
|
||||
|
||||
:type:
|
||||
The type of spatial distribution. Valid options are "box" and "point". A
|
||||
"box" spatial distribution has coordinates sampled uniformly in a
|
||||
parallelepiped. A "point" spatial distribution has coordinates specified
|
||||
by a triplet.
|
||||
|
||||
The type of spatial distribution. Valid options are "box", "fission", and
|
||||
"point". A "box" spatial distribution has coordinates sampled uniformly in
|
||||
a parallelepiped. A "fission" spatial distribution samples locations from
|
||||
a "box" distribution but only locations in fissionable materials are
|
||||
accepted. A "point" spatial distribution has coordinates specified by a
|
||||
triplet.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:parameters:
|
||||
For a "box" spatial distribution, ``parameters`` should be given as six
|
||||
real numbers, the first three of which specify the lower-left corner of a
|
||||
parallelepiped and the last three of which specify the upper-right
|
||||
corner. Source sites are sampled uniformly through that parallelepiped.
|
||||
|
||||
To filter a "box" spatial distribution by fissionable material, specify
|
||||
"fission" tag instead of "box". The ``parameters`` should be given as six
|
||||
real numbers, the first three of which specify the lower-left corner of a
|
||||
parallelepiped and the last three of which specify the upper-right
|
||||
corner. Source sites are sampled uniformly through that parallelepiped.
|
||||
For a "box" or "fission" spatial distribution, ``parameters`` should be
|
||||
given as six real numbers, the first three of which specify the lower-left
|
||||
corner of a parallelepiped and the last three of which specify the
|
||||
upper-right corner. Source sites are sampled uniformly through that
|
||||
parallelepiped.
|
||||
|
||||
For a "point" spatial distribution, ``parameters`` should be given as
|
||||
three real numbers which specify the (x,y,z) location of an isotropic
|
||||
|
|
@ -409,7 +479,7 @@ attributes/sub-elements:
|
|||
|
||||
:parameters:
|
||||
For an "isotropic" angular distribution, ``parameters`` should not be
|
||||
specified
|
||||
specified.
|
||||
|
||||
For a "monodirectional" angular distribution, ``parameters`` should be
|
||||
given as three real numbers which specify the angular cosines with respect
|
||||
|
|
@ -427,7 +497,7 @@ attributes/sub-elements:
|
|||
"watt", and "maxwell". The "monoenergetic" option produces source sites at
|
||||
a single energy. The "watt" option produces source sites whose energy is
|
||||
sampled from a Watt fission spectrum. The "maxwell" option produce source
|
||||
sites whose energy is sampled from a Maxwell fission spectrum
|
||||
sites whose energy is sampled from a Maxwell fission spectrum.
|
||||
|
||||
*Default*: watt
|
||||
|
||||
|
|
@ -501,8 +571,8 @@ attributes/sub-elements:
|
|||
*Default*: None
|
||||
|
||||
:separate:
|
||||
If this element is set to "true", a separate binary source point file will be
|
||||
written. Otherwise, the source sites will be written in the state point
|
||||
If this element is set to "true", a separate binary source point file will
|
||||
be written. Otherwise, the source sites will be written in the state point
|
||||
directly.
|
||||
|
||||
*Default*: false
|
||||
|
|
@ -533,8 +603,6 @@ survival biasing, otherwise known as implicit capture or absorption.
|
|||
|
||||
*Default*: false
|
||||
|
||||
.. _trace:
|
||||
|
||||
``<threads>`` Element
|
||||
---------------------
|
||||
|
||||
|
|
@ -543,6 +611,8 @@ a simulation. It has no attributes and accepts a positive integer value.
|
|||
|
||||
*Default*: None (Determined by environment variable :envvar:`OMP_NUM_THREADS`)
|
||||
|
||||
.. _trace:
|
||||
|
||||
``<trace>`` Element
|
||||
-------------------
|
||||
|
||||
|
|
@ -557,10 +627,56 @@ integers: the batch number, generation number, and particle number.
|
|||
``<track>`` Element
|
||||
-------------------
|
||||
|
||||
The ``<track>`` element specifies particles for which OpenMC will output binary files describing particle position at every step of its transport. This element should be followed by triplets of integers. Each triplet describes one particle. The integers in each triplet specify the batch number, generation number, and particle number, respectively.
|
||||
The ``<track>`` element specifies particles for which OpenMC will output binary
|
||||
files describing particle position at every step of its transport. This element
|
||||
should be followed by triplets of integers. Each triplet describes one
|
||||
particle. The integers in each triplet specify the batch number, generation
|
||||
number, and particle number, respectively.
|
||||
|
||||
*Default*: None
|
||||
|
||||
.. _trigger:
|
||||
|
||||
``<trigger>`` Element
|
||||
-------------------------
|
||||
|
||||
OpenMC includes tally precision triggers which allow the user to define
|
||||
uncertainty thresholds on :math:`k_{eff}` in the ``<eigenvalue>`` subelement of
|
||||
``settings.xml``, and/or tallies in ``tallies.xml``. When using triggers,
|
||||
OpenMC will run until it completes as many batches as defined by ``<batches>``.
|
||||
At this point, the uncertainties on all tallied values are computed and
|
||||
compared with their corresponding trigger thresholds. If any triggers have not
|
||||
been met, OpenMC will continue until either all trigger thresholds have been
|
||||
satisfied or ``<max_batches>`` has been reached.
|
||||
|
||||
The ``<trigger>`` element provides an active "toggle switch" for tally
|
||||
precision trigger(s), the maximum number of batches and the batch interval. It
|
||||
has the following attributes/sub-elements:
|
||||
|
||||
:active:
|
||||
This determines whether or not to use trigger(s). Trigger(s) are used when
|
||||
this tag is set to "true".
|
||||
|
||||
:max_batches:
|
||||
This describes the maximum number of batches allowed when using trigger(s).
|
||||
|
||||
.. note:: When max_batches is set, the number of ``batches`` shown in
|
||||
``<eigenvalue>`` element represents minimum number of batches to
|
||||
simulate when using the trigger(s).
|
||||
|
||||
:batch_interval:
|
||||
This tag describes the number of batches in between convergence checks.
|
||||
OpenMC will check if the trigger has been reached at each batch defined
|
||||
by ``batch_interval`` after the minimum number of batches is reached.
|
||||
|
||||
.. note:: If this tag is not present, the ``batch_interval`` is predicted
|
||||
dynamically by OpenMC for each convergence check. The predictive
|
||||
model assumes no correlation between fission sources
|
||||
distributions from batch-to-batch. This assumption is reasonable
|
||||
for fixed source and small criticality calculations, but is very
|
||||
optimistic for highly coupled full-core reactor problems.
|
||||
|
||||
|
||||
``<uniform_fs>`` Element
|
||||
------------------------
|
||||
|
||||
|
|
@ -664,6 +780,12 @@ Each ``<surface>`` element can have the following attributes or sub-elements:
|
|||
|
||||
*Default*: None
|
||||
|
||||
:name:
|
||||
An optional string name to identify the surface in summary output
|
||||
files. This string is limited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: ""
|
||||
|
||||
:type:
|
||||
The type of the surfaces. This can be "x-plane", "y-plane", "z-plane",
|
||||
"plane", "x-cylinder", "y-cylinder", "z-cylinder", or "sphere".
|
||||
|
|
@ -740,10 +862,16 @@ The following quadratic surfaces can be modeled:
|
|||
Each ``<cell>`` element can have the following attributes or sub-elements:
|
||||
|
||||
:id:
|
||||
A unique integer that can be used to identify the surface.
|
||||
A unique integer that can be used to identify the cell.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:name:
|
||||
An optional string name to identify the cell in summary output files.
|
||||
This string is limmited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: ""
|
||||
|
||||
:universe:
|
||||
The ``id`` of the universe that this cell is contained in.
|
||||
|
||||
|
|
@ -802,19 +930,18 @@ Each ``<cell>`` element can have the following attributes or sub-elements:
|
|||
---------------------
|
||||
|
||||
The ``<lattice>`` can be used to represent repeating structures (e.g. fuel pins
|
||||
in an assembly) or other geometry which naturally fits into a two- or
|
||||
three-dimensional structured mesh. Each cell within the lattice is filled with a
|
||||
specified universe. A ``<lattice>`` accepts the following attributes or
|
||||
sub-elements:
|
||||
in an assembly) or other geometry which fits onto a rectilinear grid. Each cell
|
||||
within the lattice is filled with a specified universe. A ``<lattice>`` accepts
|
||||
the following attributes or sub-elements:
|
||||
|
||||
:id:
|
||||
A unique integer that can be used to identify the surface.
|
||||
A unique integer that can be used to identify the lattice.
|
||||
|
||||
:type:
|
||||
A string indicating the arrangement of lattice cells. Currently, the only
|
||||
accepted option is "rectangular".
|
||||
:name:
|
||||
An optional string name to identify the lattice in summary output
|
||||
files. This string is limited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: rectangular
|
||||
*Default*: ""
|
||||
|
||||
:dimension:
|
||||
Two or three integers representing the number of lattice cells in the x- and
|
||||
|
|
@ -828,22 +955,118 @@ sub-elements:
|
|||
|
||||
*Default*: None
|
||||
|
||||
:width:
|
||||
The width of the lattice cell in the x- and y- (and z-) directions.
|
||||
:pitch:
|
||||
If the lattice is 3D, then three real numbers that express the distance
|
||||
between the centers of lattice cells in the x-, y-, and z- directions. If
|
||||
the lattice is 2D, then omit the third value.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:outside:
|
||||
The unique integer identifier of a material that is to be used to fill all
|
||||
space outside of the lattice. This element is optional.
|
||||
:outer:
|
||||
The unique integer identifier of a universe that will be used to fill all
|
||||
space outside of the lattice. The universe will be tiled repeatedly as if
|
||||
it were placed in a lattice of infinite size. This element is optional.
|
||||
|
||||
*Default*: The region outside the defined lattice is treated as void.
|
||||
*Default*: An error will be raised if a particle leaves a lattice with no
|
||||
outer universe.
|
||||
|
||||
:universes:
|
||||
A list of the universe numbers that fill each cell of the lattice.
|
||||
|
||||
*Default*: None
|
||||
|
||||
Here is an example of a properly defined 2d rectangular lattice:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<lattice id="10" dimension="3 3" outer="1">
|
||||
<lower_left> -1.5 -1.5 </lower_left>
|
||||
<pitch> 1.0 1.0 </pitch>
|
||||
<universes>
|
||||
2 2 2
|
||||
2 1 2
|
||||
2 2 2
|
||||
</universes>
|
||||
</lattice>
|
||||
|
||||
``<hex_lattice>`` Element
|
||||
-------------------------
|
||||
|
||||
The ``<hex_lattice>`` can be used to represent repeating structures (e.g. fuel
|
||||
pins in an assembly) or other geometry which naturally fits onto a hexagonal
|
||||
grid or hexagonal prism grid. Each cell within the lattice is filled with a
|
||||
specified universe. This lattice uses the "flat-topped hexagon" scheme where two
|
||||
of the six edges are perpendicular to the y-axis. A ``<hex_lattice>`` accepts
|
||||
the following attributes or sub-elements:
|
||||
|
||||
:id:
|
||||
A unique integer that can be used to identify the lattice.
|
||||
|
||||
:name:
|
||||
An optional string name to identify the hex_lattice in summary output
|
||||
files. This string is limited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: ""
|
||||
|
||||
:n_rings:
|
||||
An integer representing the number of radial ring positions in the xy-plane.
|
||||
Note that this number includes the degenerate center ring which only has one
|
||||
element.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:n_axial:
|
||||
An integer representing the number of positions along the z-axis. This
|
||||
element is optional.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:center:
|
||||
The coordinates of the center of the lattice. If the lattice does not have
|
||||
axial sections then only the x- and y-coordinates are specified.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:pitch:
|
||||
If the lattice is 3D, then two real numbers that express the distance
|
||||
between the centers of lattice cells in the xy-plane and along the z-axis,
|
||||
respectively. If the lattice is 2D, then omit the second value.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:outer:
|
||||
The unique integer identifier of a universe that will be used to fill all
|
||||
space outside of the lattice. The universe will be tiled repeatedly as if
|
||||
it were placed in a lattice of infinite size. This element is optional.
|
||||
|
||||
*Default*: An error will be raised if a particle leaves a lattice with no
|
||||
outer universe.
|
||||
|
||||
:universes:
|
||||
A list of the universe numbers that fill each cell of the lattice.
|
||||
|
||||
*Default*: None
|
||||
|
||||
Here is an example of a properly defined 2d hexagonal lattice:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<hex_lattice id="10" n_rings="3" outer="1">
|
||||
<center> 0.0 0.0 </center>
|
||||
<pitch> 1.0 </pitch>
|
||||
<universes>
|
||||
202
|
||||
202 202
|
||||
202 202 202
|
||||
202 202
|
||||
202 101 202
|
||||
202 202
|
||||
202 202 202
|
||||
202 202
|
||||
202
|
||||
</universes>
|
||||
</hex_lattice>
|
||||
|
||||
.. _constructive solid geometry: http://en.wikipedia.org/wiki/Constructive_solid_geometry
|
||||
|
||||
.. _quadratic surfaces: http://en.wikipedia.org/wiki/Quadric
|
||||
|
|
@ -862,6 +1085,12 @@ Each ``material`` element can have the following attributes or sub-elements:
|
|||
:id:
|
||||
A unique integer that can be used to identify the material.
|
||||
|
||||
:name:
|
||||
An optional string name to identify the material in summary output
|
||||
files. This string is limited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: ""
|
||||
|
||||
:density:
|
||||
An element with attributes/sub-elements called ``value`` and ``units``. The
|
||||
``value`` attribute is the numeric value of the density while the ``units``
|
||||
|
|
@ -959,15 +1188,18 @@ post-collision energy, and an arbitrary structured mesh.
|
|||
The three valid elements in the tallies.xml file are ``<tally>``, ``<mesh>``,
|
||||
and ``<assume_separate>``.
|
||||
|
||||
.. _tally:
|
||||
|
||||
``<tally>`` Element
|
||||
-------------------
|
||||
|
||||
The ``<tally>`` element accepts the following sub-elements:
|
||||
|
||||
:label:
|
||||
This is an optional sub-element specifying the name of this tally to be used
|
||||
for output purposes. This string is limited to 52 characters for formatting
|
||||
purposes.
|
||||
:name:
|
||||
An optional string name to identify the tally in summary output
|
||||
files. This string is limited to 52 characters for formatting purposes.
|
||||
|
||||
*Default*: ""
|
||||
|
||||
:filter:
|
||||
Specify a filter that restricts contributions to the tally to particles
|
||||
|
|
@ -981,11 +1213,13 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
The ``filter`` element has the following attributes/sub-elements:
|
||||
|
||||
:type:
|
||||
The type of the filter. Accepted options are "cell", "cellborn", "material",
|
||||
"universe", "energy", "energyout", and "mesh".
|
||||
The type of the filter. Accepted options are "cell", "cellborn",
|
||||
"material", "universe", "energy", "energyout", "mesh", and
|
||||
"distribcell".
|
||||
|
||||
:bins:
|
||||
For each filter type, the corresponding ``bins`` entry is given as follows:
|
||||
For each filter type, the corresponding ``bins`` entry is given as
|
||||
follows:
|
||||
|
||||
:cell:
|
||||
A list of cells in which the tally should be accumulated.
|
||||
|
|
@ -1020,6 +1254,15 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
:mesh:
|
||||
The ``id`` of a structured mesh to be tallied over.
|
||||
|
||||
:distribcell:
|
||||
The single cell which should be tallied uniquely for all instances.
|
||||
|
||||
.. note::
|
||||
The distribcell filter will take a single cell ID and will tally
|
||||
each unique occurrence of that cell separately. This filter will
|
||||
not accept more than one cell ID. It is not recommended to combine
|
||||
this filter with a cell or mesh filter.
|
||||
|
||||
:nuclides:
|
||||
If specified, the scores listed will be for particular nuclides, not the
|
||||
summation of reactions from all nuclides. The format for nuclides should be
|
||||
|
|
@ -1053,24 +1296,25 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
physical quantities:
|
||||
|
||||
:flux:
|
||||
Total flux
|
||||
Total flux in particle-cm per source particle.
|
||||
|
||||
:total:
|
||||
Total reaction rate
|
||||
Total reaction rate in reactions per source particle.
|
||||
|
||||
:scatter:
|
||||
Total scattering rate. Can also be identified with the ``scatter-0``
|
||||
response type.
|
||||
response type. Units are reactions per source particle.
|
||||
|
||||
:absorption:
|
||||
Total absorption rate. This accounts for all reactions which do not
|
||||
produce secondary neutrons.
|
||||
produce secondary neutrons. Units are reactions per source particle.
|
||||
|
||||
:fission:
|
||||
Total fission rate
|
||||
Total fission rate in reactions per source particle.
|
||||
|
||||
:nu-fission:
|
||||
Total production of neutrons due to fission
|
||||
Total production of neutrons due to fission. Units are neutrons produced
|
||||
per source neutron.
|
||||
|
||||
:kappa-fission:
|
||||
The recoverable energy production rate due to fission. The recoverable
|
||||
|
|
@ -1079,51 +1323,55 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
total energies, and the total energy released by the delayed :math:`\beta`
|
||||
particles. The neutrino energy does not contribute to this response. The
|
||||
prompt and delayed :math:`\gamma`-rays are assumed to deposit their energy
|
||||
locally.
|
||||
locally. Units are MeV per source particle.
|
||||
|
||||
:scatter-N:
|
||||
Tally the N\ :sup:`th` \ scattering moment, where N is the Legendre
|
||||
expansion order of the change in particle angle :math:`\left(\mu\right)`.
|
||||
N must be between 0 and 10. As an example, tallying the
|
||||
2\ :sup:`nd` \ scattering moment would be specified as
|
||||
``<scores> scatter-2 </scores>``.
|
||||
N must be between 0 and 10. As an example, tallying the 2\ :sup:`nd` \
|
||||
scattering moment would be specified as ``<scores> scatter-2
|
||||
</scores>``. Units are reactions per source particle.
|
||||
|
||||
:scatter-PN:
|
||||
Tally all of the scattering moments from order 0 to N, where N is the
|
||||
Legendre expansion order of the change in particle angle :math:`\left(\mu\right)`.
|
||||
That is, ``scatter-P1`` is equivalent to requesting tallies of
|
||||
``scatter-0`` and ``scatter-1``. Like for ``scatter-N``,
|
||||
N must be between 0 and 10. As an example, tallying up to the
|
||||
2\ :sup:`nd` \ scattering moment would be specified as
|
||||
``<scores> scatter-P2 </scores>``.
|
||||
Legendre expansion order of the change in particle angle
|
||||
:math:`\left(\mu\right)`. That is, ``scatter-P1`` is equivalent to
|
||||
requesting tallies of ``scatter-0`` and ``scatter-1``. Like for
|
||||
``scatter-N``, N must be between 0 and 10. As an example, tallying up to
|
||||
the 2\ :sup:`nd` \ scattering moment would be specified as ``<scores>
|
||||
scatter-P2 </scores>``. Units are reactions per source particle.
|
||||
|
||||
:scatter-YN:
|
||||
``scatter-YN`` is similar to ``scatter-PN`` except an additional
|
||||
expansion is performed for the incoming particle direction
|
||||
:math:`\left(\Omega\right)` using the real spherical harmonics. This is useful
|
||||
for performing angular flux moment weighting of the scattering moments.
|
||||
Like ``scatter-PN``, ``scatter-YN`` will tally all of the moments from
|
||||
order 0 to N; N again must be between 0 and 10.
|
||||
``scatter-YN`` is similar to ``scatter-PN`` except an additional expansion
|
||||
is performed for the incoming particle direction
|
||||
:math:`\left(\Omega\right)` using the real spherical harmonics. This is
|
||||
useful for performing angular flux moment weighting of the scattering
|
||||
moments. Like ``scatter-PN``, ``scatter-YN`` will tally all of the moments
|
||||
from order 0 to N; N again must be between 0 and 10. Units are reactions
|
||||
per source particle.
|
||||
|
||||
:nu-scatter, nu-scatter-N, nu-scatter-PN, nu-scatter-YN:
|
||||
These scores are similar in functionality to their ``scatter*``
|
||||
equivalents except the total production of neutrons due to
|
||||
scattering is scored vice simply the scattering rate. This accounts for
|
||||
multiplicity from (n,2n), (n,3n), and (n,4n) reactions.
|
||||
equivalents except the total production of neutrons due to scattering is
|
||||
scored vice simply the scattering rate. This accounts for multiplicity
|
||||
from (n,2n), (n,3n), and (n,4n) reactions. Units are neutrons produced per
|
||||
source particle.
|
||||
|
||||
:flux-YN:
|
||||
Spherical harmonic expansion of the direction of motion
|
||||
:math:`\left(\Omega\right)` of the total flux. This score will tally
|
||||
all of the harmonic moments of order 0 to N. N must be between 0 and 10.
|
||||
:math:`\left(\Omega\right)` of the total flux. This score will tally all
|
||||
of the harmonic moments of order 0 to N. N must be between 0
|
||||
and 10. Units are particle-cm per source particle.
|
||||
|
||||
:total-YN:
|
||||
The total reaction rate expanded via spherical harmonics about the
|
||||
direction of motion of the neutron, :math:`\Omega`.
|
||||
This score will tally all of the harmonic moments of order 0 to N. N must
|
||||
be between 0 and 10.
|
||||
be between 0 and 10. Units are reactions per source particle.
|
||||
|
||||
:current:
|
||||
Partial currents on the boundaries of each cell in a mesh.
|
||||
Partial currents on the boundaries of each cell in a mesh. Units are
|
||||
particles per source particle.
|
||||
|
||||
.. note::
|
||||
This score can only be used if a mesh filter has been
|
||||
|
|
@ -1131,7 +1379,41 @@ The ``<tally>`` element accepts the following sub-elements:
|
|||
other score.
|
||||
|
||||
:events:
|
||||
Number of scoring events
|
||||
Number of scoring events. Units are events per source particle.
|
||||
|
||||
:trigger:
|
||||
Precision trigger applied to all filter bins and nuclides for this tally.
|
||||
It must specify the trigger's type, threshold and scores to which it will
|
||||
be applied. It has the following attributes/sub-elements:
|
||||
|
||||
:type:
|
||||
The type of the trigger. Accepted options are "variance", "std_dev",
|
||||
and "rel_err".
|
||||
|
||||
:variance:
|
||||
Variance of the batch mean :math:`\sigma^2`
|
||||
|
||||
:std_dev:
|
||||
Standard deviation of the batch mean :math:`\sigma`
|
||||
|
||||
:rel_err:
|
||||
Relative error of the batch mean :math:`\frac{\sigma}{\mu}`
|
||||
|
||||
*Default*: None
|
||||
|
||||
:threshold:
|
||||
The precision trigger's convergence criterion for tallied values.
|
||||
|
||||
*Default*: None
|
||||
|
||||
:scores:
|
||||
The score(s) in this tally to which the trigger should be applied.
|
||||
|
||||
.. note:: The ``scores`` in ``trigger`` must have been defined in
|
||||
``scores`` in ``tally``. An optional "all" may be used to
|
||||
select all scores in this tally.
|
||||
|
||||
*Default*: "all"
|
||||
|
||||
``<mesh>`` Element
|
||||
------------------
|
||||
|
|
@ -1171,8 +1453,8 @@ overhead. The effect of assuming all tallies are spatially separate is that once
|
|||
one tally is scored to, the same event is assumed not to score to any other
|
||||
tallies. This element should be followed by "true" or "false".
|
||||
|
||||
.. warning:: If used incorrectly, the assumption that all tallies are spatially
|
||||
separate can lead to incorrect results.
|
||||
.. warning:: If used incorrectly, the assumption that all tallies are
|
||||
spatially separate can lead to incorrect results.
|
||||
|
||||
*Default*: false
|
||||
|
||||
|
|
@ -1188,8 +1470,10 @@ element of the plots.xml is simply ``<plots>`` and any number output plots can
|
|||
be defined with ``<plot>`` sub-elements. Two plot types are currently
|
||||
implemented in openMC:
|
||||
|
||||
* ``slice`` 2D pixel plot along one of the major axes. Produces a PPM image file.
|
||||
* ``voxel`` 3D voxel data dump. Produces a binary file containing voxel xyz position and cell or material id.
|
||||
* ``slice`` 2D pixel plot along one of the major axes. Produces a PPM image
|
||||
file.
|
||||
* ``voxel`` 3D voxel data dump. Produces a binary file containing voxel xyz
|
||||
position and cell or material id.
|
||||
|
||||
|
||||
``<plot>`` Element
|
||||
|
|
@ -1373,9 +1657,9 @@ attributes or sub-elements. These are not used in "voxel" plots:
|
|||
CMFD Specification -- cmfd.xml
|
||||
------------------------------
|
||||
|
||||
Coarse mesh finite difference acceleration method has been implemented in OpenMC.
|
||||
Currently, it allows users to accelerate fission source convergence during
|
||||
inactive neutron batches. To run CMFD, the ``<run_cmfd>`` element in
|
||||
Coarse mesh finite difference acceleration method has been implemented in
|
||||
OpenMC. Currently, it allows users to accelerate fission source convergence
|
||||
during inactive neutron batches. To run CMFD, the ``<run_cmfd>`` element in
|
||||
``settings.xml`` should be set to "true".
|
||||
|
||||
``<begin>`` Element
|
||||
|
|
@ -1385,22 +1669,6 @@ The ``<begin>`` element controls what batch CMFD calculations should begin.
|
|||
|
||||
*Default*: 1
|
||||
|
||||
``<display>`` Element
|
||||
---------------------
|
||||
|
||||
The ``<display>`` element sets one additional CMFD output column. Options are:
|
||||
|
||||
* "balance" - prints the RMS [%] of the resdiual from the neutron balance equation
|
||||
on CMFD tallies.
|
||||
* "dominance" - prints the estimated dominance ratio from the CMFD iterations.
|
||||
**This will only work for power iteration eigensolver**.
|
||||
* "entropy" - prints the *entropy* of the CMFD predicted fission source.
|
||||
**Can only be used if OpenMC entropy is active as well**.
|
||||
* "source" - prints the RMS [%] between the OpenMC fission source and CMFD
|
||||
fission source.
|
||||
|
||||
*Default*: balance
|
||||
|
||||
``<dhat_reset>`` Element
|
||||
------------------------
|
||||
|
||||
|
|
@ -1410,6 +1678,22 @@ It can be turned on with "true" and off with "false".
|
|||
|
||||
*Default*: false
|
||||
|
||||
``<display>`` Element
|
||||
---------------------
|
||||
|
||||
The ``<display>`` element sets one additional CMFD output column. Options are:
|
||||
|
||||
* "balance" - prints the RMS [%] of the resdiual from the neutron balance
|
||||
equation on CMFD tallies.
|
||||
* "dominance" - prints the estimated dominance ratio from the CMFD iterations.
|
||||
**This will only work for power iteration eigensolver**.
|
||||
* "entropy" - prints the *entropy* of the CMFD predicted fission source.
|
||||
**Can only be used if OpenMC entropy is active as well**.
|
||||
* "source" - prints the RMS [%] between the OpenMC fission source and CMFD
|
||||
fission source.
|
||||
|
||||
*Default*: balance
|
||||
|
||||
``<downscatter>`` Element
|
||||
-------------------------
|
||||
|
||||
|
|
@ -1434,20 +1718,10 @@ It can be turned on with "true" and off with "false".
|
|||
The ``<gauss_seidel_tolerance>`` element specifies two parameters. The first is
|
||||
the absolute inner tolerance for Gauss-Seidel iterations when performing CMFD
|
||||
and the second is the relative inner tolerance for Gauss-Seidel iterations
|
||||
for CMFD calculations. It is only used in the standalone CMFD power iteration
|
||||
solver and not when PETSc is active.
|
||||
for CMFD calculations.
|
||||
|
||||
*Default*: 1.e-10 1.e-5
|
||||
|
||||
``<ksp_monitor>`` Element
|
||||
-------------------------
|
||||
|
||||
The ``<ksp_monitor>`` element is used to view the convergence of linear GMRES
|
||||
iterations in PETSc. This option can be turned on with "true" and turned off
|
||||
with "false".
|
||||
|
||||
*Default*: false
|
||||
|
||||
``<ktol>`` Element
|
||||
--------------------
|
||||
|
||||
|
|
@ -1463,11 +1737,11 @@ The CMFD mesh is a structured Cartesian mesh. This element has the following
|
|||
attributes/sub-elements:
|
||||
|
||||
:lower_left:
|
||||
The lower-left corner of the structured mesh. If only two coordinate are
|
||||
The lower-left corner of the structured mesh. If only two coordinates are
|
||||
given, it is assumed that the mesh is an x-y mesh.
|
||||
|
||||
:upper_right:
|
||||
The upper-right corner of the structrued mesh. If only two coordinate are
|
||||
The upper-right corner of the structrued mesh. If only two coordinates are
|
||||
given, it is assumed that the mesh is an x-y mesh.
|
||||
|
||||
:dimension:
|
||||
|
|
@ -1490,7 +1764,7 @@ attributes/sub-elements:
|
|||
|
||||
:map:
|
||||
An optional acceleration map can be specified to overlay on the coarse
|
||||
mesh spatial grid. If this option is used a ``1`` is used for a
|
||||
mesh spatial grid. If this option is used, a ``1`` is used for a
|
||||
non-accelerated region and a ``2`` is used for an accelerated region.
|
||||
For a simple 4x4 coarse mesh with a 2x2 fuel lattice surrounded by
|
||||
reflector, the map is:
|
||||
|
|
@ -1527,8 +1801,8 @@ not impact the calculation.
|
|||
``<power_monitor>`` Element
|
||||
---------------------------
|
||||
|
||||
The ``<power_monitor>`` element is used to view the convergence of power iteration.
|
||||
This option can be turned on with "true" and turned off with "false".
|
||||
The ``<power_monitor>`` element is used to view the convergence of power
|
||||
iteration. This option can be turned on with "true" and turned off with "false".
|
||||
|
||||
*Default*: false
|
||||
|
||||
|
|
@ -1536,26 +1810,16 @@ This option can be turned on with "true" and turned off with "false".
|
|||
-------------------------
|
||||
|
||||
The ``<run_adjoint>`` element can be turned on with "true" to have an adjoint
|
||||
calculation be performed on the last batch when CMFD is active. OpenMC should be
|
||||
compiled with PETSc when using this option.
|
||||
calculation be performed on the last batch when CMFD is active.
|
||||
|
||||
*Default*: false
|
||||
|
||||
``<solver>`` Element
|
||||
--------------------
|
||||
|
||||
The ``<solver>`` element controls whether the CMFD eigenproblem is solved with
|
||||
standard power iteration or nonlinear Jacobian-free Newton Krylov (JFNK).
|
||||
By setting "power", power iteration is used and by setting "jfnk", JFNK is used.
|
||||
|
||||
*Default*: power
|
||||
|
||||
``<shift>`` Element
|
||||
--------------------
|
||||
|
||||
The ``<shfit>`` element specifies an optional Wielandt shift parameter for
|
||||
accelerating power iterations. It can only be used when PETSc is not active.
|
||||
It is by default very large so the impact of the shift is effectively zero.
|
||||
The ``<shift>`` element specifies an optional Wielandt shift parameter for
|
||||
accelerating power iterations. It is by default very large so the impact of the
|
||||
shift is effectively zero.
|
||||
|
||||
*Default*: 1e6
|
||||
|
||||
|
|
@ -1564,10 +1828,9 @@ It is by default very large so the impact of the shift is effectively zero.
|
|||
|
||||
The ``<spectral>`` element specifies an optional spectral radius that can be set to
|
||||
accelerate the convergence of Gauss-Seidel iterations during CMFD power iteration
|
||||
solve. Note this is only used in the standalone CMFD solver and does not affect
|
||||
the calculation when PETSc is active.
|
||||
solve.
|
||||
|
||||
*Default*: power
|
||||
*Default*: 0.0
|
||||
|
||||
``<stol>`` Element
|
||||
------------------
|
||||
|
|
@ -1588,10 +1851,9 @@ should be reset.
|
|||
``<write_matrices>`` Element
|
||||
----------------------------
|
||||
|
||||
The ``<write_matrices>`` element is used to view the PETSc sparse matrices
|
||||
created when solving CMFD equations. These binary output files can be imported
|
||||
into MATLAB using PETSc-MATLAB utilities. This option can be
|
||||
turned on with "true" and off with "false".
|
||||
The ``<write_matrices>`` element is used to write the sparse matrices created
|
||||
when solving CMFD equations. This option can be turned on with "true" and off
|
||||
with "false".
|
||||
|
||||
*Default*: false
|
||||
|
||||
|
|
|
|||
|
|
@ -86,21 +86,6 @@ Prerequisites
|
|||
|
||||
You may omit ``--enable-parallel`` if you want to compile HDF5_ in serial.
|
||||
|
||||
* PETSc_ for CMFD acceleration
|
||||
|
||||
To enable CMFD acceleration, you will need to have PETSc_ (3.4.2 or higher)
|
||||
installed on your computer. The installed version will need to have been
|
||||
compiled with the same compiler you intend to compile OpenMC with. OpenMC
|
||||
requires PETSc_ to be configured with Fortran datatypes. An example of
|
||||
configuring PETSc_ is listed below::
|
||||
|
||||
./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
|
||||
explicitly (e.g., Intel MKL library).
|
||||
|
||||
* git_ version control software for obtaining source code
|
||||
|
||||
.. _gfortran: http://gcc.gnu.org/wiki/GFortran
|
||||
|
|
@ -108,7 +93,6 @@ Prerequisites
|
|||
.. _OpenMPI: http://www.open-mpi.org
|
||||
.. _MPICH: http://www.mpich.org
|
||||
.. _HDF5: http://www.hdfgroup.org/HDF5/
|
||||
.. _PETSc: http://www.mcs.anl.gov/petsc/
|
||||
|
||||
Obtaining the Source
|
||||
--------------------
|
||||
|
|
@ -123,12 +107,12 @@ with GitHub since this involves setting up ssh_ keys. With git installed and
|
|||
setup, the following command will download the full source code from the GitHub
|
||||
repository::
|
||||
|
||||
git clone git://github.com/mit-crpg/openmc.git
|
||||
git clone https://github.com/mit-crpg/openmc.git
|
||||
|
||||
By default, the cloned repository will be set to the development branch. To
|
||||
switch to the source of the latest stable release, run the following commands::
|
||||
|
||||
cd openmc/src
|
||||
cd openmc
|
||||
git checkout master
|
||||
|
||||
.. _GitHub: https://github.com/mit-crpg/openmc
|
||||
|
|
@ -139,23 +123,22 @@ Build Configuration
|
|||
-------------------
|
||||
|
||||
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
|
||||
to determine the compiler, whether optional packages (MPI, HDF5) 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
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mkdir src/build
|
||||
cd src/build
|
||||
mkdir build && cd 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.
|
||||
directory. The Makefile in the top-level directory will automatically perform an
|
||||
out-of-source build with default options.
|
||||
|
||||
CMakeLists.txt Options
|
||||
++++++++++++++++++++++
|
||||
|
|
@ -177,16 +160,21 @@ openmp
|
|||
Enables shared-memory parallelism using the OpenMP API. The Fortran compiler
|
||||
being used must support OpenMP.
|
||||
|
||||
petsc
|
||||
Enables PETSc for use in CMFD acceleration. The PETSC_DIR variable should be
|
||||
set to the base directory of the PETSc installation.
|
||||
coverage
|
||||
Compile and link code instrumented for coverage analysis. This is typically
|
||||
used in conjunction with gcov_.
|
||||
|
||||
maxcoord
|
||||
Maximum number of nested coordinate levels in geometry. Defaults to 10.
|
||||
|
||||
To set any of these options (e.g. turning on debug mode), the following form
|
||||
should be used:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
cmake -Ddebug=on /path/to/src
|
||||
cmake -Ddebug=on /path/to/openmc
|
||||
|
||||
.. _gcov: https://gcc.gnu.org/onlinedocs/gcc/Gcov.html
|
||||
|
||||
Compiling with MPI
|
||||
++++++++++++++++++
|
||||
|
|
@ -197,14 +185,14 @@ the MPI Fortran wrapper. For example, in a bash shell:
|
|||
.. code-block:: sh
|
||||
|
||||
export FC=mpif90
|
||||
cmake /path/to/src
|
||||
cmake /path/to/openmc
|
||||
|
||||
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
|
||||
FC=mpif90 cmake /path/to/openmc
|
||||
|
||||
Compiling with HDF5
|
||||
+++++++++++++++++++
|
||||
|
|
@ -215,14 +203,14 @@ the HDF5 Fortran wrapper. For example, in a bash shell:
|
|||
.. code-block:: sh
|
||||
|
||||
export FC=h5fc
|
||||
cmake /path/to/src
|
||||
cmake /path/to/openmc
|
||||
|
||||
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
|
||||
FC=h5fc cmake /path/to/openmc
|
||||
|
||||
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
|
||||
|
|
@ -236,8 +224,7 @@ the root directory of the source code:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
mkdir src/build
|
||||
cd src/build
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
make install
|
||||
|
|
@ -287,7 +274,8 @@ the source code root directory:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
cd src
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
|
||||
This will build an executable named ``openmc``.
|
||||
|
|
@ -313,7 +301,6 @@ in the root directory of the OpenMC distribution:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
cd src
|
||||
make
|
||||
|
||||
This will build an executable named ``openmc``.
|
||||
|
|
@ -332,7 +319,6 @@ the source directory and run the following:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
cd src
|
||||
make test
|
||||
|
||||
If you want more options for testing you can use ctest_ command. For example,
|
||||
|
|
@ -340,7 +326,7 @@ if we wanted to run only the plot tests with 4 processors, we run:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
cd src/build
|
||||
cd build
|
||||
ctest -j 4 -R plot
|
||||
|
||||
If you want to run the full test suite with different build options please
|
||||
|
|
@ -385,12 +371,12 @@ the following steps must be taken:
|
|||
2. In the root directory, a file named ``xsdir``, or some variant thereof,
|
||||
should be present. This file contains a listing of all the cross sections and
|
||||
is used by MCNP. This file should be converted to a ``cross_sections.xml``
|
||||
file for use with OpenMC. A Python script is provided in the OpenMC
|
||||
distribution for this purpose:
|
||||
file for use with OpenMC. A utility is provided in the OpenMC distribution
|
||||
for this purpose:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
openmc/src/utils/convert_xsdir.py xsdir31 cross_sections.xml
|
||||
openmc/scripts/openmc-xsdir-to-xml xsdir31 cross_sections.xml
|
||||
|
||||
3. In the converted ``cross_sections.xml`` file, change the contents of the
|
||||
<directory> element to the absolute path of the directory containing the
|
||||
|
|
@ -436,9 +422,8 @@ Running OpenMC
|
|||
Once you have a model built (see :ref:`usersguide_input`), you can either run
|
||||
the openmc executable directly from the directory containing your XML input
|
||||
files, or you can specify as a command-line argument the directory containing
|
||||
the XML input files. For example, if the path of your OpenMC executable is
|
||||
``/home/username/openmc/src/openmc`` and your XML input files are in the
|
||||
directory ``/home/username/somemodel/``, one way to run the simulation would be:
|
||||
the XML input files. For example, if your XML input files are in the directory
|
||||
``/home/username/somemodel/``, one way to run the simulation would be:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Most of these are easily obtainable in Ubuntu through the package manager, or
|
|||
are easily installed with distutils.
|
||||
|
||||
.. [1] Required for tally data extraction from statepoints with statepoint.py
|
||||
.. [2] Required only if reading HDF5 statepoint files.
|
||||
.. [2] Required only if reading HDF5 statepoint files.
|
||||
.. [3] Optional for plotting utilities
|
||||
|
||||
----------------------
|
||||
|
|
@ -265,18 +265,18 @@ two heatmaps in the previous figure.
|
|||
.. code-block:: python
|
||||
|
||||
#!/usr/bin/env python
|
||||
|
||||
|
||||
import os
|
||||
|
||||
|
||||
import statepoint
|
||||
|
||||
|
||||
# load and parse the statepoint file
|
||||
sp = statepoint.StatePoint('statepoint.300.binary')
|
||||
sp.read_results()
|
||||
|
||||
|
||||
tallyid = 0 # This is tally 1
|
||||
score = 0 # This corresponds to flux (see tally.scores)
|
||||
|
||||
|
||||
# get mesh dimensions
|
||||
meshid = sp.tallies[tallyid].filters['mesh'].bins[0]
|
||||
for i,m in enumerate(sp.meshes):
|
||||
|
|
@ -299,7 +299,7 @@ two heatmaps in the previous figure.
|
|||
[('mesh',(x,y,z)),('energyin',1)],
|
||||
score)
|
||||
fast[(x,y,z)] = val
|
||||
|
||||
|
||||
# sum up the axial values and write datafile for gnuplot
|
||||
with open('meshdata.dat','w') as fh:
|
||||
for x in range(1,nx+1):
|
||||
|
|
@ -336,7 +336,7 @@ Plotting in 3D
|
|||
As with 3D plots of the geometry, meshtally data needs to be put into a standard
|
||||
format for viewing. The utility statepoint_3d.py is provided to accomplish this
|
||||
for both VTK and SILO. By default statepoint_3d.py processes a statepoint into a
|
||||
3D file with all mesh tallies and filter/score combinations,
|
||||
3D file with all mesh tallies and filter/score combinations,
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
|
|
@ -348,8 +348,8 @@ certain data arrays in order to keep file sizes down.
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
<openmc_root>/src/utils/statepoint_3d.py <statepoint_file> --tallies 2,4 --scores 4.1,4.3 -o output.silo
|
||||
<openmc_root>/src/utils/statepoint_3d.py <statepoint_file> --filters 2.energyin.1 --vtk -o output.vtm
|
||||
statepoint_3d.py <statepoint_file> --tallies 2,4 --scores 4.1,4.3 -o output.silo
|
||||
statepoint_3d.py <statepoint_file> --filters 2.energyin.1 --vtk -o output.vtm
|
||||
|
||||
All available options for specifying a subset of tallies, scores, and filters
|
||||
can be listed with the ``--list`` or ``-l`` command line options.
|
||||
|
|
@ -358,7 +358,7 @@ can be listed with the ``--list`` or ``-l`` command line options.
|
|||
VTK needs to use a multi-block dataset, which stores each mesh piece
|
||||
in a different file in a subfolder. All meshes can be loaded at once
|
||||
with the main VTM file, or each VTI file in the subfolder can be
|
||||
loaded individually.
|
||||
loaded individually.
|
||||
|
||||
Alternatively, the user can write their own Python script to manipulate the data
|
||||
appropriately before insertion into a SILO or VTK file. For instance, if the
|
||||
|
|
@ -396,7 +396,7 @@ and the equivalent VTK file with:
|
|||
grid.SetOrigin(*mesh.lower_left)
|
||||
grid.SetSpacing(*mesh.width)
|
||||
|
||||
# vtk cell arrays have x on the inners, so we need to reorder the data
|
||||
# vtk cell arrays have x on the inners, so we need to reorder the data
|
||||
idata = {}
|
||||
for x in range(nx):
|
||||
for y in range(ny):
|
||||
|
|
@ -416,7 +416,7 @@ and the equivalent VTK file with:
|
|||
|
||||
grid.GetCellData().AddArray(vtkfastdata)
|
||||
grid.GetCellData().AddArray(vtkthermaldata)
|
||||
|
||||
|
||||
writer = vtk.vtkXMLImageDataWriter()
|
||||
writer.SetInput(grid)
|
||||
writer.SetFileName('tally.vti')
|
||||
|
|
@ -486,16 +486,16 @@ example of an interactive ipython session using the statepoint.py Python module:
|
|||
.. code-block:: python
|
||||
|
||||
In [1]: import statepoint
|
||||
|
||||
|
||||
In [2]: sp = statepoint.StatePoint('statepoint.100.h5')
|
||||
|
||||
|
||||
In [3]: sp.read_source()
|
||||
|
||||
|
||||
In [4]: len(sp.source)
|
||||
Out[4]: 1000
|
||||
|
||||
|
||||
In [5]: sp.source[0:10]
|
||||
Out[5]:
|
||||
Out[5]:
|
||||
[<SourceSite: xyz=[ 2.21980946 -8.92686048 87.93720485] at E=0.932923263566>,
|
||||
<SourceSite: xyz=[ 2.21980946 -8.92686048 87.93720485] at E=0.349240220512>,
|
||||
<SourceSite: xyz=[-31.21542213 -30.26762771 72.10845757] at E=3.75843584486>,
|
||||
|
|
@ -506,17 +506,17 @@ example of an interactive ipython session using the statepoint.py Python module:
|
|||
<SourceSite: xyz=[ -32.80427668 -15.49316628 125.26301151] at E=1.61907104162>,
|
||||
<SourceSite: xyz=[ 53.20376026 -15.38643708 120.58071044] at E=3.33962024907>,
|
||||
<SourceSite: xyz=[ 53.20376026 -15.38643708 120.58071044] at E=1.90185680329>]
|
||||
|
||||
|
||||
In [6]: site = sp.source[0]
|
||||
|
||||
|
||||
In [7]: site.weight
|
||||
Out[7]: 1.0
|
||||
|
||||
|
||||
In [8]: site.xyz
|
||||
Out[8]: array([ 2.21980946, -8.92686048, 87.93720485])
|
||||
|
||||
|
||||
In [9]: site.uvw
|
||||
Out[9]: array([ 0.06740523, 0.50612814, 0.85982024])
|
||||
|
||||
|
||||
In [10]: site.E
|
||||
Out[10]: 0.93292326356564159
|
||||
|
|
|
|||
68
docs/sphinxext/LICENSE
Normal file
68
docs/sphinxext/LICENSE
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
The file notebook_sphinxext.py was derived from code in PyNE and yt.
|
||||
|
||||
PyNE has the following license:
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright 2011-2015, the PyNE Development Team. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are
|
||||
permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
of conditions and the following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE PYNE DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those of the
|
||||
authors and should not be interpreted as representing official policies, either expressed
|
||||
or implied, of the stakeholders of the PyNE project or the employers of PyNE developers.
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
yt has the following license:
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
yt is licensed under the terms of the Modified BSD License (also known as New
|
||||
or Revised BSD), as follows:
|
||||
|
||||
Copyright (c) 2013-, yt Development Team
|
||||
Copyright (c) 2006-2013, Matthew Turk <matthewturk@gmail.com>
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
|
||||
Neither the name of the yt Development Team nor the names of its
|
||||
contributors may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-------------------------------------------------------------------------------
|
||||
120
docs/sphinxext/notebook_sphinxext.py
Normal file
120
docs/sphinxext/notebook_sphinxext.py
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
import sys
|
||||
import os.path
|
||||
import re
|
||||
import time
|
||||
from docutils import io, nodes, statemachine, utils
|
||||
try:
|
||||
from docutils.utils.error_reporting import ErrorString # the new way
|
||||
except ImportError:
|
||||
from docutils.error_reporting import ErrorString # the old way
|
||||
from docutils.parsers.rst import Directive, convert_directive_function
|
||||
from docutils.parsers.rst import directives, roles, states
|
||||
from docutils.parsers.rst.roles import set_classes
|
||||
from docutils.transforms import misc
|
||||
|
||||
try:
|
||||
from IPython.nbconver.exporters import html
|
||||
except ImportError:
|
||||
from IPython.nbconvert import html
|
||||
|
||||
|
||||
class Notebook(Directive):
|
||||
"""Use nbconvert to insert a notebook into the environment.
|
||||
This is based on the Raw directive in docutils
|
||||
"""
|
||||
required_arguments = 1
|
||||
optional_arguments = 0
|
||||
final_argument_whitespace = True
|
||||
option_spec = {}
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
# check if raw html is supported
|
||||
if not self.state.document.settings.raw_enabled:
|
||||
raise self.warning('"%s" directive disabled.' % self.name)
|
||||
|
||||
# set up encoding
|
||||
attributes = {'format': 'html'}
|
||||
encoding = self.options.get(
|
||||
'encoding', self.state.document.settings.input_encoding)
|
||||
e_handler = self.state.document.settings.input_encoding_error_handler
|
||||
|
||||
# get path to notebook
|
||||
source_dir = os.path.dirname(
|
||||
os.path.abspath(self.state.document.current_source))
|
||||
nb_path = os.path.normpath(os.path.join(source_dir,
|
||||
self.arguments[0]))
|
||||
nb_path = utils.relative_path(None, nb_path)
|
||||
|
||||
# convert notebook to html
|
||||
exporter = html.HTMLExporter(template_file='full')
|
||||
output, resources = exporter.from_filename(nb_path)
|
||||
header = output.split('<head>', 1)[1].split('</head>',1)[0]
|
||||
body = output.split('<body>', 1)[1].split('</body>',1)[0]
|
||||
|
||||
# add HTML5 scoped attribute to header style tags
|
||||
header = header.replace('<style', '<style scoped="scoped"')
|
||||
header = header.replace('body {\n overflow: visible;\n padding: 8px;\n}\n',
|
||||
'')
|
||||
header = header.replace("code,pre{", "code{")
|
||||
|
||||
# Filter out styles that conflict with the sphinx theme.
|
||||
filter_strings = [
|
||||
'navbar',
|
||||
'body{',
|
||||
'alert{',
|
||||
'uneditable-input{',
|
||||
'collapse{',
|
||||
]
|
||||
|
||||
filter_strings.extend(['h%s{' % (i+1) for i in range(6)])
|
||||
|
||||
line_begin = [
|
||||
'pre{',
|
||||
'p{margin'
|
||||
]
|
||||
|
||||
filterfunc = lambda x: not any([s in x for s in filter_strings])
|
||||
header_lines = filter(filterfunc, header.split('\n'))
|
||||
|
||||
filterfunc = lambda x: not any([x.startswith(s) for s in line_begin])
|
||||
header_lines = filter(filterfunc, header_lines)
|
||||
|
||||
header = '\n'.join(header_lines)
|
||||
|
||||
# concatenate raw html lines
|
||||
lines = ['<div class="ipynotebook">']
|
||||
lines.append(header)
|
||||
lines.append(body)
|
||||
lines.append('</div>')
|
||||
text = '\n'.join(lines)
|
||||
|
||||
# add dependency
|
||||
self.state.document.settings.record_dependencies.add(nb_path)
|
||||
attributes['source'] = nb_path
|
||||
|
||||
# create notebook node
|
||||
nb_node = notebook('', text, **attributes)
|
||||
(nb_node.source, nb_node.line) = \
|
||||
self.state_machine.get_source_and_line(self.lineno)
|
||||
|
||||
return [nb_node]
|
||||
|
||||
|
||||
class notebook(nodes.raw):
|
||||
pass
|
||||
|
||||
|
||||
def visit_notebook_node(self, node):
|
||||
self.visit_raw(node)
|
||||
|
||||
|
||||
def depart_notebook_node(self, node):
|
||||
self.depart_raw(node)
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_node(notebook,
|
||||
html=(visit_notebook_node, depart_notebook_node))
|
||||
|
||||
app.add_directive('notebook', Notebook)
|
||||
141
examples/python/basic/build-xml.py
Normal file
141
examples/python/basic/build-xml.py
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 15
|
||||
inactive = 5
|
||||
particles = 10000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H-1')
|
||||
o16 = openmc.Nuclide('O-16')
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
moderator = openmc.Material(material_id=41, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_s_alpha_beta('HH2O', '71t')
|
||||
|
||||
fuel = openmc.Material(material_id=40, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
|
||||
# Instantiate a MaterialsFile, register all Materials, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_materials([moderator, fuel])
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate ZCylinder surfaces
|
||||
surf1 = openmc.ZCylinder(surface_id=1, x0=0, y0=0, R=7, name='surf 1')
|
||||
surf2 = openmc.ZCylinder(surface_id=2, x0=0, y0=0, R=9, name='surf 2')
|
||||
surf3 = openmc.ZCylinder(surface_id=3, x0=0, y0=0, R=11, name='surf 3')
|
||||
surf3.boundary_type = 'vacuum'
|
||||
|
||||
# Instantiate Cells
|
||||
cell1 = openmc.Cell(cell_id=1, name='cell 1')
|
||||
cell2 = openmc.Cell(cell_id=100, name='cell 2')
|
||||
cell3 = openmc.Cell(cell_id=101, name='cell 3')
|
||||
cell4 = openmc.Cell(cell_id=2, name='cell 4')
|
||||
|
||||
# Register Surfaces with Cells
|
||||
cell1.add_surface(surface=surf2, halfspace=-1)
|
||||
cell2.add_surface(surface=surf1, halfspace=-1)
|
||||
cell3.add_surface(surface=surf1, halfspace=+1)
|
||||
cell4.add_surface(surface=surf2, halfspace=+1)
|
||||
cell4.add_surface(surface=surf3, halfspace=-1)
|
||||
|
||||
# Register Materials with Cells
|
||||
cell2.fill = fuel
|
||||
cell3.fill = moderator
|
||||
cell4.fill = moderator
|
||||
|
||||
# Instantiate Universes
|
||||
universe1 = openmc.Universe(universe_id=37)
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
cell1.fill = universe1
|
||||
|
||||
# Register Cells with Universes
|
||||
universe1.add_cells([cell2, cell3])
|
||||
root.add_cells([cell1, cell4])
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-4, -4, -4, 4, 4, 4])
|
||||
settings_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC tallies.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some tally Filters
|
||||
cell_filter = openmc.Filter(type='cell', bins=100)
|
||||
energy_filter = openmc.Filter(type='energy', bins=[0., 20.])
|
||||
energyout_filter = openmc.Filter(type='energyout', bins=[0., 20.])
|
||||
|
||||
# Instantiate the first Tally
|
||||
first_tally = openmc.Tally(tally_id=1, name='first tally')
|
||||
first_tally.add_filter(cell_filter)
|
||||
scores = ['total', 'scatter', 'nu-scatter', \
|
||||
'absorption', 'fission', 'nu-fission']
|
||||
for score in scores:
|
||||
first_tally.add_score(score)
|
||||
|
||||
# Instantiate the second Tally
|
||||
second_tally = openmc.Tally(tally_id=2, name='second tally')
|
||||
second_tally.add_filter(cell_filter)
|
||||
second_tally.add_filter(energy_filter)
|
||||
scores = ['total', 'scatter', 'nu-scatter', \
|
||||
'absorption', 'fission', 'nu-fission']
|
||||
for score in scores:
|
||||
second_tally.add_score(score)
|
||||
|
||||
# Instantiate the third Tally
|
||||
third_tally = openmc.Tally(tally_id=3, name='third tally')
|
||||
third_tally.add_filter(cell_filter)
|
||||
third_tally.add_filter(energy_filter)
|
||||
third_tally.add_filter(energyout_filter)
|
||||
scores = ['scatter', 'nu-scatter', 'nu-fission']
|
||||
for score in scores:
|
||||
third_tally.add_score(score)
|
||||
|
||||
# Instantiate a TalliesFile, register all Tallies, and export to XML
|
||||
tallies_file = openmc.TalliesFile()
|
||||
tallies_file.add_tally(first_tally)
|
||||
tallies_file.add_tally(second_tally)
|
||||
tallies_file.add_tally(third_tally)
|
||||
tallies_file.export_to_xml()
|
||||
176
examples/python/lattice/hexagonal/build-xml.py
Normal file
176
examples/python/lattice/hexagonal/build-xml.py
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 20
|
||||
inactive = 10
|
||||
particles = 10000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H-1')
|
||||
o16 = openmc.Nuclide('O-16')
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
fe56 = openmc.Nuclide('Fe-56')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_s_alpha_beta('HH2O', '71t')
|
||||
|
||||
iron = openmc.Material(material_id=3, name='iron')
|
||||
iron.set_density('g/cc', 7.9)
|
||||
iron.add_nuclide(fe56, 1.)
|
||||
|
||||
# Instantiate a MaterialsFile, register all Materials, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_materials([moderator, fuel, iron])
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate Surfaces
|
||||
left = openmc.XPlane(surface_id=1, x0=-3, name='left')
|
||||
right = openmc.XPlane(surface_id=2, x0=3, name='right')
|
||||
bottom = openmc.YPlane(surface_id=3, y0=-4, name='bottom')
|
||||
top = openmc.YPlane(surface_id=4, y0=4, name='top')
|
||||
fuel_surf = openmc.ZCylinder(surface_id=5, x0=0, y0=0, R=0.4)
|
||||
|
||||
left.boundary_type = 'vacuum'
|
||||
right.boundary_type = 'vacuum'
|
||||
top.boundary_type = 'vacuum'
|
||||
bottom.boundary_type = 'vacuum'
|
||||
|
||||
# Instantiate Cells
|
||||
cell1 = openmc.Cell(cell_id=1, name='Cell 1')
|
||||
cell2 = openmc.Cell(cell_id=101, name='cell 2')
|
||||
cell3 = openmc.Cell(cell_id=102, name='cell 3')
|
||||
cell4 = openmc.Cell(cell_id=500, name='cell 4')
|
||||
cell5 = openmc.Cell(cell_id=600, name='cell 5')
|
||||
cell6 = openmc.Cell(cell_id=601, name='cell 6')
|
||||
|
||||
# Register Surfaces with Cells
|
||||
cell1.add_surface(left, halfspace=+1)
|
||||
cell1.add_surface(right, halfspace=-1)
|
||||
cell1.add_surface(bottom, halfspace=+1)
|
||||
cell1.add_surface(top, halfspace=-1)
|
||||
cell2.add_surface(fuel_surf, halfspace=-1)
|
||||
cell3.add_surface(fuel_surf, halfspace=+1)
|
||||
cell5.add_surface(fuel_surf, halfspace=-1)
|
||||
cell6.add_surface(fuel_surf, halfspace=+1)
|
||||
|
||||
# Register Materials with Cells
|
||||
cell2.fill = fuel
|
||||
cell3.fill = moderator
|
||||
cell4.fill = moderator
|
||||
cell5.fill = iron
|
||||
cell6.fill = moderator
|
||||
|
||||
# Instantiate Universe
|
||||
univ1 = openmc.Universe(universe_id=1)
|
||||
univ2 = openmc.Universe(universe_id=3)
|
||||
univ3 = openmc.Universe(universe_id=4)
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
|
||||
# Register Cells with Universe
|
||||
univ1.add_cells([cell2, cell3])
|
||||
univ2.add_cells([cell4])
|
||||
univ3.add_cells([cell5, cell6])
|
||||
root.add_cell(cell1)
|
||||
|
||||
# Instantiate a Lattice
|
||||
lattice = openmc.HexLattice(lattice_id=5)
|
||||
lattice.center = [0., 0., 0.]
|
||||
lattice.pitch = [1., 2.]
|
||||
lattice.universes = \
|
||||
[ [ [univ2] + [univ3]*11, [univ2] + [univ3]*5, [univ3] ],
|
||||
[ [univ2] + [univ1]*11, [univ2] + [univ1]*5, [univ1] ],
|
||||
[ [univ2] + [univ3]*11, [univ2] + [univ3]*5, [univ3] ] ]
|
||||
lattice.outer = univ2
|
||||
|
||||
# Fill Cell with the Lattice
|
||||
cell1.fill = lattice
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-1, -1, -1, 1, 1, 1])
|
||||
settings_file.keff_trigger = {'type' : 'std_dev', 'threshold' : 5E-4}
|
||||
settings_file.trigger_active = True
|
||||
settings_file.trigger_max_batches = 100
|
||||
settings_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC plots.xml File
|
||||
###############################################################################
|
||||
|
||||
plot_xy = openmc.Plot(plot_id=1)
|
||||
plot_xy.filename = 'plot_xy'
|
||||
plot_xy.origin = [0, 0, 0]
|
||||
plot_xy.width = [6, 6]
|
||||
plot_xy.pixels = [400, 400]
|
||||
plot_xy.color = 'mat'
|
||||
|
||||
plot_yz = openmc.Plot(plot_id=2)
|
||||
plot_yz.filename = 'plot_yz'
|
||||
plot_yz.basis = 'yz'
|
||||
plot_yz.origin = [0, 0, 0]
|
||||
plot_yz.width = [8, 8]
|
||||
plot_yz.pixels = [400, 400]
|
||||
plot_yz.color = 'mat'
|
||||
|
||||
# Instantiate a PlotsFile, add Plot, and export to XML
|
||||
plot_file = openmc.PlotsFile()
|
||||
plot_file.add_plot(plot_xy)
|
||||
plot_file.add_plot(plot_yz)
|
||||
plot_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC tallies.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a distribcell Tally
|
||||
tally = openmc.Tally(tally_id=1)
|
||||
tally.add_filter(openmc.Filter(type='distribcell', bins=[cell2.id]))
|
||||
tally.add_score('total')
|
||||
|
||||
# Instantiate a TalliesFile, register Tally/Mesh, and export to XML
|
||||
tallies_file = openmc.TalliesFile()
|
||||
tallies_file.add_tally(tally)
|
||||
tallies_file.export_to_xml()
|
||||
189
examples/python/lattice/nested/build-xml.py
Normal file
189
examples/python/lattice/nested/build-xml.py
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 20
|
||||
inactive = 10
|
||||
particles = 10000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H-1')
|
||||
o16 = openmc.Nuclide('O-16')
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_s_alpha_beta('HH2O', '71t')
|
||||
|
||||
# Instantiate a MaterialsFile, register all Materials, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_materials([moderator, fuel])
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate Surfaces
|
||||
left = openmc.XPlane(surface_id=1, x0=-2, name='left')
|
||||
right = openmc.XPlane(surface_id=2, x0=2, name='right')
|
||||
bottom = openmc.YPlane(surface_id=3, y0=-2, name='bottom')
|
||||
top = openmc.YPlane(surface_id=4, y0=2, name='top')
|
||||
fuel1 = openmc.ZCylinder(surface_id=5, x0=0, y0=0, R=0.4)
|
||||
fuel2 = openmc.ZCylinder(surface_id=6, x0=0, y0=0, R=0.3)
|
||||
fuel3 = openmc.ZCylinder(surface_id=7, x0=0, y0=0, R=0.2)
|
||||
|
||||
left.boundary_type = 'vacuum'
|
||||
right.boundary_type = 'vacuum'
|
||||
top.boundary_type = 'vacuum'
|
||||
bottom.boundary_type = 'vacuum'
|
||||
|
||||
# Instantiate Cells
|
||||
cell1 = openmc.Cell(cell_id=1, name='Cell 1')
|
||||
cell2 = openmc.Cell(cell_id=2, name='Cell 2')
|
||||
cell3 = openmc.Cell(cell_id=101, name='cell 3')
|
||||
cell4 = openmc.Cell(cell_id=102, name='cell 4')
|
||||
cell5 = openmc.Cell(cell_id=201, name='cell 5')
|
||||
cell6 = openmc.Cell(cell_id=202, name='cell 6')
|
||||
cell7 = openmc.Cell(cell_id=301, name='cell 7')
|
||||
cell8 = openmc.Cell(cell_id=302, name='cell 8')
|
||||
|
||||
# Register Surfaces with Cells
|
||||
cell1.add_surface(left, halfspace=+1)
|
||||
cell1.add_surface(right, halfspace=-1)
|
||||
cell1.add_surface(bottom, halfspace=+1)
|
||||
cell1.add_surface(top, halfspace=-1)
|
||||
cell2.add_surface(left, halfspace=+1)
|
||||
cell2.add_surface(right, halfspace=-1)
|
||||
cell2.add_surface(bottom, halfspace=+1)
|
||||
cell2.add_surface(top, halfspace=-1)
|
||||
cell3.add_surface(fuel1, halfspace=-1)
|
||||
cell4.add_surface(fuel1, halfspace=+1)
|
||||
cell5.add_surface(fuel2, halfspace=-1)
|
||||
cell6.add_surface(fuel2, halfspace=+1)
|
||||
cell7.add_surface(fuel3, halfspace=-1)
|
||||
cell8.add_surface(fuel3, halfspace=+1)
|
||||
|
||||
# Register Materials with Cells
|
||||
cell3.fill = fuel
|
||||
cell4.fill = moderator
|
||||
cell5.fill = fuel
|
||||
cell6.fill = moderator
|
||||
cell7.fill = fuel
|
||||
cell8.fill = moderator
|
||||
|
||||
# Instantiate Universe
|
||||
univ1 = openmc.Universe(universe_id=1)
|
||||
univ2 = openmc.Universe(universe_id=2)
|
||||
univ3 = openmc.Universe(universe_id=3)
|
||||
univ4 = openmc.Universe(universe_id=5)
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
|
||||
# Register Cells with Universe
|
||||
univ1.add_cells([cell3, cell4])
|
||||
univ2.add_cells([cell5, cell6])
|
||||
univ3.add_cells([cell7, cell8])
|
||||
root.add_cell(cell1)
|
||||
univ4.add_cell(cell2)
|
||||
|
||||
# Instantiate nested Lattices
|
||||
lattice1 = openmc.RectLattice(lattice_id=4, name='4x4 assembly')
|
||||
lattice1.dimension = [2, 2]
|
||||
lattice1.lower_left = [-1., -1.]
|
||||
lattice1.pitch = [1., 1.]
|
||||
lattice1.universes = [[univ1, univ2],
|
||||
[univ2, univ3]]
|
||||
|
||||
lattice2 = openmc.RectLattice(lattice_id=6, name='4x4 core')
|
||||
lattice2.dimension = [2, 2]
|
||||
lattice2.lower_left = [-2., -2.]
|
||||
lattice2.pitch = [2., 2.]
|
||||
lattice2.universes = [[univ4, univ4],
|
||||
[univ4, univ4]]
|
||||
|
||||
# Fill Cell with the Lattice
|
||||
cell1.fill = lattice2
|
||||
cell2.fill = lattice1
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-1, -1, -1, 1, 1, 1])
|
||||
settings_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC plots.xml File
|
||||
###############################################################################
|
||||
|
||||
plot = openmc.Plot(plot_id=1)
|
||||
plot.origin = [0, 0, 0]
|
||||
plot.width = [4, 4]
|
||||
plot.pixels = [400, 400]
|
||||
plot.color = 'mat'
|
||||
|
||||
# Instantiate a PlotsFile, add Plot, and export to XML
|
||||
plot_file = openmc.PlotsFile()
|
||||
plot_file.add_plot(plot)
|
||||
plot_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC tallies.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a tally mesh
|
||||
mesh = openmc.Mesh(mesh_id=1)
|
||||
mesh.type = 'rectangular'
|
||||
mesh.dimension = [4, 4]
|
||||
mesh.lower_left = [-2, -2]
|
||||
mesh.width = [1, 1]
|
||||
|
||||
# Instantiate tally Filter
|
||||
mesh_filter = openmc.Filter()
|
||||
mesh_filter.mesh = mesh
|
||||
|
||||
# Instantiate the Tally
|
||||
tally = openmc.Tally(tally_id=1)
|
||||
tally.add_filter(mesh_filter)
|
||||
tally.add_score('total')
|
||||
|
||||
# Instantiate a TalliesFile, register Tally/Mesh, and export to XML
|
||||
tallies_file = openmc.TalliesFile()
|
||||
tallies_file.add_mesh(mesh)
|
||||
tallies_file.add_tally(tally)
|
||||
tallies_file.export_to_xml()
|
||||
183
examples/python/lattice/simple/build-xml.py
Normal file
183
examples/python/lattice/simple/build-xml.py
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 20
|
||||
inactive = 10
|
||||
particles = 10000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H-1')
|
||||
o16 = openmc.Nuclide('O-16')
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
|
||||
moderator = openmc.Material(material_id=2, name='moderator')
|
||||
moderator.set_density('g/cc', 1.0)
|
||||
moderator.add_nuclide(h1, 2.)
|
||||
moderator.add_nuclide(o16, 1.)
|
||||
moderator.add_s_alpha_beta('HH2O', '71t')
|
||||
|
||||
# Instantiate a MaterialsFile, register all Materials, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_materials([moderator, fuel])
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate Surfaces
|
||||
left = openmc.XPlane(surface_id=1, x0=-2, name='left')
|
||||
right = openmc.XPlane(surface_id=2, x0=2, name='right')
|
||||
bottom = openmc.YPlane(surface_id=3, y0=-2, name='bottom')
|
||||
top = openmc.YPlane(surface_id=4, y0=2, name='top')
|
||||
fuel1 = openmc.ZCylinder(surface_id=5, x0=0, y0=0, R=0.4)
|
||||
fuel2 = openmc.ZCylinder(surface_id=6, x0=0, y0=0, R=0.3)
|
||||
fuel3 = openmc.ZCylinder(surface_id=7, x0=0, y0=0, R=0.2)
|
||||
|
||||
left.boundary_type = 'vacuum'
|
||||
right.boundary_type = 'vacuum'
|
||||
top.boundary_type = 'vacuum'
|
||||
bottom.boundary_type = 'vacuum'
|
||||
|
||||
# Instantiate Cells
|
||||
cell1 = openmc.Cell(cell_id=1, name='Cell 1')
|
||||
cell2 = openmc.Cell(cell_id=101, name='cell 2')
|
||||
cell3 = openmc.Cell(cell_id=102, name='cell 3')
|
||||
cell4 = openmc.Cell(cell_id=201, name='cell 4')
|
||||
cell5 = openmc.Cell(cell_id=202, name='cell 5')
|
||||
cell6 = openmc.Cell(cell_id=301, name='cell 6')
|
||||
cell7 = openmc.Cell(cell_id=302, name='cell 7')
|
||||
|
||||
# Register Surfaces with Cells
|
||||
cell1.add_surface(left, halfspace=+1)
|
||||
cell1.add_surface(right, halfspace=-1)
|
||||
cell1.add_surface(bottom, halfspace=+1)
|
||||
cell1.add_surface(top, halfspace=-1)
|
||||
cell2.add_surface(fuel1, halfspace=-1)
|
||||
cell3.add_surface(fuel1, halfspace=+1)
|
||||
cell4.add_surface(fuel2, halfspace=-1)
|
||||
cell5.add_surface(fuel2, halfspace=+1)
|
||||
cell6.add_surface(fuel3, halfspace=-1)
|
||||
cell7.add_surface(fuel3, halfspace=+1)
|
||||
|
||||
# Register Materials with Cells
|
||||
cell2.fill = fuel
|
||||
cell3.fill = moderator
|
||||
cell4.fill = fuel
|
||||
cell5.fill = moderator
|
||||
cell6.fill = fuel
|
||||
cell7.fill = moderator
|
||||
|
||||
# Instantiate Universe
|
||||
univ1 = openmc.Universe(universe_id=1)
|
||||
univ2 = openmc.Universe(universe_id=2)
|
||||
univ3 = openmc.Universe(universe_id=3)
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
|
||||
# Register Cells with Universe
|
||||
univ1.add_cells([cell2, cell3])
|
||||
univ2.add_cells([cell4, cell5])
|
||||
univ3.add_cells([cell6, cell7])
|
||||
root.add_cell(cell1)
|
||||
|
||||
# Instantiate a Lattice
|
||||
lattice = openmc.RectLattice(lattice_id=5)
|
||||
lattice.dimension = [4, 4]
|
||||
lattice.lower_left = [-2., -2.]
|
||||
lattice.pitch = [1., 1.]
|
||||
lattice.universes = [[univ1, univ2, univ1, univ2],
|
||||
[univ2, univ3, univ2, univ3],
|
||||
[univ1, univ2, univ1, univ2],
|
||||
[univ2, univ3, univ2, univ3]]
|
||||
|
||||
# Fill Cell with the Lattice
|
||||
cell1.fill = lattice
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-1, -1, -1, 1, 1, 1])
|
||||
settings_file.trigger_active = True
|
||||
settings_file.trigger_max_batches = 100
|
||||
settings_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC plots.xml File
|
||||
###############################################################################
|
||||
|
||||
plot = openmc.Plot(plot_id=1)
|
||||
plot.origin = [0, 0, 0]
|
||||
plot.width = [4, 4]
|
||||
plot.pixels = [400, 400]
|
||||
plot.color = 'mat'
|
||||
|
||||
# Instantiate a PlotsFile, add Plot, and export to XML
|
||||
plot_file = openmc.PlotsFile()
|
||||
plot_file.add_plot(plot)
|
||||
plot_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC tallies.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a tally mesh
|
||||
mesh = openmc.Mesh(mesh_id=1)
|
||||
mesh.type = 'rectangular'
|
||||
mesh.dimension = [4, 4]
|
||||
mesh.lower_left = [-2, -2]
|
||||
mesh.width = [1, 1]
|
||||
|
||||
# Instantiate tally Filter
|
||||
mesh_filter = openmc.Filter()
|
||||
mesh_filter.mesh = mesh
|
||||
|
||||
# Instantiate tally Trigger
|
||||
trigger = openmc.Trigger(trigger_type='rel_err', threshold=1E-2)
|
||||
trigger.add_score('all')
|
||||
|
||||
# Instantiate the Tally
|
||||
tally = openmc.Tally(tally_id=1)
|
||||
tally.add_filter(mesh_filter)
|
||||
tally.add_score('total')
|
||||
tally.add_trigger(trigger)
|
||||
|
||||
# Instantiate a TalliesFile, register Tally/Mesh, and export to XML
|
||||
tallies_file = openmc.TalliesFile()
|
||||
tallies_file.add_mesh(mesh)
|
||||
tallies_file.add_tally(tally)
|
||||
tallies_file.export_to_xml()
|
||||
214
examples/python/pincell/build-xml.py
Normal file
214
examples/python/pincell/build-xml.py
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 100
|
||||
inactive = 10
|
||||
particles = 1000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate some Nuclides
|
||||
h1 = openmc.Nuclide('H-1')
|
||||
h2 = openmc.Nuclide('H-2')
|
||||
he4 = openmc.Nuclide('He-4')
|
||||
b10 = openmc.Nuclide('B-10')
|
||||
b11 = openmc.Nuclide('B-11')
|
||||
o16 = openmc.Nuclide('O-16')
|
||||
o17 = openmc.Nuclide('O-17')
|
||||
cr50 = openmc.Nuclide('Cr-50')
|
||||
cr52 = openmc.Nuclide('Cr-52')
|
||||
cr53 = openmc.Nuclide('Cr-53')
|
||||
cr54 = openmc.Nuclide('Cr-54')
|
||||
fe54 = openmc.Nuclide('Fe-54')
|
||||
fe56 = openmc.Nuclide('Fe-56')
|
||||
fe57 = openmc.Nuclide('Fe-57')
|
||||
fe58 = openmc.Nuclide('Fe-58')
|
||||
zr90 = openmc.Nuclide('Zr-90')
|
||||
zr91 = openmc.Nuclide('Zr-91')
|
||||
zr92 = openmc.Nuclide('Zr-92')
|
||||
zr94 = openmc.Nuclide('Zr-94')
|
||||
zr96 = openmc.Nuclide('Zr-96')
|
||||
sn112 = openmc.Nuclide('Sn-112')
|
||||
sn114 = openmc.Nuclide('Sn-114')
|
||||
sn115 = openmc.Nuclide('Sn-115')
|
||||
sn116 = openmc.Nuclide('Sn-116')
|
||||
sn117 = openmc.Nuclide('Sn-117')
|
||||
sn118 = openmc.Nuclide('Sn-118')
|
||||
sn119 = openmc.Nuclide('Sn-119')
|
||||
sn120 = openmc.Nuclide('Sn-120')
|
||||
sn122 = openmc.Nuclide('Sn-122')
|
||||
sn124 = openmc.Nuclide('Sn-124')
|
||||
u234 = openmc.Nuclide('U-234')
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
u238 = openmc.Nuclide('U-238')
|
||||
|
||||
# Instantiate some Materials and register the appropriate Nuclides
|
||||
uo2 = openmc.Material(material_id=1, name='UO2 fuel at 2.4% wt enrichment')
|
||||
uo2.set_density('g/cm3', 10.29769)
|
||||
uo2.add_nuclide(u234, 4.4843e-6)
|
||||
uo2.add_nuclide(u235, 5.5815e-4)
|
||||
uo2.add_nuclide(u238, 2.2408e-2)
|
||||
uo2.add_nuclide(o16, 4.5829e-2)
|
||||
uo2.add_nuclide(o17, 1.1164e-4)
|
||||
|
||||
helium = openmc.Material(material_id=2, name='Helium for gap')
|
||||
helium.set_density('g/cm3', 0.001598)
|
||||
helium.add_nuclide(he4, 2.4044e-4)
|
||||
|
||||
zircaloy = openmc.Material(material_id=3, name='Zircaloy 4')
|
||||
zircaloy.set_density('g/cm3', 6.55)
|
||||
zircaloy.add_nuclide(o16, 3.0743e-4)
|
||||
zircaloy.add_nuclide(o17, 7.4887e-7)
|
||||
zircaloy.add_nuclide(cr50, 3.2962e-6)
|
||||
zircaloy.add_nuclide(cr52, 6.3564e-5)
|
||||
zircaloy.add_nuclide(cr53, 7.2076e-6)
|
||||
zircaloy.add_nuclide(cr54, 1.7941e-6)
|
||||
zircaloy.add_nuclide(fe54, 8.6699e-6)
|
||||
zircaloy.add_nuclide(fe56, 1.3610e-4)
|
||||
zircaloy.add_nuclide(fe57, 3.1431e-6)
|
||||
zircaloy.add_nuclide(fe58, 4.1829e-7)
|
||||
zircaloy.add_nuclide(zr90, 2.1827e-2)
|
||||
zircaloy.add_nuclide(zr91, 4.7600e-3)
|
||||
zircaloy.add_nuclide(zr92, 7.2758e-3)
|
||||
zircaloy.add_nuclide(zr94, 7.3734e-3)
|
||||
zircaloy.add_nuclide(zr96, 1.1879e-3)
|
||||
zircaloy.add_nuclide(sn112, 4.6735e-6)
|
||||
zircaloy.add_nuclide(sn114, 3.1799e-6)
|
||||
zircaloy.add_nuclide(sn115, 1.6381e-6)
|
||||
zircaloy.add_nuclide(sn116, 7.0055e-5)
|
||||
zircaloy.add_nuclide(sn117, 3.7003e-5)
|
||||
zircaloy.add_nuclide(sn118, 1.1669e-4)
|
||||
zircaloy.add_nuclide(sn119, 4.1387e-5)
|
||||
zircaloy.add_nuclide(sn120, 1.5697e-4)
|
||||
zircaloy.add_nuclide(sn122, 2.2308e-5)
|
||||
zircaloy.add_nuclide(sn124, 2.7897e-5)
|
||||
|
||||
borated_water = openmc.Material(material_id=4, name='Borated water at 975 ppm')
|
||||
borated_water.set_density('g/cm3', 0.740582)
|
||||
borated_water.add_nuclide(b10, 8.0042e-6)
|
||||
borated_water.add_nuclide(b11, 3.2218e-5)
|
||||
borated_water.add_nuclide(h1, 4.9457e-2)
|
||||
borated_water.add_nuclide(h2, 7.4196e-6)
|
||||
borated_water.add_nuclide(o16, 2.4672e-2)
|
||||
borated_water.add_nuclide(o17, 6.0099e-5)
|
||||
borated_water.add_s_alpha_beta('HH2O', '71t')
|
||||
|
||||
# Instantiate a MaterialsFile, register all Materials, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_materials([uo2, helium, zircaloy, borated_water])
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate ZCylinder surfaces
|
||||
fuel_or = openmc.ZCylinder(surface_id=1, x0=0, y0=0, R=0.39218, name='Fuel OR')
|
||||
clad_ir = openmc.ZCylinder(surface_id=2, x0=0, y0=0, R=0.40005, name='Clad IR')
|
||||
clad_or = openmc.ZCylinder(surface_id=3, x0=0, y0=0, R=0.45720, name='Clad OR')
|
||||
left = openmc.XPlane(surface_id=4, x0=-0.62992, name='left')
|
||||
right = openmc.XPlane(surface_id=5, x0=0.62992, name='right')
|
||||
bottom = openmc.YPlane(surface_id=6, y0=-0.62992, name='bottom')
|
||||
top = openmc.YPlane(surface_id=7, y0=0.62992, name='top')
|
||||
|
||||
left.boundary_type = 'reflective'
|
||||
right.boundary_type = 'reflective'
|
||||
top.boundary_type = 'reflective'
|
||||
bottom.boundary_type = 'reflective'
|
||||
|
||||
# Instantiate Cells
|
||||
fuel = openmc.Cell(cell_id=1, name='cell 1')
|
||||
gap = openmc.Cell(cell_id=2, name='cell 2')
|
||||
clad = openmc.Cell(cell_id=3, name='cell 3')
|
||||
water = openmc.Cell(cell_id=4, name='cell 4')
|
||||
|
||||
# Register Surfaces with Cells
|
||||
fuel.add_surface(fuel_or, halfspace=-1)
|
||||
gap.add_surface(fuel_or, halfspace=+1)
|
||||
gap.add_surface(clad_ir, halfspace=-1)
|
||||
clad.add_surface(clad_ir, halfspace=+1)
|
||||
clad.add_surface(clad_or, halfspace=-1)
|
||||
water.add_surface(clad_or, halfspace=+1)
|
||||
water.add_surface(left, halfspace=+1)
|
||||
water.add_surface(right, halfspace=-1)
|
||||
water.add_surface(bottom, halfspace=+1)
|
||||
water.add_surface(top, halfspace=-1)
|
||||
|
||||
# Register Materials with Cells
|
||||
fuel.fill = uo2
|
||||
gap.fill = helium
|
||||
clad.fill = zircaloy
|
||||
water.fill = borated_water
|
||||
|
||||
# Instantiate Universe
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
|
||||
# Register Cells with Universe
|
||||
root.add_cells([fuel, gap, clad, water])
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-0.62992, -0.62992, -1, \
|
||||
0.62992, 0.62992, 1])
|
||||
settings_file.entropy_lower_left = [-0.39218, -0.39218, -1.e50]
|
||||
settings_file.entropy_upper_right = [0.39218, 0.39218, 1.e50]
|
||||
settings_file.entropy_dimension = [10, 10, 1]
|
||||
settings_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC tallies.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a tally mesh
|
||||
mesh = openmc.Mesh(mesh_id=1)
|
||||
mesh.type = 'rectangular'
|
||||
mesh.dimension = [100, 100, 1]
|
||||
mesh.lower_left = [-0.62992, -0.62992, -1.e50]
|
||||
mesh.upper_right = [0.62992, 0.62992, 1.e50]
|
||||
|
||||
# Instantiate some tally Filters
|
||||
energy_filter = openmc.Filter(type='energy', bins=[0., 4.e-6, 20.])
|
||||
mesh_filter = openmc.Filter()
|
||||
mesh_filter.mesh = mesh
|
||||
|
||||
# Instantiate the Tally
|
||||
tally = openmc.Tally(tally_id=1, name='tally 1')
|
||||
tally.add_filter(energy_filter)
|
||||
tally.add_filter(mesh_filter)
|
||||
tally.add_score('flux')
|
||||
tally.add_score('fission')
|
||||
tally.add_score('nu-fission')
|
||||
|
||||
# Instantiate a TalliesFile, register all Tallies, and export to XML
|
||||
tallies_file = openmc.TalliesFile()
|
||||
tallies_file.add_mesh(mesh)
|
||||
tallies_file.add_tally(tally)
|
||||
tallies_file.export_to_xml()
|
||||
92
examples/python/reflective/build-xml.py
Normal file
92
examples/python/reflective/build-xml.py
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
import openmc
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Simulation Input File Parameters
|
||||
###############################################################################
|
||||
|
||||
# OpenMC simulation parameters
|
||||
batches = 500
|
||||
inactive = 10
|
||||
particles = 10000
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC materials.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a Nuclides
|
||||
u235 = openmc.Nuclide('U-235')
|
||||
|
||||
# Instantiate a Material and register the Nuclide
|
||||
fuel = openmc.Material(material_id=1, name='fuel')
|
||||
fuel.set_density('g/cc', 4.5)
|
||||
fuel.add_nuclide(u235, 1.)
|
||||
|
||||
# Instantiate a MaterialsFile, register Material, and export to XML
|
||||
materials_file = openmc.MaterialsFile()
|
||||
materials_file.default_xs = '71c'
|
||||
materials_file.add_material(fuel)
|
||||
materials_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC geometry.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate Surfaces
|
||||
surf1 = openmc.XPlane(surface_id=1, x0=-1, name='surf 1')
|
||||
surf2 = openmc.XPlane(surface_id=2, x0=+1, name='surf 2')
|
||||
surf3 = openmc.YPlane(surface_id=3, y0=-1, name='surf 3')
|
||||
surf4 = openmc.YPlane(surface_id=4, y0=+1, name='surf 4')
|
||||
surf5 = openmc.ZPlane(surface_id=5, z0=-1, name='surf 5')
|
||||
surf6 = openmc.ZPlane(surface_id=6, z0=+1, name='surf 6')
|
||||
|
||||
surf1.boundary_type = 'vacuum'
|
||||
surf2.boundary_type = 'vacuum'
|
||||
surf3.boundary_type = 'reflective'
|
||||
surf4.boundary_type = 'reflective'
|
||||
surf5.boundary_type = 'reflective'
|
||||
surf6.boundary_type = 'reflective'
|
||||
|
||||
# Instantiate Cell
|
||||
cell = openmc.Cell(cell_id=1, name='cell 1')
|
||||
|
||||
# Register Surfaces with Cell
|
||||
cell.add_surface(surface=surf1, halfspace=+1)
|
||||
cell.add_surface(surface=surf2, halfspace=-1)
|
||||
cell.add_surface(surface=surf3, halfspace=+1)
|
||||
cell.add_surface(surface=surf4, halfspace=-1)
|
||||
cell.add_surface(surface=surf5, halfspace=+1)
|
||||
cell.add_surface(surface=surf6, halfspace=-1)
|
||||
|
||||
# Register Material with Cell
|
||||
cell.fill = fuel
|
||||
|
||||
# Instantiate Universes
|
||||
root = openmc.Universe(universe_id=0, name='root universe')
|
||||
|
||||
# Register Cell with Universe
|
||||
root.add_cell(cell)
|
||||
|
||||
# Instantiate a Geometry and register the root Universe
|
||||
geometry = openmc.Geometry()
|
||||
geometry.root_universe = root
|
||||
|
||||
# Instantiate a GeometryFile, register Geometry, and export to XML
|
||||
geometry_file = openmc.GeometryFile()
|
||||
geometry_file.geometry = geometry
|
||||
geometry_file.export_to_xml()
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Exporting to OpenMC settings.xml File
|
||||
###############################################################################
|
||||
|
||||
# Instantiate a SettingsFile, set all runtime parameters, and export to XML
|
||||
settings_file = openmc.SettingsFile()
|
||||
settings_file.batches = batches
|
||||
settings_file.inactive = inactive
|
||||
settings_file.particles = particles
|
||||
settings_file.set_source_space('box', [-1, -1, -1, 1, 1, 1])
|
||||
settings_file.export_to_xml()
|
||||
|
|
@ -12,10 +12,9 @@
|
|||
|
||||
<!-- 4 x 4 assembly -->
|
||||
<lattice id="4">
|
||||
<type>rectangular</type>
|
||||
<dimension>2 2</dimension>
|
||||
<lower_left>-1.0 -1.0</lower_left>
|
||||
<width>1.0 1.0</width>
|
||||
<pitch>1.0 1.0</pitch>
|
||||
<universes>
|
||||
1 2
|
||||
2 3
|
||||
|
|
@ -24,10 +23,9 @@
|
|||
|
||||
<!-- 4 x 4 core -->
|
||||
<lattice id="6">
|
||||
<type>rectangular</type>
|
||||
<dimension>2 2</dimension>
|
||||
<lower_left>-2.0 -2.0</lower_left>
|
||||
<width>2.0 2.0</width>
|
||||
<pitch>2.0 2.0</pitch>
|
||||
<universes>
|
||||
5 5
|
||||
5 5
|
||||
|
|
@ -10,10 +10,9 @@
|
|||
<cell id="302" universe="3" material="2" surfaces="7" />
|
||||
|
||||
<lattice id="5">
|
||||
<type>rectangular</type>
|
||||
<dimension>4 4</dimension>
|
||||
<lower_left>-2.0 -2.0</lower_left>
|
||||
<width>1.0 1.0</width>
|
||||
<pitch>1.0 1.0</pitch>
|
||||
<universes>
|
||||
1 2 1 2
|
||||
2 3 2 3
|
||||
19
openmc/__init__.py
Normal file
19
openmc/__init__.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
from openmc.element import *
|
||||
from openmc.geometry import *
|
||||
from openmc.nuclide import *
|
||||
from openmc.material import *
|
||||
from openmc.plots import *
|
||||
from openmc.settings import *
|
||||
from openmc.surface import *
|
||||
from openmc.universe import *
|
||||
from openmc.mesh import *
|
||||
from openmc.filter import *
|
||||
from openmc.trigger import *
|
||||
from openmc.tallies import *
|
||||
from openmc.cmfd import *
|
||||
from openmc.executor import *
|
||||
|
||||
try:
|
||||
from openmc.opencg_compatible import *
|
||||
except ImportError:
|
||||
pass
|
||||
12
src/utils/convert_binary.py → openmc/ace.py
Executable file → Normal file
12
src/utils/convert_binary.py → openmc/ace.py
Executable file → Normal file
|
|
@ -1,9 +1,5 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import division
|
||||
|
||||
from struct import pack
|
||||
import sys
|
||||
|
||||
|
||||
def ascii_to_binary(ascii_file, binary_file):
|
||||
|
|
@ -67,11 +63,3 @@ def ascii_to_binary(ascii_file, binary_file):
|
|||
|
||||
# Close binary file
|
||||
binary.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Check for proper number of arguments
|
||||
if len(sys.argv) < 3:
|
||||
sys.exit('Usage: {0} ascii_file binary_file'.format(sys.argv[0]))
|
||||
|
||||
# Convert ASCII file
|
||||
ascii_to_binary(sys.argv[1], sys.argv[2])
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue