From 347ca24ee522ab8a9e5c07d85765ac273b7889aa Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 18 Oct 2013 17:27:03 -0400 Subject: [PATCH 01/61] 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 f5375bf3a..62ce1c47b 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 f12171b25..aba56232b 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 f50a4557c..3a8a1fac6 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 9ad9b8d9f..ae546cc10 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 8f1cc7b00..60b959c67 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/61] 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 3a8a1fac6..41dac3f06 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/61] 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 cd4ed4beb..fda258385 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/61] 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 558772286..d72d85523 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 ae546cc10..a6c21704d 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/61] 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 aba56232b..f5ce1dbcc 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 dea901fb6..09e446e38 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 a6c21704d..836f96c00 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/61] 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 09e446e38..6b2023a9b 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 cf3c052b9..74d0f6054 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/61] 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 4f5b7691f..fba449e2d 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/61] 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 fba449e2d..98abc5acf 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/61] 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 74d0f6054..306fb8f37 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 9058b7b490524e0164fdad880fbc9938753006d9 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Mon, 9 Dec 2013 12:24:20 -0500 Subject: [PATCH 10/61] 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 d54aa83c2..4673898c0 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 11/61] 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 a13272aa6..ba7e4405c 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 12/61] 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 000000000..7bb3b2c6e --- /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 13/61] 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 7bb3b2c6e..0f943d684 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 14/61] 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 e8d602c35..cc12d0c41 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 15/61] 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 000000000..612e46132 --- /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 000000000..1f85510e0 --- /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 000000000..9b0f577eb --- /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 000000000..748df0351 --- /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 000000000..c816fe700 --- /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 000000000..78d202e40 --- /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 000000000..612e46132 --- /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 000000000..1f85510e0 --- /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 000000000..9b0f577eb --- /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 000000000..748df0351 --- /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 000000000..d0b8fa71d --- /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 000000000..78d202e40 --- /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 000000000..612e46132 --- /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 000000000..1f85510e0 --- /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 000000000..8ff10971c --- /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 000000000..00a65f913 --- /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 000000000..748df0351 --- /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 000000000..36c5c7a0d --- /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 000000000..d26533843 --- /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 16/61] 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 000000000..612e46132 --- /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 000000000..1f85510e0 --- /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 000000000..d0b3a55e0 --- /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 000000000..f2b97af34 --- /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 000000000..5fee23d67 --- /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 000000000..1704f56e1 --- /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 000000000..a4387405b --- /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 55d257351c7b731aec57b415b3270d0e205f30f3 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 20 Jan 2014 19:00:12 -0500 Subject: [PATCH 17/61] Converted plot_mesh_tally.py to use Tkinter rather than PyQt. --- src/utils/plot_mesh_tally.py | 512 +++++++++++++++-------------------- 1 file changed, 213 insertions(+), 299 deletions(-) diff --git a/src/utils/plot_mesh_tally.py b/src/utils/plot_mesh_tally.py index c70b29165..d22e0e0b4 100755 --- a/src/utils/plot_mesh_tally.py +++ b/src/utils/plot_mesh_tally.py @@ -1,269 +1,241 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python -'''Python script to plot tally data generated by OpenMC.''' +"""Python script to plot tally data generated by OpenMC.""" +import os import sys -from statepoint import * -# Color intensity dependent on individual score? - -from PyQt4.QtCore import * -from PyQt4.QtGui import * -import matplotlib.pyplot as plt +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg as FigureCanvas +from matplotlib.backends.backend_tkagg import NavigationToolbar2TkAgg as NavigationToolbar from matplotlib.figure import Figure -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar +import matplotlib.pyplot as plt import numpy as np -class AppForm(QMainWindow): - def __init__(self, argv, parent=None): - QMainWindow.__init__(self, parent) +from statepoint import * + +if sys.version_info[0] < 3: + import Tkinter as tk +else: + import tkinter as tk +import tkFileDialog +import tkFont +import tkMessageBox +import ttk + +class MeshPlotter(tk.Frame): + def __init__(self, parent, filename): + tk.Frame.__init__(self, parent) + + self.labels = {'cell': 'Cell:', 'cellborn': 'Cell born:', + 'surface': 'Surface:', 'material': 'Material:', + 'universe': 'Universe:', 'energyin': 'Energy in:', + 'energyout': 'Energy out:'} + + self.filterBoxes = {} # Read data from source or leakage fraction file - self.all_good = False - while not self.all_good: - if len(argv) > 1: - cl_file = str(argv[1]) - else: - cl_file = None - self.get_file_data(cl_file) - # Check that there are any mesh tallies at all - if len(self.tally_ids) != 0: - self.all_good = True - else: - # if there are not, the user will be given the choice to choose - # another file (but only if using interactive chooser) - if cl_file is None: - choice = QMessageBox.critical(None, "Invalid StatePoint File", - "File Does Not Contain Mesh " + - "Tallies!" + - "\nSelect Another File Or Quit", - QMessageBox.Retry, - QMessageBox.Abort) - if choice == QMessageBox.Abort: - self.all_good = False - break - else: - print("Invalid StatePoint File; File Does Not Contain " + - "Mesh Tallies!") - self.all_good = False - break + self.get_file_data(filename) + # Set up top-level window + top = self.winfo_toplevel() + top.title('Mesh Tally Plotter: ' + filename) + top.rowconfigure(0, weight=1) + top.columnconfigure(0, weight=1) + self.grid(sticky=tk.W+tk.N) - if self.all_good: - # Set maximum colorbar value by maximum tally data value - self.maxvalue = self.datafile.tallies[0].results.max() + # Create widgets and draw to screen + self.create_widgets() + self.update() - self.main_frame = QWidget() - self.setCentralWidget(self.main_frame) + def create_widgets(self): + figureFrame = tk.Frame(self) + figureFrame.grid(row=0, column=0) - # Create the Figure, Canvas, and Axes - self.dpi = 100 - self.fig = Figure((5.0, 15.0), dpi=self.dpi) - self.canvas = FigureCanvas(self.fig) - self.canvas.setParent(self.main_frame) - self.axes = self.fig.add_subplot(111) + # Create the Figure and Canvas + self.dpi = 100 + self.fig = Figure((5.0, 5.0), dpi=self.dpi) + self.canvas = FigureCanvas(self.fig, master=figureFrame) + self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) - # Create the navigation toolbar, tied to the canvas - self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame) + # Create the navigation toolbar, tied to the canvas + self.mpl_toolbar = NavigationToolbar(self.canvas, figureFrame) + self.mpl_toolbar.update() + self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1) - # Grid layout at bottom - self.grid = QGridLayout() + # Create frame for comboboxes + self.selectFrame = tk.Frame(self) + self.selectFrame.grid(row=1, column=0, sticky=tk.W+tk.E) - # Overall layout - self.vbox = QVBoxLayout() - self.vbox.addWidget(self.canvas) - self.vbox.addWidget(self.mpl_toolbar) - self.vbox.addLayout(self.grid) - self.main_frame.setLayout(self.vbox) + # Tally selection + labelTally = tk.Label(self.selectFrame, text='Tally:') + labelTally.grid(row=0, column=0, sticky=tk.W) + self.tallyBox = ttk.Combobox(self.selectFrame, state='readonly') + self.tallyBox['values'] = [self.datafile.tallies[i].id + for i in self.meshTallies] + self.tallyBox.current(0) + self.tallyBox.grid(row=0, column=1, sticky=tk.W+tk.E) + self.tallyBox.bind('<>', self.update) - # Tally selections - label_tally = QLabel("Tally:") - self.tally = QComboBox() - # Only show options for the tallies with meshes - self.tally.addItems([str(i + 1) for i in self.tally_ids]) - self.connect(self.tally, SIGNAL('activated(int)'), - self._update) - self.connect(self.tally, SIGNAL('activated(int)'), - self.populate_boxes) - self.connect(self.tally, SIGNAL('activated(int)'), - self.on_draw) + # Planar basis selection + labelBasis = tk.Label(self.selectFrame, text='Basis:') + labelBasis.grid(row=1, column=0, sticky=tk.W) + self.basisBox = ttk.Combobox(self.selectFrame, state='readonly') + self.basisBox['values'] = ('xy', 'yz', 'xz') + self.basisBox.current(0) + self.basisBox.grid(row=1, column=1, sticky=tk.W+tk.E) + self.basisBox.bind('<>', self.update) - # Planar basis - label_basis = QLabel("Basis:") - self.basis = QComboBox() - self.basis.addItems(['xy', 'yz', 'xz']) + # Axial level + labelAxial = tk.Label(self.selectFrame, text='Axial level:') + labelAxial.grid(row=2, column=0, sticky=tk.W) + self.axialBox = ttk.Combobox(self.selectFrame, state='readonly') + self.axialBox.grid(row=2, column=1, sticky=tk.W+tk.E) + self.axialBox.bind('<>', self.redraw) - # Update window when 'Basis' selection is changed - self.connect(self.basis, SIGNAL('activated(int)'), - self._update) - self.connect(self.basis, SIGNAL('activated(int)'), - self.populate_boxes) - self.connect(self.basis, SIGNAL('activated(int)'), - self.on_draw) + # Option for mean/uncertainty + labelMean = tk.Label(self.selectFrame, text='Mean/Uncertainty:') + labelMean.grid(row=3, column=0, sticky=tk.W) + self.meanBox = ttk.Combobox(self.selectFrame, state='readonly') + self.meanBox['values'] = ('Mean', 'Absolute uncertainty', + 'Relative uncertainty') + self.meanBox.current(0) + self.meanBox.grid(row=3, column=1, sticky=tk.W+tk.E) + self.meanBox.bind('<>', self.update) - # Axial level within selected basis - label_axial_level = QLabel("Axial Level:") - self.axial_level = QComboBox() - self.connect(self.axial_level, SIGNAL('activated(int)'), - self.on_draw) + # Scores + labelScore = tk.Label(self.selectFrame, text='Score:') + labelScore.grid(row=4, column=0, sticky=tk.W) + self.scoreBox = ttk.Combobox(self.selectFrame, state='readonly') + self.scoreBox.grid(row=4, column=1, sticky=tk.W+tk.E) + self.scoreBox.bind('<>', self.redraw) - # Add Option to plot mean or uncertainty - label_mean = QLabel("Mean or Uncertainty:") - self.mean = QComboBox() - self.mean.addItems(['Mean','Absolute Uncertainty', - 'Relative Uncertainty']) + # Filter label + font = tkFont.Font(weight='bold') + labelFilters = tk.Label(self.selectFrame, text='Filters:', font=font) + labelFilters.grid(row=5, column=0, sticky=tk.W) - # Update window when mean selection is changed - self.connect(self.mean, SIGNAL('activated(int)'), - self.on_draw) - - - self.label_filters = QLabel("Filter options:") - - # Labels for all possible filters - self.labels = {'cell': 'Cell: ', 'cellborn': 'Cell born: ', - 'surface': 'Surface: ', 'material': 'Material', - 'universe': 'Universe: ', 'energyin': 'Energy in: ', - 'energyout': 'Energy out: '} - - # Empty reusable labels - self.qlabels = {} - for j in range(8): - self.nextLabel = QLabel - self.qlabels[j] = self.nextLabel - - # Reusable comboboxes labelled with filter names - self.boxes = {} - for key in self.labels.keys(): - self.nextBox = QComboBox() - self.connect(self.nextBox, SIGNAL('activated(int)'), - self.on_draw) - self.boxes[key] = self.nextBox - - # Combobox to select among scores - self.score_label = QLabel("Score:") - self.scoreBox = QComboBox() - for item in self.tally_scores[0]: - self.scoreBox.addItems(str(item)) - self.connect(self.scoreBox, SIGNAL('activated(int)'), - self.on_draw) - - # Fill layout - self.grid.addWidget(label_tally, 0, 0) - self.grid.addWidget(self.tally, 0, 1) - self.grid.addWidget(label_basis, 1, 0) - self.grid.addWidget(self.basis, 1, 1) - self.grid.addWidget(label_axial_level, 2, 0) - self.grid.addWidget(self.axial_level, 2, 1) - self.grid.addWidget(label_mean, 3, 0) - self.grid.addWidget(self.mean, 3, 1) - self.grid.addWidget(self.label_filters, 4, 0) - - self._update() - self.populate_boxes() - self.on_draw() - - def get_file_data(self, cl_file=None): - # Get data file name from "open file" browser - if cl_file is None: - filename = QFileDialog.getOpenFileName(self, - 'Select statepoint file', '.') + def update(self, event=None): + if not event: + widget = None else: - filename = cl_file + widget = event.widget - # Create StatePoint object and read in data - self.datafile = StatePoint(str(filename)) - self.datafile.read_results() - self.datafile.generate_stdev() + tally_id = self.meshTallies[self.tallyBox.current()] + selectedTally = self.datafile.tallies[tally_id] - self.setWindowTitle('Core Map Tool : ' + str(self.datafile.path)) + # Get mesh for selected tally + self.mesh = self.datafile.meshes[selectedTally.filters['mesh'].bins[0] - 1] - self.labelList = [] + # Get mesh dimensions + self.nx, self.ny, self.nz = self.mesh.dimension - # Read mesh dimensions - # for mesh in self.datafile.meshes: - # self.nx, self.ny, self.nz = mesh.dimension + # Repopulate comboboxes baesd on current basis selection + text = self.basisBox['values'][self.basisBox.current()] + if text == 'xy': + self.axialBox['values'] = [str(i+1) for i in range(self.nz)] + elif text == 'yz': + self.axialBox['values'] = [str(i+1) for i in range(self.nx)] + else: + self.axialBox['values'] = [str(i+1) for i in range(self.ny)] + self.axialBox.current(0) - # Find which tallies have meshes so the rest can be ignored, - # and for these tallies read the filter and score types - self.tally_ids = [] - self.n_tallies = len(self.datafile.tallies) - self.tally_list = [] - self.tally_scores = [] - for itally, tally in enumerate(self.datafile.tallies): - if 'mesh' in tally.filters: - # Then we have a good tally, store the ID, filters and - # scores - self.tally_ids.append(itally) - self.filter_types = [] - for f in tally.filters: - self.filter_types.append(f) - self.tally_list.append(self.filter_types) - self.score_types = [] - for s in tally.scores: - self.score_types.append(s) - self.tally_scores.append(self.score_types) + # If update() was called by a change in the basis combobox, we don't + # need to repopulate the filters + if widget == self.basisBox: + self.redraw() + return - def on_draw(self): - """ Redraws the figure - """ + # Update scores + self.scoreBox['values'] = selectedTally.scores # self.tally_scores[self.tallyBox.current()] + self.scoreBox.current(0) -# print 'Calling on_draw...' - # Get selected basis, axial_level and stage - basis = self.basis.currentIndex() + 1 - axial_level = self.axial_level.currentIndex() + 1 - is_mean = self.mean.currentIndex() + # Remove any filter labels/comboboxes that exist + for row in range(6, self.selectFrame.grid_size()[1]): + for w in self.selectFrame.grid_slaves(row=row): + w.grid_forget() + w.destroy() - # get current tally index - tally_id = self.tally_ids[self.tally.currentIndex()] + # create a label/combobox for each filter in selected tally + count = 0 + for filterType in selectedTally.filters: + if filterType == 'mesh': + continue + count += 1 + + # Create label and combobox for this filter + label = tk.Label(self.selectFrame, text=self.labels[filterType]) + label.grid(row=count+6, column=0, sticky=tk.W) + combobox = ttk.Combobox(self.selectFrame, state='readonly') + self.filterBoxes[filterType] = combobox + + # Set combobox items + f = selectedTally.filters[filterType] + if filterType in ['energyin', 'energyout']: + combobox['values'] = ['{0} to {1}'.format(*f.bins[i:i+2]) + for i in range(f.length)] + else: + combobox['values'] = [str(i) for i in f.bins] + + combobox.current(0) + combobox.grid(row=count+6, column=1, sticky=tk.W+tk.E) + combobox.bind('<>', self.redraw) + + self.redraw() + + def redraw(self, event=None): + basis = self.basisBox.current() + 1 + axial_level = self.axialBox.current() + 1 + is_mean = self.meanBox.current() + + # Get selected tally + tally_id = self.meshTallies[self.tallyBox.current()] + selectedTally = self.datafile.tallies[tally_id] # Create spec_list spec_list = [] - for tally in self.datafile.tallies[tally_id].filters.values(): - if tally.type == 'mesh': + for f in selectedTally.filters.values(): + if f.type == 'mesh': continue - index = self.boxes[tally.type].currentIndex() - spec_list.append((tally.type, index)) + index = self.filterBoxes[f.type].current() + spec_list.append((f.type, index)) # Take is_mean and convert it to an index of the score score_loc = is_mean if score_loc > 1: score_loc = 1 - if self.basis.currentText() == 'xy': + text = self.basisBox['values'][self.basisBox.current()] + if text == 'xy': matrix = np.zeros((self.nx, self.ny)) for i in range(self.nx): for j in range(self.ny): matrix[i,j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, j + 1, axial_level))], - self.scoreBox.currentIndex())[score_loc] - # Calculate relative uncertainty from absolute, if - # requested + self.scoreBox.current())[score_loc] + # Calculate relative uncertainty from absolute, if requested if is_mean == 2: # Take care to handle zero means when normalizing mean_val = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, j + 1, axial_level))], - self.scoreBox.currentIndex())[0] + self.scoreBox.current())[0] if mean_val > 0.0: matrix[i,j] = matrix[i,j] / mean_val else: matrix[i,j] = 0.0 - elif self.basis.currentText() == 'yz': + elif text == 'yz': matrix = np.zeros((self.ny, self.nz)) for i in range(self.ny): for j in range(self.nz): matrix[i,j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (axial_level, i + 1, j + 1))], - self.scoreBox.currentIndex())[score_loc] - # Calculate relative uncertainty from absolute, if - # requested + self.scoreBox.current())[score_loc] + # Calculate relative uncertainty from absolute, if requested if is_mean == 2: # Take care to handle zero means when normalizing mean_val = self.datafile.get_value(tally_id, spec_list + [('mesh', (axial_level, i + 1, j + 1))], - self.scoreBox.currentIndex())[0] + self.scoreBox.current())[0] if mean_val > 0.0: matrix[i,j] = matrix[i,j] / mean_val else: @@ -275,20 +247,18 @@ class AppForm(QMainWindow): for j in range(self.nz): matrix[i,j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, axial_level, j + 1))], - self.scoreBox.currentIndex())[score_loc] - # Calculate relative uncertainty from absolute, if - # requested + self.scoreBox.current())[score_loc] + # Calculate relative uncertainty from absolute, if requested if is_mean == 2: # Take care to handle zero means when normalizing mean_val = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, axial_level, j + 1))], - self.scoreBox.currentIndex())[0] + self.scoreBox.current())[0] if mean_val > 0.0: matrix[i,j] = matrix[i,j] / mean_val else: matrix[i,j] = 0.0 -# print spec_list # Clear the figure self.fig.clear() @@ -296,7 +266,7 @@ class AppForm(QMainWindow): # Make figure, set up color bar self.axes = self.fig.add_subplot(111) cax = self.axes.imshow(matrix.transpose(), vmin=0.0, vmax=matrix.max(), - interpolation="nearest", origin='lower') + interpolation='none', origin='lower') self.fig.colorbar(cax) self.axes.set_xticks([]) @@ -305,100 +275,44 @@ class AppForm(QMainWindow): # Draw canvas self.canvas.draw() + + def get_file_data(self, filename): + # Create StatePoint object and read in data + self.datafile = StatePoint(filename) + self.datafile.read_results() + self.datafile.generate_stdev() - def _update(self): - '''Updates widget to display new relevant comboboxes and figure data - ''' -# print 'Calling _update...' + # Find which tallies are mesh tallies + self.meshTallies = [] + for itally, tally in enumerate(self.datafile.tallies): + if 'mesh' in tally.filters: + self.meshTallies.append(itally) - # get current tally index - tally_id = self.tally_ids[self.tally.currentIndex()] + if not self.meshTallies: + tkMessageBox.showerror("Invalid StatePoint File", + "File does not contain mesh tallies!") + sys.exit(1) + - self.mesh = self.datafile.meshes[ - self.datafile.tallies[tally_id].filters['mesh'].bins[0] - 1] +if __name__ == '__main__': + # Hide root window + root = tk.Tk() + root.withdraw() - self.nx, self.ny, self.nz = self.mesh.dimension + # If no filename given as command-line argument, open file dialog + if len(sys.argv) < 2: + filename = tkFileDialog.askopenfilename(title='Select statepoint file', + initialdir='.') + else: + filename = sys.argv[1] - # Clear axial level combobox - self.axial_level.clear() + if filename: + # Check to make sure file exists + if not os.path.isfile(filename): + tkMessageBox.showerror("File not found", + "Could not find regular file: " + filename) + sys.exit(1) - # Repopulate axial level combobox based on current basis selection - if (self.basis.currentText() == 'xy'): - self.axial_level.addItems([str(i+1) for i in range(self.nz)]) - elif (self.basis.currentText() == 'yz'): - self.axial_level.addItems([str(i+1) for i in range(self.nx)]) - else: - self.axial_level.addItems([str(i+1) for i in range(self.ny)]) - - # Determine maximum value from current tally data set - self.maxvalue = self.datafile.tallies[tally_id].results.max() -# print self.maxvalue - - # Clear and hide old filter labels - for item in self.labelList: - item.clear() - - # Clear and hide old filter boxes - for j in self.labels: - self.boxes[j].clear() - self.boxes[j].setParent(None) - - self.update() - - def populate_boxes(self): -# print 'Calling populate_boxes...' - - # get current tally index - tally_id = self.tally_ids[self.tally.currentIndex()] - - n = 5 - labels = {'cell': 'Cell : ', - 'cellborn': 'Cell born: ', - 'surface': 'Surface: ', - 'material': 'Material: ', - 'universe': 'Universe: '} - - # For each filter in newly-selected tally, name a label and fill the - # relevant combobox with options - for element in self.tally_list[self.tally.currentIndex()]: - nextFilter = self.datafile.tallies[tally_id].filters[element] - if element == 'mesh': - continue - - label = QLabel(self.labels[element]) - self.labelList.append(label) - combobox = self.boxes[element] - self.grid.addWidget(label, n, 0) - self.grid.addWidget(combobox, n, 1) - n += 1 - -# print element - if element in ['cell', 'cellborn', 'surface', 'material', 'universe']: - combobox.addItems([str(i) for i in nextFilter.bins]) -# for i in nextFilter.bins: -# print i - - elif element == 'energyin' or element == 'energyout': - for i in range(nextFilter.length): - text = (str(nextFilter.bins[i]) + ' to ' + - str(nextFilter.bins[i+1])) - combobox.addItem(text) - - self.scoreBox.clear() - for item in self.tally_scores[self.tally.currentIndex()]: - self.scoreBox.addItem(str(item)) - self.grid.addWidget(self.score_label, n, 0) - self.grid.addWidget(self.scoreBox, n, 1) - - - -def main(): - app = QApplication(sys.argv) - form = AppForm(app.arguments()) - if form.all_good: - form.show() - app.exec_() - - -if __name__ == "__main__": - main() + app = MeshPlotter(root, filename) + root.deiconify() + root.mainloop() From 39a97d6be5dd34fc4a87123f89c891412e1e5e54 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 20 Jan 2014 19:49:44 -0500 Subject: [PATCH 18/61] Some PEP8 fixes. --- src/utils/plot_mesh_tally.py | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/utils/plot_mesh_tally.py b/src/utils/plot_mesh_tally.py index d22e0e0b4..fcd661375 100755 --- a/src/utils/plot_mesh_tally.py +++ b/src/utils/plot_mesh_tally.py @@ -5,8 +5,8 @@ import os import sys -from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg as FigureCanvas -from matplotlib.backends.backend_tkagg import NavigationToolbar2TkAgg as NavigationToolbar +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg +from matplotlib.backends.backend_tkagg import NavigationToolbar2TkAgg from matplotlib.figure import Figure import matplotlib.pyplot as plt import numpy as np @@ -22,6 +22,7 @@ import tkFont import tkMessageBox import ttk + class MeshPlotter(tk.Frame): def __init__(self, parent, filename): tk.Frame.__init__(self, parent) @@ -54,11 +55,11 @@ class MeshPlotter(tk.Frame): # Create the Figure and Canvas self.dpi = 100 self.fig = Figure((5.0, 5.0), dpi=self.dpi) - self.canvas = FigureCanvas(self.fig, master=figureFrame) + self.canvas = FigureCanvasTkAgg(self.fig, master=figureFrame) self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) # Create the navigation toolbar, tied to the canvas - self.mpl_toolbar = NavigationToolbar(self.canvas, figureFrame) + self.mpl_toolbar = NavigationToolbar2TkAgg(self.canvas, figureFrame) self.mpl_toolbar.update() self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1) @@ -96,7 +97,7 @@ class MeshPlotter(tk.Frame): labelMean = tk.Label(self.selectFrame, text='Mean/Uncertainty:') labelMean.grid(row=3, column=0, sticky=tk.W) self.meanBox = ttk.Combobox(self.selectFrame, state='readonly') - self.meanBox['values'] = ('Mean', 'Absolute uncertainty', + self.meanBox['values'] = ('Mean', 'Absolute uncertainty', 'Relative uncertainty') self.meanBox.current(0) self.meanBox.grid(row=3, column=1, sticky=tk.W+tk.E) @@ -124,7 +125,8 @@ class MeshPlotter(tk.Frame): selectedTally = self.datafile.tallies[tally_id] # Get mesh for selected tally - self.mesh = self.datafile.meshes[selectedTally.filters['mesh'].bins[0] - 1] + self.mesh = self.datafile.meshes[ + selectedTally.filters['mesh'].bins[0] - 1] # Get mesh dimensions self.nx, self.ny, self.nz = self.mesh.dimension @@ -146,7 +148,7 @@ class MeshPlotter(tk.Frame): return # Update scores - self.scoreBox['values'] = selectedTally.scores # self.tally_scores[self.tallyBox.current()] + self.scoreBox['values'] = selectedTally.scores self.scoreBox.current(0) # Remove any filter labels/comboboxes that exist @@ -209,7 +211,7 @@ class MeshPlotter(tk.Frame): matrix = np.zeros((self.nx, self.ny)) for i in range(self.nx): for j in range(self.ny): - matrix[i,j] = self.datafile.get_value(tally_id, + matrix[i, j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, j + 1, axial_level))], self.scoreBox.current())[score_loc] # Calculate relative uncertainty from absolute, if requested @@ -219,15 +221,15 @@ class MeshPlotter(tk.Frame): spec_list + [('mesh', (i + 1, j + 1, axial_level))], self.scoreBox.current())[0] if mean_val > 0.0: - matrix[i,j] = matrix[i,j] / mean_val + matrix[i, j] = matrix[i, j] / mean_val else: - matrix[i,j] = 0.0 + matrix[i, j] = 0.0 elif text == 'yz': matrix = np.zeros((self.ny, self.nz)) for i in range(self.ny): for j in range(self.nz): - matrix[i,j] = self.datafile.get_value(tally_id, + matrix[i, j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (axial_level, i + 1, j + 1))], self.scoreBox.current())[score_loc] # Calculate relative uncertainty from absolute, if requested @@ -237,15 +239,15 @@ class MeshPlotter(tk.Frame): spec_list + [('mesh', (axial_level, i + 1, j + 1))], self.scoreBox.current())[0] if mean_val > 0.0: - matrix[i,j] = matrix[i,j] / mean_val + matrix[i, j] = matrix[i, j] / mean_val else: - matrix[i,j] = 0.0 + matrix[i, j] = 0.0 else: matrix = np.zeros((self.nx, self.nz)) for i in range(self.nx): for j in range(self.nz): - matrix[i,j] = self.datafile.get_value(tally_id, + matrix[i, j] = self.datafile.get_value(tally_id, spec_list + [('mesh', (i + 1, axial_level, j + 1))], self.scoreBox.current())[score_loc] # Calculate relative uncertainty from absolute, if requested @@ -255,10 +257,9 @@ class MeshPlotter(tk.Frame): spec_list + [('mesh', (i + 1, axial_level, j + 1))], self.scoreBox.current())[0] if mean_val > 0.0: - matrix[i,j] = matrix[i,j] / mean_val + matrix[i, j] = matrix[i, j] / mean_val else: - matrix[i,j] = 0.0 - + matrix[i, j] = 0.0 # Clear the figure self.fig.clear() @@ -275,7 +276,7 @@ class MeshPlotter(tk.Frame): # Draw canvas self.canvas.draw() - + def get_file_data(self, filename): # Create StatePoint object and read in data self.datafile = StatePoint(filename) @@ -292,7 +293,7 @@ class MeshPlotter(tk.Frame): tkMessageBox.showerror("Invalid StatePoint File", "File does not contain mesh tallies!") sys.exit(1) - + if __name__ == '__main__': # Hide root window From 65a25edf63b762a95608f859fbcbd886a19a5453 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Wed, 22 Jan 2014 14:54:10 -0500 Subject: [PATCH 19/61] Reverted to python2 and added None Available text when no Filters are available. --- src/utils/plot_mesh_tally.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils/plot_mesh_tally.py b/src/utils/plot_mesh_tally.py index fcd661375..fb5b8cb83 100755 --- a/src/utils/plot_mesh_tally.py +++ b/src/utils/plot_mesh_tally.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 """Python script to plot tally data generated by OpenMC.""" @@ -182,6 +182,12 @@ class MeshPlotter(tk.Frame): combobox.grid(row=count+6, column=1, sticky=tk.W+tk.E) combobox.bind('<>', self.redraw) + # If There are no filters, leave a 'None available' message + if count == 0: + count += 1 + label = tk.Label(self.selectFrame, text="None Available") + label.grid(row=count+6, column=0, sticky=tk.W) + self.redraw() def redraw(self, event=None): From 7cf22c6c323258f03b758f1c05968160ca6a227c Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 27 Jan 2014 20:36:31 -0500 Subject: [PATCH 20/61] Check for empty datapath in xsdir for conversion. --- src/utils/convert_xsdir.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/utils/convert_xsdir.py b/src/utils/convert_xsdir.py index 32315f1ed..edee1a66c 100755 --- a/src/utils/convert_xsdir.py +++ b/src/utils/convert_xsdir.py @@ -35,8 +35,12 @@ class Xsdir(object): words = line.split() if words: if words[0].lower().startswith('datapath'): - index = line.index('=') - self.datapath = line[index+1:].strip() + if '=' in words[0]: + index = line.index('=') + self.datapath = line[index+1:].strip() + else: + if len(line.strip()) > 8: + self.datapath = line[8:].strip() else: self.f.seek(0) From ad1235db60cf90bd39c38473908d126131659dce Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 27 Jan 2014 20:37:48 -0500 Subject: [PATCH 21/61] Update one publication in documentation. --- docs/source/publications.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/publications.rst b/docs/source/publications.rst index c17e652c7..df7ca639b 100644 --- a/docs/source/publications.rst +++ b/docs/source/publications.rst @@ -48,8 +48,8 @@ Publications - Andrew R. Siegel, Kord Smith, Paul K. Romano, Benoit Forget, and Kyle Felker, "Multi-core performance studies of a Monte Carlo neutron transport code," - *Int. J. High Perform. Comput. Appl.* - (2013). ``_ + *Int. J. High Perform. Comput. Appl.*, **28** (1), 87--96 + (2014). ``_ - Paul K. Romano, Andrew R. Siegel, Benoit Forget, and Kord Smith, "Data decomposition of Monte Carlo particle transport simulations via tally From 854c86aa429d8c99612cec8ada56896fa3ada60a Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Fri, 31 Jan 2014 10:35:23 -0500 Subject: [PATCH 22/61] 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 231a23cc5..4ec358776 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 23/61] 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 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 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 24/61] 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 4ec358776..85ef87d65 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 5d0b98835d2ca1101b4d11a273bfa1ff12530ff7 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 17 Feb 2014 17:30:02 -0500 Subject: [PATCH 25/61] 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 000000000..2e421d7ab --- /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 0f943d684..c9279add6 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 26/61] 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 164b0151b..ff33d9a6c 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 27/61] Updated data/readme.rst. --- data/readme.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/readme.rst b/data/readme.rst index d975723b5..03685491d 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 b102b71809a3f9baf62046ef8e1bd291bedad8e5 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 18 Feb 2014 17:55:40 -0500 Subject: [PATCH 28/61] Added HDF5 files to .gitignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9f720f989..2dae450d0 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 29/61] 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 c9279add6..0fd1a9889 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 30/61] 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 0fd1a9889..2e76401a4 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 31/61] 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 28ba30c23..362197439 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 32/61] 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 00a65f913..000000000 --- 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 33/61] 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 748df0351..00a65f913 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 34/61] 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 000000000..d23b166a2 --- /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 35/61] 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 a4387405b..9b2e3185f 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 36/61] 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 d0b3a55e0..f4c32a893 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 f2b97af34..ad94d7645 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 5fee23d67..c405186fb 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 9b2e3185f..0eaf1198c 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 37/61] 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 85ef87d65..8e83b2ee9 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 38/61] 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 000000000..612e46132 --- /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 000000000..1f85510e0 --- /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 000000000..8ff10971c --- /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 000000000..ae37050f7 --- /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 000000000..98abc5acf --- /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 000000000..ede988be5 --- /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 39/61] 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 362197439..6aac10613 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 4cc8369dce9ff44d3007ef747979ca021cf0463d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 4 Mar 2014 17:53:25 -0500 Subject: [PATCH 40/61] 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 9164fa594..d649b1403 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 000000000..1471e1c8e --- /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 41/61] 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 362197439..106f7ae92 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 42/61] 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 2cee56987..ccbfabebe 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 ff33d9a6c..2084878b7 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 4835a4f632f9a379ef40cfb96bc2beaeffb06f6e Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Tue, 4 Mar 2014 21:10:42 -0500 Subject: [PATCH 43/61] 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 8a4b22e90..52869a281 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 046d748be..e31e7dea9 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 44/61] 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 d23b166a2..0b792f9c7 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 45/61] 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 49975c218..0669a99d0 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 46/61] 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 9fffea5d3..03ad982cb 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 36c5c7a0d..5056db472 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 c405186fb..4e9b12d24 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 98abc5acf..17d4ee2e2 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 47/61] 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 05327153d..909146014 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 430abee8b..0bfb66716 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 48/61] 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 e31e7dea9..4cf62c7c1 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 0bfb66716..d64ad0966 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 49/61] 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 0e4942e35..fb6a8b153 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 50/61] 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 fb6a8b153..58699a2a2 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 51/61] 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 03ad982cb..fffd4a54e 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 52/61] 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 d64ad0966..47809d472 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 53/61] 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 0b792f9c7..288c81025 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 54/61] 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 8e83b2ee9..2d3f74ec9 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 55/61] 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 98abc5acf..17d4ee2e2 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 56/61] 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 ede988be5..a4b2a4e2d 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 57/61] 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 a4b2a4e2d..9752d89b4 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 58/61] 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 9752d89b4..a1b4986e5 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 59/61] 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 a1b4986e5..85a33c031 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 60/61] 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 1471e1c8e..174064e35 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 61/61] 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 579bf26fb..000000000 --- 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