From 347ca24ee522ab8a9e5c07d85765ac273b7889aa Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:27:03 -0400 Subject: [PATCH 01/78] added more options for writing source bank at end of batches --- src/eigenvalue.F90 | 8 +++- src/global.F90 | 5 +++ src/input_xml.F90 | 55 ++++++++++++++++++++++---- src/state_point.F90 | 77 ++++++++++++++++++++++++++++-------- src/templates/settings_t.xml | 9 ++++- 5 files changed, 128 insertions(+), 26 deletions(-) diff --git a/src/eigenvalue.F90 b/src/eigenvalue.F90 index f5375bf3a9..62ce1c47be 100644 --- a/src/eigenvalue.F90 +++ b/src/eigenvalue.F90 @@ -17,7 +17,7 @@ module eigenvalue use random_lcg, only: prn, set_particle_seed, prn_skip use search, only: binary_search use source, only: get_source_particle - use state_point, only: write_state_point + use state_point, only: write_state_point, write_source_point use string, only: to_str use tally, only: synchronize_tallies, setup_active_usertallies, & reset_result @@ -222,6 +222,12 @@ contains call write_state_point() end if + ! Write out source point if it's been specified for this batch + if ((sourcepoint_batch % contains(current_batch) .or. source_latest) .and. & + source_write) then + call write_source_point() + end if + if (master .and. current_batch == n_batches) then ! Make sure combined estimate of k-effective is calculated at the last ! batch in case no state point is written diff --git a/src/global.F90 b/src/global.F90 index f12171b257..aba56232bd 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -189,6 +189,7 @@ module global ! Write source at end of simulation logical :: source_separate = .false. logical :: source_write = .true. + logical :: source_latest = .false. ! ============================================================================ ! PARALLEL PROCESSING VARIABLES @@ -359,6 +360,10 @@ module global integer :: n_state_points = 0 type(SetInt) :: statepoint_batch + ! Information about source points to be written + integer :: n_source_points = 0 + type(SetInt) :: sourcepoint_batch + ! Various output options logical :: output_summary = .false. logical :: output_xs = .false. diff --git a/src/input_xml.F90 b/src/input_xml.F90 index f50a4557c5..3a8a1fac60 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -530,14 +530,6 @@ contains n_state_points = 1 call statepoint_batch % add(n_batches) end if - - ! Check if the user has specified to write binary source file - call lower_case(state_point_(1) % source_separate) - call lower_case(state_point_(1) % source_write) - if (state_point_(1) % source_separate == 'true' .or. & - state_point_(1) % source_separate == '1') source_separate = .true. - if (state_point_(1) % source_write == 'false' .or. & - state_point_(1) % source_write == '0') source_write = .false. else ! If no tag was present, by default write state point at ! last batch only @@ -545,6 +537,53 @@ contains call statepoint_batch % add(n_batches) end if + ! Check if the user has specified to write state points + if (size(source_point_) > 0) then + ! Determine number of batches at which to store state points + if (associated(state_point_(1) % batches)) then + n_source_points = size(source_point_(1) % batches) + else + n_source_points = 0 + end if + + if (n_source_points > 0) then + ! User gave specific batches to write state points + do i = 1, n_source_points + call sourcepoint_batch % add(source_point_(1) % batches(i)) + end do + + elseif (source_point_(1) % interval /= 0) then + ! User gave an interval for writing state points + n_source_points = n_batches / source_point_(1) % interval + do i = 1, n_source_points + call sourcepoint_batch % add(source_point_(1) % interval * i) + end do + else + ! If neither were specified, write state point at last batch + n_source_points = 1 + call sourcepoint_batch % add(n_batches) + end if + + ! Check if the user has specified to write binary source file + call lower_case(source_point_(1) % source_separate) + call lower_case(source_point_(1) % source_write) + call lower_case(source_point_(1) % overwrite_latest) + if (source_point_(1) % source_separate == 'true' .or. & + source_point_(1) % source_separate == '1') source_separate = .true. + if (source_point_(1) % source_write == 'false' .or. & + source_point_(1) % source_write == '0') source_write = .false. + if (source_point_(1) % overwrite_latest == 'true' .or. & + source_point_(1) % overwrite_latest == '1') source_latest = .true. + else + ! If no tag was present, by default we keep source bank in + ! statepoint file and write it out at statepoints intervals + source_separate = .false. + n_source_points = n_state_points + do i = 1, n_state_points + call sourcepoint_batch % add(statepoint_batch % get_item(i)) + end do + end if + ! Check if the user has specified to not reduce tallies at the end of every ! batch call lower_case(no_reduce_) diff --git a/src/state_point.F90 b/src/state_point.F90 index 9ad9b8d9f2..ae546cc103 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -280,14 +280,42 @@ contains end if - ! Check for eigenvalue calculation - if (run_mode == MODE_EIGENVALUE .and. source_write) then + end subroutine write_state_point - ! Check for writing source out separately +!=============================================================================== +! WRITE_SOURCE_POINT +!=============================================================================== + + subroutine write_source_point() + + type(BinaryOutput) :: sp + character(MAX_FILE_LEN) :: filename + + ! Check to write out source for a specified batch + if (sourcepoint_batch % contains(current_batch)) then + + ! Create or open up file if (source_separate) then - ! Set filename for source - filename = trim(path_output) // 'source.' // & + ! Set filename + filename = trim(path_output) // 'source.' // trim(to_str(current_batch)) +#ifdef HDF5 + filename = trim(filename) // '.h5' +#else + filename = trim(filename) // '.binary' +#endif + + ! Write message for new file creation + message = "Creating source file " // trim(filename) // "..." + call write_message() + + ! Create separate source file + call sp % file_create(filename, serial = .false.) + + else + + ! Set filename for state point + filename = trim(path_output) // 'statepoint.' // & trim(to_str(current_batch)) #ifdef HDF5 filename = trim(filename) // '.h5' @@ -295,16 +323,7 @@ contains filename = trim(filename) // '.binary' #endif - ! Write message - message = "Creating source file " // trim(filename) // "..." - call write_message(1) - - ! Create source file - call sp % file_create(filename, serial = .false.) - - else - - ! Reopen state point file in parallel + ! Reopen statepoint file in parallel call sp % file_open(filename, 'w', serial = .false.) end if @@ -317,7 +336,33 @@ contains end if - end subroutine write_state_point + ! Also check to write source separately in overwritten file + if (source_latest) then + + ! Set filename + filename = trim(path_output) // 'source' +#ifdef HDF5 + filename = trim(filename) // '.h5' +#else + filename = trim(filename) // '.binary' +#endif + + ! Write message for new file creation + message = "Creating source file " // trim(filename) // "..." + call write_message() + + ! Always create this file because it will be overwritten + call sp % file_create(filename, serial = .false.) + + ! Write out source + call sp % write_source_bank() + + ! Close file + call sp % file_close() + + end if + + end subroutine write_source_point !=============================================================================== ! WRITE_TALLY_RESULTS_NR diff --git a/src/templates/settings_t.xml b/src/templates/settings_t.xml index 8f1cc7b00c..60b959c67a 100644 --- a/src/templates/settings_t.xml +++ b/src/templates/settings_t.xml @@ -38,9 +38,15 @@ + + + + + - + + @@ -57,6 +63,7 @@ + From eae7e9322402f33cc847eb8c63ba7ecb5d23df54 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:30:33 -0400 Subject: [PATCH 02/78] default source point behavior is set to same batches as statepoint --- src/input_xml.F90 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 3a8a1fac60..41dac3f066 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -560,8 +560,10 @@ contains end do else ! If neither were specified, write state point at last batch - n_source_points = 1 - call sourcepoint_batch % add(n_batches) + n_source_points = n_state_points + do i = 1, n_state_points + call sourcepoint_batch % add(statepoint_batch % get_item(i)) + end do end if ! Check if the user has specified to write binary source file From 21338d3de4d67fdef71ff6da7c846590309a4b6f Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:37:07 -0400 Subject: [PATCH 03/78] updated settings schema --- src/templates/settings.rnc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/templates/settings.rnc b/src/templates/settings.rnc index cd4ed4beb9..fda258385e 100644 --- a/src/templates/settings.rnc +++ b/src/templates/settings.rnc @@ -83,6 +83,15 @@ element settings { }? & element state_point { + ( + (element batches { list { xsd:positiveInteger+ } } | + attribute batches { list { xsd:positiveInteger+ } }) | + (element interval { xsd:positiveInteger } | + attribute interval { xsd:positiveInteger }) + ) + }? & + + element source_point { ( (element batches { list { xsd:positiveInteger+ } } | attribute batches { list { xsd:positiveInteger+ } }) | @@ -92,7 +101,9 @@ element settings { (element source_separate { xsd:boolean } | attribute source_separate { xsd:boolean })? & (element source_write { xsd:boolean } | - attribute source_write { xsd:boolean })? + attribute source_write { xsd:boolean })? & + (element overwrite_latest { xsd:boolean} | + attribute overwrite_latest {xsd:boolean})? }? & element survival_biasing { xsd:boolean }? & From 8a9c76e4aca5b5323ae4d2b4795b5c810cb2d061 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:42:49 -0400 Subject: [PATCH 04/78] added new filetype and wrote this in source file --- src/constants.F90 | 3 ++- src/state_point.F90 | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/constants.F90 b/src/constants.F90 index 5587722869..d72d855234 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -17,7 +17,8 @@ module constants ! Binary file types integer, parameter :: & FILETYPE_STATEPOINT = -1, & - FILETYPE_PARTICLE_RESTART = -2 + FILETYPE_PARTICLE_RESTART = -2, & + FILETYPE_SOURCE = -3 ! ============================================================================ ! ADJUSTABLE PARAMETERS diff --git a/src/state_point.F90 b/src/state_point.F90 index ae546cc103..a6c21704d6 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -312,6 +312,9 @@ contains ! Create separate source file call sp % file_create(filename, serial = .false.) + ! Write file type + call sp % write_data(FILETYPE_SOURCE, "filetype") + else ! Set filename for state point @@ -354,6 +357,9 @@ contains ! Always create this file because it will be overwritten call sp % file_create(filename, serial = .false.) + ! Write file type + call sp % write_data(FILETYPE_SOURCE, "filetype") + ! Write out source call sp % write_source_bank() From 154c8d632fdf77bb561ffa9a3875be477514a1d4 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:56:29 -0400 Subject: [PATCH 05/78] a specific source file can now be specified on command line --- src/global.F90 | 1 + src/initialize.F90 | 36 ++++++++++++++++++++++++++++++++++++ src/state_point.F90 | 4 ++-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/global.F90 b/src/global.F90 index aba56232bd..f5ce1dbcca 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -261,6 +261,7 @@ module global character(MAX_FILE_LEN) :: path_cross_sections ! Path to cross_sections.xml character(MAX_FILE_LEN) :: path_source = '' ! Path to binary source character(MAX_FILE_LEN) :: path_state_point ! Path to binary state point + character(MAX_FILE_LEN) :: path_source_point ! Path to binary source point character(MAX_FILE_LEN) :: path_particle_restart ! Path to particle restart character(MAX_FILE_LEN) :: path_output = '' ! Path to output directory diff --git a/src/initialize.F90 b/src/initialize.F90 index dea901fb66..09e446e38c 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -363,8 +363,44 @@ contains case (FILETYPE_PARTICLE_RESTART) path_particle_restart = argv(i) particle_restart_run = .true. + case default + message = "Unrecognized file after restart flag." + call fatal_error() end select + ! If its a restart run check for additional source file + if (restart_run) then + + ! Increment arg + i = i + 1 + + ! Check if it has extension we can read + if ((ends_with(argv(i), '.binary') .or. & + ends_with(argv(i), '.h5'))) then + + ! Check file type is a source file + call sp % file_open(argv(i), 'r', serial = .false.) + call sp % read_data(filetype, 'filetype') + call sp % file_close() + if (filetype /= FILETYPE_SOURCE) then + message = "Second file after restart flag must be a source file" + call fatal_error() + end if + + ! It is a source file + path_source_point = argv(i) + + else + + ! Source is in statepoint file + path_source_point = path_state_point + + ! Set argument back + i = i - 1 + + end if + end if + case ('-g', '-geometry-debug', '--geometry-debug') check_overlaps = .true. diff --git a/src/state_point.F90 b/src/state_point.F90 index a6c21704d6..836f96c00b 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -793,9 +793,9 @@ contains else #ifdef MPI - ! Reopen statepoint file in parallel, but only if MPI + ! Open file determined form initialization in parallel, but only if MPI ! We will compute the position where the source begins - call sp % file_open(path_state_point, 'r', serial = .false.) + call sp % file_open(path_source_point, 'r', serial = .false.) #endif end if From 728c906cc4a1d59bd68714ba50f43fdd0648c1a7 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Mon, 21 Oct 2013 17:18:50 -0400 Subject: [PATCH 06/78] fixed some restarting and printing issues --- src/initialize.F90 | 2 +- src/state_point.F90 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/initialize.F90 b/src/initialize.F90 index 09e446e38c..6b2023a9b6 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -369,7 +369,7 @@ contains end select ! If its a restart run check for additional source file - if (restart_run) then + if (restart_run .and. i + 1 <= argc) then ! Increment arg i = i + 1 diff --git a/src/state_point.F90 b/src/state_point.F90 index cf3c052b9b..74d0f60540 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -307,7 +307,7 @@ contains ! Write message for new file creation message = "Creating source file " // trim(filename) // "..." - call write_message() + call write_message(1) ! Create separate source file call sp % file_create(filename, serial = .false.) @@ -352,7 +352,7 @@ contains ! Write message for new file creation message = "Creating source file " // trim(filename) // "..." - call write_message() + call write_message(1) ! Always create this file because it will be overwritten call sp % file_create(filename, serial = .false.) From ed3de400e6b5e07f5083f840ccd2e909df278c7b Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Mon, 21 Oct 2013 17:21:22 -0400 Subject: [PATCH 07/78] change where source separate is specified in tests --- tests/test_statepoint_sourcesep/settings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_statepoint_sourcesep/settings.xml b/tests/test_statepoint_sourcesep/settings.xml index 4f5b7691ff..fba449e2d5 100644 --- a/tests/test_statepoint_sourcesep/settings.xml +++ b/tests/test_statepoint_sourcesep/settings.xml @@ -1,10 +1,11 @@ - + + - 10 + 15 5 1000 From ba9d5753dbe9175e19aa12ca4431c0e512d3a184 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 22 Oct 2013 09:21:43 -0400 Subject: [PATCH 08/78] put source sep test back to 10 batches --- tests/test_statepoint_sourcesep/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_statepoint_sourcesep/settings.xml b/tests/test_statepoint_sourcesep/settings.xml index fba449e2d5..98abc5acfe 100644 --- a/tests/test_statepoint_sourcesep/settings.xml +++ b/tests/test_statepoint_sourcesep/settings.xml @@ -5,7 +5,7 @@ - 15 + 10 5 1000 From b4122c7319d22cbabe5ffd4796eb5e216c83a98c Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 22 Oct 2013 09:22:08 -0400 Subject: [PATCH 09/78] when opening separate source file, read filetype first --- src/state_point.F90 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/state_point.F90 b/src/state_point.F90 index 74d0f60540..306fb8f37f 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -783,6 +783,9 @@ contains ! Open source file call sp % file_open(filename, 'r', serial = .false.) + ! Read file type + call sp % read_data(int_array(1), "filetype") + end if ! Write out source From 35ced559ffd8e1487a16f22f437e4b7a2337127c Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 29 Nov 2013 13:36:06 -0500 Subject: [PATCH 10/78] Added CMakeLists.txt. --- src/CMakeLists.txt | 148 +++++++++++++++++++++++ src/Makefile | 289 ++------------------------------------------- 2 files changed, 156 insertions(+), 281 deletions(-) create mode 100644 src/CMakeLists.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000000..5f4a6608f4 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,148 @@ +cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +project(openmc Fortran) + +#=============================================================================== +# Command line options +#=============================================================================== + +option(openmp "Enable shared-memory parallelism with OpenMP" OFF) +option(profile "Compile with profiling flags" OFF) +option(hdf5 "Enable HDF5 binary output" 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) + +#=============================================================================== +# MPI for distributed-memory parallelism +#=============================================================================== + +if($ENV{FC} MATCHES "mpi*") + find_package(MPI REQUIRED) + add_definitions(-DMPI) + include_directories(BEFORE "${MPI_Fortran_INCLUDE_PATH}") + set(f90flags ${MPI_Fortran_COMPILE_FLAGS} ${f90flags}) + set(libraries ${MPI_Fortran_LIBRARIES} ${libraries}) +endif() + +#=============================================================================== +# Set compile/link flags based on which compiler is being used +#=============================================================================== + +if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") + # GNU Fortran compiler options + set(f90flags "-cpp -std=f2008 -fbacktrace") + if(debug) + set(f90flags "-g -Wall -pedantic -fbounds-check -ffpe-trap=invalid,overflow,underflow ${f90flags}") + set(ldflags "-g") + endif() + if(profile) + set(f90flags "-pg ${f90flags}") + set(ldflags "-pg ${ldflags}") + endif() + if(optimize) + set(f90flags "-O3 ${f90flags}") + endif() + if(openmp) + set(f90flags "-fopenmp ${f90flags}") + set(ldflags "-fopenmp ${ldflags}") + add_definitions(-DOPENMP) + endif() + +elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") + # Intel Fortran compiler options + set(f90flags "-fpp -warn -assume byterecl -traceback") + if(debug) + set(f90flags "-g -ftrapuv -fp-stack-check -check all -fpe0 ${f90flags}") + set(ldflags "-g") + endif() + if(profile) + set(f90flags "-pg ${f90flags}") + set(ldflags "-pg ${ldflags}") + endif() + if(optimize) + set(f90flags "-O3 ${f90flags}") + endif() + if(openmp) + set(f90flags "-openmp ${f90flags}") + set(ldflags "-openmp ${ldflags}") + add_definitions(-DOPENMP) + endif() + +elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI") + # PGI Fortran compiler options + set(f90flags "-Mpreprocess -Minform=inform -traceback") + add_definitions(-DNO_F2008) + if(debug) + set(f90flags "-g -Mbounds -Mchkptr -Mchkstk ${f90flags}") + set(ldflags "-g") + endif() + if(profile) + set(f90flags "-pg ${f90flags}") + set(ldflags "-pg ${ldflags}") + endif() + if(optimize) + set(f90flags "-fast -Mipa ${f90flags}") + endif() + +elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "XL") + # IBM XL compiler options + set(f90flags "-WF,-DNO_F2008 -O2") + if(debug) + set(f90flags "-g -C -qflag=i:i -u") + set(ldflags "-g") + endif() + if(profile) + set(f90flags "-p ${f90flags}") + set(ldflags "-p ${ldflags}") + endif() + if(optimize) + set(f90flags "-O3 ${f90flags}") + endif() + if(openmp) + set(f90flags "-qsmp=omp -WF,-DOPENMP ${f90flags}") + set(ldflags "-qsmp=omp ${ldflags}") + endif() + +elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray") + # Cray Fortran compiler options + set(f90flags "-e Z -m 0") + if(debug) + set(f90flags "-g -R abcnsp -O0 ${f90flags}") + set(ldflags "-g") + endif() + +endif() + +#=============================================================================== +# HDF5 for binary output +#=============================================================================== + +if(hdf5) + find_package(HDF5 COMPONENTS Fortran Fortran_HL REQUIRED) + add_definitions(-DHDF5) + include_directories(BEFORE ${HDF5_INCLUDE_DIRS}) + set(libraries ${HDF5_LIBRARIES} ${HDF5_Fortran_LIBRARIES} ${HDF5_Fortran_HL_LIBRARIES} ${libraries}) +endif() + +#=============================================================================== +# PETSc for CMFD functionality +#=============================================================================== + +#=============================================================================== +# FoX Fortran XML Library +#=============================================================================== + +file(GLOB_RECURSE source_fox xml/*.F90) +add_library(fox STATIC ${source_fox}) + +#=============================================================================== +# Build OpenMC executable +#=============================================================================== + +set(program "openmc") +file(GLOB source *.F90) +add_executable(${program} ${source}) +target_link_libraries(${program} ${libraries} fox) +set_target_properties(${program} PROPERTIES + COMPILE_FLAGS "${f90flags}" + COMPILE_DEFINITIONS "${definitions}") diff --git a/src/Makefile b/src/Makefile index 03c370e07a..7b292eca7d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,283 +1,10 @@ -program = openmc -prefix = /usr/local - -source = $(wildcard *.F90) -objects = $(source:.F90=.o) -xml_lib = -Lxml/lib -lxml - -#=============================================================================== -# User Options -#=============================================================================== - -COMPILER = gnu -DEBUG = no -PROFILE = no -OPTIMIZE = no -MPI = no -OPENMP = no -HDF5 = no -PETSC = no - -#=============================================================================== -# External Library Paths -#=============================================================================== - -MPI_DIR = /opt/mpich/3.0.4-$(COMPILER) -HDF5_DIR = /opt/hdf5/1.8.11-$(COMPILER) -PHDF5_DIR = /opt/phdf5/1.8.11-$(COMPILER) -PETSC_DIR = /opt/petsc/3.4.2-$(COMPILER) - -#=============================================================================== -# Add git SHA-1 hash -#=============================================================================== - -GIT_SHA1 = $(shell git log -1 2>/dev/null | head -n 1 | awk '{print $$2}') - -#=============================================================================== -# GNU Fortran compiler options -#=============================================================================== - -ifeq ($(COMPILER),gnu) - F90 = gfortran - F90FLAGS := -cpp -std=f2008 -fbacktrace - LDFLAGS = - - # Debugging - ifeq ($(DEBUG),yes) - F90FLAGS += -g -Wall -pedantic -fbounds-check \ - -ffpe-trap=invalid,overflow,underflow - LDFLAGS += -g - endif - - # Profiling - ifeq ($(PROFILE),yes) - F90FLAGS += -pg - LDFLAGS += -pg - endif - - # Optimization - ifeq ($(OPTIMIZE),yes) - F90FLAGS += -O3 - endif -endif - -#=============================================================================== -# Intel Fortran compiler options -#=============================================================================== - -ifeq ($(COMPILER),intel) - F90 = ifort - F90FLAGS := -fpp -std08 -assume byterecl -traceback - LDFLAGS = - - # Debugging - ifeq ($(DEBUG),yes) - F90FLAGS += -g -warn -ftrapuv -fp-stack-check -check all -fpe0 - LDFLAGS += -g - endif - - # Profiling - ifeq ($(PROFILE),yes) - F90FLAGS += -pg - LDFLAGS += -pg - endif - - # Optimization - ifeq ($(OPTIMIZE),yes) - F90FLAGS += -O3 - endif -endif - -#=============================================================================== -# PGI compiler options -#=============================================================================== - -ifeq ($(COMPILER),pgi) - F90 = pgf90 - F90FLAGS := -Mpreprocess -DNO_F2008 -Minform=inform -traceback - LDFLAGS = - - # Debugging - ifeq ($(DEBUG),yes) - F90FLAGS += -g -Mbounds -Mchkptr -Mchkstk - LDFLAGS += -g - endif - - # Profiling - ifeq ($(PROFILE),yes) - F90FLAGS += -pg - LDFLAGS += -pg - endif - - # Optimization - ifeq ($(OPTIMIZE),yes) - F90FLAGS += -fast -Mipa - endif -endif - -#=============================================================================== -# IBM XL compiler options -#=============================================================================== - -ifeq ($(COMPILER),ibm) - F90 = xlf2003 - F90FLAGS := -WF,-DNO_F2008 -O2 - - # Debugging - ifeq ($(DEBUG),yes) - F90FLAGS += -g -C -qflag=i:i -u - LDFLAGS += -g - endif - - # Profiling - ifeq ($(PROFILE),yes) - F90FLAGS += -p - LDFLAGS += -p - endif - - # Optimization - ifeq ($(OPTIMIZE),yes) - F90FLAGS += -O3 - endif -endif - -#=============================================================================== -# Cray compiler options -#=============================================================================== - -ifeq ($(COMPILER),cray) - F90 = ftn - F90FLAGS := -e Z -m 0 - - # Debugging - ifeq ($(DEBUG),yes) - F90FLAGS += -g -R abcnsp -O0 - LDFLAGS += -g - endif -endif - -#=============================================================================== -# Setup External Libraries -#=============================================================================== - -# MPI for distributed-memory parallelism and HDF5 for I/O - -ifeq ($(MPI),yes) - ifeq ($(HDF5),yes) - F90 = $(PHDF5_DIR)/bin/h5pfc - F90FLAGS += -DHDF5 - else - F90 = $(MPI_DIR)/bin/mpif90 - endif - F90FLAGS += -DMPI -else - ifeq ($(HDF5),yes) - F90 = $(HDF5_DIR)/bin/h5fc - F90FLAGS += -DHDF5 - endif -endif - -# OpenMP for shared-memory parallelism - -ifeq ($(OPENMP),yes) - ifeq ($(COMPILER),intel) - F90FLAGS += -openmp -DOPENMP - LDFLAGS += -openmp - endif - - ifeq ($(COMPILER),gnu) - F90FLAGS += -fopenmp -DOPENMP - LDFLAGS += -fopenmp - endif - - ifeq ($(COMPILER),ibm) - F90FLAGS += -qsmp=omp -WF,-DOPENMP - LDFLAGS += -qsmp=omp - endif -endif - -# PETSC for CMFD functionality - -ifeq ($(PETSC),yes) - # Check to make sure MPI is set - ifneq ($(MPI),yes) - $(error MPI must be enabled to compile with PETSC!) - endif - - # Set up PETSc environment - include $(PETSC_DIR)/conf/petscvariables - F90FLAGS += -I$(PETSC_DIR)/include -DPETSC - LDFLAGS += $(PETSC_LIB) -endif - -#=============================================================================== -# Machine-specific setup -#=============================================================================== - -# IBM Blue Gene/P ANL supercomputer - -ifeq ($(MACHINE),bluegene) - F90 = /bgsys/drivers/ppcfloor/comm/xl/bin/mpixlf2003 - F90FLAGS = -WF,-DNO_F2008,-DMPI -O3 - LDFLAGS = -lmpich.cnkf90 -endif - -# Cray XK6 ORNL Titan supercomputer - -ifeq ($(MACHINE),crayxk6) - F90 = ftn - F90FLAGS += -DMPI -endif - -# IBM Blue Gene/Q ANL supercomputer - -ifeq ($(MACHINE),bluegeneq) - F90 = mpixlf2003 - F90FLAGS = -WF,-DNO_F2008,-DMPI -O5 -endif - -#=============================================================================== -# Targets -#=============================================================================== - -all: xml $(program) -xml: - cd xml; make MACHINE=$(MACHINE) F90=$(F90) F90FLAGS="$(F90FLAGS)" LDFLAGS="$(LDFLAGS)" -$(program): $(objects) - $(F90) $(objects) $(xml_lib) $(LDFLAGS) -o $@ -install: - @install -D $(program) $(DESTDIR)$(prefix)/bin/$(program) - @install -D utils/statepoint_cmp.py $(DESTDIR)$(prefix)/bin/statepoint_cmp - @install -D utils/statepoint_histogram.py $(DESTDIR)$(prefix)/bin/statepoint_histogram - @install -D utils/statepoint_meshplot.py $(DESTDIR)$(prefix)/bin/statepoint_meshplot - @install -D ../man/man1/openmc.1 $(DESTDIR)$(prefix)/share/man/man1/openmc.1 - @install -D ../LICENSE $(DESTDIR)$(prefix)/share/doc/$(program)/copyright -uninstall: - @rm $(DESTDIR)$(prefix)/bin/$(program) - @rm $(DESTDIR)$(prefix)/bin/statepoint_cmp - @rm $(DESTDIR)$(prefix)/bin/statepoint_histogram - @rm $(DESTDIR)$(prefix)/bin/statepoint_meshplot - @rm $(DESTDIR)$(prefix)/share/man/man1/openmc.1 - @rm $(DESTDIR)$(prefix)/share/doc/$(program)/copyright -distclean: clean - cd xml; make clean +all: + mkdir -p build + cmake -H. -Bbuild + make -s -C build clean: - @rm -f *.o *.mod $(program) -neat: - @rm -f *.o *.mod + make -s -C build clean +distclean: + rm -fr build -#=============================================================================== -# Rules -#=============================================================================== - -.SUFFIXES: .F90 .o -.PHONY: all xml install uninstall clean neat distclean - -%.o: %.F90 - $(F90) $(F90FLAGS) -DGIT_SHA1="\"$(GIT_SHA1)\"" -Ixml/include -c $< - -#=============================================================================== -# Dependencies -#=============================================================================== - -include DEPENDENCIES +.PHONY: all clean distclean From 049b894bb60a135f668e4be6742d3db7c034bd59 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 29 Nov 2013 13:43:48 -0500 Subject: [PATCH 11/78] Fixed regex in CMakeLists.txt so that MPI detection works. --- src/CMakeLists.txt | 2 +- src/output_interface.F90 | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5f4a6608f4..8883a331ea 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,7 +16,7 @@ option(optimize "Turn on all compiler optimization flags" OFF) # MPI for distributed-memory parallelism #=============================================================================== -if($ENV{FC} MATCHES "mpi*") +if($ENV{FC} MATCHES "mpi.*") find_package(MPI REQUIRED) add_definitions(-DMPI) include_directories(BEFORE "${MPI_Fortran_INCLUDE_PATH}") diff --git a/src/output_interface.F90 b/src/output_interface.F90 index f7b342e506..3c04ba36d4 100644 --- a/src/output_interface.F90 +++ b/src/output_interface.F90 @@ -7,7 +7,8 @@ module output_interface #ifdef HDF5 use hdf5_interface -#elif MPI +#endif +#ifdef MPI use mpiio_interface #endif From 6e4bfb406502a873a8bd5f685d66a8d608726d6d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 20:03:31 -0500 Subject: [PATCH 12/78] Add verbose option to CMakeLists.txt. --- src/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8883a331ea..bfffce3bc6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,6 +11,11 @@ option(hdf5 "Enable HDF5 binary output" OFF) option(petsc "Enable PETSC for use in CMFD acceleration" OFF) option(debug "Compile with debug flags" OFF) option(optimize "Turn on all compiler optimization flags" OFF) +option(verbose "Create verbose Makefiles" OFF) + +if (verbose) + set(CMAKE_VERBOSE_MAKEFILE on) +endif() #=============================================================================== # MPI for distributed-memory parallelism From 36a76deb71c44543af2355c80d039f26cc716498 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 20:32:16 -0500 Subject: [PATCH 13/78] Check for MPI/HDF5/PHDF5 wrapper using FC environment variable. --- src/CMakeLists.txt | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bfffce3bc6..4cb27f8ed2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,6 @@ project(openmc Fortran) option(openmp "Enable shared-memory parallelism with OpenMP" OFF) option(profile "Compile with profiling flags" OFF) -option(hdf5 "Enable HDF5 binary output" 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) @@ -18,15 +17,18 @@ if (verbose) endif() #=============================================================================== -# MPI for distributed-memory parallelism +# MPI for distributed-memory parallelism / HDF5 for binary output #=============================================================================== if($ENV{FC} MATCHES "mpi.*") - find_package(MPI REQUIRED) + message("-- Detected MPI wrapper: $ENV{FC}") add_definitions(-DMPI) - include_directories(BEFORE "${MPI_Fortran_INCLUDE_PATH}") - set(f90flags ${MPI_Fortran_COMPILE_FLAGS} ${f90flags}) - set(libraries ${MPI_Fortran_LIBRARIES} ${libraries}) +elseif($ENV{FC} MATCHES "h5fc$") + message("-- Detected HDF5 wrapper: $ENV{FC}") + add_definitions(-DHDF5) +elseif($ENV{FC} MATCHES "h5pfc$") + message("-- Detected parallel HDF5 wrapper: $ENV{FC}") + add_definitions(-DMPI -DHDF5) endif() #=============================================================================== @@ -118,17 +120,6 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Cray") endif() -#=============================================================================== -# HDF5 for binary output -#=============================================================================== - -if(hdf5) - find_package(HDF5 COMPONENTS Fortran Fortran_HL REQUIRED) - add_definitions(-DHDF5) - include_directories(BEFORE ${HDF5_INCLUDE_DIRS}) - set(libraries ${HDF5_LIBRARIES} ${HDF5_Fortran_LIBRARIES} ${HDF5_Fortran_HL_LIBRARIES} ${libraries}) -endif() - #=============================================================================== # PETSc for CMFD functionality #=============================================================================== From bdcc88d319746fee33e3af6d54b254bbf9fe2d21 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 21:29:34 -0500 Subject: [PATCH 14/78] Add LINK_FLAGS to openmc target. --- src/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4cb27f8ed2..731d173917 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -141,4 +141,5 @@ add_executable(${program} ${source}) target_link_libraries(${program} ${libraries} fox) set_target_properties(${program} PROPERTIES COMPILE_FLAGS "${f90flags}" - COMPILE_DEFINITIONS "${definitions}") + COMPILE_DEFINITIONS "${definitions}" + LINK_FLAGS "${ldflags}") From 9d3d3b403c27eec0ad542411c3ee00993be73146 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 21:55:47 -0500 Subject: [PATCH 15/78] Ability to build with PETSc by setting PETSC_DIR environment variable. --- src/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 731d173917..c432fec01e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -124,6 +124,15 @@ endif() # PETSc for CMFD functionality #=============================================================================== +if(petsc) + find_package(PETSc REQUIRED HINTS $ENV{PETSC_DIR}/conf) + find_library(libpetsc petsc $ENV{PETSC_DIR}/lib) + message("-- Using PETSC: ${libpetsc}") + add_definitions(-DPETSC) + set(f90flags "-I$ENV{PETSC_DIR}/include ${f90flags}") + set(libraries "${PETSC_PACKAGE_LIBS};${libpetsc};${libraries}") +endif() + #=============================================================================== # FoX Fortran XML Library #=============================================================================== From f4c250a9810c118e7b7b668c733f5eaedb54d821 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 22:09:35 -0500 Subject: [PATCH 16/78] Set output directories in CMakeLists.txt. --- src/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c432fec01e..8283383c29 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,12 @@ cmake_minimum_required(VERSION 2.8 FATAL_ERROR) project(openmc Fortran) +# Setup output directories +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/include) + #=============================================================================== # Command line options #=============================================================================== From d87fb3535e8665ca6f205f7e4a0ae1d171951c12 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 1 Dec 2013 22:11:37 -0500 Subject: [PATCH 17/78] Use include_directories instead of manually adding -I flag. --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8283383c29..e9bde56757 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -135,7 +135,7 @@ if(petsc) find_library(libpetsc petsc $ENV{PETSC_DIR}/lib) message("-- Using PETSC: ${libpetsc}") add_definitions(-DPETSC) - set(f90flags "-I$ENV{PETSC_DIR}/include ${f90flags}") + include_directories($ENV{PETSC_DIR}/include) set(libraries "${PETSC_PACKAGE_LIBS};${libpetsc};${libraries}") endif() From 727ec960151fe603bf1269cf4601e7a83d580ba4 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 5 Dec 2013 23:32:08 -0500 Subject: [PATCH 18/78] Add installation of executable, scripts, files. --- src/CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e9bde56757..ce8dfdd2c9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -158,3 +158,20 @@ set_target_properties(${program} PROPERTIES COMPILE_FLAGS "${f90flags}" COMPILE_DEFINITIONS "${definitions}" LINK_FLAGS "${ldflags}") + +#=============================================================================== +# Install executable, scripts, manpage, license +#=============================================================================== + +install(TARGETS ${program} RUNTIME DESTINATION bin) +install(PROGRAMS utils/statepoint_cmp.py + DESTINATION bin + RENAME statepoint_cmp) +install(PROGRAMS utils/statepoint_histogram.py + DESTINATION bin + RENAME statepoint_histogram) +install(PROGRAMS utils/statepoint_meshplot.py + DESTINATION bin + RENAME statepoint_meshplot) +install(FILES ../man/man1/openmc.1 DESTINATION share/man/man1) +install(FILES ../LICENSE DESTINATION "share/doc/${program}/copyright") From 9058b7b490524e0164fdad880fbc9938753006d9 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Mon, 9 Dec 2013 12:24:20 -0500 Subject: [PATCH 19/78] Fixed non-(current)standard usage of L(I) for Laws 4, 44, 61, 67. Error will be thrown. --- src/ace.F90 | 83 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/src/ace.F90 b/src/ace.F90 index d54aa83c28..4673898c0c 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -161,16 +161,16 @@ contains mat % i_sab_tables(m) = temp_table end do SORT_SAB end if - + ! Deallocate temporary arrays for names of nuclides and S(a,b) tables if (allocated(mat % names)) deallocate(mat % names) if (allocated(mat % sab_names)) deallocate(mat % sab_names) end do MATERIAL_LOOP2 - + ! Avoid some valgrind leak errors call already_read % clear() - + end subroutine read_xs !=============================================================================== @@ -253,7 +253,7 @@ contains end if ! Read more header and NXS and JXS - read(UNIT=in, FMT=100) comment, mat, & + read(UNIT=in, FMT=100) comment, mat, & (zaids(i), awrs(i), i=1,16), NXS, JXS 100 format(A70,A10/4(I7,F11.0)/4(I7,F11.0)/4(I7,F11.0)/4(I7,F11.0)/& ,8I9/8I9/8I9/8I9/8I9/8I9) @@ -277,7 +277,7 @@ contains ACCESS='direct', RECL=record_length) ! Read all header information - read(UNIT=in, REC=location) name, awr, kT, date_, & + read(UNIT=in, REC=location) name, awr, kT, date_, & comment, mat, (zaids(i), awrs(i), i=1,16), NXS, JXS ! determine table length @@ -406,7 +406,7 @@ contains integer :: LNU ! type of nu data (polynomial or tabular) integer :: NC ! number of polynomial coefficients integer :: NR ! number of interpolation regions - integer :: NE ! number of energies + integer :: NE ! number of energies integer :: NPCR ! number of delayed neutron precursor groups integer :: LED ! location of energy distribution locators integer :: LDIS ! location of all energy distributions @@ -809,7 +809,7 @@ contains LED = JXS(10) - ! Loop over all reactions + ! Loop over all reactions do i = 1, NXS(5) rxn => nuc % reactions(i+1) ! skip over elastic scattering rxn % has_energy_dist = .true. @@ -840,7 +840,7 @@ contains integer :: LDIS ! location of all energy distributions integer :: LNW ! location of next energy distribution if multiple - integer :: LAW ! secondary energy distribution law + integer :: LAW ! secondary energy distribution law integer :: NR ! number of interpolation regions integer :: NE ! number of incoming energies integer :: IDAT ! location of first energy distribution for given MT @@ -934,6 +934,7 @@ contains integer :: NEa ! number of energies for Watt 'a' integer :: NRb ! number of interpolation regions for Watt 'b' integer :: NEb ! number of energies for Watt 'b' + real(8), allocatable :: L(:) ! locations of distributions for each Ein ! initialize length length = 0 @@ -958,6 +959,22 @@ contains ! Continuous tabular distribution NR = int(XSS(lc + 1)) NE = int(XSS(lc + 2 + 2*NR)) + ! Before progressing, check to see if data set uses L(I) values + ! in a way inconsistent with the current form of the ACE Format Guide + ! (MCNP5 Manual, Vol 3) + allocate(L(NE)) + L = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) + do i = 1,NE + ! Now check to see if L(i) is equal to any other entries + ! If so, then we must exit + if (count(L == L(i)) > 1) then + message = "Invalid usage of L(I) in ACE data; & + &Consider using more recent data set." + call fatal_error() + end if + end do + deallocate(L) + ! Continue with finding data length length = length + 2 + 2*NR + 2*NE do i = 1,NE ! determine length @@ -1000,6 +1017,22 @@ contains ! Kalbach-Mann correlated scattering NR = int(XSS(lc + 1)) NE = int(XSS(lc + 2 + 2*NR)) + ! Before progressing, check to see if data set uses L(I) values + ! in a way inconsistent with the current form of the ACE Format Guide + ! (MCNP5 Manual, Vol 3) + allocate(L(NE)) + L = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) + do i = 1,NE + ! Now check to see if L(i) is equal to any other entries + ! If so, then we must exit + if (count(L == L(i)) > 1) then + message = "Invalid usage of L(I) in ACE data; & + &Consider using more recent data set." + call fatal_error() + end if + end do + deallocate(L) + ! Continue with finding data length length = length + 2 + 2*NR + 2*NE do i = 1,NE NP = int(XSS(lc + length + 2)) @@ -1014,6 +1047,22 @@ contains ! Correlated energy and angle distribution NR = int(XSS(lc + 1)) NE = int(XSS(lc + 2 + 2*NR)) + ! Before progressing, check to see if data set uses L(I) values + ! in a way inconsistent with the current form of the ACE Format Guide + ! (MCNP5 Manual, Vol 3) + allocate(L(NE)) + L = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) + do i = 1,NE + ! Now check to see if L(i) is equal to any other entries + ! If so, then we must exit + if (count(L == L(i)) > 1) then + message = "Invalid usage of L(I) in ACE data; & + &Consider using more recent data set." + call fatal_error() + end if + end do + deallocate(L) + ! Continue with finding data length length = length + 2 + 2*NR + 2*NE do i = 1,NE ! outgoing energy distribution @@ -1046,6 +1095,22 @@ contains ! Laboratory energy-angle law NR = int(XSS(lc + 1)) NE = int(XSS(lc + 2 + 2*NR)) + ! Before progressing, check to see if data set uses L(I) values + ! in a way inconsistent with the current form of the ACE Format Guide + ! (MCNP5 Manual, Vol 3) + allocate(L(NE)) + L = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) + do i = 1,NE + ! Now check to see if L(i) is equal to any other entries + ! If so, then we must exit + if (count(L == L(i)) > 1) then + message = "Invalid usage of L(I) in ACE data; & + &Consider using more recent data set." + call fatal_error() + end if + end do + deallocate(L) + ! Continue with finding data length NMU = int(XSS(lc + 4 + 2*NR + 2*NE)) length = 4 + 2*(NR + NE + NMU) @@ -1188,7 +1253,7 @@ contains integer :: NMU ! number of outgoing angles integer :: JXS4 ! location of elastic energy table - ! read secondary energy mode for inelastic scattering and check + ! read secondary energy mode for inelastic scattering table % secondary_mode = NXS(7) if (table % secondary_mode /= SAB_SECONDARY_EQUAL .and. & table % secondary_mode /= SAB_SECONDARY_SKEWED) then From 8fe5014b6d5f16fe3498d4e8e172431e00e9c055 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Mon, 9 Dec 2013 12:31:27 -0500 Subject: [PATCH 20/78] Updated troubleshooting documentation to reflect the new error message for the invalid L(I) usage. --- docs/source/usersguide/troubleshoot.rst | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/source/usersguide/troubleshoot.rst b/docs/source/usersguide/troubleshoot.rst index a13272aa65..ba7e4405cc 100644 --- a/docs/source/usersguide/troubleshoot.rst +++ b/docs/source/usersguide/troubleshoot.rst @@ -79,6 +79,14 @@ with the :envvar:`CROSS_SECTIONS` environment variable. It is recommended to add a line in your ``.profile`` or ``.bash_profile`` setting the :envvar:`CROSS_SECTIONS` environment variable. +ERROR: Invalid usage of L(I) in ACE data; Consider using more recent data set. +****************************************************************************** + +The cross-sections requested in ``materials.xml`` do not conform to the current +standard format. This typically happens with fissionable nuclides in a ``.6*c`` +library as distributed with MCNP. Please try a newer library such as any from +the ``.7*c`` set. + Geometry Debugging ****************** @@ -107,8 +115,8 @@ have many particles travelling through them there will not be many locations where overlaps are checked for in that region. The user should refer to the output after a geometry debug run to see how many checks were performed in each cell, and then adjust the number of starting particles or starting source -distributions accordingly to achieve good coverage. - +distributions accordingly to achieve good coverage. + ERROR: After particle __ crossed surface __ it could not be located in any cell and it did not leak. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From d6957a25240abd28b399dc78a2532b60dafbbc02 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 12 Dec 2013 22:54:42 -0500 Subject: [PATCH 21/78] Started writing script to download ACE files from NNDC site. --- data/get_nndc_data.py | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 data/get_nndc_data.py diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py new file mode 100755 index 0000000000..7bb3b2c6ea --- /dev/null +++ b/data/get_nndc_data.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +from __future__ import print_function +import tarfile +import urllib2 + +baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/' +files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz', + 'ENDF-B-VII.1-neutron-300K.tar.gz', + 'ENDF-B-VII.1-neutron-900K.tar.gz', + 'ENDF-B-VII.1-neutron-1500K.tar.gz', + 'ENDF-B-VII.1-tsl.tar.gz'] +block_size = 16384 + +# ============================================================================== +# DOWNLOAD FILES FROM NNDC SITE + +filesComplete = [] +for f in files: + # Establish connection to URL + url = baseUrl + f + print('Downloading {0}... '.format(f), end='') + req = urllib2.urlopen(url) + + # Get file size from header + file_size = int(req.info().getheaders("Content-Length")[0]) + downloaded = 0 + + # Copy file to disk + with open(f, 'wb') as fh: + while True: + chunk = req.read(block_size) + if not chunk: break + fh.write(chunk) + downloaded += len(chunk) + status = "{0:10} [{1:3.2f}%]".format(downloaded, downloaded * 100. / file_size) + print(status + chr(8)*len(status), end='') + filesComplete.append(f) + +# ============================================================================== +# EXTRACT FILES FROM TGZ + +for f in files: + if not f in filesComplete: + continue + + with tarfile.open(f, 'r') as tgz: + tgz.extractall(path='nndc') From 6ba3c48c5af0a42950b3469d65b6dff5d1211c3d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 19 Dec 2013 10:54:02 -0500 Subject: [PATCH 22/78] Check for file already downloaded. Rename xsdir. --- data/get_nndc_data.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index 7bb3b2c6ea..0f943d684c 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -1,6 +1,8 @@ #!/usr/bin/env python from __future__ import print_function +import os +import os.path import tarfile import urllib2 @@ -19,22 +21,33 @@ filesComplete = [] for f in files: # Establish connection to URL url = baseUrl + f - print('Downloading {0}... '.format(f), end='') req = urllib2.urlopen(url) # Get file size from header - file_size = int(req.info().getheaders("Content-Length")[0]) + file_size = int(req.info().getheaders('Content-Length')[0]) downloaded = 0 + # Check if file already downloaded + if os.path.exists(f): + if os.path.getsize(f) == file_size: + print('Skipping ' + f) + continue + else: + overwrite = raw_input('Overwrite {0}? ([y]/n) '.format(f)) + if overwrite.lower().startswith('n'): + continue + # Copy file to disk + print('Downloading {0}... '.format(f), end='') with open(f, 'wb') as fh: while True: chunk = req.read(block_size) if not chunk: break fh.write(chunk) downloaded += len(chunk) - status = "{0:10} [{1:3.2f}%]".format(downloaded, downloaded * 100. / file_size) + status = '{0:10} [{1:3.2f}%]'.format(downloaded, downloaded * 100. / file_size) print(status + chr(8)*len(status), end='') + print('') filesComplete.append(f) # ============================================================================== @@ -44,5 +57,11 @@ for f in files: if not f in filesComplete: continue + # Extract files with tarfile.open(f, 'r') as tgz: tgz.extractall(path='nndc') + + # Give xsdir a unique name + xsdir = 'nndc/xsdir' + if os.path.exists(xsdir): + os.rename(xsdir, xsdir + '_' + f.strip('.tar.gz')) From be6b7ea90db74750558d66afbe6e23aebd4130d5 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Mon, 6 Jan 2014 09:41:48 -0500 Subject: [PATCH 23/78] added check if source is written to statepoint file that the statepoint will exist --- src/input_xml.F90 | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index e8d602c356..cc12d0c41d 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -57,6 +57,7 @@ contains integer, allocatable :: temp_int_array(:) integer(8) :: temp_long logical :: file_exists + logical :: check character(MAX_FILE_LEN) :: env_variable character(MAX_WORD_LEN) :: type character(MAX_LINE_LEN) :: filename @@ -612,13 +613,13 @@ contains call statepoint_batch % add(n_batches) end if - ! Check if the user has specified to write state points + ! Check if the user has specified to write source points if (check_for_node(doc, "source_point")) then ! Get pointer to source_point node call get_node_ptr(doc, "source_point", node_sp) - ! Determine number of batches at which to store state points + ! Determine number of batches at which to store source points if (check_for_node(node_sp, "batches")) then n_source_points = get_arraysize_integer(node_sp, "batches") else @@ -626,7 +627,7 @@ contains end if if (n_source_points > 0) then - ! User gave specific batches to write state points + ! User gave specific batches to write source points allocate(temp_int_array(n_source_points)) call get_node_array(node_sp, "batches", temp_int_array) do i = 1, n_source_points @@ -634,14 +635,14 @@ contains end do deallocate(temp_int_array) elseif (check_for_node(node_sp, "interval")) then - ! User gave an interval for writing state points + ! User gave an interval for writing source points call get_node_value(node_sp, "interval", temp_int) n_source_points = n_batches / temp_int do i = 1, n_source_points call sourcepoint_batch % add(temp_int * i) end do else - ! If neither were specified, write state point at last batch + ! If neither were specified, write source points with state points n_source_points = n_state_points do i = 1, n_state_points call sourcepoint_batch % add(statepoint_batch % get_item(i)) @@ -658,8 +659,8 @@ contains if (check_for_node(node_sp, "source_write")) then call get_node_value(node_sp, "source_write", temp_str) call lower_case(temp_str) - if (trim(temp_str) == 'true' .or. & - trim(temp_str) == '1') source_separate = .true. + if (trim(temp_str) == 'false' .or. & + trim(temp_str) == '0') source_write = .false. end if if (check_for_node(node_sp, "overwrite_latest")) then call get_node_value(node_sp, "overwrite_latest", temp_str) @@ -677,6 +678,21 @@ contains end do end if + ! If source is not seperate and is to be written out in the statepoint file, + ! make sure that the sourcepoint batch numbers are contained in the + ! statepoint list + if (.not. source_separate) then + check = .true. + do i = 1, n_source_points + check = statepoint_batch % contains(sourcepoint_batch % get_item(i)) + if (.not. check) then + message = 'Sourcepoint batches are not a subset& + & of statepoint batches.' + call fatal_error() + end if + end do + end if + ! Check if the user has specified to not reduce tallies at the end of every ! batch if (check_for_node(doc, "no_reduce")) then From 036eb081c10349900b29bd17eec0cfed2dc6ab2d Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Mon, 6 Jan 2014 09:57:45 -0500 Subject: [PATCH 24/78] added new tests for sourcepoint --- tests/test_sourcepoint_batch/geometry.xml | 8 ++++ tests/test_sourcepoint_batch/materials.xml | 9 ++++ tests/test_sourcepoint_batch/results.py | 32 +++++++++++++ tests/test_sourcepoint_batch/results_true.dat | 3 ++ tests/test_sourcepoint_batch/settings.xml | 19 ++++++++ .../test_sourcepoint_batch.py | 44 +++++++++++++++++ tests/test_sourcepoint_interval/geometry.xml | 8 ++++ tests/test_sourcepoint_interval/materials.xml | 9 ++++ tests/test_sourcepoint_interval/results.py | 32 +++++++++++++ .../results_true.dat | 3 ++ tests/test_sourcepoint_interval/settings.xml | 19 ++++++++ .../test_sourcepoint_interval.py | 44 +++++++++++++++++ tests/test_sourcepoint_latest/geometry.xml | 8 ++++ tests/test_sourcepoint_latest/materials.xml | 9 ++++ tests/test_sourcepoint_latest/results.py | 25 ++++++++++ .../test_sourcepoint_latest/results_test.dat | 2 + .../test_sourcepoint_latest/results_true.dat | 3 ++ tests/test_sourcepoint_latest/settings.xml | 18 +++++++ .../test_sourcepoint_latest.py | 48 +++++++++++++++++++ 19 files changed, 343 insertions(+) create mode 100644 tests/test_sourcepoint_batch/geometry.xml create mode 100644 tests/test_sourcepoint_batch/materials.xml create mode 100644 tests/test_sourcepoint_batch/results.py create mode 100644 tests/test_sourcepoint_batch/results_true.dat create mode 100644 tests/test_sourcepoint_batch/settings.xml create mode 100644 tests/test_sourcepoint_batch/test_sourcepoint_batch.py create mode 100644 tests/test_sourcepoint_interval/geometry.xml create mode 100644 tests/test_sourcepoint_interval/materials.xml create mode 100644 tests/test_sourcepoint_interval/results.py create mode 100644 tests/test_sourcepoint_interval/results_true.dat create mode 100644 tests/test_sourcepoint_interval/settings.xml create mode 100644 tests/test_sourcepoint_interval/test_sourcepoint_interval.py create mode 100644 tests/test_sourcepoint_latest/geometry.xml create mode 100644 tests/test_sourcepoint_latest/materials.xml create mode 100644 tests/test_sourcepoint_latest/results.py create mode 100644 tests/test_sourcepoint_latest/results_test.dat create mode 100644 tests/test_sourcepoint_latest/results_true.dat create mode 100644 tests/test_sourcepoint_latest/settings.xml create mode 100644 tests/test_sourcepoint_latest/test_sourcepoint_latest.py diff --git a/tests/test_sourcepoint_batch/geometry.xml b/tests/test_sourcepoint_batch/geometry.xml new file mode 100644 index 0000000000..612e46132e --- /dev/null +++ b/tests/test_sourcepoint_batch/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/test_sourcepoint_batch/materials.xml b/tests/test_sourcepoint_batch/materials.xml new file mode 100644 index 0000000000..1f85510e0d --- /dev/null +++ b/tests/test_sourcepoint_batch/materials.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_sourcepoint_batch/results.py b/tests/test_sourcepoint_batch/results.py new file mode 100644 index 0000000000..9b0f577eb0 --- /dev/null +++ b/tests/test_sourcepoint_batch/results.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +import sys + +# import statepoint +sys.path.append('../../src/utils') +import statepoint + +# read in statepoint file +if len(sys.argv) > 1: + sp = statepoint.StatePoint(sys.argv[1]) +else: + sp = statepoint.StatePoint('statepoint.8.binary') +sp.read_results() +sp.read_source() + +# set up output string +outstr = '' + +# write out k-combined +outstr += 'k-combined:\n' +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) + +# write out xyz +xyz = sp.source[0].xyz +for i in xyz: + outstr += "{0:12.6E} ".format(i) +outstr += "\n" + +# write results to file +with open('results_test.dat','w') as fh: + fh.write(outstr) diff --git a/tests/test_sourcepoint_batch/results_true.dat b/tests/test_sourcepoint_batch/results_true.dat new file mode 100644 index 0000000000..748df0351e --- /dev/null +++ b/tests/test_sourcepoint_batch/results_true.dat @@ -0,0 +1,3 @@ +k-combined: +0.000000E+00 0.000000E+00 +-9.438655E-02 -4.436810E+00 -2.416825E+00 diff --git a/tests/test_sourcepoint_batch/settings.xml b/tests/test_sourcepoint_batch/settings.xml new file mode 100644 index 0000000000..c816fe700e --- /dev/null +++ b/tests/test_sourcepoint_batch/settings.xml @@ -0,0 +1,19 @@ + + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + diff --git a/tests/test_sourcepoint_batch/test_sourcepoint_batch.py b/tests/test_sourcepoint_batch/test_sourcepoint_batch.py new file mode 100644 index 0000000000..78d202e405 --- /dev/null +++ b/tests/test_sourcepoint_batch/test_sourcepoint_batch.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +from nose_mpi import NoseMPI +import glob + +pwd = os.path.dirname(__file__) + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + +def test_run(): + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_statepoint_exists(): + statepoint = glob.glob(pwd + '/statepoint.*') + assert len(statepoint) == 5 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_results(): + statepoint = glob.glob(pwd + '/statepoint.8.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def teardown(): + output = glob.glob(pwd + '/statepoint.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) diff --git a/tests/test_sourcepoint_interval/geometry.xml b/tests/test_sourcepoint_interval/geometry.xml new file mode 100644 index 0000000000..612e46132e --- /dev/null +++ b/tests/test_sourcepoint_interval/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/test_sourcepoint_interval/materials.xml b/tests/test_sourcepoint_interval/materials.xml new file mode 100644 index 0000000000..1f85510e0d --- /dev/null +++ b/tests/test_sourcepoint_interval/materials.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_sourcepoint_interval/results.py b/tests/test_sourcepoint_interval/results.py new file mode 100644 index 0000000000..9b0f577eb0 --- /dev/null +++ b/tests/test_sourcepoint_interval/results.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +import sys + +# import statepoint +sys.path.append('../../src/utils') +import statepoint + +# read in statepoint file +if len(sys.argv) > 1: + sp = statepoint.StatePoint(sys.argv[1]) +else: + sp = statepoint.StatePoint('statepoint.8.binary') +sp.read_results() +sp.read_source() + +# set up output string +outstr = '' + +# write out k-combined +outstr += 'k-combined:\n' +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) + +# write out xyz +xyz = sp.source[0].xyz +for i in xyz: + outstr += "{0:12.6E} ".format(i) +outstr += "\n" + +# write results to file +with open('results_test.dat','w') as fh: + fh.write(outstr) diff --git a/tests/test_sourcepoint_interval/results_true.dat b/tests/test_sourcepoint_interval/results_true.dat new file mode 100644 index 0000000000..748df0351e --- /dev/null +++ b/tests/test_sourcepoint_interval/results_true.dat @@ -0,0 +1,3 @@ +k-combined: +0.000000E+00 0.000000E+00 +-9.438655E-02 -4.436810E+00 -2.416825E+00 diff --git a/tests/test_sourcepoint_interval/settings.xml b/tests/test_sourcepoint_interval/settings.xml new file mode 100644 index 0000000000..d0b8fa71d3 --- /dev/null +++ b/tests/test_sourcepoint_interval/settings.xml @@ -0,0 +1,19 @@ + + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + diff --git a/tests/test_sourcepoint_interval/test_sourcepoint_interval.py b/tests/test_sourcepoint_interval/test_sourcepoint_interval.py new file mode 100644 index 0000000000..78d202e405 --- /dev/null +++ b/tests/test_sourcepoint_interval/test_sourcepoint_interval.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +from nose_mpi import NoseMPI +import glob + +pwd = os.path.dirname(__file__) + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + +def test_run(): + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_statepoint_exists(): + statepoint = glob.glob(pwd + '/statepoint.*') + assert len(statepoint) == 5 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_results(): + statepoint = glob.glob(pwd + '/statepoint.8.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def teardown(): + output = glob.glob(pwd + '/statepoint.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) diff --git a/tests/test_sourcepoint_latest/geometry.xml b/tests/test_sourcepoint_latest/geometry.xml new file mode 100644 index 0000000000..612e46132e --- /dev/null +++ b/tests/test_sourcepoint_latest/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/test_sourcepoint_latest/materials.xml b/tests/test_sourcepoint_latest/materials.xml new file mode 100644 index 0000000000..1f85510e0d --- /dev/null +++ b/tests/test_sourcepoint_latest/materials.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_sourcepoint_latest/results.py b/tests/test_sourcepoint_latest/results.py new file mode 100644 index 0000000000..8ff10971cd --- /dev/null +++ b/tests/test_sourcepoint_latest/results.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import sys + +# import statepoint +sys.path.append('../../src/utils') +import statepoint + +# read in statepoint file +if len(sys.argv) > 1: + sp = statepoint.StatePoint(sys.argv[1]) +else: + sp = statepoint.StatePoint('statepoint.10.binary') +sp.read_results() + +# set up output string +outstr = '' + +# write out k-combined +outstr += 'k-combined:\n' +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) + +# write results to file +with open('results_test.dat','w') as fh: + fh.write(outstr) diff --git a/tests/test_sourcepoint_latest/results_test.dat b/tests/test_sourcepoint_latest/results_test.dat new file mode 100644 index 0000000000..00a65f913b --- /dev/null +++ b/tests/test_sourcepoint_latest/results_test.dat @@ -0,0 +1,2 @@ +k-combined: +3.011353E-01 2.854556E-03 diff --git a/tests/test_sourcepoint_latest/results_true.dat b/tests/test_sourcepoint_latest/results_true.dat new file mode 100644 index 0000000000..748df0351e --- /dev/null +++ b/tests/test_sourcepoint_latest/results_true.dat @@ -0,0 +1,3 @@ +k-combined: +0.000000E+00 0.000000E+00 +-9.438655E-02 -4.436810E+00 -2.416825E+00 diff --git a/tests/test_sourcepoint_latest/settings.xml b/tests/test_sourcepoint_latest/settings.xml new file mode 100644 index 0000000000..36c5c7a0d7 --- /dev/null +++ b/tests/test_sourcepoint_latest/settings.xml @@ -0,0 +1,18 @@ + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + diff --git a/tests/test_sourcepoint_latest/test_sourcepoint_latest.py b/tests/test_sourcepoint_latest/test_sourcepoint_latest.py new file mode 100644 index 0000000000..d26533843f --- /dev/null +++ b/tests/test_sourcepoint_latest/test_sourcepoint_latest.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +from nose_mpi import NoseMPI +import glob + +pwd = os.path.dirname(__file__) + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + +def test_run(): + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_statepoint_exists(): + statepoint = glob.glob(pwd + '/statepoint.10.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + source = glob.glob(pwd + '/source.*') + assert len(source) == 1 + assert source[0].endswith('binary') or source[0].endswith('h5') + +def test_results(): + statepoint = glob.glob(pwd + '/statepoint.10.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def teardown(): + output = glob.glob(pwd + '/statepoint.10.*') + output += glob.glob(pwd + '/source.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) From ad017aa5dee0f271e40e500fc1574f91a4e59c1e Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Mon, 6 Jan 2014 10:37:50 -0500 Subject: [PATCH 25/78] added test for restarting with a sourcepoint --- tests/test_sourcepoint_restart/geometry.xml | 8 + tests/test_sourcepoint_restart/materials.xml | 9 + tests/test_sourcepoint_restart/results.py | 44 + .../test_sourcepoint_restart/results_true.dat | 2412 +++++++++++++++++ tests/test_sourcepoint_restart/settings.xml | 19 + tests/test_sourcepoint_restart/tallies.xml | 23 + .../test_sourcepoint_restart.py | 133 + 7 files changed, 2648 insertions(+) create mode 100644 tests/test_sourcepoint_restart/geometry.xml create mode 100644 tests/test_sourcepoint_restart/materials.xml create mode 100644 tests/test_sourcepoint_restart/results.py create mode 100644 tests/test_sourcepoint_restart/results_true.dat create mode 100644 tests/test_sourcepoint_restart/settings.xml create mode 100644 tests/test_sourcepoint_restart/tallies.xml create mode 100644 tests/test_sourcepoint_restart/test_sourcepoint_restart.py diff --git a/tests/test_sourcepoint_restart/geometry.xml b/tests/test_sourcepoint_restart/geometry.xml new file mode 100644 index 0000000000..612e46132e --- /dev/null +++ b/tests/test_sourcepoint_restart/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/test_sourcepoint_restart/materials.xml b/tests/test_sourcepoint_restart/materials.xml new file mode 100644 index 0000000000..1f85510e0d --- /dev/null +++ b/tests/test_sourcepoint_restart/materials.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_sourcepoint_restart/results.py b/tests/test_sourcepoint_restart/results.py new file mode 100644 index 0000000000..d0b3a55e04 --- /dev/null +++ b/tests/test_sourcepoint_restart/results.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +import sys +import numpy as np + +# import statepoint +sys.path.append('../../src/utils') +import statepoint + +# read in statepoint file +if len(sys.argv) > 1: + sp = statepoint.StatePoint(sys.argv[1]) +else: + sp = statepoint.StatePoint('statepoint.7.binary') +sp.read_results() + +# extract tally results and convert to vector +results1 = sp.tallies[0].results +shape1 = results1.shape +size1 = (np.product(shape1)) +results1 = np.reshape(results1, size1) +results2 = sp.tallies[1].results +shape2 = results2.shape +size2 = (np.product(shape2)) +results2 = np.reshape(results2, size2) + +# set up output string +outstr = '' + +# write out k-combined +outstr += 'k-combined:\n' +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) + +# write out tally results +outstr += 'tally 1:\n' +for item in results1: + outstr += "{0:12.6E}\n".format(item) +outstr += 'tally 2:\n' +for item in results2: + outstr += "{0:12.6E}\n".format(item) + +# write results to file +with open('results_test.dat','w') as fh: + fh.write(outstr) diff --git a/tests/test_sourcepoint_restart/results_true.dat b/tests/test_sourcepoint_restart/results_true.dat new file mode 100644 index 0000000000..f2b97af34d --- /dev/null +++ b/tests/test_sourcepoint_restart/results_true.dat @@ -0,0 +1,2412 @@ +k-combined: +0.000000E+00 0.000000E+00 +tally 1: +3.000000E-03 +5.000000E-06 +1.350207E-03 +9.349751E-07 +-7.677912E-05 +4.241317E-07 +-3.387424E-04 +1.343262E-07 +1.215119E-03 +9.127703E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.000000E-03 +9.000000E-06 +1.889613E-04 +3.570639E-08 +2.320049E-04 +5.382627E-08 +1.491658E-03 +2.225044E-06 +1.817087E-03 +2.362232E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.000000E-03 +4.000000E-05 +1.075518E-03 +3.528151E-06 +2.716562E-03 +1.166700E-05 +2.288359E-03 +2.867176E-06 +3.411472E-03 +8.255676E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.000000E-03 +1.700000E-05 +3.530317E-04 +1.159034E-06 +2.030571E-03 +4.217108E-06 +9.628222E-04 +4.775997E-07 +1.817087E-03 +2.362232E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-03 +2.000000E-06 +4.849895E-04 +9.196474E-07 +3.794711E-04 +4.964654E-07 +8.024923E-04 +3.245502E-07 +1.237485E-03 +9.676259E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +1.789439E-04 +3.202091E-08 +-4.519686E-04 +2.042756E-07 +-2.540910E-04 +6.456222E-08 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.000000E-03 +2.500000E-05 +1.464813E-03 +1.309819E-06 +8.835792E-04 +6.990079E-07 +3.177051E-03 +5.159010E-06 +3.366739E-03 +5.697495E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.000000E-03 +5.000000E-06 +1.881176E-03 +2.067359E-06 +2.892742E-04 +1.089921E-07 +-9.095343E-04 +4.184955E-07 +1.237485E-03 +9.676259E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.365012E-04 +8.770346E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +1.000000E-03 +1.000000E-06 +8.504018E-04 +7.231831E-07 +5.847747E-04 +3.419615E-07 +2.618879E-04 +6.858528E-08 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +1.000000E-03 +1.000000E-06 +9.742209E-04 +9.491064E-07 +9.236596E-04 +8.531471E-07 +8.502670E-04 +7.229539E-07 +3.009839E-04 +9.059133E-08 +9.000000E-03 +4.500000E-05 +5.336900E-03 +1.424486E-05 +3.093810E-03 +5.161998E-06 +2.879582E-03 +4.229500E-06 +4.002256E-03 +8.501473E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.600000E-02 +1.280000E-04 +4.224331E-03 +9.782839E-06 +3.223102E-03 +5.736299E-06 +2.099435E-03 +2.209094E-06 +7.346629E-03 +2.710118E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.365012E-04 +8.770346E-07 +2.000000E-03 +4.000000E-06 +4.929028E-04 +2.429532E-07 +-6.043220E-05 +3.652051E-09 +2.687444E-04 +7.222357E-08 +0.000000E+00 +0.000000E+00 +4.000000E-03 +1.000000E-05 +3.193650E-03 +5.924989E-06 +2.012845E-03 +2.064950E-06 +1.030603E-03 +6.338801E-07 +3.656540E-03 +7.357018E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.000000E-03 +1.000000E-05 +5.813261E-04 +2.815138E-07 +-5.070667E-04 +2.458625E-07 +-5.126590E-04 +1.937439E-07 +2.162803E-03 +2.798572E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.500000E-02 +1.130000E-04 +3.838937E-03 +7.695404E-06 +3.258655E-03 +8.032841E-06 +7.822538E-04 +5.238913E-06 +7.034462E-03 +2.505476E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.200000E-02 +7.400000E-05 +3.703109E-03 +7.450207E-06 +1.172561E-03 +6.983603E-06 +9.775789E-04 +3.396069E-06 +5.183826E-03 +1.446969E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.600000E-02 +1.300000E-04 +5.461842E-03 +1.700217E-05 +-1.194197E-03 +2.155631E-06 +-4.418175E-04 +1.630461E-07 +7.647613E-03 +2.954714E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.000000E-03 +2.000000E-05 +2.288086E-03 +4.056180E-06 +2.803000E-03 +6.212022E-06 +2.253444E-03 +3.299961E-06 +3.043389E-03 +5.316010E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.000000E-03 +4.100000E-05 +-1.469649E-03 +6.515270E-06 +3.164874E-03 +5.070423E-06 +-7.834805E-04 +2.163764E-06 +3.991073E-03 +8.036254E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +6.578244E-04 +4.327330E-07 +1.490994E-04 +2.223064E-08 +-2.750809E-04 +7.566948E-08 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.000000E-03 +2.500000E-05 +4.192244E-04 +2.440829E-06 +2.290352E-04 +2.955670E-08 +8.117866E-05 +3.786185E-09 +4.292057E-03 +9.213941E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.100000E-02 +7.300000E-05 +4.050236E-03 +2.014829E-05 +3.589950E-03 +7.394738E-06 +3.301506E-03 +7.271497E-06 +5.574275E-03 +2.054932E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.000000E-03 +8.000000E-06 +6.865027E-04 +3.148594E-06 +1.123135E-03 +7.553928E-07 +-6.937330E-04 +5.371067E-07 +1.226302E-03 +7.521585E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.000000E-03 +2.500000E-05 +4.720935E-03 +1.123308E-05 +2.531138E-03 +3.881873E-06 +1.207797E-03 +1.104982E-06 +3.991073E-03 +8.036254E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.805904E-03 +3.261288E-06 +2.000000E-03 +4.000000E-06 +1.904158E-03 +3.625820E-06 +1.722222E-03 +2.966050E-06 +1.472450E-03 +2.168109E-06 +0.000000E+00 +0.000000E+00 +2.200000E-02 +2.440000E-04 +8.997789E-03 +4.069446E-05 +6.038380E-03 +2.892796E-05 +3.188711E-03 +1.706565E-05 +1.071337E-02 +5.765023E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +1.000000E-03 +1.000000E-06 +9.994298E-04 +9.988600E-07 +9.982900E-04 +9.965829E-07 +9.965814E-04 +9.931746E-07 +0.000000E+00 +0.000000E+00 +1.100000E-02 +6.100000E-05 +1.446955E-03 +5.203867E-06 +1.233625E-03 +3.439950E-06 +2.123440E-03 +6.107272E-06 +3.366739E-03 +5.697495E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.000000E-03 +1.600000E-05 +3.062793E-03 +9.380701E-06 +2.224463E-03 +4.948238E-06 +2.136221E-03 +4.563441E-06 +3.009839E-03 +9.059133E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +1.000000E-03 +1.000000E-06 +1.071043E-04 +1.147134E-08 +-4.827930E-04 +2.330891E-07 +-1.575849E-04 +2.483301E-08 +3.009839E-04 +9.059133E-08 +8.000000E-03 +3.400000E-05 +3.469885E-03 +1.204729E-05 +1.706287E-04 +4.770906E-06 +6.093070E-04 +3.706122E-07 +3.656540E-03 +7.357018E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +1.000000E-03 +1.000000E-06 +9.276723E-04 +8.605758E-07 +7.908638E-04 +6.254655E-07 +6.043224E-04 +3.652056E-07 +3.009839E-04 +9.059133E-08 +1.500000E-02 +1.130000E-04 +7.760317E-03 +3.043383E-05 +3.486730E-03 +6.079687E-06 +3.192886E-03 +5.300269E-06 +5.206192E-03 +1.357459E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +1.000000E-03 +1.000000E-06 +-2.723974E-04 +7.420035E-08 +-3.886995E-04 +1.510873E-07 +3.580662E-04 +1.282114E-07 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.800000E-02 +1.620000E-04 +3.109478E-03 +5.403087E-06 +7.420753E-04 +5.610775E-06 +-1.972647E-03 +2.210831E-06 +7.056828E-03 +2.499410E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.253181E-04 +4.803845E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.203936E-03 +1.449461E-06 +2.000000E-03 +4.000000E-06 +1.876080E-03 +3.519675E-06 +1.640561E-03 +2.691440E-06 +1.316649E-03 +1.733565E-06 +0.000000E+00 +0.000000E+00 +2.000000E-03 +2.000000E-06 +1.656132E-03 +1.374995E-06 +1.062492E-03 +5.867156E-07 +3.772098E-04 +1.191478E-07 +3.054572E-03 +4.820460E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +1.000000E-03 +1.000000E-06 +-5.333309E-04 +2.844418E-07 +-7.333726E-05 +5.378353E-09 +4.207423E-04 +1.770241E-07 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.000000E-03 +2.000000E-05 +1.583270E-03 +3.252679E-06 +-3.064030E-04 +4.947979E-06 +1.080830E-03 +8.869004E-07 +2.452604E-03 +3.008634E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.200000E-02 +9.000000E-05 +5.530475E-03 +1.529320E-05 +2.705859E-03 +5.488988E-06 +3.266400E-03 +5.350316E-06 +7.112744E-03 +3.142384E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.100000E-02 +2.250000E-04 +7.403253E-03 +3.016107E-05 +5.420662E-03 +1.983684E-05 +2.936582E-03 +4.922875E-06 +8.238398E-03 +3.592572E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.253181E-04 +4.803845E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.100000E-02 +6.100000E-05 +3.184470E-03 +6.981764E-06 +3.311201E-03 +5.530952E-06 +2.002853E-03 +2.093961E-06 +3.968707E-03 +8.234052E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.365012E-04 +8.770346E-07 +1.000000E-03 +1.000000E-06 +9.677184E-04 +9.364790E-07 +9.047184E-04 +8.185155E-07 +8.140422E-04 +6.626647E-07 +0.000000E+00 +0.000000E+00 +1.000000E-02 +6.800000E-05 +1.266540E-03 +1.529518E-06 +-3.692635E-04 +9.672879E-07 +1.689168E-03 +1.866327E-06 +4.035806E-03 +1.215361E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.200000E-02 +8.000000E-05 +3.410989E-03 +6.495638E-06 +8.888873E-04 +4.027331E-06 +6.828019E-04 +1.205374E-06 +4.894025E-03 +1.211286E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.100000E-02 +7.300000E-05 +3.976139E-03 +9.939638E-06 +1.462256E-03 +2.640635E-06 +2.026283E-03 +3.803255E-06 +4.604224E-03 +1.067567E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.029518E-04 +8.153220E-07 +1.000000E-03 +1.000000E-06 +9.531896E-04 +9.085703E-07 +8.628555E-04 +7.445196E-07 +7.353151E-04 +5.406883E-07 +0.000000E+00 +0.000000E+00 +3.000000E-03 +9.000000E-06 +1.969150E-03 +3.877552E-06 +1.225946E-03 +1.502944E-06 +1.367753E-03 +1.870749E-06 +1.504920E-03 +2.264783E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.000000E-03 +2.600000E-05 +-3.423632E-04 +2.476095E-06 +2.144575E-03 +2.456203E-06 +-1.035289E-03 +3.066348E-06 +3.678906E-03 +6.769426E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.000000E-03 +4.000000E-05 +5.417577E-03 +1.889555E-05 +2.293131E-03 +3.303280E-06 +6.729020E-04 +3.229421E-07 +5.206192E-03 +1.357459E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.100000E-02 +7.300000E-05 +7.262770E-03 +3.815108E-05 +4.265119E-03 +1.234667E-05 +2.317314E-03 +2.894105E-06 +3.355556E-03 +5.998148E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.019679E-04 +3.623653E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.000000E-03 +9.000000E-06 +5.774620E-04 +3.334623E-07 +3.789825E-04 +1.436277E-07 +-1.360725E-04 +1.851572E-08 +1.805904E-03 +3.261288E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.000000E-03 +3.400000E-05 +-1.376386E-04 +3.479848E-08 +-1.136484E-03 +8.968777E-07 +-6.910241E-04 +3.879057E-07 +3.344373E-03 +6.674880E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.100000E-02 +7.300000E-05 +3.617203E-03 +1.222945E-05 +1.595056E-03 +1.290135E-06 +-6.608603E-04 +1.154300E-06 +4.024623E-03 +1.056015E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +-2.171894E-04 +4.717122E-08 +-4.292432E-04 +1.842497E-07 +3.001713E-04 +9.010283E-08 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.000000E-03 +1.700000E-05 +3.376537E-03 +6.867510E-06 +1.576049E-03 +1.242043E-06 +6.774572E-04 +3.539001E-07 +2.787137E-03 +5.137331E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.300000E-02 +8.900000E-05 +3.214925E-03 +6.383584E-06 +1.681554E-03 +1.482668E-06 +1.811720E-03 +1.724962E-06 +4.269691E-03 +9.774105E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.243342E-04 +3.897931E-07 +1.000000E-03 +1.000000E-06 +8.016563E-05 +6.426528E-09 +-4.903602E-04 +2.404531E-07 +-1.189605E-04 +1.415159E-08 +0.000000E+00 +0.000000E+00 +7.000000E-03 +3.700000E-05 +6.291973E-04 +9.253012E-07 +-8.619079E-04 +3.776625E-07 +4.994451E-04 +1.549611E-07 +3.690089E-03 +7.039749E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-03 +2.000000E-06 +1.439409E-03 +1.103682E-06 +6.555229E-04 +5.306118E-07 +7.043819E-05 +4.155385E-07 +1.226302E-03 +7.521585E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +4.295537E-04 +1.845164E-07 +-2.232254E-04 +4.982957E-08 +-4.461813E-04 +1.990778E-07 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-03 +4.000000E-06 +1.440797E-04 +2.075896E-08 +1.581861E-03 +2.502285E-06 +7.101262E-04 +5.042792E-07 +6.019679E-04 +3.623653E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.000000E-03 +9.000000E-06 +2.304111E-03 +5.308928E-06 +1.405559E-03 +1.975595E-06 +8.468624E-04 +7.171759E-07 +2.441421E-03 +3.141818E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.000000E-03 +2.900000E-05 +4.675157E-03 +1.278192E-05 +2.215224E-03 +3.397777E-06 +1.088961E-03 +2.486687E-06 +3.344373E-03 +6.674880E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-03 +4.000000E-06 +-2.660370E-04 +7.077569E-08 +-7.919915E-04 +6.272506E-07 +2.842468E-04 +8.079625E-08 +9.141350E-04 +4.598136E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +6.738077E-05 +4.540168E-09 +-4.931897E-04 +2.432361E-07 +-1.003064E-04 +1.006137E-08 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-03 +4.000000E-06 +1.768784E-03 +3.128598E-06 +1.358416E-03 +1.845293E-06 +8.583748E-04 +7.368072E-07 +1.226302E-03 +7.521585E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.000000E-03 +5.000000E-06 +1.382401E-03 +1.135211E-06 +9.435101E-04 +9.475181E-07 +1.233939E-03 +9.782026E-07 +1.226302E-03 +7.521585E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +9.843457E-04 +9.689366E-07 +9.534048E-04 +9.089808E-07 +9.079028E-04 +8.242875E-07 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +tally 2: +2.302093E-01 +2.649911E-02 +2.511941E-01 +3.155135E-02 +1.462955E+00 +1.070191E+00 +1.627347E+01 +1.324129E+02 diff --git a/tests/test_sourcepoint_restart/settings.xml b/tests/test_sourcepoint_restart/settings.xml new file mode 100644 index 0000000000..5fee23d67e --- /dev/null +++ b/tests/test_sourcepoint_restart/settings.xml @@ -0,0 +1,19 @@ + + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + diff --git a/tests/test_sourcepoint_restart/tallies.xml b/tests/test_sourcepoint_restart/tallies.xml new file mode 100644 index 0000000000..1704f56e1e --- /dev/null +++ b/tests/test_sourcepoint_restart/tallies.xml @@ -0,0 +1,23 @@ + + + + + rectangular + 5 3 4 + -10. -5. 0. + 10. 4. 9. + + + + + + + scatter-P3 nu-fission + + + + + fission absorption total flux + + + \ No newline at end of file diff --git a/tests/test_sourcepoint_restart/test_sourcepoint_restart.py b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py new file mode 100644 index 0000000000..a4387405b8 --- /dev/null +++ b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +from nose_mpi import NoseMPI +import glob + +pwd = os.path.dirname(__file__) + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + +def test_run(): + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_created_statepoint(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + sourcepoint = glob.glob(pwd + '/source.7.*') + assert len(sourcepoint) == 1 + assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') + +def test_results(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def test_restart_form1(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path, + '-r', statepoint[0]], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path, '-r', statepoint[0]], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_created_statepoint_form1(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + sourcepoint = glob.glob(pwd + '/source.7.*') + assert len(sourcepoint) == 1 + assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') + +def test_results_form1(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def test_restart_form2(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + sourcepoint = glob.glob(pwd + '/source.7.*') + openmc_path = pwd + '/../../src/openmc' + if int(NoseMPI.mpi_np) > 0: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path, + '--restart', statepoint[0], source[0]], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path, '--restart', statepoint[0]], + stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_created_statepoint_form2(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + sourcepoint = glob.glob(pwd + '/source.7.*') + assert len(sourcepoint) == 1 + assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') + +def test_results_form2(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def test_restart_serial(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + openmc_path = pwd + '/../../src/openmc' + proc = Popen([openmc_path, '--restart', statepoint[0]], + stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_created_statepoint_serial(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + sourcepoint = glob.glob(pwd + '/source.7.*') + assert len(sourcepoint) == 1 + assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') + +def test_results_serial(): + statepoint = glob.glob(pwd + '/statepoint.7.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def teardown(): + output = glob.glob(pwd + '/statepoint.7.*') + output += glob.glob(pwd + '/sourcepoint.7.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) From 9b2741e1abce6a7bcb09ef2b704483ee85376a46 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 20 Jan 2014 19:58:59 -0500 Subject: [PATCH 26/78] Install statepoint.py script using distutils. --- src/CMakeLists.txt | 7 +++++++ src/Makefile | 4 +++- src/utils/setup.py | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/utils/setup.py diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 281d7362eb..95cda112af 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -173,3 +173,10 @@ install(PROGRAMS utils/statepoint_meshplot.py RENAME statepoint_meshplot) install(FILES ../man/man1/openmc.1 DESTINATION share/man/man1) install(FILES ../LICENSE DESTINATION "share/doc/${program}/copyright") + +find_package(PythonInterp) +if(PYTHONINTERP_FOUND) + install(CODE "execute_process( + COMMAND ${PYTHON_EXECUTABLE} setup.py install --user + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utils)") +endif() \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index 7b292eca7d..9c295176a0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,5 +6,7 @@ clean: make -s -C build clean distclean: rm -fr build +install: + make -s -C build install -.PHONY: all clean distclean +.PHONY: all clean distclean install diff --git a/src/utils/setup.py b/src/utils/setup.py new file mode 100644 index 0000000000..c69e7f6c58 --- /dev/null +++ b/src/utils/setup.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from distutils.core import setup + +setup(name='statepoint', + version='0.5.4', + description='OpenMC StatePoint', + author='Paul Romano', + author_email='paul.k.romano@gmail.com', + url='https://github.com/mit-crpg/openmc', + py_modules=['statepoint']) From 0c5234e9841defb747d6c3f5e9dc55c6f74fc35a Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 29 Jan 2014 21:44:46 -0500 Subject: [PATCH 27/78] Updated installation instructions for using CMake. --- docs/source/usersguide/install.rst | 114 +++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 29 deletions(-) diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index 164b0151be..30eaa5a321 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -50,6 +50,15 @@ Prerequisites sudo apt-get install gfortran + * CMake_ cross-platform build system + + The compiling and linking of source files is handled by CMake in a + platform-independent manner. If you are using Debian or a Debian + derivative such as Ubuntu, you can install CMake using the following + command:: + + sudo apt-get install cmake + .. admonition:: Optional * An MPI implementation for distributed-memory parallel runs @@ -98,6 +107,7 @@ Prerequisites * git_ version control software for obtaining source code .. _gfortran: http://gcc.gnu.org/wiki/GFortran +.. _CMake: http://www.cmake.org .. _OpenMPI: http://www.open-mpi.org .. _MPICH: http://www.mpich.org .. _HDF5: http://www.hdfgroup.org/HDF5/ @@ -131,50 +141,95 @@ switch to the source of the latest stable release, run the following commands:: Build Configuration ------------------- -All configuration for OpenMC is done within the Makefile located in -``src/Makefile``. In the Makefile, you will see that there are a number of User -Options which can be changed. It is recommended that you do not change anything -else in the Makefile unless you are experienced with compiling and building -software using Makefiles. The following parameters can be set from the User -Options sections in the Makefile: +Compiling OpenMC with CMake is carried out in two steps. First, ``cmake`` is run +to determine the compiler, whether optional packages (MPI, HDF5, PETSc) are +available, to generate a list of dependencies between source files so that they +may be compiled in the correct order, and to generate a normal Makefile. The +Makefile is then used by ``make`` to actually carry out the compile and linking +commands. A typical out-of-source build would thus look something like the +following -COMPILER - This variable tells the Makefile which compiler to use. Valid options are - gnu, intel, pgi, ibm, and cray. The default is gnu (gfortran). +.. code-block:: sh -DEBUG + mkdir src/build + cd src/build + cmake .. + make + +Note that first a build directory is created as a subdirectory of the source +directory. The Makefile in ``src/`` will automatically perform an out-of-source +build with default options. + +CMakeLists.txt Options +++++++++++++++++++++++ + +The following options are available in the CMakeLists.txt file: + +debug Enables debugging when compiling. The flags added are dependent on which compiler is used. -PROFILE +profile Enables profiling using the GNU profiler, gprof. -OPTIMIZE +optimize Enables high-optimization using compiler-dependent flags. For gfortran and Intel Fortran, this compiles with -O3. -MPI - Enables parallel runs using the Message Passing Interface. The MPI_DIR - variable should be set to the base directory of the MPI implementation. - -OPENMP +openmp Enables shared-memory parallelism using the OpenMP API. The Fortran compiler being used must support OpenMP. -HDF5 - Enables HDF5 output in addition to normal screen and text file output. The - HDF5_DIR variable should be set to the base directory of the HDF5 - installation. - -PETSC +petsc Enables PETSc for use in CMFD acceleration. The PETSC_DIR variable should be set to the base directory of the PETSc installation. -It is also possible to change these options from the command line itself. For -example, if you want to compile with DEBUG turned on without actually change the -Makefile, you can enter the following from a terminal:: +To set any of these options (e.g. turning on debug mode), the following form +should be used: - make DEBUG=yes +.. code-block:: sh + + cmake -Ddebug=on /path/to/src + +Compiling with MPI +++++++++++++++++++ + +To compile with MPI, set the FC environment variable to the path to the MPI +Fortran wrapper. For example, in a bash shell: + +.. code-block:: sh + + export FC=mpif90 + cmake /path/to/src + +Note that in many shells, an environment variable can be set for a single +command, i.e. + +.. code-block:: sh + + FC=mpif90 cmake /path/to/src + +Compiling with HDF5 ++++++++++++++++++++ + +To compile with MPI, set the FC environment variable to the path to the HDF5 +Fortran wrapper. For example, in a bash shell: + +.. code-block:: sh + + export FC=h5fc + cmake /path/to/src + +As noted above, an environment variable can typically be set for a single +command, i.e. + +.. code-block:: sh + + FC=h5fc cmake /path/to/src + +To compile with support for both MPI and HDF5, use the parallel HDF5 wrapper +``h5pfc`` instead. Note that this requires that your HDF5 installation be +compiled with ``--enable-parallel``. Compiling on Linux and Mac OS X ------------------------------- @@ -202,9 +257,10 @@ a Linux-like environment for Windows. You will need to first `install Cygwin`_. When you are asked to select packages, make sure the following are selected: -* Devel: gcc4-core -* Devel: gcc4-fortran +* Devel: gcc-core +* Devel: gcc-fortran * Devel: make +* Devel: cmake If you plan on obtaining the source code directly using git, select the following packages: From c54a3463d4b8c32a19a6cd9adc4beff95429ab2d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 29 Jan 2014 22:54:17 -0500 Subject: [PATCH 28/78] Define GIT_SHA1 in header file. --- .gitignore | 1 + src/CMakeLists.txt | 19 ++++++++++++++++++- src/output.F90 | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9f720f9894..bc3678cc38 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.mod *.log *.out +git_sha1.h # Compiler python objects *.pyc diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 95cda112af..453a87c89b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -137,6 +137,24 @@ if(petsc) set(libraries "${PETSC_PACKAGE_LIBS};${libpetsc};${libraries}") endif() +#=============================================================================== +# git SHA1 hash +#=============================================================================== + +execute_process(COMMAND git log -1 + COMMAND head -n 1 + COMMAND cut -c8- + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + RESULT_VARIABLE GIT_SHA1_SUCCESS + OUTPUT_VARIABLE GIT_SHA1 + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +if(GIT_SHA1_SUCCESS EQUAL 0) + file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.h + "#define GIT_SHA1 \"${GIT_SHA1}\"") +else() + file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.h "") +endif() + #=============================================================================== # FoX Fortran XML Library #=============================================================================== @@ -154,7 +172,6 @@ add_executable(${program} ${source}) target_link_libraries(${program} ${libraries} fox) set_target_properties(${program} PROPERTIES COMPILE_FLAGS "${f90flags}" - COMPILE_DEFINITIONS "${definitions}" LINK_FLAGS "${ldflags}") #=============================================================================== diff --git a/src/output.F90 b/src/output.F90 index ee0a8391c2..061500734d 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -55,6 +55,7 @@ contains ' License: http://mit-crpg.github.io/openmc/license.html' write(UNIT=OUTPUT_UNIT, FMT='(6X,"Version:",8X,I1,".",I1,".",I1)') & VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE +#include "git_sha1.h" #ifdef GIT_SHA1 write(UNIT=OUTPUT_UNIT, FMT='(6X,"Git SHA1:",7X,A)') GIT_SHA1 #endif From 854c86aa429d8c99612cec8ada56896fa3ada60a Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 31 Jan 2014 10:35:23 -0500 Subject: [PATCH 29/78] a custom source can now be read in from file --- src/source.F90 | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/source.F90 b/src/source.F90 index 231a23cc5c..4ec3587763 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -1,16 +1,17 @@ module source - use bank_header, only: Bank + use bank_header, only: Bank use constants - use error, only: fatal_error - use geometry, only: find_cell - use geometry_header, only: BASE_UNIVERSE + use error, only: fatal_error + use geometry, only: find_cell + use geometry_header, only: BASE_UNIVERSE use global - use math, only: maxwell_spectrum, watt_spectrum - use output, only: write_message - use particle_header, only: Particle - use random_lcg, only: prn, set_particle_seed - use string, only: to_str + use math, only: maxwell_spectrum, watt_spectrum + use output, only: write_message + use output_interface, only: BinaryOutput + use particle_header, only: Particle + use random_lcg, only: prn, set_particle_seed + use string, only: to_str #ifdef MPI use mpi @@ -28,8 +29,9 @@ contains integer(8) :: i ! loop index over bank sites integer(8) :: id ! particle id - + integer(8) :: itmp ! temporary integer type(Bank), pointer :: src => null() ! source bank site + type(BinaryOutput) :: sp ! statepoint/source binary file message = "Initializing source particles..." call write_message(6) @@ -38,8 +40,17 @@ contains ! Read the source from a binary file instead of sampling from some ! assumed source distribution - message = 'This feature is currently disabled and will be added back in.' - call fatal_error() + ! Open the binary file + call sp % file_open(path_source, 'r', serial = .false.) + + ! Read the file type + call sp % read_data(itmp, "filetype") + + ! Read in the source bank + call sp % read_source_bank() + + ! Close file + call sp % file_close() else ! Generation source sites from specified distribution in user input From e795b49f5c302b34b84161be382b11490bc2791c Mon Sep 17 00:00:00 2001 From: nhorelik Date: Fri, 31 Jan 2014 11:28:39 -0500 Subject: [PATCH 30/78] Updated data processing and viz documentation to include examples --- docs/source/_images/3dba.png | Bin 0 -> 15783 bytes docs/source/usersguide/input.rst | 2 +- docs/source/usersguide/processing.rst | 106 +++++++++++++++++++++++--- 3 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 docs/source/_images/3dba.png diff --git a/docs/source/_images/3dba.png b/docs/source/_images/3dba.png new file mode 100644 index 0000000000000000000000000000000000000000..69de65414492577ac5c9aa1e00382239093dc180 GIT binary patch literal 15783 zcmZX*2{hDS_&+`~woD|;AQZ`1#x98zD%%WMreTnMCqgPalgOH7?3IWa8Pp)M?_0K# zB`P61*~`B4zdqmZ`Tu_B{G2mq&b;6EKF@RSeV*sOp4Yvi4D_^^;XH5%1j3BgR>wjh zFh214d;$iZ&^sZ^DZ3%l z6ce?Edhu7zl5}~D$(iYsgkb0;Q^k`G0@n&f3sdpeo|bSgg(os@XwqvXXao$@d8Ynk z3Nt-{q)qDMJOw|M$C79l+OymyayDpt|F+d3b^ERVxv;9#m22ChtFLZ<-Y(pJTfnZR zr9}_1ZXZ8b{?VQuvioM$ORO=IU7HRfESN#SH)bZ8!yxL-8W18JlFZI%Lze)DkaUH7 zkG}=cO6B2r2n8ZQOrAifp&*g8R0tLdK}$7>6L65zjFyjciuLFqiI9ZjU;p(jOV(b4 z3m_osq5pMctAzno&p8+^p(GgLe_omY|F7zrCbb~yFf}YxO(^XDC{Pn3{9m0D|5x=I z91Cqk67T|aMYo~qFo+OPa>L~Rh*gIj8!f=r_`kOO_Xa{ew&lM!6X1;ioKqDh2nB-` zU=t_;V^PPZXVnHyrd*DD$`UI}t@V=MZKT^5;XfC$0i8gQVA*IPsDFN&iDT`JWBvIT zi0Dtw=}+9MnXmZLQNRp|5ogO;UwZ6$F%0J0oOn$|VceJ>Yx9i>fo8htBK*X?yloP~zcqU+Ir5pD|mwfF!^!6AX?co zn;l3bhXRSB?2J+i#**uYb`F+Gz!){nL{dLGNpN>KMCISxRdZeynfAcn%EQ9^mBl+o z5fNuq1S&a#C4V7Eq1t1dinQ|xG=Ue>|1>yEKjy!O_H}dR+!}cbf++)c0z3cOwgCN! zr*A#bO8De(VXZs@=#-+YrE;ziPaVGgE}JtLic5eCy4cS`LngS-KWaK|ZXYr($i_F2 zVg?MpF7!-`UA_N>MZxFZ$z!cNvBEj#_vg0W4mf=}#m{Z0m!+h<+Zeu!XXa;$m*|yZ z<4JpB)wq7g=)cxxG8l_Qrm315A-K#}{fc$+SMf7oR@K>dPAwS-*~}`sf8w!QNx##= z@OXT$DJ@=gZK&tG0wVR6MiVZB9T-o(otUp9g4CFtj31a?k}2&N5gh&#vevq^BBqp- zrzZ*KOn|5`fWDWei{ei$`vSSacUwmWY4r!Z_&dp#Ti{9T6n$|N`SPvnO$9o>+app) zt6gn6io6t?1{7%}zi>WgTIb^K5>}-$*^dh>Wq*-&^O&|f?$&8^-su4+&-I|&$4{SY z<48%>CRH;#VBP*$QD@dq7MG!^qhPO0A#{>Y51KdCl|B z32No@&*3fNF6*z3Y+bugSPJnMv75uDluBBx7|bK+1yA~sOL4KX zzQ`T2n0r^u16Vj%*NJpoTwL5M-$f--&b4fA_(rx&=|qYn`GyHA(GV8f9LSZwg%K{F zNHH_WSKUGtIVbPHW?j5FbJc9xsnx~(b!eaG=4;CGOOTTz30(}AscZ%)$K=L+b(E;U zP00u@dr!QH1-0nsU2V%9VXSG)U|75jf%MKq#4A!k{rL?=9VueA^&Hq;QMmC)uZYn6HV$a=^3 zsA+OeIoK!o>{i;leO@6y`}5R6T~uaRikUdy)McydsMKG|N0FOCG{}YvNwxt~(~04= zSi*h>W5~gmeRirf$A#R;P(2AjrJ&g*&!Fh4Ru%Pg!KQzle*9X!C&zo{5ku-%amxse z8{FLkR_+y#jpU;}belw{cF8Ty!8>+w`gfEpJ0os3d}fHtGYwGrX?%2HziIK)lebMm z>ERI~s*mJojD30o(+&LxI-A|=olbWSf4*XWfjako%f5QATysSwLxJiE^Eyi@TSQ2b zlgDD&B#144@jt^^EkA$IFFy|DY@7^+S1Pf#_!F}0L1F60pCaqg{uKGy6qIJv!e+B* zv^iUX^&T!Je^Z>&PFq_lk@BGhlY)i+HZ)hCRNg?f{Y-N&M3#P5e2wp4*@?iLll!0I zaopr2J3~GX+zT(XF30a*mk1y?Xm+L;^3>y(ZJvw2w)QvBDaNCuA|9OKUyJtomZ!1* z9N|)gZM-mt}G&DW7E&Sj?+W? ztVhp&YrRUtZkpCbL_l*F4z=t@m#dvVYQn47*O`ZZ&Qj`2zGgN?HaViV>ZNLBxKTn4 zm!#>_?lxO~wDIvkx5GO=F9ou54U=-DiauJU^iMC(%?5HwG3rP%OS?vyx>(h-_XM@h zD^SZaa0PDaJb}Ll+vjD*w^(yqwMNjhcjZb?C_Nte!ntCnQ{mTk6BYfvaoXpByu$jW zaSiU=)`lCLL;WOtSgrONhLaKqyy8$OWie)s_eH&o_#Xv}OYpRKiE9C5;|N(xbP}#C z3~{Ai{S2M#G`BrVTJ^J}*qK^ZjP2$i-_MhQIxt+kN>0muBL@55u?mE@(PxSr(4tVc^0uu|$#W>np`MKgF5x z#(V3SY+RX#g}Il6voE`?ZS-j>!T$L+<^o!yyA{t%P7bfJ>)IgJ_G_9Lu1CYg8_Skc zJSiU;#f_fVPj)zvHBCpPX*1U_> zW2T=50{ebT^cpEAXys(?{ARRqTG%Io(Sqcub0KET;){1txZAF0=+-bP{03&&s55t- z|HTyHaAl8&qD!W>pKMh{?gqR_has^#*R*E!P;dP;e6V7w>oX6<<%3n7bx}o_FXxQ^ zj&*6zL%kc$w2A9sy{JR)9UcDsd>7;nAL6jEbP*7Y&wBLZqV=+$h8Ol%U$We)Yi!P; zuv#v@ecQ%T%oP8&9!(`BVp#5QG4MZ!84QarvY7T2o6%A8^-(Jg%{Vl2=ahE9CAzZs z+Qs;_f(kS8f#LuGPehYFO<3zE5?$eHOLz4fT@hbZg;S%aA8yX<*VkH73VwJ**dn`&~QSrAP{RY6@&X&$x|d7)i&SuBhM zGpgt3#!%Q4b?UZOCoI4Dfs%vlb5Y@4X@1+Zv16#`rRN$9w@Hm zx#aI~69p~b8@18UiK?$7!TKX6Hmyu)elN}>xj19z5J6~iAPeM3!U-iID7p?N|JeKv(L5Ydjauh z1KwS&l;^~l2RkqeAg+*98)`$MT-U-C0U z6FgSz>XoQX%+>;x<(}m&OH;4iWx2x?nTJLkj0(*ALC@yuzvuUNZ)0{D*)slE>!CHY zX-rb?o8ra!m)TFXjSV^6K>x5IKmPj2;?6iPr>Z|1sZu0b$2xynhu!JxnUug3;;Fiv zAZm8!#o_*+mJS3qMaDcz9(G1EyCMlEQ4ygu_G3t6gZwj%w-Ql&;L4+oG8;24Cq~Ot zIb6lwVNKD^74_b|AlBu*IMp=B(=#!uL#1wHbZ)DC(FZO{k)MX1m&R=@rC)z^h_mg5 zPo%7k#;2v!8oWGD_>bo*mwzWEf&9;ARTxh#`Zz9LmhlipsTC~1!Z22050l`QE=m;K z>(5-y_C2neLIvVmi)rKcEnn(U6_*b$ovx)BN&nattpleh9$u=d@vv?om-}p9ZJIaw z=(|tVXywFnYW+~y>Wq`cq&$z#9~-RROrfu7=+_I`tylYz{$-3W{%M83$oo6d8<+qQ z>ApR(6g4>&qwAnCda3cHdmC^c32QEFLP&D~#;HAR(8zgLyMcqNr zYRBs1_EVnM{vDpY)}XH*o&rGqhwqw9%wZ|;0V`Ae;>+c48lG2kDL5_sB+erCGXr=v z6TNTd`Ol@8S-N;;VrI5)(&!jTJv)MEUlO&8)1?k3Vp?o8*0Bin9HAnU6+52Xz4)(< z=Mrb?au%jL%=VGA$wp5vKMDQ0Y8csoFL=Q1@#ta2z)E>=-ox+v4Z)(dQ889nv`Hb$ z3Gu)9)0jPbZ#VaTQBx<5D^X%b8<-d3i!+0ZbSXwyJm%fuQo#b7OOo}iOQ&_N+$5LO zjM!RIlnzroe%s3R-b_?GN99PTy~AsCM=D4A`*V%9qgI&BDwVSZ{{GIh*_3s7$CfQz z)8#@DE)|ofP&}RVx=BZ%yKZ@b=HAJ)EAZcZNuyf`Znf%-=nCB8yF%*2+X9y<_MDxU z{`Bo-N*7488$TV|h^e!jitT@;$MfTHjuUk->!_d2m^kjjhFOdLP57~roYt6bdnG^7 zelxoCIYz^Xw$_t;tI z=%`m`KC#~Rzw?SX3bw)f(v#uaEP^g{+r_qGS?Nb8(HGH(yBr1rh>qgP%{$b3YljQT zYW$W;k*$_0E;TNSe!9>M8x1S0A&*i-?z>M`)qO;r>YqpAQ_KMaGwi=K7nJgZ{zgks zgsk2ZN7Zb~{q^*gE*80cdhjq^Pgt|WDyM8!edS)aFVX;I_I2pu&F2Df+>?=6c$i~# zH7cvsi6d6pv97hMx<2TQXu&*AyHTKif7uC7(R^@XlUNRxq0X)1 zZ)wh0w;Gy_kx=y!X>#Aa@0^uxpbMk;eRAnH`qVA1CFPpU>4DD|uRtulIz^L=#QZ%j zD+@J>i|kijQT5wx9lhDg3h9Kl8DLl^5Y(Ky`30)34brIdER%BiY2y#JnCS~AT*gDd zCh)3I%+e2uK|LHE+TYlFG2C!}<18Rh$gz5pPIc4V;c3M+coNs*g_f@09+s*HzZ_W4 zX^l_-LZS1v+O6$(+)ndM%(pC%TYct8&-7I;IuVa)60NGs$u?-Ha-0D~OYp`9<1bUv zG8rY&>cuRM|9-h^Cxq^k|1M8>m9*6ZpOCX~A!>u^udh>`Z?gVPMXav#z-r|#V|W=p z*(J9X+j`Is$R1vz6!q00FBW;S3Y;^PrTbb-l%?4JEOL-dR^RA#(mz-f_Tg7E>0~pA z{V0e@H;fds@zc2V`sh!9kL15-krU#wfiBxK{gy5qCGRb{$tIS&ur&I9|8T$JVC|uK zBy%j=6rfGiQ_Wvql$Pf+o~$TUT?2eaZgPJtJ^_>YI`y`Z8WrD9&w&wp=7)TYd*J?+ z$hn33z@1#%FGT6u;3gYU|EA;WcO^_mtk|wAm;YT#;k`WOE?p%0e4|;kyiW+h(-<~U z?)&OvKLP)ASIXj&Uo2L<$l&&4!RrjvG9rGGae=F00b1RIbt& z*JP0l4gY#K2mUSi^H4bM;92s?---nTGJ=S^QW;RX+}4`uU(Y@^99}?^dFFbEchX=wAF#=+hZ_>7iS1+<^NBp4a*pk;QRL!%z!gjo|6*So zv*c@>bxG^MM~OXP(K*eCrW?%H_<6nUJaTW+#=$F3JjGDxcNl^A8L3Toz~Jv)zNV7? z#O%~Vu98P+0pg^kVWys1woa_9&(Si!5oQLg7Qd1o>c~qGCinFGOCYzX?rzGHTr(fU%H!yY!LYg8$j>#KRvi^5b5QA>y;(V{Dk+~d{0{Pf( z!&a28Q}EX((GXXuUV+12B0vFRCZ`mVoo|?0#^^k)qW;Au8Wj4BLu23BI>%3IQY!bt zN^3n6%aU-k8z77Wh8CgC&6v)DD9y~W=Z4cY(~u5E{KSZ$N{cXlqO~eUx~F2Xt3vvk zChH`z_w6him2Dc)=HvR)d!A$tP=I1qU9;^xZekgl5HGBFk_ zcDwKml!-tH)z(IZXG58?mmdHYp=|DWRUsQ1{WfYYL&yjXlr|Fi0CCg!Ub@fc46f(9 zUbeA0Qn~Ukb+l1fZhmLqG4sCiw?d~4Q1l!cnhRY>Kk|*Y=OAgMhf$oFf5q4UpDbng z)H8R2xJAA}!!1Chhry))^{6OO(19fAB*4|41a96P51uuB9qJ*SEkL}~e%N}3+&|~H zS@#g}{&u(UoNhFG_-5Z&Kf8H99{U=~bYgSTop3W$P{2B!62J;M9;XwXhY8^ zTgu;W5c)o$N?JZctNeclV-|*==Rne#GomYRhI84hu)$YNGbFIGx*Nh22}DMbQPHGu$3k`O|p-2V~e z$rg9}Jl<;mZ-**ofbNw`+{rX~nmgn8r_5`wnW*)td1z_(d7Cz6w1(*5BD9pKkZsKh z#wZzv7)KX}NnIDxrn5#oa&`G3UP-I2L-v1LA4tP((U#3>4g*F-GK0r36LV51F0aps z5Aq|#!_(?7mAHp z`q)fp?a_3Q>51S8xD?>rA%>RMg$Ot-u>cxNMrEHghpiNCvR4R$gjedl`zvC&XXsCw zv$z4ju_q&mY`#6*!C&`z#(0U?-4T0#Ts+P6)r~9Ad{C5YTMmgnSf7a2fj|Tk05Y&h?%#XB1LCk~0x3vcuKr#@^w@HCofXMOE6Q3!AfXVq!|R9x@2=gNc}9~T-oZ&Mu8>qR*bGta0bIo z2T|7!r$`~#7ETjo(<;Hzv64z3kFwWQ{xX7JXHUQgFMeHYQy{o| z5E|wl#^50da9{wKOSb0f=r=k>kKTW-3^O|+4$&raEJ5gf=^zw>NEia5hSKb;_7`Ke zPTD(I**AjIU$L2>&YD?0UiZq_5d@&p0bnDH@6n(LJ1b;(Q3a5Z$`epDhxd{@JMC+ zEFdchtRhvki;SNHm7Nlc4u5OdJ-R?OpG|}IDVGv4ZDv88^u@^mh&xY@Ec*7ev@(m7 zX4x*7qf1QlJpt6E~@KvHezpK|G=8L)CyY^d>c4|!-q zJAU?Gqr~Crj`ZBWpSZXw^>6na>}%b6kis2TE$%0pgY(6(Vx2+y4?euZ5?LSk5f)O{ zcC40cy%-7i=a2f`;sTevRdxdFbh2_$f6N445Q1%qm>3h``bqvrtE!BS4cGVs$jf}* zVn0`51kz;O0lkda>}jHl`75H`ddM&)uIfQxl&BZ2e@+c)W4Ep*{^eD~pA+MOTk5sJ zuLAdWRfBgdOS4eBrMnh6`eS~=1vE(rnWXExrLtW767;nuc19DGs}ucQ@lUjY`>KJm zaB+84c~w}cqC0pdAF&^D`DWCrf7-O&-miw5FN5FKM&DiCc_FUC;_KJRnKoSR)wzp; z3Lu=rEEcCC>;m7%->F+Ya`|)RSxK0 z$}WLlvWltrBmqnDEXK6QmR1~H?qSFXO!|SW8RX&v?#?cMi9p9>zy74gP7GPkt{bBR z;X%43V%}h*#-X~SRn6;{ceZq=?q=>d)$1J6OtOI#_@i~jXsHJ0V6`x(%YCb>(mrds z6XayV&=PTaEJQ>YEx<^43ZOu6>;U}^o2HY`xMJKyoGOP32wQ{5-rQ} zIEa$@tsow?!!8pXtO|%%lOYhS%d0KkMqP8S;H;GoL34jB`ccs?vIK$9{U|hQkI|&S z*6LrSm46_WsJXE>QE-w6B1*)tl<$qan_OJF#w_CA&vXd+djS#2!@f;vh*{0q zl+)-UUi@O;Tg*YqC`ca+}}Z&uzRYs%H!X~a<0`F zD@}4d3y6W3nRk3H({m#tUU=UMgJ{#e z6iN<6kVZ}?wPr#HxTUf_h_N*VbC4(`8!zDG5eRWsLoGcH$^L{zbbJYs3@3f3QH|m_ z$z=f&#*W~bP`5hgSvT5 z*OIPo%|k&_&M>!S;cI&(bWs}^Es^X7`Llu=t3mR1Y{tKcZ|I(4(OJq?;s!phq9D>L z*K7M4TqJ-A(pv8hM>{<29a!>C^V~vHoetWeMt;-NVq;Q$6r2fO^$i%)B!@m_Ic)Qf!`&Mk&a3y5E&6@V!`wr{r1`88~AEB}iTs3pXodQ5^< z2ibYhbO(LPUB&EY&W+OmCyLtpff26#^U(C4vy0+aBhzn8S0H@_xcng&l6e8q_0aCI z@RZyQ#LhB+7Mc>}dzNcve@yNdk7=pGfG;aKe~0$SA{9S84wo$O`PW^3<-jp0IBhTV z*gxY5?) z?hQ;J#o8H?^srFH3b)#?zjVhmszN7@MidHQmX;yS$bI~Juny!!mUXF-axF@{{;nzN zla=g4fFxiB-yoc-#oIbr+je z#kf;2EYXh@>{(2bOOR9#O7skGRoSVu_>)!3z(bMgD?E*CaZ@WZspbBfD{ha0>tW`E zEDI*(bdnw#22GD8ng9o(ZK>X?RkGvSLm~_J)*l9dc)xZUpvnO027RIQHm#2qree1l z-;A9i;0g@Lg^I3}u1_}E`u%?$zHv9S_&z49u`z-jrYl(?p74Obxi+tu_}S;%o#C!B z*u_yAffPB>yAbbheh#ZkOli=dv|AA6&-~0aV7a98ha$#T@qThryi;i$t~cEKc#dJv zlbLt69ZmASqPnGzy*9ewz1F~QQKO{Q(r537?6hJn(idQAsNKk-p^nRhnMKqo-ngKS zZHt^W8#%l&%2E?}?{Y+X728rgJDF&mqnB5uk>fk4o7wo#@9Y)KZvSymedZ2M_T-j=#azh1xu5DDoz zf()%ets+I?ud4U;08kM_Z_>+XJtd?5dG4+r{n{A!i~msHQVp`#sEe@X%l-K*j$>HR z@_X@TO*G4uD({)pB3W6q12VWZ%M9KbuJmTC38X0 z@!kRkiWm4tsclTUR3A66tqi4{cE$9#Q zq6c=zQ-Uy-8pj+&rXG}xV{Qny7{;2uEsoib8-XRju=e*Q08$!>bc3*S7>_deQ^~>pF02h zG8IN8p14afzuH$U#s~zQKp4mYXiLBRRPl;~)PkLNA?AE&pHJ&;L5f?w=pmLe1~t@T zw(;s@3awaEi3-2B7JsTvx-jrIlz~~H)!(ig5ndyE9TOUxF1#&*7j$lDs{)9tABVuR z-D@O!;o4~XcAXR6fFwOlwxt=dHIZ%l!QGMHc8--O9oC8l==RzC71)MJlGoSVYGQnI z)o*0LODM2Qc+0YCrtBxFTZFdgOe~WWqI)x)KAWFX_8r3c&FJc9al3K}rY@VzR^@+> z6^DxO%@~$XAWZ3;v!QO2DG`U(X&#bkCJIADiZj1wSI~+)``T3BIFmM=zlhtR-I||y zz`w`77r)7WeF;*NHS2k1YhJ%LtSzIZ8NYXn<%DC_RbU0_bs(?dq~IQ;$mE2^%zAS!n^qVKw{OMZ9C48rV7uF(Qm9p<{OI4pi7 zFlNn9dL{w=tYjq&>MJ%;t3n?aNYXc>rTo;P#kzn(uY&|0>rB2W#dSIY3AR2`AYoG@ z`~7ox&oz9i>rWLzzt4kD0PMql08{UN(UIJxpSM_-riGA*sqK#--uP}sD(TGg?N?9@ zZF?xF&X~e$q9qe&Y*O0DDh=X9mfEl7V2@Z2eYm+R81ws)P0iI30c#f_kfa`#4MQB) zyV6~tAr1Dd9XUab^=&pRH5m_y5h7qr)`s1!QoOESJ+e$QAWa!`n@GCI7b|oi#F&J8 zAx|q@XMtIh*Rzf+H`lT4*s%MdxKpsDz2|}00L0eLfp)A?7nK-?^eTpA!myhL`mThjjnm*Fi zty1wrTk+(dEb}7jOnjQ#UQxNf!791m8b&1GvVF=&tAg(CtR9}fFOPV% z*Z+ z9#$5F-2g>+a!Ge(t*Tc~OU=>wj-DUM+h3PT^|RdCKRX?{MO^^5AQyi)ctyK`cbxcF z^}dgYh}xvy6_XF#PH|C6oS6|fvM=lLoxP;oon^Pz&HY~Ca0Z(nUqmUx~OBXJvXqGshi(uVA|eV?WKt_l{YxJsPls{ZI4b zTc02Z&ha!JlQ9oaUl*Z3%+;`Wwh&Rx&g1f!tvVW@8E}18o6HCw{_nNWF@vOrnqX$O z29Gsp3F347thv1AJ2@^Kph1Zy9J9`uj}?f%zV2qYh~ z3-k~ZN13f3Ab@4$>&_4w$UN>?7{DX%`;3_W8y#3P5Q2%H&ECE`dn{94Pp8};7-#(q z6@$}8K>)_)38k0GZ@wU+@5TB*t&a!Sk5Y2oJXR0xvVv}nH1jBWf>QZjRATgrV@*Uj z=~sm6&I(J&8X%4!WlfzbAxrV9{{N!hyej<7W*G>E@z{uuw~;fq^Tofp25;!`e5ix# z!NlmRx&QGR1a@luqf6sY2L3Y@@EQr>(J{E{RE!QoA(&SjkNsQd(r`n-)!$6uGBNfs zT{@HoFDqaKY4sdR`i$_0Mx>D0MSVO0!CklRJV4-wu^6Ag5R*hgPDPv{}`1COaXndm*uwu zJ}_4h%HOt1sN2NmW$K*C2N=-mKP`hu6)J+L&Ebw=cr0r%L%p3>c+NFow)L59u+Tu7 z!t8rX%Ye{CJea?~8XNR7vBy^D_3$?KIHM#s8WI1Aj?A`wJ5~n;&PXBfue2eaH$kjp z!@$~Nll*A7C2fx9@idS$)$mLH7({x;1~OX%!UXtT^w1&~Z{w`5`^l$xh}sFjJ`C-4 zzwzM@I2iQZySrmWW$T_u;Xly-)4?)6MT7zOJ$Gextz;Mz08zdi640svra&%^+1m2q zzSY5jyOe~Q$BARy?pHFrxXf%VdoVfYk;@5mrcmk`>cfY}Yd@{GfYDn+JLrpPT3(to z_G@pz!G!B&C{76wZS>rBsQ4^d&Bu>D0uOIX0hnK(j=SA1SQ7X=*R1&DaYLHulYh^E z9Q)<^hFOprjY*t4vh#Qu1-t;Q0=XsVlnBRCG)-tma?C2z!Slu;zA5)6&VZQzT3L71 z*2{f!xZlsFz^SWt+=GC_2-sWH)dl#DdGpmypF7@fzO*{hm^6Eb)8sYp&_UI1DC%qQ zK`q*nD8(J;R5x4r123yd{@ZK_ivLZGJEm~04!>7aodQvJcAQ=&CalM;TB1@sb_te! z(h$Hw4Zgd~*6n_GI@8OOxalB*HhVg!|3pz+s+y<%nf1s9hkP$tHhmG6DDx66S4&{b`LAN(2sd|=4>p9)5)a^K(oj#%z-5lH>YcW*XKjaf;B zRE=0G{44v&Q?FEC9Zn3k$>fU#4Da{WV6(JqY9>65U+Y^1-}ZX=R8~COhCdRcB>Z|( zr3c$W(CwaB0v-v6MNfSoT7EZS620q(T<&3fgbtAHxNErlg_f#zCZD1`9NYbY*#5TA zw-nb_QX^sXy3LmBW{XMR5WqcMqPGkGZLXgC*FLOz>(zbX5ErqbN@d{)3*p>pYp$;S zO4z&D;0-zsqBI89qvZAAL90=5(g)*) zRNPau!|SL&nKfUJY8>-+ho7h1j2sUAc(8i;LiY~)^xxvtzr8t1uCiY`|Ly+^84Elc z%4sik%!_`Mira0+VoVRLI%;kG7y4Vdbp)sDBVUolkeeZvEx&*CjNi(uqavu);nY^l*N39%I|Vc zby$zAAJ5&Hy-tQWNqdGG-GW2^OYfaoW5IdGM{N_DbY!a=ec}We)!tyvuPPd^HFq=H zZ?nAcKKvrX+}m%k7+`#2S^1tH%}B_R^!TOr^oIHw;#EE^&+T`%Q|5{#qCx|M4LYS6 zv0oyZdq`B9kF*&Zy=#P+r^U`sY#G6!OlMHq)rt37R(q3H<7OvCV+widjHA;Z1O%eT zID1~X2@g2GxHDKpu?;?ZDxRtDqFa#FEfMzI*bcD{==Yi8yTTU_h;j8QOU%_V=a`iHr0Hr`(#6JU6)G(U^0A4^(flFGrp@PDZTHU=vy`!Q zSxLLX)mXmMm`1M77+ga1-(t4FyS3?f&KXuyX|an2^f=Q{s-zb!g!16QfWPxzsfW0W zVfU=h-z&Yr>))jGJloQKCn@$+*s_596=bqIJrLjlTZJ=rez52)F}L<3fHDH|bNS^-b_4 zZOEn!;om2uK5*Vhq)&h+U(oXK(#5am=|}{q!y97s6)UG0A*3AQ=W{_~L$A#0-(0(Q zRJZRo;`pVl;%S!s<7r0?25*8|*f#qGM4OGnA4Lfre2EueZdA5s?!4R1Og>pyN}Cqf zIx7jb?-Cmaxew<)yeKP@FY`eF`igNLwZ(JDl@-;WX?EY7A2dNWN3VjkWYLx=<)sua zF5Y?B0li@l@WqJeC`4hcvyLlbGP?Va+WoC1&JXF>_h9_4lHiT=JKgte_Iy&(cy<@8 zCgy~Z>*foZ+Z*pDZ>4cZWFmiZxwdwwr_Oy2MnpCpM2%2UdoFVVAsRrV{!?3*p2S(Sv4@+a z7O20|GJPMjpJ(~#$sVU!Iww#Vma-okBfdo^o>;M%N=5-%7Yylzd&gp{+6p+6?az>Z zqO|4zE$!=zY%&VnwF&)E;oKRQQ4fbu^0mHK@3lF~=-}69`}d}Gj7q<^T}F=Zhq=fe z1IGHo-*bLQx5nN*Wc%xEB4?Z-;Aa!$sFmpg6Jb&vPq2I^QS0w8`zLJTb?ZQo$Rmt< zo@B;$(D<0(*8{VeM2EHX{HpK^7Z@JQ)&NKGoiH%~xunwE10O!qH090ol;GG`3jXCq z{k$j3fh;t_-_K~FCAEN->F-_lj*JiY6aDlXe=sM&N$1@z26o3KrJ9%SGRFMiW}sG6 zO&(jJEj!BU?FEpclQC-FHWCy7MQ%=TC?Wx0P(!2)_^GuCYkI zcdd%Tw{aRAs6?Pu)4kG{y5tAx`O<7VWo-_vV^={8OSQRfCU!7M#}%Zq&tCRg)gB9^ z^{MgQd=hT7`g5+P`9m!Ss2wuAX-F{ipRP*FNfYwruPSy_=GY4-Q7;ayA(F520d>>Z z>|5s;SA0LH5uQRc5CN1>Cefb02Wy3{*~aT$CwH0XcO8@Ug`C^u&Gu?s8=l_gnl)ON z{hz=*10bnL)75)nGyWZ3176SShWE6#>uu7yYF9hVi0q(>dh3V0|5vy4s6BDy-)qETD6@+#_*fJV-d|y9`}+P zUsf#uwb0*~VO)BURT3dIdRTN-*(5Fb*s4p@E0X65wr#wv9-VR1Obxu%PRU_(Dgo|& zV!bPybG(WwN0*Ym+>ihY!N>hJGufPJ-(<#Z{Qns22~DX4+yX4%+Y_o(6(iSmp1!jz zCEL*wGbhg{TLQnaZ(=iDx#KPgzl$-XuOJCB2Gds3aWVato4heB4 zs21D-(*!B{-e%b%ZEWDRv`Oq^YiHsWK#b%W)0n(1mNSewW3*wB`fWe%eG`qBinl=$ zSki=H@u{~hqY*p3q0#uZ<3g*f<@HzFQL|?klC)Stujd5ilmK6l4-Gq0?B`jMc4so6 z5guQw`v_X;Nz{Q&icM6#$TNd6SNku$Jfx zo$kpDP$7Y_7T%Y1)c8vl~AUq*=AIYBjW5Gsy zdz;a>YC6M7`rzpDuwN$>`=tq7&-mAR`}5G=3jb(rK~V5ipQIzTUNLUfsC^Gc^Z=hn1zXHooq-WUa$Vow_NFKj$>#fH}&7! zjVHP6K(k-O_g_ar+7~TD(TdknreC+mAMYX!JHr(c5pI)gpauEfH2ijh9ZHMAJyX^N@f3|-zN7ns@%vS% zi}NIA(LtJzGXS6PRFj0?Iz(s^S|a~x{P}7^pJZLKb@{ea?DNug&Q4b#7hph8HTN;f zBW?r2ppsSqxpX)r;lC~U^j4-dhXAN;e?Ht)lLyfYA?SfB*7~`*MZ6AJe8>dbJPf|M z9D$Gu75uMhquk))V`msN-x9!1aQ6NM;7{29be#{20Z?G@riZK)khBOc&&>l|4v2y@ z;JgrXSl5>^eK%*Z6-jW(abtlt7Zfj$NMVqmSOyorFoFPbd~NucAP&;U zsKyO0-^W$Lt5{76MT#ca5;ST4BR(pR9Xy*I?Be&c|KE<-CP&G6+H7`bF{v;U3b^y= z$tarh44jq2K^HL4>D!MHevGzQ==Zwq) z*tI@z1o|H{IK@Voy^iwaXPogj2UQR-5)AS5X`lln4K)!+aZd>3=i8=4Z-2`#fP8_V NHT2Zq-LMY*{{WX%y`_ * [1]_ `Scipy `_ @@ -41,6 +41,55 @@ Plotting in 2D .. image:: ../_images/atr.png :height: 200px +See below for a simple example of a plots xml file that demonstrates the +capabilities of 2D slice plots. Here we assume that there is a ``geometry.xml`` +file containing 7 cells. + +.. code-block:: xml + + + + + + myplot + 0 0 + 10 10 + 2000 2000 + 0 0 0 + + + + + + + 1 3 4 5 6 + + + + + + +In this example, OpenMC will produce a plot named ``myplot.ppm`` when run in +plotting mode. The picture will be on the xy-plane, depicting the rectangle +between points (-5,-5) and (5,5) with 2000 pixels along each dimension. The +color of each pixel is determined by placing a particle at the center of that +pixel and using OpenMC's internal ``find_cell`` routine (the same one used for +particle tracking during simulation) to determine the cell and material at that +location. In this example, pixels are 10/2000=0.005 cm wide, so points will be +at (-4.9975,-4.9975), (-4.9950,-4.9975), (-4.9925,-4.9975), etc. This is pointed +out to demonstrate that this plot may miss any features smaller than 0.005 cm, +since they could exist between pixel centers. More pixels can be used to resolve +finer features, but could result in larger files. + +The ``background``, ``col_spec``, and ``mask`` elements define how to set pixel +colors based on the cell ids at each pixel center. In this example, RGB colors +are specified for cells 1,2,3,4, and 7, a random color will be assigned to cells +5 and 6, and a black background color (``rgb="0 0 0"``) will be applied to +locations where no cell is defined. However, the ``mask`` element here says that +only cells 1,3,4,5, and 6 should be displayed, with other cells taking a white +color (``rgb="255 255 255"``), which overrides the ``col_spec`` for cell 2 and +the random color assigned to cell 7. + After running OpenMC to obtain PPM files, images should be saved to another format before using them elsewhere. This cuts down the size of the file by orders of magnitude. Most image viewers and editors that can view PPM images @@ -53,7 +102,7 @@ Ubuntu: ``sudo apt-get install imagemagick``). Images are then converted like: .. code-block:: sh - convert plot.ppm plot.png + convert myplot.ppm myplot.png Plotting in 3D -------------- @@ -61,10 +110,37 @@ Plotting in 3D .. image:: ../_images/3dgeomplot.png :height: 200px +See below for a simple example of a plots xml file that demonstrates the +capabilities of 3D voxel plots. + +.. code-block:: xml + + + + + + myplot + 0 0 0 + 10 10 10 + 500 500 500 + + + + +Voxel plots are built the same way 2D slice plots are, by determining the cell +or material id of a particle at the center of each voxel. In this example, the +space covered is the cube between the points (-5,-5,-5) and (5,5,5), with voxel +centers 10/500 = 0.02 cm apart. The binary VOXEL files that are produced do not +specify any color - instead containing only material or cell ids (material id +in this example) - and thus the ``background``, ``col_spec``, and ``mask`` +elements are not used. If no cell is found at a voxel center, an id of -1 is +stored. + The binary VOXEL files output by OpenMC can not be viewed directly by any existing viewers. In order to view them, they must be converted into a standard -mesh format that can be viewed in ParaView, Visit, etc. The provided utility -voxel.py accomplishes this for SILO: +mesh format that can be viewed in ParaView, Visit, etc. This typically will +compress the size of the file significantly. The provided utility voxel.py +accomplishes this for SILO: .. code-block:: sh @@ -88,13 +164,21 @@ or Users can process the binary into any other format if desired by following the example of voxel.py. For the binary file structure, see :ref:`devguide_voxel`. +Once processed into a standard 3D file format, colors and masks can be defined +using the stored id numbers to better explore the geometry. The process for +doing this will depend on the 3D viewer, but should be straightforward. + +.. image:: ../_images/3dba.png + :height: 200px + .. note:: 3D voxel plotting can be very computer intensive for the viewing program (Visit, Paraview, etc.) if the number of voxels is large (>10 million or so). Thus if you want an accurate picture that renders smoothly, consider using only one voxel in a certain direction. For - instance, the 3D pin lattice figure above was generated with a - 500x500x1 voxel mesh, which allows for resolution of the cylinders - without wasting too many voxels on the axial dimension. + instance, the 3D pin lattice figure at the beginning of this section + was generated with a 500x500x1 voxel mesh, which allows for resolution + of the cylinders without wasting too many voxels on the axial + dimension. ------------------- From cbe6560ba1d6e85d47f35a5645dfa0fac928ec8d Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 31 Jan 2014 11:34:07 -0500 Subject: [PATCH 31/78] message written when reading in source --- src/source.F90 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/source.F90 b/src/source.F90 index 4ec3587763..85ef87d65f 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -40,6 +40,9 @@ contains ! Read the source from a binary file instead of sampling from some ! assumed source distribution + message = 'Reading source file from ' // trim(path_source) // '...' + call write_message(6) + ! Open the binary file call sp % file_open(path_source, 'r', serial = .false.) From 0d1176ea030492d43f64adeab3d8cbeb898138ab Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 2 Feb 2014 18:23:55 -0500 Subject: [PATCH 32/78] Copy executable rather than moving when running run_suite. --- tests/run_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/run_tests.py b/tests/run_tests.py index 49975c218a..610ad2422b 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -6,6 +6,7 @@ import os import sys import nose import glob +import shutil from subprocess import call from nose_mpi import NoseMPI @@ -46,9 +47,8 @@ def run_suite(name=None, mpi=False): try: os.chdir(pwd) - os.rename(pwd + '/../src/openmc-' + name, pwd + '/../src/openmc') + shutil.copyfile(pwd + '/../src/openmc-' + name, pwd + '/../src/openmc') result = nose.run(argv=argv, addplugins=plugins) - os.rename(pwd + '/../src/openmc', pwd + '/../src/openmc-' + name) except OSError: result = False print('No OpenMC executable found for ' + name + ' tests') From 488d7582dff27919b99a6fa1819a14fd2a68b951 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sun, 2 Feb 2014 18:24:28 -0500 Subject: [PATCH 33/78] Convert test_compily.py to use cmake. --- tests/test_compile/test_compile.py | 307 ++++++++++++++++++----------- 1 file changed, 192 insertions(+), 115 deletions(-) diff --git a/tests/test_compile/test_compile.py b/tests/test_compile/test_compile.py index 8d411abd91..882a4795c1 100644 --- a/tests/test_compile/test_compile.py +++ b/tests/test_compile/test_compile.py @@ -15,10 +15,11 @@ import shutil pwd = os.path.dirname(__file__) -if 'COMPILER' in os.environ: - compiler = 'COMPILER=' + os.environ['COMPILER'] -else: - compiler = 'COMPILER=gnu' +# Set default copmilers +fc = 'gfortran' +h5fc = 'h5fc' +h5pfc = 'h5pfc' +mpifc = 'mpif90' def setup(): @@ -27,257 +28,333 @@ def setup(): def test_normal(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler]) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -H. -Bbuild'.format(fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-normal') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-normal') def test_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-debug') def test_profile(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'PROFILE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dprofile=on -H. -Bbuild'.format(fc)) assert returncode == 0 + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-profile') def test_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-optimize') def test_mpi(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -H. -Bbuild'.format(mpifc)) assert returncode == 0 - shutil.move('openmc', 'openmc-mpi') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi') def test_mpi_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(mpifc)) assert returncode == 0 - shutil.move('openmc', 'openmc-mpi-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi-debug') def test_mpi_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(mpifc)) assert returncode == 0 - shutil.move('openmc', 'openmc-mpi-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi-optimize') def test_omp(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-omp') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp') def test_omp_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(fc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-debug') def test_omp_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(fc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-optimize') def test_hdf5(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'HDF5=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -H. -Bbuild'.format(h5fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-hdf5') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-hdf5') def test_hdf5_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'HDF5=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(h5fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-hdf5-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-hdf5-debug') def test_hdf5_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'HDF5=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(h5fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-hdf5-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-hdf5-optimize') def test_omp_hdf5(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(h5fc)) assert returncode == 0 - shutil.move('openmc', 'openmc-omp-hdf5') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-hdf5') def test_omp_hdf5_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(h5fc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-hdf5-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-hdf5-debug') def test_omp_hdf5_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'OPENMP=yes', 'HDF5=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(h5fc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-hdf5-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-hdf5-optimize') def test_petsc(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -H. -Bbuild'.format(mpifc)) assert returncode == 0 - shutil.move('openmc', 'openmc-petsc') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-petsc') def test_petsc_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Ddebug=on '.format(mpifc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-petsc-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-petsc-debug') def test_petsc_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'PETSC=yes', - 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Doptimize=on '.format(mpifc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-petsc-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-petsc-optimize') def test_mpi_omp(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(mpifc)) assert returncode == 0 - shutil.move('openmc', 'openmc-mpi-omp') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi-omp') def test_mpi_omp_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(mpifc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-mpi-omp-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi-omp-debug') def test_mpi_omp_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(mpifc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-mpi-omp-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-mpi-omp-optimize') def test_mpi_hdf5(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -H. -Bbuild'.format(h5pfc)) assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5') def test_mpi_hdf5_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Ddebug=on -H. -Bbuild'.format(h5pfc)) assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-debug') def test_mpi_hdf5_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Doptimize=on -H. -Bbuild'.format(h5pfc)) assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-optimize') def test_mpi_omp_hdf5(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -H. -Bbuild'.format(h5pfc)) assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-omp') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-omp') def test_mpi_omp_hdf5_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes', - 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Ddebug=on '.format(h5pfc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-omp-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-omp-debug') def test_mpi_omp_hdf5_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OPENMP=yes', 'HDF5=yes', - 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dopenmp=on -Doptimize=on '.format(h5pfc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-omp-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-omp-optimize') def test_mpi_hdf5_petsc(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -H. -Bbuild'.format(h5pfc)) assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-petsc') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-petsc') def test_mpi_hdf5_petsc_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes', - 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Ddebug=on '.format(h5pfc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-petsc-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-petsc-debug') def test_mpi_hdf5_petsc_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'HDF5=yes', 'PETSC=yes', - 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Doptimize=on '.format(h5pfc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-phdf5-petsc-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-phdf5-petsc-optimize') def test_mpi_omp_hdf5_petsc(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes', - 'PETSC=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) + + '-H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-phdf5-petsc') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc') def test_mpi_omp_hdf5_petsc_debug(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes', - 'PETSC=yes', 'DEBUG=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) + + '-Ddebug=on -H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-phdf5-petsc-debug') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc-debug') def test_mpi_omp_hdf5_petsc_optimize(): - returncode = run(['make', 'distclean']) - returncode = run(['make', compiler, 'MPI=yes', 'OMP=yes', 'HDF5=yes', - 'PETSC=yes', 'OPTIMIZE=yes']) + shutil.rmtree('build', ignore_errors=True) + returncode = run('FC={0} cmake -Dpetsc=on -Dopenmp=on '.format(h5pfc) + + '-Doptimize=on -H. -Bbuild') assert returncode == 0 - shutil.move('openmc', 'openmc-omp-phdf5-petsc-optimize') + returncode = run('make -s -C build') + assert returncode == 0 + shutil.move('build/bin/openmc', 'openmc-omp-phdf5-petsc-optimize') def run(commands): - proc = Popen(commands, stderr=STDOUT, stdout=PIPE) + proc = Popen(commands, shell=True, stderr=STDOUT, stdout=PIPE) print(proc.communicate()[0]) returncode = proc.returncode return returncode def teardown(commands): - returncode = run(['make', 'distclean']) + shutil.rmtree('build', ignore_errors=True) shutil.copy('openmc-normal', 'openmc') From 45a2c5a8187167f698896bfb9b6d1289a3d76115 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 6 Feb 2014 23:27:01 -0500 Subject: [PATCH 34/78] Fix for PETSc not finding libfblas and libflapack. --- src/CMakeLists.txt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 453a87c89b..2781f4d27d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -131,10 +131,25 @@ endif() if(petsc) find_package(PETSc REQUIRED HINTS $ENV{PETSC_DIR}/conf) find_library(libpetsc petsc $ENV{PETSC_DIR}/lib) + + # If libfblas wasn't found, search the PETSc lib directory + if(PETSC_FBLAS_LIB STREQUAL "PETSC_FBLAS_LIB-NOTFOUND") + find_library(PETSC_FBLAS_LIB fblas $ENV{PETSC_DIR}/lib) + list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_FBLAS_LIB-NOTFOUND) + list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_FBLAS_LIB}) + endif() + + # If libflapack wasn't found, search the PETSc lib directory + if(PETSC_FLAPACK_LIB STREQUAL "PETSC_FLAPACK_LIB-NOTFOUND") + find_library(PETSC_FLAPACK_LIB flapack $ENV{PETSC_DIR}/lib) + list(REMOVE_ITEM PETSC_PACKAGE_LIBS PETSC_FLAPACK_LIB-NOTFOUND) + list(INSERT PETSC_PACKAGE_LIBS 0 ${PETSC_FLAPACK_LIB}) + endif() + message("-- Using PETSC: ${libpetsc}") add_definitions(-DPETSC) include_directories($ENV{PETSC_DIR}/include) - set(libraries "${PETSC_PACKAGE_LIBS};${libpetsc};${libraries}") + set(libraries "${libpetsc};${PETSC_PACKAGE_LIBS};${libraries}") endif() #=============================================================================== From 5d0b98835d2ca1101b4d11a273bfa1ff12530ff7 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 17 Feb 2014 17:30:02 -0500 Subject: [PATCH 35/78] Extract files to subdirectories. Add pre-generated cross_sections.xml. --- data/cross_sections_nndc.xml | 1716 ++++++++++++++++++++++++++++++++++ data/get_nndc_data.py | 17 +- 2 files changed, 1727 insertions(+), 6 deletions(-) create mode 100644 data/cross_sections_nndc.xml diff --git a/data/cross_sections_nndc.xml b/data/cross_sections_nndc.xml new file mode 100644 index 0000000000..2e421d7ab0 --- /dev/null +++ b/data/cross_sections_nndc.xml @@ -0,0 +1,1716 @@ + + + ascii + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index 0f943d684c..c9279add6b 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -2,7 +2,8 @@ from __future__ import print_function import os -import os.path +import shutil +import subprocess import tarfile import urllib2 @@ -31,6 +32,7 @@ for f in files: if os.path.exists(f): if os.path.getsize(f) == file_size: print('Skipping ' + f) + filesComplete.append(f) continue else: overwrite = raw_input('Overwrite {0}? ([y]/n) '.format(f)) @@ -58,10 +60,13 @@ for f in files: continue # Extract files + suffix = f[f.rindex('-') + 1:].rstrip('.tar.gz') with tarfile.open(f, 'r') as tgz: - tgz.extractall(path='nndc') + print('Extracting {0}...'.format(f)) + tgz.extractall(path='nndc/' + suffix) - # Give xsdir a unique name - xsdir = 'nndc/xsdir' - if os.path.exists(xsdir): - os.rename(xsdir, xsdir + '_' + f.strip('.tar.gz')) +# ============================================================================== +# COPY CROSS_SECTIONS.XML + +print('Copying cross_sections_nndc.xml...') +shutil.copyfile('cross_sections_nndc.xml', 'nndc/cross_sections.xml') From 6edd3934fbb3071f5f98c005a72ba0c4171b17ae Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 17 Feb 2014 17:46:10 -0500 Subject: [PATCH 36/78] Update installation guide with information about NNDC data. --- docs/source/usersguide/install.rst | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index 164b0151be..ff33d9a6c6 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -264,10 +264,27 @@ Cross Section Configuration In order to run a simulation with OpenMC, you will need cross section data for each nuclide in your problem. Since OpenMC uses ACE format cross sections, you -can use nuclear data that was processed with NJOY, such as that distributed with -MCNP_ or Serpent_. The TALYS-based evaluated nuclear data library, TENDL_, is +can use nuclear data that was processed with NJOY_, such as that distributed +with MCNP_ or Serpent_. Several sources provide free processed ACE data as +described below. The TALYS-based evaluated nuclear data library, TENDL_, is also openly available in ACE format. +Using ENDF/B-VII.1 Cross Sections from NNDC +------------------------------------------- + +The NNDC_ provides ACE data from the ENDF/B-VII.1 neutron and thermal scattering +sublibraries at four temperatures processed using NJOY_. To use this data with +OpenMC, a script is provided with OpenMC that will automatically download, +extract, and set up a confiuration file: + +.. code-block:: sh + + cd openmc/data + python get_nndc_data.py + +At this point, you should set the :envvar:`CROSS_SECTIONS` environment variable +to the absolute path of the file ``openmc/data/nndc/cross_sections.xml``. + Using JEFF Cross Sections from OECD/NEA --------------------------------------- @@ -314,6 +331,8 @@ distribution to the location of the Serpent cross sections. Then, either set the environment variable to the absolute path of the ``cross_sections_serpent.xml`` file. +.. _NJOY: http://t2.lanl.gov/nis/codes.shtml +.. _NNDC: http://www.nndc.bnl.gov/endf/b7.1/acefiles.html .. _NEA: http://www.oecd-nea.org .. _JEFF: http://www.oecd-nea.org/dbdata/jeff/ .. _here: http://www.oecd-nea.org/dbdata/pubs/jeff312-cd.html From 1fb2bb96f6c31ac33bfde36b33a48929906eebf1 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 18 Feb 2014 17:47:20 -0500 Subject: [PATCH 37/78] Updated data/readme.rst. --- data/readme.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/readme.rst b/data/readme.rst index d975723b52..03685491d0 100644 --- a/data/readme.rst +++ b/data/readme.rst @@ -15,6 +15,9 @@ work with a few common cross section sources. - **cross_sections_ascii.xml** -- This file matches ENDF/B-VII.0 cross sections distributed with MCNP5 / MCNP6 beta. +- **cross_sections_nndc.xml** -- This file matches ENDF/B-VII.1 cross sections + distributed from the `NNDC website`_. + - **cross_sections_serpent.xml** -- This file matches ENDF/B-VII.0 cross sections distributed with Serpent 1.1.7. @@ -31,3 +34,4 @@ element in your settings.xml, or set the CROSS_SECTIONS environment variable to the full path of the cross_sections.xml file. .. _user's guide: http://mit-crpg.github.io/openmc/usersguide/install.html#cross-section-configuration +.. _NNDC website: http://www.nndc.bnl.gov/endf/b7.1/acefiles.html From 216be5029e1a58aad691312223e232f5064106d3 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 18 Feb 2014 17:55:04 -0500 Subject: [PATCH 38/78] Add build/ directories to .gitignore. --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index bc3678cc38..eb7d7df349 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,12 @@ src/openmc docs/build docs/source/_images/*.pdf +# Source build +src/build + +# build from src/utils/setup.py +src/utils/build + # xml-fortran reader src/xml-fortran/xmlreader From b102b71809a3f9baf62046ef8e1bd291bedad8e5 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 18 Feb 2014 17:55:40 -0500 Subject: [PATCH 39/78] Added HDF5 files to .gitignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9f720f9894..2dae450d08 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,6 @@ src/templates/*.f90 # Test results error file results_error.dat + +# HDF5 files +*.h5 From a96c6ad47463aa26cbbc13c01c9b99f46b5f4f75 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 19 Feb 2014 18:02:18 -0500 Subject: [PATCH 40/78] Ask user to delete downloaded tgz files. --- data/get_nndc_data.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index c9279add6b..0fd1a98894 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -4,6 +4,7 @@ from __future__ import print_function import os import shutil import subprocess +import sys import tarfile import urllib2 @@ -70,3 +71,19 @@ for f in files: print('Copying cross_sections_nndc.xml...') 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) ') +else: + response = input('Delete *.tar.gz files? ([y]/n) ') + +# Delete files if requested +if not response or response.lower().startswith('y'): + for f in files: + if os.path.exists(f): + print('Removing {0}...'.format(f)) + os.remove(f) From 3f6913ba6ed110f324d1a0afabe4b68a368f4dd1 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 19 Feb 2014 18:12:38 -0500 Subject: [PATCH 41/78] Make get_nndc_data.py compatible with Python 3. --- data/get_nndc_data.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/data/get_nndc_data.py b/data/get_nndc_data.py index 0fd1a98894..2e76401a4b 100755 --- a/data/get_nndc_data.py +++ b/data/get_nndc_data.py @@ -6,7 +6,11 @@ import shutil import subprocess import sys import tarfile -import urllib2 + +try: + from urllib.request import urlopen +except ImportError: + from urllib2 import urlopen baseUrl = 'http://www.nndc.bnl.gov/endf/b7.1/aceFiles/' files = ['ENDF-B-VII.1-neutron-293.6K.tar.gz', @@ -23,7 +27,7 @@ filesComplete = [] for f in files: # Establish connection to URL url = baseUrl + f - req = urllib2.urlopen(url) + req = urlopen(url) # Get file size from header file_size = int(req.info().getheaders('Content-Length')[0]) @@ -36,7 +40,10 @@ for f in files: filesComplete.append(f) continue else: - overwrite = raw_input('Overwrite {0}? ([y]/n) '.format(f)) + if sys.version_info[0] < 3: + overwrite = raw_input('Overwrite {0}? ([y]/n) '.format(f)) + else: + overwrite = input('Overwrite {0}? ([y]/n) '.format(f)) if overwrite.lower().startswith('n'): continue From 6dda6baeb3adee9497f70c09482d4d4e39314356 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Thu, 20 Feb 2014 16:32:28 -0500 Subject: [PATCH 42/78] updated documentation --- docs/source/usersguide/input.rst | 49 +++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 28ba30c23e..362197439d 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -348,8 +348,10 @@ attributes/sub-elements: The ```` element indicates at what batches a state point file should be written. A state point file can be used to restart a run or to get -tally results at any batch. This element has the following -attributes/sub-elements: +tally results at any batch. The default behavior when using this tag is to +write out the source bank in the state_point file. This behavior can be +customized by using the ```` element. This element has the +following attributes/sub-elements: :batches: A list of integers separated by spaces indicating at what batches a state @@ -364,19 +366,52 @@ attributes/sub-elements: *Default*: None +```` Element +-------------------------- + +The ```` element indicates at what batches the source bank +should be written. The source bank can be either written out within a state +point file or separately in a source point file. This element has the following +attributes/sub-elements: + + :batches: + A list of integers separated by spaces indicating at what batches a state + point file should be written. It should be noted that if source_separate + tag is not set to "true", this list must be a subset of state point batches. + + *Default*: Last batch only + + :interval: + A single integer :math:`n` indicating that a state point should be written + every :math:`n` batches. This option can be given in lieu of listing + batches explicitly. It should be noted that if source_separate tag is not + set to "true", this value should produce a list of batches that is a subset + of state point batches. + + *Default*: None + :source_separate: - If this element is set to "true", a separate binary source file will be + 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 - :source_write: If this element is set to "false", source sites are not written - to the state point file. This can substantially reduce the size of state - points if large numbers of particles per batch are used. + :source_write: + If this element is set to "false", source sites are not written + to the state point or source point file. This can substantially reduce the + size of state points if large numbers of particles per batch are used. *Default*: true + :overwrite_latest: + If this element is set to "true", a source point file containing + the source bank will be written out to a separate file named + ``source.binary`` or ``source.h5`` depending on if HDF5 is enabled. + This file will be overwritten at every single batch so that the latest + source bank will be available. It should be noted that a user can set both + this element to "true" and specify batches to write a permanent source bank. + ```` Element ------------------------------ @@ -1052,7 +1087,7 @@ sub-elements: the PNG format can often times reduce the file size by orders of magnitude without any loss of image quality. Likewise, high-resolution voxel files produced by OpenMC can be quite large, - but the equivalent SILO files will be significantly smaller. + but the equivalent SILO files will by significantly smaller. *Default*: "slice" From 9acc8ff366969813276d71bc59eb451e13bca7fa Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Thu, 20 Feb 2014 17:48:13 -0500 Subject: [PATCH 43/78] deleted unused data file --- tests/test_sourcepoint_latest/results_test.dat | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 tests/test_sourcepoint_latest/results_test.dat diff --git a/tests/test_sourcepoint_latest/results_test.dat b/tests/test_sourcepoint_latest/results_test.dat deleted file mode 100644 index 00a65f913b..0000000000 --- a/tests/test_sourcepoint_latest/results_test.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -3.011353E-01 2.854556E-03 From e3a45bce3b090949ad2b4901f64ca48f55af3a1a Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Thu, 20 Feb 2014 18:32:51 -0500 Subject: [PATCH 44/78] updated results file for source point latest test --- tests/test_sourcepoint_latest/results_true.dat | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_sourcepoint_latest/results_true.dat b/tests/test_sourcepoint_latest/results_true.dat index 748df0351e..00a65f913b 100644 --- a/tests/test_sourcepoint_latest/results_true.dat +++ b/tests/test_sourcepoint_latest/results_true.dat @@ -1,3 +1,2 @@ k-combined: -0.000000E+00 0.000000E+00 --9.438655E-02 -4.436810E+00 -2.416825E+00 +3.011353E-01 2.854556E-03 From e63746cdb8247308e9cd5a64ba07029cbf402b7b Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 21 Feb 2014 10:21:32 -0500 Subject: [PATCH 45/78] added cleanup script to remove all binary files from directories --- tests/cleanup.bash | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 tests/cleanup.bash diff --git a/tests/cleanup.bash b/tests/cleanup.bash new file mode 100755 index 0000000000..d23b166a26 --- /dev/null +++ b/tests/cleanup.bash @@ -0,0 +1,14 @@ +# This simple script ensures that all binary +# output files have been deleted in all the +# folders. This can occur if a previous error +# occurred and the test suite was rerun without +# deleting left over binary files. This will +# cause an assertion error in some of the +# tests. +for i in ./*; do + if [ -d "$i" ]; then + cd $i + rm -f *.binary *.h5 + cd .. + fi +done From d1a42b79ce8b6c485ed80b025d5df70aa8bf0d26 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 21 Feb 2014 10:50:18 -0500 Subject: [PATCH 46/78] fixed deleting binary files --- tests/test_sourcepoint_restart/test_sourcepoint_restart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_sourcepoint_restart/test_sourcepoint_restart.py b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py index a4387405b8..9b2e3185f9 100644 --- a/tests/test_sourcepoint_restart/test_sourcepoint_restart.py +++ b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py @@ -126,7 +126,7 @@ def test_results_serial(): def teardown(): output = glob.glob(pwd + '/statepoint.7.*') - output += glob.glob(pwd + '/sourcepoint.7.*') + output += glob.glob(pwd + '/source.7.*') output.append(pwd + '/results_test.dat') for f in output: if os.path.exists(f): From 411aea322dddb42ca66975e600d7a7de6490e971 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 21 Feb 2014 14:14:56 -0500 Subject: [PATCH 47/78] restructured sourcepoint restart test --- tests/test_sourcepoint_restart/results.py | 2 +- .../test_sourcepoint_restart/results_true.dat | 3378 ++++++++--------- tests/test_sourcepoint_restart/settings.xml | 4 +- .../test_sourcepoint_restart.py | 46 +- 4 files changed, 1713 insertions(+), 1717 deletions(-) diff --git a/tests/test_sourcepoint_restart/results.py b/tests/test_sourcepoint_restart/results.py index d0b3a55e04..f4c32a893f 100644 --- a/tests/test_sourcepoint_restart/results.py +++ b/tests/test_sourcepoint_restart/results.py @@ -11,7 +11,7 @@ import statepoint if len(sys.argv) > 1: sp = statepoint.StatePoint(sys.argv[1]) else: - sp = statepoint.StatePoint('statepoint.7.binary') + sp = statepoint.StatePoint('statepoint.10.binary') sp.read_results() # extract tally results and convert to vector diff --git a/tests/test_sourcepoint_restart/results_true.dat b/tests/test_sourcepoint_restart/results_true.dat index f2b97af34d..ad94d76457 100644 --- a/tests/test_sourcepoint_restart/results_true.dat +++ b/tests/test_sourcepoint_restart/results_true.dat @@ -1,16 +1,16 @@ k-combined: -0.000000E+00 0.000000E+00 +3.011353E-01 2.854556E-03 tally 1: -3.000000E-03 -5.000000E-06 -1.350207E-03 -9.349751E-07 --7.677912E-05 -4.241317E-07 --3.387424E-04 -1.343262E-07 -1.215119E-03 -9.127703E-07 +8.000000E-03 +1.600000E-05 +6.192275E-04 +1.370333E-06 +-8.662964E-04 +7.279501E-07 +-1.041312E-05 +3.860351E-07 +4.821963E-03 +5.791161E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -41,16 +41,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.000000E-03 -9.000000E-06 -1.889613E-04 -3.570639E-08 -2.320049E-04 -5.382627E-08 -1.491658E-03 -2.225044E-06 -1.817087E-03 -2.362232E-06 +1.100000E-02 +3.300000E-05 +4.387087E-03 +7.410082E-06 +1.860042E-03 +2.867148E-06 +3.399756E-03 +5.784483E-06 +5.116596E-03 +6.752240E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -59,6 +59,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.028119E-04 +9.169503E-08 +1.000000E-03 +1.000000E-06 +5.438971E-04 +2.958240E-07 +-5.626399E-05 +3.165637E-09 +-4.136011E-04 +1.710658E-07 +6.013419E-04 +3.616120E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -69,6 +81,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +5.000000E-03 +1.300000E-05 +3.577754E-03 +6.496319E-06 +1.890975E-03 +1.788514E-06 +9.937593E-04 +4.944395E-07 +1.803302E-03 +1.626040E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -139,38 +161,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.000000E-03 -4.000000E-05 -1.075518E-03 -3.528151E-06 -2.716562E-03 -1.166700E-05 -2.288359E-03 -2.867176E-06 -3.411472E-03 -8.255676E-06 +1.600000E-02 +6.600000E-05 +5.883798E-03 +1.472349E-05 +5.964243E-03 +1.758637E-05 +4.341846E-03 +6.731059E-06 +7.631087E-03 +1.536471E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -201,56 +201,56 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.300000E-02 +3.900000E-05 +1.678255E-03 +1.856663E-06 +3.802861E-03 +6.462034E-06 +-4.813541E-05 +2.987521E-06 +5.422032E-03 +6.871180E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.028119E-04 +9.169503E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 5.000000E-03 -1.700000E-05 -3.530317E-04 -1.159034E-06 -2.030571E-03 -4.217108E-06 -9.628222E-04 -4.775997E-07 -1.817087E-03 -2.362232E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-03 -2.000000E-06 -4.849895E-04 -9.196474E-07 -3.794711E-04 -4.964654E-07 -8.024923E-04 -3.245502E-07 -1.237485E-03 -9.676259E-07 +5.000000E-06 +1.710047E-03 +2.156886E-06 +7.353287E-04 +1.688467E-06 +1.623935E-03 +1.552163E-06 +2.439928E-03 +1.509909E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -321,16 +321,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -7.000000E-03 -2.500000E-05 -1.464813E-03 -1.309819E-06 -8.835792E-04 -6.990079E-07 -3.177051E-03 -5.159010E-06 -3.366739E-03 -5.697495E-06 +1.400000E-02 +4.200000E-05 +4.680073E-03 +4.832992E-06 +9.241957E-04 +9.879528E-07 +2.560088E-03 +5.615638E-06 +7.279260E-03 +1.195027E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -339,8 +339,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.009839E-04 -9.059133E-08 +5.992726E-04 +1.795675E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -361,18 +361,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.000000E-03 -5.000000E-06 -1.881176E-03 -2.067359E-06 -2.892742E-04 -1.089921E-07 --9.095343E-04 -4.184955E-07 -1.237485E-03 -9.676259E-07 -0.000000E+00 -0.000000E+00 +9.000000E-03 +1.900000E-05 +4.178982E-03 +4.155519E-06 +3.346853E-03 +6.203486E-06 +1.267269E-03 +3.209807E-06 +3.940659E-03 +3.581639E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -381,6 +379,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +3.028119E-04 +9.169503E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -401,16 +401,16 @@ tally 1: 0.000000E+00 3.121671E-04 9.744828E-08 -1.000000E-03 -1.000000E-06 -8.504018E-04 -7.231831E-07 -5.847747E-04 -3.419615E-07 -2.618879E-04 -6.858528E-08 -6.243342E-04 -3.897931E-07 +6.000000E-03 +1.200000E-05 +-2.469438E-05 +1.110126E-06 +6.006714E-04 +6.607712E-07 +1.988388E-03 +1.233934E-06 +3.924085E-03 +4.427425E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -481,16 +481,26 @@ tally 1: 7.229539E-07 3.009839E-04 9.059133E-08 -9.000000E-03 -4.500000E-05 -5.336900E-03 -1.424486E-05 -3.093810E-03 -5.161998E-06 -2.879582E-03 -4.229500E-06 -4.002256E-03 -8.501473E-06 +2.200000E-02 +1.140000E-04 +1.396444E-02 +4.152030E-05 +9.394828E-03 +1.953841E-05 +7.823718E-03 +1.254396E-05 +1.002065E-02 +2.139199E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.056238E-04 +3.667801E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -511,26 +521,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.600000E-02 -1.280000E-04 -4.224331E-03 -9.782839E-06 -3.223102E-03 -5.736299E-06 -2.099435E-03 -2.209094E-06 -7.346629E-03 -2.710118E-05 +3.200000E-02 +2.140000E-04 +1.152532E-02 +2.810551E-05 +8.134203E-03 +1.622011E-05 +3.372833E-03 +2.907244E-06 +1.577229E-02 +5.159641E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -561,896 +561,16 @@ tally 1: 7.222357E-08 0.000000E+00 0.000000E+00 -4.000000E-03 -1.000000E-05 -3.193650E-03 -5.924989E-06 -2.012845E-03 -2.064950E-06 -1.030603E-03 -6.338801E-07 -3.656540E-03 -7.357018E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.000000E-03 -1.000000E-05 -5.813261E-04 -2.815138E-07 --5.070667E-04 -2.458625E-07 --5.126590E-04 -1.937439E-07 -2.162803E-03 -2.798572E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.500000E-02 -1.130000E-04 -3.838937E-03 -7.695404E-06 -3.258655E-03 -8.032841E-06 -7.822538E-04 -5.238913E-06 -7.034462E-03 -2.505476E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.200000E-02 -7.400000E-05 -3.703109E-03 -7.450207E-06 -1.172561E-03 -6.983603E-06 -9.775789E-04 -3.396069E-06 -5.183826E-03 -1.446969E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.600000E-02 -1.300000E-04 -5.461842E-03 -1.700217E-05 --1.194197E-03 -2.155631E-06 --4.418175E-04 -1.630461E-07 -7.647613E-03 -2.954714E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.000000E-03 -2.000000E-05 -2.288086E-03 -4.056180E-06 -2.803000E-03 -6.212022E-06 -2.253444E-03 -3.299961E-06 -3.043389E-03 -5.316010E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.000000E-03 -4.100000E-05 --1.469649E-03 -6.515270E-06 -3.164874E-03 -5.070423E-06 --7.834805E-04 -2.163764E-06 -3.991073E-03 -8.036254E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.000000E-03 -1.000000E-06 -6.578244E-04 -4.327330E-07 -1.490994E-04 -2.223064E-08 --2.750809E-04 -7.566948E-08 -6.243342E-04 -3.897931E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.000000E-03 -2.500000E-05 -4.192244E-04 -2.440829E-06 -2.290352E-04 -2.955670E-08 -8.117866E-05 -3.786185E-09 -4.292057E-03 -9.213941E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.100000E-02 -7.300000E-05 -4.050236E-03 -2.014829E-05 -3.589950E-03 -7.394738E-06 -3.301506E-03 -7.271497E-06 -5.574275E-03 -2.054932E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.000000E-03 -8.000000E-06 -6.865027E-04 -3.148594E-06 -1.123135E-03 -7.553928E-07 --6.937330E-04 -5.371067E-07 -1.226302E-03 -7.521585E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.009839E-04 -9.059133E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.000000E-03 -2.500000E-05 -4.720935E-03 -1.123308E-05 -2.531138E-03 -3.881873E-06 -1.207797E-03 -1.104982E-06 -3.991073E-03 -8.036254E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.805904E-03 -3.261288E-06 -2.000000E-03 -4.000000E-06 -1.904158E-03 -3.625820E-06 -1.722222E-03 -2.966050E-06 -1.472450E-03 -2.168109E-06 -0.000000E+00 -0.000000E+00 -2.200000E-02 -2.440000E-04 -8.997789E-03 -4.069446E-05 -6.038380E-03 -2.892796E-05 -3.188711E-03 -1.706565E-05 -1.071337E-02 -5.765023E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -1.000000E-03 -1.000000E-06 -9.994298E-04 -9.988600E-07 -9.982900E-04 -9.965829E-07 -9.965814E-04 -9.931746E-07 -0.000000E+00 -0.000000E+00 -1.100000E-02 -6.100000E-05 -1.446955E-03 -5.203867E-06 -1.233625E-03 -3.439950E-06 -2.123440E-03 -6.107272E-06 -3.366739E-03 -5.697495E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.000000E-03 -1.600000E-05 -3.062793E-03 -9.380701E-06 -2.224463E-03 -4.948238E-06 -2.136221E-03 -4.563441E-06 -3.009839E-03 -9.059133E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.009839E-04 -9.059133E-08 -1.000000E-03 -1.000000E-06 -1.071043E-04 -1.147134E-08 --4.827930E-04 -2.330891E-07 --1.575849E-04 -2.483301E-08 -3.009839E-04 -9.059133E-08 -8.000000E-03 -3.400000E-05 -3.469885E-03 -1.204729E-05 -1.706287E-04 -4.770906E-06 -6.093070E-04 -3.706122E-07 -3.656540E-03 -7.357018E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.009839E-04 -9.059133E-08 -1.000000E-03 -1.000000E-06 -9.276723E-04 -8.605758E-07 -7.908638E-04 -6.254655E-07 -6.043224E-04 -3.652056E-07 -3.009839E-04 -9.059133E-08 -1.500000E-02 -1.130000E-04 -7.760317E-03 -3.043383E-05 -3.486730E-03 -6.079687E-06 -3.192886E-03 -5.300269E-06 -5.206192E-03 -1.357459E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -1.000000E-03 -1.000000E-06 --2.723974E-04 -7.420035E-08 --3.886995E-04 -1.510873E-07 -3.580662E-04 -1.282114E-07 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.800000E-02 -1.620000E-04 -3.109478E-03 -5.403087E-06 -7.420753E-04 -5.610775E-06 --1.972647E-03 -2.210831E-06 -7.056828E-03 -2.499410E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.253181E-04 -4.803845E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.203936E-03 -1.449461E-06 -2.000000E-03 -4.000000E-06 -1.876080E-03 -3.519675E-06 -1.640561E-03 -2.691440E-06 -1.316649E-03 -1.733565E-06 -0.000000E+00 -0.000000E+00 -2.000000E-03 -2.000000E-06 -1.656132E-03 -1.374995E-06 -1.062492E-03 -5.867156E-07 -3.772098E-04 -1.191478E-07 -3.054572E-03 -4.820460E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.131510E-04 -1.880396E-07 -1.000000E-03 -1.000000E-06 --5.333309E-04 -2.844418E-07 --7.333726E-05 -5.378353E-09 -4.207423E-04 -1.770241E-07 -6.243342E-04 -3.897931E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.000000E-03 -2.000000E-05 -1.583270E-03 -3.252679E-06 --3.064030E-04 -4.947979E-06 -1.080830E-03 -8.869004E-07 -2.452604E-03 -3.008634E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.131510E-04 -1.880396E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.200000E-02 -9.000000E-05 -5.530475E-03 -1.529320E-05 -2.705859E-03 -5.488988E-06 -3.266400E-03 -5.350316E-06 -7.112744E-03 -3.142384E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.100000E-02 -2.250000E-04 -7.403253E-03 -3.016107E-05 -5.420662E-03 -1.983684E-05 -2.936582E-03 -4.922875E-06 -8.238398E-03 -3.592572E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.253181E-04 -4.803845E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.100000E-02 -6.100000E-05 -3.184470E-03 -6.981764E-06 -3.311201E-03 -5.530952E-06 -2.002853E-03 -2.093961E-06 -3.968707E-03 -8.234052E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.131510E-04 -1.880396E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -9.365012E-04 -8.770346E-07 -1.000000E-03 -1.000000E-06 -9.677184E-04 -9.364790E-07 -9.047184E-04 -8.185155E-07 -8.140422E-04 -6.626647E-07 -0.000000E+00 -0.000000E+00 1.000000E-02 -6.800000E-05 -1.266540E-03 -1.529518E-06 --3.692635E-04 -9.672879E-07 -1.689168E-03 -1.866327E-06 -4.035806E-03 -1.215361E-05 +2.400000E-05 +7.364203E-03 +1.356715E-05 +3.578025E-03 +3.952934E-06 +4.991388E-04 +8.277617E-07 +6.660384E-03 +1.078466E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1482,15 +602,15 @@ tally 1: 0.000000E+00 0.000000E+00 1.200000E-02 -8.000000E-05 -3.410989E-03 -6.495638E-06 -8.888873E-04 -4.027331E-06 -6.828019E-04 -1.205374E-06 -4.894025E-03 -1.211286E-05 +4.800000E-05 +7.631639E-04 +2.262064E-06 +-3.448925E-04 +1.205043E-06 +-3.259600E-03 +4.482377E-06 +5.459930E-03 +8.074061E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1499,8 +619,8 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -6.243342E-04 -3.897931E-07 +5.989596E-04 +1.793791E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1521,16 +641,26 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -1.100000E-02 -7.300000E-05 -3.976139E-03 -9.939638E-06 -1.462256E-03 -2.640635E-06 -2.026283E-03 -3.803255E-06 -4.604224E-03 -1.067567E-05 +2.600000E-02 +1.820000E-04 +5.527216E-03 +9.741352E-06 +6.494815E-03 +1.331417E-05 +2.487729E-04 +9.009137E-06 +1.212394E-02 +3.763410E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.111267E-04 +2.768274E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1549,28 +679,40 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -9.029518E-04 -8.153220E-07 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.400000E-04 +8.583494E-03 +1.976212E-05 +2.895567E-03 +1.210757E-05 +3.612948E-03 +7.374439E-06 +1.090179E-02 +2.581708E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.982887E-04 +8.897613E-08 1.000000E-03 1.000000E-06 -9.531896E-04 -9.085703E-07 -8.628555E-04 -7.445196E-07 -7.353151E-04 -5.406883E-07 +9.407668E-04 +8.850421E-07 +8.275632E-04 +6.848608E-07 +6.703954E-04 +4.494300E-07 +5.965773E-04 +3.559045E-07 0.000000E+00 0.000000E+00 -3.000000E-03 -9.000000E-06 -1.969150E-03 -3.877552E-06 -1.225946E-03 -1.502944E-06 -1.367753E-03 -1.870749E-06 -1.504920E-03 -2.264783E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1579,278 +721,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -3.009839E-04 -9.059133E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.000000E-03 -2.600000E-05 --3.423632E-04 -2.476095E-06 -2.144575E-03 -2.456203E-06 --1.035289E-03 -3.066348E-06 -3.678906E-03 -6.769426E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.000000E-03 -4.000000E-05 -5.417577E-03 -1.889555E-05 -2.293131E-03 -3.303280E-06 -6.729020E-04 -3.229421E-07 -5.206192E-03 -1.357459E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.100000E-02 -7.300000E-05 -7.262770E-03 -3.815108E-05 -4.265119E-03 -1.234667E-05 -2.317314E-03 -2.894105E-06 -3.355556E-03 -5.998148E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.019679E-04 -3.623653E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.000000E-03 -9.000000E-06 -5.774620E-04 -3.334623E-07 -3.789825E-04 -1.436277E-07 --1.360725E-04 -1.851572E-08 -1.805904E-03 -3.261288E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -8.000000E-03 -3.400000E-05 --1.376386E-04 -3.479848E-08 --1.136484E-03 -8.968777E-07 --6.910241E-04 -3.879057E-07 -3.344373E-03 -6.674880E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.131510E-04 -1.880396E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.100000E-02 -7.300000E-05 -3.617203E-03 -1.222945E-05 -1.595056E-03 -1.290135E-06 --6.608603E-04 -1.154300E-06 -4.024623E-03 -1.056015E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.000000E-03 -1.000000E-06 --2.171894E-04 -4.717122E-08 --4.292432E-04 -1.842497E-07 -3.001713E-04 -9.010283E-08 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -5.000000E-03 -1.700000E-05 -3.376537E-03 -6.867510E-06 -1.576049E-03 -1.242043E-06 -6.774572E-04 -3.539001E-07 -2.787137E-03 -5.137331E-06 +2.700000E-02 +1.750000E-04 +1.012358E-02 +2.467953E-05 +1.474435E-03 +4.801327E-06 +4.424179E-04 +1.661987E-06 +1.306491E-02 +3.990010E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1882,15 +762,1135 @@ tally 1: 0.000000E+00 0.000000E+00 1.300000E-02 -8.900000E-05 -3.214925E-03 -6.383584E-06 -1.681554E-03 -1.482668E-06 -1.811720E-03 -1.724962E-06 -4.269691E-03 -9.774105E-06 +3.900000E-05 +2.894580E-03 +7.413903E-06 +4.782406E-03 +8.519965E-06 +4.310430E-03 +7.496343E-06 +6.648334E-03 +9.824958E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.800000E-02 +8.600000E-05 +8.003652E-04 +9.381590E-06 +3.457615E-03 +5.280629E-06 +-1.063124E-03 +2.234064E-06 +8.804401E-03 +1.982338E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E-03 +1.000000E-06 +6.578244E-04 +4.327330E-07 +1.490994E-04 +2.223064E-08 +-2.750809E-04 +7.566948E-08 +6.243342E-04 +3.897931E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-02 +9.400000E-05 +4.167281E-04 +3.806472E-06 +3.031990E-03 +4.457402E-06 +-2.246079E-05 +6.478142E-07 +1.000360E-02 +2.105336E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.982887E-04 +8.897613E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.900000E-02 +9.700000E-05 +6.458852E-03 +2.279404E-05 +3.627440E-03 +7.908704E-06 +3.946071E-03 +7.531590E-06 +8.885213E-03 +2.445611E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.200000E-02 +3.200000E-05 +5.376132E-03 +1.377498E-05 +3.290467E-03 +4.921168E-06 +1.422861E-03 +3.610761E-06 +4.838152E-03 +5.829692E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.016549E-04 +1.809943E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.056238E-04 +3.667801E-07 +1.000000E-03 +1.000000E-06 +3.227815E-04 +1.041879E-07 +-3.437182E-04 +1.181422E-07 +-4.000974E-04 +1.600779E-07 +0.000000E+00 +0.000000E+00 +2.700000E-02 +1.690000E-04 +1.259754E-02 +3.887684E-05 +3.514255E-03 +9.445635E-06 +1.359344E-03 +2.045441E-06 +1.362156E-02 +4.087828E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.156499E-04 +2.795463E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.805904E-03 +3.261288E-06 +2.000000E-03 +4.000000E-06 +1.904158E-03 +3.625820E-06 +1.722222E-03 +2.966050E-06 +1.472450E-03 +2.168109E-06 +0.000000E+00 +0.000000E+00 +3.900000E-02 +3.490000E-04 +1.656780E-02 +6.023774E-05 +1.361639E-02 +5.348538E-05 +9.429236E-03 +3.947382E-05 +1.761092E-02 +7.600968E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.028119E-04 +9.169503E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +1.000000E-03 +1.000000E-06 +9.994298E-04 +9.988600E-07 +9.982900E-04 +9.965829E-07 +9.965814E-04 +9.931746E-07 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.600000E-04 +8.920548E-03 +2.629362E-05 +5.151221E-03 +8.876114E-06 +5.653525E-03 +1.067857E-05 +1.116368E-02 +2.969235E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.209415E-03 +5.437558E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.000000E-03 +1.800000E-05 +3.041714E-03 +1.129968E-05 +4.102928E-03 +6.714470E-06 +2.016161E-03 +6.122339E-06 +3.916134E-03 +9.516316E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +1.000000E-03 +1.000000E-06 +1.071043E-04 +1.147134E-08 +-4.827930E-04 +2.330891E-07 +-1.575849E-04 +2.483301E-08 +3.009839E-04 +9.059133E-08 +2.300000E-02 +1.150000E-04 +7.537245E-03 +2.829767E-05 +2.103092E-03 +9.662063E-06 +2.183497E-03 +3.744408E-06 +1.057909E-02 +2.415941E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.982887E-04 +8.897613E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.209420E-03 +9.158466E-07 +1.000000E-03 +1.000000E-06 +9.276723E-04 +8.605758E-07 +7.908638E-04 +6.254655E-07 +6.043224E-04 +3.652056E-07 +3.009839E-04 +9.059133E-08 +2.500000E-02 +1.510000E-04 +1.154954E-02 +3.543399E-05 +4.217931E-03 +7.652974E-06 +1.816814E-03 +6.073065E-06 +9.720055E-03 +2.272026E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +1.000000E-03 +1.000000E-06 +-2.723974E-04 +7.420035E-08 +-3.886995E-04 +1.510873E-07 +3.580662E-04 +1.282114E-07 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.200000E-02 +3.560000E-04 +1.287791E-02 +4.221690E-05 +4.013355E-03 +1.949190E-05 +1.990533E-03 +9.786357E-06 +1.727222E-02 +6.016647E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.125620E-03 +1.382988E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.112371E-03 +2.274717E-06 +4.000000E-03 +8.000000E-06 +3.826961E-03 +7.325612E-06 +3.495526E-03 +6.132335E-06 +3.033406E-03 +4.680820E-06 +0.000000E+00 +0.000000E+00 +1.300000E-02 +4.300000E-05 +2.528669E-03 +1.367031E-05 +3.965235E-03 +4.071050E-06 +-4.149583E-04 +1.307826E-06 +7.258235E-03 +1.093717E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.114397E-04 +2.770157E-07 +2.000000E-03 +2.000000E-06 +-1.131644E-03 +6.424199E-07 +-3.637017E-05 +6.744918E-09 +7.827543E-04 +3.080768E-07 +9.271460E-04 +4.814882E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-02 +8.800000E-05 +5.382539E-03 +1.017579E-05 +2.414790E-03 +7.567027E-06 +3.961581E-03 +6.537588E-06 +9.680345E-03 +2.211393E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.159629E-04 +2.797346E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.200000E-02 +1.240000E-04 +7.269348E-03 +1.995179E-05 +2.992857E-03 +7.453704E-06 +4.698724E-03 +6.277902E-06 +1.253456E-02 +4.253483E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.121671E-04 +9.744828E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.000000E-02 +5.100000E-04 +1.664620E-02 +7.437727E-05 +9.397450E-03 +4.322575E-05 +6.836310E-03 +1.231705E-05 +1.905990E-02 +7.550592E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.122996E-03 +1.372865E-06 +1.000000E-03 +1.000000E-06 +8.132758E-04 +6.614176E-07 +4.921264E-04 +2.421884E-07 +1.248736E-04 +1.559342E-08 +9.084356E-04 +8.252553E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.100000E-02 +9.500000E-05 +6.491403E-03 +1.250504E-05 +2.902964E-03 +5.648898E-06 +2.149247E-03 +2.668074E-06 +8.776336E-03 +1.780557E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.131510E-04 +1.880396E-07 +1.000000E-03 +1.000000E-06 +-6.320900E-04 +3.995377E-07 +9.930661E-05 +9.861803E-09 +3.167755E-04 +1.003467E-07 +1.239313E-03 +9.687296E-07 +1.000000E-03 +1.000000E-06 +9.677184E-04 +9.364790E-07 +9.047184E-04 +8.185155E-07 +8.140422E-04 +6.626647E-07 +0.000000E+00 +0.000000E+00 +3.000000E-02 +2.020000E-04 +7.960428E-03 +1.748184E-05 +1.857609E-03 +3.751885E-06 +3.621909E-03 +7.252984E-06 +1.365034E-02 +4.336505E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.900000E-02 +1.970000E-04 +5.726309E-03 +1.204288E-05 +-2.562602E-03 +8.796860E-06 +-5.408669E-04 +1.879390E-06 +1.269835E-02 +3.424162E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.226228E-04 +4.787693E-07 +1.000000E-03 +1.000000E-06 +-1.650338E-04 +2.723616E-08 +-4.591458E-04 +2.108148E-07 +2.363135E-04 +5.584407E-08 +2.982887E-04 +8.897613E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.100000E-02 +1.070000E-04 +7.115739E-03 +1.595026E-05 +3.891656E-03 +4.927392E-06 +4.624860E-03 +6.824558E-06 +8.816934E-03 +1.684675E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.982887E-04 +8.897613E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.029518E-04 +8.153220E-07 +1.000000E-03 +1.000000E-06 +9.531896E-04 +9.085703E-07 +8.628555E-04 +7.445196E-07 +7.353151E-04 +5.406883E-07 +0.000000E+00 +0.000000E+00 +8.000000E-03 +1.800000E-05 +1.619128E-03 +7.769465E-06 +2.613435E-03 +3.211760E-06 +1.405519E-03 +3.351048E-06 +4.513046E-03 +5.346316E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.009839E-04 +9.059133E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.600000E-02 +1.760000E-04 +3.827326E-03 +1.821256E-05 +8.165880E-03 +1.737446E-05 +3.271322E-03 +1.161207E-05 +1.089998E-02 +2.472251E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.197919E-03 +7.175165E-07 +1.000000E-03 +1.000000E-06 +7.256235E-04 +5.265295E-07 +2.897942E-04 +8.398069E-08 +-1.332798E-04 +1.776351E-08 +3.028119E-04 +9.169503E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.400000E-02 +5.800000E-05 +8.561790E-03 +2.265799E-05 +4.539886E-03 +5.757407E-06 +1.780257E-03 +1.445049E-06 +9.412238E-03 +1.952619E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.006709E-04 +9.040301E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.900000E-02 +9.700000E-05 +1.187186E-02 +4.638870E-05 +5.669447E-03 +1.326414E-05 +2.818347E-03 +3.568113E-06 +6.363682E-03 +9.079681E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.198545E-03 +7.182698E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.013419E-04 +3.616120E-07 +1.000000E-03 +1.000000E-06 +9.751330E-04 +9.508843E-07 +9.263265E-04 +8.580808E-07 +8.553972E-04 +7.317044E-07 +0.000000E+00 +0.000000E+00 +1.000000E-02 +3.800000E-05 +5.100191E-03 +1.213804E-05 +2.526446E-03 +3.184717E-06 +1.120621E-03 +2.386039E-06 +4.520264E-03 +6.456267E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.062947E-04 +4.571831E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.700000E-02 +6.300000E-05 +3.401093E-03 +4.752976E-06 +-1.430942E-04 +2.289223E-06 +5.850560E-04 +2.116365E-06 +7.249747E-03 +1.181285E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +9.138219E-04 +2.784426E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.700000E-02 +9.900000E-05 +3.395904E-03 +1.353897E-05 +2.976877E-03 +2.251417E-06 +-1.066663E-04 +2.608803E-06 +7.331520E-03 +1.571258E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.989596E-04 +1.793791E-07 +2.000000E-03 +2.000000E-06 +7.367234E-04 +9.571208E-07 +4.356812E-04 +9.323439E-07 +1.039334E-03 +6.364636E-07 +1.505322E-03 +1.521066E-06 +1.000000E-03 +1.000000E-06 +9.879014E-04 +9.759491E-07 +9.639237E-04 +9.291489E-07 +9.285017E-04 +8.621153E-07 +0.000000E+00 +0.000000E+00 +1.900000E-02 +8.700000E-05 +2.777211E-03 +1.700824E-05 +4.035787E-03 +9.429368E-06 +2.980203E-05 +1.242805E-06 +1.000369E-02 +2.268829E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.900000E-02 +1.030000E-04 +7.734629E-03 +1.531457E-05 +5.093139E-03 +7.117666E-06 +5.058900E-03 +5.942325E-06 +7.269012E-03 +1.354949E-05 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1921,16 +1921,256 @@ tally 1: 1.415159E-08 0.000000E+00 0.000000E+00 -7.000000E-03 -3.700000E-05 -6.291973E-04 -9.253012E-07 --8.619079E-04 -3.776625E-07 -4.994451E-04 -1.549611E-07 -3.690089E-03 -7.039749E-06 +1.200000E-02 +4.600000E-05 +1.345552E-03 +1.661602E-06 +-1.840162E-03 +1.071811E-06 +6.885070E-04 +5.102453E-07 +5.789780E-03 +8.745856E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.000000E-03 +1.600000E-05 +6.633314E-03 +1.270264E-05 +4.628987E-03 +9.066793E-06 +2.905876E-03 +6.021797E-06 +4.223000E-03 +4.683691E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.013419E-04 +3.616120E-07 +1.000000E-03 +1.000000E-06 +4.295537E-04 +1.845164E-07 +-2.232254E-04 +4.982957E-08 +-4.461813E-04 +1.990778E-07 +1.207033E-03 +8.982334E-07 +2.000000E-03 +4.000000E-06 +1.368640E-03 +1.873175E-06 +5.907660E-04 +3.490045E-07 +1.853769E-04 +3.436459E-08 +0.000000E+00 +0.000000E+00 +6.000000E-03 +1.000000E-05 +3.102529E-03 +2.944216E-06 +3.553054E-03 +4.061545E-06 +2.423850E-03 +1.659791E-06 +2.405752E-03 +1.989485E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.965773E-04 +3.559045E-07 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.200000E-02 +5.000000E-05 +7.180171E-03 +1.778928E-05 +2.622812E-03 +2.636835E-06 +1.108650E-03 +9.983372E-07 +6.665077E-03 +1.320251E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.028119E-04 +9.169503E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.200000E-02 +1.300000E-04 +1.098015E-02 +3.419417E-05 +5.083853E-03 +6.677488E-06 +2.962020E-03 +3.751133E-06 +1.115370E-02 +3.284251E-05 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.982887E-04 +8.897613E-08 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +6.000000E-03 +1.000000E-05 +1.904880E-03 +1.700404E-06 +-5.545137E-04 +1.781015E-06 +-9.756510E-05 +6.625846E-07 +3.325684E-03 +2.829537E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -1963,134 +2203,14 @@ tally 1: 0.000000E+00 2.000000E-03 2.000000E-06 -1.439409E-03 -1.103682E-06 -6.555229E-04 -5.306118E-07 -7.043819E-05 -4.155385E-07 -1.226302E-03 -7.521585E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.000000E-03 -1.000000E-06 -4.295537E-04 -1.845164E-07 --2.232254E-04 -4.982957E-08 --4.461813E-04 -1.990778E-07 -3.121671E-04 -9.744828E-08 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-03 -4.000000E-06 -1.440797E-04 -2.075896E-08 -1.581861E-03 -2.502285E-06 -7.101262E-04 -5.042792E-07 -6.019679E-04 -3.623653E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.000000E-03 -9.000000E-06 -2.304111E-03 -5.308928E-06 -1.405559E-03 -1.975595E-06 -8.468624E-04 -7.171759E-07 -2.441421E-03 -3.141818E-06 +5.259036E-04 +2.147833E-07 +-6.778250E-04 +2.773263E-07 +-5.470874E-04 +2.096746E-07 +6.016549E-04 +1.809943E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2122,57 +2242,25 @@ tally 1: 0.000000E+00 0.000000E+00 7.000000E-03 -2.900000E-05 -4.675157E-03 -1.278192E-05 -2.215224E-03 -3.397777E-06 -1.088961E-03 -2.486687E-06 -3.344373E-03 -6.674880E-06 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-03 -4.000000E-06 --2.660370E-04 -7.077569E-08 --7.919915E-04 -6.272506E-07 -2.842468E-04 -8.079625E-08 -9.141350E-04 -4.598136E-07 -0.000000E+00 -0.000000E+00 +1.700000E-05 +5.770569E-03 +1.116420E-05 +4.074122E-03 +5.715629E-06 +2.739484E-03 +2.864833E-06 +3.630946E-03 +2.739811E-06 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.028119E-04 +9.169503E-08 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2193,6 +2281,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +1.000000E-02 +2.600000E-05 +3.940359E-03 +1.345990E-05 +4.066207E-03 +4.701591E-06 +2.653786E-03 +1.896780E-06 +3.626422E-03 +2.904169E-06 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2201,16 +2299,18 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 +8.948660E-04 +8.007852E-07 1.000000E-03 1.000000E-06 -6.738077E-05 -4.540168E-09 --4.931897E-04 -2.432361E-07 --1.003064E-04 -1.006137E-08 -3.009839E-04 -9.059133E-08 +8.049124E-04 +6.478840E-07 +4.718259E-04 +2.226197E-07 +9.635598E-05 +9.284475E-09 +9.084356E-04 +8.252553E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2221,116 +2321,16 @@ tally 1: 0.000000E+00 0.000000E+00 0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-03 +4.000000E-03 4.000000E-06 -1.768784E-03 -3.128598E-06 -1.358416E-03 -1.845293E-06 -8.583748E-04 -7.368072E-07 -1.226302E-03 -7.521585E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -3.000000E-03 -5.000000E-06 -1.382401E-03 -1.135211E-06 -9.435101E-04 -9.475181E-07 -1.233939E-03 -9.782026E-07 -1.226302E-03 -7.521585E-07 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.000000E-03 -1.000000E-06 -9.843457E-04 -9.689366E-07 -9.534048E-04 -9.089808E-07 -9.079028E-04 -8.242875E-07 -3.121671E-04 -9.744828E-08 +2.476562E-03 +1.946838E-06 +9.202571E-04 +1.346950E-06 +4.114154E-04 +1.017884E-06 +1.812898E-03 +9.066599E-07 0.000000E+00 0.000000E+00 0.000000E+00 @@ -2402,11 +2402,11 @@ tally 1: 0.000000E+00 0.000000E+00 tally 2: -2.302093E-01 -2.649911E-02 -2.511941E-01 -3.155135E-02 -1.462955E+00 -1.070191E+00 -1.627347E+01 -1.324129E+02 +5.656024E-01 +6.399997E-02 +6.163195E-01 +7.599803E-02 +3.586752E+00 +2.573838E+00 +3.990119E+01 +3.185144E+02 diff --git a/tests/test_sourcepoint_restart/settings.xml b/tests/test_sourcepoint_restart/settings.xml index 5fee23d67e..c405186fb7 100644 --- a/tests/test_sourcepoint_restart/settings.xml +++ b/tests/test_sourcepoint_restart/settings.xml @@ -1,8 +1,8 @@ - - + + 10 diff --git a/tests/test_sourcepoint_restart/test_sourcepoint_restart.py b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py index 9b2e3185f9..0eaf1198cc 100644 --- a/tests/test_sourcepoint_restart/test_sourcepoint_restart.py +++ b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py @@ -24,49 +24,49 @@ def test_run(): assert returncode == 0 def test_created_statepoint(): - statepoint = glob.glob(pwd + '/statepoint.7.*') - assert len(statepoint) == 1 + statepoint = glob.glob(pwd + '/statepoint.*') + assert len(statepoint) == 2 assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') sourcepoint = glob.glob(pwd + '/source.7.*') assert len(sourcepoint) == 1 assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') def test_results(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') call(['python', 'results.py', statepoint[0]]) compare = filecmp.cmp('results_test.dat', 'results_true.dat') if not compare: os.rename('results_test.dat', 'results_error.dat') assert compare + os.remove(statepoint[0]) def test_restart_form1(): statepoint = glob.glob(pwd + '/statepoint.7.*') + sourcepoint = glob.glob(pwd + '/source.7.*') openmc_path = pwd + '/../../src/openmc' if int(NoseMPI.mpi_np) > 0: proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path, - '-r', statepoint[0]], + '-r', statepoint[0], sourcepoint[0]], stderr=STDOUT, stdout=PIPE) else: - proc = Popen([openmc_path, '-r', statepoint[0]], stderr=STDOUT, stdout=PIPE) + proc = Popen([openmc_path, '-r', statepoint[0], sourcepoint[0]], stderr=STDOUT, stdout=PIPE) print(proc.communicate()[0]) returncode = proc.returncode assert returncode == 0 def test_created_statepoint_form1(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') assert len(statepoint) == 1 assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') - sourcepoint = glob.glob(pwd + '/source.7.*') - assert len(sourcepoint) == 1 - assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') def test_results_form1(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') call(['python', 'results.py', statepoint[0]]) compare = filecmp.cmp('results_test.dat', 'results_true.dat') if not compare: os.rename('results_test.dat', 'results_error.dat') assert compare + os.remove(statepoint[0]) def test_restart_form2(): statepoint = glob.glob(pwd + '/statepoint.7.*') @@ -74,50 +74,46 @@ def test_restart_form2(): openmc_path = pwd + '/../../src/openmc' if int(NoseMPI.mpi_np) > 0: proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path, - '--restart', statepoint[0], source[0]], + '--restart', statepoint[0], sourcepoint[0]], stderr=STDOUT, stdout=PIPE) else: - proc = Popen([openmc_path, '--restart', statepoint[0]], + proc = Popen([openmc_path, '--restart', statepoint[0], sourcepoint[0]], stderr=STDOUT, stdout=PIPE) print(proc.communicate()[0]) returncode = proc.returncode assert returncode == 0 def test_created_statepoint_form2(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') assert len(statepoint) == 1 assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') - sourcepoint = glob.glob(pwd + '/source.7.*') - assert len(sourcepoint) == 1 - assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') def test_results_form2(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') call(['python', 'results.py', statepoint[0]]) compare = filecmp.cmp('results_test.dat', 'results_true.dat') if not compare: os.rename('results_test.dat', 'results_error.dat') assert compare + os.remove(statepoint[0]) def test_restart_serial(): statepoint = glob.glob(pwd + '/statepoint.7.*') + sourcepoint = glob.glob(pwd + '/source.7.*') openmc_path = pwd + '/../../src/openmc' - proc = Popen([openmc_path, '--restart', statepoint[0]], + proc = Popen([openmc_path, '--restart', statepoint[0], sourcepoint[0]], stderr=STDOUT, stdout=PIPE) print(proc.communicate()[0]) returncode = proc.returncode assert returncode == 0 def test_created_statepoint_serial(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') assert len(statepoint) == 1 assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') - sourcepoint = glob.glob(pwd + '/source.7.*') - assert len(sourcepoint) == 1 - assert sourcepoint[0].endswith('binary') or sourcepoint[0].endswith('h5') def test_results_serial(): - statepoint = glob.glob(pwd + '/statepoint.7.*') + statepoint = glob.glob(pwd + '/statepoint.10.*') call(['python', 'results.py', statepoint[0]]) compare = filecmp.cmp('results_test.dat', 'results_true.dat') if not compare: @@ -125,8 +121,8 @@ def test_results_serial(): assert compare def teardown(): - output = glob.glob(pwd + '/statepoint.7.*') - output += glob.glob(pwd + '/source.7.*') + output = glob.glob(pwd + '/statepoint.*') + output += glob.glob(pwd + '/source.*') output.append(pwd + '/results_test.dat') for f in output: if os.path.exists(f): From 1c8eb1920db91a590f1cc533ed8cfa5ec41b41dc Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Sat, 22 Feb 2014 15:14:26 -0500 Subject: [PATCH 48/78] fixed integer type for filetype during read source --- src/source.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/source.F90 b/src/source.F90 index 85ef87d65f..8e83b2ee91 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -29,7 +29,7 @@ contains integer(8) :: i ! loop index over bank sites integer(8) :: id ! particle id - integer(8) :: itmp ! temporary integer + integer(4) :: itmp ! temporary integer type(Bank), pointer :: src => null() ! source bank site type(BinaryOutput) :: sp ! statepoint/source binary file From f247f0c7cd0f5cb7fb22ef98598fea9f9090d50e Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Sat, 22 Feb 2014 17:26:31 -0500 Subject: [PATCH 49/78] added test for read source --- tests/test_source_file/geometry.xml | 8 ++ tests/test_source_file/materials.xml | 9 ++ tests/test_source_file/results.py | 25 +++++ tests/test_source_file/results_true.dat | 2 + tests/test_source_file/settings.xml | 19 ++++ tests/test_source_file/test_source_file.py | 103 +++++++++++++++++++++ 6 files changed, 166 insertions(+) create mode 100644 tests/test_source_file/geometry.xml create mode 100644 tests/test_source_file/materials.xml create mode 100644 tests/test_source_file/results.py create mode 100644 tests/test_source_file/results_true.dat create mode 100644 tests/test_source_file/settings.xml create mode 100644 tests/test_source_file/test_source_file.py diff --git a/tests/test_source_file/geometry.xml b/tests/test_source_file/geometry.xml new file mode 100644 index 0000000000..612e46132e --- /dev/null +++ b/tests/test_source_file/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/tests/test_source_file/materials.xml b/tests/test_source_file/materials.xml new file mode 100644 index 0000000000..1f85510e0d --- /dev/null +++ b/tests/test_source_file/materials.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/test_source_file/results.py b/tests/test_source_file/results.py new file mode 100644 index 0000000000..8ff10971cd --- /dev/null +++ b/tests/test_source_file/results.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import sys + +# import statepoint +sys.path.append('../../src/utils') +import statepoint + +# read in statepoint file +if len(sys.argv) > 1: + sp = statepoint.StatePoint(sys.argv[1]) +else: + sp = statepoint.StatePoint('statepoint.10.binary') +sp.read_results() + +# set up output string +outstr = '' + +# write out k-combined +outstr += 'k-combined:\n' +outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1]) + +# write results to file +with open('results_test.dat','w') as fh: + fh.write(outstr) diff --git a/tests/test_source_file/results_true.dat b/tests/test_source_file/results_true.dat new file mode 100644 index 0000000000..ae37050f76 --- /dev/null +++ b/tests/test_source_file/results_true.dat @@ -0,0 +1,2 @@ +k-combined: +2.977307E-01 2.848670E-03 diff --git a/tests/test_source_file/settings.xml b/tests/test_source_file/settings.xml new file mode 100644 index 0000000000..98abc5acfe --- /dev/null +++ b/tests/test_source_file/settings.xml @@ -0,0 +1,19 @@ + + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + diff --git a/tests/test_source_file/test_source_file.py b/tests/test_source_file/test_source_file.py new file mode 100644 index 0000000000..ede988be56 --- /dev/null +++ b/tests/test_source_file/test_source_file.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python + +import os +from subprocess import Popen, STDOUT, PIPE, call +import filecmp +#from nose_mpi import NoseMPI +import glob + +pwd = os.path.dirname(__file__) + +settings1=""" + + + + + + + 10 + 5 + 1000 + + + + + -4 -4 -4 4 4 4 + + + + +""" + +settings2 = """ + + + + 10 + 5 + 1000 + + + + source.10.{0} + + + +""" + +def setup(): + os.putenv('PWD', pwd) + os.chdir(pwd) + +def test_run1(): + openmc_path = pwd + '/../../src/openmc' +# if int(NoseMPI.mpi_np) > 0: + if False: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_statepoint_exists(): + statepoint = glob.glob(pwd + '/statepoint.10.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + source = glob.glob(pwd + '/source.10.*') + assert len(statepoint) == 1 + assert source[0].endswith('binary') or source[0].endswith('h5') + +def test_run2(): + openmc_path = pwd + '/../../src/openmc' + source = glob.glob(pwd + '/source.10.*') + with open('settings.xml','w') as fh: + fh.write(settings2.format(source[0].split('.')[2])) +# if int(NoseMPI.mpi_np) > 0: + if False: + proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], + stderr=STDOUT, stdout=PIPE) + else: + proc = Popen([openmc_path], stderr=STDOUT, stdout=PIPE) + print(proc.communicate()[0]) + returncode = proc.returncode + assert returncode == 0 + +def test_results(): + statepoint = glob.glob(pwd + '/statepoint.10.*') + call(['python', 'results.py', statepoint[0]]) + compare = filecmp.cmp('results_test.dat', 'results_true.dat') + if not compare: + os.rename('results_test.dat', 'results_error.dat') + assert compare + +def teardown(): + with open('settings.xml','w') as fh: + fh.write(settings1) + output = glob.glob(pwd + '/statepoint.10.*') + output += glob.glob(pwd + '/source.10.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) From dcc40c0b7d14f7034dba13719d490223c4c0300c Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Sat, 22 Feb 2014 17:33:13 -0500 Subject: [PATCH 50/78] updated documentation of read source from file --- docs/source/usersguide/input.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 362197439d..6aac106130 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -264,7 +264,9 @@ attributes/sub-elements: :file: If this attribute is given, it indicates that the source is to be read from - a binary source file whose path is given by the value of this element + a binary source file whose path is given by the value of this element. Note, + the number of source sites needs to be the same as the number of particles + simulated in a fission source generation. *Default*: None From 937db3e4757073e232c851ec79c994368474afb2 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 3 Mar 2014 18:43:52 -0500 Subject: [PATCH 51/78] Update Intel compile flags as suggested by @bhermanmit. --- src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2781f4d27d..40586ca23b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -62,9 +62,9 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") # Intel Fortran compiler options - set(f90flags "-fpp -warn -assume byterecl -traceback") + set(f90flags "-fpp -std08 -assume byterecl -traceback") if(debug) - set(f90flags "-g -ftrapuv -fp-stack-check -check all -fpe0 ${f90flags}") + set(f90flags "-g -warn -ftrapuv -fp-stack-check -check all -fpe0 ${f90flags}") set(ldflags "-g") endif() if(profile) From 4cc8369dce9ff44d3007ef747979ca021cf0463d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 4 Mar 2014 17:53:25 -0500 Subject: [PATCH 52/78] Started release notes for 0.5.4. --- docs/source/releasenotes/index.rst | 1 + docs/source/releasenotes/notes_0.5.4.rst | 61 ++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 docs/source/releasenotes/notes_0.5.4.rst diff --git a/docs/source/releasenotes/index.rst b/docs/source/releasenotes/index.rst index 9164fa5943..d649b1403a 100644 --- a/docs/source/releasenotes/index.rst +++ b/docs/source/releasenotes/index.rst @@ -10,6 +10,7 @@ bugs fixed, and known issues for each successive release. .. toctree:: :maxdepth: 1 + notes_0.5.4 notes_0.5.3 notes_0.5.2 notes_0.5.1 diff --git a/docs/source/releasenotes/notes_0.5.4.rst b/docs/source/releasenotes/notes_0.5.4.rst new file mode 100644 index 0000000000..1471e1c8e4 --- /dev/null +++ b/docs/source/releasenotes/notes_0.5.4.rst @@ -0,0 +1,61 @@ +.. _notes_0.5.4: + +============================== +Release Notes for OpenMC 0.5.4 +============================== + +.. note:: + These release notes are for an upcoming release of OpenMC and are still + subject to change. + +------------------- +System Requirements +------------------- + +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 +------------ + +- New XML parsing backend (FoX) +- Ability to write particle track files +- Handle lost particles more gracefully (via particle track files) +- Source sites outside geometry are resampled +- Multiple random number generator streams +- plot_mesh_tally.py utility converted to use Tkinter rather than PyQt +- Script added to download ACE data from NNDC +- Mixed ASCII/binary cross_sections.xml now allowed + +--------- +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 + +.. _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 + +------------ +Contributors +------------ + +This release contains new contributions from the following people: + +- `Sterling Harper `_ +- `Bryan Herman `_ +- `Nick Horelik `_ +- `Adam Nelson `_ +- `Paul Romano `_ +- `Tuomas Viitanen `_ +- `Jon Walsh `_ From 571ba896c90ff2d71de14e74c53e18c5850af283 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 18:59:06 -0500 Subject: [PATCH 53/78] fixed mistake --- docs/source/usersguide/input.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 362197439d..106f7ae92a 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1087,7 +1087,7 @@ sub-elements: the PNG format can often times reduce the file size by orders of magnitude without any loss of image quality. Likewise, high-resolution voxel files produced by OpenMC can be quite large, - but the equivalent SILO files will by significantly smaller. + but the equivalent SILO files will be significantly smaller. *Default*: "slice" From 3f218c431b5cd8e80bc44452b3262d324e9ac404 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 4 Mar 2014 19:28:46 -0500 Subject: [PATCH 54/78] Mention how to local install in documentation. Closes #247. --- docs/source/quickinstall.rst | 7 ++++++- docs/source/usersguide/install.rst | 10 +++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/source/quickinstall.rst b/docs/source/quickinstall.rst index 2cee56987a..ccbfabebe7 100644 --- a/docs/source/quickinstall.rst +++ b/docs/source/quickinstall.rst @@ -48,7 +48,12 @@ following commands in a terminal: sudo make install This will build an executable named ``openmc`` and install it (by default in -/usr/local/bin). +/usr/local/bin). If you do not have administrator privileges, the last command +can be replaced with a local install, e.g. + +.. code-block:: sh + + make install -e prefix=$HOME/.local .. _GitHub: https://github.com/mit-crpg/openmc .. _git: http://git-scm.com diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index ff33d9a6c6..2084878b73 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -189,7 +189,15 @@ the root directory of the source code: sudo make install This will build an executable named ``openmc`` and install it (by default in -/usr/local/bin). +/usr/local/bin). If you do not have administrative privileges, you can install +OpenMC locally by replacing the last command with: + +.. code-block:: sh + + make install -e prefix=$HOME/.local + +The ``prefix`` variable can be changed to any path for which you have +write-access. Compiling on Windows -------------------- From fe58e8bdebd01837485aff7aa233aa694f2ea7ad Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 4 Mar 2014 20:13:47 -0500 Subject: [PATCH 55/78] Replace pipeline for producing git SHA1 with single command. --- src/CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 40586ca23b..dd0bcaaa05 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -156,9 +156,7 @@ endif() # git SHA1 hash #=============================================================================== -execute_process(COMMAND git log -1 - COMMAND head -n 1 - COMMAND cut -c8- +execute_process(COMMAND git rev-parse -q HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULT_VARIABLE GIT_SHA1_SUCCESS OUTPUT_VARIABLE GIT_SHA1 From 4835a4f632f9a379ef40cfb96bc2beaeffb06f6e Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 21:10:42 -0500 Subject: [PATCH 56/78] check for present source bank before running calculation --- src/initialize.F90 | 8 +++++++- src/state_point.F90 | 35 ++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/initialize.F90 b/src/initialize.F90 index 8a4b22e90f..52869a281e 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -390,7 +390,7 @@ contains ! It is a source file path_source_point = argv(i) - else + else ! Different option is specified not a source file ! Source is in statepoint file path_source_point = path_state_point @@ -399,6 +399,12 @@ contains i = i - 1 end if + + else ! No command line arg after statepoint + + ! Source is assumed to be in statepoint file + path_source_point = path_state_point + end if case ('-g', '-geometry-debug', '--geometry-debug') diff --git a/src/state_point.F90 b/src/state_point.F90 index 046d748be5..e31e7dea91 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -275,6 +275,13 @@ contains end if + ! Indicate where source bank is stored in statepoint + if (source_separate) then + call sp % write_data(0, "source_present") + else + call sp % write_data(1, "source_present") + end if + ! Close the file for serial writing call sp % file_close() @@ -518,6 +525,7 @@ contains integer :: length(4) integer :: int_array(3) integer, allocatable :: temp_array(:) + logical :: source_present real(8) :: real_array(3) type(TallyObject), pointer :: t => null() @@ -758,30 +766,35 @@ contains end if end if + ! Check for source in statepoint if needed + call sp % read_data(int_array(1), "source_present") + if (int_array(1) == 1) then + source_present = .true. + else + source_present = .false. + end if + + ! Check to make sure source bank is present + if (path_source_point == path_state_point .and. .not. source_present) then + message = "Source bank must be contained in statepoint restart file" + call fatal_error() + end if + ! Read source if in eigenvalue mode if (run_mode == MODE_EIGENVALUE) then ! Check if source was written out separately - if (source_separate) then + if (.not. source_present) then ! Close statepoint file call sp % file_close() - ! Set filename for source - filename = trim(path_output) // 'source.' // & - trim(to_str(restart_batch)) -#ifdef HDF5 - filename = trim(filename) // '.h5' -#else - filename = trim(filename) // '.binary' -#endif - ! Write message message = "Loading source file " // trim(filename) // "..." call write_message(1) ! Open source file - call sp % file_open(filename, 'r', serial = .false.) + call sp % file_open(path_source_point, 'r', serial = .false.) ! Read file type call sp % read_data(int_array(1), "filetype") From 6962b32de9164f615f58952e631afae52ca0af44 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 21:50:06 -0500 Subject: [PATCH 57/78] simplified cleanup script --- tests/cleanup.bash | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/cleanup.bash b/tests/cleanup.bash index d23b166a26..0b792f9c77 100755 --- a/tests/cleanup.bash +++ b/tests/cleanup.bash @@ -5,10 +5,4 @@ # deleting left over binary files. This will # cause an assertion error in some of the # tests. -for i in ./*; do - if [ -d "$i" ]; then - cd $i - rm -f *.binary *.h5 - cd .. - fi -done +find . \( -name "*.binary" -o -name "*.h5" \) -exec rm -f {} \; From fb5ede7d9330e5e3f34614bb00fe795e02c3d34f Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 21:50:50 -0500 Subject: [PATCH 58/78] remove compile from all-tests option --- tests/run_tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/run_tests.py b/tests/run_tests.py index 49975c218a..0669a99d00 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -117,6 +117,8 @@ if len(sys.argv) > 1: if j.rfind(suffix) != -1: if suffix == 'omp' and j == 'compile': continue + if j == 'compile': + continue tests__.append(j) else: tests__.append(i) # append specific test (e.g., mpi-debug) From b1c288012b438abd0cda44dd9daaca52be34fba4 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 21:54:50 -0500 Subject: [PATCH 59/78] removed source from separate and write tags --- src/input_xml.F90 | 8 ++++---- tests/test_sourcepoint_latest/settings.xml | 2 +- tests/test_sourcepoint_restart/settings.xml | 2 +- tests/test_statepoint_sourcesep/settings.xml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 9fffea5d31..03ad982cbc 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -670,14 +670,14 @@ contains end if ! Check if the user has specified to write binary source file - if (check_for_node(node_sp, "source_separate")) then - call get_node_value(node_sp, "source_separate", temp_str) + if (check_for_node(node_sp, "separate")) then + call get_node_value(node_sp, "separate", temp_str) call lower_case(temp_str) if (trim(temp_str) == 'true' .or. & trim(temp_str) == '1') source_separate = .true. end if - if (check_for_node(node_sp, "source_write")) then - call get_node_value(node_sp, "source_write", temp_str) + if (check_for_node(node_sp, "write")) then + call get_node_value(node_sp, "write", temp_str) call lower_case(temp_str) if (trim(temp_str) == 'false' .or. & trim(temp_str) == '0') source_write = .false. diff --git a/tests/test_sourcepoint_latest/settings.xml b/tests/test_sourcepoint_latest/settings.xml index 36c5c7a0d7..5056db4724 100644 --- a/tests/test_sourcepoint_latest/settings.xml +++ b/tests/test_sourcepoint_latest/settings.xml @@ -1,7 +1,7 @@ - + 10 diff --git a/tests/test_sourcepoint_restart/settings.xml b/tests/test_sourcepoint_restart/settings.xml index c405186fb7..4e9b12d246 100644 --- a/tests/test_sourcepoint_restart/settings.xml +++ b/tests/test_sourcepoint_restart/settings.xml @@ -2,7 +2,7 @@ - + 10 diff --git a/tests/test_statepoint_sourcesep/settings.xml b/tests/test_statepoint_sourcesep/settings.xml index 98abc5acfe..17d4ee2e2e 100644 --- a/tests/test_statepoint_sourcesep/settings.xml +++ b/tests/test_statepoint_sourcesep/settings.xml @@ -2,7 +2,7 @@ - + 10 From 4ca97dde96d71fc27168628b7c80790be96e1950 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 23:32:41 -0500 Subject: [PATCH 60/78] added source present to statepoint.py and incremented version --- src/constants.F90 | 2 +- src/utils/statepoint.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/constants.F90 b/src/constants.F90 index 05327153d0..9091460148 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -11,7 +11,7 @@ module constants integer, parameter :: VERSION_RELEASE = 3 ! Revision numbers for binary files - integer, parameter :: REVISION_STATEPOINT = 10 + integer, parameter :: REVISION_STATEPOINT = 11 integer, parameter :: REVISION_PARTICLE_RESTART = 1 ! Binary file types diff --git a/src/utils/statepoint.py b/src/utils/statepoint.py index 430abee8b8..0bfb66716b 100644 --- a/src/utils/statepoint.py +++ b/src/utils/statepoint.py @@ -151,7 +151,7 @@ class StatePoint(object): # Read statepoint revision self.revision = self._get_int(path='revision')[0] - if self.revision != 10: + if self.revision != 11: raise Exception('Statepoint Revision is not consistent.') # Read OpenMC version @@ -342,6 +342,12 @@ class StatePoint(object): if not self._results: self.read_results() + # Source bank present + source_present = self._get_int(path='source_present')[0] + if source_present != 1: + print('Source bank not present.') + return + # For HDF5 state points, copy entire bank if self._hdf5: source_sites = self._f['source_bank'].value From 76cbf0ffaaf0d26db89b89befaba1460f94c7120 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 13:34:59 -0500 Subject: [PATCH 61/78] moved source_present data to the end of meta data section of statepoint writing --- src/state_point.F90 | 42 ++++++++++++++++++++--------------------- src/utils/statepoint.py | 14 ++++++++++---- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/state_point.F90 b/src/state_point.F90 index e31e7dea91..4cf62c7c10 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -232,6 +232,13 @@ contains end if + ! Indicate where source bank is stored in statepoint + if (source_separate) then + call sp % write_data(0, "source_present") + else + call sp % write_data(1, "source_present") + end if + ! Check for the no-tally-reduction method if (.not. reduce_tallies) then ! If using the no-tally-reduction method, we need to collect tally @@ -275,13 +282,6 @@ contains end if - ! Indicate where source bank is stored in statepoint - if (source_separate) then - call sp % write_data(0, "source_present") - else - call sp % write_data(1, "source_present") - end if - ! Close the file for serial writing call sp % file_close() @@ -730,6 +730,20 @@ contains end do TALLY_METADATA + ! Check for source in statepoint if needed + call sp % read_data(int_array(1), "source_present") + if (int_array(1) == 1) then + source_present = .true. + else + source_present = .false. + end if + + ! Check to make sure source bank is present + if (path_source_point == path_state_point .and. .not. source_present) then + message = "Source bank must be contained in statepoint restart file" + call fatal_error() + end if + ! Read tallies to master if (master) then @@ -766,20 +780,6 @@ contains end if end if - ! Check for source in statepoint if needed - call sp % read_data(int_array(1), "source_present") - if (int_array(1) == 1) then - source_present = .true. - else - source_present = .false. - end if - - ! Check to make sure source bank is present - if (path_source_point == path_state_point .and. .not. source_present) then - message = "Source bank must be contained in statepoint restart file" - call fatal_error() - end if - ! Read source if in eigenvalue mode if (run_mode == MODE_EIGENVALUE) then diff --git a/src/utils/statepoint.py b/src/utils/statepoint.py index 0bfb66716b..d64ad09663 100644 --- a/src/utils/statepoint.py +++ b/src/utils/statepoint.py @@ -298,6 +298,13 @@ class StatePoint(object): f.stride = stride stride *= f.length + # Source bank present + source_present = self._get_int(path='source_present')[0] + if source_present == 1: + self.source_present = True + else: + self.source_present = False + # Set flag indicating metadata has already been read self._metadata = True @@ -342,10 +349,9 @@ class StatePoint(object): if not self._results: self.read_results() - # Source bank present - source_present = self._get_int(path='source_present')[0] - if source_present != 1: - print('Source bank not present.') + # Check if source bank is in statepoint + if not self.source_present: + print('Source not in statepoint file.') return # For HDF5 state points, copy entire bank From 23bd929683c66ae4abd4379f66f6606391c2cbfd Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 5 Mar 2014 16:55:40 -0500 Subject: [PATCH 62/78] Update settings.xml RELAX NG schema. --- src/relaxng/settings.rnc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/relaxng/settings.rnc b/src/relaxng/settings.rnc index 0e4942e357..fb6a8b1537 100644 --- a/src/relaxng/settings.rnc +++ b/src/relaxng/settings.rnc @@ -102,10 +102,10 @@ element settings { (element interval { xsd:positiveInteger } | attribute interval { xsd:positiveInteger }) ) & - (element source_separate { xsd:boolean } | - attribute source_separate { xsd:boolean })? & - (element source_write { xsd:boolean } | - attribute source_write { xsd:boolean })? & + (element separate { xsd:boolean } | + attribute separate { xsd:boolean })? & + (element write { xsd:boolean } | + attribute write { xsd:boolean })? & (element overwrite_latest { xsd:boolean} | attribute overwrite_latest {xsd:boolean})? }? & From 1abdcff45880c28d58f5d3882f680dede4c46aa4 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 5 Mar 2014 17:11:52 -0500 Subject: [PATCH 63/78] Make batches/interval sub-attribute optional in settings.rnc. --- src/relaxng/settings.rnc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/relaxng/settings.rnc b/src/relaxng/settings.rnc index fb6a8b1537..58699a2a26 100644 --- a/src/relaxng/settings.rnc +++ b/src/relaxng/settings.rnc @@ -101,7 +101,7 @@ element settings { attribute batches { list { xsd:positiveInteger+ } }) | (element interval { xsd:positiveInteger } | attribute interval { xsd:positiveInteger }) - ) & + )? & (element separate { xsd:boolean } | attribute separate { xsd:boolean })? & (element write { xsd:boolean } | From 40fb29b819a13f23bcf5b958d79499a48d1a8cac Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:21:22 -0500 Subject: [PATCH 64/78] removed check variable to address @paulromano comment --- src/input_xml.F90 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 03ad982cbc..fffd4a54e7 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -58,7 +58,6 @@ contains integer(8) :: temp_long integer :: n_tracks logical :: file_exists - logical :: check character(MAX_FILE_LEN) :: env_variable character(MAX_WORD_LEN) :: type character(MAX_LINE_LEN) :: filename @@ -702,10 +701,9 @@ contains ! make sure that the sourcepoint batch numbers are contained in the ! statepoint list if (.not. source_separate) then - check = .true. do i = 1, n_source_points - check = statepoint_batch % contains(sourcepoint_batch % get_item(i)) - if (.not. check) then + if (.not. statepoint_batch % contains(sourcepoint_batch % & + get_item(i))) then message = 'Sourcepoint batches are not a subset& & of statepoint batches.' call fatal_error() From b73dfd352e453586a53da69afbc35f9a8401e554 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:22:20 -0500 Subject: [PATCH 65/78] formatted source_present lines as per PEP8 --- src/utils/statepoint.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/statepoint.py b/src/utils/statepoint.py index d64ad09663..47809d4728 100644 --- a/src/utils/statepoint.py +++ b/src/utils/statepoint.py @@ -301,9 +301,9 @@ class StatePoint(object): # Source bank present source_present = self._get_int(path='source_present')[0] if source_present == 1: - self.source_present = True + self.source_present = True else: - self.source_present = False + self.source_present = False # Set flag indicating metadata has already been read self._metadata = True From fbb692f351393998febb0c5452977ca8e75f9c9e Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:28:52 -0500 Subject: [PATCH 66/78] removed extension from cleanup --- tests/{cleanup.bash => cleanup} | 2 ++ 1 file changed, 2 insertions(+) rename tests/{cleanup.bash => cleanup} (96%) diff --git a/tests/cleanup.bash b/tests/cleanup similarity index 96% rename from tests/cleanup.bash rename to tests/cleanup index 0b792f9c77..288c81025b 100755 --- a/tests/cleanup.bash +++ b/tests/cleanup @@ -1,3 +1,5 @@ +#!/bin/bash + # This simple script ensures that all binary # output files have been deleted in all the # folders. This can occur if a previous error From 17793dfdcfdbbe97ecc2320876898b425c622782 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:42:45 -0500 Subject: [PATCH 67/78] check filetype before reading in source --- src/source.F90 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/source.F90 b/src/source.F90 index 8e83b2ee91..2d3f74ec99 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -49,6 +49,12 @@ contains ! Read the file type call sp % read_data(itmp, "filetype") + ! Check to make sure this is a source file + if (itmp /= FILETYPE_SOURCE) then + message = "Specified starting source file not a source file type." + call fatal_error() + end if + ! Read in the source bank call sp % read_source_bank() From 0ea86d60d0bfe44dae47597d26dc5e95db139419 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:44:39 -0500 Subject: [PATCH 68/78] converted source_separate to new separate tag --- tests/test_source_file/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_source_file/settings.xml b/tests/test_source_file/settings.xml index 98abc5acfe..17d4ee2e2e 100644 --- a/tests/test_source_file/settings.xml +++ b/tests/test_source_file/settings.xml @@ -2,7 +2,7 @@ - + 10 From 83ac6bc92530c8abb6d57fc8ec4492261505b9be Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:54:25 -0500 Subject: [PATCH 69/78] noseMPI uncommented --- tests/test_source_file/test_source_file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_source_file/test_source_file.py b/tests/test_source_file/test_source_file.py index ede988be56..a4b2a4e2d6 100644 --- a/tests/test_source_file/test_source_file.py +++ b/tests/test_source_file/test_source_file.py @@ -3,7 +3,7 @@ import os from subprocess import Popen, STDOUT, PIPE, call import filecmp -#from nose_mpi import NoseMPI +from nose_mpi import NoseMPI import glob pwd = os.path.dirname(__file__) From f357e370bc951717088fddd992891334baf524a9 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:55:44 -0500 Subject: [PATCH 70/78] uncommented mpi capability --- tests/test_source_file/test_source_file.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_source_file/test_source_file.py b/tests/test_source_file/test_source_file.py index a4b2a4e2d6..9752d89b49 100644 --- a/tests/test_source_file/test_source_file.py +++ b/tests/test_source_file/test_source_file.py @@ -51,8 +51,7 @@ def setup(): def test_run1(): openmc_path = pwd + '/../../src/openmc' -# if int(NoseMPI.mpi_np) > 0: - if False: + if int(NoseMPI.mpi_np) > 0: proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], stderr=STDOUT, stdout=PIPE) else: From 604abf205c9c0b4602813e09abe18cadb29c7bf3 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 5 Mar 2014 17:56:01 -0500 Subject: [PATCH 71/78] uncommented mpi capability in run 2 --- tests/test_source_file/test_source_file.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_source_file/test_source_file.py b/tests/test_source_file/test_source_file.py index 9752d89b49..a1b4986e56 100644 --- a/tests/test_source_file/test_source_file.py +++ b/tests/test_source_file/test_source_file.py @@ -73,8 +73,7 @@ def test_run2(): source = glob.glob(pwd + '/source.10.*') with open('settings.xml','w') as fh: fh.write(settings2.format(source[0].split('.')[2])) -# if int(NoseMPI.mpi_np) > 0: - if False: + if int(NoseMPI.mpi_np) > 0: proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path], stderr=STDOUT, stdout=PIPE) else: From 7def6a881a1d2ab6d152f8c1cc241184db0da22f Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 6 Mar 2014 17:02:04 -0500 Subject: [PATCH 72/78] Change source_separate to separate in test_source_file.py. --- tests/test_source_file/test_source_file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_source_file/test_source_file.py b/tests/test_source_file/test_source_file.py index a1b4986e56..85a33c0313 100644 --- a/tests/test_source_file/test_source_file.py +++ b/tests/test_source_file/test_source_file.py @@ -12,7 +12,7 @@ settings1=""" - + 10 From b34cfe7bac6553a415bdd7ffd8e0a5dc735195fe Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 6 Mar 2014 17:20:11 -0500 Subject: [PATCH 73/78] Updated release notes to include two latest PRs. --- docs/source/releasenotes/notes_0.5.4.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/releasenotes/notes_0.5.4.rst b/docs/source/releasenotes/notes_0.5.4.rst index 1471e1c8e4..174064e35b 100644 --- a/docs/source/releasenotes/notes_0.5.4.rst +++ b/docs/source/releasenotes/notes_0.5.4.rst @@ -29,6 +29,8 @@ New Features - plot_mesh_tally.py 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 --------- Bug Fixes From 500d26eac1352edd5f2811b8b9ab6e8e19920a18 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 10 Mar 2014 17:37:47 -0400 Subject: [PATCH 74/78] Remove DEPENDENCIES file. --- src/DEPENDENCIES | 396 ----------------------------------------------- 1 file changed, 396 deletions(-) delete mode 100644 src/DEPENDENCIES diff --git a/src/DEPENDENCIES b/src/DEPENDENCIES deleted file mode 100644 index 579bf26fb1..0000000000 --- a/src/DEPENDENCIES +++ /dev/null @@ -1,396 +0,0 @@ -ace.o: ace_header.o -ace.o: constants.o -ace.o: endf.o -ace.o: error.o -ace.o: fission.o -ace.o: global.o -ace.o: material_header.o -ace.o: output.o -ace.o: set_header.o -ace.o: string.o - -ace_header.o: constants.o -ace_header.o: endf_header.o - -cmfd_data.o: cmfd_header.o -cmfd_data.o: constants.o -cmfd_data.o: error.o -cmfd_data.o: global.o -cmfd_data.o: mesh.o -cmfd_data.o: mesh_header.o -cmfd_data.o: string.o -cmfd_data.o: tally_header.o - -cmfd_execute.o: cmfd_data.o -cmfd_execute.o: cmfd_jfnk_solver.o -cmfd_execute.o: cmfd_power_solver.o -cmfd_execute.o: constants.o -cmfd_execute.o: error.o -cmfd_execute.o: global.o -cmfd_execute.o: mesh.o -cmfd_execute.o: mesh_header.o -cmfd_execute.o: output.o -cmfd_execute.o: search.o -cmfd_execute.o: tally.o - -cmfd_header.o: constants.o - -cmfd_input.o: cmfd_header.o -cmfd_input.o: constants.o -cmfd_input.o: error.o -cmfd_input.o: global.o -cmfd_input.o: mesh_header.o -cmfd_input.o: output.o -cmfd_input.o: string.o -cmfd_input.o: tally.o -cmfd_input.o: tally_header.o -cmfd_input.o: tally_initialize.o -cmfd_input.o: xml_interface.o - -cmfd_jfnk_solver.o: cmfd_loss_operator.o -cmfd_jfnk_solver.o: cmfd_power_solver.o -cmfd_jfnk_solver.o: cmfd_prod_operator.o -cmfd_jfnk_solver.o: constants.o -cmfd_jfnk_solver.o: global.o -cmfd_jfnk_solver.o: matrix_header.o -cmfd_jfnk_solver.o: solver_interface.o -cmfd_jfnk_solver.o: vector_header.o - -cmfd_loss_operator.o: constants.o -cmfd_loss_operator.o: global.o -cmfd_loss_operator.o: matrix_header.o - -cmfd_power_solver.o: cmfd_loss_operator.o -cmfd_power_solver.o: cmfd_prod_operator.o -cmfd_power_solver.o: constants.o -cmfd_power_solver.o: global.o -cmfd_power_solver.o: matrix_header.o -cmfd_power_solver.o: solver_interface.o -cmfd_power_solver.o: vector_header.o - -cmfd_prod_operator.o: constants.o -cmfd_prod_operator.o: global.o -cmfd_prod_operator.o: matrix_header.o - -cmfd_slepc_solver.o: cmfd_loss_operator.o -cmfd_slepc_solver.o: cmfd_prod_operator.o -cmfd_slepc_solver.o: constants.o -cmfd_slepc_solver.o: global.o - -cross_section.o: ace_header.o -cross_section.o: constants.o -cross_section.o: error.o -cross_section.o: fission.o -cross_section.o: global.o -cross_section.o: material_header.o -cross_section.o: particle_header.o -cross_section.o: random_lcg.o -cross_section.o: search.o - -doppler.o: constants.o - -eigenvalue.o: cmfd_execute.o -eigenvalue.o: constants.o -eigenvalue.o: error.o -eigenvalue.o: global.o -eigenvalue.o: math.o -eigenvalue.o: mesh.o -eigenvalue.o: mesh_header.o -eigenvalue.o: output.o -eigenvalue.o: particle_header.o -eigenvalue.o: random_lcg.o -eigenvalue.o: search.o -eigenvalue.o: source.o -eigenvalue.o: state_point.o -eigenvalue.o: string.o -eigenvalue.o: tally.o -eigenvalue.o: tracking.o - -endf.o: constants.o -endf.o: string.o - -energy_grid.o: constants.o -energy_grid.o: global.o -energy_grid.o: list_header.o -energy_grid.o: output.o - -error.o: global.o - -finalize.o: global.o -finalize.o: hdf5_interface.o -finalize.o: output.o -finalize.o: tally.o - -fission.o: ace_header.o -fission.o: constants.o -fission.o: error.o -fission.o: global.o -fission.o: interpolation.o -fission.o: search.o - -fixed_source.o: constants.o -fixed_source.o: global.o -fixed_source.o: output.o -fixed_source.o: particle_header.o -fixed_source.o: random_lcg.o -fixed_source.o: source.o -fixed_source.o: state_point.o -fixed_source.o: string.o -fixed_source.o: tally.o -fixed_source.o: tracking.o - -geometry.o: constants.o -geometry.o: error.o -geometry.o: geometry_header.o -geometry.o: global.o -geometry.o: output.o -geometry.o: particle_header.o -geometry.o: particle_restart_write.o -geometry.o: string.o -geometry.o: tally.o - -global.o: ace_header.o -global.o: bank_header.o -global.o: cmfd_header.o -global.o: constants.o -global.o: dict_header.o -global.o: geometry_header.o -global.o: hdf5_interface.o -global.o: material_header.o -global.o: mesh_header.o -global.o: plot_header.o -global.o: set_header.o -global.o: source_header.o -global.o: tally_header.o -global.o: timer_header.o - -hdf5_summary.o: ace_header.o -hdf5_summary.o: constants.o -hdf5_summary.o: endf.o -hdf5_summary.o: geometry_header.o -hdf5_summary.o: global.o -hdf5_summary.o: material_header.o -hdf5_summary.o: mesh_header.o -hdf5_summary.o: output.o -hdf5_summary.o: output_interface.o -hdf5_summary.o: string.o -hdf5_summary.o: tally_header.o - -initialize.o: ace.o -initialize.o: bank_header.o -initialize.o: constants.o -initialize.o: dict_header.o -initialize.o: energy_grid.o -initialize.o: error.o -initialize.o: geometry.o -initialize.o: geometry_header.o -initialize.o: global.o -initialize.o: hdf5_interface.o -initialize.o: hdf5_summary.o -initialize.o: input_xml.o -initialize.o: output.o -initialize.o: output_interface.o -initialize.o: random_lcg.o -initialize.o: source.o -initialize.o: state_point.o -initialize.o: string.o -initialize.o: tally_header.o -initialize.o: tally_initialize.o - -input_xml.o: cmfd_input.o -input_xml.o: constants.o -input_xml.o: dict_header.o -input_xml.o: error.o -input_xml.o: geometry_header.o -input_xml.o: global.o -input_xml.o: list_header.o -input_xml.o: mesh_header.o -input_xml.o: output.o -input_xml.o: plot_header.o -input_xml.o: random_lcg.o -input_xml.o: string.o -input_xml.o: tally_header.o -input_xml.o: tally_initialize.o -input_xml.o: xml_interface.o - -interpolation.o: constants.o -interpolation.o: endf_header.o -interpolation.o: error.o -interpolation.o: global.o -interpolation.o: search.o -interpolation.o: string.o - -list_header.o: constants.o - -main.o: constants.o -main.o: eigenvalue.o -main.o: finalize.o -main.o: fixed_source.o -main.o: global.o -main.o: initialize.o -main.o: particle_restart.o -main.o: plot.o - -math.o: constants.o -math.o: random_lcg.o - -matrix_header.o: constants.o -matrix_header.o: vector_header.o - -mesh.o: constants.o -mesh.o: global.o -mesh.o: mesh_header.o -mesh.o: particle_header.o -mesh.o: search.o - -output.o: ace_header.o -output.o: constants.o -output.o: endf.o -output.o: error.o -output.o: geometry_header.o -output.o: global.o -output.o: math.o -output.o: mesh.o -output.o: mesh_header.o -output.o: particle_header.o -output.o: plot_header.o -output.o: string.o -output.o: tally_header.o - -output_interface.o: constants.o -output_interface.o: error.o -output_interface.o: global.o -output_interface.o: hdf5_interface.o -output_interface.o: mpiio_interface.o -output_interface.o: tally_header.o - -particle_header.o: constants.o -particle_header.o: geometry_header.o - -particle_restart.o: bank_header.o -particle_restart.o: constants.o -particle_restart.o: geometry_header.o -particle_restart.o: global.o -particle_restart.o: output.o -particle_restart.o: output_interface.o -particle_restart.o: particle_header.o -particle_restart.o: random_lcg.o -particle_restart.o: tracking.o - -particle_restart_write.o: bank_header.o -particle_restart_write.o: global.o -particle_restart_write.o: output_interface.o -particle_restart_write.o: particle_header.o -particle_restart_write.o: string.o - -physics.o: ace_header.o -physics.o: constants.o -physics.o: endf.o -physics.o: error.o -physics.o: fission.o -physics.o: global.o -physics.o: interpolation.o -physics.o: material_header.o -physics.o: math.o -physics.o: mesh.o -physics.o: output.o -physics.o: particle_header.o -physics.o: particle_restart_write.o -physics.o: random_lcg.o -physics.o: search.o -physics.o: string.o - -plot.o: constants.o -plot.o: error.o -plot.o: geometry.o -plot.o: geometry_header.o -plot.o: global.o -plot.o: output.o -plot.o: particle_header.o -plot.o: plot_header.o -plot.o: ppmlib.o -plot.o: string.o - -plot_header.o: constants.o - -random_lcg.o: global.o - -search.o: error.o -search.o: global.o - -set_header.o: constants.o -set_header.o: list_header.o - -solver_interface.o: error.o -solver_interface.o: global.o -solver_interface.o: matrix_header.o -solver_interface.o: vector_header.o - -source.o: bank_header.o -source.o: constants.o -source.o: error.o -source.o: geometry.o -source.o: geometry_header.o -source.o: global.o -source.o: math.o -source.o: output.o -source.o: particle_header.o -source.o: random_lcg.o -source.o: string.o - -state_point.o: constants.o -state_point.o: error.o -state_point.o: global.o -state_point.o: output.o -state_point.o: output_interface.o -state_point.o: string.o -state_point.o: tally_header.o - -string.o: constants.o -string.o: error.o -string.o: global.o - -tally.o: ace_header.o -tally.o: constants.o -tally.o: error.o -tally.o: global.o -tally.o: math.o -tally.o: mesh.o -tally.o: mesh_header.o -tally.o: output.o -tally.o: particle_header.o -tally.o: search.o -tally.o: string.o -tally.o: tally_header.o - -tally_header.o: constants.o - -tally_initialize.o: constants.o -tally_initialize.o: global.o -tally_initialize.o: tally_header.o - -timer_header.o: constants.o - -track_output.o: global.o -track_output.o: output_interface.o -track_output.o: particle_header.o -track_output.o: string.o - -tracking.o: cross_section.o -tracking.o: error.o -tracking.o: geometry.o -tracking.o: geometry_header.o -tracking.o: global.o -tracking.o: output.o -tracking.o: particle_header.o -tracking.o: physics.o -tracking.o: random_lcg.o -tracking.o: string.o -tracking.o: tally.o -tracking.o: track_output.o - -vector_header.o: constants.o - -xml_interface.o: constants.o -xml_interface.o: error.o -xml_interface.o: global.o From 3dc9822b6d99f9a6c5cd0c211160e27c6a1106ce Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 11 Mar 2014 23:49:12 -0400 Subject: [PATCH 75/78] Change back to using -DGIT_SHA1. --- .gitignore | 1 - src/CMakeLists.txt | 5 +---- src/output.F90 | 1 - 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a58bf032e6..8fd929bbcb 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ *.mod *.log *.out -git_sha1.h # Compiler python objects *.pyc diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dd0bcaaa05..4235e72cac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -162,10 +162,7 @@ execute_process(COMMAND git rev-parse -q HEAD OUTPUT_VARIABLE GIT_SHA1 ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(GIT_SHA1_SUCCESS EQUAL 0) - file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.h - "#define GIT_SHA1 \"${GIT_SHA1}\"") -else() - file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.h "") + add_definitions(-DGIT_SHA1="${GIT_SHA1}") endif() #=============================================================================== diff --git a/src/output.F90 b/src/output.F90 index 061500734d..ee0a8391c2 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -55,7 +55,6 @@ contains ' License: http://mit-crpg.github.io/openmc/license.html' write(UNIT=OUTPUT_UNIT, FMT='(6X,"Version:",8X,I1,".",I1,".",I1)') & VERSION_MAJOR, VERSION_MINOR, VERSION_RELEASE -#include "git_sha1.h" #ifdef GIT_SHA1 write(UNIT=OUTPUT_UNIT, FMT='(6X,"Git SHA1:",7X,A)') GIT_SHA1 #endif From 822e23005d24f6e64bbfe29fe95695681bfc3dc4 Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Wed, 19 Mar 2014 16:29:09 -0400 Subject: [PATCH 76/78] fixed memory leak particle during sample external source sites --- src/source.F90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/source.F90 b/src/source.F90 index 2d3f74ec99..ced7fe1dc5 100644 --- a/src/source.F90 +++ b/src/source.F90 @@ -130,6 +130,7 @@ contains end if end if end do + call p % clear() case (SRC_SPACE_POINT) ! Point source From 85b3cbd82a8c72c426cfba489026a66a4d442531 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 18 Mar 2014 20:01:27 -0400 Subject: [PATCH 77/78] Fix out-of-bounds error when using OpenMP threading. Closes #255 on github. --- src/physics.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/physics.F90 b/src/physics.F90 index 2d3cfeb39f..fbd4f60c6d 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -867,9 +867,9 @@ contains end if ! Bank source neutrons - if (nu == 0 .or. n_bank == 3*work) return + if (nu == 0 .or. n_bank == size(fission_bank)) return p % fission = .true. ! Fission neutrons will be banked - do i = int(n_bank,4) + 1, int(min(n_bank + nu, 3*work),4) + do i = int(n_bank,4) + 1, int(min(n_bank + nu, int(size(fission_bank),8)),4) ! Bank source neutrons by copying particle data fission_bank(i) % xyz = p % coord0 % xyz @@ -894,7 +894,7 @@ contains end do ! increment number of bank sites - n_bank = min(n_bank + nu, 3*work) + n_bank = min(n_bank + nu, int(size(fission_bank),8)) ! Store total weight banked for analog fission tallies p % n_bank = nu From 3b601bb96cf336484bf823976f35bbc57282f4f1 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sat, 22 Mar 2014 12:21:01 -0400 Subject: [PATCH 78/78] Updated installation instructions. --- docs/source/usersguide/install.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index 53bfbe4018..313372fa6b 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -83,8 +83,8 @@ Prerequisites OpenMC with. HDF5_ must be built with parallel I/O features if you intend to use HDF5_ with MPI. An example of configuring HDF5_ is listed below:: - FC=/opt/mpich/3.0.4-gnu/bin/mpif90 CC=/opt/mpich/3.0.4-gnu/bin/mpicc \ - ./configure --prefix=/opt/hdf5/1.8.11-gnu --enable-fortran \ + FC=/opt/mpich/3.1/bin/mpif90 CC=/opt/mpich/3.1/bin/mpicc \ + ./configure --prefix=/opt/hdf5/1.8.12 --enable-fortran \ --enable-fortran2003 --enable-parallel You may omit ``--enable-parallel`` if you want to compile HDF5_ in serial. @@ -97,8 +97,8 @@ Prerequisites requires PETSc_ to be configured with Fortran datatypes. An example of configuring PETSc_ is listed below:: - ./configure --prefix=/opt/petsc/3.4.2-gnu --download-f-blas-lapack \ - --with-mpi-dir=/opt/mpich/3.0.4-gnu/ --with-shared-libraries=0 \ + ./configure --prefix=/opt/petsc/3.4.4 --download-f-blas-lapack \ + --with-mpi-dir=/opt/mpich/3.1 --with-shared-libraries \ --with-fortran-datatypes The BLAS/LAPACK library is not required to be downloaded and can be linked @@ -194,8 +194,8 @@ should be used: Compiling with MPI ++++++++++++++++++ -To compile with MPI, set the FC environment variable to the path to the MPI -Fortran wrapper. For example, in a bash shell: +To compile with MPI, set the :envvar:`FC` environment variable to the path to +the MPI Fortran wrapper. For example, in a bash shell: .. code-block:: sh @@ -212,8 +212,8 @@ command, i.e. Compiling with HDF5 +++++++++++++++++++ -To compile with MPI, set the FC environment variable to the path to the HDF5 -Fortran wrapper. For example, in a bash shell: +To compile with MPI, set the :envvar:`FC` environment variable to the path to +the HDF5 Fortran wrapper. For example, in a bash shell: .. code-block:: sh