diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 28ba30c23e..106f7ae92a 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 ------------------------------ diff --git a/src/constants.F90 b/src/constants.F90 index 6fea8cbc16..9091460148 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -11,13 +11,14 @@ 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 integer, parameter :: & FILETYPE_STATEPOINT = -1, & - FILETYPE_PARTICLE_RESTART = -2 + FILETYPE_PARTICLE_RESTART = -2, & + FILETYPE_SOURCE = -3 ! ============================================================================ ! ADJUSTABLE PARAMETERS diff --git a/src/eigenvalue.F90 b/src/eigenvalue.F90 index 4047f815f5..4d32025699 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 c3dbf0aa24..c27f34f9e8 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 @@ -260,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 @@ -363,6 +365,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/initialize.F90 b/src/initialize.F90 index c1fbf40cda..52869a281e 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -363,8 +363,50 @@ 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 .and. i + 1 <= argc) 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 ! Different option is specified not a source file + + ! Source is in statepoint file + path_source_point = path_state_point + + ! Set argument back + 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') check_overlaps = .true. diff --git a/src/input_xml.F90 b/src/input_xml.F90 index ae4e4b1b2e..fffd4a54e7 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -625,20 +625,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 - if (check_for_node(node_sp, "source_separate")) then - call get_node_value(node_sp, "source_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) - call lower_case(temp_str) - if (trim(temp_str) == 'false' .or. & - trim(temp_str) == '0') source_write = .false. - end if else ! If no tag was present, by default write state point at ! last batch only @@ -646,6 +632,85 @@ contains call statepoint_batch % add(n_batches) end if + ! 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 source points + if (check_for_node(node_sp, "batches")) then + n_source_points = get_arraysize_integer(node_sp, "batches") + else + n_source_points = 0 + end if + + if (n_source_points > 0) then + ! 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 + call sourcepoint_batch % add(temp_int_array(i)) + end do + deallocate(temp_int_array) + elseif (check_for_node(node_sp, "interval")) then + ! 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 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)) + end do + end if + + ! Check if the user has specified to write binary source file + 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, "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. + end if + if (check_for_node(node_sp, "overwrite_latest")) then + call get_node_value(node_sp, "overwrite_latest", temp_str) + call lower_case(temp_str) + if (trim(temp_str) == 'true' .or. & + trim(temp_str) == '1') source_latest = .true. + end if + 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 + + ! 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 + do i = 1, n_source_points + if (.not. statepoint_batch % contains(sourcepoint_batch % & + get_item(i))) 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 diff --git a/src/relaxng/settings.rnc b/src/relaxng/settings.rnc index 6af6754405..58699a2a26 100644 --- a/src/relaxng/settings.rnc +++ b/src/relaxng/settings.rnc @@ -92,11 +92,22 @@ element settings { attribute batches { list { xsd:positiveInteger+ } }) | (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 source_point { + ( + (element batches { list { xsd:positiveInteger+ } } | + 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 } | + attribute write { xsd:boolean })? & + (element overwrite_latest { xsd:boolean} | + attribute overwrite_latest {xsd:boolean})? }? & element survival_biasing { xsd:boolean }? & diff --git a/src/state_point.F90 b/src/state_point.F90 index e13cd8f486..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 @@ -280,14 +287,45 @@ 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(1) + + ! 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 + filename = trim(path_output) // 'statepoint.' // & trim(to_str(current_batch)) #ifdef HDF5 filename = trim(filename) // '.h5' @@ -295,16 +333,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 +346,36 @@ 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(1) + + ! 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() + + ! Close file + call sp % file_close() + + end if + + end subroutine write_source_point !=============================================================================== ! WRITE_TALLY_RESULTS_NR @@ -467,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() @@ -671,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 @@ -711,26 +784,20 @@ contains 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") end if diff --git a/src/utils/statepoint.py b/src/utils/statepoint.py index 430abee8b8..47809d4728 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 @@ -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,6 +349,11 @@ class StatePoint(object): if not self._results: self.read_results() + # 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 if self._hdf5: source_sites = self._f['source_bank'].value diff --git a/tests/cleanup b/tests/cleanup new file mode 100755 index 0000000000..288c81025b --- /dev/null +++ b/tests/cleanup @@ -0,0 +1,10 @@ +#!/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 +# occurred and the test suite was rerun without +# deleting left over binary files. This will +# cause an assertion error in some of the +# tests. +find . \( -name "*.binary" -o -name "*.h5" \) -exec rm -f {} \; 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) 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_true.dat b/tests/test_sourcepoint_latest/results_true.dat new file mode 100644 index 0000000000..00a65f913b --- /dev/null +++ b/tests/test_sourcepoint_latest/results_true.dat @@ -0,0 +1,2 @@ +k-combined: +3.011353E-01 2.854556E-03 diff --git a/tests/test_sourcepoint_latest/settings.xml b/tests/test_sourcepoint_latest/settings.xml new file mode 100644 index 0000000000..5056db4724 --- /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) 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..f4c32a893f --- /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.10.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..ad94d76457 --- /dev/null +++ b/tests/test_sourcepoint_restart/results_true.dat @@ -0,0 +1,2412 @@ +k-combined: +3.011353E-01 2.854556E-03 +tally 1: +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 +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 +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 +0.000000E+00 +0.000000E+00 +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 +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.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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.992726E-04 +1.795675E-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 +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 +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 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.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 +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 +1.000000E-02 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +5.989596E-04 +1.793791E-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.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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.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.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 +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.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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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-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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +8.948660E-04 +8.007852E-07 +1.000000E-03 +1.000000E-06 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.000000E-03 +4.000000E-06 +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 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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: +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 new file mode 100644 index 0000000000..4e9b12d246 --- /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..0eaf1198cc --- /dev/null +++ b/tests/test_sourcepoint_restart/test_sourcepoint_restart.py @@ -0,0 +1,129 @@ +#!/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.*') + 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.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], sourcepoint[0]], + stderr=STDOUT, stdout=PIPE) + else: + 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.10.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_results_form1(): + 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.*') + 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], sourcepoint[0]], + stderr=STDOUT, stdout=PIPE) + else: + 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.10.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_results_form2(): + 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], 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.10.*') + assert len(statepoint) == 1 + assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5') + +def test_results_serial(): + 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.*') + output += glob.glob(pwd + '/source.*') + output.append(pwd + '/results_test.dat') + for f in output: + if os.path.exists(f): + os.remove(f) diff --git a/tests/test_statepoint_sourcesep/settings.xml b/tests/test_statepoint_sourcesep/settings.xml index 4f5b7691ff..17d4ee2e2e 100644 --- a/tests/test_statepoint_sourcesep/settings.xml +++ b/tests/test_statepoint_sourcesep/settings.xml @@ -1,7 +1,8 @@ - + + 10