From 35a689c3550c1a38abd3388606f834c0ceb3026a Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 12 Nov 2015 10:52:56 -0600 Subject: [PATCH 01/61] Started refactor angle and energy distributions. --- src/angle_distribution.F90 | 55 +++++ src/energy_distribution.F90 | 407 +++++++++++++++++++++++++++++++++ src/secondary_correlated.F90 | 145 ++++++++++++ src/secondary_header.F90 | 55 +++++ src/secondary_kalbach.F90 | 163 +++++++++++++ src/secondary_uncorrelated.F90 | 29 +++ 6 files changed, 854 insertions(+) create mode 100644 src/angle_distribution.F90 create mode 100644 src/energy_distribution.F90 create mode 100644 src/secondary_correlated.F90 create mode 100644 src/secondary_header.F90 create mode 100644 src/secondary_kalbach.F90 create mode 100644 src/secondary_uncorrelated.F90 diff --git a/src/angle_distribution.F90 b/src/angle_distribution.F90 new file mode 100644 index 0000000000..448bafd8f7 --- /dev/null +++ b/src/angle_distribution.F90 @@ -0,0 +1,55 @@ +module angle_distribution + + use constants, only: ZERO, ONE + use distribution_univariate, only: DistributionContainer + use random_lcg, only: prn + use search, only: binary_search + + implicit none + private + + type, public :: AngleDistribution + real(8), allocatable :: energy(:) + type(DistributionContainer), allocatable :: distribution(:) + contains + procedure :: sample => angle_sample + end type AngleDistribution + +contains + + function angle_sample(this, E) result(mu) + class(AngleDistribution), intent(in) :: this + real(8), intent(in) :: E + real(8) :: mu + + integer :: i + integer :: n + real(8) :: r + + ! determine number of incoming energies + n = size(this%energy) + + ! find energy bin and calculate interpolation factor -- if the energy is + ! outside the range of the tabulated energies, choose the first or last bins + if (E < this%energy(1)) then + i = 1 + r = ZERO + elseif (E > this%energy(n)) then + i = n - 1 + r = ONE + else + i = binary_search(this%energy, n, E) + r = (E - this%energy(i))/(this%energy(i+1) - this%energy(i)) + end if + + ! Sample between the ith and (i+1)th bin + if (r > prn()) i = i + 1 + + ! Sample i-th distribution + mu = this%distribution(i)%obj%sample() + + ! Make sure mu is in range [-1,1] + if (abs(mu) > ONE) mu = sign(ONE, mu) + end function angle_sample + +end module angle_distribution diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 new file mode 100644 index 0000000000..2a616e0f1f --- /dev/null +++ b/src/energy_distribution.F90 @@ -0,0 +1,407 @@ +module energy_distribution + + use constants, only: ZERO, ONE, TWO, PI, HISTOGRAM, LINEAR_LINEAR + use endf_header, only: Tab1 + use error, only: fatal_error + use interpolation, only: interpolate_tab1 + use math, only: maxwell_spectrum, watt_spectrum + use random_lcg, only: prn + use search, only: binary_search + +!=============================================================================== +! ENERGYDISTRIBUTION (abstract) defines an energy distribution that is a +! function of the incident energy of a projectile +!=============================================================================== + + type, abstract :: EnergyDistribution + contains + procedure(iSampleEnergy), deferred :: sample + end type EnergyDistribution + + abstract interface + function iSampleEnergy(this, E_in) result(E_out) + import EnergyDistribution + class(EnergyDistribution), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + end function iSampleEnergy + end interface + +!=============================================================================== +! Derived classes +!=============================================================================== + + type Array1D + real(8), allocatable :: data(:) + end type Array1D + + type, extends(EnergyDistribution) :: TabularEquiprobable + integer :: n_region + integer, allocatable :: breakpoints(:) + integer, allocatable :: interpolation(:) + real(8), allocatable :: energy_in(:) + real(8), allocatable :: energy_out(:,:) + contains + procedure :: sample => equiprobable_sample + end type TabularEquiprobable + + type, extends(EnergyDistribution) :: LevelInelastic + real(8) :: threshold + real(8) :: mass_ratio + contains + procedure :: sample => level_inelastic_sample + end type LevelInelastic + + type CTTable + integer :: interpolation + integer :: n_discrete + real(8), allocatable :: e_out(:) + real(8), allocatable :: p(:) + real(8), allocatable :: c(:) + end type CTTable + + type, extends(EnergyDistribution) :: ContinuousTabular + integer :: n_region + integer, allocatable :: breakpoints(:) + integer, allocatable :: interpolation(:) + real(8), allocatable :: energy_in(:) + type(CTTable), allocatable :: energy_out(:) + contains + procedure :: sample => continuous_sample + end type ContinuousTabular + + type, extends(EnergyDistribution) :: MaxwellEnergy + type(Tab1) :: theta + real(8) :: u + contains + procedure :: sample => maxwellenergy_sample + end type MaxwellEnergy + + type, extends(EnergyDistribution) :: Evaporation + type(Tab1) :: theta + real(8) :: u + contains + procedure :: sample => evaporation_sample + end type Evaporation + + type, extends(EnergyDistribution) :: WattEnergy + type(Tab1) :: a + type(Tab1) :: b + real(8) :: u + contains + procedure :: sample => watt_sample + end type WattEnergy + + type, extends(EnergyDistribution) :: NBodyPhaseSpace + integer :: n_bodies + real(8) :: mass_ratio + real(8) :: A + real(8) :: Q + contains + procedure :: sample => nbody_sample + end type NBodyPhaseSpace + +contains + + function equiprobable_sample(this, E_in) result(E_out) + class(TabularEquiprobable), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + integer :: i, k, l + integer :: n_energy_in + integer :: n_energy_out + real(8) :: r ! interpolation factor on incoming energy + real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i + real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 + real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 + real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l + + ! Determine number of incoming/outgoing energies + n_energy_in = size(this%energy_in) + n_energy_out = size(this%energy_out, 1) + + ! read number of interpolation regions, incoming energies, and outgoing + ! energies + ! TODO: Move this error to input + if (this%n_region > 0) then + call fatal_error("Multiple interpolation regions not supported while & + &attempting to sample equiprobable energy bins.") + end if + + ! determine index on incoming energy grid and interpolation factor + i = binary_search(this%energy_in, size(this%energy_in), E_in) + r = (E_in - this%energy_in(i)) / & + (this%energy_in(i+1) - this%energy_in(i)) + + ! Sample outgoing energy bin + k = 1 + int(n_energy_out * prn()) + + ! Determine E_1 and E_K + E_i_1 = this%energy_out(1, i) + E_i_K = this%energy_out(n_energy_out, i) + + E_i1_1 = this%energy_out(1, i+1) + E_i1_K = this%energy_out(n_energy_out, i+1) + + E_1 = E_i_1 + r*(E_i1_1 - E_i_1) + E_K = E_i_K + r*(E_i1_K - E_i_K) + + ! Randomly select between the outgoing table for incoming energy E_i and + ! E_(i+1) + if (prn() < r) then + l = i + 1 + else + l = i + end if + + ! Determine E_l_k and E_l_k+1 + E_l_k = this%energy_out(k, l) + E_l_k1 = this%energy_out(k+1, l) + + ! Determine E' (denoted here as E_out) + E_out = E_l_k + prn()*(E_l_k1 - E_l_k) + + ! Now interpolate between incident energy bins i and i + 1 + if (l == i) then + E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) + else + E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) + end if + end function equiprobable_sample + + function level_inelastic_sample(this, E_in) result(E_out) + class(LevelInelastic), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + E_out = this%mass_ratio*(E_in - this%threshold) + end function level_inelastic_sample + + function continuous_sample(this, E_in) result(E_out) + class(ContinuousTabular), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + integer :: i, k, l + integer :: n_energy_in + integer :: n_energy_out + real(8) :: r ! interpolation factor on incoming energy + real(8) :: r1 ! random number on [0,1) + real(8) :: frac ! interpolation factor on outgoing energy + real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i + real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 + real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 + real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l + real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l + real(8) :: c_k, c_k1 ! cumulative probability + logical :: histogram_interp + + ! read number of interpolation regions and incoming energies + if (this%n_region == 1) then + histogram_interp = (this%interpolation(1) == 1) + else if (this%n_region > 1) then + call fatal_error("Multiple interpolation regions not supported while & + &attempting to sample continuous tabular distribution.") + else + histogram_interp = .false. + end if + + ! find energy bin and calculate interpolation factor -- if the energy is + ! outside the range of the tabulated energies, choose the first or last bins + n_energy_in = size(this%energy_in) + if (E_in < this%energy_in(1)) then + i = 1 + r = ZERO + elseif (E_in > this%energy_in(n_energy_in)) then + i = n_energy_in - 1 + r = ONE + else + i = binary_search(this%energy_in, n_energy_in, E_in) + r = (E_in - this%energy_in(i)) / & + (this%energy_in(i+1) - this%energy_in(i)) + end if + + ! Sample between the ith and (i+1)th bin + if (histogram_interp) then + l = i + else + if (r > prn()) then + l = i + 1 + else + l = i + end if + end if + + ! interpolation for energy E1 and EK + n_energy_out = size(this%energy_out(i)%e_out) + E_i_1 = this%energy_out(i)%e_out(1) + E_i_K = this%energy_out(i)%e_out(n_energy_out) + + n_energy_out = size(this%energy_out(i+1)%e_out) + E_i1_1 = this%energy_out(i+1)%e_out(1) + E_i1_K = this%energy_out(i+1)%e_out(n_energy_out) + + E_1 = E_i_1 + r*(E_i1_1 - E_i_1) + E_K = E_i_K + r*(E_i1_K - E_i_K) + + ! TODO: Write error at initizliation + if (this%energy_out(l)%n_discrete > 0) then + ! discrete lines present + call fatal_error("Discrete lines in continuous tabular distributed not & + &yet supported") + end if + + ! determine outgoing energy bin + n_energy_out = size(this%energy_out(l)%e_out) + r1 = prn() + c_k = this%energy_out(l)%c(1) + do k = 1, n_energy_out - 1 + c_k1 = this%energy_out(l)%c(k+1) + if (r1 < c_k1) exit + c_k = c_k1 + end do + + ! check to make sure k is <= NP - 1 + k = min(k, n_energy_out - 1) + + E_l_k = this%energy_out(l)%e_out(k) + p_l_k = this%energy_out(l)%p(k) + if (this%energy_out(l)%interpolation == HISTOGRAM) then + ! Histogram interpolation + if (p_l_k > ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + end if + + elseif (this%energy_out(l)%interpolation == LINEAR_LINEAR) then + ! Linear-linear interpolation + E_l_k1 = this%energy_out(l)%e_out(k+1) + p_l_k1 = this%energy_out(l)%p(k+1) + + frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) + if (frac == ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & + TWO*frac*(r1 - c_k))) - p_l_k)/frac + end if + end if + + ! Now interpolate between incident energy bins i and i + 1 + if (.not. histogram_interp) then + if (l == i) then + E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) + else + E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) + end if + end if + end function continuous_sample + + function maxwellenergy_sample(this, E_in) result(E_out) + class(MaxwellEnergy), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + real(8) :: theta + + ! Get temperature corresponding to incoming energy + theta = interpolate_tab1(this%theta, E_in) + + do + ! sample maxwell fission spectrum + E_out = maxwell_spectrum(theta) + + ! accept energy based on restriction energy + if (E_out <= E_in - this%u) exit + end do + end function maxwellenergy_sample + + function evaporation_sample(this, E_in) result(E_out) + class(Evaporation), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + real(8) :: theta + real(8) :: x, y, v + + ! Get temperature corresponding to incoming energy + theta = interpolate_tab1(this%theta, E_in) + + y = (E_in - this%U)/theta + v = 1 - exp(-y) + + ! sample outgoing energy based on evaporation spectrum probability + ! density function + do + x = -log((ONE - v*prn())*(ONE - v*prn())) + if (x <= y) exit + end do + + E_out = x*theta + end function evaporation_sample + + function watt_sample(this, E_in) result(E_out) + class(WattEnergy), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + real(8) :: a, b + + ! determine Watt parameter 'a' from tabulated function + a = interpolate_tab1(this%a, E_in) + + ! determine Watt parameter 'b' from tabulated function + b = interpolate_tab1(this%b, E_in) + + do + ! Sample energy-dependent Watt fission spectrum + E_out = watt_spectrum(a, b) + + ! accept energy based on restriction energy + if (E_out <= E_in - this%u) exit + end do + end function watt_sample + + function nbody_sample(this, E_in) result(E_out) + class(NBodyPhaseSpace), intent(in) :: this + real(8), intent(in) :: E_in + real(8) :: E_out + + real(8) :: Ap + real(8) :: E_max + real(8) :: x, y, v + real(8) :: r1, r2, r3, r4, r5, r6 + + ! determine E_max parameter + Ap = this%mass_ratio + E_max = (Ap - ONE)/Ap * (this%A/(this%A + ONE)*E_in + this%Q) + + ! x is essentially a Maxwellian distribution + x = maxwell_spectrum(ONE) + + select case (this%n_bodies) + case (3) + y = maxwell_spectrum(ONE) + case (4) + r1 = prn() + r2 = prn() + r3 = prn() + y = -log(r1*r2*r3) + case (5) + r1 = prn() + r2 = prn() + r3 = prn() + r4 = prn() + r5 = prn() + r6 = prn() + y = -log(r1*r2*r3*r4) - log(r5) * cos(PI/TWO*r6)**2 + end select + + ! now determine v and E_out + v = x/(x+y) + E_out = E_max * v + end function nbody_sample + +end module energy_distribution diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 new file mode 100644 index 0000000000..c3c82b588d --- /dev/null +++ b/src/secondary_correlated.F90 @@ -0,0 +1,145 @@ +module secondary_correlated + + use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR + use distribution_univariate, only: Tabular + use error, only: fatal_error + use secondary_header, only: SecondaryDistribution + use random_lcg, only: prn + use search, only: binary_search + + type AngleEnergyTable + type(Tabular) :: energy + type(Tabular), allocatable :: angle(:) + end type AngleEnergyTable + + type, extends(SecondaryDistribution) :: CorrelatedAngleEnergy + integer :: n_region + integer, allocatable :: breakpoints(:) + integer, allocatable :: interpolation(:) + real(8), allocatable :: energy_in(:) + type(AngleEnergyTable), allocatable :: table(:) + contains + procedure :: sample => correlated_sample + end type CorrelatedAngleEnergy + +contains + + subroutine correlated_sample(this, E_in, E_out, mu) + class(CorrelatedAngleEnergy), intent(in) :: this + real(8), intent(in) :: E_in + real(8), intent(out) :: E_out + real(8), intent(out) :: mu + + integer :: i, k, l + integer :: n_energy_in + integer :: n_energy_out + real(8) :: r ! interpolation factor on incoming energy + real(8) :: r1 ! random number on [0,1) + real(8) :: frac ! interpolation factor on outgoing energy + real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i + real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 + real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 + real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l + real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l + real(8) :: c_k, c_k1 ! cumulative probability + + ! TODO: Write error during initialization + if (this%n_region > 1) then + call fatal_error("Multiple interpolation regions not supported while & + &attempting to sample Kalbach-Mann distribution.") + end if + + ! find energy bin and calculate interpolation factor -- if the energy is + ! outside the range of the tabulated energies, choose the first or last bins + n_energy_in = size(this%energy_in) + if (E_in < this%energy_in(1)) then + i = 1 + r = ZERO + elseif (E_in > this%energy_in(n_energy_in)) then + i = n_energy_in - 1 + r = ONE + else + i = binary_search(this%energy_in, n_energy_in, E_in) + r = (E_in - this%energy_in(i)) / & + (this%energy_in(i+1) - this%energy_in(i)) + end if + + ! Sample between the ith and (i+1)th bin + if (r > prn()) then + l = i + 1 + else + l = i + end if + + ! interpolation for energy E1 and EK + n_energy_out = size(this%table(i)%energy%x) + E_i_1 = this%table(i)%energy%x(1) + E_i_K = this%table(i)%energy%x(n_energy_out) + + n_energy_out = size(this%table(i+1)%energy%x) + E_i1_1 = this%table(i+1)%energy%x(1) + E_i1_K = this%table(i+1)%energy%x(n_energy_out) + + E_1 = E_i_1 + r*(E_i1_1 - E_i_1) + E_K = E_i_K + r*(E_i1_K - E_i_K) + +!!$ ! TODO: Write error at initizliation +!!$ if (this%table(l)%n_discrete > 0) then +!!$ ! discrete lines present +!!$ call fatal_error("Discrete lines in continuous tabular distributed not & +!!$ &yet supported") +!!$ end if + + ! determine outgoing energy bin + n_energy_out = size(this%table(l)%energy%x) + r1 = prn() + c_k = this%table(l)%energy%c(1) + do k = 1, n_energy_out - 1 + c_k1 = this%table(l)%energy%c(k+1) + if (r1 < c_k1) exit + c_k = c_k1 + end do + + ! check to make sure k is <= NP - 1 + k = min(k, n_energy_out - 1) + + E_l_k = this%table(l)%energy%x(k) + p_l_k = this%table(l)%energy%p(k) + if (this%table(l)%energy%interpolation == HISTOGRAM) then + ! Histogram interpolation + if (p_l_k > ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + end if + + elseif (this%table(l)%energy%interpolation == LINEAR_LINEAR) then + ! Linear-linear interpolation + E_l_k1 = this%table(l)%energy%x(k+1) + p_l_k1 = this%table(l)%energy%p(k+1) + + frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) + if (frac == ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & + TWO*frac*(r1 - c_k))) - p_l_k)/frac + end if + end if + + ! Now interpolate between incident energy bins i and i + 1 + if (l == i) then + E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) + else + E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) + end if + + ! Find correlated angular distribution for closest outgoing energy bin + if (r1 - c_k < c_k1 - r1) then + mu = this%table(l)%angle(k)%sample() + else + mu = this%table(l)%angle(k + 1)%sample() + end if + end subroutine correlated_sample + +end module secondary_correlated diff --git a/src/secondary_header.F90 b/src/secondary_header.F90 new file mode 100644 index 0000000000..1f8ad3aed1 --- /dev/null +++ b/src/secondary_header.F90 @@ -0,0 +1,55 @@ +module secondary_header + + use endf_header, only: Tab1 + use interpolation, only: interpolate_tab1 + use random_lcg, only: prn + + type, abstract :: AngleEnergy + contains + procedure(iSampleAngleEnergy), deferred :: sample + end type AngleEnergy + + type :: AngleEnergyContainer + class(AngleEnergy), allocatable :: obj + end type AngleEnergyContainer + + type :: SecondaryDistribution + type(Tab1), allocatable :: applicability(:) + type(AngleEnergyContainer), allocatable :: distribution(:) + contains + procedure :: sample => secondary_sample + end type SecondaryDistribution + + abstract interface + subroutine iSampleAngleEnergy(this, E_in, E_out, mu) + import AngleEnergy + class(AngleEnergy), intent(in) :: this + real(8), intent(in) :: E_in + real(8), intent(out) :: E_out + real(8), intent(out) :: mu + end subroutine iSampleAngleEnergy + end interface + +contains + + subroutine secondary_sample(this, E_in, E_out, mu) + class(SecondaryDistribution), intent(in) :: this + real(8), intent(in) :: E_in + real(8), intent(out) :: E_out + real(8), intent(out) :: mu + + real(8) :: p_valid + + do i = 1, size(this%applicability) + ! Determine probability that i-th energy distribution is sampled + p_valid = interpolate_tab1(this%applicability(i), E_in) + + ! If i-th distribution is sampled, sample energy from the distribution + if (prn() <= p_valid) then + call this%distribution(i)%obj%sample(E_in, E_out, mu) + exit + end if + end do + end subroutine secondary_sample + +end module secondary_header diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 new file mode 100644 index 0000000000..d0d2f32bf2 --- /dev/null +++ b/src/secondary_kalbach.F90 @@ -0,0 +1,163 @@ +module secondary_kalbach + + use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR + use error, only: fatal_error + use secondary_header, only: SecondaryDistribution + use random_lcg, only: prn + use search, only: binary_search + + type KalbachMannTable + integer :: n_discrete + integer :: interpolation + real(8), allocatable :: e_out(:) + real(8), allocatable :: p(:) + real(8), allocatable :: c(:) + real(8), allocatable :: r(:) + real(8), allocatable :: a(:) + end type KalbachMannTable + + type, extends(SecondaryDistribution) :: KalbachMann + integer :: n_region + integer, allocatable :: breakpoints(:) + integer, allocatable :: interpolation(:) + real(8), allocatable :: energy_in(:) + type(KalbachMannTable), allocatable :: table(:) + contains + procedure :: sample => kalbachmann_sample + end type KalbachMann + +contains + + subroutine kalbachmann_sample(this, E_in, E_out, mu) + class(KalbachMann), intent(in) :: this + real(8), intent(in) :: E_in + real(8), intent(out) :: E_out + real(8), intent(out) :: mu + + integer :: i, k, l + integer :: n_energy_in + integer :: n_energy_out + real(8) :: r ! interpolation factor on incoming energy + real(8) :: r1 ! random number on [0,1) + real(8) :: frac ! interpolation factor on outgoing energy + real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i + real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 + real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 + real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l + real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l + real(8) :: c_k, c_k1 ! cumulative probability + real(8) :: km_r, km_a ! Kalbach-Mann parameters + real(8) :: T + + ! TODO: Write error during initialization + if (this%n_region > 1) then + call fatal_error("Multiple interpolation regions not supported while & + &attempting to sample Kalbach-Mann distribution.") + end if + + ! find energy bin and calculate interpolation factor -- if the energy is + ! outside the range of the tabulated energies, choose the first or last bins + n_energy_in = size(this%energy_in) + if (E_in < this%energy_in(1)) then + i = 1 + r = ZERO + elseif (E_in > this%energy_in(n_energy_in)) then + i = n_energy_in - 1 + r = ONE + else + i = binary_search(this%energy_in, n_energy_in, E_in) + r = (E_in - this%energy_in(i)) / & + (this%energy_in(i+1) - this%energy_in(i)) + end if + + ! Sample between the ith and (i+1)th bin + if (r > prn()) then + l = i + 1 + else + l = i + end if + + ! interpolation for energy E1 and EK + n_energy_out = size(this%table(i)%e_out) + E_i_1 = this%table(i)%e_out(1) + E_i_K = this%table(i)%e_out(n_energy_out) + + n_energy_out = size(this%table(i+1)%e_out) + E_i1_1 = this%table(i+1)%e_out(1) + E_i1_K = this%table(i+1)%e_out(n_energy_out) + + E_1 = E_i_1 + r*(E_i1_1 - E_i_1) + E_K = E_i_K + r*(E_i1_K - E_i_K) + + ! TODO: Write error at initizliation + if (this%table(l)%n_discrete > 0) then + ! discrete lines present + call fatal_error("Discrete lines in continuous tabular distributed not & + &yet supported") + end if + + ! determine outgoing energy bin + n_energy_out = size(this%table(l)%e_out) + r1 = prn() + c_k = this%table(l)%c(1) + do k = 1, n_energy_out - 1 + c_k1 = this%table(l)%c(k+1) + if (r1 < c_k1) exit + c_k = c_k1 + end do + + ! check to make sure k is <= NP - 1 + k = min(k, n_energy_out - 1) + + E_l_k = this%table(l)%e_out(k) + p_l_k = this%table(l)%p(k) + if (this%table(l)%interpolation == HISTOGRAM) then + ! Histogram interpolation + if (p_l_k > ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + end if + + ! Determine Kalbach-Mann parameters + km_r = this%table(l)%r(k) + km_a = this%table(l)%a(k) + + elseif (this%table(l)%interpolation == LINEAR_LINEAR) then + ! Linear-linear interpolation + E_l_k1 = this%table(l)%e_out(k+1) + p_l_k1 = this%table(l)%p(k+1) + + frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) + if (frac == ZERO) then + E_out = E_l_k + (r1 - c_k)/p_l_k + else + E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & + TWO*frac*(r1 - c_k))) - p_l_k)/frac + end if + + ! Determine Kalbach-Mann parameters + km_r = this%table(l)%r(k) + (E_out - E_l_k)/(E_l_k1 - E_l_k) * & + (this%table(l)%r(k+1) - this%table(l)%r(k)) + km_a = this%table(l)%a(k) + (E_out - E_l_k)/(E_l_k1 - E_l_k) * & + (this%table(l)%a(k+1) - this%table(l)%a(k)) + end if + + ! Now interpolate between incident energy bins i and i + 1 + if (l == i) then + E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) + else + E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) + end if + + ! Sampled correlated angle from Kalbach-Mann parameters + if (prn() > km_r) then + T = (TWO*prn() - ONE) * sinh(km_a) + mu = log(T + sqrt(T*T + ONE))/km_a + else + r1 = prn() + mu = log(r1*exp(km_a) + (ONE - r1)*exp(-km_a))/km_a + end if + end subroutine kalbachmann_sample + +end module secondary_kalbach diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 new file mode 100644 index 0000000000..7d0046aa4f --- /dev/null +++ b/src/secondary_uncorrelated.F90 @@ -0,0 +1,29 @@ +module secondary_uncorrelated + + use angle_distribution, only: AngleDistribution + use energy_distribution, only: EnergyDistribution + use secondary_header, only: SecondaryDistribution + + type, extends(SecondaryDistribution) :: UncorrelatedAngleEnergy + type(AngleDistribution) :: angle + class(EnergyDistribution), allocatable :: energy + contains + procedure :: sample => uncorrelated_sample + end type UncorrelatedAngleEnergy + +contains + + subroutine uncorrelated_sample(this, E_in, E_out, mu) + class(UncorrelatedAngleEnergy), intent(in) :: this + real(8), intent(in) :: E_in + real(8), intent(out) :: E_out + real(8), intent(out) :: mu + + ! Sample cosine of scattering angle + mu = this%angle%sample(E_in) + + ! Sample outgoing energy + E_out = this%energy%sample(E_in) + end subroutine uncorrelated_sample + +end module secondary_uncorrelated From dcb675fbacd20c562410088af72db2c7e3798471 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 17 Nov 2015 15:30:18 -0600 Subject: [PATCH 02/61] Full use of new object-oriented secondary angle-energy distributions --- src/ace.F90 | 764 ++++++++++++++----------- src/ace_header.F90 | 77 +-- src/distribution_univariate.F90 | 29 +- src/endf_header.F90 | 34 ++ src/energy_distribution.F90 | 27 +- src/interpolation.F90 | 1 - src/output.F90 | 31 +- src/physics.F90 | 962 +------------------------------- src/search.F90 | 1 - src/secondary_correlated.F90 | 62 +- src/secondary_header.F90 | 19 +- src/secondary_kalbach.F90 | 18 +- src/secondary_uncorrelated.F90 | 13 +- 13 files changed, 581 insertions(+), 1457 deletions(-) diff --git a/src/ace.F90 b/src/ace.F90 index e97338b558..1407a4b132 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -1,17 +1,23 @@ module ace - use ace_header, only: Nuclide, Reaction, SAlphaBeta, XsListing, & - DistEnergy + use ace_header, only: Nuclide, Reaction, SAlphaBeta, XsListing use constants - use endf, only: reaction_name, is_fission, is_disappearance - use error, only: fatal_error, warning - use fission, only: nu_total + use distribution_univariate, only: Uniform, Equiprobable, Tabular + use endf, only: reaction_name, is_fission, is_disappearance + use energy_distribution, only: TabularEquiprobable, LevelInelastic, & + ContinuousTabular, MaxwellEnergy, Evaporation, WattEnergy, NBodyPhaseSpace + use error, only: fatal_error, warning + use fission, only: nu_total use global - use list_header, only: ListInt - use material_header, only: Material - use output, only: write_message - use set_header, only: SetChar - use string, only: to_str, to_lower + use list_header, only: ListInt + use material_header, only: Material + use output, only: write_message + use set_header, only: SetChar + use secondary_header, only: AngleEnergy + use secondary_correlated, only: CorrelatedAngleEnergy + use secondary_kalbach, only: KalbachMann + use secondary_uncorrelated, only: UncorrelatedAngleEnergy + use string, only: to_str, to_lower implicit none @@ -372,8 +378,8 @@ contains else call read_nu_data(nuc) call read_reactions(nuc) - call read_angular_dist(nuc) call read_energy_dist(nuc) + call read_angular_dist(nuc) call read_unr_res(nuc) end if @@ -516,9 +522,10 @@ contains integer :: LED ! location of energy distribution locators integer :: LDIS ! location of all energy distributions integer :: LOCC ! location of energy distributions for given MT + integer :: LAW + integer :: IDAT integer :: lc ! locator integer :: length ! length of data to allocate - type(DistEnergy), pointer :: edist JXS2 = JXS(2) JXS24 = JXS(24) @@ -661,11 +668,15 @@ contains ! Loop over all delayed neutron precursor groups do i = 1, NPCR ! find location of energy distribution data - LOCC = int(XSS(LED + i - 1)) + LOCC = nint(XSS(LED + i - 1)) + + ! Determine law and location of data + LAW = nint(XSS(LDIS + LOCC)) + IDAT = nint(XSS(LDIS + LOCC + 1)) ! read energy distribution data - edist => nuc % nu_d_edist(i) - call get_energy_dist(edist, LOCC, .true.) + call get_energy_dist(nuc%nu_d_edist(i)%obj, LAW, LDIS, IDAT, & + ZERO, ZERO) end do ! ======================================================================= @@ -738,8 +749,8 @@ contains rxn%multiplicity = 1 rxn%threshold = 1 rxn%scatter_in_cm = .true. - rxn%has_angle_dist = .false. - rxn%has_energy_dist = .false. + allocate(rxn%secondary%distribution(1)) + allocate(UncorrelatedAngleEnergy :: rxn%secondary%distribution(1)%obj) end associate ! Add contribution of elastic scattering to total cross section @@ -754,10 +765,6 @@ contains do i = 1, NMT associate (rxn => nuc % reactions(i+1)) - ! set defaults - rxn % has_angle_dist = .false. - rxn % has_energy_dist = .false. - ! read MT number, Q-value, and neutrons produced rxn % MT = int(XSS(LMT + i - 1)) rxn % Q_value = XSS(JXS4 + i - 1) @@ -887,86 +894,101 @@ contains subroutine read_angular_dist(nuc) type(Nuclide), intent(inout) :: nuc - integer :: JXS8 ! location of angular distribution locators - integer :: JXS9 ! location of angular distributions integer :: LOCB ! location of angular distribution for given MT integer :: NE ! number of incoming energies integer :: NP ! number of points for cosine distribution - integer :: LC ! locator integer :: i ! index in reactions array integer :: j ! index over incoming energies - integer :: length ! length of data array to allocate - - JXS8 = JXS(8) - JXS9 = JXS(9) + integer :: k ! index over energy distributions + integer :: interp + integer, allocatable :: LC(:) ! locator + real(8), allocatable :: x(:) + real(8), allocatable :: p(:) ! loop over all reactions with secondary neutrons -- NXS(5) does not include ! elastic scattering do i = 1, NXS(5) + 1 associate (rxn => nuc%reactions(i)) - ! find location of angular distribution - LOCB = int(XSS(JXS8 + i - 1)) - if (LOCB == -1) then - ! Angular distribution data are specified through LAWi = 44 in the DLW - ! block - cycle - elseif (LOCB == 0) then - ! No angular distribution data are given for this reaction, isotropic - ! scattering is assumed (in CM if TY < 0 and in LAB if TY > 0) - cycle - end if - rxn % has_angle_dist = .true. + LOCB = int(XSS(JXS(8) + i - 1)) - ! allocate space for incoming energies and locations - NE = int(XSS(JXS9 + LOCB - 1)) - rxn % adist % n_energy = NE - allocate(rxn % adist % energy(NE)) - allocate(rxn % adist % type(NE)) - allocate(rxn % adist % location(NE)) + ! Angular distribution given as part of a correlated angle-energy distribution + if (LOCB == -1) cycle - ! read incoming energy grid and location of nucs - XSS_index = JXS9 + LOCB - rxn % adist % energy = get_real(NE) - rxn % adist % location = get_int(NE) + ! No angular distribution data are given for this reaction, isotropic + ! scattering is assumed (in CM if TY < 0 and in LAB if TY > 0) + if (LOCB == 0) cycle - ! determine dize of data block - length = 0 - do j = 1, NE - LC = rxn % adist % location(j) - if (LC == 0) then - ! isotropic - rxn % adist % type(j) = ANGLE_ISOTROPIC - elseif (LC > 0) then - ! 32 equiprobable bins - rxn % adist % type(j) = ANGLE_32_EQUI - length = length + 33 - elseif (LC < 0) then - ! tabular distribution - rxn % adist % type(j) = ANGLE_TABULAR - NP = int(XSS(JXS9 + abs(LC))) - length = length + 2 + 3*NP - end if - end do + ! Loop over each separate energy distribution. Even though there is only + ! "one" angular distribution, it is repeated as many times as there are + ! energy distributions for this reaction since the + ! UncorrelatedAngleEnergy type holds one angle and energy distribution. + do k = 1, size(rxn%secondary%distribution) + select type (aedist => rxn%secondary%distribution(k)%obj) + type is (UncorrelatedAngleEnergy) + ! allocate space for incoming energies and locations + NE = int(XSS(JXS(9) + LOCB - 1)) + allocate(aedist%angle%energy(NE)) + allocate(aedist%angle%distribution(NE)) + allocate(LC(NE)) - ! allocate angular distribution data and read - allocate(rxn % adist % data(length)) + ! read incoming energy grid and location of nucs + XSS_index = JXS(9) + LOCB + aedist%angle%energy(:) = get_real(NE) + LC(:) = get_int(NE) - ! read angular distribution -- currently this does not actually parse the - ! angular distribution tables for each incoming energy, that must be done - ! on-the-fly - XSS_index = JXS9 + LOCB + 2 * NE - rxn % adist % data = get_real(length) + ! determine dize of data block + do j = 1, NE + if (LC(j) == 0) then + ! isotropic + allocate(Uniform :: aedist%angle%distribution(j)%obj) + select type (adist => aedist%angle%distribution(j)%obj) + type is (Uniform) + adist%a = -ONE + adist%b = ONE + end select - ! change location pointers since they are currently relative to JXS(9) - LC = LOCB + 2 * NE + 1 - do j = 1, NE - ! For consistency, leave location as 0 if type is isotropic. - ! This is not necessary for current correctness, but can avoid - ! future issues - if (rxn % adist % location(j) /= 0) then - rxn % adist % location(j) = abs(rxn % adist % location(j)) - LC - end if + elseif (LC(j) > 0) then + ! 32 equiprobable bins + allocate(Equiprobable :: aedist%angle%distribution(j)%obj) + select type (adist => aedist%angle%distribution(j)%obj) + type is (Equiprobable) + allocate(adist%x(33)) + end select + + elseif (LC(j) < 0) then + ! tabular distribution + allocate(Tabular :: aedist%angle%distribution(j)%obj) + end if + end do + + ! read angular distribution -- currently this does not actually parse the + ! angular distribution tables for each incoming energy, that must be done + ! on-the-fly + do j = 1, NE + XSS_index = JXS(9) + abs(LC(j)) - 1 + select type(adist => aedist%angle%distribution(j)%obj) + type is (Equiprobable) + adist%x(:) = get_real(33) + type is (Tabular) + ! determine interpolation and number of points + interp = nint(XSS(XSS_index)) + NP = nint(XSS(XSS_index + 1)) + + ! Get probability density data + XSS_index = XSS_index + 2 + allocate(x(NP), p(NP)) + x(:) = get_real(NP) + p(:) = get_real(NP) + + ! initialize distribution + call adist%initialize(x, p, interp) + deallocate(x, p) + end select + end do + deallocate(LC) + + end select end do end associate end do @@ -981,25 +1003,46 @@ contains subroutine read_energy_dist(nuc) type(Nuclide), intent(inout) :: nuc - integer :: LED ! location of energy distribution locators - integer :: LOCC ! location of energy distributions for given MT integer :: i ! loop index - - LED = JXS(10) + integer :: n + integer :: IDAT ! locator for distribution data + integer :: LNW ! location of next energy law + integer :: LAW ! Type of energy law ! Loop over all reactions do i = 1, NXS(5) - associate (rxn => nuc % reactions(i+1)) ! skip over elastic scattering - rxn % has_energy_dist = .true. + ! Determine how many energy distributions are present for this reaction + LNW = nint(XSS(JXS(10) + i - 1)) + n = 0 + do while (LNW > 0) + n = n + 1 + LNW = nint(XSS(JXS(11) + LNW - 1)) + end do - ! find location of energy distribution data - LOCC = int(XSS(LED + i - 1)) + ! Allocate space for distributions and probability of validity + associate (secondary => nuc%reactions(i + 1)%secondary) + allocate(secondary%applicability(n)) + allocate(secondary%distribution(n)) - ! allocate energy distribution - allocate(rxn % edist) + LNW = nint(XSS(JXS(10) + i - 1)) + n = 0 + do while (LNW > 0) + n = n + 1 - ! read data for energy distribution - call get_energy_dist(rxn % edist, LOCC) + ! Determine energy law and location of data + LAW = nint(XSS(JXS(11) + LNW)) + IDAT = nint(XSS(JXS(11) + LNW + 1)) + + ! Read probability of law validity + call secondary%applicability(n)%from_ace(XSS, JXS(11) + LNW + 2) + + ! Read energy law data + call get_energy_dist(secondary%distribution(n)%obj, LAW, & + JXS(11), IDAT, nuc%awr, nuc%reactions(i)%Q_value) + + ! Get locator for next distribution + LNW = nint(XSS(JXS(11) + LNW - 1)) + end do end associate end do @@ -1011,281 +1054,324 @@ contains ! single reaction !=============================================================================== - recursive subroutine get_energy_dist(edist, loc_law, delayed_n) - type(DistEnergy), intent(inout) :: edist ! energy distribution - integer, intent(in) :: loc_law ! locator for data - logical, intent(in), optional :: delayed_n ! is this for delayed neutrons? + recursive subroutine get_energy_dist(aedist, law, LDIS, IDAT, awr, Q_value) + class(AngleEnergy), allocatable, intent(inout) :: aedist + integer, intent(in) :: law + integer, intent(in) :: LDIS + integer, intent(in) :: IDAT + real(8), intent(in) :: awr + real(8), intent(in) :: Q_value - integer :: LDIS ! location of all energy distributions - integer :: LNW ! location of next energy distribution if multiple - integer :: LAW ! secondary energy distribution law + integer :: i, j integer :: NR ! number of interpolation regions integer :: NE ! number of incoming energies - integer :: IDAT ! location of first energy distribution for given MT - integer :: lc ! locator - integer :: length ! length of data to allocate - integer :: length_interp_data ! length of interpolation data + integer :: NP ! number of outgoing energies/angles + integer :: interp + integer, allocatable :: L(:) ! locations of distributions for each Ein + integer, allocatable :: LC(:) ! locations of distributions for each Ein + real(8), allocatable :: x(:) + real(8), allocatable :: p(:) - ! determine location of energy distribution - if (present(delayed_n)) then - LDIS = JXS(27) + XSS_index = LDIS + IDAT - 1 + + if (law == 44) then + allocate(KalbachMann :: aedist) + elseif (law == 61) then + allocate(CorrelatedAngleEnergy :: aedist) else - LDIS = JXS(11) + allocate(UncorrelatedAngleEnergy :: aedist) end if - ! locator for next law and information on this law - LNW = int(XSS(LDIS + loc_law - 1)) - LAW = int(XSS(LDIS + loc_law)) - IDAT = int(XSS(LDIS + loc_law + 1)) - NR = int(XSS(LDIS + loc_law + 2)) - edist % law = LAW - edist % p_valid % n_regions = NR + select type (aedist) + type is (UncorrelatedAngleEnergy) + ! ======================================================================== + ! UNCORRELATED ENERGY DISTRIBUTIONS - ! allocate space for ENDF interpolation parameters - if (NR > 0) then - allocate(edist % p_valid % nbt(NR)) - allocate(edist % p_valid % int(NR)) - end if - - ! read ENDF interpolation parameters - XSS_index = LDIS + loc_law + 3 - if (NR > 0) then - edist % p_valid % nbt = int(get_real(NR)) - edist % p_valid % int = int(get_real(NR)) - end if - - ! allocate space for law validity data - NE = int(XSS(LDIS + loc_law + 3 + 2*NR)) - edist % p_valid % n_pairs = NE - allocate(edist % p_valid % x(NE)) - allocate(edist % p_valid % y(NE)) - - length_interp_data = 5 + 2*(NR + NE) - - ! read law validity data - XSS_index = LDIS + loc_law + 4 + 2*NR - edist % p_valid % x = get_real(NE) - edist % p_valid % y = get_real(NE) - - ! Set index to beginning of IDAT array - lc = LDIS + IDAT - 2 - - ! determine length of energy distribution - length = length_energy_dist(lc, LAW, loc_law, length_interp_data) - - ! allocate secondary energy distribution array - allocate(edist % data(length)) - - ! read secondary energy distribution - XSS_index = lc + 1 - edist % data = get_real(length) - - ! read next energy distribution if present - if (LNW > 0) then - allocate(edist % next) - call get_energy_dist(edist % next, LNW) - end if - - end subroutine get_energy_dist - -!=============================================================================== -! LENGTH_ENERGY_DIST determines how many values are contained in an LDAT energy -! distribution array based on the secondary energy law and location in XSS -!=============================================================================== - - function length_energy_dist(lc, law, LOCC, lid) result(length) - integer, intent(in) :: lc ! location in XSS array - integer, intent(in) :: law ! energy distribution law - integer, intent(in) :: LOCC ! location of energy distribution - integer, intent(in) :: lid ! length of interpolation data - integer :: length ! length of energy distribution (LDAT) - - integer :: i ! loop index for incoming energies - integer :: j ! loop index for outgoing energies - integer :: k ! dummy index in XSS - integer :: NR ! number of interpolation regions - integer :: NE ! number of incoming energies - integer :: NP ! number of points in outgoing energy distribution - integer :: NMU ! number of points in outgoing cosine distribution - integer :: NRa ! number of interpolation regions for Watt 'a' - 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 - - select case (law) - case (1) - ! Tabular equiprobable energy bins - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - NP = int(XSS(lc + 3 + 2*NR + NE)) - length = 3 + 2*NR + NE + 3*NP*NE - - case (2) - ! Discrete photon energy - length = 2 - - case (3) - ! Level scattering - length = 2 - - case (4) - ! Continuous tabular distribution - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - allocate(L(NE)) - L(:) = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) - - ! Continue with finding data length - length = length + 2 + 2*NR + 2*NE - do i = 1,NE - ! Some older data sets use the same LDAT for multiple Ein tables. - ! If this is the case, we should skip incrementing length when it is - ! not needed. - if (i < NE) then - if (any(L(i) == L(i + 1: NE))) then - ! adjust location for this block - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid - cycle + select case (law) + case (1) + allocate(TabularEquiprobable :: aedist%energy) + select type (edist => aedist%energy) + type is (TabularEquiprobable) + NR = nint(XSS(XSS_index)) + NE = nint(XSS(XSS_index + 1 + 2*NR)) + if (NR > 0) then + call fatal_error("Multiple interpolation regions not yet supported & + &for tabular equiprobable energy distributions.") end if - end if - ! determine length - NP = int(XSS(lc + length + 2)) - length = length + 2 + 3*NP + edist%n_region = NR - ! adjust location for this block - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid + ! Read incoming energies for which outgoing energies are tabulated + allocate(edist%energy_in(NE)) + XSS_index = XSS_index + 2 + 2*NR + edist%energy_in(:) = get_real(NE) + + ! Read outgoing energy tables + NP = nint(XSS(XSS_index)) + allocate(edist%energy_out(NP, NE)) + XSS_index = XSS_index + 1 + do i = 1, NE + edist%energy_out(:, i) = get_real(NP) + end do + end select + + case (3) + allocate(LevelInelastic :: aedist%energy) + select type (edist => aedist%energy) + type is (LevelInelastic) + edist%threshold = XSS(XSS_index) + edist%mass_ratio = XSS(XSS_index + 1) + end select + + case (4) + allocate(ContinuousTabular :: aedist%energy) + select type (edist => aedist%energy) + type is (ContinuousTabular) + NR = nint(XSS(XSS_index)) + XSS_index = XSS_index + 1 + if (NR > 1) then + call fatal_error("Multiple interpolation regions not yet supported & + &for continuous tabular energy distributions.") + end if + edist%n_region = NR + + ! Read breakpoints and interpolation parameters + if (NR > 0) then + allocate(edist%breakpoints(NR)) + allocate(edist%interpolation(NR)) + edist%breakpoints(:) = get_int(NR) + edist%interpolation(:) = get_int(NR) + end if + + ! Read incoming energies for which outgoing energies are tabulated and + ! locators + NE = nint(XSS(XSS_index)) + XSS_index = XSS_index + 1 + allocate(edist%energy_in(NE)) + allocate(L(NE)) + edist%energy_in(:) = get_real(NE) + L(:) = get_int(NE) + + ! Read outgoing energy tables + allocate(edist%energy_out(NE)) + do i = 1, NE + ! Determine interpolation and number of discrete points + XSS_index = LDIS + L(i) - 1 + interp = nint(XSS(XSS_index)) + edist%energy_out(i)%interpolation = mod(interp, 10) + edist%energy_out(i)%n_discrete = (interp - & + edist%energy_out(i)%interpolation)/10 + + ! check for discrete lines present + if (edist%energy_out(i)%n_discrete > 0) then + call fatal_error("Discrete lines in continuous tabular & + &distribution not yet supported") + end if + + ! Determine number of points and allocate space + NP = nint(XSS(XSS_index + 1)) + allocate(edist%energy_out(i)%e_out(NP)) + allocate(edist%energy_out(i)%p(NP)) + allocate(edist%energy_out(i)%c(NP)) + + ! Read tabular PDF for outgoing energy + XSS_index = XSS_index + 2 + edist%energy_out(i)%e_out(:) = get_real(NP) + edist%energy_out(i)%p(:) = get_real(NP) + edist%energy_out(i)%c(:) = get_real(NP) + end do + + deallocate(L) + end select + + case (7) + allocate(MaxwellEnergy :: aedist%energy) + select type (edist => aedist%energy) + type is (MaxwellEnergy) + call edist%theta%from_ace(XSS, XSS_index) + edist%u = XSS(XSS_index + 2 + 2*edist%theta%n_regions + & + 2*edist%theta%n_pairs) + end select + + case (9) + allocate(Evaporation :: aedist%energy) + select type(edist => aedist%energy) + type is (Evaporation) + call edist%theta%from_ace(XSS, XSS_index) + edist%u = XSS(XSS_index + 2 + 2*edist%theta%n_regions + & + 2*edist%theta%n_pairs) + end select + + case (11) + allocate(WattEnergy :: aedist%energy) + select type(edist => aedist%energy) + type is (WattEnergy) + call edist%a%from_ace(XSS, XSS_index) + XSS_index = XSS_index + 2 + 2*edist%a%n_regions + 2*edist%a%n_pairs + call edist%b%from_ace(XSS, XSS_index) + XSS_index = XSS_index + 2 + 2*edist%b%n_regions + 2*edist%b%n_pairs + edist%u = XSS(XSS_index) + end select + + case (66) + allocate(NBodyPhaseSpace :: aedist%energy) + select type(edist => aedist%energy) + type is (NBodyPhaseSpace) + edist%n_bodies = int(XSS(XSS_index)) + edist%mass_ratio = XSS(XSS_index + 1) + edist%A = awr + edist%Q = Q_value + end select + + end select + + type is (KalbachMann) + ! ======================================================================== + ! CORRELATED KALBACH-MANN DISTRIBUTION + + NR = int(XSS(XSS_index)) + NE = int(XSS(XSS_index + 1 + 2*NR)) + if (NR > 0) then + call fatal_error("Multiple interpolation regions not yet supported & + &for Kalbach-Mann energy distributions.") + end if + aedist%n_region = NR + + ! Read incoming energies for which outgoing energies are tabulated and locators + allocate(aedist%energy_in(NE)) + allocate(L(NE)) + XSS_index = XSS_index + 2 + 2*NR + aedist%energy_in(:) = get_real(NE) + L(:) = get_int(NE) + + ! Read outgoing energy tables + allocate(aedist%table(NE)) + do i = 1, NE + ! Determine interpolation and number of discrete points + XSS_index = LDIS + L(i) - 1 + interp = nint(XSS(XSS_index)) + aedist%table(i)%interpolation = mod(interp, 10) + aedist%table(i)%n_discrete = (interp - aedist%table(i)%interpolation)/10 + + ! check for discrete lines present + if (aedist%table(i)%n_discrete > 0) then + call fatal_error("Discrete lines in Kalbach-Mann distribution not & + &yet supported") + end if + + ! Determine number of points and allocate space + NP = nint(XSS(XSS_index + 1)) + allocate(aedist%table(i)%e_out(NP)) + allocate(aedist%table(i)%p(NP)) + allocate(aedist%table(i)%c(NP)) + allocate(aedist%table(i)%r(NP)) + allocate(aedist%table(i)%a(NP)) + + ! Read tabular PDF for outgoing energy + XSS_index = XSS_index + 2 + aedist%table(i)%e_out(:) = get_real(NP) + aedist%table(i)%p(:) = get_real(NP) + aedist%table(i)%c(:) = get_real(NP) + aedist%table(i)%r(:) = get_real(NP) + aedist%table(i)%a(:) = get_real(NP) end do + deallocate(L) - case (5) - ! General evaporation spectrum - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - NP = int(XSS(lc + 3 + 2*NR + 2*NE)) - length = 3 + 2*NR + 2*NE + NP + type is (CorrelatedAngleEnergy) + ! ======================================================================== + ! CORRELATED ANGLE-ENERGY DISTRIBUTION - case (7) - ! Maxwell fission spectrum - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - length = 3 + 2*NR + 2*NE + NR = int(XSS(XSS_index)) + NE = int(XSS(XSS_index + 1 + 2*NR)) + if (NR > 0) then + call fatal_error("Multiple interpolation regions not yet supported & + &for correlated angle-energy distributions.") + end if + aedist%n_region = NR - case (9) - ! Evaporation spectrum - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - length = 3 + 2*NR + 2*NE - - case (11) - ! Watt spectrum - NRa = int(XSS(lc + 1)) - NEa = int(XSS(lc + 2 + 2*NRa)) - NRb = int(XSS(lc + 3 + 2*(NRa+NEa))) - NEb = int(XSS(lc + 4 + 2*(NRa+NEa+NRb))) - length = 5 + 2*(NRa + NEa + NRb + NEb) - - case (44) - ! Kalbach-Mann correlated scattering - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) + ! Read incoming energies for which outgoing energies are tabulated and + ! locators + allocate(aedist%energy_in(NE)) allocate(L(NE)) - L(:) = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) + XSS_index = XSS_index + 2 + 2*NR + aedist%energy_in(:) = get_real(NE) + L(:) = get_int(NE) - ! Continue with finding data length - length = length + 2 + 2*NR + 2*NE - do i = 1,NE - ! Some older data sets use the same LDAT for multiple Ein tables. - ! If this is the case, we should skip incrementing length when it is - ! not needed. - if (i < NE) then - if (any(L(i) == L(i + 1: NE))) then - ! adjust location for this block - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid - cycle - end if - end if - NP = int(XSS(lc + length + 2)) - length = length + 2 + 5*NP + ! Read outgoing energy tables + allocate(aedist%table(NE)) + do i = 1, NE + ! Determine interpolation and number of discrete points + XSS_index = LDIS + L(i) - 1 + interp = nint(XSS(XSS_index)) + aedist%table(i)%interpolation = mod(interp, 10) + aedist%table(i)%n_discrete = (interp - aedist%table(i)%interpolation)/10 - ! adjust location for this block - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid - end do - deallocate(L) - - case (61) - ! Correlated energy and angle distribution - NR = int(XSS(lc + 1)) - NE = int(XSS(lc + 2 + 2*NR)) - allocate(L(NE)) - L(:) = int(XSS(lc + 3 + 2*NR + NE: lc + 3 + 2*NR + 2*NE - 1)) - - ! Continue with finding data length - length = length + 2 + 2*NR + 2*NE - do i = 1,NE - ! Some older data sets use the same LDAT for multiple Ein tables. - ! If this is the case, we should skip incrementing length when it is - ! not needed. - if (i < NE) then - if (any(L(i) == L(i + 1: NE))) then - ! adjust locators for energy distribution - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid - cycle - end if + ! check for discrete lines present + if (aedist%table(i)%n_discrete > 0) then + call fatal_error("Discrete lines in correlated angle-energy & + &distribution not yet supported") end if - ! outgoing energy distribution - NP = int(XSS(lc + length + 2)) + ! Determine number of points and allocate space + NP = nint(XSS(XSS_index + 1)) + allocate(aedist%table(i)%e_out(NP)) + allocate(aedist%table(i)%p(NP)) + allocate(aedist%table(i)%c(NP)) + allocate(LC(NP)) - ! adjust locators for angular distribution + ! Read tabular PDF for outgoing energy + XSS_index = XSS_index + 2 + aedist%table(i)%e_out(:) = get_real(NP) + aedist%table(i)%p(:) = get_real(NP) + aedist%table(i)%c(:) = get_real(NP) + LC(:) = get_int(NP) + + ! allocate angular distributions for each incoming/outgoing energy + allocate(aedist%table(i)%angle(NP)) do j = 1, NP - k = lc + length + 2 + 3*NP + j - if (XSS(k) /= 0) XSS(k) = XSS(k) - LOCC - lid + if (LC(j) == 0) then + ! isotropic + allocate(Uniform :: aedist%table(i)%angle(j)%obj) + select type (adist => aedist%table(i)%angle(j)%obj) + type is (Uniform) + adist%a = -ONE + adist%b = ONE + end select + + elseif (LC(j) > 0) then + ! tabular distribution + allocate(Tabular :: aedist%table(i)%angle(j)%obj) + end if end do - length = length + 2 + 4*NP + ! read angular distributions do j = 1, NP - ! outgoing angle distribution -- NMU here is actually - ! referred to as NP in the MCNP documentation - NMU = int(XSS(lc + length + 2)) - length = length + 2 + 3*NMU + XSS_index = LDIS + abs(LC(j)) - 1 + select type(adist => aedist%table(i)%angle(j)%obj) + type is (Tabular) + ! determine interpolation and number of points + interp = nint(XSS(XSS_index)) + NP = nint(XSS(XSS_index + 1)) + + ! Get probability density data + XSS_index = XSS_index + 2 + allocate(x(NP), p(NP)) + x(:) = get_real(NP) + p(:) = get_real(NP) + + ! initialize distribution + call adist%initialize(x, p, interp) + deallocate(x, p) + end select end do + deallocate(LC) - ! adjust locators for energy distribution - j = lc + 2 + 2*NR + NE + i - XSS(j) = XSS(j) - LOCC - lid end do - deallocate(L) - case (66) - ! N-body phase space distribution - length = 2 - case (67) - ! 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)) - ! Don't currently do anything with L deallocate(L) - ! Continue with finding data length - NMU = int(XSS(lc + 4 + 2*NR + 2*NE)) - length = 4 + 2*(NR + NE + NMU) - end select - end function length_energy_dist + end subroutine get_energy_dist !=============================================================================== ! READ_UNR_RES reads in unresolved resonance probability tables if present. diff --git a/src/ace_header.F90 b/src/ace_header.F90 index d7c298979c..2331f9117c 100644 --- a/src/ace_header.F90 +++ b/src/ace_header.F90 @@ -3,42 +3,11 @@ module ace_header use constants, only: MAX_FILE_LEN, ZERO use dict_header, only: DictIntInt use endf_header, only: Tab1 + use secondary_header, only: SecondaryDistribution, AngleEnergyContainer use stl_vector, only: VectorInt implicit none -!=============================================================================== -! DISTANGLE contains data for a tabular secondary angle distribution whether it -! be tabular or 32 equiprobable cosine bins -!=============================================================================== - - type DistAngle - integer :: n_energy ! # of incoming energies - real(8), allocatable :: energy(:) ! incoming energy grid - integer, allocatable :: type(:) ! type of distribution - integer, allocatable :: location(:) ! location of each table - real(8), allocatable :: data(:) ! angular distribution data - end type DistAngle - -!=============================================================================== -! DISTENERGY contains data for a secondary energy distribution for all -! scattering laws -!=============================================================================== - - type DistEnergy - integer :: law ! secondary distribution law - type(Tab1) :: p_valid ! probability of law validity - real(8), allocatable :: data(:) ! energy distribution data - - ! For reactions that may have multiple energy distributions such as (n,2n), - ! this pointer allows multiple laws to be stored - type(DistEnergy), pointer :: next => null() - - ! Type-Bound procedures - contains - procedure :: clear => distenergy_clear ! Deallocates DistEnergy - end type DistEnergy - !=============================================================================== ! REACTION contains the cross-section and secondary energy and angle ! distributions for a single reaction in a continuous-energy ACE-format table @@ -53,10 +22,7 @@ module ace_header logical :: scatter_in_cm ! scattering system in center-of-mass? logical :: multiplicity_with_E = .false. ! Flag to indicate E-dependent multiplicity real(8), allocatable :: sigma(:) ! Cross section values - logical :: has_angle_dist ! Angle distribution present? - logical :: has_energy_dist ! Energy distribution present? - type(DistAngle) :: adist ! Secondary angular distribution - type(DistEnergy), pointer :: edist => null() ! Secondary energy distribution + type(SecondaryDistribution) :: secondary ! Type-Bound procedures contains @@ -137,7 +103,7 @@ module ace_header integer :: n_precursor ! # of delayed neutron precursors real(8), allocatable :: nu_d_data(:) real(8), allocatable :: nu_d_precursor_data(:) - type(DistEnergy), pointer :: nu_d_edist(:) => null() + type(AngleEnergyContainer), allocatable :: nu_d_edist(:) ! Unresolved resonance data logical :: urr_present @@ -284,37 +250,14 @@ module ace_header contains -!=============================================================================== -! DISTENERGY_CLEAR resets and deallocates data in DistEnergy. -!=============================================================================== - - recursive subroutine distenergy_clear(this) - - class(DistEnergy), intent(inout) :: this ! The DistEnergy object to clear - - if (associated(this % next)) then - ! recursively clear this item - call this % next % clear() - deallocate(this % next) - end if - - end subroutine distenergy_clear - !=============================================================================== ! REACTION_CLEAR resets and deallocates data in Reaction. !=============================================================================== subroutine reaction_clear(this) - class(Reaction), intent(inout) :: this ! The Reaction object to clear if (associated(this % multiplicity_E)) deallocate(this % multiplicity_E) - - if (associated(this % edist)) then - call this % edist % clear() - deallocate(this % edist) - end if - end subroutine reaction_clear !=============================================================================== @@ -322,21 +265,11 @@ module ace_header !=============================================================================== subroutine nuclide_clear(this) - - class(Nuclide), intent(inout) :: this ! The Nuclide object to clear + class(Nuclide), intent(inout) :: this integer :: i ! Loop counter - if (associated(this % nu_d_edist)) then - do i = 1, size(this % nu_d_edist) - call this % nu_d_edist(i) % clear() - end do - deallocate(this % nu_d_edist) - end if - - if (associated(this % urr_data)) then - deallocate(this % urr_data) - end if + if (associated(this % urr_data)) deallocate(this % urr_data) if (allocated(this % reactions)) then do i = 1, size(this % reactions) diff --git a/src/distribution_univariate.F90 b/src/distribution_univariate.F90 index b3d77e2f82..f596536d0b 100644 --- a/src/distribution_univariate.F90 +++ b/src/distribution_univariate.F90 @@ -1,7 +1,7 @@ module distribution_univariate - use constants, only: ZERO, HALF, HISTOGRAM, LINEAR_LINEAR, MAX_LINE_LEN, & - MAX_WORD_LEN + use constants, only: ZERO, ONE, HALF, HISTOGRAM, LINEAR_LINEAR, & + MAX_LINE_LEN, MAX_WORD_LEN use error, only: fatal_error use math, only: maxwell_spectrum, watt_spectrum use random_lcg, only: prn @@ -78,6 +78,12 @@ module distribution_univariate procedure :: initialize => tabular_initialize end type Tabular + type, extends(Distribution) :: Equiprobable + real(8), allocatable :: x(:) + contains + procedure :: sample => equiprobable_sample + end type Equiprobable + contains function discrete_sample(this) result(x) @@ -238,6 +244,25 @@ contains this%c(:) = this%c(:)/this%c(n) end subroutine tabular_initialize + function equiprobable_sample(this) result(x) + class(Equiprobable), intent(in) :: this + real(8) :: x + + integer :: i + integer :: n + real(8) :: r + real(8) :: xl, xr + + n = size(this%x) + + r = prn() + i = 1 + int((n - 1)*r) + + xl = this%x(i) + xr = this%x(i+1) + x = xl + ((n - 1)*r - i + ONE) * (xr - xl) + end function equiprobable_sample + subroutine distribution_from_xml(dist, node_dist) class(Distribution), allocatable, intent(inout) :: dist type(Node), pointer :: node_dist diff --git a/src/endf_header.F90 b/src/endf_header.F90 index af62231a5d..7388ea2f54 100644 --- a/src/endf_header.F90 +++ b/src/endf_header.F90 @@ -13,6 +13,40 @@ module endf_header integer :: n_pairs ! # of pairs of (x,y) values real(8), allocatable :: x(:) ! values of abscissa real(8), allocatable :: y(:) ! values of ordinate + contains + procedure :: from_ace end type Tab1 +contains + + subroutine from_ace(this, xss, idx) + class(Tab1), intent(inout) :: this + real(8), intent(in) :: xss(:) + integer, intent(in) :: idx + + integer :: nr, ne + + ! Determine number of regions + nr = nint(xss(idx)) + this%n_regions = nr + + ! Read interpolation region data + if (nr > 0) then + allocate(this%nbt(nr)) + allocate(this%int(nr)) + this%nbt(:) = nint(xss(idx + 1 : idx + nr)) + this%int(:) = nint(xss(idx + nr + 1 : idx + 2*nr)) + end if + + ! Determine number of pairs + ne = int(XSS(idx + 2*nr + 1)) + this%n_pairs = ne + + ! Read (x,y) pairs + allocate(this%x(ne)) + allocate(this%y(ne)) + this%x(:) = xss(idx + 2*nr + 2 : idx + 2*nr + 1 + ne) + this%y(:) = xss(idx + 2*nr + 2 + ne : idx + 2*nr + 1 + 2*ne) + end subroutine from_ace + end module endf_header diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index 2a616e0f1f..a8b975879f 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -2,7 +2,6 @@ module energy_distribution use constants, only: ZERO, ONE, TWO, PI, HISTOGRAM, LINEAR_LINEAR use endf_header, only: Tab1 - use error, only: fatal_error use interpolation, only: interpolate_tab1 use math, only: maxwell_spectrum, watt_spectrum use random_lcg, only: prn @@ -27,14 +26,14 @@ module energy_distribution end function iSampleEnergy end interface + type :: EnergyDistributionContainer + class(EnergyDistribution), allocatable :: obj + end type EnergyDistributionContainer + !=============================================================================== ! Derived classes !=============================================================================== - type Array1D - real(8), allocatable :: data(:) - end type Array1D - type, extends(EnergyDistribution) :: TabularEquiprobable integer :: n_region integer, allocatable :: breakpoints(:) @@ -121,14 +120,6 @@ contains n_energy_in = size(this%energy_in) n_energy_out = size(this%energy_out, 1) - ! read number of interpolation regions, incoming energies, and outgoing - ! energies - ! TODO: Move this error to input - if (this%n_region > 0) then - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample equiprobable energy bins.") - end if - ! determine index on incoming energy grid and interpolation factor i = binary_search(this%energy_in, size(this%energy_in), E_in) r = (E_in - this%energy_in(i)) / & @@ -200,9 +191,6 @@ contains ! read number of interpolation regions and incoming energies if (this%n_region == 1) then histogram_interp = (this%interpolation(1) == 1) - else if (this%n_region > 1) then - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample continuous tabular distribution.") else histogram_interp = .false. end if @@ -245,13 +233,6 @@ contains E_1 = E_i_1 + r*(E_i1_1 - E_i_1) E_K = E_i_K + r*(E_i1_K - E_i_K) - ! TODO: Write error at initizliation - if (this%energy_out(l)%n_discrete > 0) then - ! discrete lines present - call fatal_error("Discrete lines in continuous tabular distributed not & - &yet supported") - end if - ! determine outgoing energy bin n_energy_out = size(this%energy_out(l)%e_out) r1 = prn() diff --git a/src/interpolation.F90 b/src/interpolation.F90 index 9e28bc086e..5f87870677 100644 --- a/src/interpolation.F90 +++ b/src/interpolation.F90 @@ -2,7 +2,6 @@ module interpolation use constants use endf_header, only: Tab1 - use error, only: fatal_error use search, only: binary_search use string, only: to_str diff --git a/src/output.F90 b/src/output.F90 index 66e6831371..3a48de02da 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -359,21 +359,24 @@ contains write(unit_,*) ' Reaction Q-value COM Law IE size(angle) size(energy)' do i = 1, nuc % n_reaction associate (rxn => nuc % reactions(i)) - ! Determine size of angle distribution - if (rxn % has_angle_dist) then - size_angle = rxn % adist % n_energy * 16 + size(rxn % adist % data) * 8 - else - size_angle = 0 - end if +!!$ ! Determine size of angle distribution +!!$ if (rxn % has_angle_dist) then +!!$ size_angle = rxn % adist % n_energy * 16 + size(rxn % adist % data) * 8 +!!$ else +!!$ size_angle = 0 +!!$ end if + size_angle = 0 - ! Determine size of energy distribution and law - if (rxn % has_energy_dist) then - size_energy = size(rxn % edist % data) * 8 - law = to_str(rxn % edist % law) - else - size_energy = 0 - law = 'None' - end if +!!$ ! Determine size of energy distribution and law +!!$ if (rxn % has_energy_dist) then +!!$ size_energy = size(rxn % edist % data) * 8 +!!$ law = to_str(rxn % edist % law) +!!$ else +!!$ size_energy = 0 +!!$ law = 'None' +!!$ end if + size_energy = 0 + law = 'None' write(unit_,'(3X,A11,1X,F8.3,3X,L1,3X,A4,1X,I6,1X,I11,1X,I11)') & reaction_name(rxn % MT), rxn % Q_value, rxn % scatter_in_cm, & diff --git a/src/physics.F90 b/src/physics.F90 index 217d232182..8519f4d2b0 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -1,6 +1,6 @@ module physics - use ace_header, only: Nuclide, Reaction, DistEnergy + use ace_header, only: Nuclide, Reaction use constants use cross_section, only: elastic_xs_0K use endf, only: reaction_name @@ -17,12 +17,10 @@ module physics use random_lcg, only: prn use search, only: binary_search use string, only: to_str + use secondary_uncorrelated, only: UncorrelatedAngleEnergy implicit none -! TODO: Figure out how to write particle restart files in sample_angle, -! sample_energy, etc. - contains !=============================================================================== @@ -458,7 +456,10 @@ contains vel = sqrt(dot_product(v_n, v_n)) ! Sample scattering angle - mu_cm = sample_angle(rxn, E) + select type (dist => rxn%secondary%distribution(1)%obj) + type is (UncorrelatedAngleEnergy) + mu_cm = dist%angle%sample(E) + end select ! Determine direction cosines in CM uvw_cm = v_n/vel @@ -1195,16 +1196,13 @@ contains integer :: lc ! index before start of energies/nu values integer :: NR ! number of interpolation regions integer :: NE ! number of energies tabulated - integer :: law ! energy distribution law integer :: n_sample ! number of times resampling real(8) :: nu_t ! total nu real(8) :: nu_d ! delayed nu - real(8) :: mu ! fission neutron angular cosine real(8) :: beta ! delayed neutron fraction real(8) :: xi ! random number real(8) :: yield ! delayed neutron precursor yield real(8) :: prob ! cumulative probability - type(DistEnergy), pointer :: edist ! Determine total nu nu_t = nu_total(nuc, p % E) @@ -1248,18 +1246,13 @@ contains ! set the delayed group for the particle born from fission p % delayed_group = j - ! select energy distribution for group j - law = nuc % nu_d_edist(j) % law - edist => nuc % nu_d_edist(j) - ! sample from energy distribution n_sample = 0 do - if (law == 44 .or. law == 61) then - call sample_energy(edist, p % E, E_out, mu) - else - call sample_energy(edist, p % E, E_out) - end if + select type (aedist => nuc%nu_d_edist(j)%obj) + type is (UncorrelatedAngleEnergy) + E_out = aedist%energy%sample(p%E) + end select ! resample if energy is greater than maximum neutron energy if (E_out < energy_max_neutron) exit @@ -1281,14 +1274,9 @@ contains p % delayed_group = 0 ! sample from prompt neutron energy distribution - law = rxn % edist % law n_sample = 0 do - if (law == 44 .or. law == 61) then - call sample_energy(rxn%edist, p % E, E_out, prob) - else - call sample_energy(rxn%edist, p % E, E_out) - end if + call rxn%secondary%sample(p%E, E_out, prob) ! resample if energy is greater than maximum neutron energy if (E_out < energy_max_neutron) exit @@ -1317,41 +1305,18 @@ contains type(Particle), intent(inout) :: p integer :: i ! loop index - integer :: law ! secondary energy distribution law real(8) :: E ! energy in lab (incoming/outgoing) real(8) :: mu ! cosine of scattering angle in lab real(8) :: A ! atomic weight ratio of nuclide real(8) :: E_in ! incoming energy real(8) :: E_cm ! outgoing energy in center-of-mass - real(8) :: Q ! Q-value of reaction real(8) :: yield ! neutron yield ! copy energy of neutron E_in = p % E - ! determine A and Q - A = nuc % awr - Q = rxn % Q_value - - ! determine secondary energy distribution law - law = rxn % edist % law - - ! sample scattering angle - mu = sample_angle(rxn, E_in) - ! sample outgoing energy - if (law == 44 .or. law == 61) then - call sample_energy(rxn%edist, E_in, E, mu) - ! Because of floating-point roundoff, it may be possible for mu to be - ! outside of the range [-1,1). In these cases, we just set mu to exactly - ! -1 or 1 - - if (abs(mu) > ONE) mu = sign(ONE,mu) - elseif (law == 66) then - call sample_energy(rxn%edist, E_in, E, A=A, Q=Q) - else - call sample_energy(rxn%edist, E_in, E) - end if + call rxn%secondary%sample(E_in, E, mu) ! if scattering system is in center-of-mass, transfer cosine of scattering ! angle and outgoing energy from CM to LAB @@ -1359,20 +1324,20 @@ contains E_cm = E ! determine outgoing energy in lab + A = nuc%awr E = E_cm + (E_in + TWO * mu * (A+ONE) * sqrt(E_in * E_cm)) & / ((A+ONE)*(A+ONE)) ! determine outgoing angle in lab mu = mu * sqrt(E_cm/E) + ONE/(A+ONE) * sqrt(E_in/E) - - ! Because of floating-point roundoff, it may be possible for mu to be - ! outside of the range [-1,1). In these cases, we just set mu to exactly - ! -1 or 1 - - if (abs(mu) > ONE) mu = sign(ONE,mu) end if - ! Set outgoing energy and scattering angle + ! Because of floating-point roundoff, it may be possible for mu to be + ! outside of the range [-1,1). In these cases, we just set mu to exactly -1 + ! or 1 + if (abs(mu) > ONE) mu = sign(ONE,mu) + + ! Set outgoing energy and scattering angle p % E = E p % mu = mu @@ -1391,893 +1356,4 @@ contains end subroutine inelastic_scatter -!=============================================================================== -! SAMPLE_ANGLE samples the cosine of the angle between incident and exiting -! particle directions either from 32 equiprobable bins or from a tabular -! distribution. -!=============================================================================== - - function sample_angle(rxn, E) result(mu) - type(Reaction), intent(in) :: rxn ! reaction - real(8), intent(in) :: E ! incoming energy - - real(8) :: xi ! random number on [0,1) - integer :: interp ! type of interpolation - integer :: type ! angular distribution type - integer :: i ! incoming energy bin - integer :: n ! number of incoming energy bins - integer :: lc ! location in data array - integer :: NP ! number of points in cos distribution - integer :: k ! index on cosine grid - real(8) :: r ! interpolation factor on incoming energy - real(8) :: frac ! interpolation fraction on cosine - real(8) :: mu0 ! cosine in bin k - real(8) :: mu1 ! cosine in bin k+1 - real(8) :: mu ! final cosine sampled - real(8) :: c_k ! cumulative frequency at k - real(8) :: c_k1 ! cumulative frequency at k+1 - real(8) :: p0,p1 ! probability distribution - - ! check if reaction has angular distribution -- if not, sample outgoing - ! angle isotropically - if (.not. rxn % has_angle_dist) then - mu = TWO * prn() - ONE - return - end if - - ! determine number of incoming energies - n = rxn % adist % n_energy - - ! find energy bin and calculate interpolation factor -- if the energy is - ! outside the range of the tabulated energies, choose the first or last bins - if (E < rxn % adist % energy(1)) then - i = 1 - r = ZERO - elseif (E > rxn % adist % energy(n)) then - i = n - 1 - r = ONE - else - i = binary_search(rxn % adist % energy, n, E) - r = (E - rxn % adist % energy(i)) / & - (rxn % adist % energy(i+1) - rxn % adist % energy(i)) - end if - - ! Sample between the ith and (i+1)th bin - if (r > prn()) i = i + 1 - - ! check whether this is a 32-equiprobable bin or a tabular distribution - lc = rxn % adist % location(i) - type = rxn % adist % type(i) - if (type == ANGLE_ISOTROPIC) then - mu = TWO * prn() - ONE - elseif (type == ANGLE_32_EQUI) then - ! sample cosine bin - xi = prn() - k = 1 + int(32.0_8*xi) - - ! calculate cosine - mu0 = rxn % adist % data(lc + k) - mu1 = rxn % adist % data(lc + k+1) - mu = mu0 + (32.0_8 * xi - k + ONE) * (mu1 - mu0) - - elseif (type == ANGLE_TABULAR) then - interp = int(rxn % adist % data(lc + 1)) - NP = int(rxn % adist % data(lc + 2)) - - ! determine outgoing cosine bin - xi = prn() - lc = lc + 2 - c_k = rxn % adist % data(lc + 2*NP + 1) - do k = 1, NP - 1 - c_k1 = rxn % adist % data(lc + 2*NP + k+1) - if (xi < c_k1) exit - c_k = c_k1 - end do - - ! check to make sure k is <= NP - 1 - k = min(k, NP - 1) - - p0 = rxn % adist % data(lc + NP + k) - mu0 = rxn % adist % data(lc + k) - if (interp == HISTOGRAM) then - ! Histogram interpolation - if (p0 > ZERO) then - mu = mu0 + (xi - c_k)/p0 - else - mu = mu0 - end if - - elseif (interp == LINEAR_LINEAR) then - ! Linear-linear interpolation - p1 = rxn % adist % data(lc + NP + k+1) - mu1 = rxn % adist % data(lc + k+1) - - frac = (p1 - p0)/(mu1 - mu0) - if (frac == ZERO) then - mu = mu0 + (xi - c_k)/p0 - else - mu = mu0 + (sqrt(max(ZERO, p0*p0 + 2*frac*(xi - c_k))) - p0)/frac - end if - else - ! call write_particle_restart(p) - call fatal_error("Unknown interpolation type: " // trim(to_str(interp))) - end if - - ! Because of floating-point roundoff, it may be possible for mu to be - ! outside of the range [-1,1). In these cases, we just set mu to exactly - ! -1 or 1 - - if (abs(mu) > ONE) mu = sign(ONE,mu) - - else - ! call write_particle_restart(p) - call fatal_error("Unknown angular distribution type: " & - &// trim(to_str(type))) - end if - - end function sample_angle - -!=============================================================================== -! SAMPLE_ENERGY samples an outgoing energy distribution, either for a secondary -! neutron from a collision or for a prompt/delayed fission neutron -!=============================================================================== - - recursive subroutine sample_energy(edist, E_in, E_out, mu_out, A, Q) - type(DistEnergy), intent(in) :: edist - real(8), intent(in) :: E_in ! incoming energy of neutron - real(8), intent(out) :: E_out ! outgoing energy - real(8), intent(inout), optional :: mu_out ! outgoing cosine of angle - real(8), intent(in), optional :: A ! mass number of nuclide - real(8), intent(in), optional :: Q ! Q-value of reaction - - integer :: i ! index on incoming energy grid - integer :: k ! sampled index on outgoing grid - integer :: l ! sampled index on incoming grid - integer :: n_sample ! number of rejections - integer :: lc ! dummy index - integer :: NR ! number of interpolation regions - integer :: NE ! number of energies - integer :: NET ! number of outgoing energies - integer :: INTTp ! combination of INTT and ND - integer :: INTT ! 1 = histogram, 2 = linear-linear - integer :: JJ ! 1 = histogram, 2 = linear-linear - integer :: ND ! number of discrete lines - integer :: NP ! number of points in distribution - - real(8) :: p_valid ! probability of law validity - - real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i - real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 - real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 - - real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l - real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l - real(8) :: c_k, c_k1 ! cumulative probability - - real(8) :: KM_A ! Kalbach-Mann parameter R - real(8) :: KM_R ! Kalbach-Mann parameter R - real(8) :: A_k, A_k1 ! Kalbach-Mann A on outgoing grid l - real(8) :: R_k, R_k1 ! Kalbach-Mann R on outgoing grid l - - real(8) :: Watt_a, Watt_b ! Watt spectrum parameters - - real(8) :: mu_k ! angular cosine in bin k - real(8) :: mu_k1 ! angular cosine in bin k+1 - real(8) :: p_k ! angular pdf in bin k - real(8) :: p_k1 ! angular pdf in bin k+1 - - real(8) :: r ! interpolation factor on incoming energy - real(8) :: frac ! interpolation factor on outgoing energy - real(8) :: U ! restriction energy - real(8) :: T ! nuclear temperature - - real(8) :: Ap ! total mass ratio for n-body dist - integer :: n_bodies ! number of bodies for n-body dist - real(8) :: E_max ! parameter for n-body dist - real(8) :: x, y, v ! intermediate variables for n-body dist - real(8) :: r1, r2, r3, r4, r5, r6 - logical :: histogram_interp ! use histogram interpolation on incoming energy - - ! ========================================================================== - ! SAMPLE ENERGY DISTRIBUTION IF THERE ARE MULTIPLE - - if (associated(edist % next)) then - p_valid = interpolate_tab1(edist % p_valid, E_in) - - if (prn() > p_valid) then - if (edist % law == 44 .or. edist % law == 61) then - call sample_energy(edist%next, E_in, E_out, mu_out) - elseif (edist % law == 66) then - call sample_energy(edist%next, E_in, E_out, A=A, Q=Q) - else - call sample_energy(edist%next, E_in, E_out) - end if - return - end if - end if - - ! Determine which secondary energy distribution law to use - select case (edist % law) - case (1) - ! ======================================================================= - ! TABULAR EQUIPROBABLE ENERGY BINS - - ! read number of interpolation regions, incoming energies, and outgoing - ! energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - NET = int(edist % data(3 + 2*NR + NE)) - if (NR > 0) then - ! call write_particle_restart(p) - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample equiprobable energy bins.") - end if - - ! determine index on incoming energy grid and interpolation factor - lc = 2 + 2*NR - i = binary_search(edist % data(lc+1:lc+NE), NE, E_in) - r = (E_in - edist%data(lc+i)) / & - (edist%data(lc+i+1) - edist%data(lc+i)) - - ! Sample outgoing energy bin - r1 = prn() - k = 1 + int(NET * r1) - - ! Determine E_1 and E_K - lc = 3 + 3*NR + NE + (i-1)*NET - E_i_1 = edist % data(lc + 1) - E_i_K = edist % data(lc + NET) - - lc = 3 + 3*NR + NE + i*NET - E_i1_1 = edist % data(lc + 1) - E_i1_K = edist % data(lc + NET) - - E_1 = E_i_1 + r*(E_i1_1 - E_i_1) - E_K = E_i_K + r*(E_i1_K - E_i_K) - - ! Randomly select between the outgoing table for incoming energy E_i and - ! E_(i+1) - if (prn() < r) then - l = i + 1 - else - l = i - end if - - ! Determine E_l_k and E_l_k+1 - lc = 3 + 2*NR + NE + (l-1)*NET - E_l_k = edist % data(lc+k) - E_l_k1 = edist % data(lc+k+1) - - ! Determine E' (denoted here as E_out) - r2 = prn() - E_out = E_l_k + r2*(E_l_k1 - E_l_k) - - ! Now interpolate between incident energy bins i and i + 1 - if (l == i) then - E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) - else - E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) - end if - - case (3) - ! ======================================================================= - ! INELASTIC LEVEL SCATTERING - - E_out = edist%data(2) * (E_in - edist%data(1)) - - case (4) - ! ======================================================================= - ! CONTINUOUS TABULAR DISTRIBUTION - - ! read number of interpolation regions and incoming energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - if (NR == 1) then - histogram_interp = (edist % data(3) == 1) - else if (NR > 1) then - ! call write_particle_restart(p) - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample continuous tabular distribution.") - else - histogram_interp = .false. - end if - - ! find energy bin and calculate interpolation factor -- if the energy is - ! outside the range of the tabulated energies, choose the first or last - ! bins - lc = 2 + 2*NR - if (E_in < edist % data(lc+1)) then - i = 1 - r = ZERO - elseif (E_in > edist % data(lc+NE)) then - i = NE - 1 - r = ONE - else - i = binary_search(edist % data(lc+1:lc+NE), NE, E_in) - r = (E_in - edist%data(lc+i)) / & - (edist%data(lc+i+1) - edist%data(lc+i)) - end if - - ! Sample between the ith and (i+1)th bin - if (histogram_interp) then - l = i - else - r2 = prn() - if (r > r2) then - l = i + 1 - else - l = i - end if - end if - - ! interpolation for energy E1 and EK - lc = int(edist%data(2 + 2*NR + NE + i)) - NP = int(edist%data(lc + 2)) - E_i_1 = edist%data(lc + 2 + 1) - E_i_K = edist%data(lc + 2 + NP) - - lc = int(edist%data(2 + 2*NR + NE + i + 1)) - NP = int(edist%data(lc + 2)) - E_i1_1 = edist%data(lc + 2 + 1) - E_i1_K = edist%data(lc + 2 + NP) - - E_1 = E_i_1 + r*(E_i1_1 - E_i_1) - E_K = E_i_K + r*(E_i1_K - E_i_K) - - ! determine location of outgoing energies, pdf, cdf for E(l) - lc = int(edist % data(2 + 2*NR + NE + l)) - - ! determine type of interpolation and number of discrete lines - INTTp = int(edist % data(lc + 1)) - NP = int(edist % data(lc + 2)) - if (INTTp > 10) then - INTT = mod(INTTp,10) - ND = (INTTp - INTT)/10 - else - INTT = INTTp - ND = 0 - end if - - if (ND > 0) then - ! discrete lines present - ! call write_particle_restart(p) - call fatal_error("Discrete lines in continuous tabular distributed not & - &yet supported") - end if - - ! determine outgoing energy bin - r1 = prn() - lc = lc + 2 ! start of EOUT - c_k = edist % data(lc + 2*NP + 1) - do k = 1, NP - 1 - c_k1 = edist % data(lc + 2*NP + k+1) - if (r1 < c_k1) exit - c_k = c_k1 - end do - - ! check to make sure k is <= NP - 1 - k = min(k, NP - 1) - - E_l_k = edist % data(lc+k) - p_l_k = edist % data(lc+NP+k) - if (INTT == HISTOGRAM) then - ! Histogram interpolation - if (p_l_k > ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k - end if - - elseif (INTT == LINEAR_LINEAR) then - ! Linear-linear interpolation - E_l_k1 = edist % data(lc+k+1) - p_l_k1 = edist % data(lc+NP+k+1) - - frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) - if (frac == ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & - 2*frac*(r1 - c_k))) - p_l_k)/frac - end if - else - ! call write_particle_restart(p) - call fatal_error("Unknown interpolation type: " // trim(to_str(INTT))) - end if - - ! Now interpolate between incident energy bins i and i + 1 - if (.not. histogram_interp) then - if (l == i) then - E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) - else - E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) - end if - end if - - case (5) - ! ======================================================================= - ! GENERAL EVAPORATION SPECTRUM - - case (7) - ! ======================================================================= - ! MAXWELL FISSION SPECTRUM - - ! read number of interpolation regions and incoming energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - - ! determine nuclear temperature from tabulated function - T = interpolate_tab1(edist % data, E_in) - - ! determine restriction energy - lc = 2 + 2*NR + 2*NE - U = edist % data(lc + 1) - - n_sample = 0 - do - ! sample maxwell fission spectrum - E_out = maxwell_spectrum(T) - - ! accept energy based on restriction energy - if (E_out <= E_in - U) exit - - ! check for large number of rejections - n_sample = n_sample + 1 - if (n_sample == MAX_SAMPLE) then - ! call write_particle_restart(p) - call fatal_error("Too many rejections on Maxwell fission spectrum.") - end if - end do - - case (9) - ! ======================================================================= - ! EVAPORATION SPECTRUM - - ! read number of interpolation regions and incoming energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - - ! determine nuclear temperature from tabulated function - T = interpolate_tab1(edist % data, E_in) - - ! determine restriction energy - lc = 2 + 2*NR + 2*NE - U = edist % data(lc + 1) - - y = (E_in - U)/T - v = 1 - exp(-y) - - ! sample outgoing energy based on evaporation spectrum probability - ! density function - n_sample = 0 - do - x = -log((1 - v*prn())*(1 - v*prn())) - if (x <= y) exit - - ! check for large number of rejections - n_sample = n_sample + 1 - if (n_sample == MAX_SAMPLE) then - ! call write_particle_restart(p) - call fatal_error("Too many rejections on evaporation spectrum.") - end if - end do - - E_out = x*T - - case (11) - ! ======================================================================= - ! ENERGY-DEPENDENT WATT SPECTRUM - - ! read number of interpolation regions and incoming energies for - ! parameter 'a' - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - - ! determine Watt parameter 'a' from tabulated function - Watt_a = interpolate_tab1(edist % data, E_in) - - ! determine Watt parameter 'b' from tabulated function - lc = 2 + 2*(NR + NE) - Watt_b = interpolate_tab1(edist % data, E_in, lc + 1) - - ! read number of interpolation regions and incoming energies for - ! parameter 'a' - NR = int(edist % data(lc + 1)) - NE = int(edist % data(lc + 2 + 2*NR)) - - ! determine restriction energy - lc = lc + 2 + 2*(NR + NE) - U = edist % data(lc + 1) - - n_sample = 0 - do - ! Sample energy-dependent Watt fission spectrum - E_out = watt_spectrum(Watt_a, Watt_b) - - ! accept energy based on restriction energy - if (E_out <= E_in - U) exit - - ! check for large number of rejections - n_sample = n_sample + 1 - if (n_sample == MAX_SAMPLE) then - ! call write_particle_restart(p) - call fatal_error("Too many rejections on Watt spectrum.") - end if - end do - - case (44) - ! ======================================================================= - ! KALBACH-MANN CORRELATED SCATTERING - - if (.not. present(mu_out)) then - ! call write_particle_restart(p) - call fatal_error("Law 44 called without giving mu_out as argument.") - end if - - ! read number of interpolation regions and incoming energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - if (NR > 0) then - ! call write_particle_restart(p) - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample Kalbach-Mann distribution.") - end if - - ! find energy bin and calculate interpolation factor -- if the energy is - ! outside the range of the tabulated energies, choose the first or last - ! bins - lc = 2 + 2*NR - if (E_in < edist % data(lc+1)) then - i = 1 - r = ZERO - elseif (E_in > edist % data(lc+NE)) then - i = NE - 1 - r = ONE - else - i = binary_search(edist % data(lc+1:lc+NE), NE, E_in) - r = (E_in - edist%data(lc+i)) / & - (edist%data(lc+i+1) - edist%data(lc+i)) - end if - - ! Sample between the ith and (i+1)th bin - r2 = prn() - if (r > r2) then - l = i + 1 - else - l = i - end if - - ! determine endpoints on grid i - lc = int(edist%data(2+2*NR+NE + i)) ! start of LDAT for i - NP = int(edist%data(lc + 2)) - E_i_1 = edist%data(lc + 2 + 1) - E_i_K = edist%data(lc + 2 + NP) - - ! determine endpoints on grid i+1 - lc = int(edist%data(2+2*NR+NE + i+1)) ! start of LDAT for i+1 - NP = int(edist%data(lc + 2)) - E_i1_1 = edist%data(lc + 2 + 1) - E_i1_K = edist%data(lc + 2 + NP) - - E_1 = E_i_1 + r*(E_i1_1 - E_i_1) - E_K = E_i_K + r*(E_i1_K - E_i_K) - - ! determine location of outgoing energies, pdf, cdf for E(l) - lc = int(edist % data(2 + 2*NR + NE + l)) - - ! determine type of interpolation and number of discrete lines - INTTp = int(edist % data(lc + 1)) - NP = int(edist % data(lc + 2)) - if (INTTp > 10) then - INTT = mod(INTTp,10) - ND = (INTTp - INTT)/10 - else - INTT = INTTp - ND = 0 - end if - - if (ND > 0) then - ! discrete lines present - ! call write_particle_restart(p) - call fatal_error("Discrete lines in continuous tabular distributed not & - &yet supported") - end if - - ! determine outgoing energy bin - r1 = prn() - lc = lc + 2 ! start of EOUT - c_k = edist % data(lc + 2*NP + 1) - do k = 1, NP - 1 - c_k1 = edist % data(lc + 2*NP + k+1) - if (r1 < c_k1) exit - c_k = c_k1 - end do - - ! check to make sure k is <= NP - 1 - k = min(k, NP - 1) - - E_l_k = edist % data(lc+k) - p_l_k = edist % data(lc+NP+k) - if (INTT == HISTOGRAM) then - ! Histogram interpolation - if (p_l_k > ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k - end if - - ! Determine Kalbach-Mann parameters - KM_R = edist % data(lc + 3*NP + k) - KM_A = edist % data(lc + 4*NP + k) - - elseif (INTT == LINEAR_LINEAR) then - ! Linear-linear interpolation - E_l_k1 = edist % data(lc+k+1) - p_l_k1 = edist % data(lc+NP+k+1) - - ! Find E prime - frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) - if (frac == ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & - 2*frac*(r1 - c_k))) - p_l_k)/frac - end if - - ! Determine Kalbach-Mann parameters - R_k = edist % data(lc + 3*NP + k) - R_k1 = edist % data(lc + 3*NP + k+1) - A_k = edist % data(lc + 4*NP + k) - A_k1 = edist % data(lc + 4*NP + k+1) - - KM_R = R_k + (R_k1 - R_k)*(E_out - E_l_k)/(E_l_k1 - E_l_k) - KM_A = A_k + (A_k1 - A_k)*(E_out - E_l_k)/(E_l_k1 - E_l_k) - else - ! call write_particle_restart() - call fatal_error("Unknown interpolation type: " // trim(to_str(INTT))) - end if - - ! Now interpolate between incident energy bins i and i + 1 - if (l == i) then - E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) - else - E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) - end if - - ! Sampled correlated angle from Kalbach-Mann parameters - r3 = prn() - r4 = prn() - if (r3 > KM_R) then - T = (TWO*r4 - ONE) * sinh(KM_A) - mu_out = log(T + sqrt(T*T + ONE))/KM_A - else - mu_out = log(r4*exp(KM_A) + (ONE - r4)*exp(-KM_A))/KM_A - end if - - case (61) - ! ======================================================================= - ! CORRELATED ENERGY AND ANGLE DISTRIBUTION - - if (.not. present(mu_out)) then - ! call write_particle_restart() - call fatal_error("Law 61 called without giving mu_out as argument.") - end if - - ! read number of interpolation regions and incoming energies - NR = int(edist % data(1)) - NE = int(edist % data(2 + 2*NR)) - if (NR > 0) then - ! call write_particle_restart() - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample correlated energy-angle distribution.") - end if - - ! find energy bin and calculate interpolation factor -- if the energy is - ! outside the range of the tabulated energies, choose the first or last - ! bins - lc = 2 + 2*NR - if (E_in < edist % data(lc+1)) then - i = 1 - r = ZERO - elseif (E_in > edist % data(lc+NE)) then - i = NE - 1 - r = ONE - else - i = binary_search(edist % data(lc+1:lc+NE), NE, E_in) - r = (E_in - edist%data(lc+i)) / & - (edist%data(lc+i+1) - edist%data(lc+i)) - end if - - ! Sample between the ith and (i+1)th bin - r2 = prn() - if (r > r2) then - l = i + 1 - else - l = i - end if - - ! determine endpoints on grid i - lc = int(edist%data(2+2*NR+NE + i)) ! start of LDAT for i - NP = int(edist%data(lc + 2)) - E_i_1 = edist%data(lc + 2 + 1) - E_i_K = edist%data(lc + 2 + NP) - - ! determine endpoints on grid i+1 - lc = int(edist%data(2+2*NR+NE + i+1)) ! start of LDAT for i+1 - NP = int(edist%data(lc + 2)) - E_i1_1 = edist%data(lc + 2 + 1) - E_i1_K = edist%data(lc + 2 + NP) - - E_1 = E_i_1 + r*(E_i1_1 - E_i_1) - E_K = E_i_K + r*(E_i1_K - E_i_K) - - ! determine location of outgoing energies, pdf, cdf for E(l) - lc = int(edist % data(2 + 2*NR + NE + l)) - - ! determine type of interpolation and number of discrete lines - INTTp = int(edist % data(lc + 1)) - NP = int(edist % data(lc + 2)) - if (INTTp > 10) then - INTT = mod(INTTp,10) - ND = (INTTp - INTT)/10 - else - INTT = INTTp - ND = 0 - end if - - if (ND > 0) then - ! discrete lines present - ! call write_particle_restart() - call fatal_error("Discrete lines in continuous tabular distributed not & - &yet supported") - end if - - ! determine outgoing energy bin - r1 = prn() - lc = lc + 2 ! start of EOUT - c_k = edist % data(lc + 2*NP + 1) - do k = 1, NP - 1 - c_k1 = edist % data(lc + 2*NP + k+1) - if (r1 < c_k1) exit - c_k = c_k1 - end do - - ! check to make sure k is <= NP - 1 - k = min(k, NP - 1) - - E_l_k = edist % data(lc+k) - p_l_k = edist % data(lc+NP+k) - if (INTT == HISTOGRAM) then - ! Histogram interpolation - if (p_l_k > ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k - end if - - elseif (INTT == LINEAR_LINEAR) then - ! Linear-linear interpolation - E_l_k1 = edist % data(lc+k+1) - p_l_k1 = edist % data(lc+NP+k+1) - - ! Find E prime - frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) - if (frac == ZERO) then - E_out = E_l_k + (r1 - c_k)/p_l_k - else - E_out = E_l_k + (sqrt(max(ZERO, p_l_k*p_l_k + & - 2*frac*(r1 - c_k))) - p_l_k)/frac - end if - else - ! call write_particle_restart() - call fatal_error("Unknown interpolation type: " // trim(to_str(INTT))) - end if - - ! Now interpolate between incident energy bins i and i + 1 - if (l == i) then - E_out = E_1 + (E_out - E_i_1)*(E_K - E_1)/(E_i_K - E_i_1) - else - E_out = E_1 + (E_out - E_i1_1)*(E_K - E_1)/(E_i1_K - E_i1_1) - end if - - ! Find correlated angular distribution for closest outgoing energy bin - if (r1 - c_k < c_k1 - r1) then - lc = int(edist % data(lc + 3*NP + k)) - else - lc = int(edist % data(lc + 3*NP + k + 1)) - end if - - ! Check if angular distribution is isotropic - if (lc == 0) then - mu_out = TWO * prn() - ONE - return - end if - - ! interpolation type and number of points in angular distribution - JJ = int(edist % data(lc + 1)) - NP = int(edist % data(lc + 2)) - - ! determine outgoing cosine bin - r3 = prn() - lc = lc + 2 - c_k = edist % data(lc + 2*NP + 1) - do k = 1, NP - 1 - c_k1 = edist % data(lc + 2*NP + k+1) - if (r3 < c_k1) exit - c_k = c_k1 - end do - - ! check to make sure k is <= NP - 1 - k = min(k, NP - 1) - - p_k = edist % data(lc + NP + k) - mu_k = edist % data(lc + k) - if (JJ == HISTOGRAM) then - ! Histogram interpolation - if (p_k > ZERO) then - mu_out = mu_k + (r3 - c_k)/p_k - else - mu_out = mu_k - end if - - elseif (JJ == LINEAR_LINEAR) then - ! Linear-linear interpolation - p_k1 = edist % data(lc + NP + k+1) - mu_k1 = edist % data(lc + k+1) - - frac = (p_k1 - p_k)/(mu_k1 - mu_k) - if (frac == ZERO) then - mu_out = mu_k + (r3 - c_k)/p_k - else - mu_out = mu_k + (sqrt(p_k*p_k + 2*frac*(r3 - c_k))-p_k)/frac - end if - else - ! call write_particle_restart() - call fatal_error("Unknown interpolation type: " // trim(to_str(JJ))) - end if - - case (66) - ! ======================================================================= - ! N-BODY PHASE SPACE DISTRIBUTION - - ! read number of bodies in phase space and total mass ratio - n_bodies = int(edist % data(1)) - Ap = edist % data(2) - - ! determine E_max parameter - E_max = (Ap - ONE)/Ap * (A/(A+ONE)*E_in + Q) - - ! x is essentially a Maxwellian distribution - x = maxwell_spectrum(ONE) - - select case (n_bodies) - case (3) - y = maxwell_spectrum(ONE) - case (4) - r1 = prn() - r2 = prn() - r3 = prn() - y = -log(r1*r2*r3) - case (5) - r1 = prn() - r2 = prn() - r3 = prn() - r4 = prn() - r5 = prn() - r6 = prn() - y = -log(r1*r2*r3*r4) - log(r5) * cos(PI/TWO*r6)**2 - end select - - ! now determine v and E_out - v = x/(x+y) - E_out = E_max * v - - case (67) - ! ======================================================================= - ! LABORATORY ENERGY-ANGLE LAW - - end select - - end subroutine sample_energy - end module physics diff --git a/src/search.F90 b/src/search.F90 index 0c345471c2..f338105f4d 100644 --- a/src/search.F90 +++ b/src/search.F90 @@ -1,7 +1,6 @@ module search use constants - use error, only: fatal_error implicit none diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index c3c82b588d..39ce5a1a8d 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -1,18 +1,21 @@ module secondary_correlated use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR - use distribution_univariate, only: Tabular - use error, only: fatal_error - use secondary_header, only: SecondaryDistribution + use distribution_univariate, only: DistributionContainer + use secondary_header, only: AngleEnergy use random_lcg, only: prn use search, only: binary_search type AngleEnergyTable - type(Tabular) :: energy - type(Tabular), allocatable :: angle(:) + integer :: interpolation + integer :: n_discrete + real(8), allocatable :: e_out(:) + real(8), allocatable :: p(:) + real(8), allocatable :: c(:) + type(DistributionContainer), allocatable :: angle(:) end type AngleEnergyTable - type, extends(SecondaryDistribution) :: CorrelatedAngleEnergy + type, extends(AngleEnergy) :: CorrelatedAngleEnergy integer :: n_region integer, allocatable :: breakpoints(:) integer, allocatable :: interpolation(:) @@ -43,12 +46,6 @@ contains real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l real(8) :: c_k, c_k1 ! cumulative probability - ! TODO: Write error during initialization - if (this%n_region > 1) then - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample Kalbach-Mann distribution.") - end if - ! find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins n_energy_in = size(this%energy_in) @@ -72,30 +69,23 @@ contains end if ! interpolation for energy E1 and EK - n_energy_out = size(this%table(i)%energy%x) - E_i_1 = this%table(i)%energy%x(1) - E_i_K = this%table(i)%energy%x(n_energy_out) + n_energy_out = size(this%table(i)%e_out) + E_i_1 = this%table(i)%e_out(1) + E_i_K = this%table(i)%e_out(n_energy_out) - n_energy_out = size(this%table(i+1)%energy%x) - E_i1_1 = this%table(i+1)%energy%x(1) - E_i1_K = this%table(i+1)%energy%x(n_energy_out) + n_energy_out = size(this%table(i+1)%e_out) + E_i1_1 = this%table(i+1)%e_out(1) + E_i1_K = this%table(i+1)%e_out(n_energy_out) E_1 = E_i_1 + r*(E_i1_1 - E_i_1) E_K = E_i_K + r*(E_i1_K - E_i_K) -!!$ ! TODO: Write error at initizliation -!!$ if (this%table(l)%n_discrete > 0) then -!!$ ! discrete lines present -!!$ call fatal_error("Discrete lines in continuous tabular distributed not & -!!$ &yet supported") -!!$ end if - ! determine outgoing energy bin - n_energy_out = size(this%table(l)%energy%x) + n_energy_out = size(this%table(l)%e_out) r1 = prn() - c_k = this%table(l)%energy%c(1) + c_k = this%table(l)%c(1) do k = 1, n_energy_out - 1 - c_k1 = this%table(l)%energy%c(k+1) + c_k1 = this%table(l)%c(k+1) if (r1 < c_k1) exit c_k = c_k1 end do @@ -103,9 +93,9 @@ contains ! check to make sure k is <= NP - 1 k = min(k, n_energy_out - 1) - E_l_k = this%table(l)%energy%x(k) - p_l_k = this%table(l)%energy%p(k) - if (this%table(l)%energy%interpolation == HISTOGRAM) then + E_l_k = this%table(l)%e_out(k) + p_l_k = this%table(l)%p(k) + if (this%table(l)%interpolation == HISTOGRAM) then ! Histogram interpolation if (p_l_k > ZERO) then E_out = E_l_k + (r1 - c_k)/p_l_k @@ -113,10 +103,10 @@ contains E_out = E_l_k end if - elseif (this%table(l)%energy%interpolation == LINEAR_LINEAR) then + elseif (this%table(l)%interpolation == LINEAR_LINEAR) then ! Linear-linear interpolation - E_l_k1 = this%table(l)%energy%x(k+1) - p_l_k1 = this%table(l)%energy%p(k+1) + E_l_k1 = this%table(l)%e_out(k+1) + p_l_k1 = this%table(l)%p(k+1) frac = (p_l_k1 - p_l_k)/(E_l_k1 - E_l_k) if (frac == ZERO) then @@ -136,9 +126,9 @@ contains ! Find correlated angular distribution for closest outgoing energy bin if (r1 - c_k < c_k1 - r1) then - mu = this%table(l)%angle(k)%sample() + mu = this%table(l)%angle(k)%obj%sample() else - mu = this%table(l)%angle(k + 1)%sample() + mu = this%table(l)%angle(k + 1)%obj%sample() end if end subroutine correlated_sample diff --git a/src/secondary_header.F90 b/src/secondary_header.F90 index 1f8ad3aed1..30cdab8b88 100644 --- a/src/secondary_header.F90 +++ b/src/secondary_header.F90 @@ -13,13 +13,6 @@ module secondary_header class(AngleEnergy), allocatable :: obj end type AngleEnergyContainer - type :: SecondaryDistribution - type(Tab1), allocatable :: applicability(:) - type(AngleEnergyContainer), allocatable :: distribution(:) - contains - procedure :: sample => secondary_sample - end type SecondaryDistribution - abstract interface subroutine iSampleAngleEnergy(this, E_in, E_out, mu) import AngleEnergy @@ -30,6 +23,18 @@ module secondary_header end subroutine iSampleAngleEnergy end interface +!=============================================================================== +! SECONDARYDISTRIBUTION stores a secondary distribution for angle and energy, +! whether correlated or uncorrelated. +!=============================================================================== + + type :: SecondaryDistribution + type(Tab1), allocatable :: applicability(:) + type(AngleEnergyContainer), allocatable :: distribution(:) + contains + procedure :: sample => secondary_sample + end type SecondaryDistribution + contains subroutine secondary_sample(this, E_in, E_out, mu) diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index d0d2f32bf2..9764502ef6 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -1,8 +1,7 @@ module secondary_kalbach use constants, only: ZERO, ONE, TWO, HISTOGRAM, LINEAR_LINEAR - use error, only: fatal_error - use secondary_header, only: SecondaryDistribution + use secondary_header, only: AngleEnergy use random_lcg, only: prn use search, only: binary_search @@ -16,7 +15,7 @@ module secondary_kalbach real(8), allocatable :: a(:) end type KalbachMannTable - type, extends(SecondaryDistribution) :: KalbachMann + type, extends(AngleEnergy) :: KalbachMann integer :: n_region integer, allocatable :: breakpoints(:) integer, allocatable :: interpolation(:) @@ -49,12 +48,6 @@ contains real(8) :: km_r, km_a ! Kalbach-Mann parameters real(8) :: T - ! TODO: Write error during initialization - if (this%n_region > 1) then - call fatal_error("Multiple interpolation regions not supported while & - &attempting to sample Kalbach-Mann distribution.") - end if - ! find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins n_energy_in = size(this%energy_in) @@ -89,13 +82,6 @@ contains E_1 = E_i_1 + r*(E_i1_1 - E_i_1) E_K = E_i_K + r*(E_i1_K - E_i_K) - ! TODO: Write error at initizliation - if (this%table(l)%n_discrete > 0) then - ! discrete lines present - call fatal_error("Discrete lines in continuous tabular distributed not & - &yet supported") - end if - ! determine outgoing energy bin n_energy_out = size(this%table(l)%e_out) r1 = prn() diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 index 7d0046aa4f..bd10512bd1 100644 --- a/src/secondary_uncorrelated.F90 +++ b/src/secondary_uncorrelated.F90 @@ -1,10 +1,12 @@ module secondary_uncorrelated use angle_distribution, only: AngleDistribution + use constants, only: ONE, TWO use energy_distribution, only: EnergyDistribution - use secondary_header, only: SecondaryDistribution + use secondary_header, only: AngleEnergy + use random_lcg, only: prn - type, extends(SecondaryDistribution) :: UncorrelatedAngleEnergy + type, extends(AngleEnergy) :: UncorrelatedAngleEnergy type(AngleDistribution) :: angle class(EnergyDistribution), allocatable :: energy contains @@ -20,7 +22,12 @@ contains real(8), intent(out) :: mu ! Sample cosine of scattering angle - mu = this%angle%sample(E_in) + if (allocated(this%angle%energy)) then + mu = this%angle%sample(E_in) + else + ! no angle distribution given => assume isotropic for all energies + mu = TWO*prn() - ONE + end if ! Sample outgoing energy E_out = this%energy%sample(E_in) From a7ca67b33468b7973e5ac4036dbdb7bebf9f8a9e Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 18 Nov 2015 15:10:05 -0600 Subject: [PATCH 03/61] Don't sample between energy distributions if there's only one --- src/secondary_header.F90 | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/secondary_header.F90 b/src/secondary_header.F90 index 30cdab8b88..e0c414826b 100644 --- a/src/secondary_header.F90 +++ b/src/secondary_header.F90 @@ -43,18 +43,26 @@ contains real(8), intent(out) :: E_out real(8), intent(out) :: mu + integer :: n real(8) :: p_valid - do i = 1, size(this%applicability) - ! Determine probability that i-th energy distribution is sampled - p_valid = interpolate_tab1(this%applicability(i), E_in) + n = size(this%applicability) + if (n > 1) then + do i = 1, n + ! Determine probability that i-th energy distribution is sampled + p_valid = interpolate_tab1(this%applicability(i), E_in) + + ! If i-th distribution is sampled, sample energy from the distribution + if (prn() <= p_valid) then + call this%distribution(i)%obj%sample(E_in, E_out, mu) + exit + end if + end do + else + ! If only one distribution is present, go ahead and sample it + call this%distribution(1)%obj%sample(E_in, E_out, mu) + end if - ! If i-th distribution is sampled, sample energy from the distribution - if (prn() <= p_valid) then - call this%distribution(i)%obj%sample(E_in, E_out, mu) - exit - end if - end do end subroutine secondary_sample end module secondary_header From 306f7016b63b25015a20fed0ed2394ae796a3ef5 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 18 Nov 2015 16:08:58 -0600 Subject: [PATCH 04/61] Use ACE-provided cumulative frequencies for angular distributions --- src/ace.F90 | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/ace.F90 b/src/ace.F90 index 1407a4b132..6fb37c54ad 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -902,8 +902,6 @@ contains integer :: k ! index over energy distributions integer :: interp integer, allocatable :: LC(:) ! locator - real(8), allocatable :: x(:) - real(8), allocatable :: p(:) ! loop over all reactions with secondary neutrons -- NXS(5) does not include ! elastic scattering @@ -977,13 +975,10 @@ contains ! Get probability density data XSS_index = XSS_index + 2 - allocate(x(NP), p(NP)) - x(:) = get_real(NP) - p(:) = get_real(NP) - - ! initialize distribution - call adist%initialize(x, p, interp) - deallocate(x, p) + allocate(adist%x(NP), adist%p(NP), adist%c(NP)) + adist%x(:) = get_real(NP) + adist%p(:) = get_real(NP) + adist%c(:) = get_real(NP) end select end do deallocate(LC) @@ -1069,8 +1064,6 @@ contains integer :: interp integer, allocatable :: L(:) ! locations of distributions for each Ein integer, allocatable :: LC(:) ! locations of distributions for each Ein - real(8), allocatable :: x(:) - real(8), allocatable :: p(:) XSS_index = LDIS + IDAT - 1 @@ -1355,13 +1348,10 @@ contains ! Get probability density data XSS_index = XSS_index + 2 - allocate(x(NP), p(NP)) - x(:) = get_real(NP) - p(:) = get_real(NP) - - ! initialize distribution - call adist%initialize(x, p, interp) - deallocate(x, p) + allocate(adist%x(NP), adist%p(NP), adist%c(NP)) + adist%x(:) = get_real(NP) + adist%p(:) = get_real(NP) + adist%c(:) = get_real(NP) end select end do deallocate(LC) From 6262e07cbd83bb3eb379543f8729c898339b2961 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 22 Dec 2015 09:09:17 -0600 Subject: [PATCH 05/61] A few patches so that RNG streams still match --- src/ace.F90 | 16 ++++++++++++++++ src/secondary_correlated.F90 | 8 ++++++++ src/secondary_kalbach.F90 | 9 +++++++++ src/secondary_uncorrelated.F90 | 8 +++++++- 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/ace.F90 b/src/ace.F90 index 6fb37c54ad..5b003d4067 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -1035,6 +1035,22 @@ contains call get_energy_dist(secondary%distribution(n)%obj, LAW, & JXS(11), IDAT, nuc%awr, nuc%reactions(i)%Q_value) + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< + ! Before the secondary distribution refactor, when the angle/energy + ! distribution was uncorrelated, no angle was actually sampled. With + ! the refactor, an angle is always sampled for an uncorrelated + ! distribution even when no angle distribution exists in the ACE file + ! (isotropic is assumed). To preserve the RNG stream, we explicitly + ! mark fission reactions so that we avoid the angle sampling. + if (any(nuc%reactions(i + 1)%MT == & + [N_FISSION, N_F, N_NF, N_2NF, N_3NF])) then + select type (aedist => secondary%distribution(n)%obj) + type is (UncorrelatedAngleEnergy) + aedist%fission = .true. + end select + end if + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< + ! Get locator for next distribution LNW = nint(XSS(JXS(11) + LNW - 1)) end do diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index 39ce5a1a8d..5b1d49e28d 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -46,6 +46,14 @@ contains real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l real(8) :: c_k, c_k1 ! cumulative probability + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + ! Before the secondary distribution refactor, an isotropic polar cosine was + ! always sampled but then overwritten with the polar cosine sampled from the + ! correlated distribution. To preserve the random number stream, we keep + ! this dummy sampling here but can remove it later (will change answers) + mu = TWO*prn() - ONE + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + ! find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins n_energy_in = size(this%energy_in) diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index 9764502ef6..d38541edd5 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -48,6 +48,14 @@ contains real(8) :: km_r, km_a ! Kalbach-Mann parameters real(8) :: T + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + ! Before the secondary distribution refactor, an isotropic polar cosine was + ! always sampled but then overwritten with the polar cosine sampled from the + ! correlated distribution. To preserve the random number stream, we keep + ! this dummy sampling here but can remove it later (will change answers) + mu = TWO*prn() - ONE + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + ! find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins n_energy_in = size(this%energy_in) @@ -144,6 +152,7 @@ contains r1 = prn() mu = log(r1*exp(km_a) + (ONE - r1)*exp(-km_a))/km_a end if + end subroutine kalbachmann_sample end module secondary_kalbach diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 index bd10512bd1..40fa53a382 100644 --- a/src/secondary_uncorrelated.F90 +++ b/src/secondary_uncorrelated.F90 @@ -7,6 +7,7 @@ module secondary_uncorrelated use random_lcg, only: prn type, extends(AngleEnergy) :: UncorrelatedAngleEnergy + logical :: fission = .false. type(AngleDistribution) :: angle class(EnergyDistribution), allocatable :: energy contains @@ -22,7 +23,12 @@ contains real(8), intent(out) :: mu ! Sample cosine of scattering angle - if (allocated(this%angle%energy)) then + if (this%fission) then + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + ! For fission, the angle is not used, so just assign a dummy value + mu = ONE + ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + elseif (allocated(this%angle%energy)) then mu = this%angle%sample(E_in) else ! no angle distribution given => assume isotropic for all energies From f4d655605a9c3ccde109d764f758a09962ad8e64 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 4 Jan 2016 14:58:08 -0600 Subject: [PATCH 06/61] Remove SAVE attribute (implicit) in global module. This was needed to remove a weird ICE in gfortran 4.6. --- src/global.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/global.F90 b/src/global.F90 index a5943b6b74..4c243ee41f 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -22,7 +22,6 @@ module global #endif implicit none - save ! ============================================================================ ! GEOMETRY-RELATED VARIABLES From e6c0793ab5cd58667942207aa8fc23d0954e0c85 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Fri, 15 Jan 2016 14:30:19 -0500 Subject: [PATCH 07/61] Now use tally summation for MGXS subdomain averaging --- openmc/aggregate.py | 2 +- openmc/mgxs/mgxs.py | 40 +++++----------------------------------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/openmc/aggregate.py b/openmc/aggregate.py index 50eb8c6278..32d22eedf5 100644 --- a/openmc/aggregate.py +++ b/openmc/aggregate.py @@ -237,7 +237,7 @@ class AggregateFilter(object): self.aggregate_op = aggregate_op def __hash__(self): - return hash((self.type, self.bins, self.aggregate_op)) + return hash(repr(self)) def __eq__(self, other): return str(other) == str(self) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e20a6a320e..abc1ed4912 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -843,50 +843,20 @@ class MGXS(object): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains) else: - subdomains = [0] + subdomains = None # Clone this MGXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) avg_xs._rxn_rate_tally = None avg_xs._xs_tally = None - avg_xs._sparse = False - - # If domain is distribcell, make the new domain 'cell' - if self.domain_type == 'distribcell': - avg_xs.domain_type = 'cell' # Average each of the tallies across subdomains for tally_type, tally in avg_xs.tallies.items(): + tally_avg = tally.summation(filter_type=self.domain_type, + filter_bins=subdomains) + avg_xs.tallies[tally_type] = tally_avg - # Make condensed tally derived and null out sum, sum_sq - tally._derived = True - tally._sum = None - tally._sum_sq = None - - # Get tally data arrays reshaped with one dimension per filter - mean = tally.get_reshaped_data(value='mean') - std_dev = tally.get_reshaped_data(value='std_dev') - - # Get the mean, std. dev. across requested subdomains - mean = np.sum(mean[subdomains, ...], axis=0) - std_dev = np.sum(std_dev[subdomains, ...]**2, axis=0) - std_dev = np.sqrt(std_dev) - - # If domain is distribcell, make subdomain-averaged a 'cell' domain - domain_filter = tally.find_filter(self._domain_type) - if domain_filter.type == 'distribcell': - domain_filter.type = 'cell' - domain_filter.num_bins = 1 - - # Reshape averaged data arrays with one dimension for all filters - mean = np.reshape(mean, tally.shape) - std_dev = np.reshape(std_dev, tally.shape) - - # Override tally's data with the new condensed data - tally._mean = mean - tally._std_dev = std_dev - - # Compute the subdomain-averaged multi-group cross section + avg_xs._domain_type = 'sum({0})'.format(self.domain_type) avg_xs.sparse = self.sparse return avg_xs From eb4a62e5f7c4f52181f90e4c9aa69d950238e4f1 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Mon, 18 Jan 2016 17:27:42 -0500 Subject: [PATCH 08/61] Allow link-time-optimization with GCC --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0f06d47ba..18d028a4bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,7 +122,7 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) list(APPEND ldflags -pg) endif() if(optimize) - list(APPEND f90flags -O3) + list(APPEND f90flags -O3 -flto -fuse-linker-plugin) endif() if(openmp) list(APPEND f90flags -fopenmp) From 7bb00368f23aa2cfdd3cb3528a5e5eaa870808c5 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Mon, 18 Jan 2016 18:44:16 -0500 Subject: [PATCH 09/61] Added test for MGXS library subdomain-averaging across distribcells --- openmc/aggregate.py | 4 +- openmc/mgxs/mgxs.py | 2 +- .../test_mgxs_library_condense.py | 2 - .../inputs_true.dat | 1 + .../results_true.dat | 5 ++ .../test_mgxs_library_distribcell.py | 85 +++++++++++++++++++ 6 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 tests/test_mgxs_library_distribcell/inputs_true.dat create mode 100644 tests/test_mgxs_library_distribcell/results_true.dat create mode 100644 tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py diff --git a/openmc/aggregate.py b/openmc/aggregate.py index dae0f76818..011ad38506 100644 --- a/openmc/aggregate.py +++ b/openmc/aggregate.py @@ -405,5 +405,5 @@ class AggregateFilter(object): aggregate_bin_array = np.repeat(aggregate_bin_array, datasize) # Construct Pandas DataFrame for the AggregateFilter - df = pd.DataFrame({self.aggregate_filter.type: aggregate_bin_array}) - return df \ No newline at end of file + df = pd.DataFrame({self.type: aggregate_bin_array}) + return df diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index abc1ed4912..0eec6d4585 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1219,7 +1219,7 @@ class MGXS(object): df = self.xs_tally.get_pandas_dataframe(summary=summary) # Remove the score column since it is homogeneous and redundant - if summary and self.domain_type == 'distribcell': + if summary and 'distribcell' in self.domain_type: df = df.drop('score', level=0, axis=1) else: df = df.drop('score', axis=1) diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index 4c84de2bf6..82ce3acabc 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -63,8 +63,6 @@ class MGXSTestHarness(PyAPITestHarness): df = mgxs.get_pandas_dataframe() outstr += df.to_string() - print(outstr) - # Hash the results if necessary if hash_output: sha512 = hashlib.sha512() diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat new file mode 100644 index 0000000000..04e56658f2 --- /dev/null +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -0,0 +1 @@ +224a9e84e87c8a21385326d34ef27c046107d4a2ace6ee85d7a36142a3726e12532e2fc1a318ab707437e0b306a81c6d2b80c531d4c3210d4162242e6265ba70 \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/results_true.dat b/tests/test_mgxs_library_distribcell/results_true.dat new file mode 100644 index 0000000000..4936da4cec --- /dev/null +++ b/tests/test_mgxs_library_distribcell/results_true.dat @@ -0,0 +1,5 @@ + sum(distribcell) group in nuclide mean std. dev. +0 sum(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 1 total 0.720213 1.424323 sum(distribcell) group in nuclide mean std. dev. +0 sum(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 1 total 0 0 sum(distribcell) group in group out nuclide mean std. dev. +0 sum(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 1 1 total 0.70466 1.403916 sum(distribcell) group out nuclide mean std. dev. +0 sum(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 1 total 0 0 \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py new file mode 100644 index 0000000000..41aa1245d0 --- /dev/null +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + + # The openmc.mgxs module needs a summary.h5 file + self._input_set.settings.output = {'summary': True} + + # Generate inputs using parent class routine + super(MGXSTestHarness, self)._build_inputs() + + # Initialize a one-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.]) + + # Initialize MGXS Library for a few cross section types + # for one material-filled cell in the geometry + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib.by_nuclide = False + self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', + 'nu-scatter matrix', 'chi'] + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.domain_type = 'distribcell' + material_cells = self.mgxs_lib.openmc_geometry.get_all_material_cells() + self.mgxs_lib.domains = [material_cells[-1]] + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.TalliesFile() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=False): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file. + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Average the MGXS across distribcell subdomains + avg_lib = self.mgxs_lib.get_subdomain_avg_library() + + # Build a string from Pandas Dataframe for each 1-group MGXS + outstr = '' + for domain in avg_lib.domains: + for mgxs_type in avg_lib.mgxs_types: + mgxs = avg_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MGXSTestHarness('statepoint.10.*', True) + harness.main() From 2de30b8e389994fc872c745a34eac2f811f49ab5 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Tue, 19 Jan 2016 08:55:39 -0500 Subject: [PATCH 10/61] Removed blank line in test_mgxs_library_distribcell.py --- .../test_mgxs_library_distribcell.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py index 41aa1245d0..1de21a6037 100644 --- a/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py +++ b/tests/test_mgxs_library_distribcell/test_mgxs_library_distribcell.py @@ -73,7 +73,6 @@ class MGXSTestHarness(PyAPITestHarness): return outstr - def _cleanup(self): super(MGXSTestHarness, self)._cleanup() f = os.path.join(os.getcwd(), 'tallies.xml') From 254d68b69314655787d773188761186a853c21de Mon Sep 17 00:00:00 2001 From: Kelly Rowland Date: Tue, 19 Jan 2016 10:07:12 -0800 Subject: [PATCH 11/61] fix DOI link to burnup benchmark paper --- docs/source/publications.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/publications.rst b/docs/source/publications.rst index 369b9d9775..66300dc52a 100644 --- a/docs/source/publications.rst +++ b/docs/source/publications.rst @@ -28,7 +28,7 @@ Benchmarking - Khurrum S. Chaudri and Sikander M. Mirza, "Burnup dependent Monte Carlo neutron physics calculations of IAEA MTR benchmark," *Prog. Nucl. Energy*, - **81**, 43-52 (2015). ``_ + **81**, 43-52 (2015). ``_ - Daniel J. Kelly, Brian N. Aviles, Paul K. Romano, Bryan R. Herman, Nicholas E. Horelik, and Benoit Forget, "Analysis of select BEAVRS PWR From d4d86fb98cbe4ed34546cb4eb1b88418a707dd82 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 12:56:42 -0600 Subject: [PATCH 12/61] Update quick install instructions --- docs/source/quickinstall.rst | 44 +++++++++++++++++++++++++----- docs/source/usersguide/install.rst | 9 ++++-- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/docs/source/quickinstall.rst b/docs/source/quickinstall.rst index 9ce752be7c..8bf95e245f 100644 --- a/docs/source/quickinstall.rst +++ b/docs/source/quickinstall.rst @@ -12,24 +12,55 @@ OpenMC, see :ref:`usersguide_install` in the User's Manual. Installing on Ubuntu through PPA -------------------------------- -For users with Ubuntu 11.10 or later, a binary package for OpenMC is available -through a `Personal Package Archive`_ (PPA) and can be installed through the `APT -package manager`_. Simply enter the following commands into the terminal: +For users with Ubuntu 15.04 or later, a binary package for OpenMC is available +through a `Personal Package Archive`_ (PPA) and can be installed through the +`APT package manager`_. First, add the following PPA to the repository sources: .. code-block:: sh sudo apt-add-repository ppa:paulromano/staging + +Next, resynchronize the package index files: + +.. code-block:: sh + sudo apt-get update + +Now OpenMC should be recognized within the repository and can be installed: + +.. code-block:: sh + sudo apt-get install openmc -Currently, the binary package does not allow for parallel simulations or use of -HDF5_. Users who need such capabilities should build OpenMC from source as is -described in :ref:`usersguide_install`. +Binary packages from this PPA may exist for earlier versions of Ubuntu, but they +are no longer supported. .. _Personal Package Archive: https://launchpad.net/~paulromano/+archive/staging .. _APT package manager: https://help.ubuntu.com/community/AptGet/Howto .. _HDF5: http://www.hdfgroup.org/HDF5/ +--------------------------------------- +Installing from Source on Ubuntu 15.04+ +--------------------------------------- + +To build OpenMC from source, several :ref:`prerequisites ` are +needed. If you are Ubuntu 15.04 or higher, all prerequisites can be installed +directly from the package manager. + +.. code-block:: sh + + sudo apt-get install gfortran + sudo apt-get install cmake + sudo apt-get install libhdf5-dev + +After the packages have been installed, follow the instructions below for +building and installing OpenMC from source. + +.. note:: Before Ubuntu 15.04, the HDF5 package included in the Ubuntu Package + archive was not built with support for the Fortran 2003 HDF5 + interface, which is needed by OpenMC. If you are using Ubuntu 14.10 or + before you will need to build HDF5 from source. + ------------------------------------------- Installing from Source on Linux or Mac OS X ------------------------------------------- @@ -42,7 +73,6 @@ entering the following commands in a terminal: git clone https://github.com/mit-crpg/openmc.git cd openmc - git checkout -b master origin/master mkdir build && cd build cmake .. make diff --git a/docs/source/usersguide/install.rst b/docs/source/usersguide/install.rst index e3f0df5e91..4075e03033 100644 --- a/docs/source/usersguide/install.rst +++ b/docs/source/usersguide/install.rst @@ -9,8 +9,8 @@ Installing on Ubuntu with PPA ----------------------------- For users with Ubuntu 15.04 or later, a binary package for OpenMC is available -through a Personal Package Archive (PPA) and can be installed through the APT -package manager. First, add the following PPA to the repository sources: +through a `Personal Package Archive`_ (PPA) and can be installed through the +`APT package manager`_. First, add the following PPA to the repository sources: .. code-block:: sh @@ -31,10 +31,15 @@ Now OpenMC should be recognized within the repository and can be installed: Binary packages from this PPA may exist for earlier versions of Ubuntu, but they are no longer supported. +.. _Personal Package Archive: https://launchpad.net/~paulromano/+archive/staging +.. _APT package manager: https://help.ubuntu.com/community/AptGet/Howto + -------------------- Building from Source -------------------- +.. _prerequisites: + Prerequisites ------------- From 0e5a2ef3978cde06574e171a7f5e8ccfbe07b5bd Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 08:37:50 -0600 Subject: [PATCH 13/61] Fix missing 'collision' in tallies.rnc --- src/relaxng/tallies.rnc | 4 ++-- src/relaxng/tallies.rng | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/relaxng/tallies.rnc b/src/relaxng/tallies.rnc index 0f3672c6f2..cc327f8048 100644 --- a/src/relaxng/tallies.rnc +++ b/src/relaxng/tallies.rnc @@ -19,8 +19,8 @@ element tallies { (element id { xsd:int } | attribute id { xsd:int }) & (element name { xsd:string { maxLength="52" } } | attribute name { xsd:string { maxLength="52" } })? & - (element estimator { ( "analog" | "tracklength" ) } | - attribute estimator { ( "analog" | "tracklength" ) })? & + (element estimator { ( "analog" | "tracklength" | "collision" ) } | + attribute estimator { ( "analog" | "tracklength" | "collision" ) })? & element filter { (element type { ( "cell" | "cellborn" | "material" | "universe" | "surface" | "distribcell" | "mesh" | "energy" | "energyout" | "mu" | diff --git a/src/relaxng/tallies.rng b/src/relaxng/tallies.rng index 36bd5cb85f..755e9e90dc 100644 --- a/src/relaxng/tallies.rng +++ b/src/relaxng/tallies.rng @@ -120,12 +120,14 @@ analog tracklength + collision analog tracklength + collision From 80b6da6176a93ae88709a52987a9b3a53f48d9cc Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 08:39:36 -0600 Subject: [PATCH 14/61] Get coverage working with run_tests.py and generate HTML output --- CMakeLists.txt | 30 +++++++++++++----------------- tests/run_tests.py | 24 +++++++++++++++--------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0f06d47ba..a143c3d3b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -316,14 +316,14 @@ file(GLOB_RECURSE TESTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_*.py) # Check for MEM_CHECK and COVERAGE variables if (DEFINED ENV{MEM_CHECK}) set(MEM_CHECK $ENV{MEM_CHECK}) -else(DEFINED ENV{MEM_CHECK}) +else() set(MEM_CHECK FALSE) -endif(DEFINED ENV{MEM_CHECK}) +endif() if (DEFINED ENV{COVERAGE}) set(COVERAGE $ENV{COVERAGE}) -else(DEFINED ENV{COVERAGE}) +else() set(COVERAGE FALSE) -endif(DEFINED ENV{COVERAGE}) +endif() # Loop through all the tests foreach(test ${TESTS}) @@ -337,24 +337,20 @@ foreach(test ${TESTS}) # Check serial/parallel if (${MPI_ENABLED}) - # Preform a parallel test add_test(NAME ${TEST_NAME} WORKING_DIRECTORY ${TEST_PATH} COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $ --mpi_exec $ENV{MPI_DIR}/bin/mpiexec) - - else(${MPI_ENABLED}) - + else() # Perform a serial test add_test(NAME ${TEST_NAME} WORKING_DIRECTORY ${TEST_PATH} COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) - - endif(${MPI_ENABLED}) + endif() # Handle special case for valgrind and gcov (run openmc directly, no python) - else(NOT ${MEM_CHECK} AND NOT ${COVERAGE}) + else() # If a plot test is encountered, run with "-p" if (${test} MATCHES "test_plot") @@ -392,9 +388,9 @@ foreach(test ${TESTS}) set(RESTART_FILE particle_9_555.h5) elseif(${test} MATCHES "test_particle_restart_fixed") set(RESTART_FILE particle_7_928.h5) - else(${test} MATCHES "test_statepoint_restart") + else() message(FATAL_ERROR "Restart test ${test} not recognized") - endif(${test} MATCHES "test_statepoint_restart") + endif() # Perform serial valgrind and coverage test add_test(NAME ${TEST_NAME} @@ -411,15 +407,15 @@ foreach(test ${TESTS}) # Handle standard tests for valgrind and gcov - else(${test} MATCHES "test_plot") + else() # Perform serial valgrind and coverage test add_test(NAME ${TEST_NAME} WORKING_DIRECTORY ${TEST_PATH} - COMMAND $ ${TEST_PATH}) + COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) - endif(${test} MATCHES "test_plot") + endif() - endif(NOT ${MEM_CHECK} AND NOT ${COVERAGE}) + endif() endforeach(test) diff --git a/tests/run_tests.py b/tests/run_tests.py index 338732c142..eb8d8c5187 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -42,9 +42,9 @@ parser.add_option("-s", "--script", action="store_true", dest="script", # Default compiler paths FC='gfortran' -MPI_DIR='/opt/mpich/3.1.3-gnu' -HDF5_DIR='/opt/hdf5/1.8.15-gnu' -PHDF5_DIR='/opt/phdf5/1.8.15-gnu' +MPI_DIR='/opt/mpich/3.2-gnu' +HDF5_DIR='/opt/hdf5/1.8.16-gnu' +PHDF5_DIR='/opt/phdf5/1.8.16-gnu' # Script mode for extra capability script_mode = False @@ -412,12 +412,12 @@ for key in iter(tests): continue # Set test specific CTest script vars. Not used in non-script mode - ctest_vars.update({'build_name' : test.get_build_name()}) - ctest_vars.update({'build_opts' : test.get_build_opts()}) - ctest_vars.update({'mem_check' : test.valgrind}) - ctest_vars.update({'coverage' : test.coverage}) - ctest_vars.update({'valgrind_cmd' : test.valgrind_cmd}) - ctest_vars.update({'gcov_cmd' : test.gcov_cmd}) + ctest_vars.update({'build_name': test.get_build_name()}) + ctest_vars.update({'build_opts': test.get_build_opts()}) + ctest_vars.update({'mem_check': test.valgrind}) + ctest_vars.update({'coverage': test.coverage}) + ctest_vars.update({'valgrind_cmd': test.valgrind_cmd}) + ctest_vars.update({'gcov_cmd': test.gcov_cmd}) # Check for user custom tests # INCLUDE is a CTest command that allows for a subset @@ -471,6 +471,12 @@ for key in iter(tests): logfilename = logfilename + '_{0}.log'.format(test.name) shutil.copy(logfile[0], logfilename) + # For coverage builds, use lcov to generate HTML output + if test.coverage: + call(['lcov', '--directory', '.', '--capture', + '--output-file', 'coverage.info']) + call(['genhtml', '--output-directory', 'coverage', 'coverage.info']) + # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) if script_mode: From 05ea729022d11ce69e144e216154986520a7dcf9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 10:37:25 -0600 Subject: [PATCH 15/61] Use same add_tests for valgrind/coverage configurations --- CMakeLists.txt | 96 +++++----------------------------------- tests/testing_harness.py | 17 +++++++ 2 files changed, 28 insertions(+), 85 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a143c3d3b2..19c4e0ddc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -327,95 +327,21 @@ endif() # Loop through all the tests foreach(test ${TESTS}) - # Get test information get_filename_component(TEST_NAME ${test} NAME) get_filename_component(TEST_PATH ${test} PATH) - # Check for running standard tests (no valgrind, no gcov) - if(NOT ${MEM_CHECK} AND NOT ${COVERAGE}) - - # Check serial/parallel - if (${MPI_ENABLED}) - # Preform a parallel test - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $ - --mpi_exec $ENV{MPI_DIR}/bin/mpiexec) - else() - # Perform a serial test - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) - endif() - - # Handle special case for valgrind and gcov (run openmc directly, no python) + # Check serial/parallel + if (${MPI_ENABLED}) + # Preform a parallel test + add_test(NAME ${TEST_NAME} + WORKING_DIRECTORY ${TEST_PATH} + COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $ + --mpi_exec $ENV{MPI_DIR}/bin/mpiexec) else() - - # If a plot test is encountered, run with "-p" - if (${test} MATCHES "test_plot") - - # Perform serial valgrind and coverage test with plot flag - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND $ -p ${TEST_PATH}) - - elseif(${test} MATCHES "test_filter_distribcell") - - # Add each case for distribcell tests - add_test(NAME ${TEST_NAME}_case-1 - WORKING_DIRECTORY ${TEST_PATH}/case-1 - COMMAND $ ${TEST_PATH}/case-1) - add_test(NAME ${TEST_NAME}_case-2 - WORKING_DIRECTORY ${TEST_PATH}/case-2 - COMMAND $ ${TEST_PATH}/case-2) - add_test(NAME ${TEST_NAME}_case-3 - WORKING_DIRECTORY ${TEST_PATH}/case-3 - COMMAND $ ${TEST_PATH}/case-3) - add_test(NAME ${TEST_NAME}_case-4 - WORKING_DIRECTORY ${TEST_PATH}/case-4 - COMMAND $ ${TEST_PATH}/case-4) - - # If a restart test is encounted, need to run with -r and restart file(s) - elseif(${test} MATCHES "restart") - - # Handle restart tests separately - if(${test} MATCHES "test_statepoint_restart") - set(RESTART_FILE statepoint.07.h5) - elseif(${test} MATCHES "test_sourcepoint_restart") - set(RESTART_FILE statepoint.07.h5 source.07.h5) - elseif(${test} MATCHES "test_particle_restart_eigval") - set(RESTART_FILE particle_9_555.h5) - elseif(${test} MATCHES "test_particle_restart_fixed") - set(RESTART_FILE particle_7_928.h5) - else() - message(FATAL_ERROR "Restart test ${test} not recognized") - endif() - - # Perform serial valgrind and coverage test - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND $ ${TEST_PATH}) - - # Perform serial valgrind and coverage restart test - add_test(NAME ${TEST_NAME}_restart - WORKING_DIRECTORY ${TEST_PATH} - COMMAND $ -r ${RESTART_FILE} ${TEST_PATH}) - - # Set test dependency - set_tests_properties(${TEST_NAME}_restart PROPERTIES DEPENDS ${TEST_NAME}) - - - # Handle standard tests for valgrind and gcov - else() - - # Perform serial valgrind and coverage test - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) - - endif() - + # Perform a serial test + add_test(NAME ${TEST_NAME} + WORKING_DIRECTORY ${TEST_PATH} + COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) endif() - endforeach(test) diff --git a/tests/testing_harness.py b/tests/testing_harness.py index f1d72dd81c..190c702282 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -230,6 +230,23 @@ class CMFDTestHarness(TestHarness): class ParticleRestartTestHarness(TestHarness): """Specialized TestHarness for running OpenMC particle restart tests.""" + def _run_openmc(self): + # Set arguments + args = {'openmc_exec': self._opts.exe} + if self._opts.mpi_exec is not None: + args.update({'mpi_procs': self._opts.mpi_np, + 'mpi_exec': self._opts.mpi_exec}) + + # Initial run + executor = Executor() + returncode = executor.run_simulation(**args) + assert returncode == 0, 'OpenMC did not exit successfully.' + + # Run particle restart + args.update({'restart_file': self._sp_name}) + returncode = executor.run_simulation(**args) + assert returncode == 0, 'OpenMC did not exit successfully.' + def _test_output_created(self): """Make sure the restart file has been created.""" particle = glob.glob(os.path.join(os.getcwd(), self._sp_name)) From fbd66b94954c962e43dd0f1116765a430ac13ec8 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 08:44:05 -0600 Subject: [PATCH 16/61] Replace many filter/score tests with a single test_tallies --- tests/test_filter_azimuthal/inputs_true.dat | 1 - tests/test_filter_azimuthal/results_true.dat | 76 - .../test_filter_azimuthal.py | 59 - tests/test_filter_cell/inputs_true.dat | 1 - tests/test_filter_cell/results_true.dat | 11 - tests/test_filter_cell/test_filter_cell.py | 29 - tests/test_filter_cellborn/inputs_true.dat | 1 - tests/test_filter_cellborn/results_true.dat | 11 - .../test_filter_cellborn.py | 29 - .../test_filter_delayedgroup/inputs_true.dat | 1 - .../test_filter_delayedgroup/results_true.dat | 15 - .../test_filter_delayedgroup.py | 30 - tests/test_filter_energy/inputs_true.dat | 1 - tests/test_filter_energy/results_true.dat | 11 - .../test_filter_energy/test_filter_energy.py | 30 - tests/test_filter_energyout/inputs_true.dat | 1 - tests/test_filter_energyout/results_true.dat | 11 - .../test_filter_energyout.py | 30 - .../inputs_true.dat | 1 - .../results_true.dat | 67 - .../test_filter_group_transfer.py | 34 - tests/test_filter_material/inputs_true.dat | 1 - tests/test_filter_material/results_true.dat | 11 - .../test_filter_material.py | 29 - tests/test_filter_mu/inputs_true.dat | 1 - tests/test_filter_mu/results_true.dat | 121 - tests/test_filter_mu/test_filter_mu.py | 53 - tests/test_filter_polar/inputs_true.dat | 1 - tests/test_filter_polar/results_true.dat | 76 - tests/test_filter_polar/test_filter_polar.py | 59 - tests/test_filter_universe/inputs_true.dat | 1 - tests/test_filter_universe/results_true.dat | 11 - .../test_filter_universe.py | 29 - tests/test_score_MT/inputs_true.dat | 1 - tests/test_score_MT/results_true.dat | 77 - tests/test_score_MT/test_score_MT.py | 34 - tests/test_score_absorption/inputs_true.dat | 1 - tests/test_score_absorption/results_true.dat | 29 - .../test_score_absorption.py | 32 - .../inputs_true.dat | 1 - .../results_true.dat | 29 - .../test_score_delayed_nufission.py | 32 - tests/test_score_events/inputs_true.dat | 1 - tests/test_score_events/results_true.dat | 12 - tests/test_score_events/test_score_events.py | 31 - tests/test_score_fission/inputs_true.dat | 1 - tests/test_score_fission/results_true.dat | 29 - .../test_score_fission/test_score_fission.py | 32 - tests/test_score_flux/inputs_true.dat | 1 - tests/test_score_flux/results_true.dat | 41 - tests/test_score_flux/test_score_flux.py | 32 - tests/test_score_flux_yn/inputs_true.dat | 1 - tests/test_score_flux_yn/results_true.dat | 1314 ------ .../test_score_flux_yn/test_score_flux_yn.py | 33 - .../inputs_true.dat | 1 - .../results_true.dat | 29 - .../test_score_inversevelocity.py | 32 - tests/test_score_kappafission/inputs_true.dat | 1 - .../test_score_kappafission/results_true.dat | 29 - .../test_score_kappafission.py | 32 - tests/test_score_nufission/inputs_true.dat | 1 - tests/test_score_nufission/results_true.dat | 29 - .../test_score_nufission.py | 32 - tests/test_score_nuscatter/inputs_true.dat | 1 - tests/test_score_nuscatter/results_true.dat | 11 - .../test_score_nuscatter.py | 34 - tests/test_score_nuscatter_n/inputs_true.dat | 1 - tests/test_score_nuscatter_n/results_true.dat | 33 - .../test_score_nuscatter_n.py | 38 - tests/test_score_nuscatter_pn/inputs_true.dat | 1 - .../test_score_nuscatter_pn/results_true.dat | 24 - .../test_score_nuscatter_pn.py | 42 - tests/test_score_nuscatter_yn/inputs_true.dat | 1 - .../test_score_nuscatter_yn/results_true.dat | 38 - .../test_score_nuscatter_yn.py | 38 - tests/test_score_scatter/inputs_true.dat | 1 - tests/test_score_scatter/results_true.dat | 29 - .../test_score_scatter/test_score_scatter.py | 32 - tests/test_score_scatter_n/inputs_true.dat | 1 - tests/test_score_scatter_n/results_true.dat | 33 - .../test_score_scatter_n.py | 33 - tests/test_score_scatter_pn/inputs_true.dat | 1 - tests/test_score_scatter_pn/results_true.dat | 24 - .../test_score_scatter_pn.py | 38 - tests/test_score_scatter_yn/inputs_true.dat | 1 - tests/test_score_scatter_yn/results_true.dat | 56 - .../test_score_scatter_yn.py | 34 - tests/test_score_total/inputs_true.dat | 1 - tests/test_score_total/results_true.dat | 29 - tests/test_score_total/test_score_total.py | 32 - tests/test_score_total_yn/inputs_true.dat | 1 - tests/test_score_total_yn/results_true.dat | 1214 ------ .../test_score_total_yn.py | 35 - tests/test_tallies/inputs_true.dat | 1 + tests/test_tallies/results_true.dat | 3697 +++++++++++++++++ tests/test_tallies/test_tallies.py | 209 + 96 files changed, 3907 insertions(+), 4650 deletions(-) delete mode 100644 tests/test_filter_azimuthal/inputs_true.dat delete mode 100644 tests/test_filter_azimuthal/results_true.dat delete mode 100644 tests/test_filter_azimuthal/test_filter_azimuthal.py delete mode 100644 tests/test_filter_cell/inputs_true.dat delete mode 100644 tests/test_filter_cell/results_true.dat delete mode 100644 tests/test_filter_cell/test_filter_cell.py delete mode 100644 tests/test_filter_cellborn/inputs_true.dat delete mode 100644 tests/test_filter_cellborn/results_true.dat delete mode 100644 tests/test_filter_cellborn/test_filter_cellborn.py delete mode 100644 tests/test_filter_delayedgroup/inputs_true.dat delete mode 100644 tests/test_filter_delayedgroup/results_true.dat delete mode 100644 tests/test_filter_delayedgroup/test_filter_delayedgroup.py delete mode 100644 tests/test_filter_energy/inputs_true.dat delete mode 100644 tests/test_filter_energy/results_true.dat delete mode 100644 tests/test_filter_energy/test_filter_energy.py delete mode 100644 tests/test_filter_energyout/inputs_true.dat delete mode 100644 tests/test_filter_energyout/results_true.dat delete mode 100644 tests/test_filter_energyout/test_filter_energyout.py delete mode 100644 tests/test_filter_group_transfer/inputs_true.dat delete mode 100644 tests/test_filter_group_transfer/results_true.dat delete mode 100644 tests/test_filter_group_transfer/test_filter_group_transfer.py delete mode 100644 tests/test_filter_material/inputs_true.dat delete mode 100644 tests/test_filter_material/results_true.dat delete mode 100644 tests/test_filter_material/test_filter_material.py delete mode 100644 tests/test_filter_mu/inputs_true.dat delete mode 100644 tests/test_filter_mu/results_true.dat delete mode 100644 tests/test_filter_mu/test_filter_mu.py delete mode 100644 tests/test_filter_polar/inputs_true.dat delete mode 100644 tests/test_filter_polar/results_true.dat delete mode 100644 tests/test_filter_polar/test_filter_polar.py delete mode 100644 tests/test_filter_universe/inputs_true.dat delete mode 100644 tests/test_filter_universe/results_true.dat delete mode 100644 tests/test_filter_universe/test_filter_universe.py delete mode 100644 tests/test_score_MT/inputs_true.dat delete mode 100644 tests/test_score_MT/results_true.dat delete mode 100644 tests/test_score_MT/test_score_MT.py delete mode 100644 tests/test_score_absorption/inputs_true.dat delete mode 100644 tests/test_score_absorption/results_true.dat delete mode 100644 tests/test_score_absorption/test_score_absorption.py delete mode 100644 tests/test_score_delayed_nufission/inputs_true.dat delete mode 100644 tests/test_score_delayed_nufission/results_true.dat delete mode 100644 tests/test_score_delayed_nufission/test_score_delayed_nufission.py delete mode 100644 tests/test_score_events/inputs_true.dat delete mode 100644 tests/test_score_events/results_true.dat delete mode 100644 tests/test_score_events/test_score_events.py delete mode 100644 tests/test_score_fission/inputs_true.dat delete mode 100644 tests/test_score_fission/results_true.dat delete mode 100644 tests/test_score_fission/test_score_fission.py delete mode 100644 tests/test_score_flux/inputs_true.dat delete mode 100644 tests/test_score_flux/results_true.dat delete mode 100644 tests/test_score_flux/test_score_flux.py delete mode 100644 tests/test_score_flux_yn/inputs_true.dat delete mode 100644 tests/test_score_flux_yn/results_true.dat delete mode 100755 tests/test_score_flux_yn/test_score_flux_yn.py delete mode 100644 tests/test_score_inverse_velocity/inputs_true.dat delete mode 100644 tests/test_score_inverse_velocity/results_true.dat delete mode 100644 tests/test_score_inverse_velocity/test_score_inversevelocity.py delete mode 100644 tests/test_score_kappafission/inputs_true.dat delete mode 100644 tests/test_score_kappafission/results_true.dat delete mode 100644 tests/test_score_kappafission/test_score_kappafission.py delete mode 100644 tests/test_score_nufission/inputs_true.dat delete mode 100644 tests/test_score_nufission/results_true.dat delete mode 100644 tests/test_score_nufission/test_score_nufission.py delete mode 100644 tests/test_score_nuscatter/inputs_true.dat delete mode 100644 tests/test_score_nuscatter/results_true.dat delete mode 100644 tests/test_score_nuscatter/test_score_nuscatter.py delete mode 100644 tests/test_score_nuscatter_n/inputs_true.dat delete mode 100644 tests/test_score_nuscatter_n/results_true.dat delete mode 100644 tests/test_score_nuscatter_n/test_score_nuscatter_n.py delete mode 100644 tests/test_score_nuscatter_pn/inputs_true.dat delete mode 100644 tests/test_score_nuscatter_pn/results_true.dat delete mode 100644 tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py delete mode 100644 tests/test_score_nuscatter_yn/inputs_true.dat delete mode 100644 tests/test_score_nuscatter_yn/results_true.dat delete mode 100644 tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py delete mode 100644 tests/test_score_scatter/inputs_true.dat delete mode 100644 tests/test_score_scatter/results_true.dat delete mode 100644 tests/test_score_scatter/test_score_scatter.py delete mode 100644 tests/test_score_scatter_n/inputs_true.dat delete mode 100644 tests/test_score_scatter_n/results_true.dat delete mode 100644 tests/test_score_scatter_n/test_score_scatter_n.py delete mode 100644 tests/test_score_scatter_pn/inputs_true.dat delete mode 100644 tests/test_score_scatter_pn/results_true.dat delete mode 100644 tests/test_score_scatter_pn/test_score_scatter_pn.py delete mode 100644 tests/test_score_scatter_yn/inputs_true.dat delete mode 100644 tests/test_score_scatter_yn/results_true.dat delete mode 100644 tests/test_score_scatter_yn/test_score_scatter_yn.py delete mode 100644 tests/test_score_total/inputs_true.dat delete mode 100644 tests/test_score_total/results_true.dat delete mode 100644 tests/test_score_total/test_score_total.py delete mode 100644 tests/test_score_total_yn/inputs_true.dat delete mode 100644 tests/test_score_total_yn/results_true.dat delete mode 100644 tests/test_score_total_yn/test_score_total_yn.py create mode 100644 tests/test_tallies/inputs_true.dat create mode 100644 tests/test_tallies/results_true.dat create mode 100644 tests/test_tallies/test_tallies.py diff --git a/tests/test_filter_azimuthal/inputs_true.dat b/tests/test_filter_azimuthal/inputs_true.dat deleted file mode 100644 index e4a964700f..0000000000 --- a/tests/test_filter_azimuthal/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -57d6fd9cb5180c38efd2729a5dea0708cbd5fd0bf7dcf0c9d5c9cef5d818aeab5a926d03e70dedcf1b60d5740938fb3ba80e6ccdb09c661d159c0893da3bd593 \ No newline at end of file diff --git a/tests/test_filter_azimuthal/results_true.dat b/tests/test_filter_azimuthal/results_true.dat deleted file mode 100644 index 7883a730d4..0000000000 --- a/tests/test_filter_azimuthal/results_true.dat +++ /dev/null @@ -1,76 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -4.215917E+01 -3.561920E+02 -4.174788E+01 -3.505184E+02 -4.603223E+01 -4.242918E+02 -4.496760E+01 -4.075599E+02 -4.088099E+01 -3.376516E+02 -tally 2: -4.157239E+01 -3.482158E+02 -4.227810E+01 -3.613293E+02 -4.376107E+01 -3.835007E+02 -4.644205E+01 -4.327195E+02 -4.191554E+01 -3.522147E+02 -tally 3: -4.215917E+01 -3.561920E+02 -4.174788E+01 -3.505184E+02 -4.603223E+01 -4.242918E+02 -4.496402E+01 -4.075053E+02 -4.088458E+01 -3.377000E+02 -tally 4: -1.531988E+01 -4.816326E+01 -9.274393E+00 -1.821174E+01 -1.595868E+01 -5.124238E+01 -1.299895E+00 -6.417145E-01 -1.510024E+01 -4.604170E+01 -8.533361E+00 -1.462765E+01 -1.658141E+01 -5.595629E+01 -1.427417E+00 -6.621807E-01 -1.683102E+01 -5.741400E+01 -9.845257E+00 -2.028406E+01 -1.773179E+01 -6.477077E+01 -1.536972E+00 -6.111079E-01 -1.586070E+01 -5.360975E+01 -9.928220E+00 -2.089005E+01 -1.737609E+01 -6.161847E+01 -1.700608E+00 -8.439708E-01 -1.607027E+01 -5.490113E+01 -7.569336E+00 -1.280955E+01 -1.606086E+01 -5.308665E+01 -9.898901E-01 -3.143027E-01 diff --git a/tests/test_filter_azimuthal/test_filter_azimuthal.py b/tests/test_filter_azimuthal/test_filter_azimuthal.py deleted file mode 100644 index 248ba00120..0000000000 --- a/tests/test_filter_azimuthal/test_filter_azimuthal.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - -class FilterAzimuthalTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt1 = openmc.Filter(type='azimuthal', - bins=(-3.1416, -1.8850, -0.6283, 0.6283, 1.8850, - 3.1416)) - tally1 = openmc.Tally(tally_id=1) - tally1.add_filter(filt1) - tally1.add_score('flux') - tally1.estimator = 'tracklength' - - tally2 = openmc.Tally(tally_id=2) - tally2.add_filter(filt1) - tally2.add_score('flux') - tally2.estimator = 'analog' - - filt3 = openmc.Filter(type='azimuthal', bins=(5,)) - tally3 = openmc.Tally(tally_id=3) - tally3.add_filter(filt3) - tally3.add_score('flux') - tally3.estimator = 'tracklength' - - mesh = openmc.Mesh(mesh_id=1) - mesh.lower_left = [-182.07, -182.07] - mesh.upper_right = [182.07, 182.07] - mesh.dimension = [2, 2] - filt_mesh = openmc.Filter(type='mesh', bins=(1,)) - tally4 = openmc.Tally(tally_id=4) - tally4.add_filter(filt3) - tally4.add_filter(filt_mesh) - tally4.add_score('flux') - tally4.estimator = 'tracklength' - - - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally1) - self._input_set.tallies.add_tally(tally2) - self._input_set.tallies.add_tally(tally3) - self._input_set.tallies.add_tally(tally4) - self._input_set.tallies.add_mesh(mesh) - - super(FilterAzimuthalTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterAzimuthalTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterAzimuthalTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_cell/inputs_true.dat b/tests/test_filter_cell/inputs_true.dat deleted file mode 100644 index d7f0a9e7f8..0000000000 --- a/tests/test_filter_cell/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -f8359184c02fbab5dca5368689a84924066ab1fb09cae575588ceddd696d5461db577498df9959365d89fe933e9b338390e44e362c603c6f2aa5bcf4acc14b20 \ No newline at end of file diff --git a/tests/test_filter_cell/results_true.dat b/tests/test_filter_cell/results_true.dat deleted file mode 100644 index 47ff3c281a..0000000000 --- a/tests/test_filter_cell/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -1.767552E+01 -6.295417E+01 -3.863588E+00 -3.013300E+00 -5.356594E+01 -5.839391E+02 diff --git a/tests/test_filter_cell/test_filter_cell.py b/tests/test_filter_cell/test_filter_cell.py deleted file mode 100644 index d532d59cf8..0000000000 --- a/tests/test_filter_cell/test_filter_cell.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterCellTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('total') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterCellTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterCellTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterCellTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_cellborn/inputs_true.dat b/tests/test_filter_cellborn/inputs_true.dat deleted file mode 100644 index a4f1a74b8f..0000000000 --- a/tests/test_filter_cellborn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -8ae662f8881ce8cdec550069c6233c2c91e9a10f7200af6892cf6f2d77712ccfa17895dbd2eee02e6daf3d665c6ed84b29e17d89ff519e70c37b36d75a431d53 \ No newline at end of file diff --git a/tests/test_filter_cellborn/results_true.dat b/tests/test_filter_cellborn/results_true.dat deleted file mode 100644 index d0ab58f4ed..0000000000 --- a/tests/test_filter_cellborn/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -8.921179E+01 -1.601939E+03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 diff --git a/tests/test_filter_cellborn/test_filter_cellborn.py b/tests/test_filter_cellborn/test_filter_cellborn.py deleted file mode 100644 index 2fac6a1fcd..0000000000 --- a/tests/test_filter_cellborn/test_filter_cellborn.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterCellbornTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cellborn', bins=(10, 21, 22, 23)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('total') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterCellbornTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterCellbornTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterCellbornTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_delayedgroup/inputs_true.dat b/tests/test_filter_delayedgroup/inputs_true.dat deleted file mode 100644 index 6b06d41735..0000000000 --- a/tests/test_filter_delayedgroup/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -a7c8ce7ffbc3a7b965d8a3077a4d9132130561afef19047b279b2d23198e248b09664856a092a32394894e19fef7708cebad99b3839d735c4e98ae0c9af58cb7 \ No newline at end of file diff --git a/tests/test_filter_delayedgroup/results_true.dat b/tests/test_filter_delayedgroup/results_true.dat deleted file mode 100644 index 9db6de2562..0000000000 --- a/tests/test_filter_delayedgroup/results_true.dat +++ /dev/null @@ -1,15 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -8.141852E-04 -1.337187E-07 -4.849156E-03 -4.744020E-06 -4.460252E-03 -4.015453E-06 -1.028479E-02 -2.136252E-05 -5.002274E-03 -5.056965E-06 -1.974747E-03 -7.882970E-07 diff --git a/tests/test_filter_delayedgroup/test_filter_delayedgroup.py b/tests/test_filter_delayedgroup/test_filter_delayedgroup.py deleted file mode 100644 index bdad3cc958..0000000000 --- a/tests/test_filter_delayedgroup/test_filter_delayedgroup.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterDelayedgroupTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='delayedgroup', - bins=(1, 2, 3, 4, 5, 6)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('delayed-nu-fission') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterDelayedgroupTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterDelayedgroupTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterDelayedgroupTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_energy/inputs_true.dat b/tests/test_filter_energy/inputs_true.dat deleted file mode 100644 index 4098aaece9..0000000000 --- a/tests/test_filter_energy/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -51d3e2c43f36712a7b26c5fa26e0e2ca6fb9af205af04f0f8cd44c6b100e36382417c2c63d711e4677ce3c1958d15072727d5fd32424a3f6eb08d1f3b1c7db5a \ No newline at end of file diff --git a/tests/test_filter_energy/results_true.dat b/tests/test_filter_energy/results_true.dat deleted file mode 100644 index 599e0bf888..0000000000 --- a/tests/test_filter_energy/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.844008E+01 -1.619630E+02 -4.425619E+01 -3.938244E+02 -5.527425E+01 -6.120383E+02 -9.799897E+00 -1.957877E+01 diff --git a/tests/test_filter_energy/test_filter_energy.py b/tests/test_filter_energy/test_filter_energy.py deleted file mode 100644 index 54d1dd4b7f..0000000000 --- a/tests/test_filter_energy/test_filter_energy.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterEnergyTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='energy', - bins=(0.0, 0.253e-6, 1.0e-3, 1.0, 20.0)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('total') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterEnergyTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterEnergyTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterEnergyTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_energyout/inputs_true.dat b/tests/test_filter_energyout/inputs_true.dat deleted file mode 100644 index be1ade923f..0000000000 --- a/tests/test_filter_energyout/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -f0810606c5f947a9fe03bcfc87de3883ce46f59d8603e02ed30f853ebf301b2dc6bdcd109889801ada9e6e0b7be4932efeca97d4beea875af8c8e3ecb7511444 \ No newline at end of file diff --git a/tests/test_filter_energyout/results_true.dat b/tests/test_filter_energyout/results_true.dat deleted file mode 100644 index 814385d5a4..0000000000 --- a/tests/test_filter_energyout/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.842000E+01 -1.620214E+02 -4.361000E+01 -3.810139E+02 -5.297000E+01 -5.616595E+02 -6.530000E+00 -8.828900E+00 diff --git a/tests/test_filter_energyout/test_filter_energyout.py b/tests/test_filter_energyout/test_filter_energyout.py deleted file mode 100644 index 43a8c7d5a9..0000000000 --- a/tests/test_filter_energyout/test_filter_energyout.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterEnergyoutTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='energyout', - bins=(0.0, 0.253e-6, 1.0e-3, 1.0, 20.0)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('scatter') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterEnergyoutTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterEnergyoutTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterEnergyoutTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_group_transfer/inputs_true.dat b/tests/test_filter_group_transfer/inputs_true.dat deleted file mode 100644 index 9e3bbdd1ce..0000000000 --- a/tests/test_filter_group_transfer/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -c4d4334d44956d6dc9abe854a5e9403d7f8a87ffb04a15a3d128e8d18eb4111f46ca277b751e1b0e836d69527502f9abba115a4b2fc64c38da63a9d57968d860 \ No newline at end of file diff --git a/tests/test_filter_group_transfer/results_true.dat b/tests/test_filter_group_transfer/results_true.dat deleted file mode 100644 index c41451e776..0000000000 --- a/tests/test_filter_group_transfer/results_true.dat +++ /dev/null @@ -1,67 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.576000E+01 -1.331666E+02 -0.000000E+00 -0.000000E+00 -7.000000E-02 -1.300000E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.050675E+00 -2.274991E-01 -0.000000E+00 -0.000000E+00 -2.070821E+00 -8.886068E-01 -2.660000E+00 -1.422000E+00 -0.000000E+00 -0.000000E+00 -3.897000E+01 -3.042635E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.352932E-01 -4.705717E-02 -0.000000E+00 -0.000000E+00 -1.018668E+00 -2.090017E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.570000E+00 -4.182700E+00 -0.000000E+00 -0.000000E+00 -4.968000E+01 -4.940534E+02 -6.537406E-02 -1.230788E-03 -0.000000E+00 -0.000000E+00 -8.678070E-02 -2.482037E-03 -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.290000E+00 -2.178900E+00 -1.610879E-01 -5.883677E-03 -6.530000E+00 -8.828900E+00 -3.151783E-01 -2.052521E-02 diff --git a/tests/test_filter_group_transfer/test_filter_group_transfer.py b/tests/test_filter_group_transfer/test_filter_group_transfer.py deleted file mode 100644 index cbea5e0a7f..0000000000 --- a/tests/test_filter_group_transfer/test_filter_group_transfer.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterGroupTransferTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt1 = openmc.Filter(type='energy', - bins=(0.0, 0.253e-6, 1.0e-3, 1.0, 20.0)) - filt2 = openmc.Filter(type='energyout', - bins=(0.0, 0.253e-6, 1.0e-3, 1.0, 20.0)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt1) - tally.add_filter(filt2) - tally.add_score('scatter') - tally.add_score('nu-fission') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterGroupTransferTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterGroupTransferTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterGroupTransferTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_material/inputs_true.dat b/tests/test_filter_material/inputs_true.dat deleted file mode 100644 index 59afbce647..0000000000 --- a/tests/test_filter_material/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -7689b2c88391128377b7f9bfcda347a42f77d69d194186629fa965ecd3fc51be0bfd1ac92fb9d7551128d8b6ed5241ead4fb94b27ae29d80230863e78fbbcb68 \ No newline at end of file diff --git a/tests/test_filter_material/results_true.dat b/tests/test_filter_material/results_true.dat deleted file mode 100644 index d2b23e2901..0000000000 --- a/tests/test_filter_material/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.868239E+01 -1.648549E+02 -6.779424E+00 -9.202676E+00 -6.446222E+01 -8.387204E+02 -3.367496E+01 -2.349072E+02 diff --git a/tests/test_filter_material/test_filter_material.py b/tests/test_filter_material/test_filter_material.py deleted file mode 100644 index 8e42d8c9a2..0000000000 --- a/tests/test_filter_material/test_filter_material.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterMaterialTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='material', bins=(1, 2, 3, 4)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('total') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterMaterialTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterMaterialTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterMaterialTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_mu/inputs_true.dat b/tests/test_filter_mu/inputs_true.dat deleted file mode 100644 index 19d08cb457..0000000000 --- a/tests/test_filter_mu/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -ecc649936e2cc364b079944f47e18fb81ec7290017b4bd5837e5aa1e24e1146df77897f44c7c2a88500e3f525566b51777cd9b84ec6a636f5883e411e4c1f75c \ No newline at end of file diff --git a/tests/test_filter_mu/results_true.dat b/tests/test_filter_mu/results_true.dat deleted file mode 100644 index e647a46ec0..0000000000 --- a/tests/test_filter_mu/results_true.dat +++ /dev/null @@ -1,121 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.241000E+01 -3.088870E+01 -1.241000E+01 -3.088870E+01 -1.364000E+01 -3.727140E+01 -1.364000E+01 -3.727140E+01 -3.251000E+01 -2.118597E+02 -3.251000E+01 -2.118597E+02 -7.297000E+01 -1.066904E+03 -7.297000E+01 -1.066904E+03 -tally 2: -9.880000E+00 -1.964520E+01 -9.880000E+00 -1.964520E+01 -1.022000E+01 -2.099620E+01 -1.022000E+01 -2.099620E+01 -1.479000E+01 -4.397670E+01 -1.479000E+01 -4.397670E+01 -3.470000E+01 -2.412094E+02 -3.470000E+01 -2.412094E+02 -6.194000E+01 -7.687326E+02 -6.194000E+01 -7.687326E+02 -tally 3: -3.560000E+00 -2.681800E+00 -3.560000E+00 -2.681800E+00 -1.930000E+00 -7.915000E-01 -1.930000E+00 -7.915000E-01 -3.870000E+00 -3.109100E+00 -3.870000E+00 -3.109100E+00 -3.500000E-01 -3.630000E-02 -3.500000E-01 -3.630000E-02 -3.680000E+00 -2.840200E+00 -3.680000E+00 -2.840200E+00 -2.050000E+00 -8.735000E-01 -2.050000E+00 -8.735000E-01 -3.910000E+00 -3.085100E+00 -3.910000E+00 -3.085100E+00 -3.900000E-01 -3.610000E-02 -3.900000E-01 -3.610000E-02 -5.130000E+00 -5.422100E+00 -5.130000E+00 -5.422100E+00 -3.100000E+00 -1.959200E+00 -3.100000E+00 -1.959200E+00 -5.840000E+00 -6.914600E+00 -5.840000E+00 -6.914600E+00 -5.400000E-01 -8.980000E-02 -5.400000E-01 -8.980000E-02 -1.215000E+01 -3.061010E+01 -1.215000E+01 -3.061010E+01 -7.220000E+00 -1.081680E+01 -7.220000E+00 -1.081680E+01 -1.355000E+01 -3.699090E+01 -1.355000E+01 -3.699090E+01 -1.360000E+00 -5.098000E-01 -1.360000E+00 -5.098000E-01 -2.199000E+01 -9.837430E+01 -2.199000E+01 -9.837430E+01 -1.243000E+01 -3.167470E+01 -1.243000E+01 -3.167470E+01 -2.451000E+01 -1.233915E+02 -2.451000E+01 -1.233915E+02 -2.460000E+00 -1.687000E+00 -2.460000E+00 -1.687000E+00 diff --git a/tests/test_filter_mu/test_filter_mu.py b/tests/test_filter_mu/test_filter_mu.py deleted file mode 100644 index f59f8c63fd..0000000000 --- a/tests/test_filter_mu/test_filter_mu.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterMuTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt1 = openmc.Filter(type='mu', - bins=(-1.0, -0.5, 0.0, 0.5, 1.0)) - tally1 = openmc.Tally(tally_id=1) - tally1.add_filter(filt1) - tally1.add_score('scatter') - tally1.add_score('nu-scatter') - - filt2 = openmc.Filter(type='mu', bins=(5,)) - tally2 = openmc.Tally(tally_id=2) - tally2.add_filter(filt2) - tally2.add_score('scatter') - tally2.add_score('nu-scatter') - - mesh = openmc.Mesh(mesh_id=1) - mesh.lower_left = [-182.07, -182.07] - mesh.upper_right = [182.07, 182.07] - mesh.dimension = [2, 2] - filt_mesh = openmc.Filter(type='mesh', bins=(1,)) - tally3 = openmc.Tally(tally_id=3) - tally3.add_filter(filt2) - tally3.add_filter(filt_mesh) - tally3.add_score('scatter') - tally3.add_score('nu-scatter') - - - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally1) - self._input_set.tallies.add_tally(tally2) - self._input_set.tallies.add_tally(tally3) - self._input_set.tallies.add_mesh(mesh) - - super(FilterMuTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterMuTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterMuTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_polar/inputs_true.dat b/tests/test_filter_polar/inputs_true.dat deleted file mode 100644 index b3773a9d6b..0000000000 --- a/tests/test_filter_polar/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -301824991a022884215609f39797a61933faf7ccacf81ad6bb883af08857563e8bd74ab946fc4fd072860168d77f76d0c76d1467375158072dce431fc6a1c449 \ No newline at end of file diff --git a/tests/test_filter_polar/results_true.dat b/tests/test_filter_polar/results_true.dat deleted file mode 100644 index 2d822630e5..0000000000 --- a/tests/test_filter_polar/results_true.dat +++ /dev/null @@ -1,76 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.127061E+01 -9.220793E+01 -5.602776E+01 -6.373945E+02 -6.367492E+01 -8.138443E+02 -5.529942E+01 -6.140264E+02 -1.951517E+01 -7.668661E+01 -tally 2: -2.075936E+01 -8.757254E+01 -5.524881E+01 -6.153139E+02 -6.475252E+01 -8.402281E+02 -5.446664E+01 -5.961174E+02 -2.074180E+01 -8.681580E+01 -tally 3: -2.128073E+01 -9.230382E+01 -5.601764E+01 -6.371703E+02 -6.367492E+01 -8.138443E+02 -5.529942E+01 -6.140264E+02 -1.951517E+01 -7.668661E+01 -tally 4: -8.088647E+00 -1.396899E+01 -3.960907E+00 -3.249150E+00 -8.430714E+00 -1.435355E+01 -7.192159E-01 -1.641710E-01 -1.974619E+01 -8.105078E+01 -1.212452E+01 -3.016420E+01 -2.228348E+01 -1.050847E+02 -1.748809E+00 -9.501796E-01 -2.257423E+01 -1.038902E+02 -1.351331E+01 -3.969787E+01 -2.507638E+01 -1.283664E+02 -2.193118E+00 -1.424580E+00 -2.192232E+01 -9.859711E+01 -1.096779E+01 -2.506373E+01 -2.074138E+01 -8.670015E+01 -1.469145E+00 -8.072204E-01 -6.850719E+00 -9.425536E+00 -4.584038E+00 -4.399762E+00 -7.176883E+00 -1.090693E+01 -8.244944E-01 -1.794291E-01 diff --git a/tests/test_filter_polar/test_filter_polar.py b/tests/test_filter_polar/test_filter_polar.py deleted file mode 100644 index db7ed4f6d8..0000000000 --- a/tests/test_filter_polar/test_filter_polar.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - -class FilterPolarTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt1 = openmc.Filter(type='polar', - bins=(0.0, 0.6283, 1.2566, 1.8850, 2.5132, - 3.1416)) - tally1 = openmc.Tally(tally_id=1) - tally1.add_filter(filt1) - tally1.add_score('flux') - tally1.estimator = 'tracklength' - - tally2 = openmc.Tally(tally_id=2) - tally2.add_filter(filt1) - tally2.add_score('flux') - tally2.estimator = 'analog' - - filt3 = openmc.Filter(type='polar', bins=(5,)) - tally3 = openmc.Tally(tally_id=3) - tally3.add_filter(filt3) - tally3.add_score('flux') - tally3.estimator = 'tracklength' - - mesh = openmc.Mesh(mesh_id=1) - mesh.lower_left = [-182.07, -182.07] - mesh.upper_right = [182.07, 182.07] - mesh.dimension = [2, 2] - filt_mesh = openmc.Filter(type='mesh', bins=(1,)) - tally4 = openmc.Tally(tally_id=4) - tally4.add_filter(filt3) - tally4.add_filter(filt_mesh) - tally4.add_score('flux') - tally4.estimator = 'tracklength' - - - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally1) - self._input_set.tallies.add_tally(tally2) - self._input_set.tallies.add_tally(tally3) - self._input_set.tallies.add_tally(tally4) - self._input_set.tallies.add_mesh(mesh) - - super(FilterPolarTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterPolarTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterPolarTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_filter_universe/inputs_true.dat b/tests/test_filter_universe/inputs_true.dat deleted file mode 100644 index a55ba45f68..0000000000 --- a/tests/test_filter_universe/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -164804414f48a818c93e197f2901ce6ae375d88071a03e89c920dbc4462e7a2c8d2c85acf6560fcd6eb3d7c0c53d3b426ab1cc4b7721266fe8adec3e7231149e \ No newline at end of file diff --git a/tests/test_filter_universe/results_true.dat b/tests/test_filter_universe/results_true.dat deleted file mode 100644 index f71c4d2c21..0000000000 --- a/tests/test_filter_universe/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -7.510505E+01 -1.143811E+03 -8.792943E+00 -1.575416E+01 -4.214462E+01 -3.642975E+02 -4.335157E+00 -3.864423E+00 diff --git a/tests/test_filter_universe/test_filter_universe.py b/tests/test_filter_universe/test_filter_universe.py deleted file mode 100644 index 00dd166196..0000000000 --- a/tests/test_filter_universe/test_filter_universe.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class FilterUniverseTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='universe', bins=(1, 2, 3, 4)) - tally = openmc.Tally(tally_id=1) - tally.add_filter(filt) - tally.add_score('total') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(tally) - - super(FilterUniverseTestHarness, self)._build_inputs() - - def _cleanup(self): - super(FilterUniverseTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = FilterUniverseTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_MT/inputs_true.dat b/tests/test_score_MT/inputs_true.dat deleted file mode 100644 index 33e732bcba..0000000000 --- a/tests/test_score_MT/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -0e8ecbc5afb7fb5e521913f239849febadbc969bbf99159b42d6d7e7930dcdb34f0e778e00a6e7c48170d4dd176b5776455ba96b722ad9cb6f2438e6ac3ce406 \ No newline at end of file diff --git a/tests/test_score_MT/results_true.dat b/tests/test_score_MT/results_true.dat deleted file mode 100644 index 04b9c5ca50..0000000000 --- a/tests/test_score_MT/results_true.dat +++ /dev/null @@ -1,77 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.538090E-03 -1.381456E-06 -3.974412E-01 -3.209809E-02 -1.373550E+00 -3.796357E-01 -5.252455E-06 -2.290531E-11 -3.359792E-02 -2.267331E-04 -2.459115E-02 -1.233078E-04 -0.000000E+00 -0.000000E+00 -7.004005E-05 -1.748739E-09 -8.104946E-02 -1.395618E-03 -tally 2: -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-01 -9.000000E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-02 -2.000000E-04 -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 3: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.408027E-03 -1.849607E-06 -3.946436E-01 -3.166261E-02 -1.288136E+00 -3.382059E-01 -2.179241E-05 -4.749090E-10 -3.146594E-02 -2.159308E-04 -4.278352E-02 -4.094478E-04 -0.000000E+00 -0.000000E+00 -1.736514E-04 -1.245171E-08 -7.989710E-02 -1.377742E-03 diff --git a/tests/test_score_MT/test_score_MT.py b/tests/test_score_MT/test_score_MT.py deleted file mode 100644 index fb8aa7cfb4..0000000000 --- a/tests/test_score_MT/test_score_MT.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreMTTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('16') for t in tallies] - [t.add_score('51') for t in tallies] - [t.add_score('102') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreMTTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreMTTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreMTTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_absorption/inputs_true.dat b/tests/test_score_absorption/inputs_true.dat deleted file mode 100644 index 7932cb78ec..0000000000 --- a/tests/test_score_absorption/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -df0089700d7ca25e997d9e6da4aa7132575298feb14398b2e806961fdb2e1d9bfbd23beb7bbc2a71b2ce18abe324702c2ab654af32e826bba5571a068b00a848 \ No newline at end of file diff --git a/tests/test_score_absorption/results_true.dat b/tests/test_score_absorption/results_true.dat deleted file mode 100644 index 72661f77f4..0000000000 --- a/tests/test_score_absorption/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -2.533174E+00 -1.298118E+00 -2.453769E-02 -1.227715E-04 -3.869051E-01 -3.180828E-02 -tally 2: -0.000000E+00 -0.000000E+00 -2.540000E+00 -1.293400E+00 -4.000000E-02 -6.000000E-04 -4.000000E-01 -3.600000E-02 -tally 3: -0.000000E+00 -0.000000E+00 -2.422314E+00 -1.193460E+00 -4.285618E-02 -4.109734E-04 -3.832282E-01 -3.169516E-02 diff --git a/tests/test_score_absorption/test_score_absorption.py b/tests/test_score_absorption/test_score_absorption.py deleted file mode 100644 index c7e3e130df..0000000000 --- a/tests/test_score_absorption/test_score_absorption.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreAbsorptionTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('absorption') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreAbsorptionTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreAbsorptionTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreAbsorptionTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_delayed_nufission/inputs_true.dat b/tests/test_score_delayed_nufission/inputs_true.dat deleted file mode 100644 index 11a92dea2c..0000000000 --- a/tests/test_score_delayed_nufission/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -2fb062798cab618153187fe3d8aaee4c6fb61132ab8215742e5939633ab321fb937d4d33a85856271bdf465257aca9cbba1b52716f233c22202ecfbbb9c15b1f \ No newline at end of file diff --git a/tests/test_score_delayed_nufission/results_true.dat b/tests/test_score_delayed_nufission/results_true.dat deleted file mode 100644 index bc2b8e8a7f..0000000000 --- a/tests/test_score_delayed_nufission/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.711611E-02 -5.967549E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.026930E-02 -2.198717E-05 -tally 2: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.976462E-02 -1.953328E-04 -tally 3: -1.686299E-02 -5.765477E-05 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.061240E-02 -2.305936E-05 diff --git a/tests/test_score_delayed_nufission/test_score_delayed_nufission.py b/tests/test_score_delayed_nufission/test_score_delayed_nufission.py deleted file mode 100644 index 0738520e29..0000000000 --- a/tests/test_score_delayed_nufission/test_score_delayed_nufission.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreDelayedNuFissionTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('delayed-nu-fission') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreDelayedNuFissionTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreDelayedNuFissionTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreDelayedNuFissionTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_events/inputs_true.dat b/tests/test_score_events/inputs_true.dat deleted file mode 100644 index 4862547c16..0000000000 --- a/tests/test_score_events/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -1e43a3ef68b15aededc0466c913d2f784d237adc88827a980a3dcdcfd64e9bb73679cc3114d69caf389f9c478c439a8771602c397461b90ae0db58a81bfb739a \ No newline at end of file diff --git a/tests/test_score_events/results_true.dat b/tests/test_score_events/results_true.dat deleted file mode 100644 index 34b114fbcb..0000000000 --- a/tests/test_score_events/results_true.dat +++ /dev/null @@ -1,12 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -6.520000E+01 -8.551888E+02 -4.035000E+01 -3.351119E+02 -tally 2: -1.739000E+01 -6.083290E+01 -1.104000E+01 -2.498260E+01 diff --git a/tests/test_score_events/test_score_events.py b/tests/test_score_events/test_score_events.py deleted file mode 100644 index dce944592e..0000000000 --- a/tests/test_score_events/test_score_events.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreEventsTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 3)] - [t.add_filter(filt) for t in tallies] - [t.add_score('events') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreEventsTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreEventsTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreEventsTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_fission/inputs_true.dat b/tests/test_score_fission/inputs_true.dat deleted file mode 100644 index fb5e6f8915..0000000000 --- a/tests/test_score_fission/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -dc94fe38751001e3950450f8f6e7a865a42e699be76372ac7846da863283b6bb963c32b477ace4217be60e1f7a473e946d27238b3faf17d3b7426dbd1a34f9e6 \ No newline at end of file diff --git a/tests/test_score_fission/results_true.dat b/tests/test_score_fission/results_true.dat deleted file mode 100644 index 2b28cc825c..0000000000 --- a/tests/test_score_fission/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.156315E+00 -2.733527E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.971594E-01 -1.004973E-01 -tally 2: -1.225263E+00 -3.054971E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -6.475958E-01 -8.567154E-02 -tally 3: -1.131528E+00 -2.612886E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.021712E-01 -1.008605E-01 diff --git a/tests/test_score_fission/test_score_fission.py b/tests/test_score_fission/test_score_fission.py deleted file mode 100644 index 4026c0cabf..0000000000 --- a/tests/test_score_fission/test_score_fission.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreFissionTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('fission') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreFissionTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreFissionTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreFissionTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_flux/inputs_true.dat b/tests/test_score_flux/inputs_true.dat deleted file mode 100644 index 934ab9d120..0000000000 --- a/tests/test_score_flux/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -bd5362b44190406434cdaa086b7e7397e8f6841b86ad61eda2c3f604df03746832dbcff0e8e96e355f5ba5b4333d6a336358379f8ced51f7a1721ceacb620daa \ No newline at end of file diff --git a/tests/test_score_flux/results_true.dat b/tests/test_score_flux/results_true.dat deleted file mode 100644 index 5c366ea8c7..0000000000 --- a/tests/test_score_flux/results_true.dat +++ /dev/null @@ -1,41 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -3.890713E+01 -3.046363E+02 -1.366220E+01 -3.758161E+01 -6.561669E+01 -8.680729E+02 -2.382728E+01 -1.170590E+02 -8.047875E+00 -1.334796E+01 -4.056568E+01 -3.389623E+02 -tally 2: -3.862543E+01 -2.993190E+02 -1.438678E+01 -4.193571E+01 -6.400634E+01 -8.298077E+02 -2.426423E+01 -1.215124E+02 -7.600812E+00 -1.199814E+01 -4.104875E+01 -3.455300E+02 -tally 3: -3.862543E+01 -2.993190E+02 -1.438678E+01 -4.193571E+01 -6.400634E+01 -8.298077E+02 -2.426423E+01 -1.215124E+02 -7.600812E+00 -1.199814E+01 -4.104875E+01 -3.455300E+02 diff --git a/tests/test_score_flux/test_score_flux.py b/tests/test_score_flux/test_score_flux.py deleted file mode 100644 index 1eea55f45f..0000000000 --- a/tests/test_score_flux/test_score_flux.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreFluxTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27, 28, 29)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('flux') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreFluxTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreFluxTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreFluxTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_flux_yn/inputs_true.dat b/tests/test_score_flux_yn/inputs_true.dat deleted file mode 100644 index 5ece3ef1ba..0000000000 --- a/tests/test_score_flux_yn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -7909822f2ad84443506129719c664b71ac0eac875a7c234be42c553564435794b6028078b096b21e9fb5dad650495b84f2b53decf73e277c84a3ea52799c008e \ No newline at end of file diff --git a/tests/test_score_flux_yn/results_true.dat b/tests/test_score_flux_yn/results_true.dat deleted file mode 100644 index 28a1babb04..0000000000 --- a/tests/test_score_flux_yn/results_true.dat +++ /dev/null @@ -1,1314 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -3.890713E+01 -3.046363E+02 -1.366220E+01 -3.758161E+01 -6.561669E+01 -8.680729E+02 -2.382728E+01 -1.170590E+02 -8.047875E+00 -1.334796E+01 -4.056568E+01 -3.389623E+02 -tally 2: -3.890713E+01 -3.046363E+02 --1.623579E-01 -4.602199E-02 -4.860074E-01 -5.999399E-01 --7.895692E-01 -2.803790E-01 -2.525526E-01 -8.261176E-02 -9.103525E-02 -2.246700E-01 -4.583205E-01 -8.444556E-02 --1.246553E-01 -2.351010E-01 --3.534581E-01 -1.247916E-01 --3.700473E-01 -5.215562E-02 --1.831625E-01 -1.927381E-01 --1.540114E-01 -1.918221E-02 --1.266458E-01 -1.455875E-01 --6.796869E-01 -3.911926E-01 -1.987931E-02 -4.966442E-02 -4.443797E-01 -8.842717E-02 --1.073855E-01 -4.912428E-02 --3.999416E-02 -4.440138E-02 -2.857919E-01 -6.935717E-02 -4.174851E-01 -5.485570E-02 --2.178958E-01 -8.052149E-02 --1.179644E-02 -6.709330E-02 -8.843286E-01 -2.749681E-01 -2.935079E-01 -3.032897E-02 --1.809434E-01 -1.902413E-01 --2.091991E-01 -1.061912E-01 --7.137275E-02 -4.397656E-02 -2.311558E-01 -4.680679E-02 -9.927573E-02 -1.844111E-01 --2.821437E-02 -7.293762E-02 -6.224251E-01 -1.028351E-01 -4.136440E-01 -5.198207E-02 --7.833133E-02 -1.192960E-02 -1.041586E-01 -1.587417E-01 --3.595677E-01 -3.086335E-01 --2.096284E-01 -7.881012E-02 -1.366220E+01 -3.758161E+01 -1.461402E-02 -3.260482E-03 -8.325893E-02 -6.248769E-02 --2.785736E-01 -3.698417E-02 -1.932396E-03 -1.561742E-02 -8.063397E-02 -3.598680E-02 -8.565555E-02 -5.344369E-03 --3.899905E-02 -2.422867E-02 --1.215439E-01 -9.193858E-03 --1.982614E-01 -1.045860E-02 --7.712629E-02 -2.199979E-02 -3.626484E-02 -9.872078E-04 --6.305159E-02 -1.645879E-02 --3.052155E-01 -5.620564E-02 -3.507115E-02 -1.056383E-02 -1.297490E-02 -5.889958E-03 --1.208752E-02 -7.323602E-03 --3.441007E-03 -1.841496E-02 -5.543442E-02 -1.186636E-02 -8.000436E-02 -3.703835E-03 --3.636792E-02 -1.490603E-02 -8.753196E-02 -7.958027E-03 -2.066727E-01 -1.414130E-02 -3.652482E-02 -8.380395E-04 --1.652432E-01 -1.878732E-02 --1.375567E-01 -1.302400E-02 -3.692057E-03 -6.312506E-03 -9.016211E-02 -6.699735E-03 --5.875401E-02 -1.731945E-02 --3.960008E-02 -3.595906E-03 -1.653510E-01 -9.277293E-03 -4.064973E-02 -2.794606E-03 --1.729061E-02 -3.219772E-03 -5.764808E-02 -1.861051E-02 --5.970583E-02 -2.070164E-02 --6.739411E-02 -1.063341E-02 -6.561669E+01 -8.680729E+02 --7.938430E-01 -2.994198E-01 -9.278084E-01 -1.861899E+00 --1.432236E+00 -7.429647E-01 -7.460836E-02 -5.946808E-01 -6.140731E-02 -3.175177E-01 -1.212677E+00 -5.125288E-01 -1.952865E-02 -5.468421E-01 --2.965796E-01 -1.123288E-01 --5.334195E-01 -1.589612E-01 --6.340814E-01 -4.874650E-01 --4.264003E-02 -9.109571E-03 --4.323424E-01 -3.370329E-01 --1.186876E+00 -9.854644E-01 --2.420825E-01 -1.699455E-01 -2.920627E-02 -6.816643E-02 --2.684345E-01 -9.799236E-02 -1.281596E-01 -3.092987E-01 -3.746150E-01 -1.242044E-01 -1.035056E+00 -2.589772E-01 -2.005450E-01 -2.074622E-01 -5.412719E-01 -3.193584E-01 -1.070173E+00 -3.266747E-01 -2.657850E-01 -1.599950E-01 --4.694853E-01 -2.738937E-01 --7.761977E-01 -2.561652E-01 -3.673179E-02 -9.486916E-02 -3.309909E-01 -1.095243E-01 -1.623761E-01 -2.874582E-01 -2.846296E-01 -2.430397E-01 -7.384842E-01 -2.556480E-01 -3.577508E-01 -1.763210E-01 --2.917525E-01 -1.875646E-01 -1.634324E-01 -2.952144E-01 --4.329582E-01 -3.418652E-01 --2.719362E-01 -2.278925E-01 -2.382728E+01 -1.170590E+02 --4.718326E-01 -1.961501E-01 -1.612551E-02 -2.815245E-02 --6.390587E-01 -1.902968E-01 -2.290989E-01 -3.758858E-02 --1.568179E-01 -1.509162E-01 --2.363058E-01 -6.671396E-02 -4.350800E-02 -1.031680E-01 --2.956828E-01 -2.515141E-02 -4.835878E-01 -8.614200E-02 --5.365970E-02 -8.404087E-02 -6.079969E-02 -3.684343E-02 --1.313088E-02 -1.488843E-02 --2.603258E-02 -2.900625E-02 -1.249213E-01 -2.737277E-02 --4.491422E-01 -9.482600E-02 --1.095589E-01 -3.711500E-02 -2.248159E-01 -2.815827E-02 --5.976009E-02 -5.887828E-03 -6.097208E-02 -5.393315E-02 -3.449714E-02 -4.332442E-02 -1.030757E-01 -2.839453E-02 --4.399117E-01 -8.887569E-02 --4.564910E-01 -1.172398E-01 --2.528382E-01 -1.217655E-01 --3.443316E-01 -4.275616E-02 -5.437008E-02 -2.355567E-02 -5.505588E-02 -5.479129E-02 --8.326640E-02 -3.095858E-02 -1.888781E-01 -2.884542E-02 -1.981251E-01 -1.520694E-02 -5.279866E-02 -1.020641E-01 --1.465368E-01 -3.070686E-02 -2.356940E-01 -7.899657E-02 -4.109278E-01 -5.291082E-02 --2.572510E-01 -3.420895E-02 -8.047875E+00 -1.334796E+01 --1.707535E-01 -3.290927E-02 -1.024687E-01 -1.308811E-02 --1.805451E-01 -1.696222E-02 -3.519587E-02 -7.546726E-03 --1.034933E-01 -2.224207E-02 --1.580512E-01 -2.369625E-02 --4.302961E-02 -1.635623E-02 --2.992903E-02 -5.190220E-03 -2.130862E-01 -1.186351E-02 --3.321696E-02 -7.972404E-03 -4.992040E-02 -5.667098E-03 -1.261320E-02 -2.436872E-03 -8.314024E-04 -5.360616E-03 --6.318247E-02 -1.644558E-03 --1.373600E-01 -1.030707E-02 -1.511677E-03 -3.467685E-03 -1.923485E-02 -8.106508E-04 --1.180094E-01 -4.381376E-03 --2.798056E-02 -4.871288E-03 --7.689499E-02 -7.079493E-03 --5.842586E-02 -1.380713E-03 --9.946341E-02 -7.085062E-03 --8.061825E-02 -8.679468E-03 --9.229524E-03 -9.187483E-03 --1.048310E-01 -3.506026E-03 -3.666209E-02 -3.259203E-03 -1.190727E-01 -4.935341E-03 --7.391655E-02 -2.805554E-03 -2.029126E-02 -2.497736E-03 -2.787185E-02 -5.677987E-04 -6.873108E-02 -1.287727E-02 --5.262840E-02 -3.190440E-03 -3.910911E-02 -8.661121E-03 -1.076197E-01 -5.456176E-03 --7.476066E-02 -2.693605E-03 -4.056568E+01 -3.389623E+02 --6.428633E-01 -6.128893E-01 -4.878518E-01 -2.130257E-01 --9.548044E-01 -4.556949E-01 -2.234940E-01 -1.006817E-01 -1.080276E-01 -5.980158E-01 --3.639229E-01 -3.120105E-01 -3.237506E-01 -3.451548E-01 -1.143081E-01 -7.924550E-02 -6.456733E-01 -2.424413E-01 -1.478136E-01 -1.458665E-01 -2.134798E-02 -9.102875E-02 -3.633264E-01 -7.386463E-02 --2.213946E-01 -1.253249E-01 --3.153847E-01 -1.094273E-01 --7.161113E-01 -2.275500E-01 --2.461979E-01 -1.484452E-01 -2.332886E-01 -9.715521E-02 --7.029988E-02 -1.835254E-02 --1.982842E-01 -9.722998E-02 --2.089693E-01 -2.271404E-01 -7.316104E-02 -3.974665E-02 --3.266640E-01 -8.054809E-02 --5.126088E-01 -3.234942E-01 --3.048753E-01 -3.439501E-01 --4.872647E-01 -9.473730E-02 -1.590200E-01 -3.613462E-02 -4.641787E-01 -1.671339E-01 --1.391114E-01 -3.581561E-02 -2.209343E-01 -1.489367E-02 -3.015665E-01 -4.265694E-02 -1.334716E-01 -2.321929E-01 --3.702914E-01 -1.699549E-01 -8.891532E-02 -1.708595E-01 -6.123686E-01 -1.429184E-01 --5.891300E-01 -1.085467E-01 -tally 3: -3.862543E+01 -2.993190E+02 --5.083613E-01 -2.933365E-01 --4.356793E-01 -6.676831E-01 --6.093148E-01 -5.685331E-01 -2.512276E-01 -1.308652E-01 --1.075955E+00 -4.775270E-01 -3.660307E-01 -1.627691E-01 -5.402149E-01 -2.324946E-01 --3.887573E-01 -1.028105E-01 -4.324152E-01 -1.015147E-01 -3.306993E-02 -8.425069E-02 -2.127456E-01 -5.435453E-02 -2.977294E-01 -1.088039E-01 --1.055079E+00 -3.590635E-01 --6.740592E-01 -2.606281E-01 -3.329512E-01 -1.587428E-01 --1.248691E-01 -1.659045E-01 -2.306000E-01 -1.062057E-01 -9.127791E-02 -2.649459E-01 -2.629881E-01 -4.786229E-02 -2.286813E-01 -2.363629E-02 -6.338613E-01 -1.118828E-01 -7.466647E-01 -1.424535E-01 -7.955161E-02 -1.003327E-02 -1.082691E-01 -2.727882E-02 --5.295185E-01 -1.335133E-01 --6.321517E-01 -1.422916E-01 -1.236137E-01 -2.041422E-01 --5.389265E-02 -1.852888E-01 -3.746082E-01 -5.580885E-02 -1.383528E-01 -2.754456E-01 -5.081204E-01 -1.886515E-01 --4.022264E-01 -1.417397E-01 --3.377771E-01 -6.673888E-02 -1.170109E-01 -1.783182E-02 --2.097916E-01 -7.139323E-02 -1.438678E+01 -4.193571E+01 --6.547124E-01 -1.780450E-01 -2.207489E-01 -2.115835E-01 -4.952323E-02 -3.039341E-01 -6.681546E-01 -1.389250E-01 --4.078026E-02 -4.393667E-02 --8.695509E-01 -2.850853E-01 --1.792062E-01 -7.367253E-02 --5.657500E-01 -2.115125E-01 --8.525189E-02 -2.541971E-02 -5.227867E-02 -2.008468E-02 -6.825349E-02 -5.316522E-02 -3.763076E-01 -7.112554E-02 --1.279973E-02 -1.883096E-01 -7.775189E-02 -6.874374E-02 -1.119537E-01 -8.467755E-02 --1.600632E-01 -8.650448E-02 -6.210095E-01 -1.094309E-01 --9.997484E-02 -3.935353E-02 --2.300525E-01 -2.351925E-02 -2.486103E-02 -3.125565E-02 -1.289518E-02 -2.879251E-02 --3.166559E-01 -2.931428E-02 --1.379285E-02 -2.416257E-02 -1.220552E-02 -5.154030E-02 --1.431676E-01 -3.434080E-02 -8.148581E-02 -4.218412E-02 -8.541678E-03 -6.396306E-02 --7.851012E-03 -5.799658E-02 -2.435723E-01 -6.744263E-02 --2.429877E-01 -6.966516E-02 --1.638644E-01 -2.058798E-02 --8.986584E-03 -1.374824E-02 -3.547454E-01 -7.765460E-02 --1.570173E-01 -6.916960E-02 --1.056941E-02 -7.626528E-03 -6.400634E+01 -8.298077E+02 --3.894111E-01 -8.617494E-01 -1.796567E-01 -1.065356E+00 --1.561037E+00 -7.701475E-01 --2.237530E-01 -2.259442E-01 -1.109999E+00 -6.179412E-01 -1.636912E+00 -7.887441E-01 -4.661183E-01 -4.191138E-01 --1.040546E+00 -2.971961E-01 -1.044850E-01 -1.493530E-01 --4.991935E-01 -3.222404E-01 --4.205099E-01 -2.734911E-01 --7.583139E-01 -3.000853E-01 --3.750811E-01 -1.348273E-01 --6.355508E-01 -3.666139E-01 -5.233787E-01 -1.292414E-01 --2.869538E-02 -9.115092E-02 -6.851052E-01 -3.061040E-01 -1.703522E-01 -7.300335E-02 -4.541075E-01 -4.438507E-01 --2.674857E-01 -4.718588E-01 -3.022517E-02 -1.136781E-01 -5.755596E-01 -2.688162E-01 -2.698373E-01 -1.403188E-01 -8.772347E-01 -3.503562E-01 --4.258508E-01 -1.400825E-01 --1.384853E-01 -4.924947E-02 --1.009402E-01 -2.039230E-01 --1.339732E-01 -4.772083E-02 --3.249636E-01 -4.339747E-01 -1.564400E-01 -2.703717E-01 -2.536360E-01 -8.543919E-02 --3.622063E-01 -7.442240E-02 --2.074953E-02 -1.355614E-01 --3.909820E-02 -1.007999E-01 -3.162815E-01 -9.656425E-02 -2.426423E+01 -1.215124E+02 --9.628829E-01 -3.563586E-01 -2.964625E-01 -9.739638E-02 --3.680881E-01 -3.484018E-01 -4.339143E-01 -7.590564E-02 -4.633394E-02 -1.080030E-01 -3.091634E-01 -1.246585E-01 -4.520500E-02 -1.095704E-01 -2.479383E-01 -1.138276E-01 -6.457108E-02 -6.833667E-02 --5.623363E-02 -1.087254E-01 -3.675294E-01 -9.602246E-02 --1.459951E-01 -9.440544E-02 --6.817672E-02 -4.978066E-02 -1.076782E-02 -1.697440E-01 --1.024501E-02 -1.184830E-01 --1.654178E-01 -1.689209E-02 --1.006214E-01 -3.392546E-02 -5.070063E-01 -7.598100E-02 -2.251704E-01 -7.867348E-02 --1.693789E-01 -2.069974E-01 --2.790249E-01 -2.674643E-02 -3.888604E-01 -3.649330E-02 -7.614452E-02 -7.098023E-02 -1.236282E-02 -5.476895E-02 --3.151637E-01 -3.543466E-02 --6.363562E-01 -9.323507E-02 -2.808153E-01 -8.537981E-02 -2.197639E-01 -3.393653E-02 -8.660625E-02 -1.575544E-02 -3.733826E-02 -1.449783E-02 -8.800903E-04 -3.993931E-02 -3.304886E-01 -3.099095E-02 --4.149186E-02 -5.375091E-02 -2.448819E-01 -9.225028E-02 --1.230091E-01 -3.865008E-02 -7.600812E+00 -1.199814E+01 --8.738539E-01 -3.078183E-01 --2.592305E-01 -1.015952E-01 --6.391696E-02 -6.657129E-02 --2.857855E-01 -2.216294E-02 --3.516811E-01 -3.429194E-02 -4.585144E-02 -6.204056E-02 --1.599494E-01 -1.684846E-02 --2.364219E-01 -1.550644E-02 -1.197289E-01 -8.631394E-02 --1.364517E-01 -5.086560E-02 --2.213374E-01 -2.779096E-02 --7.328761E-02 -1.216230E-02 -2.476803E-01 -2.724500E-02 --6.356296E-02 -2.513244E-02 --3.886281E-01 -9.479377E-02 -1.006972E-01 -1.352120E-02 -6.932242E-02 -3.192705E-02 --3.232505E-02 -5.592418E-02 -9.582599E-02 -1.504811E-02 --2.887999E-01 -3.760482E-02 --2.372013E-01 -1.868786E-02 --1.655526E-01 -4.720116E-02 -8.611265E-02 -2.284310E-02 --2.142116E-01 -2.619080E-02 --1.811202E-01 -1.457105E-02 -1.430164E-01 -2.016598E-02 --4.066031E-01 -7.671356E-02 -1.364946E-01 -1.385677E-02 -8.357667E-02 -1.521943E-02 --2.235270E-02 -1.029570E-02 --7.920760E-02 -4.227880E-02 -2.622096E-01 -2.327728E-02 --7.787296E-03 -2.288300E-02 --1.645219E-02 -5.394704E-02 -7.274557E-02 -1.075570E-02 -4.104875E+01 -3.455300E+02 --9.827893E-01 -2.751051E-01 -3.227606E-01 -1.213711E-01 --1.272840E-02 -2.813639E-01 --1.910394E-01 -5.682320E-02 -4.136260E-01 -2.444497E-01 --5.123352E-02 -3.867174E-01 -4.424857E-02 -9.651204E-02 --3.975443E-02 -1.867060E-01 -7.618837E-01 -1.756891E-01 -4.259599E-01 -1.146646E-01 -5.658031E-02 -1.366891E-01 -2.464931E-01 -2.181122E-01 --1.593998E-01 -2.666678E-01 --1.928096E-01 -1.216164E-01 --7.020992E-01 -1.701086E-01 -3.914244E-01 -1.772217E-01 -3.285697E-01 -1.521826E-01 --2.947923E-02 -8.201284E-02 --1.346653E-01 -4.498340E-02 -2.112724E-01 -9.923303E-02 --8.551910E-02 -8.804286E-03 --3.631005E-01 -1.168145E-01 --1.840770E-01 -5.714283E-02 --2.709303E-02 -9.381338E-02 --2.104005E-02 -4.479215E-02 -4.059493E-01 -8.277066E-02 -2.877400E-01 -8.584721E-02 -4.881128E-02 -1.864179E-01 -8.584545E-02 -4.421744E-02 --4.392466E-01 -6.260373E-02 --3.143214E-02 -8.184856E-02 --5.630973E-01 -1.323469E-01 --8.010498E-02 -1.096975E-01 -1.818829E-01 -1.717701E-02 --1.062149E-01 -5.400365E-02 -tally 4: -3.862543E+01 -2.993190E+02 --5.083613E-01 -2.933365E-01 --4.356793E-01 -6.676831E-01 --6.093148E-01 -5.685331E-01 -2.512276E-01 -1.308652E-01 --1.075955E+00 -4.775270E-01 -3.660307E-01 -1.627691E-01 -5.402149E-01 -2.324946E-01 --3.887573E-01 -1.028105E-01 -4.324152E-01 -1.015147E-01 -3.306993E-02 -8.425069E-02 -2.127456E-01 -5.435453E-02 -2.977294E-01 -1.088039E-01 --1.055079E+00 -3.590635E-01 --6.740592E-01 -2.606281E-01 -3.329512E-01 -1.587428E-01 --1.248691E-01 -1.659045E-01 -2.306000E-01 -1.062057E-01 -9.127791E-02 -2.649459E-01 -2.629881E-01 -4.786229E-02 -2.286813E-01 -2.363629E-02 -6.338613E-01 -1.118828E-01 -7.466647E-01 -1.424535E-01 -7.955161E-02 -1.003327E-02 -1.082691E-01 -2.727882E-02 --5.295185E-01 -1.335133E-01 --6.321517E-01 -1.422916E-01 -1.236137E-01 -2.041422E-01 --5.389265E-02 -1.852888E-01 -3.746082E-01 -5.580885E-02 -1.383528E-01 -2.754456E-01 -5.081204E-01 -1.886515E-01 --4.022264E-01 -1.417397E-01 --3.377771E-01 -6.673888E-02 -1.170109E-01 -1.783182E-02 --2.097916E-01 -7.139323E-02 -1.438678E+01 -4.193571E+01 --6.547124E-01 -1.780450E-01 -2.207489E-01 -2.115835E-01 -4.952323E-02 -3.039341E-01 -6.681546E-01 -1.389250E-01 --4.078026E-02 -4.393667E-02 --8.695509E-01 -2.850853E-01 --1.792062E-01 -7.367253E-02 --5.657500E-01 -2.115125E-01 --8.525189E-02 -2.541971E-02 -5.227867E-02 -2.008468E-02 -6.825349E-02 -5.316522E-02 -3.763076E-01 -7.112554E-02 --1.279973E-02 -1.883096E-01 -7.775189E-02 -6.874374E-02 -1.119537E-01 -8.467755E-02 --1.600632E-01 -8.650448E-02 -6.210095E-01 -1.094309E-01 --9.997484E-02 -3.935353E-02 --2.300525E-01 -2.351925E-02 -2.486103E-02 -3.125565E-02 -1.289518E-02 -2.879251E-02 --3.166559E-01 -2.931428E-02 --1.379285E-02 -2.416257E-02 -1.220552E-02 -5.154030E-02 --1.431676E-01 -3.434080E-02 -8.148581E-02 -4.218412E-02 -8.541678E-03 -6.396306E-02 --7.851012E-03 -5.799658E-02 -2.435723E-01 -6.744263E-02 --2.429877E-01 -6.966516E-02 --1.638644E-01 -2.058798E-02 --8.986584E-03 -1.374824E-02 -3.547454E-01 -7.765460E-02 --1.570173E-01 -6.916960E-02 --1.056941E-02 -7.626528E-03 -6.400634E+01 -8.298077E+02 --3.894111E-01 -8.617494E-01 -1.796567E-01 -1.065356E+00 --1.561037E+00 -7.701475E-01 --2.237530E-01 -2.259442E-01 -1.109999E+00 -6.179412E-01 -1.636912E+00 -7.887441E-01 -4.661183E-01 -4.191138E-01 --1.040546E+00 -2.971961E-01 -1.044850E-01 -1.493530E-01 --4.991935E-01 -3.222404E-01 --4.205099E-01 -2.734911E-01 --7.583139E-01 -3.000853E-01 --3.750811E-01 -1.348273E-01 --6.355508E-01 -3.666139E-01 -5.233787E-01 -1.292414E-01 --2.869538E-02 -9.115092E-02 -6.851052E-01 -3.061040E-01 -1.703522E-01 -7.300335E-02 -4.541075E-01 -4.438507E-01 --2.674857E-01 -4.718588E-01 -3.022517E-02 -1.136781E-01 -5.755596E-01 -2.688162E-01 -2.698373E-01 -1.403188E-01 -8.772347E-01 -3.503562E-01 --4.258508E-01 -1.400825E-01 --1.384853E-01 -4.924947E-02 --1.009402E-01 -2.039230E-01 --1.339732E-01 -4.772083E-02 --3.249636E-01 -4.339747E-01 -1.564400E-01 -2.703717E-01 -2.536360E-01 -8.543919E-02 --3.622063E-01 -7.442240E-02 --2.074953E-02 -1.355614E-01 --3.909820E-02 -1.007999E-01 -3.162815E-01 -9.656425E-02 -2.426423E+01 -1.215124E+02 --9.628829E-01 -3.563586E-01 -2.964625E-01 -9.739638E-02 --3.680881E-01 -3.484018E-01 -4.339143E-01 -7.590564E-02 -4.633394E-02 -1.080030E-01 -3.091634E-01 -1.246585E-01 -4.520500E-02 -1.095704E-01 -2.479383E-01 -1.138276E-01 -6.457108E-02 -6.833667E-02 --5.623363E-02 -1.087254E-01 -3.675294E-01 -9.602246E-02 --1.459951E-01 -9.440544E-02 --6.817672E-02 -4.978066E-02 -1.076782E-02 -1.697440E-01 --1.024501E-02 -1.184830E-01 --1.654178E-01 -1.689209E-02 --1.006214E-01 -3.392546E-02 -5.070063E-01 -7.598100E-02 -2.251704E-01 -7.867348E-02 --1.693789E-01 -2.069974E-01 --2.790249E-01 -2.674643E-02 -3.888604E-01 -3.649330E-02 -7.614452E-02 -7.098023E-02 -1.236282E-02 -5.476895E-02 --3.151637E-01 -3.543466E-02 --6.363562E-01 -9.323507E-02 -2.808153E-01 -8.537981E-02 -2.197639E-01 -3.393653E-02 -8.660625E-02 -1.575544E-02 -3.733826E-02 -1.449783E-02 -8.800903E-04 -3.993931E-02 -3.304886E-01 -3.099095E-02 --4.149186E-02 -5.375091E-02 -2.448819E-01 -9.225028E-02 --1.230091E-01 -3.865008E-02 -7.600812E+00 -1.199814E+01 --8.738539E-01 -3.078183E-01 --2.592305E-01 -1.015952E-01 --6.391696E-02 -6.657129E-02 --2.857855E-01 -2.216294E-02 --3.516811E-01 -3.429194E-02 -4.585144E-02 -6.204056E-02 --1.599494E-01 -1.684846E-02 --2.364219E-01 -1.550644E-02 -1.197289E-01 -8.631394E-02 --1.364517E-01 -5.086560E-02 --2.213374E-01 -2.779096E-02 --7.328761E-02 -1.216230E-02 -2.476803E-01 -2.724500E-02 --6.356296E-02 -2.513244E-02 --3.886281E-01 -9.479377E-02 -1.006972E-01 -1.352120E-02 -6.932242E-02 -3.192705E-02 --3.232505E-02 -5.592418E-02 -9.582599E-02 -1.504811E-02 --2.887999E-01 -3.760482E-02 --2.372013E-01 -1.868786E-02 --1.655526E-01 -4.720116E-02 -8.611265E-02 -2.284310E-02 --2.142116E-01 -2.619080E-02 --1.811202E-01 -1.457105E-02 -1.430164E-01 -2.016598E-02 --4.066031E-01 -7.671356E-02 -1.364946E-01 -1.385677E-02 -8.357667E-02 -1.521943E-02 --2.235270E-02 -1.029570E-02 --7.920760E-02 -4.227880E-02 -2.622096E-01 -2.327728E-02 --7.787296E-03 -2.288300E-02 --1.645219E-02 -5.394704E-02 -7.274557E-02 -1.075570E-02 -4.104875E+01 -3.455300E+02 --9.827893E-01 -2.751051E-01 -3.227606E-01 -1.213711E-01 --1.272840E-02 -2.813639E-01 --1.910394E-01 -5.682320E-02 -4.136260E-01 -2.444497E-01 --5.123352E-02 -3.867174E-01 -4.424857E-02 -9.651204E-02 --3.975443E-02 -1.867060E-01 -7.618837E-01 -1.756891E-01 -4.259599E-01 -1.146646E-01 -5.658031E-02 -1.366891E-01 -2.464931E-01 -2.181122E-01 --1.593998E-01 -2.666678E-01 --1.928096E-01 -1.216164E-01 --7.020992E-01 -1.701086E-01 -3.914244E-01 -1.772217E-01 -3.285697E-01 -1.521826E-01 --2.947923E-02 -8.201284E-02 --1.346653E-01 -4.498340E-02 -2.112724E-01 -9.923303E-02 --8.551910E-02 -8.804286E-03 --3.631005E-01 -1.168145E-01 --1.840770E-01 -5.714283E-02 --2.709303E-02 -9.381338E-02 --2.104005E-02 -4.479215E-02 -4.059493E-01 -8.277066E-02 -2.877400E-01 -8.584721E-02 -4.881128E-02 -1.864179E-01 -8.584545E-02 -4.421744E-02 --4.392466E-01 -6.260373E-02 --3.143214E-02 -8.184856E-02 --5.630973E-01 -1.323469E-01 --8.010498E-02 -1.096975E-01 -1.818829E-01 -1.717701E-02 --1.062149E-01 -5.400365E-02 diff --git a/tests/test_score_flux_yn/test_score_flux_yn.py b/tests/test_score_flux_yn/test_score_flux_yn.py deleted file mode 100755 index 254069226c..0000000000 --- a/tests/test_score_flux_yn/test_score_flux_yn.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreFluxYnTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27, 28, 29)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 5)] - [t.add_filter(filt) for t in tallies] - tallies[0].add_score('flux') - [t.add_score('flux-y5') for t in tallies[1:]] - tallies[1].estimator = 'tracklength' - tallies[2].estimator = 'analog' - tallies[3].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreFluxYnTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreFluxYnTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreFluxYnTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_inverse_velocity/inputs_true.dat b/tests/test_score_inverse_velocity/inputs_true.dat deleted file mode 100644 index 96cbc7378a..0000000000 --- a/tests/test_score_inverse_velocity/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -4eee301ac8b984041ded725f1b031602e823edec1dd0883481fba794d6301eb5b83a0e87cf77b1298901de518c783ee5a017a91b5ac962ab0db8b37bb9918053 \ No newline at end of file diff --git a/tests/test_score_inverse_velocity/results_true.dat b/tests/test_score_inverse_velocity/results_true.dat deleted file mode 100644 index 740d31f16b..0000000000 --- a/tests/test_score_inverse_velocity/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.049628E-05 -2.261930E-11 -4.056389E-06 -3.411247E-12 -2.243766E-05 -1.069671E-10 -6.354432E-06 -8.370608E-12 -tally 2: -1.029200E-05 -2.180706E-11 -4.353200E-06 -4.363747E-12 -2.211790E-05 -1.055892E-10 -6.086777E-06 -7.589579E-12 -tally 3: -1.029200E-05 -2.180706E-11 -4.353200E-06 -4.363747E-12 -2.211790E-05 -1.055892E-10 -6.086777E-06 -7.589579E-12 diff --git a/tests/test_score_inverse_velocity/test_score_inversevelocity.py b/tests/test_score_inverse_velocity/test_score_inversevelocity.py deleted file mode 100644 index 787e9df091..0000000000 --- a/tests/test_score_inverse_velocity/test_score_inversevelocity.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreInverseVelocityTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('inverse-velocity') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreInverseVelocityTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreInverseVelocityTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreInverseVelocityTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_kappafission/inputs_true.dat b/tests/test_score_kappafission/inputs_true.dat deleted file mode 100644 index b89696c82b..0000000000 --- a/tests/test_score_kappafission/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -32c8c6625dbeecd8ed670871234a0aa9878a29cd86d93328151d90eda209bf70ee83901418cb29f7e8ef66d6f9bdc74a350f2340b285abc64d772baf02ed6377 \ No newline at end of file diff --git a/tests/test_score_kappafission/results_true.dat b/tests/test_score_kappafission/results_true.dat deleted file mode 100644 index 976eefa36e..0000000000 --- a/tests/test_score_kappafission/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -2.266169E+02 -1.049923E+04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.366590E+02 -3.861651E+03 -tally 2: -2.403775E+02 -1.175130E+04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.270420E+02 -3.297537E+03 -tally 3: -2.217588E+02 -1.003581E+04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.376303E+02 -3.875598E+03 diff --git a/tests/test_score_kappafission/test_score_kappafission.py b/tests/test_score_kappafission/test_score_kappafission.py deleted file mode 100644 index 2e93b51c46..0000000000 --- a/tests/test_score_kappafission/test_score_kappafission.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreKappaFissionTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('kappa-fission') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreKappaFissionTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreKappaFissionTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreKappaFissionTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_nufission/inputs_true.dat b/tests/test_score_nufission/inputs_true.dat deleted file mode 100644 index 0e6d19262d..0000000000 --- a/tests/test_score_nufission/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -ef1c9dc1906068cb48427ffc8776d8b95810ca1aca4534692ab7f788d8dac84c5f4545c7edbd884b55fb3e2b35aa1f28b9277d359427fe89bed012b38bf6342e \ No newline at end of file diff --git a/tests/test_score_nufission/results_true.dat b/tests/test_score_nufission/results_true.dat deleted file mode 100644 index 31c6abe9d5..0000000000 --- a/tests/test_score_nufission/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -3.041781E+00 -1.891714E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.835166E+00 -6.963265E-01 -tally 2: -3.341227E+00 -2.322075E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.862652E+00 -7.112121E-01 -tally 3: -2.975121E+00 -1.806644E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.846861E+00 -6.985413E-01 diff --git a/tests/test_score_nufission/test_score_nufission.py b/tests/test_score_nufission/test_score_nufission.py deleted file mode 100644 index 3d540daac7..0000000000 --- a/tests/test_score_nufission/test_score_nufission.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreNuFissionTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23, 27)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('nu-fission') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreNuFissionTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreNuFissionTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreNuFissionTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_nuscatter/inputs_true.dat b/tests/test_score_nuscatter/inputs_true.dat deleted file mode 100644 index aaf16deca5..0000000000 --- a/tests/test_score_nuscatter/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -2ec83c8c9175d4fccd6421ef736cced51f90bf01f7e20992a0d1b49db04221132d483032467c9dcda5f562f10a67f5fde1967a025230e4ea2bf9668816881d21 \ No newline at end of file diff --git a/tests/test_score_nuscatter/results_true.dat b/tests/test_score_nuscatter/results_true.dat deleted file mode 100644 index 8f9fcba891..0000000000 --- a/tests/test_score_nuscatter/results_true.dat +++ /dev/null @@ -1,11 +0,0 @@ -k-combined: -1.034954E+00 1.782721E-02 -tally 1: -0.000000E+00 -0.000000E+00 -2.514000E+01 -6.511880E+01 -6.370000E+00 -4.230900E+00 -8.547000E+01 -7.481913E+02 diff --git a/tests/test_score_nuscatter/test_score_nuscatter.py b/tests/test_score_nuscatter/test_score_nuscatter.py deleted file mode 100644 index 6f33181265..0000000000 --- a/tests/test_score_nuscatter/test_score_nuscatter.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreNuScatterTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - t = openmc.Tally(tally_id=1) - t.add_filter(filt) - t.add_score('nu-scatter') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t) - - self._input_set.build_default_materials_and_geometry() - self._input_set.build_default_settings() - - self._input_set.settings.inactive = 0 - - self._input_set.export() - - def _cleanup(self): - super(ScoreNuScatterTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreNuScatterTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_nuscatter_n/inputs_true.dat b/tests/test_score_nuscatter_n/inputs_true.dat deleted file mode 100644 index cd16f80122..0000000000 --- a/tests/test_score_nuscatter_n/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -b304e586966abb31fbe625a7a48547e51ea563061928c61bc8bbec01df94b4a61b8c874dd4b5cac86a74508e81dd3f7dd8d801fcc4fe75ded5eeb3f73cf113a2 \ No newline at end of file diff --git a/tests/test_score_nuscatter_n/results_true.dat b/tests/test_score_nuscatter_n/results_true.dat deleted file mode 100644 index 0c1315807f..0000000000 --- a/tests/test_score_nuscatter_n/results_true.dat +++ /dev/null @@ -1,33 +0,0 @@ -k-combined: -1.034954E+00 1.782721E-02 -tally 1: -2.514000E+01 -6.511880E+01 -2.724740E+00 -8.378120E-01 -1.521255E+00 -2.667071E-01 -7.903706E-01 -1.216244E-01 -5.770120E-01 -5.508594E-02 -6.370000E+00 -4.230900E+00 -8.075261E-01 -9.047897E-02 -5.879624E-01 -4.107777E-02 -2.034636E-01 -8.243025E-03 --2.744502E-02 -1.515916E-03 -8.547000E+01 -7.481913E+02 -4.446994E+01 -2.016855E+02 -1.664683E+01 -2.837713E+01 -1.373176E+00 -3.329601E-01 --1.663772E+00 -4.264485E-01 diff --git a/tests/test_score_nuscatter_n/test_score_nuscatter_n.py b/tests/test_score_nuscatter_n/test_score_nuscatter_n.py deleted file mode 100644 index 40029bd02c..0000000000 --- a/tests/test_score_nuscatter_n/test_score_nuscatter_n.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreNuScatterNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23)) - t = openmc.Tally(tally_id=1) - t.add_filter(filt) - t.add_score('nu-scatter') - t.add_score('nu-scatter-1') - t.add_score('nu-scatter-2') - t.add_score('nu-scatter-3') - t.add_score('nu-scatter-4') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t) - - self._input_set.build_default_materials_and_geometry() - self._input_set.build_default_settings() - - self._input_set.settings.inactive = 0 - - self._input_set.export() - - def _cleanup(self): - super(ScoreNuScatterNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreNuScatterNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_nuscatter_pn/inputs_true.dat b/tests/test_score_nuscatter_pn/inputs_true.dat deleted file mode 100644 index ae7c108b7a..0000000000 --- a/tests/test_score_nuscatter_pn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -9c3d305ad2c4ac642db896100805c32ce0cf0bbf89958718a30afde7e1dd1329fb7946c35fc628355d29270760e5f1c3700890dfba1afe8d31f4deab63de86ff \ No newline at end of file diff --git a/tests/test_score_nuscatter_pn/results_true.dat b/tests/test_score_nuscatter_pn/results_true.dat deleted file mode 100644 index 603c13e701..0000000000 --- a/tests/test_score_nuscatter_pn/results_true.dat +++ /dev/null @@ -1,24 +0,0 @@ -k-combined: -1.034954E+00 1.782721E-02 -tally 1: -2.514000E+01 -6.511880E+01 -2.724740E+00 -8.378120E-01 -1.521255E+00 -2.667071E-01 -7.903706E-01 -1.216244E-01 -5.770120E-01 -5.508594E-02 -tally 2: -2.514000E+01 -6.511880E+01 -2.724740E+00 -8.378120E-01 -1.521255E+00 -2.667071E-01 -7.903706E-01 -1.216244E-01 -5.770120E-01 -5.508594E-02 diff --git a/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py b/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py deleted file mode 100644 index 6a69fe054d..0000000000 --- a/tests/test_score_nuscatter_pn/test_score_nuscatter_pn.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreNuScatterPNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, )) - t1 = openmc.Tally(tally_id=1) - t1.add_filter(filt) - t1.add_score('nu-scatter-0') - t1.add_score('nu-scatter-1') - t1.add_score('nu-scatter-2') - t1.add_score('nu-scatter-3') - t1.add_score('nu-scatter-4') - t2 = openmc.Tally(tally_id=2) - t2.add_filter(filt) - t2.add_score('nu-scatter-p4') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t1) - self._input_set.tallies.add_tally(t2) - - self._input_set.build_default_materials_and_geometry() - self._input_set.build_default_settings() - - self._input_set.settings.inactive = 0 - - self._input_set.export() - - def _cleanup(self): - super(ScoreNuScatterPNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreNuScatterPNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_nuscatter_yn/inputs_true.dat b/tests/test_score_nuscatter_yn/inputs_true.dat deleted file mode 100644 index da8fc3f2fe..0000000000 --- a/tests/test_score_nuscatter_yn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -c483f62afa60f7390bbd82d7372a1f629f6783f8fb85857c63a3912e8d980118eff38f356b53312d067daa0f190634ac89bebac19cfe15325fb2b440473addae \ No newline at end of file diff --git a/tests/test_score_nuscatter_yn/results_true.dat b/tests/test_score_nuscatter_yn/results_true.dat deleted file mode 100644 index 2b14a72560..0000000000 --- a/tests/test_score_nuscatter_yn/results_true.dat +++ /dev/null @@ -1,38 +0,0 @@ -k-combined: -1.034954E+00 1.782721E-02 -tally 1: -2.514000E+01 -6.511880E+01 -tally 2: -2.514000E+01 -6.511880E+01 -2.222467E-01 -2.881247E-02 -3.019176E-01 -3.014833E-02 --8.459006E-04 -4.773570E-02 -9.596964E-02 -1.009754E-02 -4.314855E-02 -6.207871E-03 -4.607677E-02 -9.205573E-03 -2.345994E-03 -1.243004E-02 -9.577397E-02 -6.605519E-03 -2.821584E-02 -3.834286E-03 --1.077389E-01 -6.570217E-03 -1.106443E-01 -1.006436E-02 -1.322104E-01 -7.721677E-03 --1.315548E-02 -5.488918E-04 --2.792171E-02 -5.816161E-03 -1.994370E-02 -1.169674E-03 diff --git a/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py b/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py deleted file mode 100644 index 6a6ad54956..0000000000 --- a/tests/test_score_nuscatter_yn/test_score_nuscatter_yn.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreNuScatterYNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, )) - t1 = openmc.Tally(tally_id=1) - t1.add_filter(filt) - t1.add_score('nu-scatter-0') - t2 = openmc.Tally(tally_id=2) - t2.add_filter(filt) - t2.add_score('nu-scatter-y3') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t1) - self._input_set.tallies.add_tally(t2) - - self._input_set.build_default_materials_and_geometry() - self._input_set.build_default_settings() - - self._input_set.settings.inactive = 0 - - self._input_set.export() - - def _cleanup(self): - super(ScoreNuScatterYNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreNuScatterYNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_scatter/inputs_true.dat b/tests/test_score_scatter/inputs_true.dat deleted file mode 100644 index 28e2bebeee..0000000000 --- a/tests/test_score_scatter/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -b3e7dc8968d814e455866532c05702196bab7dbdaca3c6cd3eb4f22243efb67755b373a7c54de7d767c6f3e0c4b5db612c345832c8f07cd1f50bc08fc841b3b8 \ No newline at end of file diff --git a/tests/test_score_scatter/results_true.dat b/tests/test_score_scatter/results_true.dat deleted file mode 100644 index 8d3e0fdc03..0000000000 --- a/tests/test_score_scatter/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -1.514235E+01 -4.620490E+01 -3.839050E+00 -2.975620E+00 -5.317903E+01 -5.754103E+02 -tally 2: -0.000000E+00 -0.000000E+00 -1.485000E+01 -4.439790E+01 -4.120000E+00 -3.438000E+00 -5.173000E+01 -5.467243E+02 -tally 3: -0.000000E+00 -0.000000E+00 -1.496769E+01 -4.502714E+01 -4.117144E+00 -3.431861E+00 -5.174677E+01 -5.469474E+02 diff --git a/tests/test_score_scatter/test_score_scatter.py b/tests/test_score_scatter/test_score_scatter.py deleted file mode 100644 index 0b2621acd3..0000000000 --- a/tests/test_score_scatter/test_score_scatter.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreScatterTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('scatter') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreScatterTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreScatterTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreScatterTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_scatter_n/inputs_true.dat b/tests/test_score_scatter_n/inputs_true.dat deleted file mode 100644 index ea71722993..0000000000 --- a/tests/test_score_scatter_n/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -fae463e84fbb166a9ec03390824e359d162fae9f8556d44681c76907c22a0d48e69281dcce6ffd7f3d6e4b19dad3d705c516328d902878288300f87c4a72a671 \ No newline at end of file diff --git a/tests/test_score_scatter_n/results_true.dat b/tests/test_score_scatter_n/results_true.dat deleted file mode 100644 index 96e56bd6ab..0000000000 --- a/tests/test_score_scatter_n/results_true.dat +++ /dev/null @@ -1,33 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -4.120000E+00 -3.438000E+00 -6.222571E-01 -8.335984E-02 -1.670136E-01 -1.374768E-02 --5.819374E-02 -1.091808E-02 --6.389550E-02 -5.688533E-03 -5.173000E+01 -5.467243E+02 -2.669403E+01 -1.451361E+02 -9.691140E+00 -1.933574E+01 -5.860769E-01 -2.122377E-01 --1.190340E+00 -3.145785E-01 diff --git a/tests/test_score_scatter_n/test_score_scatter_n.py b/tests/test_score_scatter_n/test_score_scatter_n.py deleted file mode 100644 index 47fd12b2ed..0000000000 --- a/tests/test_score_scatter_n/test_score_scatter_n.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreScatterNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, 22, 23)) - t = openmc.Tally(tally_id=1) - t.add_filter(filt) - t.add_score('scatter') - t.add_score('scatter-1') - t.add_score('scatter-2') - t.add_score('scatter-3') - t.add_score('scatter-4') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t) - - super(ScoreScatterNTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreScatterNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreScatterNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_scatter_pn/inputs_true.dat b/tests/test_score_scatter_pn/inputs_true.dat deleted file mode 100644 index 9c74a13f93..0000000000 --- a/tests/test_score_scatter_pn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -2d2e8de66740bbed327dd926f59d75120b04d30ffb9d7c96876ba21c7768c367c63e3624c3ee40553dc40d9a5379fa0052a932a6c5f45d1ad4327c4ac83cdff2 \ No newline at end of file diff --git a/tests/test_score_scatter_pn/results_true.dat b/tests/test_score_scatter_pn/results_true.dat deleted file mode 100644 index 753216a8b7..0000000000 --- a/tests/test_score_scatter_pn/results_true.dat +++ /dev/null @@ -1,24 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -tally 2: -1.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 diff --git a/tests/test_score_scatter_pn/test_score_scatter_pn.py b/tests/test_score_scatter_pn/test_score_scatter_pn.py deleted file mode 100644 index 9186fe5480..0000000000 --- a/tests/test_score_scatter_pn/test_score_scatter_pn.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreScatterPNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, )) - t1 = openmc.Tally(tally_id=1) - t1.add_filter(filt) - t1.add_score('scatter-0') - t1.add_score('scatter-1') - t1.add_score('scatter-2') - t1.add_score('scatter-3') - t1.add_score('scatter-4') - t1.estimator = 'analog' - t2 = openmc.Tally(tally_id=2) - t2.add_filter(filt) - t2.add_score('scatter-p4') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t1) - self._input_set.tallies.add_tally(t2) - - super(ScoreScatterPNTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreScatterPNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreScatterPNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_scatter_yn/inputs_true.dat b/tests/test_score_scatter_yn/inputs_true.dat deleted file mode 100644 index 0bfb564ff8..0000000000 --- a/tests/test_score_scatter_yn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -8dd146ebd2008801a4c83470e8d9fcc8d39fe5e687c65f980eca209dd5f7fb8d17bfadf3bf3d452eaa564ee5f35a8fc97adc3dda44160d6ad574b784f2dd0030 \ No newline at end of file diff --git a/tests/test_score_scatter_yn/results_true.dat b/tests/test_score_scatter_yn/results_true.dat deleted file mode 100644 index fb6b4749d1..0000000000 --- a/tests/test_score_scatter_yn/results_true.dat +++ /dev/null @@ -1,56 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -1.485000E+01 -4.439790E+01 -tally 2: -1.485000E+01 -4.439790E+01 --8.440076E-02 -1.135203E-02 -8.198663E-02 -3.887429E-02 --1.358080E-01 -2.890416E-02 --3.544823E-02 -9.843339E-04 --1.542072E-01 -8.228126E-03 -1.057111E-01 -3.758100E-03 --1.647870E-02 -4.827841E-03 -1.378297E-01 -1.566876E-02 -4.676778E-02 -4.809366E-03 -1.966204E-02 -7.447981E-04 -1.889258E-02 -6.841953E-04 -1.337703E-02 -1.250077E-03 --1.044684E-01 -6.969498E-03 --1.177995E-02 -8.208715E-03 --1.940058E-04 -5.128759E-03 --2.165868E-02 -1.335569E-03 --3.080886E-02 -4.544434E-04 -1.039856E-03 -1.209631E-03 --1.317068E-02 -1.469722E-03 --6.432758E-02 -2.106736E-03 -3.323023E-02 -4.513838E-03 -2.683700E-02 -1.146747E-03 --3.494912E-02 -1.006153E-03 -6.289525E-02 -3.700145E-03 diff --git a/tests/test_score_scatter_yn/test_score_scatter_yn.py b/tests/test_score_scatter_yn/test_score_scatter_yn.py deleted file mode 100644 index 9e6900031f..0000000000 --- a/tests/test_score_scatter_yn/test_score_scatter_yn.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreScatterYNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(21, )) - t1 = openmc.Tally(tally_id=1) - t1.add_filter(filt) - t1.add_score('scatter-0') - t1.estimator = 'analog' - t2 = openmc.Tally(tally_id=2) - t2.add_filter(filt) - t2.add_score('scatter-y4') - self._input_set.tallies = openmc.TalliesFile() - self._input_set.tallies.add_tally(t1) - self._input_set.tallies.add_tally(t2) - - super(ScoreScatterYNTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreScatterYNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreScatterYNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_total/inputs_true.dat b/tests/test_score_total/inputs_true.dat deleted file mode 100644 index 45bebe24c2..0000000000 --- a/tests/test_score_total/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -7bf8aa36c31ca8b34f7c410901cb96e1ba7d389c33c850591519b15753c1322b75e5051c960dbc2e254cf46cc9720dd5e348aac0acbb70d10c71165e2f5ab9e4 \ No newline at end of file diff --git a/tests/test_score_total/results_true.dat b/tests/test_score_total/results_true.dat deleted file mode 100644 index 9b8a06f807..0000000000 --- a/tests/test_score_total/results_true.dat +++ /dev/null @@ -1,29 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -1.767552E+01 -6.295417E+01 -3.863588E+00 -3.013300E+00 -5.356594E+01 -5.839391E+02 -tally 2: -0.000000E+00 -0.000000E+00 -1.739000E+01 -6.083290E+01 -4.160000E+00 -3.501000E+00 -5.213000E+01 -5.552351E+02 -tally 3: -0.000000E+00 -0.000000E+00 -1.739000E+01 -6.083290E+01 -4.160000E+00 -3.501000E+00 -5.213000E+01 -5.552351E+02 diff --git a/tests/test_score_total/test_score_total.py b/tests/test_score_total/test_score_total.py deleted file mode 100644 index c6f3f335fc..0000000000 --- a/tests/test_score_total/test_score_total.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreTotalTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 4)] - [t.add_filter(filt) for t in tallies] - [t.add_score('total') for t in tallies] - tallies[0].estimator = 'tracklength' - tallies[1].estimator = 'analog' - tallies[2].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreTotalTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreTotalTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreTotalTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_score_total_yn/inputs_true.dat b/tests/test_score_total_yn/inputs_true.dat deleted file mode 100644 index 939252597c..0000000000 --- a/tests/test_score_total_yn/inputs_true.dat +++ /dev/null @@ -1 +0,0 @@ -3c05a49f78866eda267c9f8eab2669a3a1aeb4eabfade9697d551b13f482d9076190c63a52a8aade59c20d917cebdd3e9bedabda6bc5bfd549db43cc61d7466f \ No newline at end of file diff --git a/tests/test_score_total_yn/results_true.dat b/tests/test_score_total_yn/results_true.dat deleted file mode 100644 index b416b05ec3..0000000000 --- a/tests/test_score_total_yn/results_true.dat +++ /dev/null @@ -1,1214 +0,0 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -0.000000E+00 -0.000000E+00 -1.767552E+01 -6.295417E+01 -3.863588E+00 -3.013300E+00 -5.356594E+01 -5.839391E+02 -tally 2: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.780506E-01 -1.942072E-01 --4.170415E-02 -7.581469E-04 --2.419728E-03 -6.296241E-04 --8.163997E-03 -4.785197E-04 -3.971909E-03 -1.363304E-04 -1.585497E-02 -1.295251E-04 --7.029875E-02 -1.208194E-03 --1.524070E-02 -2.828843E-04 --2.141105E-02 -2.953327E-04 --2.147623E-02 -2.390414E-04 -5.592040E-04 -1.720605E-04 -3.022066E-03 -1.843720E-04 -1.489821E-02 -9.193290E-05 --1.354668E-02 -2.551940E-04 --5.692690E-04 -3.013453E-04 -2.324582E-02 -2.170615E-04 -1.883012E-02 -1.045949E-04 --3.997107E-03 -1.674058E-04 -1.616443E-02 -2.046286E-04 -1.625747E-02 -1.851351E-04 -1.120209E-02 -2.028649E-04 -4.240284E-03 -4.019011E-05 -1.535379E-02 -9.872559E-05 --8.973926E-03 -1.448680E-04 --3.933227E-03 -4.305328E-04 -1.767552E+01 -6.295417E+01 --1.458308E-01 -8.239551E-03 -1.976485E-01 -7.360520E-02 --2.647182E-01 -5.347815E-02 -1.828025E-01 -1.840743E-02 -1.865994E-01 -2.843407E-02 --6.438995E-02 -8.898045E-03 --1.416445E-01 -3.839856E-02 --3.298894E-01 -2.672141E-02 --1.462639E-01 -1.225250E-02 --6.410138E-02 -3.766615E-02 -4.701705E-02 -1.968428E-03 -2.953056E-02 -2.358647E-02 --1.717672E-01 -5.877351E-02 -1.927497E-02 -1.358953E-02 -1.708870E-01 -1.502033E-02 -4.453803E-02 -1.622532E-02 --2.076143E-02 -1.850686E-03 -1.111325E-01 -8.415150E-03 -1.249594E-01 -7.491280E-03 -1.381757E-02 -1.537264E-02 --7.286234E-03 -9.057874E-03 -3.162973E-01 -3.303388E-02 -1.012773E-01 -8.345375E-03 --5.238963E-02 -3.920421E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.863588E+00 -3.013300E+00 -5.075749E-02 -1.018210E-03 -3.445344E-02 -5.778215E-03 --6.239642E-02 -4.107408E-03 --1.475495E-02 -7.971898E-04 -5.809323E-02 -3.039895E-03 --2.510339E-02 -3.529134E-04 --9.731680E-03 -1.221628E-03 --5.815144E-02 -1.403261E-03 --4.936694E-02 -6.481626E-04 -5.141985E-03 -1.343973E-03 -1.515105E-02 -3.044735E-04 -4.474521E-03 -1.155268E-03 --6.855877E-02 -4.048417E-03 --2.701967E-05 -1.279041E-03 -2.197636E-02 -2.843662E-04 --1.780381E-02 -8.441574E-04 -2.916634E-02 -2.530602E-03 -2.289834E-02 -2.201375E-03 -3.283424E-02 -7.615219E-04 -9.623726E-03 -7.614092E-04 -2.808239E-02 -1.500381E-03 -4.835419E-02 -6.933678E-04 --2.636221E-02 -2.230834E-04 --4.957463E-02 -1.939266E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.356594E+01 -5.839391E+02 --1.198882E+00 -3.391100E-01 -3.952398E-01 -5.729760E-01 --1.045726E+00 -4.419194E-01 -2.683170E-01 -1.872580E-01 -5.059349E-01 -2.592209E-01 -4.561651E-01 -1.253696E-01 --4.273775E-01 -3.509266E-01 --6.300496E-01 -2.102051E-01 --3.094705E-01 -1.410278E-01 --6.840225E-01 -1.971765E-01 -4.123355E-02 -3.962538E-02 --1.554557E-01 -2.784362E-02 --4.698631E-01 -1.867413E-01 --7.016026E-02 -3.059344E-02 -2.922284E-01 -8.680517E-02 --1.252431E-01 -3.180591E-02 -1.825937E-01 -8.626653E-02 -1.637960E-01 -1.329538E-01 -6.662867E-01 -1.497985E-01 -4.662585E-01 -7.552145E-02 -1.198254E-03 -2.020899E-01 -5.281410E-01 -9.615758E-02 -6.396211E-02 -1.806992E-01 --1.898620E-01 -1.113751E-01 -tally 3: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.300000E-01 -1.839000E-01 -4.056201E-03 -8.670884E-04 --2.262959E-02 -2.263780E-03 --4.568371E-02 -4.078305E-03 -6.023055E-02 -1.099458E-03 --2.468374E-02 -3.403931E-03 --8.676202E-02 -2.444658E-03 -2.075016E-02 -5.432442E-03 -1.101095E-02 -3.129947E-04 -8.689134E-03 -2.422445E-03 --1.097503E-02 -4.670673E-04 -4.979355E-02 -1.791811E-03 -1.769845E-02 -6.074665E-04 --1.473469E-02 -1.257671E-03 --1.133757E-02 -1.555143E-03 -1.730195E-02 -1.841949E-03 --1.191492E-02 -1.859105E-03 -9.038577E-03 -4.401577E-04 -1.770047E-02 -4.158291E-04 -1.492809E-02 -5.488168E-04 -7.970152E-02 -1.597910E-03 -3.741348E-02 -5.704935E-04 -2.078478E-02 -5.379832E-04 --1.355930E-02 -6.747758E-04 -3.416200E-02 -8.262470E-04 -1.739000E+01 -6.083290E+01 --2.434171E-01 -3.049063E-02 --1.278707E-01 -9.585267E-02 --2.597328E-01 -8.692607E-02 -2.496700E-01 -3.750933E-02 --1.309937E-01 -4.217907E-02 --1.863241E-01 -1.738581E-02 -1.292679E-01 -1.799004E-02 --3.543191E-01 -3.682107E-02 -1.904413E-01 -1.455250E-02 --7.093238E-02 -1.473997E-02 -1.920412E-01 -1.308864E-02 -1.566093E-01 -1.913492E-02 --2.499642E-01 -3.036874E-02 --2.323022E-01 -3.794368E-02 -6.361729E-02 -3.266166E-02 -4.688479E-02 -2.806712E-02 -9.796563E-02 -1.419748E-02 -1.000847E-02 -3.233262E-02 -7.570231E-02 -4.626536E-03 -1.489091E-01 -1.159345E-02 -2.236285E-01 -1.480084E-02 -2.461305E-01 -1.643844E-02 -1.773523E-02 -1.626036E-03 -6.570774E-02 -1.069893E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.160000E+00 -3.501000E+00 --9.464171E-02 -8.682833E-03 -8.467800E-02 -1.402624E-02 -1.283471E-02 -2.630439E-02 -1.859869E-01 -1.189528E-02 -1.910311E-02 -2.907370E-03 --2.542253E-01 -2.143851E-02 --4.021473E-02 -5.812599E-03 --1.242140E-01 -1.017873E-02 --2.934198E-02 -2.409920E-03 -5.719767E-02 -2.211520E-03 -3.023903E-02 -2.870625E-03 -1.092479E-01 -6.089989E-03 -1.604743E-02 -1.110224E-02 -3.811062E-03 -5.234112E-03 -5.446762E-02 -5.323411E-03 --3.868978E-02 -4.949255E-03 -1.384260E-01 -4.903532E-03 --3.761889E-02 -2.524889E-03 --6.079772E-02 -2.328339E-03 -1.956623E-03 -4.096814E-03 -1.716402E-03 -2.022751E-03 --1.108600E-01 -3.227014E-03 --2.447622E-03 -4.075421E-03 -1.582493E-02 -4.847858E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.213000E+01 -5.552351E+02 --6.019876E-01 -2.938936E-01 -2.126970E-01 -3.363271E-01 --6.928646E-01 -3.077152E-01 --2.976474E-01 -5.830705E-02 -7.804821E-01 -3.967156E-01 -5.737502E-01 -1.090147E-01 --2.867929E-01 -1.312720E-01 --4.735578E-01 -6.714577E-02 --6.340442E-02 -4.240623E-02 --1.594570E-01 -1.167021E-01 --5.403124E-02 -6.452745E-02 --2.670969E-01 -5.822561E-02 --3.033558E-01 -4.890487E-02 --3.515557E-01 -5.069681E-02 -2.257462E-01 -4.682933E-02 --1.449924E-02 -1.625521E-02 -2.809498E-01 -6.883451E-02 -1.904808E-01 -1.004755E-01 -2.570005E-01 -4.301248E-02 -9.493600E-02 -7.708499E-02 --2.804222E-01 -4.455703E-02 -3.199914E-01 -7.435651E-02 --2.818069E-04 -7.231318E-02 -3.689494E-01 -1.349712E-01 -tally 4: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.453374E-01 -1.815824E-01 --4.552571E-02 -8.689847E-04 -4.192526E-03 -6.095248E-04 --4.085060E-03 -3.488081E-04 -3.074303E-02 -3.709785E-04 -1.949067E-02 -1.995057E-04 --7.372260E-02 -1.709765E-03 --5.140901E-03 -6.268082E-05 --2.589014E-02 -1.616678E-04 -1.683116E-02 -2.122512E-04 --1.074659E-02 -1.087471E-04 -3.762844E-03 -3.439135E-05 -1.365793E-02 -5.255161E-05 -5.869374E-05 -4.060049E-04 --7.715004E-03 -3.629588E-04 -8.240120E-03 -5.192031E-04 -1.662861E-02 -5.038262E-04 --2.845811E-03 -2.843348E-04 -1.826833E-03 -1.104947E-05 --5.596885E-04 -1.922661E-05 -1.398723E-02 -1.025178E-04 -1.733988E-02 -1.184228E-04 -1.250057E-02 -1.447801E-04 --5.450018E-03 -3.725923E-05 -2.390947E-02 -6.837656E-04 -1.739000E+01 -6.083290E+01 --2.434171E-01 -3.049063E-02 --1.278707E-01 -9.585267E-02 --2.597328E-01 -8.692607E-02 -2.496700E-01 -3.750933E-02 --1.309937E-01 -4.217907E-02 --1.863241E-01 -1.738581E-02 -1.292679E-01 -1.799004E-02 --3.543191E-01 -3.682107E-02 -1.904413E-01 -1.455250E-02 --7.093238E-02 -1.473997E-02 -1.920412E-01 -1.308864E-02 -1.566093E-01 -1.913492E-02 --2.499642E-01 -3.036874E-02 --2.323022E-01 -3.794368E-02 -6.361729E-02 -3.266166E-02 -4.688479E-02 -2.806712E-02 -9.796563E-02 -1.419748E-02 -1.000847E-02 -3.233262E-02 -7.570231E-02 -4.626536E-03 -1.489091E-01 -1.159345E-02 -2.236285E-01 -1.480084E-02 -2.461305E-01 -1.643844E-02 -1.773523E-02 -1.626036E-03 -6.570774E-02 -1.069893E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.160000E+00 -3.501000E+00 --9.464171E-02 -8.682833E-03 -8.467800E-02 -1.402624E-02 -1.283471E-02 -2.630439E-02 -1.859869E-01 -1.189528E-02 -1.910311E-02 -2.907370E-03 --2.542253E-01 -2.143851E-02 --4.021473E-02 -5.812599E-03 --1.242140E-01 -1.017873E-02 --2.934198E-02 -2.409920E-03 -5.719767E-02 -2.211520E-03 -3.023903E-02 -2.870625E-03 -1.092479E-01 -6.089989E-03 -1.604743E-02 -1.110224E-02 -3.811062E-03 -5.234112E-03 -5.446762E-02 -5.323411E-03 --3.868978E-02 -4.949255E-03 -1.384260E-01 -4.903532E-03 --3.761889E-02 -2.524889E-03 --6.079772E-02 -2.328339E-03 -1.956623E-03 -4.096814E-03 -1.716402E-03 -2.022751E-03 --1.108600E-01 -3.227014E-03 --2.447622E-03 -4.075421E-03 -1.582493E-02 -4.847858E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.213000E+01 -5.552351E+02 --6.019876E-01 -2.938936E-01 -2.126970E-01 -3.363271E-01 --6.928646E-01 -3.077152E-01 --2.976474E-01 -5.830705E-02 -7.804821E-01 -3.967156E-01 -5.737502E-01 -1.090147E-01 --2.867929E-01 -1.312720E-01 --4.735578E-01 -6.714577E-02 --6.340442E-02 -4.240623E-02 --1.594570E-01 -1.167021E-01 --5.403124E-02 -6.452745E-02 --2.670969E-01 -5.822561E-02 --3.033558E-01 -4.890487E-02 --3.515557E-01 -5.069681E-02 -2.257462E-01 -4.682933E-02 --1.449924E-02 -1.625521E-02 -2.809498E-01 -6.883451E-02 -1.904808E-01 -1.004755E-01 -2.570005E-01 -4.301248E-02 -9.493600E-02 -7.708499E-02 --2.804222E-01 -4.455703E-02 -3.199914E-01 -7.435651E-02 --2.818069E-04 -7.231318E-02 -3.689494E-01 -1.349712E-01 diff --git a/tests/test_score_total_yn/test_score_total_yn.py b/tests/test_score_total_yn/test_score_total_yn.py deleted file mode 100644 index 80f947f920..0000000000 --- a/tests/test_score_total_yn/test_score_total_yn.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness, PyAPITestHarness -import openmc - - -class ScoreTotalYNTestHarness(PyAPITestHarness): - def _build_inputs(self): - filt = openmc.Filter(type='cell', bins=(10, 21, 22, 23)) - tallies = [openmc.Tally(tally_id=i) for i in range(1, 5)] - [t.add_filter(filt) for t in tallies] - tallies[0].add_score('total') - [t.add_score('total-y4') for t in tallies[1:]] - [t.add_nuclide('U-235') for t in tallies[1:]] - [t.add_nuclide('total') for t in tallies[1:]] - tallies[1].estimator = 'tracklength' - tallies[2].estimator = 'analog' - tallies[3].estimator = 'collision' - self._input_set.tallies = openmc.TalliesFile() - [self._input_set.tallies.add_tally(t) for t in tallies] - - super(ScoreTotalYNTestHarness, self)._build_inputs() - - def _cleanup(self): - super(ScoreTotalYNTestHarness, self)._cleanup() - f = os.path.join(os.getcwd(), 'tallies.xml') - if os.path.exists(f): os.remove(f) - - -if __name__ == '__main__': - harness = ScoreTotalYNTestHarness('statepoint.10.*', True) - harness.main() diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat new file mode 100644 index 0000000000..727d6f369d --- /dev/null +++ b/tests/test_tallies/inputs_true.dat @@ -0,0 +1 @@ +fb9a9e5d829d924e94f4e1b3862edbefdb9dbed42b97930a5ebe41c0bc052ce668dcf7a07c42d985d005f68b37c1233b6110c86432b7ed0e561e1ef653d23eca \ No newline at end of file diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat new file mode 100644 index 0000000000..76a31d6434 --- /dev/null +++ b/tests/test_tallies/results_true.dat @@ -0,0 +1,3697 @@ +k-combined: +9.903196E-01 4.279617E-02 +tally 1: +4.215917E+01 +3.561920E+02 +4.174788E+01 +3.505184E+02 +4.603223E+01 +4.242918E+02 +4.496760E+01 +4.075599E+02 +4.088099E+01 +3.376516E+02 +tally 2: +4.157239E+01 +3.482158E+02 +4.227810E+01 +3.613293E+02 +4.376107E+01 +3.835007E+02 +4.644205E+01 +4.327195E+02 +4.191554E+01 +3.522147E+02 +tally 3: +4.215917E+01 +3.561920E+02 +4.174788E+01 +3.505184E+02 +4.603223E+01 +4.242918E+02 +4.496402E+01 +4.075053E+02 +4.088458E+01 +3.377000E+02 +tally 4: +1.531988E+01 +4.816326E+01 +9.274393E+00 +1.821174E+01 +1.595868E+01 +5.124238E+01 +1.299895E+00 +6.417145E-01 +1.510024E+01 +4.604170E+01 +8.533361E+00 +1.462765E+01 +1.658141E+01 +5.595629E+01 +1.427417E+00 +6.621807E-01 +1.683102E+01 +5.741400E+01 +9.845257E+00 +2.028406E+01 +1.773179E+01 +6.477077E+01 +1.536972E+00 +6.111079E-01 +1.586070E+01 +5.360975E+01 +9.928220E+00 +2.089005E+01 +1.737609E+01 +6.161847E+01 +1.700608E+00 +8.439708E-01 +1.607027E+01 +5.490113E+01 +7.569336E+00 +1.280955E+01 +1.606086E+01 +5.308665E+01 +9.898901E-01 +3.143027E-01 +tally 5: +0.000000E+00 +0.000000E+00 +8.921179E+01 +1.601939E+03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +tally 6: +8.141852E-04 +1.337187E-07 +4.849156E-03 +4.744020E-06 +4.460252E-03 +4.015453E-06 +1.028479E-02 +2.136252E-05 +5.002274E-03 +5.056965E-06 +1.974747E-03 +7.882970E-07 +tally 7: +2.844008E+01 +1.619630E+02 +4.425619E+01 +3.938244E+02 +5.527425E+01 +6.120383E+02 +9.799897E+00 +1.957877E+01 +tally 8: +2.842000E+01 +1.620214E+02 +4.361000E+01 +3.810139E+02 +5.297000E+01 +5.616595E+02 +6.530000E+00 +8.828900E+00 +tally 9: +2.576000E+01 +1.331666E+02 +0.000000E+00 +0.000000E+00 +7.000000E-02 +1.300000E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.050675E+00 +2.274991E-01 +0.000000E+00 +0.000000E+00 +2.070821E+00 +8.886068E-01 +2.660000E+00 +1.422000E+00 +0.000000E+00 +0.000000E+00 +3.897000E+01 +3.042635E+02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.352932E-01 +4.705717E-02 +0.000000E+00 +0.000000E+00 +1.018668E+00 +2.090017E-01 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.570000E+00 +4.182700E+00 +0.000000E+00 +0.000000E+00 +4.968000E+01 +4.940534E+02 +6.537406E-02 +1.230788E-03 +0.000000E+00 +0.000000E+00 +8.678070E-02 +2.482037E-03 +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.290000E+00 +2.178900E+00 +1.610879E-01 +5.883677E-03 +6.530000E+00 +8.828900E+00 +3.151783E-01 +2.052521E-02 +tally 10: +2.868239E+01 +1.648549E+02 +6.779424E+00 +9.202676E+00 +6.446222E+01 +8.387204E+02 +3.367496E+01 +2.349072E+02 +tally 11: +1.241000E+01 +3.088870E+01 +1.241000E+01 +3.088870E+01 +1.364000E+01 +3.727140E+01 +1.364000E+01 +3.727140E+01 +3.251000E+01 +2.118597E+02 +3.251000E+01 +2.118597E+02 +7.297000E+01 +1.066904E+03 +7.297000E+01 +1.066904E+03 +tally 12: +9.880000E+00 +1.964520E+01 +9.880000E+00 +1.964520E+01 +1.022000E+01 +2.099620E+01 +1.022000E+01 +2.099620E+01 +1.479000E+01 +4.397670E+01 +1.479000E+01 +4.397670E+01 +3.470000E+01 +2.412094E+02 +3.470000E+01 +2.412094E+02 +6.194000E+01 +7.687326E+02 +6.194000E+01 +7.687326E+02 +tally 13: +3.560000E+00 +2.681800E+00 +3.560000E+00 +2.681800E+00 +1.930000E+00 +7.915000E-01 +1.930000E+00 +7.915000E-01 +3.870000E+00 +3.109100E+00 +3.870000E+00 +3.109100E+00 +3.500000E-01 +3.630000E-02 +3.500000E-01 +3.630000E-02 +3.680000E+00 +2.840200E+00 +3.680000E+00 +2.840200E+00 +2.050000E+00 +8.735000E-01 +2.050000E+00 +8.735000E-01 +3.910000E+00 +3.085100E+00 +3.910000E+00 +3.085100E+00 +3.900000E-01 +3.610000E-02 +3.900000E-01 +3.610000E-02 +5.130000E+00 +5.422100E+00 +5.130000E+00 +5.422100E+00 +3.100000E+00 +1.959200E+00 +3.100000E+00 +1.959200E+00 +5.840000E+00 +6.914600E+00 +5.840000E+00 +6.914600E+00 +5.400000E-01 +8.980000E-02 +5.400000E-01 +8.980000E-02 +1.215000E+01 +3.061010E+01 +1.215000E+01 +3.061010E+01 +7.220000E+00 +1.081680E+01 +7.220000E+00 +1.081680E+01 +1.355000E+01 +3.699090E+01 +1.355000E+01 +3.699090E+01 +1.360000E+00 +5.098000E-01 +1.360000E+00 +5.098000E-01 +2.199000E+01 +9.837430E+01 +2.199000E+01 +9.837430E+01 +1.243000E+01 +3.167470E+01 +1.243000E+01 +3.167470E+01 +2.451000E+01 +1.233915E+02 +2.451000E+01 +1.233915E+02 +2.460000E+00 +1.687000E+00 +2.460000E+00 +1.687000E+00 +tally 14: +2.127061E+01 +9.220793E+01 +5.602776E+01 +6.373945E+02 +6.367492E+01 +8.138443E+02 +5.529942E+01 +6.140264E+02 +1.951517E+01 +7.668661E+01 +tally 15: +2.075936E+01 +8.757254E+01 +5.524881E+01 +6.153139E+02 +6.475252E+01 +8.402281E+02 +5.446664E+01 +5.961174E+02 +2.074180E+01 +8.681580E+01 +tally 16: +2.128073E+01 +9.230382E+01 +5.601764E+01 +6.371703E+02 +6.367492E+01 +8.138443E+02 +5.529942E+01 +6.140264E+02 +1.951517E+01 +7.668661E+01 +tally 17: +8.088647E+00 +1.396899E+01 +3.960907E+00 +3.249150E+00 +8.430714E+00 +1.435355E+01 +7.192159E-01 +1.641710E-01 +1.974619E+01 +8.105078E+01 +1.212452E+01 +3.016420E+01 +2.228348E+01 +1.050847E+02 +1.748809E+00 +9.501796E-01 +2.257423E+01 +1.038902E+02 +1.351331E+01 +3.969787E+01 +2.507638E+01 +1.283664E+02 +2.193118E+00 +1.424580E+00 +2.192232E+01 +9.859711E+01 +1.096779E+01 +2.506373E+01 +2.074138E+01 +8.670015E+01 +1.469145E+00 +8.072204E-01 +6.850719E+00 +9.425536E+00 +4.584038E+00 +4.399762E+00 +7.176883E+00 +1.090693E+01 +8.244944E-01 +1.794291E-01 +tally 18: +7.510505E+01 +1.143811E+03 +8.792943E+00 +1.575416E+01 +4.214462E+01 +3.642975E+02 +4.335157E+00 +3.864423E+00 +tally 19: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.533174E+00 +1.298118E+00 +1.711611E-02 +5.967549E-05 +6.520000E+01 +8.551888E+02 +1.156315E+00 +2.733527E-01 +1.049628E-05 +2.261930E-11 +2.266169E+02 +1.049923E+04 +1.538090E-03 +1.381456E-06 +3.974412E-01 +3.209809E-02 +1.373550E+00 +3.796357E-01 +3.041781E+00 +1.891714E+00 +1.514235E+01 +4.620490E+01 +1.767552E+01 +6.295417E+01 +2.453769E-02 +1.227715E-04 +0.000000E+00 +0.000000E+00 +1.070200E+02 +2.305805E+03 +0.000000E+00 +0.000000E+00 +4.056389E-06 +3.411247E-12 +0.000000E+00 +0.000000E+00 +5.252455E-06 +2.290531E-11 +3.359792E-02 +2.267331E-04 +2.459115E-02 +1.233078E-04 +0.000000E+00 +0.000000E+00 +3.839050E+00 +2.975620E+00 +3.863588E+00 +3.013300E+00 +3.869051E-01 +3.180828E-02 +0.000000E+00 +0.000000E+00 +2.010800E+02 +8.160415E+03 +0.000000E+00 +0.000000E+00 +2.243766E-05 +1.069671E-10 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +7.004005E-05 +1.748739E-09 +8.104946E-02 +1.395618E-03 +0.000000E+00 +0.000000E+00 +5.317903E+01 +5.754103E+02 +5.356594E+01 +5.839391E+02 +tally 20: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.540000E+00 +1.293400E+00 +0.000000E+00 +0.000000E+00 +1.739000E+01 +6.083290E+01 +1.225263E+00 +3.054971E-01 +1.029200E-05 +2.180706E-11 +2.403775E+02 +1.175130E+04 +0.000000E+00 +0.000000E+00 +2.000000E-01 +9.000000E-03 +0.000000E+00 +0.000000E+00 +3.341227E+00 +2.322075E+00 +1.485000E+01 +4.439790E+01 +1.739000E+01 +6.083290E+01 +4.000000E-02 +6.000000E-04 +0.000000E+00 +0.000000E+00 +4.160000E+00 +3.501000E+00 +0.000000E+00 +0.000000E+00 +4.353200E-06 +4.363747E-12 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +2.000000E-02 +2.000000E-04 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +4.120000E+00 +3.438000E+00 +4.160000E+00 +3.501000E+00 +4.000000E-01 +3.600000E-02 +0.000000E+00 +0.000000E+00 +5.213000E+01 +5.552351E+02 +0.000000E+00 +0.000000E+00 +2.211790E-05 +1.055892E-10 +0.000000E+00 +0.000000E+00 +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.173000E+01 +5.467243E+02 +5.213000E+01 +5.552351E+02 +tally 21: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.422314E+00 +1.193460E+00 +1.686299E-02 +5.765477E-05 +1.739000E+01 +6.083290E+01 +1.131528E+00 +2.612886E-01 +1.029200E-05 +2.180706E-11 +2.217588E+02 +1.003581E+04 +1.408027E-03 +1.849607E-06 +3.946436E-01 +3.166261E-02 +1.288136E+00 +3.382059E-01 +2.975121E+00 +1.806644E+00 +1.496769E+01 +4.502714E+01 +1.739000E+01 +6.083290E+01 +4.285618E-02 +4.109734E-04 +0.000000E+00 +0.000000E+00 +4.160000E+00 +3.501000E+00 +0.000000E+00 +0.000000E+00 +4.353200E-06 +4.363747E-12 +0.000000E+00 +0.000000E+00 +2.179241E-05 +4.749090E-10 +3.146594E-02 +2.159308E-04 +4.278352E-02 +4.094478E-04 +0.000000E+00 +0.000000E+00 +4.117144E+00 +3.431861E+00 +4.160000E+00 +3.501000E+00 +3.832282E-01 +3.169516E-02 +0.000000E+00 +0.000000E+00 +5.213000E+01 +5.552351E+02 +0.000000E+00 +0.000000E+00 +2.211790E-05 +1.055892E-10 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.736514E-04 +1.245171E-08 +7.989710E-02 +1.377742E-03 +0.000000E+00 +0.000000E+00 +5.174677E+01 +5.469474E+02 +5.213000E+01 +5.552351E+02 +tally 22: +3.890713E+01 +3.046363E+02 +1.366220E+01 +3.758161E+01 +6.561669E+01 +8.680729E+02 +2.382728E+01 +1.170590E+02 +8.047875E+00 +1.334796E+01 +4.056568E+01 +3.389623E+02 +tally 23: +3.890713E+01 +3.046363E+02 +-1.623579E-01 +4.602199E-02 +4.860074E-01 +5.999399E-01 +-7.895692E-01 +2.803790E-01 +2.525526E-01 +8.261176E-02 +9.103525E-02 +2.246700E-01 +4.583205E-01 +8.444556E-02 +-1.246553E-01 +2.351010E-01 +-3.534581E-01 +1.247916E-01 +-3.700473E-01 +5.215562E-02 +-1.831625E-01 +1.927381E-01 +-1.540114E-01 +1.918221E-02 +-1.266458E-01 +1.455875E-01 +-6.796869E-01 +3.911926E-01 +1.987931E-02 +4.966442E-02 +4.443797E-01 +8.842717E-02 +-1.073855E-01 +4.912428E-02 +-3.999416E-02 +4.440138E-02 +2.857919E-01 +6.935717E-02 +4.174851E-01 +5.485570E-02 +-2.178958E-01 +8.052149E-02 +-1.179644E-02 +6.709330E-02 +8.843286E-01 +2.749681E-01 +2.935079E-01 +3.032897E-02 +-1.809434E-01 +1.902413E-01 +-2.091991E-01 +1.061912E-01 +-7.137275E-02 +4.397656E-02 +2.311558E-01 +4.680679E-02 +9.927573E-02 +1.844111E-01 +-2.821437E-02 +7.293762E-02 +6.224251E-01 +1.028351E-01 +4.136440E-01 +5.198207E-02 +-7.833133E-02 +1.192960E-02 +1.041586E-01 +1.587417E-01 +-3.595677E-01 +3.086335E-01 +-2.096284E-01 +7.881012E-02 +1.366220E+01 +3.758161E+01 +1.461402E-02 +3.260482E-03 +8.325893E-02 +6.248769E-02 +-2.785736E-01 +3.698417E-02 +1.932396E-03 +1.561742E-02 +8.063397E-02 +3.598680E-02 +8.565555E-02 +5.344369E-03 +-3.899905E-02 +2.422867E-02 +-1.215439E-01 +9.193858E-03 +-1.982614E-01 +1.045860E-02 +-7.712629E-02 +2.199979E-02 +3.626484E-02 +9.872078E-04 +-6.305159E-02 +1.645879E-02 +-3.052155E-01 +5.620564E-02 +3.507115E-02 +1.056383E-02 +1.297490E-02 +5.889958E-03 +-1.208752E-02 +7.323602E-03 +-3.441007E-03 +1.841496E-02 +5.543442E-02 +1.186636E-02 +8.000436E-02 +3.703835E-03 +-3.636792E-02 +1.490603E-02 +8.753196E-02 +7.958027E-03 +2.066727E-01 +1.414130E-02 +3.652482E-02 +8.380395E-04 +-1.652432E-01 +1.878732E-02 +-1.375567E-01 +1.302400E-02 +3.692057E-03 +6.312506E-03 +9.016211E-02 +6.699735E-03 +-5.875401E-02 +1.731945E-02 +-3.960008E-02 +3.595906E-03 +1.653510E-01 +9.277293E-03 +4.064973E-02 +2.794606E-03 +-1.729061E-02 +3.219772E-03 +5.764808E-02 +1.861051E-02 +-5.970583E-02 +2.070164E-02 +-6.739411E-02 +1.063341E-02 +6.561669E+01 +8.680729E+02 +-7.938430E-01 +2.994198E-01 +9.278084E-01 +1.861899E+00 +-1.432236E+00 +7.429647E-01 +7.460836E-02 +5.946808E-01 +6.140731E-02 +3.175177E-01 +1.212677E+00 +5.125288E-01 +1.952865E-02 +5.468421E-01 +-2.965796E-01 +1.123288E-01 +-5.334195E-01 +1.589612E-01 +-6.340814E-01 +4.874650E-01 +-4.264003E-02 +9.109571E-03 +-4.323424E-01 +3.370329E-01 +-1.186876E+00 +9.854644E-01 +-2.420825E-01 +1.699455E-01 +2.920627E-02 +6.816643E-02 +-2.684345E-01 +9.799236E-02 +1.281596E-01 +3.092987E-01 +3.746150E-01 +1.242044E-01 +1.035056E+00 +2.589772E-01 +2.005450E-01 +2.074622E-01 +5.412719E-01 +3.193584E-01 +1.070173E+00 +3.266747E-01 +2.657850E-01 +1.599950E-01 +-4.694853E-01 +2.738937E-01 +-7.761977E-01 +2.561652E-01 +3.673179E-02 +9.486916E-02 +3.309909E-01 +1.095243E-01 +1.623761E-01 +2.874582E-01 +2.846296E-01 +2.430397E-01 +7.384842E-01 +2.556480E-01 +3.577508E-01 +1.763210E-01 +-2.917525E-01 +1.875646E-01 +1.634324E-01 +2.952144E-01 +-4.329582E-01 +3.418652E-01 +-2.719362E-01 +2.278925E-01 +2.382728E+01 +1.170590E+02 +-4.718326E-01 +1.961501E-01 +1.612551E-02 +2.815245E-02 +-6.390587E-01 +1.902968E-01 +2.290989E-01 +3.758858E-02 +-1.568179E-01 +1.509162E-01 +-2.363058E-01 +6.671396E-02 +4.350800E-02 +1.031680E-01 +-2.956828E-01 +2.515141E-02 +4.835878E-01 +8.614200E-02 +-5.365970E-02 +8.404087E-02 +6.079969E-02 +3.684343E-02 +-1.313088E-02 +1.488843E-02 +-2.603258E-02 +2.900625E-02 +1.249213E-01 +2.737277E-02 +-4.491422E-01 +9.482600E-02 +-1.095589E-01 +3.711500E-02 +2.248159E-01 +2.815827E-02 +-5.976009E-02 +5.887828E-03 +6.097208E-02 +5.393315E-02 +3.449714E-02 +4.332442E-02 +1.030757E-01 +2.839453E-02 +-4.399117E-01 +8.887569E-02 +-4.564910E-01 +1.172398E-01 +-2.528382E-01 +1.217655E-01 +-3.443316E-01 +4.275616E-02 +5.437008E-02 +2.355567E-02 +5.505588E-02 +5.479129E-02 +-8.326640E-02 +3.095858E-02 +1.888781E-01 +2.884542E-02 +1.981251E-01 +1.520694E-02 +5.279866E-02 +1.020641E-01 +-1.465368E-01 +3.070686E-02 +2.356940E-01 +7.899657E-02 +4.109278E-01 +5.291082E-02 +-2.572510E-01 +3.420895E-02 +8.047875E+00 +1.334796E+01 +-1.707535E-01 +3.290927E-02 +1.024687E-01 +1.308811E-02 +-1.805451E-01 +1.696222E-02 +3.519587E-02 +7.546726E-03 +-1.034933E-01 +2.224207E-02 +-1.580512E-01 +2.369625E-02 +-4.302961E-02 +1.635623E-02 +-2.992903E-02 +5.190220E-03 +2.130862E-01 +1.186351E-02 +-3.321696E-02 +7.972404E-03 +4.992040E-02 +5.667098E-03 +1.261320E-02 +2.436872E-03 +8.314024E-04 +5.360616E-03 +-6.318247E-02 +1.644558E-03 +-1.373600E-01 +1.030707E-02 +1.511677E-03 +3.467685E-03 +1.923485E-02 +8.106508E-04 +-1.180094E-01 +4.381376E-03 +-2.798056E-02 +4.871288E-03 +-7.689499E-02 +7.079493E-03 +-5.842586E-02 +1.380713E-03 +-9.946341E-02 +7.085062E-03 +-8.061825E-02 +8.679468E-03 +-9.229524E-03 +9.187483E-03 +-1.048310E-01 +3.506026E-03 +3.666209E-02 +3.259203E-03 +1.190727E-01 +4.935341E-03 +-7.391655E-02 +2.805554E-03 +2.029126E-02 +2.497736E-03 +2.787185E-02 +5.677987E-04 +6.873108E-02 +1.287727E-02 +-5.262840E-02 +3.190440E-03 +3.910911E-02 +8.661121E-03 +1.076197E-01 +5.456176E-03 +-7.476066E-02 +2.693605E-03 +4.056568E+01 +3.389623E+02 +-6.428633E-01 +6.128893E-01 +4.878518E-01 +2.130257E-01 +-9.548044E-01 +4.556949E-01 +2.234940E-01 +1.006817E-01 +1.080276E-01 +5.980158E-01 +-3.639229E-01 +3.120105E-01 +3.237506E-01 +3.451548E-01 +1.143081E-01 +7.924550E-02 +6.456733E-01 +2.424413E-01 +1.478136E-01 +1.458665E-01 +2.134798E-02 +9.102875E-02 +3.633264E-01 +7.386463E-02 +-2.213946E-01 +1.253249E-01 +-3.153847E-01 +1.094273E-01 +-7.161113E-01 +2.275500E-01 +-2.461979E-01 +1.484452E-01 +2.332886E-01 +9.715521E-02 +-7.029988E-02 +1.835254E-02 +-1.982842E-01 +9.722998E-02 +-2.089693E-01 +2.271404E-01 +7.316104E-02 +3.974665E-02 +-3.266640E-01 +8.054809E-02 +-5.126088E-01 +3.234942E-01 +-3.048753E-01 +3.439501E-01 +-4.872647E-01 +9.473730E-02 +1.590200E-01 +3.613462E-02 +4.641787E-01 +1.671339E-01 +-1.391114E-01 +3.581561E-02 +2.209343E-01 +1.489367E-02 +3.015665E-01 +4.265694E-02 +1.334716E-01 +2.321929E-01 +-3.702914E-01 +1.699549E-01 +8.891532E-02 +1.708595E-01 +6.123686E-01 +1.429184E-01 +-5.891300E-01 +1.085467E-01 +tally 24: +3.862543E+01 +2.993190E+02 +-5.083613E-01 +2.933365E-01 +-4.356793E-01 +6.676831E-01 +-6.093148E-01 +5.685331E-01 +2.512276E-01 +1.308652E-01 +-1.075955E+00 +4.775270E-01 +3.660307E-01 +1.627691E-01 +5.402149E-01 +2.324946E-01 +-3.887573E-01 +1.028105E-01 +4.324152E-01 +1.015147E-01 +3.306993E-02 +8.425069E-02 +2.127456E-01 +5.435453E-02 +2.977294E-01 +1.088039E-01 +-1.055079E+00 +3.590635E-01 +-6.740592E-01 +2.606281E-01 +3.329512E-01 +1.587428E-01 +-1.248691E-01 +1.659045E-01 +2.306000E-01 +1.062057E-01 +9.127791E-02 +2.649459E-01 +2.629881E-01 +4.786229E-02 +2.286813E-01 +2.363629E-02 +6.338613E-01 +1.118828E-01 +7.466647E-01 +1.424535E-01 +7.955161E-02 +1.003327E-02 +1.082691E-01 +2.727882E-02 +-5.295185E-01 +1.335133E-01 +-6.321517E-01 +1.422916E-01 +1.236137E-01 +2.041422E-01 +-5.389265E-02 +1.852888E-01 +3.746082E-01 +5.580885E-02 +1.383528E-01 +2.754456E-01 +5.081204E-01 +1.886515E-01 +-4.022264E-01 +1.417397E-01 +-3.377771E-01 +6.673888E-02 +1.170109E-01 +1.783182E-02 +-2.097916E-01 +7.139323E-02 +1.438678E+01 +4.193571E+01 +-6.547124E-01 +1.780450E-01 +2.207489E-01 +2.115835E-01 +4.952323E-02 +3.039341E-01 +6.681546E-01 +1.389250E-01 +-4.078026E-02 +4.393667E-02 +-8.695509E-01 +2.850853E-01 +-1.792062E-01 +7.367253E-02 +-5.657500E-01 +2.115125E-01 +-8.525189E-02 +2.541971E-02 +5.227867E-02 +2.008468E-02 +6.825349E-02 +5.316522E-02 +3.763076E-01 +7.112554E-02 +-1.279973E-02 +1.883096E-01 +7.775189E-02 +6.874374E-02 +1.119537E-01 +8.467755E-02 +-1.600632E-01 +8.650448E-02 +6.210095E-01 +1.094309E-01 +-9.997484E-02 +3.935353E-02 +-2.300525E-01 +2.351925E-02 +2.486103E-02 +3.125565E-02 +1.289518E-02 +2.879251E-02 +-3.166559E-01 +2.931428E-02 +-1.379285E-02 +2.416257E-02 +1.220552E-02 +5.154030E-02 +-1.431676E-01 +3.434080E-02 +8.148581E-02 +4.218412E-02 +8.541678E-03 +6.396306E-02 +-7.851012E-03 +5.799658E-02 +2.435723E-01 +6.744263E-02 +-2.429877E-01 +6.966516E-02 +-1.638644E-01 +2.058798E-02 +-8.986584E-03 +1.374824E-02 +3.547454E-01 +7.765460E-02 +-1.570173E-01 +6.916960E-02 +-1.056941E-02 +7.626528E-03 +6.400634E+01 +8.298077E+02 +-3.894111E-01 +8.617494E-01 +1.796567E-01 +1.065356E+00 +-1.561037E+00 +7.701475E-01 +-2.237530E-01 +2.259442E-01 +1.109999E+00 +6.179412E-01 +1.636912E+00 +7.887441E-01 +4.661183E-01 +4.191138E-01 +-1.040546E+00 +2.971961E-01 +1.044850E-01 +1.493530E-01 +-4.991935E-01 +3.222404E-01 +-4.205099E-01 +2.734911E-01 +-7.583139E-01 +3.000853E-01 +-3.750811E-01 +1.348273E-01 +-6.355508E-01 +3.666139E-01 +5.233787E-01 +1.292414E-01 +-2.869538E-02 +9.115092E-02 +6.851052E-01 +3.061040E-01 +1.703522E-01 +7.300335E-02 +4.541075E-01 +4.438507E-01 +-2.674857E-01 +4.718588E-01 +3.022517E-02 +1.136781E-01 +5.755596E-01 +2.688162E-01 +2.698373E-01 +1.403188E-01 +8.772347E-01 +3.503562E-01 +-4.258508E-01 +1.400825E-01 +-1.384853E-01 +4.924947E-02 +-1.009402E-01 +2.039230E-01 +-1.339732E-01 +4.772083E-02 +-3.249636E-01 +4.339747E-01 +1.564400E-01 +2.703717E-01 +2.536360E-01 +8.543919E-02 +-3.622063E-01 +7.442240E-02 +-2.074953E-02 +1.355614E-01 +-3.909820E-02 +1.007999E-01 +3.162815E-01 +9.656425E-02 +2.426423E+01 +1.215124E+02 +-9.628829E-01 +3.563586E-01 +2.964625E-01 +9.739638E-02 +-3.680881E-01 +3.484018E-01 +4.339143E-01 +7.590564E-02 +4.633394E-02 +1.080030E-01 +3.091634E-01 +1.246585E-01 +4.520500E-02 +1.095704E-01 +2.479383E-01 +1.138276E-01 +6.457108E-02 +6.833667E-02 +-5.623363E-02 +1.087254E-01 +3.675294E-01 +9.602246E-02 +-1.459951E-01 +9.440544E-02 +-6.817672E-02 +4.978066E-02 +1.076782E-02 +1.697440E-01 +-1.024501E-02 +1.184830E-01 +-1.654178E-01 +1.689209E-02 +-1.006214E-01 +3.392546E-02 +5.070063E-01 +7.598100E-02 +2.251704E-01 +7.867348E-02 +-1.693789E-01 +2.069974E-01 +-2.790249E-01 +2.674643E-02 +3.888604E-01 +3.649330E-02 +7.614452E-02 +7.098023E-02 +1.236282E-02 +5.476895E-02 +-3.151637E-01 +3.543466E-02 +-6.363562E-01 +9.323507E-02 +2.808153E-01 +8.537981E-02 +2.197639E-01 +3.393653E-02 +8.660625E-02 +1.575544E-02 +3.733826E-02 +1.449783E-02 +8.800903E-04 +3.993931E-02 +3.304886E-01 +3.099095E-02 +-4.149186E-02 +5.375091E-02 +2.448819E-01 +9.225028E-02 +-1.230091E-01 +3.865008E-02 +7.600812E+00 +1.199814E+01 +-8.738539E-01 +3.078183E-01 +-2.592305E-01 +1.015952E-01 +-6.391696E-02 +6.657129E-02 +-2.857855E-01 +2.216294E-02 +-3.516811E-01 +3.429194E-02 +4.585144E-02 +6.204056E-02 +-1.599494E-01 +1.684846E-02 +-2.364219E-01 +1.550644E-02 +1.197289E-01 +8.631394E-02 +-1.364517E-01 +5.086560E-02 +-2.213374E-01 +2.779096E-02 +-7.328761E-02 +1.216230E-02 +2.476803E-01 +2.724500E-02 +-6.356296E-02 +2.513244E-02 +-3.886281E-01 +9.479377E-02 +1.006972E-01 +1.352120E-02 +6.932242E-02 +3.192705E-02 +-3.232505E-02 +5.592418E-02 +9.582599E-02 +1.504811E-02 +-2.887999E-01 +3.760482E-02 +-2.372013E-01 +1.868786E-02 +-1.655526E-01 +4.720116E-02 +8.611265E-02 +2.284310E-02 +-2.142116E-01 +2.619080E-02 +-1.811202E-01 +1.457105E-02 +1.430164E-01 +2.016598E-02 +-4.066031E-01 +7.671356E-02 +1.364946E-01 +1.385677E-02 +8.357667E-02 +1.521943E-02 +-2.235270E-02 +1.029570E-02 +-7.920760E-02 +4.227880E-02 +2.622096E-01 +2.327728E-02 +-7.787296E-03 +2.288300E-02 +-1.645219E-02 +5.394704E-02 +7.274557E-02 +1.075570E-02 +4.104875E+01 +3.455300E+02 +-9.827893E-01 +2.751051E-01 +3.227606E-01 +1.213711E-01 +-1.272840E-02 +2.813639E-01 +-1.910394E-01 +5.682320E-02 +4.136260E-01 +2.444497E-01 +-5.123352E-02 +3.867174E-01 +4.424857E-02 +9.651204E-02 +-3.975443E-02 +1.867060E-01 +7.618837E-01 +1.756891E-01 +4.259599E-01 +1.146646E-01 +5.658031E-02 +1.366891E-01 +2.464931E-01 +2.181122E-01 +-1.593998E-01 +2.666678E-01 +-1.928096E-01 +1.216164E-01 +-7.020992E-01 +1.701086E-01 +3.914244E-01 +1.772217E-01 +3.285697E-01 +1.521826E-01 +-2.947923E-02 +8.201284E-02 +-1.346653E-01 +4.498340E-02 +2.112724E-01 +9.923303E-02 +-8.551910E-02 +8.804286E-03 +-3.631005E-01 +1.168145E-01 +-1.840770E-01 +5.714283E-02 +-2.709303E-02 +9.381338E-02 +-2.104005E-02 +4.479215E-02 +4.059493E-01 +8.277066E-02 +2.877400E-01 +8.584721E-02 +4.881128E-02 +1.864179E-01 +8.584545E-02 +4.421744E-02 +-4.392466E-01 +6.260373E-02 +-3.143214E-02 +8.184856E-02 +-5.630973E-01 +1.323469E-01 +-8.010498E-02 +1.096975E-01 +1.818829E-01 +1.717701E-02 +-1.062149E-01 +5.400365E-02 +tally 25: +3.862543E+01 +2.993190E+02 +-5.083613E-01 +2.933365E-01 +-4.356793E-01 +6.676831E-01 +-6.093148E-01 +5.685331E-01 +2.512276E-01 +1.308652E-01 +-1.075955E+00 +4.775270E-01 +3.660307E-01 +1.627691E-01 +5.402149E-01 +2.324946E-01 +-3.887573E-01 +1.028105E-01 +4.324152E-01 +1.015147E-01 +3.306993E-02 +8.425069E-02 +2.127456E-01 +5.435453E-02 +2.977294E-01 +1.088039E-01 +-1.055079E+00 +3.590635E-01 +-6.740592E-01 +2.606281E-01 +3.329512E-01 +1.587428E-01 +-1.248691E-01 +1.659045E-01 +2.306000E-01 +1.062057E-01 +9.127791E-02 +2.649459E-01 +2.629881E-01 +4.786229E-02 +2.286813E-01 +2.363629E-02 +6.338613E-01 +1.118828E-01 +7.466647E-01 +1.424535E-01 +7.955161E-02 +1.003327E-02 +1.082691E-01 +2.727882E-02 +-5.295185E-01 +1.335133E-01 +-6.321517E-01 +1.422916E-01 +1.236137E-01 +2.041422E-01 +-5.389265E-02 +1.852888E-01 +3.746082E-01 +5.580885E-02 +1.383528E-01 +2.754456E-01 +5.081204E-01 +1.886515E-01 +-4.022264E-01 +1.417397E-01 +-3.377771E-01 +6.673888E-02 +1.170109E-01 +1.783182E-02 +-2.097916E-01 +7.139323E-02 +1.438678E+01 +4.193571E+01 +-6.547124E-01 +1.780450E-01 +2.207489E-01 +2.115835E-01 +4.952323E-02 +3.039341E-01 +6.681546E-01 +1.389250E-01 +-4.078026E-02 +4.393667E-02 +-8.695509E-01 +2.850853E-01 +-1.792062E-01 +7.367253E-02 +-5.657500E-01 +2.115125E-01 +-8.525189E-02 +2.541971E-02 +5.227867E-02 +2.008468E-02 +6.825349E-02 +5.316522E-02 +3.763076E-01 +7.112554E-02 +-1.279973E-02 +1.883096E-01 +7.775189E-02 +6.874374E-02 +1.119537E-01 +8.467755E-02 +-1.600632E-01 +8.650448E-02 +6.210095E-01 +1.094309E-01 +-9.997484E-02 +3.935353E-02 +-2.300525E-01 +2.351925E-02 +2.486103E-02 +3.125565E-02 +1.289518E-02 +2.879251E-02 +-3.166559E-01 +2.931428E-02 +-1.379285E-02 +2.416257E-02 +1.220552E-02 +5.154030E-02 +-1.431676E-01 +3.434080E-02 +8.148581E-02 +4.218412E-02 +8.541678E-03 +6.396306E-02 +-7.851012E-03 +5.799658E-02 +2.435723E-01 +6.744263E-02 +-2.429877E-01 +6.966516E-02 +-1.638644E-01 +2.058798E-02 +-8.986584E-03 +1.374824E-02 +3.547454E-01 +7.765460E-02 +-1.570173E-01 +6.916960E-02 +-1.056941E-02 +7.626528E-03 +6.400634E+01 +8.298077E+02 +-3.894111E-01 +8.617494E-01 +1.796567E-01 +1.065356E+00 +-1.561037E+00 +7.701475E-01 +-2.237530E-01 +2.259442E-01 +1.109999E+00 +6.179412E-01 +1.636912E+00 +7.887441E-01 +4.661183E-01 +4.191138E-01 +-1.040546E+00 +2.971961E-01 +1.044850E-01 +1.493530E-01 +-4.991935E-01 +3.222404E-01 +-4.205099E-01 +2.734911E-01 +-7.583139E-01 +3.000853E-01 +-3.750811E-01 +1.348273E-01 +-6.355508E-01 +3.666139E-01 +5.233787E-01 +1.292414E-01 +-2.869538E-02 +9.115092E-02 +6.851052E-01 +3.061040E-01 +1.703522E-01 +7.300335E-02 +4.541075E-01 +4.438507E-01 +-2.674857E-01 +4.718588E-01 +3.022517E-02 +1.136781E-01 +5.755596E-01 +2.688162E-01 +2.698373E-01 +1.403188E-01 +8.772347E-01 +3.503562E-01 +-4.258508E-01 +1.400825E-01 +-1.384853E-01 +4.924947E-02 +-1.009402E-01 +2.039230E-01 +-1.339732E-01 +4.772083E-02 +-3.249636E-01 +4.339747E-01 +1.564400E-01 +2.703717E-01 +2.536360E-01 +8.543919E-02 +-3.622063E-01 +7.442240E-02 +-2.074953E-02 +1.355614E-01 +-3.909820E-02 +1.007999E-01 +3.162815E-01 +9.656425E-02 +2.426423E+01 +1.215124E+02 +-9.628829E-01 +3.563586E-01 +2.964625E-01 +9.739638E-02 +-3.680881E-01 +3.484018E-01 +4.339143E-01 +7.590564E-02 +4.633394E-02 +1.080030E-01 +3.091634E-01 +1.246585E-01 +4.520500E-02 +1.095704E-01 +2.479383E-01 +1.138276E-01 +6.457108E-02 +6.833667E-02 +-5.623363E-02 +1.087254E-01 +3.675294E-01 +9.602246E-02 +-1.459951E-01 +9.440544E-02 +-6.817672E-02 +4.978066E-02 +1.076782E-02 +1.697440E-01 +-1.024501E-02 +1.184830E-01 +-1.654178E-01 +1.689209E-02 +-1.006214E-01 +3.392546E-02 +5.070063E-01 +7.598100E-02 +2.251704E-01 +7.867348E-02 +-1.693789E-01 +2.069974E-01 +-2.790249E-01 +2.674643E-02 +3.888604E-01 +3.649330E-02 +7.614452E-02 +7.098023E-02 +1.236282E-02 +5.476895E-02 +-3.151637E-01 +3.543466E-02 +-6.363562E-01 +9.323507E-02 +2.808153E-01 +8.537981E-02 +2.197639E-01 +3.393653E-02 +8.660625E-02 +1.575544E-02 +3.733826E-02 +1.449783E-02 +8.800903E-04 +3.993931E-02 +3.304886E-01 +3.099095E-02 +-4.149186E-02 +5.375091E-02 +2.448819E-01 +9.225028E-02 +-1.230091E-01 +3.865008E-02 +7.600812E+00 +1.199814E+01 +-8.738539E-01 +3.078183E-01 +-2.592305E-01 +1.015952E-01 +-6.391696E-02 +6.657129E-02 +-2.857855E-01 +2.216294E-02 +-3.516811E-01 +3.429194E-02 +4.585144E-02 +6.204056E-02 +-1.599494E-01 +1.684846E-02 +-2.364219E-01 +1.550644E-02 +1.197289E-01 +8.631394E-02 +-1.364517E-01 +5.086560E-02 +-2.213374E-01 +2.779096E-02 +-7.328761E-02 +1.216230E-02 +2.476803E-01 +2.724500E-02 +-6.356296E-02 +2.513244E-02 +-3.886281E-01 +9.479377E-02 +1.006972E-01 +1.352120E-02 +6.932242E-02 +3.192705E-02 +-3.232505E-02 +5.592418E-02 +9.582599E-02 +1.504811E-02 +-2.887999E-01 +3.760482E-02 +-2.372013E-01 +1.868786E-02 +-1.655526E-01 +4.720116E-02 +8.611265E-02 +2.284310E-02 +-2.142116E-01 +2.619080E-02 +-1.811202E-01 +1.457105E-02 +1.430164E-01 +2.016598E-02 +-4.066031E-01 +7.671356E-02 +1.364946E-01 +1.385677E-02 +8.357667E-02 +1.521943E-02 +-2.235270E-02 +1.029570E-02 +-7.920760E-02 +4.227880E-02 +2.622096E-01 +2.327728E-02 +-7.787296E-03 +2.288300E-02 +-1.645219E-02 +5.394704E-02 +7.274557E-02 +1.075570E-02 +4.104875E+01 +3.455300E+02 +-9.827893E-01 +2.751051E-01 +3.227606E-01 +1.213711E-01 +-1.272840E-02 +2.813639E-01 +-1.910394E-01 +5.682320E-02 +4.136260E-01 +2.444497E-01 +-5.123352E-02 +3.867174E-01 +4.424857E-02 +9.651204E-02 +-3.975443E-02 +1.867060E-01 +7.618837E-01 +1.756891E-01 +4.259599E-01 +1.146646E-01 +5.658031E-02 +1.366891E-01 +2.464931E-01 +2.181122E-01 +-1.593998E-01 +2.666678E-01 +-1.928096E-01 +1.216164E-01 +-7.020992E-01 +1.701086E-01 +3.914244E-01 +1.772217E-01 +3.285697E-01 +1.521826E-01 +-2.947923E-02 +8.201284E-02 +-1.346653E-01 +4.498340E-02 +2.112724E-01 +9.923303E-02 +-8.551910E-02 +8.804286E-03 +-3.631005E-01 +1.168145E-01 +-1.840770E-01 +5.714283E-02 +-2.709303E-02 +9.381338E-02 +-2.104005E-02 +4.479215E-02 +4.059493E-01 +8.277066E-02 +2.877400E-01 +8.584721E-02 +4.881128E-02 +1.864179E-01 +8.584545E-02 +4.421744E-02 +-4.392466E-01 +6.260373E-02 +-3.143214E-02 +8.184856E-02 +-5.630973E-01 +1.323469E-01 +-8.010498E-02 +1.096975E-01 +1.818829E-01 +1.717701E-02 +-1.062149E-01 +5.400365E-02 +tally 26: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.485000E+01 +4.439790E+01 +1.259515E+00 +3.360064E-01 +7.983154E-01 +1.355632E-01 +3.425460E-01 +2.971972E-02 +2.949225E-01 +3.975603E-02 +1.485000E+01 +4.439790E+01 +1.259515E+00 +3.360064E-01 +7.983154E-01 +1.355632E-01 +3.425460E-01 +2.971972E-02 +2.949225E-01 +3.975603E-02 +4.120000E+00 +3.438000E+00 +6.222571E-01 +8.335984E-02 +1.670136E-01 +1.374768E-02 +-5.819374E-02 +1.091808E-02 +-6.389550E-02 +5.688533E-03 +4.120000E+00 +3.438000E+00 +6.222571E-01 +8.335984E-02 +1.670136E-01 +1.374768E-02 +-5.819374E-02 +1.091808E-02 +-6.389550E-02 +5.688533E-03 +5.173000E+01 +5.467243E+02 +2.669403E+01 +1.451361E+02 +9.691140E+00 +1.933574E+01 +5.860769E-01 +2.122377E-01 +-1.190340E+00 +3.145785E-01 +5.173000E+01 +5.467243E+02 +2.669403E+01 +1.451361E+02 +9.691140E+00 +1.933574E+01 +5.860769E-01 +2.122377E-01 +-1.190340E+00 +3.145785E-01 +tally 27: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.485000E+01 +4.439790E+01 +1.259515E+00 +3.360064E-01 +7.983154E-01 +1.355632E-01 +3.425460E-01 +2.971972E-02 +2.949225E-01 +3.975603E-02 +1.485000E+01 +4.439790E+01 +-8.440076E-02 +1.135203E-02 +8.198663E-02 +3.887429E-02 +-1.358080E-01 +2.890416E-02 +-3.544823E-02 +9.843339E-04 +-1.542072E-01 +8.228126E-03 +1.057111E-01 +3.758100E-03 +-1.647870E-02 +4.827841E-03 +1.378297E-01 +1.566876E-02 +4.676778E-02 +4.809366E-03 +1.966204E-02 +7.447981E-04 +1.889258E-02 +6.841953E-04 +1.337703E-02 +1.250077E-03 +-1.044684E-01 +6.969498E-03 +-1.177995E-02 +8.208715E-03 +-1.940058E-04 +5.128759E-03 +-2.165868E-02 +1.335569E-03 +-3.080886E-02 +4.544434E-04 +1.039856E-03 +1.209631E-03 +-1.317068E-02 +1.469722E-03 +-6.432758E-02 +2.106736E-03 +3.323023E-02 +4.513838E-03 +2.683700E-02 +1.146747E-03 +-3.494912E-02 +1.006153E-03 +6.289525E-02 +3.700145E-03 +1.485000E+01 +4.439790E+01 +1.259515E+00 +3.360064E-01 +7.983154E-01 +1.355632E-01 +3.425460E-01 +2.971972E-02 +2.949225E-01 +3.975603E-02 +1.485000E+01 +4.439790E+01 +-8.440076E-02 +1.135203E-02 +8.198663E-02 +3.887429E-02 +-1.358080E-01 +2.890416E-02 +-3.544823E-02 +9.843339E-04 +-1.542072E-01 +8.228126E-03 +1.057111E-01 +3.758100E-03 +-1.647870E-02 +4.827841E-03 +1.378297E-01 +1.566876E-02 +4.676778E-02 +4.809366E-03 +1.966204E-02 +7.447981E-04 +1.889258E-02 +6.841953E-04 +1.337703E-02 +1.250077E-03 +-1.044684E-01 +6.969498E-03 +-1.177995E-02 +8.208715E-03 +-1.940058E-04 +5.128759E-03 +4.120000E+00 +3.438000E+00 +6.222571E-01 +8.335984E-02 +1.670136E-01 +1.374768E-02 +-5.819374E-02 +1.091808E-02 +-6.389550E-02 +5.688533E-03 +4.120000E+00 +3.438000E+00 +-1.628271E-01 +9.225450E-03 +-6.888325E-02 +1.539168E-03 +2.676973E-02 +5.653613E-03 +-3.337963E-03 +7.947252E-04 +-4.406165E-02 +8.602797E-04 +4.627072E-02 +2.635048E-03 +7.039651E-02 +2.623481E-03 +-3.841045E-02 +3.044564E-03 +9.237978E-03 +4.282545E-04 +-5.684456E-02 +7.512518E-04 +2.650251E-04 +5.448171E-04 +4.772861E-03 +5.040314E-04 +-2.147644E-02 +7.335266E-04 +1.905098E-02 +8.260721E-04 +5.429075E-02 +2.187346E-03 +5.159732E-03 +4.908243E-04 +-7.760747E-03 +1.158921E-03 +-8.149531E-03 +1.257165E-04 +-1.494397E-02 +4.274428E-04 +2.687381E-02 +4.665908E-04 +-1.770251E-02 +5.559502E-04 +1.017742E-03 +3.718233E-04 +3.490710E-02 +3.484712E-04 +-3.765157E-03 +8.337155E-04 +4.120000E+00 +3.438000E+00 +6.222571E-01 +8.335984E-02 +1.670136E-01 +1.374768E-02 +-5.819374E-02 +1.091808E-02 +-6.389550E-02 +5.688533E-03 +4.120000E+00 +3.438000E+00 +-1.628271E-01 +9.225450E-03 +-6.888325E-02 +1.539168E-03 +2.676973E-02 +5.653613E-03 +-3.337963E-03 +7.947252E-04 +-4.406165E-02 +8.602797E-04 +4.627072E-02 +2.635048E-03 +7.039651E-02 +2.623481E-03 +-3.841045E-02 +3.044564E-03 +9.237978E-03 +4.282545E-04 +-5.684456E-02 +7.512518E-04 +2.650251E-04 +5.448171E-04 +4.772861E-03 +5.040314E-04 +-2.147644E-02 +7.335266E-04 +1.905098E-02 +8.260721E-04 +5.429075E-02 +2.187346E-03 +5.173000E+01 +5.467243E+02 +2.669403E+01 +1.451361E+02 +9.691140E+00 +1.933574E+01 +5.860769E-01 +2.122377E-01 +-1.190340E+00 +3.145785E-01 +5.173000E+01 +5.467243E+02 +-1.983402E-01 +1.915674E-01 +-1.674839E-01 +1.869769E-01 +-5.653273E-01 +1.987939E-01 +-7.760837E-02 +4.789688E-02 +2.727635E-01 +2.457144E-02 +1.857970E-02 +1.847097E-02 +-3.630622E-01 +5.790100E-02 +-4.123237E-01 +5.700176E-02 +5.742532E-02 +1.032394E-02 +-5.735109E-02 +1.231577E-02 +1.272672E-01 +1.601764E-02 +2.270866E-01 +1.322803E-02 +-5.808421E-04 +9.816465E-03 +-1.579343E-01 +1.090331E-02 +-1.216659E-01 +5.662713E-03 +1.610713E-02 +1.269120E-02 +-9.673684E-03 +4.819562E-03 +1.263075E-01 +8.599309E-03 +1.318035E-01 +1.578558E-02 +-1.204668E-01 +4.835293E-03 +9.045915E-02 +4.701121E-03 +-1.149557E-02 +1.831502E-02 +4.573371E-02 +1.969365E-03 +2.654515E-02 +5.974645E-03 +5.173000E+01 +5.467243E+02 +2.669403E+01 +1.451361E+02 +9.691140E+00 +1.933574E+01 +5.860769E-01 +2.122377E-01 +-1.190340E+00 +3.145785E-01 +5.173000E+01 +5.467243E+02 +-1.983402E-01 +1.915674E-01 +-1.674839E-01 +1.869769E-01 +-5.653273E-01 +1.987939E-01 +-7.760837E-02 +4.789688E-02 +2.727635E-01 +2.457144E-02 +1.857970E-02 +1.847097E-02 +-3.630622E-01 +5.790100E-02 +-4.123237E-01 +5.700176E-02 +5.742532E-02 +1.032394E-02 +-5.735109E-02 +1.231577E-02 +1.272672E-01 +1.601764E-02 +2.270866E-01 +1.322803E-02 +-5.808421E-04 +9.816465E-03 +-1.579343E-01 +1.090331E-02 +-1.216659E-01 +5.662713E-03 +tally 28: +0.000000E+00 +0.000000E+00 +1.767552E+01 +6.295417E+01 +3.863588E+00 +3.013300E+00 +5.356594E+01 +5.839391E+02 +tally 29: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.780506E-01 +1.942072E-01 +-4.170415E-02 +7.581469E-04 +-2.419728E-03 +6.296241E-04 +-8.163997E-03 +4.785197E-04 +3.971909E-03 +1.363304E-04 +1.585497E-02 +1.295251E-04 +-7.029875E-02 +1.208194E-03 +-1.524070E-02 +2.828843E-04 +-2.141105E-02 +2.953327E-04 +-2.147623E-02 +2.390414E-04 +5.592040E-04 +1.720605E-04 +3.022066E-03 +1.843720E-04 +1.489821E-02 +9.193290E-05 +-1.354668E-02 +2.551940E-04 +-5.692690E-04 +3.013453E-04 +2.324582E-02 +2.170615E-04 +1.883012E-02 +1.045949E-04 +-3.997107E-03 +1.674058E-04 +1.616443E-02 +2.046286E-04 +1.625747E-02 +1.851351E-04 +1.120209E-02 +2.028649E-04 +4.240284E-03 +4.019011E-05 +1.535379E-02 +9.872559E-05 +-8.973926E-03 +1.448680E-04 +-3.933227E-03 +4.305328E-04 +1.767552E+01 +6.295417E+01 +-1.458308E-01 +8.239551E-03 +1.976485E-01 +7.360520E-02 +-2.647182E-01 +5.347815E-02 +1.828025E-01 +1.840743E-02 +1.865994E-01 +2.843407E-02 +-6.438995E-02 +8.898045E-03 +-1.416445E-01 +3.839856E-02 +-3.298894E-01 +2.672141E-02 +-1.462639E-01 +1.225250E-02 +-6.410138E-02 +3.766615E-02 +4.701705E-02 +1.968428E-03 +2.953056E-02 +2.358647E-02 +-1.717672E-01 +5.877351E-02 +1.927497E-02 +1.358953E-02 +1.708870E-01 +1.502033E-02 +4.453803E-02 +1.622532E-02 +-2.076143E-02 +1.850686E-03 +1.111325E-01 +8.415150E-03 +1.249594E-01 +7.491280E-03 +1.381757E-02 +1.537264E-02 +-7.286234E-03 +9.057874E-03 +3.162973E-01 +3.303388E-02 +1.012773E-01 +8.345375E-03 +-5.238963E-02 +3.920421E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.863588E+00 +3.013300E+00 +5.075749E-02 +1.018210E-03 +3.445344E-02 +5.778215E-03 +-6.239642E-02 +4.107408E-03 +-1.475495E-02 +7.971898E-04 +5.809323E-02 +3.039895E-03 +-2.510339E-02 +3.529134E-04 +-9.731680E-03 +1.221628E-03 +-5.815144E-02 +1.403261E-03 +-4.936694E-02 +6.481626E-04 +5.141985E-03 +1.343973E-03 +1.515105E-02 +3.044735E-04 +4.474521E-03 +1.155268E-03 +-6.855877E-02 +4.048417E-03 +-2.701967E-05 +1.279041E-03 +2.197636E-02 +2.843662E-04 +-1.780381E-02 +8.441574E-04 +2.916634E-02 +2.530602E-03 +2.289834E-02 +2.201375E-03 +3.283424E-02 +7.615219E-04 +9.623726E-03 +7.614092E-04 +2.808239E-02 +1.500381E-03 +4.835419E-02 +6.933678E-04 +-2.636221E-02 +2.230834E-04 +-4.957463E-02 +1.939266E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.356594E+01 +5.839391E+02 +-1.198882E+00 +3.391100E-01 +3.952398E-01 +5.729760E-01 +-1.045726E+00 +4.419194E-01 +2.683170E-01 +1.872580E-01 +5.059349E-01 +2.592209E-01 +4.561651E-01 +1.253696E-01 +-4.273775E-01 +3.509266E-01 +-6.300496E-01 +2.102051E-01 +-3.094705E-01 +1.410278E-01 +-6.840225E-01 +1.971765E-01 +4.123355E-02 +3.962538E-02 +-1.554557E-01 +2.784362E-02 +-4.698631E-01 +1.867413E-01 +-7.016026E-02 +3.059344E-02 +2.922284E-01 +8.680517E-02 +-1.252431E-01 +3.180591E-02 +1.825937E-01 +8.626653E-02 +1.637960E-01 +1.329538E-01 +6.662867E-01 +1.497985E-01 +4.662585E-01 +7.552145E-02 +1.198254E-03 +2.020899E-01 +5.281410E-01 +9.615758E-02 +6.396211E-02 +1.806992E-01 +-1.898620E-01 +1.113751E-01 +tally 30: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.300000E-01 +1.839000E-01 +4.056201E-03 +8.670884E-04 +-2.262959E-02 +2.263780E-03 +-4.568371E-02 +4.078305E-03 +6.023055E-02 +1.099458E-03 +-2.468374E-02 +3.403931E-03 +-8.676202E-02 +2.444658E-03 +2.075016E-02 +5.432442E-03 +1.101095E-02 +3.129947E-04 +8.689134E-03 +2.422445E-03 +-1.097503E-02 +4.670673E-04 +4.979355E-02 +1.791811E-03 +1.769845E-02 +6.074665E-04 +-1.473469E-02 +1.257671E-03 +-1.133757E-02 +1.555143E-03 +1.730195E-02 +1.841949E-03 +-1.191492E-02 +1.859105E-03 +9.038577E-03 +4.401577E-04 +1.770047E-02 +4.158291E-04 +1.492809E-02 +5.488168E-04 +7.970152E-02 +1.597910E-03 +3.741348E-02 +5.704935E-04 +2.078478E-02 +5.379832E-04 +-1.355930E-02 +6.747758E-04 +3.416200E-02 +8.262470E-04 +1.739000E+01 +6.083290E+01 +-2.434171E-01 +3.049063E-02 +-1.278707E-01 +9.585267E-02 +-2.597328E-01 +8.692607E-02 +2.496700E-01 +3.750933E-02 +-1.309937E-01 +4.217907E-02 +-1.863241E-01 +1.738581E-02 +1.292679E-01 +1.799004E-02 +-3.543191E-01 +3.682107E-02 +1.904413E-01 +1.455250E-02 +-7.093238E-02 +1.473997E-02 +1.920412E-01 +1.308864E-02 +1.566093E-01 +1.913492E-02 +-2.499642E-01 +3.036874E-02 +-2.323022E-01 +3.794368E-02 +6.361729E-02 +3.266166E-02 +4.688479E-02 +2.806712E-02 +9.796563E-02 +1.419748E-02 +1.000847E-02 +3.233262E-02 +7.570231E-02 +4.626536E-03 +1.489091E-01 +1.159345E-02 +2.236285E-01 +1.480084E-02 +2.461305E-01 +1.643844E-02 +1.773523E-02 +1.626036E-03 +6.570774E-02 +1.069893E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.160000E+00 +3.501000E+00 +-9.464171E-02 +8.682833E-03 +8.467800E-02 +1.402624E-02 +1.283471E-02 +2.630439E-02 +1.859869E-01 +1.189528E-02 +1.910311E-02 +2.907370E-03 +-2.542253E-01 +2.143851E-02 +-4.021473E-02 +5.812599E-03 +-1.242140E-01 +1.017873E-02 +-2.934198E-02 +2.409920E-03 +5.719767E-02 +2.211520E-03 +3.023903E-02 +2.870625E-03 +1.092479E-01 +6.089989E-03 +1.604743E-02 +1.110224E-02 +3.811062E-03 +5.234112E-03 +5.446762E-02 +5.323411E-03 +-3.868978E-02 +4.949255E-03 +1.384260E-01 +4.903532E-03 +-3.761889E-02 +2.524889E-03 +-6.079772E-02 +2.328339E-03 +1.956623E-03 +4.096814E-03 +1.716402E-03 +2.022751E-03 +-1.108600E-01 +3.227014E-03 +-2.447622E-03 +4.075421E-03 +1.582493E-02 +4.847858E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.213000E+01 +5.552351E+02 +-6.019876E-01 +2.938936E-01 +2.126970E-01 +3.363271E-01 +-6.928646E-01 +3.077152E-01 +-2.976474E-01 +5.830705E-02 +7.804821E-01 +3.967156E-01 +5.737502E-01 +1.090147E-01 +-2.867929E-01 +1.312720E-01 +-4.735578E-01 +6.714577E-02 +-6.340442E-02 +4.240623E-02 +-1.594570E-01 +1.167021E-01 +-5.403124E-02 +6.452745E-02 +-2.670969E-01 +5.822561E-02 +-3.033558E-01 +4.890487E-02 +-3.515557E-01 +5.069681E-02 +2.257462E-01 +4.682933E-02 +-1.449924E-02 +1.625521E-02 +2.809498E-01 +6.883451E-02 +1.904808E-01 +1.004755E-01 +2.570005E-01 +4.301248E-02 +9.493600E-02 +7.708499E-02 +-2.804222E-01 +4.455703E-02 +3.199914E-01 +7.435651E-02 +-2.818069E-04 +7.231318E-02 +3.689494E-01 +1.349712E-01 +tally 31: +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.453374E-01 +1.815824E-01 +-4.552571E-02 +8.689847E-04 +4.192526E-03 +6.095248E-04 +-4.085060E-03 +3.488081E-04 +3.074303E-02 +3.709785E-04 +1.949067E-02 +1.995057E-04 +-7.372260E-02 +1.709765E-03 +-5.140901E-03 +6.268082E-05 +-2.589014E-02 +1.616678E-04 +1.683116E-02 +2.122512E-04 +-1.074659E-02 +1.087471E-04 +3.762844E-03 +3.439135E-05 +1.365793E-02 +5.255161E-05 +5.869374E-05 +4.060049E-04 +-7.715004E-03 +3.629588E-04 +8.240120E-03 +5.192031E-04 +1.662861E-02 +5.038262E-04 +-2.845811E-03 +2.843348E-04 +1.826833E-03 +1.104947E-05 +-5.596885E-04 +1.922661E-05 +1.398723E-02 +1.025178E-04 +1.733988E-02 +1.184228E-04 +1.250057E-02 +1.447801E-04 +-5.450018E-03 +3.725923E-05 +2.390947E-02 +6.837656E-04 +1.739000E+01 +6.083290E+01 +-2.434171E-01 +3.049063E-02 +-1.278707E-01 +9.585267E-02 +-2.597328E-01 +8.692607E-02 +2.496700E-01 +3.750933E-02 +-1.309937E-01 +4.217907E-02 +-1.863241E-01 +1.738581E-02 +1.292679E-01 +1.799004E-02 +-3.543191E-01 +3.682107E-02 +1.904413E-01 +1.455250E-02 +-7.093238E-02 +1.473997E-02 +1.920412E-01 +1.308864E-02 +1.566093E-01 +1.913492E-02 +-2.499642E-01 +3.036874E-02 +-2.323022E-01 +3.794368E-02 +6.361729E-02 +3.266166E-02 +4.688479E-02 +2.806712E-02 +9.796563E-02 +1.419748E-02 +1.000847E-02 +3.233262E-02 +7.570231E-02 +4.626536E-03 +1.489091E-01 +1.159345E-02 +2.236285E-01 +1.480084E-02 +2.461305E-01 +1.643844E-02 +1.773523E-02 +1.626036E-03 +6.570774E-02 +1.069893E-02 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.160000E+00 +3.501000E+00 +-9.464171E-02 +8.682833E-03 +8.467800E-02 +1.402624E-02 +1.283471E-02 +2.630439E-02 +1.859869E-01 +1.189528E-02 +1.910311E-02 +2.907370E-03 +-2.542253E-01 +2.143851E-02 +-4.021473E-02 +5.812599E-03 +-1.242140E-01 +1.017873E-02 +-2.934198E-02 +2.409920E-03 +5.719767E-02 +2.211520E-03 +3.023903E-02 +2.870625E-03 +1.092479E-01 +6.089989E-03 +1.604743E-02 +1.110224E-02 +3.811062E-03 +5.234112E-03 +5.446762E-02 +5.323411E-03 +-3.868978E-02 +4.949255E-03 +1.384260E-01 +4.903532E-03 +-3.761889E-02 +2.524889E-03 +-6.079772E-02 +2.328339E-03 +1.956623E-03 +4.096814E-03 +1.716402E-03 +2.022751E-03 +-1.108600E-01 +3.227014E-03 +-2.447622E-03 +4.075421E-03 +1.582493E-02 +4.847858E-03 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +0.000000E+00 +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.213000E+01 +5.552351E+02 +-6.019876E-01 +2.938936E-01 +2.126970E-01 +3.363271E-01 +-6.928646E-01 +3.077152E-01 +-2.976474E-01 +5.830705E-02 +7.804821E-01 +3.967156E-01 +5.737502E-01 +1.090147E-01 +-2.867929E-01 +1.312720E-01 +-4.735578E-01 +6.714577E-02 +-6.340442E-02 +4.240623E-02 +-1.594570E-01 +1.167021E-01 +-5.403124E-02 +6.452745E-02 +-2.670969E-01 +5.822561E-02 +-3.033558E-01 +4.890487E-02 +-3.515557E-01 +5.069681E-02 +2.257462E-01 +4.682933E-02 +-1.449924E-02 +1.625521E-02 +2.809498E-01 +6.883451E-02 +1.904808E-01 +1.004755E-01 +2.570005E-01 +4.301248E-02 +9.493600E-02 +7.708499E-02 +-2.804222E-01 +4.455703E-02 +3.199914E-01 +7.435651E-02 +-2.818069E-04 +7.231318E-02 +3.689494E-01 +1.349712E-01 diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py new file mode 100644 index 0000000000..b6cdebe2d3 --- /dev/null +++ b/tests/test_tallies/test_tallies.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python + +import os +import sys +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +from openmc import Filter, Mesh, Tally, TalliesFile + +class TalliesTestHarness(PyAPITestHarness): + def _build_inputs(self): + azimuthal_bins = (-3.1416, -1.8850, -0.6283, 0.6283, 1.8850, 3.1416) + azimuthal_filter1 = Filter(type='azimuthal', bins=azimuthal_bins) + azimuthal_tally1 = Tally() + azimuthal_tally1.add_filter(azimuthal_filter1) + azimuthal_tally1.add_score('flux') + azimuthal_tally1.estimator = 'tracklength' + + azimuthal_tally2 = Tally() + azimuthal_tally2.add_filter(azimuthal_filter1) + azimuthal_tally2.add_score('flux') + azimuthal_tally2.estimator = 'analog' + + azimuthal_filter2 = Filter(type='azimuthal', bins=(5,)) + azimuthal_tally3 = Tally() + azimuthal_tally3.add_filter(azimuthal_filter2) + azimuthal_tally3.add_score('flux') + azimuthal_tally3.estimator = 'tracklength' + + mesh_2x2 = Mesh(mesh_id=1) + mesh_2x2.lower_left = [-182.07, -182.07] + mesh_2x2.upper_right = [182.07, 182.07] + mesh_2x2.dimension = [2, 2] + mesh_filter = Filter(type='mesh', bins=(1,)) + azimuthal_tally4 = Tally() + azimuthal_tally4.add_filter(azimuthal_filter2) + azimuthal_tally4.add_filter(mesh_filter) + azimuthal_tally4.add_score('flux') + azimuthal_tally4.estimator = 'tracklength' + + cellborn_tally = Tally() + cellborn_tally.add_filter(Filter(type='cellborn', bins=(10, 21, 22, 23))) + cellborn_tally.add_score('total') + + dg_tally = Tally() + dg_tally.add_filter(Filter(type='delayedgroup', bins=(1, 2, 3, 4, 5, 6))) + dg_tally.add_score('delayed-nu-fission') + + four_groups = (0.0, 0.253e-6, 1.0e-3, 1.0, 20.0) + energy_filter = Filter(type='energy', bins=four_groups) + energy_tally = Tally() + energy_tally.add_filter(energy_filter) + energy_tally.add_score('total') + + energyout_filter = Filter(type='energyout', bins=four_groups) + energyout_tally = Tally() + energyout_tally.add_filter(energyout_filter) + energyout_tally.add_score('scatter') + + transfer_tally = Tally() + transfer_tally.add_filter(energy_filter) + transfer_tally.add_filter(energyout_filter) + transfer_tally.add_score('scatter') + transfer_tally.add_score('nu-fission') + + material_tally = Tally() + material_tally.add_filter(Filter(type='material', bins=(1, 2, 3, 4))) + material_tally.add_score('total') + + mu_tally1 = Tally() + mu_tally1.add_filter(Filter(type='mu', bins=(-1.0, -0.5, 0.0, 0.5, 1.0))) + mu_tally1.add_score('scatter') + mu_tally1.add_score('nu-scatter') + + mu_filter = Filter(type='mu', bins=(5,)) + mu_tally2 = Tally() + mu_tally2.add_filter(mu_filter) + mu_tally2.add_score('scatter') + mu_tally2.add_score('nu-scatter') + + mu_tally3 = Tally() + mu_tally3.add_filter(mu_filter) + mu_tally3.add_filter(mesh_filter) + mu_tally3.add_score('scatter') + mu_tally3.add_score('nu-scatter') + + polar_bins = (0.0, 0.6283, 1.2566, 1.8850, 2.5132, 3.1416) + polar_filter = Filter(type='polar', bins=polar_bins) + polar_tally1 = Tally() + polar_tally1.add_filter(polar_filter) + polar_tally1.add_score('flux') + polar_tally1.estimator = 'tracklength' + + polar_tally2 = Tally() + polar_tally2.add_filter(polar_filter) + polar_tally2.add_score('flux') + polar_tally2.estimator = 'analog' + + polar_filter2 = Filter(type='polar', bins=(5,)) + polar_tally3 = Tally() + polar_tally3.add_filter(polar_filter2) + polar_tally3.add_score('flux') + polar_tally3.estimator = 'tracklength' + + polar_tally4 = Tally() + polar_tally4.add_filter(polar_filter2) + polar_tally4.add_filter(mesh_filter) + polar_tally4.add_score('flux') + polar_tally4.estimator = 'tracklength' + + universe_tally = Tally() + universe_tally.add_filter(Filter(type='universe', bins=(1, 2, 3, 4))) + universe_tally.add_score('total') + + cell_filter = Filter(type='cell', bins=(10, 21, 22, 23)) + score_tallies = [Tally(), Tally(), Tally()] + for t in score_tallies: + t.add_filter(cell_filter) + t.add_score('absorption') + t.add_score('delayed-nu-fission') + t.add_score('events') + t.add_score('fission') + t.add_score('inverse-velocity') + t.add_score('kappa-fission') + t.add_score('(n,2n)') + t.add_score('(n,n1)') + t.add_score('(n,gamma)') + t.add_score('nu-fission') + t.add_score('scatter') + t.add_score('total') + score_tallies[0].estimator = 'tracklength' + score_tallies[1].estimator = 'analog' + score_tallies[2].estimator = 'collision' + + cell_filter2 = Filter(type='cell', bins=(21, 22, 23, 27, 28, 29)) + flux_tallies = [Tally() for i in range(4)] + [t.add_filter(cell_filter2) for t in flux_tallies] + flux_tallies[0].add_score('flux') + [t.add_score('flux-y5') for t in flux_tallies[1:]] + flux_tallies[1].estimator = 'tracklength' + flux_tallies[2].estimator = 'analog' + flux_tallies[3].estimator = 'collision' + + scatter_tally1 = Tally() + scatter_tally1.add_filter(cell_filter) + scatter_tally1.add_score('scatter') + scatter_tally1.add_score('scatter-1') + scatter_tally1.add_score('scatter-2') + scatter_tally1.add_score('scatter-3') + scatter_tally1.add_score('scatter-4') + scatter_tally1.add_score('nu-scatter') + scatter_tally1.add_score('nu-scatter-1') + scatter_tally1.add_score('nu-scatter-2') + scatter_tally1.add_score('nu-scatter-3') + scatter_tally1.add_score('nu-scatter-4') + + scatter_tally2 = Tally() + scatter_tally2.add_filter(cell_filter) + scatter_tally2.add_score('scatter-p4') + scatter_tally2.add_score('scatter-y4') + scatter_tally2.add_score('nu-scatter-p4') + scatter_tally2.add_score('nu-scatter-y3') + + total_tallies = [Tally() for i in range(4)] + [t.add_filter(cell_filter) for t in total_tallies] + total_tallies[0].add_score('total') + [t.add_score('total-y4') for t in total_tallies[1:]] + [t.add_nuclide('U-235') for t in total_tallies[1:]] + [t.add_nuclide('total') for t in total_tallies[1:]] + total_tallies[1].estimator = 'tracklength' + total_tallies[2].estimator = 'analog' + total_tallies[3].estimator = 'collision' + + self._input_set.tallies = TalliesFile() + self._input_set.tallies.add_tally(azimuthal_tally1) + self._input_set.tallies.add_tally(azimuthal_tally2) + self._input_set.tallies.add_tally(azimuthal_tally3) + self._input_set.tallies.add_tally(azimuthal_tally4) + self._input_set.tallies.add_tally(cellborn_tally) + self._input_set.tallies.add_tally(dg_tally) + self._input_set.tallies.add_tally(energy_tally) + self._input_set.tallies.add_tally(energyout_tally) + self._input_set.tallies.add_tally(transfer_tally) + self._input_set.tallies.add_tally(material_tally) + self._input_set.tallies.add_tally(mu_tally1) + self._input_set.tallies.add_tally(mu_tally2) + self._input_set.tallies.add_tally(mu_tally3) + self._input_set.tallies.add_tally(polar_tally1) + self._input_set.tallies.add_tally(polar_tally2) + self._input_set.tallies.add_tally(polar_tally3) + self._input_set.tallies.add_tally(polar_tally4) + self._input_set.tallies.add_tally(universe_tally) + [self._input_set.tallies.add_tally(t) for t in score_tallies] + [self._input_set.tallies.add_tally(t) for t in flux_tallies] + self._input_set.tallies.add_tally(scatter_tally1) + self._input_set.tallies.add_tally(scatter_tally2) + [self._input_set.tallies.add_tally(t) for t in total_tallies] + self._input_set.tallies.add_mesh(mesh_2x2) + + super(TalliesTestHarness, self)._build_inputs() + + def _cleanup(self): + super(TalliesTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = TalliesTestHarness('statepoint.10.*', True) + harness.main() From 9be871419940b250fb290dc61bc3a405a5876132 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 11:07:27 -0600 Subject: [PATCH 17/61] Replace four density tests with a single one --- tests/test_density/geometry.xml | 14 ++++++++++ tests/test_density/materials.xml | 26 +++++++++++++++++++ tests/test_density/results_true.dat | 2 ++ .../settings.xml | 0 .../test_density.py} | 0 tests/test_density_atombcm/geometry.xml | 8 ------ tests/test_density_atombcm/materials.xml | 9 ------- tests/test_density_atombcm/results_true.dat | 2 -- tests/test_density_atomcm3/geometry.xml | 8 ------ tests/test_density_atomcm3/materials.xml | 9 ------- tests/test_density_atomcm3/results_true.dat | 2 -- tests/test_density_atomcm3/settings.xml | 16 ------------ .../test_density_atomcm3.py | 11 -------- tests/test_density_kgm3/geometry.xml | 8 ------ tests/test_density_kgm3/materials.xml | 9 ------- tests/test_density_kgm3/results_true.dat | 2 -- tests/test_density_kgm3/settings.xml | 16 ------------ tests/test_density_kgm3/test_density_kgm3.py | 11 -------- tests/test_density_sum/geometry.xml | 8 ------ tests/test_density_sum/materials.xml | 11 -------- tests/test_density_sum/results_true.dat | 2 -- tests/test_density_sum/settings.xml | 16 ------------ tests/test_density_sum/test_density_sum.py | 11 -------- 23 files changed, 42 insertions(+), 159 deletions(-) create mode 100644 tests/test_density/geometry.xml create mode 100644 tests/test_density/materials.xml create mode 100644 tests/test_density/results_true.dat rename tests/{test_density_atombcm => test_density}/settings.xml (100%) rename tests/{test_density_atombcm/test_density_atombcm.py => test_density/test_density.py} (100%) delete mode 100644 tests/test_density_atombcm/geometry.xml delete mode 100644 tests/test_density_atombcm/materials.xml delete mode 100644 tests/test_density_atombcm/results_true.dat delete mode 100644 tests/test_density_atomcm3/geometry.xml delete mode 100644 tests/test_density_atomcm3/materials.xml delete mode 100644 tests/test_density_atomcm3/results_true.dat delete mode 100644 tests/test_density_atomcm3/settings.xml delete mode 100644 tests/test_density_atomcm3/test_density_atomcm3.py delete mode 100644 tests/test_density_kgm3/geometry.xml delete mode 100644 tests/test_density_kgm3/materials.xml delete mode 100644 tests/test_density_kgm3/results_true.dat delete mode 100644 tests/test_density_kgm3/settings.xml delete mode 100644 tests/test_density_kgm3/test_density_kgm3.py delete mode 100644 tests/test_density_sum/geometry.xml delete mode 100644 tests/test_density_sum/materials.xml delete mode 100644 tests/test_density_sum/results_true.dat delete mode 100644 tests/test_density_sum/settings.xml delete mode 100644 tests/test_density_sum/test_density_sum.py diff --git a/tests/test_density/geometry.xml b/tests/test_density/geometry.xml new file mode 100644 index 0000000000..c305754da9 --- /dev/null +++ b/tests/test_density/geometry.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/test_density/materials.xml b/tests/test_density/materials.xml new file mode 100644 index 0000000000..36947d066d --- /dev/null +++ b/tests/test_density/materials.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test_density/results_true.dat b/tests/test_density/results_true.dat new file mode 100644 index 0000000000..1dbadc039d --- /dev/null +++ b/tests/test_density/results_true.dat @@ -0,0 +1,2 @@ +k-combined: +1.088237E+00 1.999252E-02 diff --git a/tests/test_density_atombcm/settings.xml b/tests/test_density/settings.xml similarity index 100% rename from tests/test_density_atombcm/settings.xml rename to tests/test_density/settings.xml diff --git a/tests/test_density_atombcm/test_density_atombcm.py b/tests/test_density/test_density.py similarity index 100% rename from tests/test_density_atombcm/test_density_atombcm.py rename to tests/test_density/test_density.py diff --git a/tests/test_density_atombcm/geometry.xml b/tests/test_density_atombcm/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_density_atombcm/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_density_atombcm/materials.xml b/tests/test_density_atombcm/materials.xml deleted file mode 100644 index 10d0519685..0000000000 --- a/tests/test_density_atombcm/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_density_atombcm/results_true.dat b/tests/test_density_atombcm/results_true.dat deleted file mode 100644 index 2956b53888..0000000000 --- a/tests/test_density_atombcm/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -1.752274E+00 4.032481E-02 diff --git a/tests/test_density_atomcm3/geometry.xml b/tests/test_density_atomcm3/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_density_atomcm3/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_density_atomcm3/materials.xml b/tests/test_density_atomcm3/materials.xml deleted file mode 100644 index 57d177afc7..0000000000 --- a/tests/test_density_atomcm3/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_density_atomcm3/results_true.dat b/tests/test_density_atomcm3/results_true.dat deleted file mode 100644 index 0bd16fc4de..0000000000 --- a/tests/test_density_atomcm3/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -1.092376E+00 1.759788E-02 diff --git a/tests/test_density_atomcm3/settings.xml b/tests/test_density_atomcm3/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_density_atomcm3/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_density_atomcm3/test_density_atomcm3.py b/tests/test_density_atomcm3/test_density_atomcm3.py deleted file mode 100644 index 2a595f3e66..0000000000 --- a/tests/test_density_atomcm3/test_density_atomcm3.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() diff --git a/tests/test_density_kgm3/geometry.xml b/tests/test_density_kgm3/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_density_kgm3/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_density_kgm3/materials.xml b/tests/test_density_kgm3/materials.xml deleted file mode 100644 index 2f74574e75..0000000000 --- a/tests/test_density_kgm3/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_density_kgm3/results_true.dat b/tests/test_density_kgm3/results_true.dat deleted file mode 100644 index 6b008101fb..0000000000 --- a/tests/test_density_kgm3/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -7.994522E-01 1.065745E-02 diff --git a/tests/test_density_kgm3/settings.xml b/tests/test_density_kgm3/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_density_kgm3/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_density_kgm3/test_density_kgm3.py b/tests/test_density_kgm3/test_density_kgm3.py deleted file mode 100644 index 2a595f3e66..0000000000 --- a/tests/test_density_kgm3/test_density_kgm3.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() diff --git a/tests/test_density_sum/geometry.xml b/tests/test_density_sum/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_density_sum/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_density_sum/materials.xml b/tests/test_density_sum/materials.xml deleted file mode 100644 index 713661196f..0000000000 --- a/tests/test_density_sum/materials.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/tests/test_density_sum/results_true.dat b/tests/test_density_sum/results_true.dat deleted file mode 100644 index 9b16f2d988..0000000000 --- a/tests/test_density_sum/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -3.231215E-01 6.421320E-03 diff --git a/tests/test_density_sum/settings.xml b/tests/test_density_sum/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_density_sum/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_density_sum/test_density_sum.py b/tests/test_density_sum/test_density_sum.py deleted file mode 100644 index 2a595f3e66..0000000000 --- a/tests/test_density_sum/test_density_sum.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() From cc261575447731897d9b817d3e2d6185e0739f6a Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 11:21:24 -0600 Subject: [PATCH 18/61] Replace four plot tests with one --- .../geometry.xml | 0 .../materials.xml | 0 tests/{test_plot_mask => test_plot}/plots.xml | 7 +++--- tests/test_plot/results_true.dat | 1 + .../settings.xml | 6 +++++ .../test_plot.py} | 0 tests/test_plot_background/geometry.xml | 8 ------- tests/test_plot_background/materials.xml | 9 -------- tests/test_plot_background/plots.xml | 11 ---------- tests/test_plot_background/results_true.dat | 1 - .../test_plot_background.py | 11 ---------- tests/test_plot_basis/plots.xml | 22 ------------------- tests/test_plot_basis/results_true.dat | 1 - tests/test_plot_basis/settings.xml | 16 -------------- tests/test_plot_colspec/geometry.xml | 8 ------- tests/test_plot_colspec/materials.xml | 9 -------- tests/test_plot_colspec/plots.xml | 11 ---------- tests/test_plot_colspec/results_true.dat | 1 - tests/test_plot_colspec/settings.xml | 16 -------------- tests/test_plot_colspec/test_plot_colspec.py | 11 ---------- tests/test_plot_mask/geometry.xml | 13 ----------- tests/test_plot_mask/materials.xml | 19 ---------------- tests/test_plot_mask/results_true.dat | 1 - tests/test_plot_mask/settings.xml | 16 -------------- tests/test_plot_mask/test_plot_mask.py | 11 ---------- 25 files changed, 11 insertions(+), 198 deletions(-) rename tests/{test_plot_basis => test_plot}/geometry.xml (100%) rename tests/{test_plot_basis => test_plot}/materials.xml (100%) rename tests/{test_plot_mask => test_plot}/plots.xml (71%) create mode 100644 tests/test_plot/results_true.dat rename tests/{test_plot_background => test_plot}/settings.xml (66%) rename tests/{test_plot_basis/test_plot_basis.py => test_plot/test_plot.py} (100%) delete mode 100644 tests/test_plot_background/geometry.xml delete mode 100644 tests/test_plot_background/materials.xml delete mode 100644 tests/test_plot_background/plots.xml delete mode 100644 tests/test_plot_background/results_true.dat delete mode 100644 tests/test_plot_background/test_plot_background.py delete mode 100644 tests/test_plot_basis/plots.xml delete mode 100644 tests/test_plot_basis/results_true.dat delete mode 100644 tests/test_plot_basis/settings.xml delete mode 100644 tests/test_plot_colspec/geometry.xml delete mode 100644 tests/test_plot_colspec/materials.xml delete mode 100644 tests/test_plot_colspec/plots.xml delete mode 100644 tests/test_plot_colspec/results_true.dat delete mode 100644 tests/test_plot_colspec/settings.xml delete mode 100644 tests/test_plot_colspec/test_plot_colspec.py delete mode 100644 tests/test_plot_mask/geometry.xml delete mode 100644 tests/test_plot_mask/materials.xml delete mode 100644 tests/test_plot_mask/results_true.dat delete mode 100644 tests/test_plot_mask/settings.xml delete mode 100644 tests/test_plot_mask/test_plot_mask.py diff --git a/tests/test_plot_basis/geometry.xml b/tests/test_plot/geometry.xml similarity index 100% rename from tests/test_plot_basis/geometry.xml rename to tests/test_plot/geometry.xml diff --git a/tests/test_plot_basis/materials.xml b/tests/test_plot/materials.xml similarity index 100% rename from tests/test_plot_basis/materials.xml rename to tests/test_plot/materials.xml diff --git a/tests/test_plot_mask/plots.xml b/tests/test_plot/plots.xml similarity index 71% rename from tests/test_plot_mask/plots.xml rename to tests/test_plot/plots.xml index 72b40f72cf..e8848f6172 100644 --- a/tests/test_plot_mask/plots.xml +++ b/tests/test_plot/plots.xml @@ -5,7 +5,8 @@ 0. 0. 0. 25 25 200 200 - + + @@ -15,11 +16,11 @@ - + 0. 0. 0. 25 25 200 200 - + 0 0 0 diff --git a/tests/test_plot/results_true.dat b/tests/test_plot/results_true.dat new file mode 100644 index 0000000000..910e41a060 --- /dev/null +++ b/tests/test_plot/results_true.dat @@ -0,0 +1 @@ +f76183da6a581c17f9a1572e1f1573d784e3f2e3efa3e7a3bd8786991df7a086e0b5f7f1c6b00343fa61b601ec70ad619b5ff5d8120af32559b882ca57be6768 \ No newline at end of file diff --git a/tests/test_plot_background/settings.xml b/tests/test_plot/settings.xml similarity index 66% rename from tests/test_plot_background/settings.xml rename to tests/test_plot/settings.xml index a6fd5da19e..03985b3ae9 100644 --- a/tests/test_plot_background/settings.xml +++ b/tests/test_plot/settings.xml @@ -13,4 +13,10 @@ + + 5 4 3 + -10 -10 -10 + 10 10 10 + + diff --git a/tests/test_plot_basis/test_plot_basis.py b/tests/test_plot/test_plot.py similarity index 100% rename from tests/test_plot_basis/test_plot_basis.py rename to tests/test_plot/test_plot.py diff --git a/tests/test_plot_background/geometry.xml b/tests/test_plot_background/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_plot_background/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_plot_background/materials.xml b/tests/test_plot_background/materials.xml deleted file mode 100644 index 315c0fa848..0000000000 --- a/tests/test_plot_background/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_plot_background/plots.xml b/tests/test_plot_background/plots.xml deleted file mode 100644 index 879d2b30df..0000000000 --- a/tests/test_plot_background/plots.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - 0. 0. 0. - 30. 30. - 200 200 - 0 0 0 - - - diff --git a/tests/test_plot_background/results_true.dat b/tests/test_plot_background/results_true.dat deleted file mode 100644 index cea27e38e2..0000000000 --- a/tests/test_plot_background/results_true.dat +++ /dev/null @@ -1 +0,0 @@ -d0a8c3cd2eb2b73430e0fcac2f5249c012ba678d08add40fc43563332e71873977b2271d1e93ba42b3c1298f987f7d01406f60115d2f1c0879d140a11b909598 \ No newline at end of file diff --git a/tests/test_plot_background/test_plot_background.py b/tests/test_plot_background/test_plot_background.py deleted file mode 100644 index 7890eca19d..0000000000 --- a/tests/test_plot_background/test_plot_background.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import PlotTestHarness - - -if __name__ == '__main__': - harness = PlotTestHarness(('1_plot.ppm', )) - harness.main() diff --git a/tests/test_plot_basis/plots.xml b/tests/test_plot_basis/plots.xml deleted file mode 100644 index 492236d376..0000000000 --- a/tests/test_plot_basis/plots.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 0. 0. 0. - 25 25 - 200 200 - - - - 0. 0. 0. - 25 25 - 200 200 - - - - 0. 0. 0. - 25 25 - 200 200 - - - diff --git a/tests/test_plot_basis/results_true.dat b/tests/test_plot_basis/results_true.dat deleted file mode 100644 index b1d5dc8534..0000000000 --- a/tests/test_plot_basis/results_true.dat +++ /dev/null @@ -1 +0,0 @@ -368e0135c136d5c8a2dabb4c8085279dc7ac0bd81b2ec905bdf11ecb5fe99803868631cdff0b3ddec941323bcc661747d4c16edfd4f8d38582155bd6fd7e82e8 \ No newline at end of file diff --git a/tests/test_plot_basis/settings.xml b/tests/test_plot_basis/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_plot_basis/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_plot_colspec/geometry.xml b/tests/test_plot_colspec/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_plot_colspec/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_plot_colspec/materials.xml b/tests/test_plot_colspec/materials.xml deleted file mode 100644 index 315c0fa848..0000000000 --- a/tests/test_plot_colspec/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_plot_colspec/plots.xml b/tests/test_plot_colspec/plots.xml deleted file mode 100644 index 27edcb11b0..0000000000 --- a/tests/test_plot_colspec/plots.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - 0. 0. 0. - 30. 30. - 200 200 - - - - diff --git a/tests/test_plot_colspec/results_true.dat b/tests/test_plot_colspec/results_true.dat deleted file mode 100644 index 0e4eb9a59b..0000000000 --- a/tests/test_plot_colspec/results_true.dat +++ /dev/null @@ -1 +0,0 @@ -32acbbd7b0f777589b108333e4928b6ecd93bc9e553b04cc611da4079ff8738a03dd0667e7e17161708fde86180532f19907272356d23e8a827a736a5b4a697a \ No newline at end of file diff --git a/tests/test_plot_colspec/settings.xml b/tests/test_plot_colspec/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_plot_colspec/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_plot_colspec/test_plot_colspec.py b/tests/test_plot_colspec/test_plot_colspec.py deleted file mode 100644 index 7890eca19d..0000000000 --- a/tests/test_plot_colspec/test_plot_colspec.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import PlotTestHarness - - -if __name__ == '__main__': - harness = PlotTestHarness(('1_plot.ppm', )) - harness.main() diff --git a/tests/test_plot_mask/geometry.xml b/tests/test_plot_mask/geometry.xml deleted file mode 100644 index 83619d9f78..0000000000 --- a/tests/test_plot_mask/geometry.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/tests/test_plot_mask/materials.xml b/tests/test_plot_mask/materials.xml deleted file mode 100644 index f90a5e7f81..0000000000 --- a/tests/test_plot_mask/materials.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_plot_mask/results_true.dat b/tests/test_plot_mask/results_true.dat deleted file mode 100644 index a1e323203d..0000000000 --- a/tests/test_plot_mask/results_true.dat +++ /dev/null @@ -1 +0,0 @@ -a7cb65bf40c84c0540d45ff292c398f9ae51b3d9396e88b9b4e5cdf05e8730f409bddb53aec6d396058194c6293c5bd3ef39efd0b0f30f2423f696193c85176c \ No newline at end of file diff --git a/tests/test_plot_mask/settings.xml b/tests/test_plot_mask/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_plot_mask/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_plot_mask/test_plot_mask.py b/tests/test_plot_mask/test_plot_mask.py deleted file mode 100644 index d45479e256..0000000000 --- a/tests/test_plot_mask/test_plot_mask.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import PlotTestHarness - - -if __name__ == '__main__': - harness = PlotTestHarness(('1_plot.ppm', '2_plot.ppm', '3_plot.ppm')) - harness.main() From a5f2d678921c39d640454b4f164d32522c7b6f22 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 12:32:22 -0600 Subject: [PATCH 19/61] Add a voxel plot to test_plot --- tests/test_plot/plots.xml | 6 +++ tests/test_plot/results_true.dat | 2 +- tests/test_plot/test_plot.py | 64 +++++++++++++++++++++++++++++++- tests/testing_harness.py | 43 --------------------- 4 files changed, 69 insertions(+), 46 deletions(-) diff --git a/tests/test_plot/plots.xml b/tests/test_plot/plots.xml index e8848f6172..d5e03f598f 100644 --- a/tests/test_plot/plots.xml +++ b/tests/test_plot/plots.xml @@ -23,4 +23,10 @@ 0 0 0 + + 100 100 10 + 0. 0. 0. + 20 20 10 + + diff --git a/tests/test_plot/results_true.dat b/tests/test_plot/results_true.dat index 910e41a060..ba8a49226a 100644 --- a/tests/test_plot/results_true.dat +++ b/tests/test_plot/results_true.dat @@ -1 +1 @@ -f76183da6a581c17f9a1572e1f1573d784e3f2e3efa3e7a3bd8786991df7a086e0b5f7f1c6b00343fa61b601ec70ad619b5ff5d8120af32559b882ca57be6768 \ No newline at end of file +01ecda0f3820a49c8a41d8dc47d1e5c58767a04301621c2437231fcc04401ddea47b67d0529ca56a32d4d97b4f1416a2e0b6120d3bdc87d74a7e9889758a8808 \ No newline at end of file diff --git a/tests/test_plot/test_plot.py b/tests/test_plot/test_plot.py index d45479e256..62cea67df4 100644 --- a/tests/test_plot/test_plot.py +++ b/tests/test_plot/test_plot.py @@ -1,11 +1,71 @@ #!/usr/bin/env python +import glob +import hashlib import os import sys sys.path.insert(0, os.pardir) -from testing_harness import PlotTestHarness +from testing_harness import TestHarness + +import h5py + +from openmc import Executor + + +class PlotTestHarness(TestHarness): + """Specialized TestHarness for running OpenMC plotting tests.""" + def __init__(self, plot_names): + super(PlotTestHarness, self).__init__(None, False) + self._plot_names = plot_names + + def _run_openmc(self): + executor = Executor() + returncode = executor.plot_geometry(openmc_exec=self._opts.exe) + assert returncode == 0, 'OpenMC did not exit successfully.' + + def _test_output_created(self): + """Make sure *.ppm has been created.""" + for fname in self._plot_names: + assert os.path.exists(os.path.join(os.getcwd(), fname)), \ + 'Plot output file does not exist.' + + def _cleanup(self): + super(PlotTestHarness, self)._cleanup() + for fname in self._plot_names: + path = os.path.join(os.getcwd(), fname) + if os.path.exists(path): + #os.remove(path) + pass + + def _get_results(self): + """Return a string hash of the plot files.""" + outstr = bytes() + + # Add PPM output to results + ppm_files = glob.glob(os.path.join(os.getcwd(), '*.ppm')) + for fname in sorted(ppm_files): + with open(fname, 'rb') as fh: + outstr += fh.read() + + # Add voxel data to results + voxel_files = glob.glob(os.path.join(os.getcwd(), '*.voxel')) + for fname in sorted(voxel_files): + with h5py.File(fname, 'r') as fh: + outstr += fh['filetype'].value + outstr += fh['num_voxels'].value.tobytes() + outstr += fh['lower_left'].value.tobytes() + outstr += fh['voxel_width'].value.tobytes() + outstr += fh['data'].value.tobytes() + + # Hash the information and return. + sha512 = hashlib.sha512() + sha512.update(outstr) + outstr = sha512.hexdigest() + + return outstr if __name__ == '__main__': - harness = PlotTestHarness(('1_plot.ppm', '2_plot.ppm', '3_plot.ppm')) + harness = PlotTestHarness(('1_plot.ppm', '2_plot.ppm', '3_plot.ppm', + '4_plot.voxel')) harness.main() diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 190c702282..66cadfe633 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -152,49 +152,6 @@ class HashedTestHarness(TestHarness): return super(HashedTestHarness, self)._get_results(True) -class PlotTestHarness(TestHarness): - """Specialized TestHarness for running OpenMC plotting tests.""" - def __init__(self, plot_names): - super(PlotTestHarness, self).__init__(None, False) - self._plot_names = plot_names - - def _run_openmc(self): - executor = Executor() - returncode = executor.plot_geometry(openmc_exec=self._opts.exe) - assert returncode == 0, 'OpenMC did not exit successfully.' - - def _test_output_created(self): - """Make sure *.ppm has been created.""" - for fname in self._plot_names: - assert os.path.exists(os.path.join(os.getcwd(), fname)), \ - 'Plot output file does not exist.' - - def _cleanup(self): - super(PlotTestHarness, self)._cleanup() - output = glob.glob(os.path.join(os.getcwd(), '*.ppm')) - for f in output: - if os.path.exists(f): - os.remove(f) - - def _get_results(self): - """Return a string hash of the plot files.""" - # Find the plot files. - plot_files = glob.glob(os.path.join(os.getcwd(), '*.ppm')) - - # Read the plot files. - outstr = bytes() - for fname in sorted(plot_files): - with open(fname, 'rb') as fh: - outstr += fh.read() - - # Hash the information and return. - sha512 = hashlib.sha512() - sha512.update(outstr) - outstr = sha512.hexdigest() - - return outstr - - class CMFDTestHarness(TestHarness): """Specialized TestHarness for running OpenMC CMFD tests.""" def _get_results(self): From 8f1f3a775b8b7b2196ca68232d4207d04e8280ca Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 13:06:44 -0600 Subject: [PATCH 20/61] Remove test_basic as it doesn't affect coverage --- tests/test_basic/geometry.xml | 8 -------- tests/test_basic/materials.xml | 9 --------- tests/test_basic/results_true.dat | 2 -- tests/test_basic/settings.xml | 16 ---------------- tests/test_basic/test_basic.py | 11 ----------- 5 files changed, 46 deletions(-) delete mode 100644 tests/test_basic/geometry.xml delete mode 100644 tests/test_basic/materials.xml delete mode 100644 tests/test_basic/results_true.dat delete mode 100644 tests/test_basic/settings.xml delete mode 100755 tests/test_basic/test_basic.py diff --git a/tests/test_basic/geometry.xml b/tests/test_basic/geometry.xml deleted file mode 100644 index bc56030e18..0000000000 --- a/tests/test_basic/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/test_basic/materials.xml b/tests/test_basic/materials.xml deleted file mode 100644 index 315c0fa848..0000000000 --- a/tests/test_basic/materials.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_basic/results_true.dat b/tests/test_basic/results_true.dat deleted file mode 100644 index 5263a6b7fd..0000000000 --- a/tests/test_basic/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -3.021779E-01 3.813358E-03 diff --git a/tests/test_basic/settings.xml b/tests/test_basic/settings.xml deleted file mode 100644 index a6fd5da19e..0000000000 --- a/tests/test_basic/settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - 10 - 5 - 1000 - - - - - -4 -4 -4 4 4 4 - - - - diff --git a/tests/test_basic/test_basic.py b/tests/test_basic/test_basic.py deleted file mode 100755 index 2a595f3e66..0000000000 --- a/tests/test_basic/test_basic.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() From d2df222c525c760fcd9db062a965fa9773889a9d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 13:18:12 -0600 Subject: [PATCH 21/61] Combine two S(a,b) tests into one --- tests/test_salphabeta/geometry.xml | 8 +- tests/test_salphabeta/materials.xml | 15 ++ tests/test_salphabeta/results_true.dat | 2 +- tests/test_salphabeta_multiple/geometry.xml | 96 ------------- tests/test_salphabeta_multiple/materials.xml | 130 ------------------ .../test_salphabeta_multiple/results_true.dat | 2 - tests/test_salphabeta_multiple/settings.xml | 20 --- .../test_salphabeta_multiple.py | 11 -- 8 files changed, 21 insertions(+), 263 deletions(-) delete mode 100644 tests/test_salphabeta_multiple/geometry.xml delete mode 100644 tests/test_salphabeta_multiple/materials.xml delete mode 100644 tests/test_salphabeta_multiple/results_true.dat delete mode 100644 tests/test_salphabeta_multiple/settings.xml delete mode 100644 tests/test_salphabeta_multiple/test_salphabeta_multiple.py diff --git a/tests/test_salphabeta/geometry.xml b/tests/test_salphabeta/geometry.xml index f9caa6c883..2b978b9148 100644 --- a/tests/test_salphabeta/geometry.xml +++ b/tests/test_salphabeta/geometry.xml @@ -3,11 +3,13 @@ - - + + + - + + diff --git a/tests/test_salphabeta/materials.xml b/tests/test_salphabeta/materials.xml index 9646e11159..b51395f184 100644 --- a/tests/test_salphabeta/materials.xml +++ b/tests/test_salphabeta/materials.xml @@ -23,6 +23,21 @@ + + + + + + + + + + + + + + + diff --git a/tests/test_salphabeta/results_true.dat b/tests/test_salphabeta/results_true.dat index a04ee8fc89..926af89bca 100644 --- a/tests/test_salphabeta/results_true.dat +++ b/tests/test_salphabeta/results_true.dat @@ -1,2 +1,2 @@ k-combined: -8.538165E-01 6.355606E-03 +8.350634E-01 6.010639E-02 diff --git a/tests/test_salphabeta_multiple/geometry.xml b/tests/test_salphabeta_multiple/geometry.xml deleted file mode 100644 index 13eb601660..0000000000 --- a/tests/test_salphabeta_multiple/geometry.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_salphabeta_multiple/materials.xml b/tests/test_salphabeta_multiple/materials.xml deleted file mode 100644 index f1a0d6f393..0000000000 --- a/tests/test_salphabeta_multiple/materials.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - 71c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_salphabeta_multiple/results_true.dat b/tests/test_salphabeta_multiple/results_true.dat deleted file mode 100644 index 593c5adc74..0000000000 --- a/tests/test_salphabeta_multiple/results_true.dat +++ /dev/null @@ -1,2 +0,0 @@ -k-combined: -9.141547E-01 2.728809E-02 diff --git a/tests/test_salphabeta_multiple/settings.xml b/tests/test_salphabeta_multiple/settings.xml deleted file mode 100644 index 4df1f124a6..0000000000 --- a/tests/test_salphabeta_multiple/settings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - 10 - 5 - 400 - - - - - box - 0 0 0 1 1 1 - - - - - diff --git a/tests/test_salphabeta_multiple/test_salphabeta_multiple.py b/tests/test_salphabeta_multiple/test_salphabeta_multiple.py deleted file mode 100644 index 2a595f3e66..0000000000 --- a/tests/test_salphabeta_multiple/test_salphabeta_multiple.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') - harness.main() From 918c1bf45991cc8dd4b10dbada78a6aa472f8bd9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 13:41:50 -0600 Subject: [PATCH 22/61] Fix typo. I am not Ubuntu. --- docs/source/quickinstall.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/quickinstall.rst b/docs/source/quickinstall.rst index 8bf95e245f..7faa4978dd 100644 --- a/docs/source/quickinstall.rst +++ b/docs/source/quickinstall.rst @@ -44,8 +44,8 @@ Installing from Source on Ubuntu 15.04+ --------------------------------------- To build OpenMC from source, several :ref:`prerequisites ` are -needed. If you are Ubuntu 15.04 or higher, all prerequisites can be installed -directly from the package manager. +needed. If you are using Ubuntu 15.04 or higher, all prerequisites can be +installed directly from the package manager. .. code-block:: sh From a31a121504ddbc98d6bd2a68f1f1ff6d1478136b Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 19 Jan 2016 14:44:32 -0600 Subject: [PATCH 23/61] Use older style ndarray.tostring() rather than ndarray.tobytes() --- tests/test_plot/test_plot.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_plot/test_plot.py b/tests/test_plot/test_plot.py index 62cea67df4..015577d215 100644 --- a/tests/test_plot/test_plot.py +++ b/tests/test_plot/test_plot.py @@ -52,10 +52,10 @@ class PlotTestHarness(TestHarness): for fname in sorted(voxel_files): with h5py.File(fname, 'r') as fh: outstr += fh['filetype'].value - outstr += fh['num_voxels'].value.tobytes() - outstr += fh['lower_left'].value.tobytes() - outstr += fh['voxel_width'].value.tobytes() - outstr += fh['data'].value.tobytes() + outstr += fh['num_voxels'].value.tostring() + outstr += fh['lower_left'].value.tostring() + outstr += fh['voxel_width'].value.tostring() + outstr += fh['data'].value.tostring() # Hash the information and return. sha512 = hashlib.sha512() From 9d7dbdb7d7e82f1251a7510c9c63fe041273f323 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 20 Jan 2016 18:04:20 -0500 Subject: [PATCH 24/61] Improved docs for Tally.get_slice(...) and fixed bug with redundant energy filter bins in sliced tallies --- .../pythonapi/examples/mgxs-part-ii.ipynb | 982 +----------------- .../pythonapi/examples/mgxs-part-iii.ipynb | 3 +- openmc/tallies.py | 66 +- 3 files changed, 87 insertions(+), 964 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index b41b322410..764bb0d412 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -34,14 +34,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py:1318: UserWarning: This call to matplotlib.use() has no effect\n", + "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: UserWarning: This call to matplotlib.use() has no effect\n", "because the backend has already been chosen;\n", "matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", "or matplotlib.backends is imported for the first time.\n", "\n", " warnings.warn(_use_error_msg)\n", - "/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:11: QAWarning: pyne.rxname is not yet QA compliant.\n", - "/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:11: QAWarning: pyne.ace is not yet QA compliant.\n" + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:11: QAWarning: pyne.rxname is not yet QA compliant.\n", + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__main__.py:11: QAWarning: pyne.ace is not yet QA compliant.\n" ] } ], @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "collapsed": false }, @@ -425,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "collapsed": false }, @@ -450,8 +450,9 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.1\n", - " Git SHA1: ea9fb637f63f9374c7436456141afa850b84acf9\n", - " Date/Time: 2016-01-14 08:03:40\n", + " Git SHA1: 263266f4f8807fd38c6ac282fae259ae73fa1eee\n", + " Date/Time: 2016-01-20 17:57:53\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -509,101 +510,8 @@ " 30/1 1.23670 1.22056 +/- 0.00368\n", " 31/1 1.21396 1.22024 +/- 0.00352\n", " 32/1 1.21389 1.21995 +/- 0.00337\n", - " 33/1 1.24649 1.22111 +/- 0.00342\n", - " 34/1 1.23204 1.22156 +/- 0.00330\n", - " 35/1 1.20768 1.22101 +/- 0.00322\n", - " 36/1 1.22271 1.22107 +/- 0.00309\n", - " 37/1 1.21796 1.22096 +/- 0.00298\n", - " 38/1 1.23842 1.22158 +/- 0.00293\n", - " 39/1 1.23080 1.22190 +/- 0.00285\n", - " 40/1 1.23572 1.22236 +/- 0.00279\n", - " 41/1 1.21691 1.22218 +/- 0.00271\n", - " 42/1 1.24616 1.22293 +/- 0.00272\n", - " 43/1 1.21903 1.22282 +/- 0.00264\n", - " 44/1 1.22967 1.22302 +/- 0.00257\n", - " 45/1 1.22053 1.22295 +/- 0.00250\n", - " 46/1 1.24087 1.22344 +/- 0.00248\n", - " 47/1 1.20251 1.22288 +/- 0.00248\n", - " 48/1 1.20331 1.22236 +/- 0.00246\n", - " 49/1 1.22724 1.22249 +/- 0.00240\n", - " 50/1 1.24798 1.22313 +/- 0.00243\n", - " Triggers unsatisfied, max unc./thresh. is 1.32110 for scatter-p1 in tally 10054\n", - " The estimated number of batches is 80\n", - " Creating state point statepoint.050.h5...\n", - " 51/1 1.22253 1.22311 +/- 0.00237\n", - " 52/1 1.24330 1.22359 +/- 0.00236\n", - " 53/1 1.23251 1.22380 +/- 0.00231\n", - " 54/1 1.21133 1.22352 +/- 0.00228\n", - " 55/1 1.24503 1.22399 +/- 0.00228\n", - " 56/1 1.22013 1.22391 +/- 0.00223\n", - " 57/1 1.23877 1.22423 +/- 0.00220\n", - " 58/1 1.23793 1.22451 +/- 0.00218\n", - " 59/1 1.21018 1.22422 +/- 0.00215\n", - " 60/1 1.22417 1.22422 +/- 0.00211\n", - " 61/1 1.23094 1.22435 +/- 0.00207\n", - " 62/1 1.23310 1.22452 +/- 0.00204\n", - " 63/1 1.22488 1.22453 +/- 0.00200\n", - " 64/1 1.22702 1.22457 +/- 0.00196\n", - " 65/1 1.18834 1.22391 +/- 0.00204\n", - " 66/1 1.23112 1.22404 +/- 0.00200\n", - " 67/1 1.21611 1.22390 +/- 0.00197\n", - " 68/1 1.22513 1.22392 +/- 0.00194\n", - " 69/1 1.21741 1.22381 +/- 0.00191\n", - " 70/1 1.22484 1.22383 +/- 0.00188\n", - " 71/1 1.19662 1.22338 +/- 0.00190\n", - " 72/1 1.23315 1.22354 +/- 0.00187\n", - " 73/1 1.22796 1.22361 +/- 0.00185\n", - " 74/1 1.21417 1.22346 +/- 0.00182\n", - " 75/1 1.21020 1.22326 +/- 0.00181\n", - " 76/1 1.23413 1.22343 +/- 0.00179\n", - " 77/1 1.22184 1.22340 +/- 0.00176\n", - " 78/1 1.20309 1.22310 +/- 0.00176\n", - " 79/1 1.23458 1.22327 +/- 0.00174\n", - " 80/1 1.20724 1.22304 +/- 0.00173\n", - " Triggers satisfied for batch 80\n", - " Creating state point statepoint.080.h5...\n", - "\n", - " ===========================================================================\n", - " ======================> SIMULATION FINISHED <======================\n", - " ===========================================================================\n", - "\n", - "\n", - " =======================> TIMING STATISTICS <=======================\n", - "\n", - " Total time for initialization = 3.8300E-01 seconds\n", - " Reading cross sections = 1.0700E-01 seconds\n", - " Total time in simulation = 2.5629E+02 seconds\n", - " Time in transport only = 2.5623E+02 seconds\n", - " Time in inactive batches = 1.5743E+01 seconds\n", - " Time in active batches = 2.4055E+02 seconds\n", - " Time synchronizing fission bank = 3.4000E-02 seconds\n", - " Sampling source sites = 2.1000E-02 seconds\n", - " SEND/RECV source sites = 1.3000E-02 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 7.0000E-03 seconds\n", - " Total time elapsed = 2.5674E+02 seconds\n", - " Calculation Rate (inactive) = 6352.03 neutrons/second\n", - " Calculation Rate (active) = 1662.87 neutrons/second\n", - "\n", - " ============================> RESULTS <============================\n", - "\n", - " k-effective (Collision) = 1.22327 +/- 0.00148\n", - " k-effective (Track-length) = 1.22304 +/- 0.00173\n", - " k-effective (Absorption) = 1.22407 +/- 0.00129\n", - " Combined k-effective = 1.22373 +/- 0.00113\n", - " Leakage Fraction = 0.00000 +/- 0.00000\n", - "\n" + " 33/1 1.24649 1.22111 +/- 0.00342\n" ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -628,7 +536,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "collapsed": false }, @@ -647,7 +555,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "collapsed": true }, @@ -667,7 +575,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "collapsed": false }, @@ -702,46 +610,11 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t3.31e+00 +/- 1.88e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 1.24e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.50e+01 +/- 2.02e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.83e+01 +/- 3.56e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.90e+02 +/- 4.54e-01%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 4.10e-01%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 2.56e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 2.82e-01%\n", - "\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 2.30e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.21e-03 +/- 2.25e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.82e-04 +/- 3.09e+00%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.54e-06 +/- 3.27e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 4.39e-01%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 4.12e-01%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 2.57e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t4.24e-05 +/- 2.81e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -756,34 +629,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 2.19e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.51e-03 +/- 1.22e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 2.02e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.31e-02 +/- 3.56e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 4.54e-01%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 4.10e-01%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 2.56e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t5.40e-01 +/- 2.82e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -798,151 +648,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n", - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211H-10.2340220.003645
1271000211O-161.5603050.006280
1241000212H-11.5880250.002815
1251000212O-160.2851470.001392
1221000213H-10.0107760.000186
1231000213O-160.0000000.000000
1201000214H-10.0000230.000010
1211000214O-160.0000000.000000
1181000215H-10.0000000.000000
1191000215O-160.0000000.000000
\n", - "
" - ], - "text/plain": [ - " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 H-1 0.234022 0.003645\n", - "127 10002 1 1 O-16 1.560305 0.006280\n", - "124 10002 1 2 H-1 1.588025 0.002815\n", - "125 10002 1 2 O-16 0.285147 0.001392\n", - "122 10002 1 3 H-1 0.010776 0.000186\n", - "123 10002 1 3 O-16 0.000000 0.000000\n", - "120 10002 1 4 H-1 0.000023 0.000010\n", - "121 10002 1 4 O-16 0.000000 0.000000\n", - "118 10002 1 5 H-1 0.000000 0.000000\n", - "119 10002 1 5 O-16 0.000000 0.000000" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -958,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": true }, @@ -980,143 +690,22 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\ttransport\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.81e-03 +/- 4.75e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 1.89e-01%\n", - "\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 1.31e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 2.08e-01%\n", - "\n", - "\tNuclide =\tO-16\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 1.50e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.74e-01 +/- 2.66e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "condensed_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n", - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup innuclidemeanstd. dev.
3100001U-23520.8281270.098842
4100001U-2389.5822950.012550
5100001O-163.1573580.004725
0100002U-235485.2176490.916465
1100002U-23811.1760810.023196
2100002O-163.7881670.010090
\n", - "
" - ], - "text/plain": [ - " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 20.828127 0.098842\n", - "4 10000 1 U-238 9.582295 0.012550\n", - "5 10000 1 O-16 3.157358 0.004725\n", - "0 10000 2 U-235 485.217649 0.916465\n", - "1 10000 2 U-238 11.176081 0.023196\n", - "2 10000 2 O-16 3.788167 0.010090" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = condensed_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -1138,7 +727,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1157,7 +746,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1202,187 +791,13 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", - "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.574633\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.679931\tres = 4.254E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.660910\tres = 1.832E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.658975\tres = 2.798E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.642976\tres = 2.927E-03\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.625710\tres = 2.428E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.606520\tres = 2.685E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.587277\tres = 3.067E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.568777\tres = 3.173E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.551415\tres = 3.150E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.535708\tres = 3.052E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.521916\tres = 2.849E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.510221\tres = 2.575E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.500691\tres = 2.241E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.493392\tres = 1.868E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.488318\tres = 1.458E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.485438\tres = 1.028E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.484705\tres = 5.896E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.486046\tres = 1.510E-03\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.489362\tres = 2.766E-03\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.494546\tres = 6.824E-03\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.501481\tres = 1.059E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.510042\tres = 1.402E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.520095\tres = 1.707E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.531508\tres = 1.971E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.544144\tres = 2.194E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.557872\tres = 2.378E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.572557\tres = 2.523E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.588073\tres = 2.632E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.604293\tres = 2.710E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.621101\tres = 2.758E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.638382\tres = 2.781E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.656032\tres = 2.782E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.673950\tres = 2.765E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.692043\tres = 2.731E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.710227\tres = 2.685E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.728423\tres = 2.628E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.746558\tres = 2.562E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.764569\tres = 2.490E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.782396\tres = 2.412E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.799990\tres = 2.332E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.817301\tres = 2.249E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.834292\tres = 2.164E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.850928\tres = 2.079E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.867178\tres = 1.994E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.883018\tres = 1.910E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.898427\tres = 1.827E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.913390\tres = 1.745E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.927892\tres = 1.665E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.941926\tres = 1.588E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.955484\tres = 1.512E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.968563\tres = 1.439E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.981162\tres = 1.369E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.993283\tres = 1.301E-02\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.004929\tres = 1.235E-02\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.016105\tres = 1.172E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.026818\tres = 1.112E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.037075\tres = 1.054E-02\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.046885\tres = 9.989E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.056259\tres = 9.459E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.065206\tres = 8.954E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.073740\tres = 8.471E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.081872\tres = 8.012E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.089614\tres = 7.573E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.096980\tres = 7.156E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.103981\tres = 6.760E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.110631\tres = 6.382E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.116944\tres = 6.024E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.122932\tres = 5.684E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.128608\tres = 5.361E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.133985\tres = 5.055E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.139076\tres = 4.764E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.143892\tres = 4.490E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.148447\tres = 4.228E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.152753\tres = 3.982E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.156819\tres = 3.749E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.160659\tres = 3.528E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.164283\tres = 3.319E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.167701\tres = 3.122E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.170923\tres = 2.936E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.173960\tres = 2.759E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.176822\tres = 2.594E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.179516\tres = 2.437E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.182052\tres = 2.289E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.184438\tres = 2.150E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.186682\tres = 2.018E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.188792\tres = 1.895E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.190775\tres = 1.778E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.192639\tres = 1.668E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.194389\tres = 1.565E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.196032\tres = 1.468E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.197575\tres = 1.375E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.199023\tres = 1.290E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.200381\tres = 1.209E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.201654\tres = 1.133E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.202848\tres = 1.061E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.203968\tres = 9.941E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.205016\tres = 9.308E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.205999\tres = 8.707E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.206921\tres = 8.159E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.207783\tres = 7.635E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.208590\tres = 7.145E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.209345\tres = 6.684E-04\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.210053\tres = 6.250E-04\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.210714\tres = 5.848E-04\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.211333\tres = 5.466E-04\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.211913\tres = 5.115E-04\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.212453\tres = 4.784E-04\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.212960\tres = 4.462E-04\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.213433\tres = 4.175E-04\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.213875\tres = 3.901E-04\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.214288\tres = 3.643E-04\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.214674\tres = 3.404E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.215036\tres = 3.181E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.215372\tres = 2.972E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.215686\tres = 2.772E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.215980\tres = 2.586E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.216255\tres = 2.416E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.216511\tres = 2.258E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.216749\tres = 2.105E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.216973\tres = 1.963E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.217181\tres = 1.834E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.217375\tres = 1.710E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.217556\tres = 1.595E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.217725\tres = 1.488E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.217883\tres = 1.389E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.218030\tres = 1.296E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.218167\tres = 1.208E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.218294\tres = 1.128E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.218414\tres = 1.041E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.218525\tres = 9.793E-05\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.218628\tres = 9.128E-05\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.218725\tres = 8.502E-05\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.218815\tres = 7.903E-05\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.218899\tres = 7.376E-05\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.218976\tres = 6.888E-05\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.219049\tres = 6.362E-05\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.219117\tres = 5.979E-05\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.219180\tres = 5.591E-05\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.219239\tres = 5.181E-05\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.219294\tres = 4.824E-05\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.219345\tres = 4.496E-05\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.219392\tres = 4.197E-05\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.219437\tres = 3.871E-05\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.219478\tres = 3.666E-05\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.219516\tres = 3.373E-05\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.219552\tres = 3.112E-05\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.219585\tres = 2.941E-05\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.219616\tres = 2.711E-05\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.219645\tres = 2.542E-05\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.219671\tres = 2.369E-05\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.219696\tres = 2.207E-05\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.219720\tres = 2.049E-05\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.219741\tres = 1.903E-05\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.219761\tres = 1.770E-05\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.219780\tres = 1.639E-05\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.219797\tres = 1.533E-05\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.219813\tres = 1.396E-05\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.219828\tres = 1.319E-05\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.219842\tres = 1.216E-05\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.219854\tres = 1.152E-05\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.219867\tres = 1.049E-05\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.219878\tres = 1.005E-05\n" - ] - } - ], + "outputs": [], "source": [ "# Generate tracks for OpenMOC\n", - "openmoc_geometry.initializeFlatSourceRegions()\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", @@ -1400,21 +815,11 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.223729\n", - "openmoc keff = 1.219878\n", - "bias [pcm]: -385.1\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -1435,7 +840,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1475,254 +880,13 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ NORMAL ] Importing ray tracing data from file...\n", - "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.495594\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.557313\tres = 5.044E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.518115\tres = 1.245E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.509017\tres = 7.033E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.496280\tres = 1.756E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.488358\tres = 2.502E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.482660\tres = 1.596E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.479524\tres = 1.167E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.478569\tres = 6.497E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.479591\tres = 1.992E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.482389\tres = 2.136E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.486774\tres = 5.834E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.492576\tres = 9.091E-03\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.499632\tres = 1.192E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.507800\tres = 1.433E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.516944\tres = 1.635E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.526942\tres = 1.801E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.537682\tres = 1.934E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.549061\tres = 2.038E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.560985\tres = 2.116E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.573368\tres = 2.172E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.586133\tres = 2.207E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.599208\tres = 2.226E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.612528\tres = 2.231E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.626035\tres = 2.223E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.639676\tres = 2.205E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.653402\tres = 2.179E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.667171\tres = 2.146E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.680942\tres = 2.107E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.694681\tres = 2.064E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.708356\tres = 2.018E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.721940\tres = 1.969E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.735407\tres = 1.918E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.748734\tres = 1.865E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.761904\tres = 1.812E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.774897\tres = 1.759E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.787700\tres = 1.705E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.800299\tres = 1.652E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.812684\tres = 1.599E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.824844\tres = 1.548E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.836773\tres = 1.496E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.848462\tres = 1.446E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.859908\tres = 1.397E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.871105\tres = 1.349E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.882052\tres = 1.302E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.892745\tres = 1.257E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.903184\tres = 1.212E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.913368\tres = 1.169E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.923296\tres = 1.128E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.932972\tres = 1.087E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.942394\tres = 1.048E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.951567\tres = 1.010E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.960491\tres = 9.733E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.969168\tres = 9.378E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.977604\tres = 9.035E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 0.985801\tres = 8.704E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 0.993762\tres = 8.384E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.001491\tres = 8.076E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.008992\tres = 7.778E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.016271\tres = 7.490E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.023329\tres = 7.214E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.030174\tres = 6.945E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.036809\tres = 6.689E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.043238\tres = 6.441E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.049466\tres = 6.200E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.055498\tres = 5.970E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.061338\tres = 5.748E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.066993\tres = 5.533E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.072465\tres = 5.328E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.077760\tres = 5.128E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.082882\tres = 4.937E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.087836\tres = 4.753E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.092627\tres = 4.575E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.097260\tres = 4.404E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.101737\tres = 4.240E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.106065\tres = 4.080E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.110247\tres = 3.929E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.114288\tres = 3.781E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.118191\tres = 3.639E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.121961\tres = 3.502E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.125602\tres = 3.372E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.129119\tres = 3.245E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.132513\tres = 3.124E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.135790\tres = 3.006E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.138954\tres = 2.894E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.142008\tres = 2.786E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.144954\tres = 2.681E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.147797\tres = 2.580E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.150539\tres = 2.483E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.153185\tres = 2.389E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.155738\tres = 2.300E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.158201\tres = 2.214E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.160575\tres = 2.130E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.162865\tres = 2.050E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.165074\tres = 1.973E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.167202\tres = 1.899E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.169255\tres = 1.827E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.171235\tres = 1.759E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.173142\tres = 1.693E-03\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.174981\tres = 1.629E-03\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.176753\tres = 1.568E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.178461\tres = 1.508E-03\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.180108\tres = 1.452E-03\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.181694\tres = 1.397E-03\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.183223\tres = 1.344E-03\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.184696\tres = 1.294E-03\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.186115\tres = 1.245E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.187482\tres = 1.198E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.188800\tres = 1.152E-03\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.190069\tres = 1.110E-03\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.191290\tres = 1.067E-03\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.192469\tres = 1.026E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.193602\tres = 9.889E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.194694\tres = 9.503E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.195747\tres = 9.154E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.196759\tres = 8.808E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.197735\tres = 8.464E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.198674\tres = 8.155E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.199579\tres = 7.845E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.200450\tres = 7.550E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.201289\tres = 7.263E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.202097\tres = 6.984E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.202875\tres = 6.728E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.203623\tres = 6.470E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.204344\tres = 6.220E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.205037\tres = 5.994E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.205706\tres = 5.757E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.206349\tres = 5.551E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.206968\tres = 5.328E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.207565\tres = 5.132E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.208138\tres = 4.944E-04\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.208690\tres = 4.749E-04\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.209221\tres = 4.566E-04\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.209733\tres = 4.395E-04\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.210226\tres = 4.232E-04\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.210700\tres = 4.076E-04\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.211156\tres = 3.916E-04\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.211595\tres = 3.767E-04\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.212017\tres = 3.628E-04\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.212423\tres = 3.486E-04\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.212814\tres = 3.350E-04\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.213191\tres = 3.227E-04\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.213554\tres = 3.107E-04\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.213902\tres = 2.989E-04\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.214238\tres = 2.869E-04\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.214561\tres = 2.770E-04\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.214872\tres = 2.659E-04\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.215171\tres = 2.558E-04\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.215458\tres = 2.458E-04\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.215735\tres = 2.361E-04\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.216002\tres = 2.281E-04\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.216258\tres = 2.194E-04\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.216505\tres = 2.110E-04\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.216742\tres = 2.028E-04\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.216970\tres = 1.952E-04\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.217191\tres = 1.876E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.217402\tres = 1.809E-04\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.217605\tres = 1.734E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.217800\tres = 1.673E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.217988\tres = 1.602E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.218169\tres = 1.546E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.218344\tres = 1.485E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.218511\tres = 1.429E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.218672\tres = 1.378E-04\n", - "[ NORMAL ] Iteration 164:\tk_eff = 1.218828\tres = 1.323E-04\n", - "[ NORMAL ] Iteration 165:\tk_eff = 1.218977\tres = 1.273E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.219121\tres = 1.225E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.219259\tres = 1.182E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.219392\tres = 1.131E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.219520\tres = 1.090E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.219643\tres = 1.050E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.219761\tres = 1.008E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.219876\tres = 9.712E-05\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.219985\tres = 9.360E-05\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.220090\tres = 8.946E-05\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.220191\tres = 8.611E-05\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.220288\tres = 8.299E-05\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.220382\tres = 7.977E-05\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.220472\tres = 7.682E-05\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.220560\tres = 7.421E-05\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.220643\tres = 7.140E-05\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.220724\tres = 6.824E-05\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.220801\tres = 6.591E-05\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.220875\tres = 6.353E-05\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.220946\tres = 6.092E-05\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.221015\tres = 5.826E-05\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.221081\tres = 5.613E-05\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.221145\tres = 5.433E-05\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.221206\tres = 5.230E-05\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.221266\tres = 5.025E-05\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.221322\tres = 4.833E-05\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.221376\tres = 4.642E-05\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.221429\tres = 4.437E-05\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.221479\tres = 4.286E-05\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.221528\tres = 4.123E-05\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.221574\tres = 3.993E-05\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.221619\tres = 3.785E-05\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.221662\tres = 3.669E-05\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.221704\tres = 3.547E-05\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.221743\tres = 3.387E-05\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.221781\tres = 3.243E-05\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.221818\tres = 3.127E-05\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.221854\tres = 3.018E-05\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.221888\tres = 2.924E-05\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.221921\tres = 2.786E-05\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.221952\tres = 2.677E-05\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.221982\tres = 2.579E-05\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.222011\tres = 2.468E-05\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.222039\tres = 2.377E-05\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.222066\tres = 2.288E-05\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.222093\tres = 2.204E-05\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.222118\tres = 2.117E-05\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.222141\tres = 2.044E-05\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.222165\tres = 1.954E-05\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.222187\tres = 1.899E-05\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.222208\tres = 1.797E-05\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.222229\tres = 1.745E-05\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.222248\tres = 1.686E-05\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.222267\tres = 1.623E-05\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.222286\tres = 1.568E-05\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.222304\tres = 1.508E-05\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.222320\tres = 1.458E-05\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.222337\tres = 1.387E-05\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.222353\tres = 1.337E-05\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.222368\tres = 1.286E-05\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.222382\tres = 1.230E-05\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.222396\tres = 1.201E-05\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.222409\tres = 1.131E-05\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.222422\tres = 1.082E-05\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.222435\tres = 1.051E-05\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.222447\tres = 1.015E-05\n" - ] - } - ], + "outputs": [], "source": [ "# Generate tracks for OpenMOC\n", - "openmoc_geometry.initializeFlatSourceRegions()\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", @@ -1733,21 +897,11 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.223729\n", - "openmoc keff = 1.222447\n", - "bias [pcm]: -128.2\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -1790,7 +944,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1816,32 +970,11 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(9.9999999999999994e-12, 20.0)" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\nHuXpp5/kt99+a/F9NifnkwJAYSFcc00NDz9cxbhxhVxwQRFr1qS7VMaYWCrPG02wtFO7HjNY2onK\n82K3EoBIZX7AAQczZ84bfPLJx5HZUd09mngc22effcLo0SMZPXokH3zwHj169OT7778DoHfvTZg8\n+QHuuOMefvllZeQ1m2++BQDffruMnXd2Zkrt1q07paWl/PbbrzHLC7DLLruSl5dHUVERW265FStW\n/NBi+ZrToU6bd989wJtvrueGGwoZOrSUu+6qYt99A+kuljEmSuWo0U128yRb796bUFVVyfPPP8O5\n546OzJoaCASorKzE5/OxdGnj+XU8Hg/BYF1dstNOuzB58gOR37t06cadd06gT59+dO3qdCF99NF/\n653xe73OOfoWW/Tl008/pl+/bfjll5WsW7eWzp03oKCggFWrfqFXr41ZsmQxffr0BZwWDTitjWXL\nlrLpppu36TPoUEkBoFMnmDixmjff9DNmTBGHHurnmmuqKSlJd8mMMekSPWi8//4H8vrr/8emm27G\nDz98j8fj4fjjT6o3S2n06wB23rk/Y8eOYcSIs2POjiqyLX/961huvvn6yDTYPXr04Kabbg0fKbLv\naaeNYPz4G3j77Teprq7i0kuvIi8vj1NO+TOXXDKGXr02pnPnzpH9169fz0UXjWLt2rWMGHFOveda\n9Vlk4iypItITmKmqA5vbr62zpP7+O1xxRRGffJLHPfdUMmBA8zc2ZNIshxYrs2KlOp7Fyq5YyYr3\n8cfzeeedN7n44ksTipVVs6SKiAe4BFiW7Fgbbgj33VfFFVdUc9ppxYwfX0CMRZGMMSYjRbdw2kvG\nJQXgXOBJIGVzn/7xj37eequChQvzOOSQEr78MhM/FmOMqa9//wFcdNEl7XrMlNZ+IrK7iLzlPvaK\nyP0i8r6IvCUiW7m7HQCMBAaJyHGpKlvPniGeeKKSs86q4dhji7nnnnwCNgZtjOlgUpYURORS4EGg\n0N10NFCgqnsClwO3A6jqcap6HjBPVV9IVfnAmVzvlFP8vPZaBbNn+zj66GKWLrVpMowxHUcqWwpf\nAcdSN8y+N/AagKrOA3aL3llV/5zCstWzxRYhXnyxksMO83PooSVMm5Zv02QYYzqElCUFVZ0ORK92\nUAaUR/0eEJGM6cz3euG882p5+eVKnnwyn5NPLubHH9NdKmOMSa503qdQjpMYwryqmtBk1z6fl86d\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create a loglog plot of the U-235 continuous-energy fission cross section \n", "plt.loglog(u235.energy, fission.sigma, color='b', linewidth=1)\n", @@ -1877,22 +1010,11 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n", - "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", - " return c.reshape(shape_out)\n" - ] - } - ], + "outputs": [], "source": [ "# Construct a Pandas DataFrame for the microscopic nu-scattering matrix\n", "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", @@ -1920,22 +1042,11 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAADSCAYAAABAbduaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGuRJREFUeJzt3Xm4HFWZx/HvDRN2ggqIIrvCqyACArIOCYJsigIyMgwC\nCaBBHh1mQLYgGLYBAWdcmIiCQEAGVGRHEYUQFlkDDMjyYxNG1gFEGFZJ0vPHOZ00l7t0bld1btX9\nfZ4nT7qqq0+d6vvW26dOVZ3qaTQamJlZ/Yya3xUwM7NyOMGbmdWUE7yZWU05wZuZ1ZQTvJlZTTnB\nm5nV1N/N7wqUKSJmA0tL+kvLvPHAFyXtMMDnVgBuAdZq/WyvZQ4BdgN6gAWAq4BJkt4eYl2PAu6W\ndFlEbADsLelr81jGROA9kr4zlDr0Kmtl4DHgBklje713FrAXvb7bPsrodzsiYj3gMEn/0GldR4qI\n2A/YDxgNNIA7gSMk/XmQz20NfEfSui3z1gJ+CIwBZgETJd3Zx2c3Av4NWIrUIPwz8E1J9w9xG94R\nExFxNfCPA8VRH2UsB/xS0qZDqUMf5V0HbA58WNKfWuaPBaYBB0v67iBl9LsdEXElcJCkB4uo77wY\niS34AS/8j4g9gRuADwywzD8AOwIbSVoHWB/4KDC5g3p9mrTjAqwJLD+vBUj6cRHJvcWbwGoRsWJz\nRkQsBmzGIN9j1u92SJrh5N6+iDgF2An4rKQ1gbWA3wE3R8SH+vnMIhFxHPBzUiOkOX9R4GrgREmf\nBI4Fzu/j8wsBVwAHSlpb0lrAecBvIqJniJvSOya2IjWS2ibp6aKSe9YAngC+3Gv+XsBztBfr/W6H\npM/Oj+QONW/BZ72/9H6DKbcMvgBsB9w3QJkfIO0wiwJvSXorIr4OLJPLWZzUOtoEmAlcIumIiFgd\n+E9gMWA54G5gV2BfYD3gpIhYBDgaWDIifippn4jYATgCWBB4ndSCuiUiJgMb5/rcAzxCalV/IyIe\nB84CtgRWBH4u6dBcv8OAvYH/I/2YfUHSKn1s5yxSctgdOCHP2xm4BDgolzUK+A9gQ2CJ/P3uC/wP\ncAwwJiJ+CpwD/AB4NW//IcB3gU8AvwfukHRoRGyV6/1JSc8P8DcYMSJieWAisLyklwEkNYBz85HQ\n4cDX+/jo1sAipL/1Mb3mPyzpqjx9OfAn3m1RYEnS35W83vMi4mVS7ng7IvYGDiTFygukpPg0g8fE\nmS3ruTYits+vf0iK19HABZJOyEeTNwD3Ayvndfxe0uJ5H1iZtA+sBDwP7CrpmYj4FDAll/Vofv9A\nSdP72NbzSHF+LMz5EdyUFJs9ed7nSN/1gsD7gamSjspHtM3t+CxwI6kH4BPAJOB7wBeBjwNH5fkA\ndwDHS/pZH/UpxEhowU+LiLua/0jJs89f5Nwy+KKkBwYpcyrwV+DZiPhDbl2tKOmO/P4xpCD4KLAO\nsGk+3NsXOEvSJsBHgFWA7SX9J+mPfXD+Yx9F6hrZJyJWA44HtsutrYnARTkAAVYA1pW0R55utPy/\nmKTNST8034iIlSJiG9IOsr6k9YDF+/s+snN5Z8tmT+DslukNgQ9I2ii3LM8hdb08CRzZ3A7STrIm\n6TB2HeBvMCdR7Q7sGRFfAM4EdnNyf4cNgQeayb2Xa0hHVO8i6VJJBwEv9XprdeC5iDgjIm4ntebf\n1diT9BLph/iqiHg0Is6JiAnANZLejoi1gROBbSStDVxGaoh8isFjYm9Je+dVbSHpKVKsnSlp/bzN\nn8lHywAfAo6RFMCzvDNmNwN2kfSxvK0TI2IB4FekLqy1SY2Ldeg/1u8C/pZ/FCA1ZC4jNdCanzkQ\n2FPSBqSG1eER8T5JE1q248m8/L2S1pB0SZ5uSJoK3AyclOszvczkDiOjBT+uVx/8XsAunRQo6RVg\nm4hYBdgCGAdcGRFTJB1GajX/a05eb+f3iYjrga0j4mAgSK34xftYRetRxmeAD5JaB815s0g/EA3g\nFkmz+6nqpbm+T0fE/5L6UbcHfpG3AdIRxZYDbOudETE7Ij5Jah0tIem+Zl0k3RwRL0bE14BV87Y2\ny+59tPTnvvqLJT0bEV8h7VBHSrqxv/qMYKP7mb8Q7XUh9C5re9K+cXtEfB74dUSs2PsckqT/iIif\nkP6umwOHAofmRLglcFVOzkj6fvNzEXFkmzHRXH4xYCzw3og4Ns9eDFgbuJ2UaG/uZ3umSXo1v74L\neB+pC6sh6be5btdFxB8H+V7OITVmbiM1ZP4V+GZLnXcAdoiI3YGP5fmLAX2dP7ihn3XsRzrafh34\n5CD16dhISPC9zQmwiLibuTvHPn2dZOpLRBwKXC/pZtKh7ZkRsSnpROthpGBsXf5DpP7sKaSunZ8D\nV5Ja34P1P44itZj+saW8FYEnSX2yrw3w2TdaXjfyut7mnUdu/f04tGq24p8n7QRz5EPS7wGnkLpu\nHuTdfZlNr/YzH9Lh67Oklpu90y2kcyHLSnqu13tbADflrpoz8rxGPtrrz1PAg5JuB8gn9s8gJWM1\nF8oxvYmkk0nxemVETALuJTU83vFjkPvsVwJWo/2YaGqeI9hY0pu5vKVJMbwMqSu0v1h9s+V1M85n\n8u59a9YA62+QumlmRMS/A2NaGjKNfMR8N+mo4AbSkeaOfayjqb9Y/wDpR3k06aikr66xwoyELpp+\nSVpH0rr5X1vJPVsYODEHYNMawIz8+vfAXhHRk4P+V6TWz9akw8xf5uU2ZG5gzyR160DacZottmmk\nVn8ARMS2pEBbmL7PLwz0g9Eg7ahfjIgxed4+DN4C/BnwJdL5gv/qtb6tgMsl/Zi0/Tv12qb+Wp5z\nRMSGwD+TzkO8JyL+ebDPjCS5hfwD4Px8ngiA3F2yE+kKmRktsTxYy/A3wMr5qIyI2Jz0Q9872TwP\nHJHfb/oQqdV6Dyk2t4qI5gUJXwNOZt5iYhawYD6ivIW553aWJCXSzw+yLb014/8B4K3cJUk+4liL\nAWJd0jN5u87knQ2ZHtKP1hKkI8wrSUclC7Vs1yzm7r99iojRpJPZR5K6cc+PiFIb2XVP8H39MRv9\nzG/ns03HkpL4jRHxQESIlMC/lN8/mtTH/N+kS9mulHQx6YTLxRHxB1I/+69IXS2QTnSdEhF7kA5F\nPxoRv5J0H/BV4IJ8xHEssIOk1/vYlkG3TdI04HTS1Re3ky6Te32g70DS06QTXA9J+muvdZ0GjM3n\nN35NurJj5bzMH5rb0U/dGvmE9HnA1/MONh44KvfvWiZpEumH9tKIuDciHiJdebVxX91efZjz3eej\ngB2BKRFxL+lk986S/tZrnQ/l5Y6NiD9FxH3ABcBXJD0s6Y/AwaQ++rtJDZiJtB8TABeR9qM1gH8C\nNoqIe4BbgfMlNa/ueVfstPz/rn1A0izSic3JEXEnqf/8WfqP9aZzSP3rrQ2ZBinxXwE8EBE3kI44\n72Du/nsRcENErNlHmc2jiuOBpyWdKel04EXguEHq05EeDxc8suRD+U0k/TBPHwhsIGm3+Vszs2JF\nxEnAKZL+N9K9LXcDq7Scf6q9kdgHP9I9RDpJ9lXmXv/71flbJbNSPAFcExFvk1rQ+4yk5A5uwZuZ\n1Vbd++DNzEYsJ3gzs5oaNn3wPTPm+WaNfq263kCjDMybx6b3dVLcqqgxdt7GPCnK3/O7wmL7xp4+\nh50Zol8UWJbNT43G5D5j2y14M7OacoI3M6spJ3gzs5pygjczq6lST7JGGit8Cmn847eAfSU9WuY6\nzcrmuLaqKLsFvyNpIKFNSKMsDvjYK7OKcFxbJZSd4JtD6CLpVtKj7cyqznFtlVB2gh/D3IH+AWbl\nw1uzKnNcWyWUHZSv0PI8R2DUAIP2m1WF49oqoewEfxPp0WBExEakMZXNqs5xbZVQ9lAFF5MenHtT\nnp4w0MJmFeG4tkooNcHnh05/rcx1mHWb49qqwieGzMxqygnezKymnODNzGrKCd7MrKac4M3MamrY\nPNGJV4sralFeL6ysjcdeW1hZN0//dGFlWXXc2HPT4Au16dscXVhZRxc6hM4rgy9iXecWvJlZTTnB\nm5nVlBO8mVlNOcGbmdWUE7yZWU11LcFHxIYRMa1b6zPrBse1DWdduUwyIg4BvkyhF0OazV+Oaxvu\nutWCfwTYGejp0vrMusFxbcNaVxK8pIuAmd1Yl1m3OK5tuPNJVjOzmnKCNzOrqW4n+EaX12fWDY5r\nG5a6NtiYpMeBTbq1PrNucFzbcOYuGjOzmnKCNzOrKSd4M7OacoI3M6spJ3gzs5oaPo/sK9Afp29Q\nWFnHjv1mYWXNGrtAYWXdduvYwsoCir0f0/d2luZovl1YWcdxUGFlfcuP/xuW3II3M6spJ3gzs5py\ngjczqykneDOzmnKCNzOrqdKuoomI0cCZwErAQsBxki4va31m3eLYtqooswW/O/C8pM2BbYFTS1yX\nWTc5tq0SyrwO/pfAhfn1KHx1tNWHY9sqobQEL+k1gIhYgrRDHFHWusy6ybFtVVHqSdaIWAG4FjhH\n0gVlrsusmxzbVgVlnmRdFrga2F/StLLWY9Ztjm2rijL74CcBSwJHRcRRed52kt4scZ1m3eDYtkoo\nsw/+AOCAsso3m18c21YVvtHJzKymnODNzGrKCd7MrKac4M3Maqqtk6wRMYZ01UBPc56k/ymrUmbd\n4ti2Ohs0wUfEJOAw4C9Ao+WtVcqq1HBy5PRTiivse8UVdcnF2xRXGPBvTCqsrEdmfaSwsv7y5PsL\nKwtGv2NqpMf2twp8/N8tBT7+byPuKKysZOSOA9dOC35f4MOSni+7MmZd5ti2WmunD/4J4KWyK2I2\nHzi2rdbaacE/AtwYEdcCb+V5DUnHlFcts65wbFuttZPgn8r/mnr6W9CsYhzbVmuDJnhJk7tQD7Ou\nc2xb3fWb4CNioFHyGpI+PVjhEbEAcDqwOukqhf0k3TfPtTQrUKex7bi2qhioBX/0AO81Bniv1eeA\n2ZI2i4ixwPHAju1Wzqwknca249oqod8EL+m6TguXdGlEXJEnV8ZXLNgw0GlsO66tKsocDx4ASbMi\n4mxgJ2CXstdn1g2Oa6uCroxFI2k8qb/y9IhYpBvrNCub49qGu3bHolkW2Ax4G7hBUluHpBGxB7C8\npBOAN4DZ+Z/ZsDCU2HZcW1UM2oKPiC8D/w38EzABuC8iPttm+RcC60TEdOAq4ABJbw3yGbOu6CC2\nHddWCe204I8E1pP0FEBErARcAVw52AclvQHs2lENzcozpNh2XFtVtNMH/wrwTHNC0hPMva3brMoc\n21Zr7bTg7wIui4jTgVnAbsBTEfElAEm/KLF+ZmVybFuttZPgFwReYO6NHG+Txs/eLk97J7Cqcmxb\nrbUzFs34LtTDrOsc21Z37TzR6U99zG5IWrWE+ph1jWPb6q6dLpotWl6PJh3OLlxOdcy6yrFttdbT\naLQ7bthcETFD0nqFVmR62wOYGcC4yYUWN/vFgcbfmjcnvu9fCivrtxT37Nnr2HbQ8d5Lie2eySMg\ntou7kbex9WGFlQXQ81iBX/8jk4srq0CNxuQ+Y7udLpqxzB1hrwf4OG7lWA04tq3u2umiOZq5O0GD\ndNXBXqXVyKx7HNtWa+1cRTMOICLGAAu0Ow6N2XDn2La6a6eL5sPA+cBHgJ6IeBzYVdJD5VbNrFyO\nbau7doYq+DFwkqT3SXovcALwk3ZXEBHvj4g/R8TqQ62kWUkc21Zr7ST4pSVd2JzIt28v1U7hETGa\ntBO9NrTqmZXKsW211k6Cfysi5lw2FhHr035Qnwz8iJYBncyGEce21Vo7V9EcAFwYEc0TUEvRxlCp\nETEeeF7S1RFxOOkyNLPhxLFttdZOgl8KCNKjyUYBavPhBhOARkRsBawDTI2IL0h6bsi1NSuWY9tq\nrZ0Ef7KkNYA/zkvBksY2X0fENGCidwAbZhzbVmvtJPhHI+JM4FbgzTyvIemc8qpl1hWObau1dhL8\ni6Q+xo3ydA/prr+2dwJJWwy+lFnXObat1jwevI1Yjm2ruwETfETsDzwj6eKIuA1YBpgJbCfpkW5U\n0KwMjm0bCfq9Dj5f/rUzcH+etTAwDvg+cHjpNTMriWPbRoqBbnTaC9hJkvL0rPzU+R8BG5deM7Py\nOLZtRBgowc+S9H8t08cDSJoFtHOtsNlw5di2EWGgBN+Th1EFoDlmR0QsCX76klWaY9tGhIFOsp5H\nukNvvKSXASJiCeCs/J7NT3dMLrS4UUuNGXyhNjVOO6iwsmKiBl+obds2Xzi2C/dGYSX1XN32gJ5t\naXynuJEkeh4u8Pf/jMnFldWPgRL8d4ApwNMRcT+pZbMGcC7w76XXzKw8jm0bEfpN8JJmAl+NiGOA\nT+XZM/LJKLPKcmzbSNHOjU5PAk92oS5mXeXYtrprZzx4MzOroHbGohmyiLgTeDlPPiZpnzLXZ9Yt\njm2rgtISfEQsDB6MyerHsW1VUWYLfm1g0Yj4bV7PJEm3lrg+s25xbFsllNkH/xrpgQrbAPsB50WE\n+/ytDhzbVgllBuVD5JtGJD1MGnv7gyWuz6xbHNtWCWUm+AnAdwEiYjlgDH4CvdWDY9sqocw++J8C\nZ0XE9Xl6gqTZJa7PrFsc21YJpSX4fLfgHmWVbza/OLatKnxiyMysppzgzcxqygnezKymnODNzGrK\nCd7MrKac4M3MaqrU0SStRK8WW9zCfx1fWFk93zuwsLIaHyvucWs8UFxRVqanCi2t59ALCyurManA\nx/9tW/7jf92CNzOrKSd4M7OacoI3M6spJ3gzs5oq+5F9hwM7AKOBUyVNLXN9Zt3i2LYqKK0FHxHj\ngI0lbQKMA1Yta11m3eTYtqooswW/NXBvRFxCGi/74BLXZdZNjm2rhDIT/DLACsDnSC2cy4CPlrg+\ns25xbFsllHmS9QXgakkzJT0EvBkRS5e4PrNucWxbJZSZ4G8EtoU5jzVbjPTsSrOqc2xbJZSW4CVd\nCdwVEbeRDmH3l1T+vblmJXNsW1WUepmkpEPLLN9sfnFsWxX4Riczs5pygjczqykneDOzmnKCNzOr\nKSd4M7OacoI3M6upnkZjeFy+2zOd4VGRkWrh4oq6ZsNNCivr+p6bCytrcqNR4PP/2tfTM9mxXRtH\nFFbSr1mwsLK26ye23YI3M6spJ3gzs5pygjczqykneDOzmir7kX17AePz5CLA2sCykl4pc71mZXJc\nW1WUPdjYVGAqQEScCpzhncCqznFtVdGVLpqIWB9YU9IZ3VifWTc4rm2461Yf/CRgcpfWZdYtjmsb\n1kpP8BHxHmB1SdPLXpdZtziurQq60YLfHLimC+sx6ybHtQ173UjwqwOPdmE9Zt3kuLZhr9SraAAk\nnVL2Osy6zXFtVeAbnczMasoJ3sysppzgzcxqygnezKymnODNzGrKCd7MrKaGzSP7zMysWG7Bm5nV\nlBO8mVlNOcGbmdWUE7yZWU05wZuZ1ZQTvJlZTZU+mmQRImIUMAX4BPAWsK+kjoZqjYgNgRMlbdFB\nGaOBM4GVgIWA4yRdPsSyFgBOJw1D2wD2k3TfUOuWy3w/MAPYUtJDHZRzJ/BynnxM0j4dlHU4sAMw\nGjg1P990qGVV/uHXju0h16+2sV1kXFelBb8jsKCkTYDDgO92UlhEHEIKuIU6rNfuwPOSNge2BU7t\noKzPAbMlbQZ8Czi+k4rlHfTHwGsdlrMwgKQt8r9OdoBxwMb57zgOWLWTukma2qwXcAfwjSol98yx\nPY/qHttFxnVVEvymwFUAkm4F1u+wvEeAnYGeDsv5JXBUfj0KmDnUgiRdCkzMkysDL3VUMzgZ+BHw\nTIflrA0sGhG/jYhrcutwqLYG7o2IS4DLgcs6rBtQ+YdfO7bn3YiI7SLiuioJfgzQ+gs2Kx/aDomk\ni+ggYFvKeU3SqxGxBGmHOKLD8mZFxNnAD4D/Gmo5ETGe1Pq6Os/qZGd/DThZ0jbAfsB5HXz3ywDr\nAbs0y+qgXq2q/PBrx/Y8GGGx3XFcVyXBvwIs0TI9StLs+VWZVhGxAnAtcI6kCzotT9J4Ul/l6RGx\nyBCLmQB8JiKmAesAUyNi2SGW9RA5WCU9DLwIfHCIZb0AXC1pZu43fTMilh5iWUAtHn7t2J43IyK2\ni4rrqiT4m4DtASJiI+Ce+VudJAfW1cAhks7usKw98kkagDeA2fnfPJM0VtK43Id3N7CnpOeGWLUJ\n5H7hiFiO1OIc6qHxjaT+3GZZi5F2qk5U/eHXju15MIJiu5C4rsRVNMDFpF/tm/L0hILK7XSktUnA\nksBREdHsr9xO0ptDKOtC4OyImE46C3+ApLc6rF8RfgqcFRHX5+kJQ21hSroyIjaPiNtIjYv9JXX6\nN6j6w68d2/PPcI7tQuLao0mamdVUVbpozMxsHjnBm5nVlBO8mVlNOcGbmdWUE7yZWU05wZuZ1VRV\nroOvnIj4O+BQ0qBNDWABYKqkE7pcj9WAU4A1gDcBAd+U9Pggnzsa+J2kG0uvpFWG47pa3IIvzxTS\nwFEbSVoT2ADYMiL271YF8t2I1wIXSFpN0lqkG2tuauM26s1JO69ZK8d1hfhGpxJExPKkFsVykl5u\nmR/AGpIuzgMvLQV8GDiYdFvz90nDvL4ATJT0aERcB3xb0vSIWBmYJmmV/Pm/AeuSbrE+VtLPetVj\nMrCipL17zf85cK+k4yJitqRRef54YCxp55lCum17p07H7rZ6cFxXj1vw5fgUcH/rTgCg5OI82SCN\nircG8DvgfNLtzesAp+Xp5nL9/QovB2wIfBo4pY9Bl9YHbuvjc9eTWl69NYCGpHNJ41DvOxJ2Amub\n47pinODLMyd4I2KXiLgrIu7JY1U03Zr/Xx14SdIMAEkXAh+JiDGDlH+6pNmSniINWrVZH8uM7uOz\nC9H/ztXTz2szcFxXihN8OWYAa+SxtJF0oaR1SY/zWqZluebATX39HXpIfYUN5gZk76Ce1fJ6FPB2\nr/dvBTbuo+yNgdv7mL9gr2n331krx3XFOMGXQNITwLmksaqXhDnPpdyBuQ9jaG1FCFgqP8GFiPgS\n8Likl0j9lh/Py+3Y8pkeYLe8/EqkQ9obelVlCrBZROzenBERe5J2hNPyrBciYs2I6AE+z9zgn0nf\nrSQboRzX1eMEX579SYeX0yLiLuBe0omj7fL7c/og89CpuwKnRsS9+bO75uVOAvaPiBnAwswN1Aaw\neETcAVwBfCXvOHNI+gvw98COEfFgRIgU7JtJao5VfVj+/B+AB1s+fhVwWh6j3KzJcV0hvoqmoiLi\nLOA3kn4xv+tiVhTHdbHcgjczqym34M3MasoteDOzmnKCNzOrKSd4M7OacoI3M6spJ3gzs5pygjcz\nq6n/BzrS9bjl9QXqAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", @@ -1956,6 +1067,15 @@ "# Show the plot on screen\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -1974,7 +1094,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb index 119fd0b564..a541efbf0b 100644 --- a/docs/source/pythonapi/examples/mgxs-part-iii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-iii.ipynb @@ -1452,7 +1452,6 @@ ], "source": [ "# Generate tracks for OpenMOC\n", - "openmoc_geometry.initializeFlatSourceRegions()\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=32, spacing=0.1)\n", "track_generator.generateTracks()\n", "\n", @@ -1638,7 +1637,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/openmc/tallies.py b/openmc/tallies.py index 980c5fa2b5..9b75f35d48 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1003,16 +1003,17 @@ class Tally(object): A list of filter type strings (e.g., ['mesh', 'energy']; default is []) filter_bins : list of Iterables - A list of the filter bins corresponding to the filter_types - parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin - in the list is the integer ID for 'material', 'surface', 'cell', - 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of - floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond to the - filter_types parameter. + A list of tuples of filter bins corresponding to the filter_types + parameter (e.g., [(1,), ((0., 0.625e-6),)]; default is []). Each + tuple contains bins for the corresponding filter type in the filters + parameter. Each bins is the integer ID for 'material', 'surface', + 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer + for the cell instance ID for 'distribcell' Filters. Each bin is a + 2-tuple of floats for 'energy' and 'energyout' filters corresponding + to the energy boundaries of the bin of interest. The bin is an + (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell + of interest. The order of the bins in the list must correspond to + the filter_types parameter. Returns ------- @@ -1174,16 +1175,17 @@ class Tally(object): A list of filter type strings (e.g., ['mesh', 'energy']; default is []) filter_bins : list of Iterables - A list of the filter bins corresponding to the filter_types - parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin - in the list is the integer ID for 'material', 'surface', 'cell', - 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of - floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond to the - filter_types parameter. + A list of tuples of filter bins corresponding to the filter_types + parameter (e.g., [(1,), ((0., 0.625e-6),)]; default is []). Each + tuple contains bins for the corresponding filter type in the filters + parameter. Each bins is the integer ID for 'material', 'surface', + 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer + for the cell instance ID for 'distribcell' Filters. Each bin is a + 2-tuple of floats for 'energy' and 'energyout' filters corresponding + to the energy boundaries of the bin of interest. The bin is an + (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell + of interest. The order of the bins in the list must correspond to + the filter_types parameter. nuclides : list of str A list of nuclide name strings (e.g., ['U-235', 'U-238']; default is []) @@ -2641,16 +2643,17 @@ class Tally(object): A list of filter type strings (e.g., ['mesh', 'energy']; default is []) filter_bins : list of Iterables - A list of the filter bins corresponding to the filter_types - parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin - in the list is the integer ID for 'material', 'surface', 'cell', - 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of - floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond to the - filter_types parameter. + A list of tuples of filter bins corresponding to the filter_types + parameter (e.g., [(1,), ((0., 0.625e-6),)]; default is []). Each + tuple contains bins to slice for the corresponding filter type in + the filters parameter. Each bins is the integer ID for 'material', + 'surface', 'cell', 'cellborn', and 'universe' Filters. Each bin is + an integer for the cell instance ID for 'distribcell' Filters. Each + bin is a 2-tuple of floats for 'energy' and 'energyout' filters + corresponding to the energy boundaries of the bin of interest. The + bin is an (x,y,z) 3-tuple for 'mesh' filters corresponding to the + mesh cell of interest. The order of the bins in the list must + correspond to the filter_types parameter. nuclides : list of str A list of nuclide name strings (e.g., ['U-235', 'U-238']; default is []) @@ -2736,6 +2739,7 @@ class Tally(object): for filter_bin in filter_bins[i]: bin_index = find_filter.get_bin_index(filter_bin) if filter_type in ['energy', 'energyout']: + bin_indices.extend([bin_index]) bin_indices.extend([bin_index, bin_index+1]) num_bins += 1 elif filter_type == 'distribcell': @@ -2745,7 +2749,7 @@ class Tally(object): bin_indices.append(bin_index) num_bins += 1 - find_filter.bins = find_filter.bins[bin_indices] + find_filter.bins = set(find_filter.bins[bin_indices]) find_filter.num_bins = num_bins # Update the new tally's filter strides From 454d624de5ae4a1d28ae49face918f33b3178146 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 20 Jan 2016 18:17:58 -0500 Subject: [PATCH 25/61] Fixed MGXS II Notebook which was only partially complete in last commit --- .../pythonapi/examples/mgxs-part-ii.ipynb | 959 +++++++++++++++++- 1 file changed, 923 insertions(+), 36 deletions(-) diff --git a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb index 764bb0d412..593d536474 100644 --- a/docs/source/pythonapi/examples/mgxs-part-ii.ipynb +++ b/docs/source/pythonapi/examples/mgxs-part-ii.ipynb @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -425,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -451,7 +451,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.1\n", " Git SHA1: 263266f4f8807fd38c6ac282fae259ae73fa1eee\n", - " Date/Time: 2016-01-20 17:57:53\n", + " Date/Time: 2016-01-20 18:12:40\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -510,8 +510,101 @@ " 30/1 1.23670 1.22056 +/- 0.00368\n", " 31/1 1.21396 1.22024 +/- 0.00352\n", " 32/1 1.21389 1.21995 +/- 0.00337\n", - " 33/1 1.24649 1.22111 +/- 0.00342\n" + " 33/1 1.24649 1.22111 +/- 0.00342\n", + " 34/1 1.23204 1.22156 +/- 0.00330\n", + " 35/1 1.20768 1.22101 +/- 0.00322\n", + " 36/1 1.22271 1.22107 +/- 0.00309\n", + " 37/1 1.21796 1.22096 +/- 0.00298\n", + " 38/1 1.23842 1.22158 +/- 0.00293\n", + " 39/1 1.23080 1.22190 +/- 0.00285\n", + " 40/1 1.23572 1.22236 +/- 0.00279\n", + " 41/1 1.21691 1.22218 +/- 0.00271\n", + " 42/1 1.24616 1.22293 +/- 0.00272\n", + " 43/1 1.21903 1.22282 +/- 0.00264\n", + " 44/1 1.22967 1.22302 +/- 0.00257\n", + " 45/1 1.22053 1.22295 +/- 0.00250\n", + " 46/1 1.24087 1.22344 +/- 0.00248\n", + " 47/1 1.20251 1.22288 +/- 0.00248\n", + " 48/1 1.20331 1.22236 +/- 0.00246\n", + " 49/1 1.22724 1.22249 +/- 0.00240\n", + " 50/1 1.24798 1.22313 +/- 0.00243\n", + " Triggers unsatisfied, max unc./thresh. is 1.32110 for scatter-p1 in tally 10054\n", + " The estimated number of batches is 80\n", + " Creating state point statepoint.050.h5...\n", + " 51/1 1.22253 1.22311 +/- 0.00237\n", + " 52/1 1.24330 1.22359 +/- 0.00236\n", + " 53/1 1.23251 1.22380 +/- 0.00231\n", + " 54/1 1.21133 1.22352 +/- 0.00228\n", + " 55/1 1.24503 1.22399 +/- 0.00228\n", + " 56/1 1.22013 1.22391 +/- 0.00223\n", + " 57/1 1.23877 1.22423 +/- 0.00220\n", + " 58/1 1.23793 1.22451 +/- 0.00218\n", + " 59/1 1.21018 1.22422 +/- 0.00215\n", + " 60/1 1.22417 1.22422 +/- 0.00211\n", + " 61/1 1.23094 1.22435 +/- 0.00207\n", + " 62/1 1.23310 1.22452 +/- 0.00204\n", + " 63/1 1.22488 1.22453 +/- 0.00200\n", + " 64/1 1.22702 1.22457 +/- 0.00196\n", + " 65/1 1.18834 1.22391 +/- 0.00204\n", + " 66/1 1.23112 1.22404 +/- 0.00200\n", + " 67/1 1.21611 1.22390 +/- 0.00197\n", + " 68/1 1.22513 1.22392 +/- 0.00194\n", + " 69/1 1.21741 1.22381 +/- 0.00191\n", + " 70/1 1.22484 1.22383 +/- 0.00188\n", + " 71/1 1.19662 1.22338 +/- 0.00190\n", + " 72/1 1.23315 1.22354 +/- 0.00187\n", + " 73/1 1.22796 1.22361 +/- 0.00185\n", + " 74/1 1.21417 1.22346 +/- 0.00182\n", + " 75/1 1.21020 1.22326 +/- 0.00181\n", + " 76/1 1.23413 1.22343 +/- 0.00179\n", + " 77/1 1.22184 1.22340 +/- 0.00176\n", + " 78/1 1.20309 1.22310 +/- 0.00176\n", + " 79/1 1.23458 1.22327 +/- 0.00174\n", + " 80/1 1.20724 1.22304 +/- 0.00173\n", + " Triggers satisfied for batch 80\n", + " Creating state point statepoint.080.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 4.3200E-01 seconds\n", + " Reading cross sections = 9.1000E-02 seconds\n", + " Total time in simulation = 2.2239E+02 seconds\n", + " Time in transport only = 2.2234E+02 seconds\n", + " Time in inactive batches = 1.3715E+01 seconds\n", + " Time in active batches = 2.0867E+02 seconds\n", + " Time synchronizing fission bank = 2.3000E-02 seconds\n", + " Sampling source sites = 1.7000E-02 seconds\n", + " SEND/RECV source sites = 6.0000E-03 seconds\n", + " Time accumulating tallies = 2.0000E-03 seconds\n", + " Total time for finalization = 9.0000E-03 seconds\n", + " Total time elapsed = 2.2288E+02 seconds\n", + " Calculation Rate (inactive) = 7291.29 neutrons/second\n", + " Calculation Rate (active) = 1916.88 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.22327 +/- 0.00148\n", + " k-effective (Track-length) = 1.22304 +/- 0.00173\n", + " k-effective (Absorption) = 1.22407 +/- 0.00129\n", + " Combined k-effective = 1.22373 +/- 0.00113\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -536,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -555,7 +648,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -575,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -610,11 +703,46 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.31e+00 +/- 1.88e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 1.24e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.50e+01 +/- 2.02e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.83e+01 +/- 3.56e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.90e+02 +/- 4.54e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 4.10e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 2.56e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 2.82e-01%\n", + "\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 2.30e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.21e-03 +/- 2.25e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.82e-04 +/- 3.09e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.54e-06 +/- 3.27e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 4.39e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 4.12e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 2.57e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.24e-05 +/- 2.81e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -629,11 +757,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 2.19e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.51e-03 +/- 1.22e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 2.02e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.31e-02 +/- 3.56e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 4.54e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 4.10e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 2.56e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.40e-01 +/- 2.82e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -648,11 +799,152 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n", + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.1-py2.7.egg/openmc/mgxs/mgxs.py:1303: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211H-10.2340220.003645
1271000211O-161.5603050.006280
1241000212H-11.5880250.002815
1251000212O-160.2851470.001392
1221000213H-10.0107760.000186
1231000213O-160.0000000.000000
1201000214H-10.0000230.000010
1211000214O-160.0000000.000000
1181000215H-10.0000000.000000
1191000215O-160.0000000.000000
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "126 10002 1 1 H-1 0.234022 0.003645\n", + "127 10002 1 1 O-16 1.560305 0.006280\n", + "124 10002 1 2 H-1 1.588025 0.002815\n", + "125 10002 1 2 O-16 0.285147 0.001392\n", + "122 10002 1 3 H-1 0.010776 0.000186\n", + "123 10002 1 3 O-16 0.000000 0.000000\n", + "120 10002 1 4 H-1 0.000023 0.000010\n", + "121 10002 1 4 O-16 0.000000 0.000000\n", + "118 10002 1 5 H-1 0.000000 0.000000\n", + "119 10002 1 5 O-16 0.000000 0.000000" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -668,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -690,22 +982,143 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\ttransport\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.81e-03 +/- 4.75e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 1.89e-01%\n", + "\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 1.31e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 2.08e-01%\n", + "\n", + "\tNuclide =\tO-16\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 1.50e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.74e-01 +/- 2.66e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "condensed_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n", + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellgroup innuclidemeanstd. dev.
3100001U-23520.8281270.098842
4100001U-2389.5822950.012550
5100001O-163.1573580.004725
0100002U-235485.2176490.916465
1100002U-23811.1760810.023196
2100002O-163.7881670.010090
\n", + "
" + ], + "text/plain": [ + " cell group in nuclide mean std. dev.\n", + "3 10000 1 U-235 20.828127 0.098842\n", + "4 10000 1 U-238 9.582295 0.012550\n", + "5 10000 1 O-16 3.157358 0.004725\n", + "0 10000 2 U-235 485.217649 0.916465\n", + "1 10000 2 U-238 11.176081 0.023196\n", + "2 10000 2 O-16 3.788167 0.010090" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = condensed_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -727,7 +1140,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -746,7 +1159,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -791,11 +1204,182 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Importing ray tracing data from file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.574633\tres = 5.948E-317\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.679931\tres = 4.254E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.660910\tres = 1.832E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.658975\tres = 2.797E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.642976\tres = 2.928E-03\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.625710\tres = 2.428E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.606520\tres = 2.685E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.587277\tres = 3.067E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.568777\tres = 3.173E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.551415\tres = 3.150E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.535708\tres = 3.052E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.521916\tres = 2.849E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.510221\tres = 2.575E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.500691\tres = 2.241E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.493392\tres = 1.868E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.488317\tres = 1.458E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.485438\tres = 1.028E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.484705\tres = 5.896E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.486045\tres = 1.510E-03\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.489362\tres = 2.766E-03\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.494546\tres = 6.824E-03\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.501481\tres = 1.059E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.510041\tres = 1.402E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.520094\tres = 1.707E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.531507\tres = 1.971E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.544144\tres = 2.194E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.557872\tres = 2.378E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.572557\tres = 2.523E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.588072\tres = 2.632E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.604293\tres = 2.710E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.621101\tres = 2.758E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.638382\tres = 2.781E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.656032\tres = 2.782E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.673950\tres = 2.765E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.692043\tres = 2.731E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.710227\tres = 2.685E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.728423\tres = 2.628E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.746558\tres = 2.562E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.764569\tres = 2.490E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.782396\tres = 2.412E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.799989\tres = 2.332E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.817301\tres = 2.249E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.834292\tres = 2.164E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.850927\tres = 2.079E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.867177\tres = 1.994E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.883017\tres = 1.910E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.898427\tres = 1.827E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.913389\tres = 1.745E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.927891\tres = 1.665E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.941925\tres = 1.588E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.955483\tres = 1.512E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.968562\tres = 1.439E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.981161\tres = 1.369E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.993282\tres = 1.301E-02\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.004928\tres = 1.235E-02\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.016104\tres = 1.172E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.026816\tres = 1.112E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.037073\tres = 1.054E-02\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.046883\tres = 9.989E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.056257\tres = 9.460E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.065205\tres = 8.954E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.073739\tres = 8.472E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.081871\tres = 8.012E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.089613\tres = 7.573E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.096979\tres = 7.156E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.103980\tres = 6.760E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.110631\tres = 6.382E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.116943\tres = 6.024E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.122931\tres = 5.684E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.128607\tres = 5.361E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.133984\tres = 5.055E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.139075\tres = 4.764E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.143892\tres = 4.489E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.148447\tres = 4.229E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.152752\tres = 3.982E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.156819\tres = 3.749E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.160659\tres = 3.528E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.164282\tres = 3.319E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.167701\tres = 3.122E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.170923\tres = 2.936E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.173961\tres = 2.760E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.176822\tres = 2.594E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.179516\tres = 2.437E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.182052\tres = 2.289E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.184438\tres = 2.150E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.186682\tres = 2.019E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.188792\tres = 1.895E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.190775\tres = 1.778E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.192639\tres = 1.668E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.194389\tres = 1.565E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.196032\tres = 1.468E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.197575\tres = 1.376E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.199023\tres = 1.290E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.200381\tres = 1.209E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.201654\tres = 1.133E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.202849\tres = 1.061E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.203968\tres = 9.939E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.205017\tres = 9.307E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.206000\tres = 8.714E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.206921\tres = 8.157E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.207783\tres = 7.634E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.208590\tres = 7.144E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.209346\tres = 6.684E-04\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.210053\tres = 6.252E-04\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.210715\tres = 5.848E-04\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.211334\tres = 5.468E-04\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.211913\tres = 5.113E-04\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.212454\tres = 4.779E-04\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.212960\tres = 4.467E-04\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.213434\tres = 4.175E-04\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.213876\tres = 3.901E-04\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.214289\tres = 3.644E-04\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.214675\tres = 3.404E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.215036\tres = 3.180E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.215373\tres = 2.969E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.215687\tres = 2.773E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.215981\tres = 2.589E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.216255\tres = 2.416E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.216511\tres = 2.256E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.216750\tres = 2.105E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.216973\tres = 1.964E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.217181\tres = 1.833E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.217376\tres = 1.710E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.217557\tres = 1.595E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.217726\tres = 1.488E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.217883\tres = 1.388E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.218030\tres = 1.294E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.218167\tres = 1.207E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.218295\tres = 1.125E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.218414\tres = 1.049E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.218525\tres = 9.777E-05\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.218629\tres = 9.113E-05\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.218725\tres = 8.494E-05\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.218815\tres = 7.916E-05\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.218899\tres = 7.376E-05\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.218977\tres = 6.873E-05\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.219050\tres = 6.404E-05\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.219117\tres = 5.966E-05\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.219180\tres = 5.557E-05\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.219239\tres = 5.177E-05\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.219294\tres = 4.822E-05\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.219345\tres = 4.491E-05\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.219392\tres = 4.182E-05\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.219437\tres = 3.894E-05\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.219478\tres = 3.626E-05\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.219516\tres = 3.376E-05\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.219552\tres = 3.144E-05\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.219585\tres = 2.927E-05\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.219616\tres = 2.724E-05\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.219645\tres = 2.536E-05\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.219672\tres = 2.361E-05\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.219696\tres = 2.197E-05\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.219720\tres = 2.045E-05\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.219741\tres = 1.903E-05\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.219761\tres = 1.771E-05\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.219780\tres = 1.648E-05\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.219797\tres = 1.534E-05\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.219814\tres = 1.427E-05\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.219829\tres = 1.328E-05\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.219843\tres = 1.235E-05\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.219856\tres = 1.149E-05\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.219868\tres = 1.069E-05\n" + ] + } + ], "source": [ "# Generate tracks for OpenMOC\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", @@ -815,11 +1399,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.223729\n", + "openmoc keff = 1.219868\n", + "bias [pcm]: -386.1\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -840,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -880,11 +1474,251 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Importing ray tracing data from file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.495594\tres = 5.948E-317\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.557312\tres = 5.044E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.518115\tres = 1.245E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.509016\tres = 7.033E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.496279\tres = 1.756E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.488357\tres = 2.502E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.482659\tres = 1.596E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.479523\tres = 1.167E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.478568\tres = 6.497E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.479590\tres = 1.991E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.482388\tres = 2.136E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.486774\tres = 5.834E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.492575\tres = 9.091E-03\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.499632\tres = 1.192E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.507799\tres = 1.433E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.516943\tres = 1.635E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.526942\tres = 1.801E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.537681\tres = 1.934E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.549060\tres = 2.038E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.560984\tres = 2.116E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.573368\tres = 2.172E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.586133\tres = 2.207E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.599207\tres = 2.226E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.612528\tres = 2.231E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.626035\tres = 2.223E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.639676\tres = 2.205E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.653402\tres = 2.179E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.667170\tres = 2.146E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.680942\tres = 2.107E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.694681\tres = 2.064E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.708356\tres = 2.018E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.721940\tres = 1.969E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.735406\tres = 1.918E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.748734\tres = 1.865E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.761904\tres = 1.812E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.774897\tres = 1.759E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.787700\tres = 1.705E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.800299\tres = 1.652E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.812684\tres = 1.600E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.824844\tres = 1.547E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.836772\tres = 1.496E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.848462\tres = 1.446E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.859908\tres = 1.397E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.871105\tres = 1.349E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.882052\tres = 1.302E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.892745\tres = 1.257E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.903184\tres = 1.212E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.913367\tres = 1.169E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.923297\tres = 1.128E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.932972\tres = 1.087E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.942394\tres = 1.048E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.951566\tres = 1.010E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.960490\tres = 9.733E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.969168\tres = 9.378E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.977604\tres = 9.035E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 0.985800\tres = 8.704E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 0.993761\tres = 8.384E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.001491\tres = 8.076E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.008992\tres = 7.778E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.016271\tres = 7.490E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.023330\tres = 7.213E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.030174\tres = 6.946E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.036809\tres = 6.688E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.043238\tres = 6.440E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.049466\tres = 6.201E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.055498\tres = 5.970E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.061339\tres = 5.748E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.066993\tres = 5.534E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.072465\tres = 5.327E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.077760\tres = 5.129E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.082882\tres = 4.937E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.087837\tres = 4.753E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.092628\tres = 4.575E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.097260\tres = 4.404E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.101737\tres = 4.239E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.106065\tres = 4.081E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.110247\tres = 3.928E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.114288\tres = 3.781E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.118191\tres = 3.639E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.121961\tres = 3.503E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.125603\tres = 3.372E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.129119\tres = 3.245E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.132513\tres = 3.124E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.135790\tres = 3.007E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.138954\tres = 2.894E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.142007\tres = 2.785E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.144953\tres = 2.681E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.147796\tres = 2.580E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.150539\tres = 2.483E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.153185\tres = 2.390E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.155738\tres = 2.300E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.158200\tres = 2.214E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.160575\tres = 2.130E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.162865\tres = 2.050E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.165073\tres = 1.973E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.167202\tres = 1.899E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.169255\tres = 1.828E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.171234\tres = 1.759E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.173142\tres = 1.693E-03\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.174980\tres = 1.629E-03\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.176753\tres = 1.567E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.178461\tres = 1.508E-03\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.180107\tres = 1.452E-03\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.181694\tres = 1.397E-03\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.183222\tres = 1.344E-03\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.184695\tres = 1.294E-03\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.186115\tres = 1.245E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.187482\tres = 1.198E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.188799\tres = 1.153E-03\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.190068\tres = 1.109E-03\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.191290\tres = 1.067E-03\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.192468\tres = 1.027E-03\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.193602\tres = 9.883E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.194694\tres = 9.510E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.195746\tres = 9.151E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.196759\tres = 8.805E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.197735\tres = 8.473E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.198674\tres = 8.152E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.199579\tres = 7.844E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.200450\tres = 7.548E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.201289\tres = 7.262E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.202097\tres = 6.988E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.202874\tres = 6.723E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.203623\tres = 6.469E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.204344\tres = 6.224E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.205038\tres = 5.989E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.205706\tres = 5.762E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.206349\tres = 5.544E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.206968\tres = 5.334E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.207564\tres = 5.132E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.208138\tres = 4.938E-04\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.208690\tres = 4.751E-04\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.209221\tres = 4.570E-04\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.209733\tres = 4.397E-04\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.210225\tres = 4.231E-04\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.210699\tres = 4.070E-04\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.211155\tres = 3.916E-04\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.211594\tres = 3.767E-04\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.212017\tres = 3.624E-04\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.212423\tres = 3.487E-04\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.212815\tres = 3.355E-04\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.213191\tres = 3.227E-04\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.213554\tres = 3.105E-04\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.213902\tres = 2.987E-04\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.214238\tres = 2.874E-04\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.214561\tres = 2.764E-04\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.214872\tres = 2.659E-04\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.215171\tres = 2.558E-04\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.215458\tres = 2.461E-04\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.215735\tres = 2.368E-04\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.216002\tres = 2.278E-04\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.216258\tres = 2.191E-04\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.216504\tres = 2.108E-04\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.216742\tres = 2.028E-04\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.216970\tres = 1.951E-04\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.217190\tres = 1.876E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.217401\tres = 1.805E-04\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.217604\tres = 1.736E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.217800\tres = 1.670E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.217988\tres = 1.607E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.218169\tres = 1.546E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.218344\tres = 1.487E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.218511\tres = 1.430E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.218673\tres = 1.376E-04\n", + "[ NORMAL ] Iteration 164:\tk_eff = 1.218828\tres = 1.324E-04\n", + "[ NORMAL ] Iteration 165:\tk_eff = 1.218977\tres = 1.273E-04\n", + "[ NORMAL ] Iteration 166:\tk_eff = 1.219121\tres = 1.225E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.219259\tres = 1.178E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.219392\tres = 1.133E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.219520\tres = 1.090E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.219643\tres = 1.049E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.219761\tres = 1.009E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.219875\tres = 9.702E-05\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.219984\tres = 9.332E-05\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.220090\tres = 8.976E-05\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.220191\tres = 8.634E-05\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.220288\tres = 8.305E-05\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.220382\tres = 7.989E-05\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.220472\tres = 7.684E-05\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.220559\tres = 7.392E-05\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.220643\tres = 7.110E-05\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.220723\tres = 6.839E-05\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.220800\tres = 6.578E-05\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.220874\tres = 6.327E-05\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.220946\tres = 6.086E-05\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.221015\tres = 5.854E-05\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.221081\tres = 5.631E-05\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.221144\tres = 5.416E-05\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.221206\tres = 5.209E-05\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.221264\tres = 5.011E-05\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.221321\tres = 4.820E-05\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.221375\tres = 4.636E-05\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.221428\tres = 4.459E-05\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.221478\tres = 4.289E-05\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.221527\tres = 4.125E-05\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.221573\tres = 3.968E-05\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.221618\tres = 3.816E-05\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.221661\tres = 3.671E-05\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.221703\tres = 3.531E-05\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.221743\tres = 3.396E-05\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.221781\tres = 3.266E-05\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.221818\tres = 3.142E-05\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.221853\tres = 3.022E-05\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.221888\tres = 2.906E-05\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.221920\tres = 2.795E-05\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.221952\tres = 2.689E-05\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.221982\tres = 2.586E-05\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.222012\tres = 2.487E-05\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.222040\tres = 2.392E-05\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.222067\tres = 2.301E-05\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.222093\tres = 2.213E-05\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.222118\tres = 2.129E-05\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.222142\tres = 2.047E-05\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.222165\tres = 1.969E-05\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.222187\tres = 1.894E-05\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.222209\tres = 1.822E-05\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.222229\tres = 1.752E-05\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.222249\tres = 1.685E-05\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.222268\tres = 1.621E-05\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.222287\tres = 1.559E-05\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.222304\tres = 1.499E-05\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.222321\tres = 1.442E-05\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.222337\tres = 1.387E-05\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.222353\tres = 1.334E-05\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.222368\tres = 1.283E-05\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.222383\tres = 1.234E-05\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.222397\tres = 1.187E-05\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.222410\tres = 1.142E-05\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.222423\tres = 1.098E-05\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.222435\tres = 1.056E-05\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.222447\tres = 1.016E-05\n" + ] + } + ], "source": [ "# Generate tracks for OpenMOC\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, num_azim=128, spacing=0.1)\n", @@ -897,11 +1731,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.223729\n", + "openmoc keff = 1.222447\n", + "bias [pcm]: -128.2\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -944,7 +1788,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -970,11 +1814,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(9.9999999999999994e-12, 20.0)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEhCAYAAAB7mQezAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYVEXWh9/uyYnoDEFAQSxFFEygoKsk0yoGXNOnYkBB\nYJHVNYEJVtYMKEFUxBwQRYyYAWExgmExQKmrooDQIMLk6XC/P273TPdM90x3T6fbc97n6Wemq++t\nX907PXVunVN1CgRBEARBEARBEARBEARBEARBEARBEARBEARBEARBEAQhbtiS3QDBWiil9ga+11pn\n1Su/GDhfa31ckHNaAQ8AhwF2YKHW+lbvZ8cCdwGtgQrgH1rrVd767gc2+1U1W2v9QL26BwHvAD/W\nk10EPAS8rbU+KIrrHA900FrfEum5jdR5IXAVkAdkAx8B12qtt8RKI8x2HAdMAdoBmcDPwJVa6++i\nrK8/UKm1XheP+yYknsxkN0BoEdwOVGmteymlCoEvlVKrgNXAi8DxWusvlFKnYnbonbznLdZaXxpG\n/b9orXuF+CxiowCgtZ4bzXmhUEqNxTQKw7XWG5RSmcBNwEqlVG+tdY3fsTattRFLfb+622De40Fa\n66+8ZVcDi4EDoqz2UmAVsC7W901IDmIYhESwGNAAWusypdRXmJ3Qp8ClWusvvMctAzoopVp73zdr\nROsd3fygtc5USu0JPAl0xHxaf15rfVMj5VOAPbXWlyulugHzgb0AJ3C31vopb/0fYRq+yzGfwK/W\nWi+q1w47cAtwodZ6g/c+uIApSqnPvcdcDAwHWgFfANcppa4ExmCOsjYAl2mtt3tHWTOAXO89ukVr\n/WKo8nq3ZV/AANb5ld3vvQe+9t4C/J+3npe91+RRSvUAHsc03Du9bTsCuBAYrpQqwRz5xeS+CcnD\nnuwGCOmP1nq51noT1LqVBgKfaK13a61f85bbgFHASq31Lu+pByulliulNiilHvGeGym+J+9/AB9o\nrXsDBwJdlVIdGyk3/M59GFimtd4fOBmY5e30ANoDbq11H29d04K0YX+grdb6vSD35lW/0cJxwBVa\n6+uUUkcC1wDHekdDG4E7vMfdi+ly6w2cBJweovyMIG35GtgNrFBKnaeU6qS1dmutt0Otu+ssoB+w\nj/c11u8+PKO13hf4N/Ck1vpBTAN/rdZ6Zozvm5AkxDAICUMplQ08C7yitf7Er/xvmLGEccB4b/EG\nzKfVU4CDMZ+kZ4aouptS6rt6r1H1jtkKnKCUOgpwaa0v0lr/3ki5zdu2TGAYZowErfVGYDkw1Ftv\nJvCY9/cvAF/H5087wNHE7QEzduOLlZwMvODrsIFHgOP9ruUipdR+WutftNYXhCg/v76A1roSGIDZ\nmU8FNimlPlZKHeM9ZDjwqNa6VGvtBhYAI5RSOcAg4DlvPa9gjhbqE8v7JiQJcSUJkeIhuIsnA3AD\nKKXeBzoDhtb6AG9ZIfASsFFrfYX/iV53x4tKqcHA+0qpg7XWH2G6G/CefwfwVog2bQwWY/C6LHzM\n9LbxAaCzUmqu1npKI+U+2gM2rXWpX9lOoNj7u9vb2eK9/owg7duO6SKza609Ia4B4A+/3/cgMPD+\nJ1Di/f1SzPjEe0qpSmCS1npxI+UBeIPd1wDXKKX2wjTGS5VSXYE23vLR3sMzgW2Yxs2utd7tV09F\nI9cSi/smJAkZMQiRsh0wvJ2IPwr4BUBrPVRr3cvPKGQCSzCDk5fVnqBUF6XUcN97rfVy4DfgCKVU\nN6XUHn71Z2H6qaPC6y65S2vdF9OVdYFSaliocurcIdsBjzdo62MPzKfzsOUxO9fT6n+glLql3nX6\n2IrZufpo79PUWm/TWl+pte6K2ak/rpTKD1VeT6+nUuoQv/vyi9b6OqAK6AFsAv7t/fv10lrvq7U+\nCtNoGUqpdv51NXLNsbhvQpIQwyBEhPcp8QngX0qpLABvRzMSmB3itCuB3Vrrf9YrzwGeVEr5DMh+\nQE9MP/gY4EGlVIZSKgOYALwebbuVUg96O3yA/wG/Y3Z0Qcu9721ed8rb3vaglNoH+AvQIF4QCu8o\n4SZMH/vh3nqylFLTMI3F7iCnvYHpwvF1xGOA15VSmd64S0dv+edADRCs3Ik5wvPnMGCx9zp89+Zk\n77HfAq8AI5VSed7PxiilRmqtqzGnBV/iLT/R20a857b104jJfROSR8q5knyzQTCHzk/7ptQJKcWV\nwG2Y005tmE+T52mtvw5x/GggXynlP09+kdb6VqXU5cBz3viDAYzXWv/o7TQfAL7D7NxWA9eGqL+x\nqZ2+zx4EHlJKzcZ0hb2qtX5fKbUjRPnRfudeAcz3zhyqAUZprTd5XVX1tYO2RWv9uFKqyltPvvea\nlgNDtNY1Sin/oC1a68+UUncCq7yzmr4AxmqtXUqpRzBdbnjrmaC13h2k/O9a66p67XjeG8RfrJTK\nxewDvgdO9Lp2XlZK9QY+99bzA+akAIDLgGeUUuOAHcB53vIlwD3eWUu7Y3nfhOSQcgvclFK34p2x\nANyutQ4naCcIgiDEiJQbMWBOcduBOVf6H8CNyW2OIAhCyyJhhkEp1QdzyDnDtzpSKTUTc8qbAUzU\nWq8BemEOsXdh+qAFQRCEBJKQ4LPXpzodMxjlKzsW6Km1Hojpw5zl/SgPc37zdEy/sCAIgpBAEjVi\nqMZcqHSDX9lQzBEEWuv1Sqm2SqlCrfUb1M12EARBEBJMQgyDd+qa2zvLwUcHYI3fewdmXOH7SOr2\neDyGzZZyMXRBEISUxtZIx5lKwWcbUUxZs9lsOBylTR8YA4qLixKmlWg90bKenmhZSyvRes3RSoZh\n8HX+mzEzWvroDESVl764uKi5bUpJrUTriZb19ETLWlqJ1otWK9Ern23UrZ14B/gbgFLqUGCT1ro8\nwe0RBEEQ6pEQ57w3hfB8zCRgLsx1CoMwV7Ieg7mYbbzWel2oOkJhGIZhhaFZquuJlvX0RMtaWonW\na0qrpKRVcmMMWuuPCb6T1qRE6AuCIAjhY/npPIZhSI4VQRCECLHKrKSoSZWhmZX1RMt6eqJlLa1E\n6zVHS0YMgiAILRAZMcQIeboQrVTSE63Ya/3660ZmzZrOn3/+icfj4aCD+jB+/D/IysoKu84VK95n\n0KChfP+9ZuXK5YwaNSakXjxpjpZs1CMIggC43W5uuul6LrjgYubPf4IFC54C4LHH5kdUz9NPPwHA\nvvuqAKNgJcSVJAiCAKxcuZIlS5Ywc+bM2rLq6mpsNhvPPfccb775JgBDhw7l8ssv54YbbqBDhw58\n/fXXbNmyhXvvvZcPP/yQ++67jyFDhnDBBRfw9NNPM2vWLI477jiGDRvGF198QVFREQ8//DBz5syh\nXbt2nH/++Witue2223jqqadYunQpTzzxBBkZGfTu3Zsbb7yR2bNnBz122rRpfP3113g8Hs477zzO\nOOOMsK9XXEkxQtwSopVKeqIVW61169bTtWv3BtqbN2/ixRcX88gjT2EYBpdffhH9+h1NdbWLXbvK\nufPO+3j55cU899wirrzyn8yfP5+bb/43n3++hupqFw5HKb/99huDBh3P9ddfz4gRf+Ojjz6noqKG\nrKwqHI5Sdu4sx+l0s3HjNqZPn8Hjjz9Hbm4u119/FW+/vTzosT/+uIlly5bz/PMv43K5ePPN1wPa\nbrWUGIIgCE1yzDH5rF+fEbP69t/fzcqVFSE/t9lsuN3uBuXff7+BAw44CLvd9Lz36dOXH34wc332\n7XswAMXFJXz7baidbSE/v4AePXrWHlteXhb0uF9//YUuXbqSm5sLwCGHHMb3328IemyrVq3o2rUb\nkyb9k8GDh3HiiSeH1I8UMQyCIKQkjXXi8WCvvfZm8eLnA8pqamr46af/4Z/f0+l0YrebXhi7PTzD\nlZkZeJxhGPh7clwuF2AaJ3/nuNPpIicnJ+ixAPfeOwut1/Puu2/z1ltvMGPGnLDa02R7Y1JLkrFC\nUior6ImW9fREK3Zaf/3rMB56aDZff72GwYMH4/F4uOOOWezatYsNGzbQrl0+hmGg9Xf84x8T+Oyz\nD2ndOo/i4iJat84jNzertq7i4iLatMknJyeT4uIibDZb7Wc5OZm0aZNPSUk7du7cSXFxEW+9tZ6s\nrAwOOaQ3W7b8Rn6+nYKCAr799ivGjRvHf//73wbH1tTs5v3332fkyJEcdVQ/RowY0eC+RXsf08Iw\npKPvM9F6omU9PdGKvdbdd9/P3Xf/m/vum0VWVib9+h3JNddMYMmSFznnnPMwDIOTTjqVrKwiqqqc\n7N5dicNRyu7dVVRVOXE4StlnH8UZZ5zJ2LETqKlx43CUYhhmP1VcXOSNTVRy2GFHcd11E1m79gv6\n9j0El8tDWZmLMWMmcNFFl2C32+nT52C6dt2XrKyiBsfa7fl8/PFnvPrqa2RlZXPiicNjFmNIi1lJ\n6fiFTbSeaFlPT7SspZVoveYk0bP8OoY+feCzzyx/GYIgCCmD5UcMixcbxrhxcOmlcOutkJOT7BYJ\ngiCkPo2tY7C8YTAMw/jmmzKuuSaHjRvtzJ1bRe/enrhoteRhp2ilnp5oWUsr0Xot2pUEUFJi8MQT\nVVxxRQ1/+1ses2ZlE2Q6siAIghAGaWEYAGw2OPdcF++8U8Hy5Rmcemo+//uf5QdEgiAICSdtDIOP\nrl0NFi+u5LTTnPz1r/k89lgWkk1JEAQhfNLOMADY7TB6tJPXXqtk4cIszjknj82bZfQgCEJotmzZ\nzF/+0o/vvvsmoPzyy0dy++1Tg56zdOlrzJ17PwDLl78HwPffaxYseCjo8atWrWLs2FGMHTuKSy+9\ngIcemovHE5+YaHNIS8PgY999PbzxRgVHHOFm2LB8XnwxU0YPgiCEpHPnPVm27L3a97//voXS0tAB\nXJvNhm9uzzPPPAmETre9Zctm7rrrLqZNu4t58xbw8MOP8/PP/+ONN16N7UXEAMs/RoebdnvtWhg5\nEg44AObNgz32iHfLBEGwEps2bWLmzJn8+OOPLFmyBIBHH32UX3/9laqqKj755BPeeOMN8vLyuOuu\nu1BKAaC1Zo899mDmzJkN0m37c++997LXXntx1lln1Za53W4yMsw8SscffzyDBg2iTZs2jBgxgsmT\nJ3vzMtn597//DcDEiRNZvHgxAGeeeSazZs1i9uzZFBYW8uOPP7Jz507uuOMOevXq1eT1StptoFs3\neOstuOOOHA46KJN7763i+OMjm7rUkqe2iVbq6aWzVtnU28m/5w7sIbKQRoOnoJCKaydROW5CgJbv\nuv74oxy3G7p378mKFR/Ru/eBvPvu+5x77gUsX/4eHg9s315Gbq6LykonpaVVAFRWOjn11LN5+OGH\nG6Tb9mf9+u85/vjjQ97Hmhonffv2o3//I7n99qmccMJwhgwZxooV73PvvTMZNWoMLpen9nyXy8Mf\nf5RTXe3CMCq5++5ZrF69ihkz7uf22++RHdzCJTcXpk6t5qGHqpg8OZerrsqhkVGiIAhJIm/e7Jga\nBQB7eRl582Y3edygQUNZtuxdtm3bSlFREXl5ed5PmueHttttOJ1OwNzjYcKEMYwbdxk33HB17TG9\nevUGYMOG9RxyyGGAmXpb6+Cpt33069cfgN69D2Ljxl+a1U5oYYbBx4ABblasKMdmg8GDC1i9OnY5\n3wVBaD6VYyfgKSiMaZ2egkIqx04I+bnPK92v3xGsXfsZH3ywnGOPHeJ3RPDU16HYsmUzf//7aK68\n8go2bFhP9+77sG7dOsCMZcye/RC33HIb27dvrz3Ht7e0mX7bDEo7nS5vmu9Az49/G9xuT+01hHYQ\nhU9auJKiobAQZsyo5t13XYwdm8tpp7mYPLma2ocDQRCSRuW4CQEun0SSmZmJUvvx+uuvMG/eI2zY\nsB6AwsICtm930KlTZ775Zh1K7RdwnscTOKLo1Kkzc+Y8XPu+ffv2TJx4BX379qdLl64AfPbZJ+QE\nyePTq9cBfP75GoYNO4Evv1zL/vv3pqCggD/+2AHAjh3b2bTpt9rj//vfLxgyZBjffPNfunffp/n3\noNk1xAGlVEfgc6CL1jquc7mOO84cPVx3XS7HHZfPnDlVHHxw6k0fEwQhvvjHYgcPHsqff/5Jfn5B\n7WcjRpzN9ddfRbdue9Gjxz5+55k/9913P0aPvpixYycQLK67xx7FzJw5k3/96zbcbhcul4u99+7B\nlCn/9tVUe+yoUVdw553/4rXXXiYrK4sbbriFoqIiDj+8P5ddNpKePfdlv/32rz2+urqG6667Codj\nKzfffFvz70Wza4gDSql7gC7ABVrrRiPEsUq7bRiwZEkmN92Uw8UXO7nqqhq8o7paJJApWqmkJ1rW\n0oqX3u23T2Xw4KEMGHB0RFqWypWklPo/4EWgKpG6NhuMGOHi/fcrWLs2g7/+NR+tU+72CIIgxJ2E\nuZKUUn2AJcAMrfVcb9lM4AjMcP9ErfUaYACwL3AwcA7wbKLaCNCpk8HChZU8+WQWp52Wx8SJNYwe\n7cQuNkIQhBRk8uRbY15nQro7pVQ+MB1426/sWKCn1nogMAqYBaC1nqC1ngp8ASxMRPvqY7PBRRc5\nWbq0gtdfz2TEiDw2bkxJr5sgCELMSdRzcDVwCrDVr2wo5ggCrfV6oK1SqnZ+mtb60ngHnpuie3eD\nV16pZOhQNyeckM+jjyIpNQRBSHsS+hislLoV2K61nquUegh4Q2v9qvezlcAorfX3kdQZbkqM5rJu\nHVx4IXTtCvPnQ8eOiVAVBEGID1ZJiWEjyqWFiZhV0LEjfPppETfcUE2fPlnceWc1w4c3vcilOaTr\n7Ix01Uq0nmhZSyvRes3RSoZh8HX+mwH/5+7OwJZoKiwuLmpum8Jmxowczj4bRo7MY9kymD0b2raN\nn14ir020rKcnWtbSSrRetFqJNgz+67rfAaYCDyulDgU2aa3Lo6k00RZ4n33g3XfhtttyOPDATGbO\nrGLw4NjvJWqVpwvRSo6eaFlLK9F6zdFKSIxBKXUkMB8oAVzADmAQcC1wDOAGxmut10Vad6JiDKF4\n7z249FI45RS45x4oKEhmawRBEMKjsRiD5edgxmrlcziEssC7dsGNN+by2WcZzJ5dSf/+sZlMZZWn\nC9FKjp5oWUsr0XrNWfmcFoYh2W3wsWQJjB0Ll1wCU6ZAkNxYgiAIKYGMGGJEONZ+2zYb11yTw8aN\ndubOraJ37+hHD6n0dCFaqacnWtbSSrSejBhSDMOAJ5+Ea66Bq6+Ga6+FzFSaGCwIQotHRgwxIlJr\n/9tvNiZOzKWy0sacOZX06BGZDUulpwvRSj090bKWVqL10iq7ajrRpYvBCy9UcsYZTk4+OZ9HH82S\nlBqCIKQ8aTFiSHYbwmH9ehg50lwMt2ABdOmS7BYJgtCSEVdSjGjuMNDlglmzsnnkkSz+9a9qzjzT\n1ej+rKk07BSt1NMTLWtpJVpPXEkWITMTrr66hoULK5k1K5tRo3LZvt3ytlkQhDRDDEMS6NPHwzvv\nVNCtm8Hgwfm89VZGspskCIJQi+UfV60SYwjFypVw8cUweDDMnAmtWiW7RYIgtAQkxhAj4uUfLCuD\nW2/NYcWKTGbNquKoo9xx1QuGaFlPT7SspZVoPYkxWJzCQpg+vZq77qpi7Nhcbr45h8rKZLdKEISW\nihiGFGLYMDcrVpSzdauNYcPyWbMm2S0SBKElkhaupGS3IR4sXAgTJ5pJ+W68EbKykt0iQRDSCYkx\nxIhE+yOdziIuvNDFjh025sypYr/9YpPOOxip5Pu0qlai9UTLWlqJ1pMYQ5rSuTM891wlF17o5PTT\n85g3LwtP/GyDIAgCIIYh5bHZYORIJ0uXVrB0aSYjRuSxcaPlB3qCIKQwYhgsQvfuBi+/XMlxx7k4\n4YR8nnlGEvIJghAfxDBYiIwMGD/eyUsvVbJgQRYXXSQpNQRBiD1iGCxIr14e3nyzgp49PQwenM/7\n70tKDUEQYoflHzfTdbpquKxYARddBMOHw913Q35+slskCIIVkOmqMSJVp7bt2gXXX5/LunV25s2r\nok+fyKcupdI0OqtqJVpPtKyllWg9ma7awmndGh58sIp//rOGc8/N4/77s3G7k90qQRCsihiGNGLE\nCBfvvFPBihUZnH66TGsVBCE6xDCkGV26GCxeXMmJJ5rTWhctypRprYIgRIQYhjTEbjentb7wQiVz\n5mQzenQuO3cmu1WCIFiFlDMMSqmjlFJPKqUWKqUOS3Z7rMyBB3p4++0KOnQwGDy4gJUrZVqrIAhN\nk3KGAdgFXA5MBwYltynWJy8Ppk2rZubMKiZMyOWWW3Koqkp2qwRBSGUiMgxKqTZKqbhGNLXWXwND\ngDuBJfHUakkMHuxm+fJyfvvNxgkn5PPtt6n4TCAIQioQsndQSvVRSr3k9/5ZYDOwWSl1RKRC3vp+\nVEqN9yubqZT6UCm1Wil1uLfscK31m8DZwFWR6gihadcOFiyoYuzYGs48M4/58yXfkiAIDWnssXE2\n8ASAUuoYYADQAfNp/vZIRJRS+Ziuobf9yo4FemqtBwKjgFnej9orpR4C7gdej0RHaBqbDc4918XS\npRUsXpzFBRfkSb4lQRACyGzkM5vW+hXv78OBhVrrUuA7pVSkOtXAKcANfmVD8bqKtNbrlVJtlVKF\nWuu38TMg4VBcXBRpe6ImkVrx1Csuho8/hltugWHDCnn8cTjuuPS8j+nyNxMt62slWi9arcYMg8vv\n9yHAZL/3EU1v0Vq7AXc9g9IB8N/V2AF0Ar6PpG4gZZaYW1Hv6qvh8MMzuOSSfE4/vYZJk6rJzo6r\nZEqlBbCynmhZSyvRes3RaswwVCqlTgNaA12B5QBKqQOIz2wmGxCVx9sKFjiV9c48E449Fi69NJvT\nTsvmuedg333jqyl/M9FqiVqJ1ovHiGEiMA9oC/yf1rrGGyv4ADgnKjUTX+e/GejoV94Z2BJNhVaw\nwKmuV1xcxCOPlPLoo1kMGJDNrbdWc845LkLnX2yelvzNRKulaSVarzlaEf/bK6Xaaq2jWkerlJoC\nOLTWc5VSA4CpWuvjlVKHAvdprY+JtM6WnnY7HqxbB+edBwcdBA8+aCbpEwQhvYgq7bZSapzW+oEg\n5W2BOVrr88NtgFLqSGA+UIIZu9iBuXjtWuAYwA2M11qvC7dOH5J2Oz5alZVw6605LFuWybx5lfTr\nF3kq73C14kkitCoqzNleeXnpd22iZV295qTdbswwvAbkAJdorTd5y07FnEY6X2sd0ZTVeCEjhvjy\n8sswZgxMmACTJpnbiwqB9OwJJSXw4Yehj1mxAgYPRtaNCClD1Bv1KKX+D5gK3AUcC3QHRmmtN8S0\nhc1ARgzx19q82cb48bmAue9Dhw7N691S5bpiRUlJEfn5Bj//XBZSb8GCLCZNymXbtti1Jd3uY7pr\nJVovLiMGH0qpIcA7wHrgCK11eTSNjBdGYaFBWVmymyEEo7AQpkyBf/4z2S2JKzYb5Oaa7rdQPPAA\njB8vIwYhdWhsxBByVpJSKgO4HhgJDAMOBz5VSo3VWq+MeSujRYxC6lJWhufWKewYOTqgOJWemmJD\nER6PgcMResRQWpoF5Ma0Lel3H9NbK9F6zdFqbD3Cx0BPoJ/WeoXW+l7MaaozlVKzo1KLB4WFyW6B\n0Aj28pZhuD2xi80LQtJpLPh8utb65SDl2cAUrfXkIKclHAk+J4eaGrj+ejM4/cILcPjh9Q7wH6Wm\n+Z/IZjNfjRmHefNg3Ljgt8LphGeegYsvjlsTBaEBUQefrYAEn5Or9dprmVx3XQ633VbN3/5Wl0Wl\nuKRV7e+ObbtjohUNiQo+A2zbVhpS7/HHs7juuuDB588+s3PyyQURB6bT7T6mu1ai9ZoTfG5s5bMg\nNMnw4S722cfDyJF5fPedncmTa2RKqyBYHNmtRWg2BxxgbiG6dm0GI0fmUZq4B7CUZNMmGz/8EPgw\nFo/UIoIQL8L6uiqlWgPt/I/XWv8vXo2KBIkxpA5OJ0ycaC7m+va7lhVjgLrL7NkTfvwx8LIffthc\nKBjsVnz0EQwcmPa3SUgxopqu6kMpNQu4BNhe76PuzWxXzEgVn52V9WKlNXUqPPpoVsDOG/XrteJ1\nNYbNVohh2HA4zBhDZaUHsAfoNjZddedOO1AQcTvT7T6mu1ai9eKVdtvHYKBYay1byAthcemlzsAt\nmdIcmy3waT9St5G4mYRUI5wYw/eYO7AJQlQ88URWspsQV+p37JF29OJCElKNcEYMm4CVSqlVmFlQ\nAQyt9S3xa5aQTjzwQDabNtmYNKkmLZ+OwzEM6XjdQvoSTq6kKd5ffc81NkzDMDVejYoECT6nKJH0\nhBbPqZSVBS5X3ZN/9+7w88+BI4H582H06OCjg48/hgEDGn723XdmNtvIt1gXhKZpVvBZaz1FKVUI\n7IdpHDakWiI9KwRzUl0v1lrtCwrDT4cRIqdSLEjEPbTbC4G64LPH0zD4XFYWefD5gAOKyMsz+OWX\n4PfRyt+PlqiVaL145UoCzNQYmHGGB4GHAa2U+mtUakKLoeLaSXgKws9jZeWcSs11EzU25pXxsJAM\nwgk+Xwf00Vr301ofDvQDbo5vswSrUzluAjt+2oxj2+6A17atu/n3NIO9urn5cLV1jYE/kRiGV15p\nOEj3df5XX53D//4nwQgh+YRjGKq11g7fG631ZkCmrgpRYbPBjTfCNddUc/rpecluTkyIxDBcfnng\nNWtt58wz8wF4+ulsli41DUdLXz0uJJdwZiWVK6X+CbyLGXg+AZCvrdAszj3XRUmJAecmuyWJIZTx\nWLUqg+rqhh/us4+ZmE9cSUIyCMcwjAL+BVyAGXz+2FuWMhQXF6WlVqL1Eq11zjkEGIY2bYrI8lvy\n8Oef5ujis8/g9tth2LDoteKJ3R6oY/cW+Ou2qks2G1BefzuRwsJciotz/eq2Ndr+dP5+pKNWovWi\n1QpnVtJWYExUtScIK0T5U10vWVrFfuVZ2YFPzm2AuYAzp5DbTruVzp9dQXFxZI/QibmupmcllZZm\nAqYbKdhspbr3VTgcTsD3D23uDBeMlvD9SCetROvFZVaSUmqR9+dvSqlf6702RtlWQQggnJlLWdVl\nTHZOZd60SwtLAAAgAElEQVS81FxBXd9NFEv3jyyME5JBY8HnK70/jwb+4vc6Gjgmzu0SWgjhTmvN\ndZbx3HNZVFYmoFEREs/Ou6JCLIOQeEIaBq31795fbUBXrfXPwPHArfjGxILQTEJNa/W9/Onb18Or\nr1pzbyl58hesRDjTVR8DapRShwCXAYuB2XFtlSAE4cILnTz9dPLdSdXV8NtvdT19Ijr9r7+WPbWE\nxBHOt83QWn8CjADmaK3fiHObUEoNUEo9opR6XCl1aLz1BGtw/PEufvrJjtbJ7STvuy+bQw+tc3/Z\nw2iOv/E444w8fvopMmsyZEgBGzaEd90lJUXU1NS937ULfv1VhixC+ITzTStQSvUDzgTeVErlAG3j\n2yzKgHHATMy4hiCQlQXnnJP8UcOffzZv287VqzP58MPIXWJOZ8OyBx/M4sorcxs99vLL8zjssPDT\nkwhCOIZhOjAfeNi7AnoK8Gw8G6W1Xoc5h28c8EQ8tQTrUFzSilmzc5n3YA7FJa0avNp370zeA/H3\ncoYyBG538PLgdZhTl5o7g+mJJ7JZuLChofRv486dMloQIqNJw6C1fh44RGt9n1IqF5intZ4ejZhS\nqo9S6kel1Hi/splKqQ+VUquVUod7y1oDdwGTtNZ/RqMlpAeRJuLLv+eOBuVr19opj2E+4Ib7L5i9\n+6pVGbETCcKQIQW4XHGVEAQgvOyqk4GJSql84HPgRaXUbZEKec+fDrztV3Ys0FNrPRBzNfUs70fX\nAa2Am5VSIyLVEtKHWGRpPemkAubOzY5ZmzyewPc+QxFJp22zwXXX5QSdjtpYIr3OnYtYtqyhAXr+\n+UDX1PTp2Tz1VPID9YI1CcfRORwYCIwEXtNaX6+UWh6FVjVwCoG7AQ8FlgBordcrpdoqpQq11jdG\nUrEVlphbQS8ltW6dbL78qKqCrl3NDW722cdb6PcY7193mddOZGXlUFyc05wm15KTE6jjCz63bp3v\nbUrjKTEAioryePxxGDkysLywMJcjjwwsq3+vdu7Mp9i7ZDwjw9SaMCGPv/+97pjZs3Po3BmuvjqX\nzMzg9URKSn4/LKaVaL24pcQAnFprw7sHw/3esojHzFprN+BWgdtRdQDW+L13AJ0w938IGyssMU91\nPatpXXBBNlOn2pg+3dyO3D+1hn/dP/5o/mNs2VKDwxH+1uU1NdClSxHbtjVsZ3l5DpCNzQbbtpVi\nGAWAnd27K4D8oCkxVqwwz/FRWloJ5FFZ6QTqnuzLyqrwT5FRdz11/+C7d5tpM4qLi3C7Ta3A6zaP\n9Xg8OBzluFz5QAavvlrBgAERBEL8sNr3IxW1Eq3XHK1wDMOfSqmlQBfgI6XUcOr2fo41Nuq2EA0b\nK1hgK+hZSevmm80tL6dMyaZHj9B1v/QS5OZCVVU2xcXhu5N2e9fW1U/sB3UjBp9Whvcxqf6I4aij\nili/3lz38PjjgXWUlpprRHNzAysvLGw4w6j+vfJPtOcbMQQ7zm63U1xcVDtimDMnn1NPbXit4WKl\n70eqaiVaL54jhvOA44DV3pFDFXBRVGp1+Dr/zUBHv/LOwJZIK7OCBU51PStqXXxxNtddZ2fevKqQ\nI4avvipi4EAXW7eCwxF+Po0//gAoYvPmUvLzAz+rqKh7+nc4Go4YfE/x338Pa9aUccQRDWMkN91k\n/qw/YnjuOTf1B+SNjRh2764bMfzwQ6nXZWUeu3kzHH20C6fTBmRQXe2K6B74Y8XvR6ppJVovLiMG\npdRftdZLqUuMPFwp5XPkdgUejUrRHBX46nkHmAo87F3Itima/aStYIGtoGc1rSlToFcv+PbbLI4N\nUfdXX8Hw4ZksWRKZpi+Q3LZtUYP4QLbfwKO4uKg2vNG6dT6//AKbN9c9xU+c2HjgPCcncMTwxRcN\nvbT12z1pUi7nnptLq1Z1Kb4B9t23qMGU2dWr6/7Fs7MzefPNIsaOJapZWlb7fqSiVqL14jFiOAhY\nirnALJh7JyLDoJQ6EnM9RAngUkqNAQYBa5VSqzHdU+ND1xAaK1jgVNezqtbUqZmMGZPNer8yX90u\nF/z3v0XcdFM5Cxbk4nBUhF3v77/bgEK2bi2lul5ooqIiF99T/rZtpeTlmSOG7dsr+PjjwOHFxx83\nrlN/xBCM+iMGgO7doaQEMjLqRgy+9tQ/1kdNjYtlyzxUVGRHfP+t+v1IJa1E68UrxvAWgNb6YgCl\n1B5a6+1RqZj1fIxpbOozKdo6fVjBAltBz4pal1wCS5cCGxrW/cUX0K0b9O1bQHl5ZJq7dpk/27Qp\nqp0B5MN/xNC2rRmDOOAAyM/PD7o6uTHqxxiCEard27ZB586BM847dQp9jdnZmeTmNl5nNO2IB+mq\nlWi9eIwY7gMG+71fBAyJSiXOWMECp7qelbXuvBMztaMXX92vvJLF0UfnUl1dyq5dhSE3vAnG77/b\ngQK2bi2j/oDZf8SwdWspTmcBubkGO3bU0KpVZImHq6qiGzH42Lw5fK3qaheVlR5ARgzJ0Eq0Xlw2\n6gmCrKsXUpLWrRuWeTywaFEWZ50FBQXm2odIFqD5ktAFO8d/gZvHY76ys4PnMooF8U4a+MADWdxx\nR+wWAArWx5rJ7ethhaGZFfTSReu224ooL4d27WDoULDZiigqgtzcItqGkf6xrIxal0ubNoUNXEn+\n2VTbtTODzwUFkJ+fF3FCvfrB52D85z8FkVUaglWrMjngAPN33/0fNgzef98smzGj8QWA6fL9SKZW\novXiOV015bHC0CzV9ayuFbB3dFY1BQXw6KM12GymVmFhAT/9VIHL1fQymc6dC+nd2wNksHVrGQUF\ngeeUlQUGn53OAmw2D3/84SI/v+E6hMYw1302vl60rKwaiM2q7YqKGvxdSe+/X9dxrF1bxp57GrXr\nMvyx+vcjFbQSrRev4PNApdSv/jp+7w2tdbeoFAUhztxwQ02DsqIig9LS8NZPulw2vv3WHBa43Q3P\nMevB+7n5ysszonIlrV0b38R7jXHXXYHuo8MPL+Tee6sYOTJOPjHBMjRmGPZLWCuaiRWGZlbQSxet\n+nUXF5supMzMggZuoVCYBgFat254jv9agXbtivB4oHVre1gzjKIhPz82owWADRtMY1BZWcT0IDmS\nPZ5cXK5cHnwQpk4N/Cxdvh/J1Eq0XsxdSd49ni2BFYZmqa5nda1QK599Wnl5efz6aw0ORzjZXIow\nDAOw4XCU43AEplMtKzNzDwFs3VqGy1UAuNi5002nTpG5ksKhtDR2rqRPPzV/7rVXaK3HHzf4179y\n+fvfG97HRJCuWonWS9SsJEGwLHWupPAwDPPY+im2gYBtMz0ec+ZSbq7B1Km55pqKGNPczXyi5Zpr\nYjdSEaxFWgSfrTA0s4JeumgFcyUVF4NhZIXtSvLRqlVDV5J/LKFt20Lcbmjb1nTRfPFFNC1unFi6\nkpqisDCHnTvN3599NpsnnjCva9MmaN++qHa2VrxJl+9isvXiOitJKXUM0A/wAB9rrT+KSi1OWGFo\nlup6VtcK6LuDzBmdD/AIMKbpugIe0PuZu8hVXDuJynETAKisNFNgADgcZbjdBXg8NUBORNt7hkss\nXUlNMWmSgcdj3j+XC445xsXixZV06VLE6NE1TJsWfuryaLH6dzFV9OLqSlJK/Qu4GzMLahdglndX\nN0FIGSLZ5S1S6m8Z6u9Kcrt9rqS4ybN4ceJ2YvMZBR+rVtU9O27fLmtcWwrhxBiGAAO11tdqrf8J\nDMDc1U0QUoZItwCNFP8tQ6uq6k9XtfHll2YwOh7xgP/9T0KBQmIJ5xtn01rXhuC01i7it1GPIERF\n5bgJ7PhpM45tuwNeGAaObbu5b2Yl/3deTYPP67/0ht3YMGpfwag/YrDZDIYPNwMPwYLV6cJLL2XV\nJhcU0ptwYgyfK6VeA97FzJd0HIHbcSYdKwRzrKCXzlp77ml26MXFjbtlqqoarwcC8ycVFhaSmQkH\nHmgmz0tHw/Dzz3V/q+efL+LGiHZkj450/S4mWi+eweeJwDlAf8y43JPAC1GpxQkrBHNSXS/dtQwj\ng+3bsxvsYNarVwFPPFFJ//5mj/7TT2ZW1WDU31MZYOvWcjIy8qmsrAAK4hJ8Tjb9+9f9Xl5ejcPR\ncGV5LEnX72Ki9eKVEsPHZK31NOC5qBQEIQUoKjIoK2sYPN2xw86XX2bUGgaHw0ZJiYdt28Lz69fU\nQEZG3T7Q6Thi8OeOO3K46qoa/vtfO5Mn5/D669FtFSqkNuEYhl5KqX211t/HvTWCECfatze8u7I1\nxD9gvG2bjb32Mti2reFxxSXmHp8BkYeToQxgqLf8p9i0N6UpgaHAJ97fo6H+FGAhtQjnsagP8K1S\naqtS6lfva2O8GyYIsWTvvQ0qK2HLlsanXJqGoe6x35kbv5lOLZn6U4CF1CIcwzAc6Akcgbn/89HA\nMfFslCDEGpsN+vXz8OmnddlMg00t3bbNTrdupmHIyzP44tQb4zoNtiXjPwVYSC3CcSUVABdqrW8A\nUEo9Dtwbz0ZFihWi/FbQS3etIUNg3bpMLrvMLK/2LuLNzs6luNhcobZ7Nxx+uFm+xx42fj7zBvo/\nfwM2G7RqBT/8ACV+7pOXXoK//91MhdGhg/naujVRV5Z8rr4aZsww70nY1+23Mj3U9yBdv4uJ1ovn\nrKS5wC1+7xd4y46NSjEOWCHKn+p6LUHrgAMyeOaZHByOCgD++AOgiK1b62babNmSR05ODUcemU1u\nLuzc6cThcAFFuN0Gv/1WTk5OAdXVZue2fXslNlsOpaXlQFHAVNYePTxpvzhtxgzzp2F4cDjKwzon\nVCbc2s/T9LuYaL14Z1fN0Fqv9L3RWq+KSkkQkkzfvm5++MFOmdeD4ZulVFFR9wRbVgaFhfDqq5W0\na2cETD81DLjggryAMt+spCzv8ohqv1RCGRlJSouaBByO9DaALY1wRgy7lVJjgRWYSehPBBJnYgUh\nRuTmwlFHuVm0KItLL3VSXm4ahHK/B93SUhuFhWaHnpERuCmPxwPffhu445rTaQuYrlrpN3vTLn2l\nYFHC+epeAhwOLAKexQxEXxLPRglCvJg0qZp7783mm2/s7N7tMwz+IwZb7R7PmZl1O7lBXY6kSy6p\nW+BVUwOZmUatEfAPaGeGeOwaONAV/AOLM3my7N+QLjQ5YtBabwNGJaAtghB3DjzQwx13VHPWWXkM\nGuQmK8ugoqLu8/Jy05UEpiuo/krmDh083HxzNY89Zu5T4HSaIwuAadOquOmmujSr++/v4Ztvkren\nc6J55JFsbr89/mm5hfgT0jAopRZprc9WSv1Gwx3UDa11t3g1SinVCbgPeEdrvSBeOkLL5LTTXLRv\nbzBtWg6XXOLkm2/qBs5lZXWuJLudBoahVSsjwEXkizEA7NpVN7r47rsyFi3KTGjKbEGIFY2NGHxL\nEo9OREPq4QYeBvZOgrbQAjj6aDdvvVXB77/bGDw4H8Mwk+O5XJBn5sMjI6NhiotWrQJdRDU1tlrD\ncMwxbu65Bw480E379kaw/YIEwRI0Zhj2U0rth5lRFRqOGn6OS4sw3VdKqfR0xAopRceOBsXFBv/5\nTwYHHuimoKBumn394DOYI4YMP+9QTU3djKQjjnBz5ZVw2GFmDCLU3gxiMIRUpzHDsAJYD3xKQ6MA\nsDJIWaMopfoAS4AZWuu53rKZmKuqDWCi1tqX0lv+fYSEMHq0k9mzs5k+varWjQShDYO/K6my0kZ2\ndt0599+Pd91Dw3MHDXKxYkVabLMupDmNfUuPBi7ETIPxLvC01npttEJKqXxgOvC2X9mxQE+t9UCl\n1P7Ao8BApdQQYCzQWim1Q2v9crS6gtAUZ5/tZPr0bP7zn4wAwxAqxuD/xF9dXTdiqE/9bTIXLaqk\npKRIRgxCyhPSMGitPwQ+VEplAX8FblBK9QReBJ7RWv8coVY1cApwg1/ZUMwRBFrr9UqptkqpQq31\nMmBZhPULQlRkZ8Nll9XwwAPZtTOSwJyVVL9zb9Uq8NyqKvP8YDSWgnvx4grOPDM/yhYLQnwJZ7qq\nE3gFeEUpdSIwE7gK2CMSIa21G3ArpfyLOxC4G5wD6ARElOLbCrlHrKDXkrXOOw+mToXjjqs7vqjI\nXBRXXFw3P79z52yKi/0tgWlM/DV8v+fUm9bvK8/KymTEiEwOPRQ+/zzKi0pRIv27Sq6k1NRq0jAo\npbpjupTOweywbwJej0qtaWwEj2cIQlzxPa/472lsLnALPK5168D3lZWhRwyh9kf2uZJkZbSQqjS2\njuFyTIOQATwNHKO13hEjXV/nvxno6FfeGdgSaWVWSEqV6nqiBVDExo11yeCqqrJxu/Em2DOfvGy2\nytqkegC7drlo187A4ahqoDdoUAYzZtS5i8zyIpxOFw5HJR5PPua/V/oQzr2WJHqpf22NjRgewhwh\nbAbOBs72cwMZWushUSmaowKf4/YdYCrwsFLqUGCT1jq8FI1+WGFoZgW9lq717ruQm2uvPb5VK3NE\n4O9K6tYtj2K/ns3tzqR1aygurotA+84fPjx4O7KzMykuLmrgagrGt9/CAQeE1fyUQFxJqaUXD1dS\nD+9PgxhMHVVKHQnMx9wM0KWUGgMMAtYqpVZjLmobH03dVrDAqa4nWtC3r/nT4TB/VlVlU1pqjhhs\ntkIMw4ZhVOBwuPGNGMrK3LjdbhyO6hB6df+YvhFDTY05YnC78/D9C15zTTXdu3tYtCiLDz7I5Jln\nKigqgj32cAfUker8+mspubmNHyMjhtS/NstPnDOMUMuIBKF53H23aSTuuceMBxgGfP019O5dFyfo\n0wcGD4b77gteh//UVMMw3w8dCu+9B8ccA6u8SezXroVDD607Z9UqOProhnWkOlVVDYPuDah/U4Sk\nYLOF/malxWobK1jgVNcTrYZUVmZRWmrH4ajGMMyndsMow+Ew8D3Fl5d7cLlcEY0YfDEGl6tuxPDn\nn+U4HJ7ac/780zcyCawj1XE4Sps0DDJiSP1rk3kRghCCYLmS2rYNfMI11zFE9tSbzrOSvvvOHrAn\nhWBN0mLEYIVgjhX0RCuQ1q3Nqaj+6xb23DOwrupqO23a5AQEqIPpffxxXXlhYcPgc5s2BQFB7bZt\n8wPeW4XhwwuYPh3GhxktlOBzamqlhWGwwtAs1fVEqyEVFVmUlZmupC5dCnjsscoAd495jIHTWVO7\nZ3QoV1KPHqXeoHYRHo8Th6MqwJW0c2egK2nnTmu6kvbay83ixQZnn11Jebm5QPCTTzLo29dMUAji\nSrLCtaWFYRCEeODvSiors9GlS53LaMGCSl54IZN3382M2JXky63k70ryj8F27eqhR49G8mmkME89\nVclpp+Vz0kn55OebmWtfeimLI490cdppLkaNcia7iUJLwBCEOPHII4ZxySWGUVNjGBkZhuF2B35+\n7bWGAYYxZ07oOsAw+vQJfH/eeebvJ55ovgfDWLOm8Tqs8vrjD/N+3XKL+b5bt8DPG1yQkDQa61fT\nYsRghaFZquuJVkMqKjIpL89k7dpqOnbMZ8eOwLWX+flZQC5VVVU4HM6geh99ZKN9e6N2bQQU4XKZ\nriSns86V9Mcf/q6k+ljHlbR9eykulxlj6N07g127bIwenVf7+ebNpXT2O15cSamplRaGQRDigS/t\n9sqVmRx1lLvB5yUl5kNXbm7oh6999mn4mc89FcqVlA7YbDB4sBuPBzZurGbaNDPSvnhxZu3WkELq\nkhaGwQpRfivoiVYgbdua8YBPPsnijDMC014AHHSQ+bNDh8A0GU3p5eZmUVycFbBCuP6sJKuyxx5F\ntG0bWHbbbdC1K5SVwZVX5gUYBpmVlJpaaWEYrDA0S3U90WpIRUUmpaWZrF6dydSp5d6FbXVUV9uB\nAqqr62YQNaU3cWI2J53kwuHw4HTmAqaxCVzgVh/ruZLqc8YZZt6p++8vgI115cuXl5Ofb9CjR929\ntcr3I9X1xJUkCHEgL8/gq68yaNvWoEOHhr6ePK/rvKncQP7ceGNN7e/+riQrpb1ojMY2J8rLgzVr\nys1saV6GDCmgWzePWS6kDGm49lIQYkNeHvz2m51DD20YX4C6Fc+NxRgaIx0NQzRs3GjH4bBx6aW5\njB4dgZUV4oYYBkEIQX6+2eHvtVfwx2DfyuVIRgyhSBfDEOl1lJSY93b8+Fxefz2Ll1/OYtkyeOWV\nTAzDXBwnJJ60cCVZIZhjBT3RCmTPPc2fPXsGprzw4esEO3cuiCj47MN/57f27cMLPt98sxnMbQ7n\nngsLFzavjlCUlBTRpk34x2/damfjRthrr7quaOhQgDz228/c0+KHH6BHj/gZT/mfbkhaGAYrBHNS\nXU+0GlJVZQMKKSjw7doWSFkZQBEVFWW1gelI9Kqq6oLPgSkx6lP3z33GGWXcdlth+BcRhNNPr2Dh\nwvymD4yCHTtKcTaxuLl+SgwzVmNeY+/ebnr2zODrrz0cc4zp0OjZE2bOrOL882O/alr+p4MjriRB\nCIEvuNyxY/AO25faIpyd2Joi3KfhVM/IGu16jCVLKvjyyzLef7+Cl1+Gl1+uAOAvfzEN8qpVGWza\nZOOMM/L49Vcbd9+dHXT2kxAb0mLEIAjxoKDA7OU6dgze2/lcQb5YRKTsv7+HpUvN38M1DLFwp6Ri\nPKP+AsIOHQwefLCSY491s3p1BpddlseKFRn88Yedww4zR0ynneZiv/2smVMq1Unx5w9BSB75+XDW\nWc7aFc71sdnMJ9uiKF3GV15ZN3W1ffvwjEuwTj0jo+7cO++siq4xKciIES7atzc45RQXH31Uxl57\nGcyYUXd9f/lLAd99J11YJFRXh3ec3FVBCIHdDnPnVpHRyMSYgQODT2UNB18nn5ERfJ1EY+f4s2VL\nWe3vjbXVqtjtZmqRt9+u4IILAuMMxx5bwLXX5vDaa5ns3p2kBlqAV17JZNCgfHr2LGTy5JwmDaoY\nBkFIEsFyJkXCvvs2LAvHx19f77jjrOWs//nnUl57rYKpU6tYurScHj08PPtsFoceWsgVV+TywQcZ\njS60a2ls3mzjuutymTq1mjVrysnJgQsvzGv0nBT0NkZGU+ljBSFVcTrNOEV2duNDfN8oYeBAWL7c\nDHbvsQcccACsXGkaA98xDzwA48YFnt+rF/z4I9R4PVfvvQfDhtV9ftZZ8MILsbmmnTtperqq/7An\nhv++27fDs8/CY4/BH3/AeefBgAHQrx907tz0+enA5s3mzoO+TZEALrgAunWD228PPNZmCx1tSovg\nsxWmf6W6nmglS68Im83A4Shr9BiAl18uZdcu873H48EwzEd/U888prS0CghccdemjYv8/Axqasx+\noLKyAqibrlpd7cQ3bdbHq69WcOqpkU9pdTgin67a4PNm/M3OO898rVtn5403Mpk1K4Mvv7STlQVH\nHunmooucHHWUu9Y2pf73IzwMA+6/P5vZs7NxOqG42OCww+x06lTDypWZrFxZ7pf6vWnSwjAIgpVp\napbQSSc5efPNwI7bMIKf5F/X22+Xc8IJBd7j68r79286LnLkkdHHTiKhuKRV8PJm1jvE+wrgFe8r\nxlpN4SkopOLaSVSOi1/C8WXLMli4MIvVq8spLjbYuNHG998X8tJLNhYsqAwYQYSDxBgEIck0ZRhm\nzari008bG1E0rMtmMzjkENPRXt9bU19vwIBAIxAqN1Ss8BQ0b4Ge1bCXl5F/zx1x1bj77hxuvLGa\njh0NMjKge3eD88+HBx+s4uCDIw+4iGEQhCTTlGFo3Rr23ruud587t5L776+Mqq5g7L13ZB3HPvs0\nL7Jbce2kFmkc4sUPP9jYvNnGySfHbhJByrmSlFL9gdGYRmuK1npjE6cIQovirLPMDmD+/IafBTMM\nNlvjM58OP9zNxRfX0Levh6uuym3SuKxcWc6ee0af76dy3IRG3SrJikFt3GhjxYpMli/P4D//yaRr\nVw/HHutm8GAXRx3ljmoqcChXWSx5/fUsTj7ZFdNV8SlnGIAxwBVAF+Ay4JbkNkcQ4ku0K5H9XUTv\nvVfOsGEFtauw/WMQTU38ad0a7r67OuxMpllZoT+z8hzBbt0MRo50MnKkE5cLPv/czjvvZDJlSg4b\nN9r5619dXHhhDfvv78HjgVatmreKvLoaNmyws25dBt9+a0drO7m5sOeeHvbc0+Cww9z07+8ms4le\n+vXXM5kyJcyVa2GSioYhS2vtVEr9DnRIdmMEIZ706uVmjz2a35v26ePhgw/KUcrD2LGhj3vzzdAb\n4thskbfj9dfLOeWUAvbc08O0adURZVZNZTIzoX9/D/371zB5cg3ffWfn3XczueaaXH75xY7dbh5z\n4IFu+vTxcM45Tnr1atzF5hs9+Ae7uwBDm9nWrwBGhNCMss6EGQalVB9gCTBDaz3XWzYTOAIwgIla\n6zVAhVIqB/OeiRtJSGvefbciZrmLGuuYfE/yhx0W+pi6wHX4mv37m/WtWVOelquuwXTD9e7toXfv\nGv7xj7o0Jtu22fj6azuffprB3/6WR7duBj16eOja1UPbtgYeD1yfXUhOTfziC/EiIcFnpVQ+MB14\n26/sWKCn1nogMAqY5f3oIeAB4CbgsUS0TxCSRXZ2466ZxujaNXj5woUVLFxYEVAWzMVzyCHBZx89\n8kjwwLY/I0fWNHlMulNSYjBkiJsbbqhhzZpybrmlmqOPdmGzwS+/2Nm82c7SfjdRlWW9QHuiRgzV\nwCnADX5lQzFHEGit1yul2iqlCrXWX2AaCkEQGmHBArjlloZPo0OGNOzww/H912081PTBl1/upF07\nCwcUYkxenjntd8CA+p+Mo5Rx+ELpsQqs//ijjTlzssnPh2nTqoOO8prUaiQwnhDDoLV2A26llH9x\nB2CN33sH0An4PtL6rbAjkhX0RMt6evvv3/TTaGZmZsBK37ryjICytm0Dj6mogDFj4KmnzPLJk820\nCsXFRRQXw9FHA+TUnhNLV5J8P5qqA4480vcuu5HjrL+Dmw0z1hAxkl5BtFJBK9F64WkV4XS68Hgy\nAJA5KMkAAAqtSURBVJvf8UW43W4go7asstIOFATUWV1t7jJ3+OEwdmwpZ51lq92tzl9j+/bSmE2X\nTL17aE295mglwzD4vlWbgY5+5Z2BLdFUKE8XopUqWonWC0crOzuTv//dTDLnf3xWVuCIYfBg+Pbb\nwGMuvxwWLTJ/79KliC5dGtZvuqlie82pdg+tqmeVEYONuoyu7wBTgYeVUocCm7TWoefSCYIQFYbR\nMLNmKHr1Cnw/bBgMHRqYjVVIfxJiGJRSRwLzgRLApZQaAwwC1iqlVgNuYHy09VthaJbqeqJlPb1I\nXEkOR/2ZRg1dSaF47rlUvC7raSVaL+VdSVrrj4GDgnw0KRH6gtCS6dQpeOhu7709XHVVbFfMCumB\nbNQjCGmMwwGFheZ0Sn9sNrjwQnjyyeS0S0g+slFPjJBhp2ilkl64WmVl5iuQIqqqnDgcVTHVigXp\nqpVoveZoyYhBEFogNhuMHAlPPJHslgjJQkYMMUKeLkQrlfSapyUjhkRrJVqvOVqyUY8gCIIQgLiS\nBKEFsmCBmdJiv/2S3RIhWTTmSkoLw2CFoVmq64mW9fREy1paidZrSqukpFXI/l9cSYIgCEIAYhgE\nQRCEANLClZTsNgiCIFgNma4aI1qyP1K0Uk9PtKyllWg9ma4qCIIgxAwxDIIgCEIAEmMQBEFogUiM\nIUaIP1K0UklPtKyllWg9iTEIgiAIMUMMgyAIghCAGAZBEAQhADEMgiAIQgBiGARBEIQAZLqqIAhC\nC0Smq8YImdomWqmkJ1rW0kq0nkxXFQRBEGKGGAZBEAQhADEMgiAIQgApF2NQSnUC7gPe0VovSHZ7\nBEEQWhqpOGJwAw8nuxGCIAgtlZQzDFrrbYAr2e0QBEFoqcTdlaSU6gMsAWZored6y2YCRwAGMFFr\nvUYpdRnQF7iSNFhfIQiCYFXiOmJQSuUD04G3/cqOBXpqrQcCo4BZAFrrR7TWE4DBwHjgHKXU6fFs\nnyAIgtCQeI8YqoFTgBv8yoZijiDQWq9XSrVVShVqrcu8ZcuAZXFulyAIghCCuBoGrbUbcCul/Is7\nAGv83juATsD30Wg0tqxbEARBiJxUCD7bMGMNgiAIQgqQSMPg6/w3Ax39yjsDWxLYDkEQBKEREmUY\nbNTNNHoH+BuAUupQYJPWujxB7RAEQRCaIK7+eaXUkcB8oARzbcIOYBBwLXAM5mK28VrrdfFshyAI\ngiAIgiAIgiAIgiAIgiAIgiAIghBf0mpxWP2U3fFM4R1Eqz8wGnOm1xSt9cZY6nk1hwGnAfnAbVrr\nn2Ot4ad1EnAC5vXM0VrreGl59c4FDgOKgfVa6zvjqNURmAxkAA/Gc/KDUmoKsCfwJ/C01vqreGl5\n9ToCnwNdtNaeOOocBYwBsoF7tNZr46Xl1RuAmUInE5iltf48jloJSf2fiD7DTyuia0qFBW6xpH7K\n7nim8K5f9xhgLHAbcFmcNE8G/gnMBC6Nk4aPE4E7gKeBgXHWQmu9UGt9LeaaltlxlhsF/AJUAL/H\nWcsAKjE7tM1x1gLz+/EB8X/o2wVcjpkLbVCctQDKgHGY3/2/xFkrUan/E9Fn+IjomtLKMNRP2R3P\nFN5B6s7SWjsxO5oO8dAE5mF+iU7GfLKOJy8CD2I+Wb8XZy0AlJk7ZVsC1rV0BRZh/qNMjLPWw8A1\nmE9r/4inkFLqfMy/W1U8dQC01l8DQ4A78eY+i7PeOiAX0zg8EWetRKX+T0SfAUR+TSm3g5s/MUrZ\nHdaTUwy0KpRSOUAXIKwhYRSas4BpQE/guHA0mqFVgrkQsRi4ApgSZ70rgf8jiie1KLR+x3woKsd0\ny8VTawmwHPMJOyfOWnbM78bBwDnAs3HUekpr/aZS6lPM78aEOF/bTcBdwCSt9Z9x1mpW6v9w9Yii\nz2iGFpFcU8oahqZSdiul9gceBQZqrR/xfj4Ec2jWSim1A9jtfd9aKbVDa/1yHLUeAh7AvKeT4nR9\nh2AuGKzCdBmERZRaFwJ3e69nYbha0ep5j+mutY7I3RLltXUD/oUZY7g9zlonA49hDuXviKeW33F7\nEcHfLMrrOkEp9RBQADwVrlYz9P4NFAE3K6VWaa1fiqOW73+70X6juXpE2Gc0RyvSa0pZw0DsUnaH\nk8I7Vlqjwrqy6DW/AM6NQKM5Wk8R4T98c/S85RclQssb5Ls4QVpvAG8kQsuH1jrS+FM01/U2fh1S\nAvRuTKBWc1L/R6L3BZH1Gc3RiuiaUjbGoLV2a62r6xV3ALb7vfel7LaMVjI0E3196XptoiXfj1TS\ni6dWyhqGMElkyu5kpAdP5+tL12sTLevpybXVwyqGIZEpu5ORHjydry9dr020rKcn1xYmVjAMiUzZ\nnYz04Ol8fel6baJlPT25tggrTElUAlN2J1IrGZqJvr50vTbRku9HKuklo98SBEEQBEEQBEEQBEEQ\nBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEGINSm7wE0QmotSam9gA/BhvY/e0Frfm/gWmSilLgZuxcyC\n+Spm1ssTtNbv+h3zf5i75+2tQ2z5qJR6Eljz/+3dT4iVVRjH8a9Jm6YhCWwdYr8WuQsiJCQpLCPK\niP5IpUJBULkQitqIEESLooVgGEwW1iTURrJFUJD9o4IirRbxg8qgP2BUVARjSLfFc97m7TLNn3TE\nZn4fuMy9d86577kD8z7vOefleWzvHHrfVKrv64AJ22vn43vEwnU6p92OOBmOnuwTo6Qltk8kCdoA\neMb2w5IuBwxsAl7rtbmNCmrTGaNKXf4dGCStBo7bflTSC8CzJzDOWKQSGGLRkvQLVRHvaio18c22\nP2tVsR4HzmyP+2wfknQQ+Bi4uJ3Qu5q93wMfUCVD3wUus72lHeNW4AbbtwwdvputD1rfSyWN2P5d\n0nnAMnrJzyRtBW6i/mc/p0pcvg2MSlrlKrUJFWDGho4RMSf/hyR6EfNlFPjE9hVUxbOuIPs4cHeb\nadzL5Il2APxme03r+wiVm+YaKjfNANgHrJM00vpspPLZTOdPYD9wY6/Pi7TkaJIuATbYXmN7NVUm\n9K42a9kDbAZQlYncAOyd+58iYlJmDLHQLZf0xtB7D3iyDm73u6+BlZKWAwL2SOraj0rqrr67/YoL\ngK9s/wQg6QCwql3x7wc2SnoJuND269OMr/vc56llob1Ulb7rqZM8VPBZ2fseI1T1Llr79yU9SO0p\nvGO7X6glYs4SGGKh+2GGPYbj7WeXuvgYcGyqPi1Q/NFenkFd6Xf6yzZPAbuo7Jbjsxmk7U8lnStp\nLfCz7aO9wDQBvGx76xT9vpN0CFgH3A7sns3xIqaTpaSIHtu/AkckrQdQ2d5r0gWAL4AVks6WtJSq\nvTton3EYWApso+4Omq1xqjh8P5gMqH2L9d3ylKR7WsrlztPUMthFwKtzOF7ElDJjiIVuqqWkL23f\nyT9LHg56rzcBOyU9RG0+bxtqh+0fJT0GvAccAQ4DZ/XaPQdca/ubGcbXP+4+YDutmHvH9keSdgEH\nJU0A31J7C51XqJnC2NDdUqe6FG1ExOIm6Q5J57TnT0q6vz1fIumApCv/pd9mSTtOwfjOnyIoRswo\nS0kR/90y4E1Jb1G3u+5u5RQ/pO52mm7TeYukJ+ZrYJKuomYgmTVERERERERERERERERERERERERE\nRETE6eQvWE4Yr8iVHuYAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create a loglog plot of the U-235 continuous-energy fission cross section \n", "plt.loglog(u235.energy, fission.sigma, color='b', linewidth=1)\n", @@ -1010,11 +1875,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n", + "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:872: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", + " return c.reshape(shape_out)\n" + ] + } + ], "source": [ "# Construct a Pandas DataFrame for the microscopic nu-scattering matrix\n", "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", @@ -1042,11 +1918,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", From c8c64338402824175330097577c7fdc14b478d7e Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jan 2016 07:15:11 -0600 Subject: [PATCH 26/61] Various improvements to run_tests.py --- .gitignore | 3 + CMakeLists.txt | 43 +++++++------- tests/cleanup | 10 ---- tests/run_tests.py | 145 +++++++++++++++++++++++++-------------------- 4 files changed, 105 insertions(+), 96 deletions(-) delete mode 100755 tests/cleanup diff --git a/.gitignore b/.gitignore index 85ba2945a4..815e978510 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,8 @@ results_test.dat # Test build files tests/build/ +tests/coverage/ +tests/memcheck/ tests/ctestscript.run # HDF5 files @@ -60,6 +62,7 @@ data/nndc #Images *.ppm +*.voxel # PyCharm project configuration files .idea diff --git a/CMakeLists.txt b/CMakeLists.txt index 19c4e0ddc1..6e2960c20e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -313,35 +313,36 @@ include(CTest) # Get a list of all the tests to run file(GLOB_RECURSE TESTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_*.py) -# Check for MEM_CHECK and COVERAGE variables -if (DEFINED ENV{MEM_CHECK}) - set(MEM_CHECK $ENV{MEM_CHECK}) -else() - set(MEM_CHECK FALSE) -endif() -if (DEFINED ENV{COVERAGE}) - set(COVERAGE $ENV{COVERAGE}) -else() - set(COVERAGE FALSE) -endif() - # Loop through all the tests foreach(test ${TESTS}) # Get test information get_filename_component(TEST_NAME ${test} NAME) get_filename_component(TEST_PATH ${test} PATH) - # Check serial/parallel - if (${MPI_ENABLED}) - # Preform a parallel test + if (DEFINED ENV{MEM_CHECK}) + # Generate input files if needed + if (NOT EXISTS "${TEST_PATH}/geometry.xml") + execute_process(COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --build-inputs + WORKING_DIRECTORY ${TEST_PATH}) + endif() + + # Add serial test add_test(NAME ${TEST_NAME} WORKING_DIRECTORY ${TEST_PATH} - COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $ - --mpi_exec $ENV{MPI_DIR}/bin/mpiexec) + COMMAND $) else() - # Perform a serial test - add_test(NAME ${TEST_NAME} - WORKING_DIRECTORY ${TEST_PATH} - COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) + # Check serial/parallel + if (${MPI_ENABLED}) + # Preform a parallel test + add_test(NAME ${TEST_NAME} + WORKING_DIRECTORY ${TEST_PATH} + COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $ + --mpi_exec $ENV{MPI_DIR}/bin/mpiexec) + else() + # Perform a serial test + add_test(NAME ${TEST_NAME} + WORKING_DIRECTORY ${TEST_PATH} + COMMAND ${PYTHON_EXECUTABLE} ${TEST_NAME} --exe $) + endif() endif() endforeach(test) diff --git a/tests/cleanup b/tests/cleanup deleted file mode 100755 index 3369c797ee..0000000000 --- a/tests/cleanup +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# This simple script ensures that all binary -# output files have been deleted in all the -# folders. This can occur if a previous error -# occurred and the test suite was rerun without -# deleting left over binary files. This will -# cause an assertion error in some of the -# tests. -find . \( -name "*.h5" -o -name "*.ppm" \) -exec rm -f {} \; diff --git a/tests/run_tests.py b/tests/run_tests.py index eb8d8c5187..de253c9670 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -8,7 +8,7 @@ import shutil import re import glob import socket -from subprocess import call +from subprocess import call, check_output from collections import OrderedDict from optparse import OptionParser @@ -73,11 +73,11 @@ set(CTEST_UPDATE_COMMAND "git") set(CTEST_CONFIGURE_COMMAND "${{CMAKE_COMMAND}} -H${{CTEST_SOURCE_DIRECTORY}} -B${{CTEST_BINARY_DIRECTORY}} ${{CTEST_BUILD_OPTIONS}}") set(CTEST_MEMORYCHECK_COMMAND "{valgrind_cmd}") set(CTEST_MEMORYCHECK_COMMAND_OPTIONS "--tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes") -set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE ${{CTEST_SOURCE_DIRECTORY}}/../tests/valgrind.supp) +#set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE ${{CTEST_SOURCE_DIRECTORY}}/../tests/valgrind.supp) set(MEM_CHECK {mem_check}) set(ENV{{MEM_CHECK}} ${{MEM_CHECK}}) -set(CTEST_COVERAGE_COMMAND "{gcov_cmd}") +set(CTEST_COVERAGE_COMMAND "gcov") set(COVERAGE {coverage}) set(ENV{{COVERAGE}} ${{COVERAGE}}) @@ -87,9 +87,11 @@ ctest_start("{dashboard}") ctest_configure(RETURN_VALUE res) {update} ctest_build(RETURN_VALUE res) +if(NOT MEM_CHECK) ctest_test({tests} PARALLEL_LEVEL {n_procs}, RETURN_VALUE res) +endif() if(MEM_CHECK) -ctest_memcheck({tests}, RETURN_VALUE res) +ctest_memcheck({tests} RETURN_VALUE res) endif(MEM_CHECK) if(COVERAGE) ctest_coverage(RETURN_VALUE res) @@ -105,6 +107,32 @@ endif() # Define test data structure tests = OrderedDict() +def cleanup(path): + """Remove generated output files.""" + for dirpath, dirnames, filenames in os.walk(path): + for fname in filenames: + for ext in ['.h5', '.ppm', '.voxel']: + if fname.endswith(ext): + os.remove(os.path.join(dirpath, fname)) + + +def which(program): + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + path = path.strip('"') + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + return None + + class Test(object): def __init__(self, name, debug=False, optimize=False, mpi=False, openmp=False, phdf5=False, valgrind=False, coverage=False): @@ -119,8 +147,6 @@ class Test(object): self.success = True self.msg = None self.skipped = False - self.valgrind_cmd = "" - self.gcov_cmd = "" self.cmake = ['cmake', '-H..', '-Bbuild', '-DPYTHON_EXECUTABLE=' + sys.executable] @@ -231,42 +257,6 @@ class Test(object): self.success = False self.msg = 'Failed on testing.' - # Checks to see if file exists in PWD or PATH - def check_compiler(self): - result = False - if os.path.isfile(self.fc): - result = True - for path in os.environ["PATH"].split(":"): - if os.path.isfile(os.path.join(path, self.fc)): - result = True - if not result: - self.msg = 'Compiler not found: {0}'.\ - format((os.path.join(path, self.fc))) - self.success = False - - # Get valgrind command from user's environment - def find_valgrind(self): - result = False - for path in os.environ["PATH"].split(":"): - if os.path.isfile(os.path.join(path, 'valgrind')): - self.valgrind_cmd = os.path.join(path, 'valgrind') - result = True - break - if not result: - self.msg = 'valgrind not found.' - self.success = False - - # Get coverage command from user's environment - def find_coverage(self): - result = False - for path in os.environ["PATH"].split(":"): - if os.path.isfile(os.path.join(path, 'gcov')): - self.gcov_cmd = os.path.join(path, 'gcov') - result = True - break - if not result: - self.msg = 'gcov not found.' - self.success = False # Simple function to add a test to the global tests dictionary def add_test(name, debug=False, optimize=False, mpi=False, openmp=False,\ @@ -342,7 +332,7 @@ else: # Setup CTest script vars. Not used in non-script mode pwd = os.getcwd() ctest_vars = { - 'source_dir': os.path.join(pwd, '..'), + 'source_dir': os.path.join(pwd, os.pardir), 'build_dir': os.path.join(pwd, 'build'), 'host_name': socket.gethostname(), 'dashboard': dash, @@ -363,10 +353,10 @@ else: # Set up default valgrind tests (subset of all tests) # Currently takes too long to run all the tests with valgrind # Only used in script mode -valgrind_default_tests = "basic|cmfd_feed|confidence_intervals|\ -density_atombcm|eigenvalue_genperbatch|energy_grid|entropy|\ -filter_cell|lattice_multiple|output|plot_background|reflective_plane|\ -rotation|salphabeta_multiple|score_absorption|seed|source_energy_mono|\ +valgrind_default_tests = "cmfd_feed|confidence_intervals|\ +density|eigenvalue_genperbatch|energy_grid|entropy|\ +lattice_multiple|output|plotreflective_plane|\ +rotation|salphabetascore_absorption|seed|source_energy_mono|\ sourcepoint_batch|statepoint_interval|survival_biasing|\ tally_assumesep|translation|uniform_fs|universe|void" @@ -383,7 +373,7 @@ if len(list(tests.keys())) == 0: # Begin testing shutil.rmtree('build', ignore_errors=True) -call(['./cleanup']) # removes all binary and hdf5 output files from tests +cleanup('.') for key in iter(tests): test = tests[key] @@ -395,29 +385,34 @@ for key in iter(tests): sys.stdout.flush() # Verify fortran compiler exists - test.check_compiler() - if not test.success: + if which(test.fc) is None: + self.msg = 'Compiler not found: {0}'.format(test.fc) + self.success = False continue - # Get valgrind command + # Verify valgrind command exists if test.valgrind: - test.find_valgrind() - if not test.success: - continue + valgrind_cmd = which('valgrind') + if valgrind_cmd is None: + self.msg = 'No valgrind executable found.' + self.success = False + continue + else: + valgrind_cmd = '' - # Get coverage command + # Verify gcov/lcov exist if test.coverage: - test.find_coverage() - if not test.success: - continue + if which('gcov') is None: + self.msg = 'No {} executable found.'.format(exe) + self.success = False + continue # Set test specific CTest script vars. Not used in non-script mode ctest_vars.update({'build_name': test.get_build_name()}) ctest_vars.update({'build_opts': test.get_build_opts()}) ctest_vars.update({'mem_check': test.valgrind}) ctest_vars.update({'coverage': test.coverage}) - ctest_vars.update({'valgrind_cmd': test.valgrind_cmd}) - ctest_vars.update({'gcov_cmd': test.gcov_cmd}) + ctest_vars.update({'valgrind_cmd': valgrind_cmd}) # Check for user custom tests # INCLUDE is a CTest command that allows for a subset @@ -458,7 +453,7 @@ for key in iter(tests): test.run_ctests() # Leave build directory - os.chdir('..') + os.chdir(os.pardir) # Copy over log file if script_mode: @@ -473,15 +468,35 @@ for key in iter(tests): # For coverage builds, use lcov to generate HTML output if test.coverage: - call(['lcov', '--directory', '.', '--capture', - '--output-file', 'coverage.info']) - call(['genhtml', '--output-directory', 'coverage', 'coverage.info']) + if which('lcov') is None or which('genhtml') is None: + print('No lcov/genhtml command found. ' + 'Could not generate coverage report.') + else: + shutil.rmtree('coverage', ignore_errors=True) + call(['lcov', '--directory', '.', '--capture', + '--output-file', 'coverage.info']) + call(['genhtml', '--output-directory', 'coverage', 'coverage.info']) + os.remove('coverage.info') + + if test.valgrind: + # Copy memcheck output to memcheck directory + shutil.rmtree('memcheck', ignore_errors=True) + os.mkdir('memcheck') + memcheck_out = glob.glob('build/Testing/Temporary/MemoryChecker.*.log') + for fname in memcheck_out: + shutil.copy(fname, 'memcheck/') + + # Remove generated XML files + xml_files = check_output(['git', 'ls-files', '.', '--exclude-standard', + '--others']).split() + for f in xml_files: + os.remove(f) # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) if script_mode: os.remove('ctestscript.run') - call(['./cleanup']) + cleanup('.') # Print out summary of results print('\n' + '='*54) From b0995e44c1bfef47855825b50453cf1fa9867efe Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jan 2016 09:19:17 -0600 Subject: [PATCH 27/61] Merge test_many_scores into test_tallies --- tests/test_many_scores/geometry.xml | 181 - tests/test_many_scores/materials.xml | 272 -- tests/test_many_scores/results_true.dat | 101 - tests/test_many_scores/settings.xml | 19 - tests/test_many_scores/tallies.xml | 13 - tests/test_many_scores/test_many_scores.py | 11 - tests/test_tallies/inputs_true.dat | 2 +- tests/test_tallies/results_true.dat | 3698 +------------------- tests/test_tallies/test_tallies.py | 34 +- 9 files changed, 34 insertions(+), 4297 deletions(-) delete mode 100644 tests/test_many_scores/geometry.xml delete mode 100644 tests/test_many_scores/materials.xml delete mode 100644 tests/test_many_scores/results_true.dat delete mode 100644 tests/test_many_scores/settings.xml delete mode 100644 tests/test_many_scores/tallies.xml delete mode 100644 tests/test_many_scores/test_many_scores.py diff --git a/tests/test_many_scores/geometry.xml b/tests/test_many_scores/geometry.xml deleted file mode 100644 index f6f067aadd..0000000000 --- a/tests/test_many_scores/geometry.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 17 17 - -10.71 -10.71 - 1.26 1.26 - - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1 - 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 - 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - - - - - - 17 17 - -10.71 -10.71 - 1.26 1.26 - - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3 - 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3 - 3 3 3 3 3 4 3 3 4 3 3 4 3 3 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 - - - - - - 21 21 - -224.91 -224.91 - 21.42 21.42 - - 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 - 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 - 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 - 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 - 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 - 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 - 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 - 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 - 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 - 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 - 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 - 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 - 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 - 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 - - - - - - 21 21 - -224.91 -224.91 - 21.42 21.42 - - 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 - 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 - 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7 - 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 - 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 - 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 - 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 - 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 - 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 - 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 - 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 - 7 7 7 7 7 7 7 8 8 8 8 8 8 8 7 7 7 7 7 7 7 - 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 - 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 - - - - diff --git a/tests/test_many_scores/materials.xml b/tests/test_many_scores/materials.xml deleted file mode 100644 index 9c0b74f3f1..0000000000 --- a/tests/test_many_scores/materials.xml +++ /dev/null @@ -1,272 +0,0 @@ - - - - 71c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/test_many_scores/results_true.dat b/tests/test_many_scores/results_true.dat deleted file mode 100644 index ae5430e30a..0000000000 --- a/tests/test_many_scores/results_true.dat +++ /dev/null @@ -1,101 +0,0 @@ -k-combined: -0.000000E+00 0.000000E+00 -tally 1: -2.247257E+01 -1.683779E+02 -1.014000E+01 -3.427342E+01 -8.628000E+00 -2.481430E+01 -8.632000E+00 -2.483728E+01 -5.102293E-01 -8.710841E-02 -5.087118E-01 -8.657086E-02 -9.212024E+00 -2.829472E+01 -8.628000E+00 -2.481430E+01 -1.512000E+00 -7.620560E-01 -1.816851E+00 -1.102658E+00 -1.337996E+02 -5.985519E+03 -2.247257E+01 -1.683779E+02 -1.512960E-01 -2.623972E-02 --3.775020E-01 -1.055377E-01 -1.916133E-01 -4.680798E-02 -2.754367E-02 -3.320008E-04 -2.028374E-02 -1.319357E-02 -8.974271E-03 -1.681081E-03 -1.658978E-01 -1.520448E-02 -2.878360E-01 -5.645480E-02 -1.014000E+01 -3.427342E+01 -4.798897E-02 -1.551226E-03 --1.818770E-01 -1.492633E-02 -6.340651E-02 -9.011305E-03 -3.395308E-02 -4.612818E-04 -2.640250E-02 -6.434787E-04 --8.242639E-03 -9.516540E-04 -8.378601E-02 -2.645988E-03 -9.567484E-02 -7.262477E-03 -8.628000E+00 -2.481430E+01 -4.712248E-02 -1.140942E-03 --6.431930E-02 -4.290580E-03 -9.251642E-02 -8.134201E-03 -1.020119E-04 -1.154184E-04 -2.994164E-02 -3.079076E-04 -2.128844E-02 -2.046549E-04 --1.637972E-02 -1.459209E-04 -4.629047E-02 -7.823267E-04 -8.632000E+00 -2.483728E+01 -4.651997E-02 -1.133839E-03 --6.416955E-02 -4.279418E-03 -9.280565E-02 -8.095106E-03 --2.078094E-04 -1.151292E-04 -3.005568E-02 -3.104764E-04 -2.199519E-02 -2.179172E-04 --1.660645E-02 -1.451345E-04 -4.607553E-02 -7.673412E-04 -1.014000E+01 -3.427342E+01 -7.652723E-03 -3.578992E-05 diff --git a/tests/test_many_scores/settings.xml b/tests/test_many_scores/settings.xml deleted file mode 100644 index 08dc0d2e12..0000000000 --- a/tests/test_many_scores/settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - 5 - 2 - 500 - - - - - - -160 -160 -183 - 160 160 183 - - - - - diff --git a/tests/test_many_scores/tallies.xml b/tests/test_many_scores/tallies.xml deleted file mode 100644 index b8a154f1ac..0000000000 --- a/tests/test_many_scores/tallies.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - flux total scatter nu-scatter scatter-2 nu-scatter-2 transport n1n - absorption nu-fission kappa-fission flux-y2 total-y2 scatter-y2 - nu-scatter-y2 events delayed-nu-fission - - - - diff --git a/tests/test_many_scores/test_many_scores.py b/tests/test_many_scores/test_many_scores.py deleted file mode 100644 index 88c3bdfb3d..0000000000 --- a/tests/test_many_scores/test_many_scores.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -sys.path.insert(0, os.pardir) -from testing_harness import TestHarness - - -if __name__ == '__main__': - harness = TestHarness('statepoint.5.*', True) - harness.main() diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index 727d6f369d..657a9e77da 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -fb9a9e5d829d924e94f4e1b3862edbefdb9dbed42b97930a5ebe41c0bc052ce668dcf7a07c42d985d005f68b37c1233b6110c86432b7ed0e561e1ef653d23eca \ No newline at end of file +5e168146d91b7b5fadecb80a32df9edc906718fb2d70b68b4c18dbed0641739251a1c16177c9f4d47516dfd528ec930879534292ff0eb82af89eca2c3fa4a3e0 \ No newline at end of file diff --git a/tests/test_tallies/results_true.dat b/tests/test_tallies/results_true.dat index 76a31d6434..4f8b3956b7 100644 --- a/tests/test_tallies/results_true.dat +++ b/tests/test_tallies/results_true.dat @@ -1,3697 +1 @@ -k-combined: -9.903196E-01 4.279617E-02 -tally 1: -4.215917E+01 -3.561920E+02 -4.174788E+01 -3.505184E+02 -4.603223E+01 -4.242918E+02 -4.496760E+01 -4.075599E+02 -4.088099E+01 -3.376516E+02 -tally 2: -4.157239E+01 -3.482158E+02 -4.227810E+01 -3.613293E+02 -4.376107E+01 -3.835007E+02 -4.644205E+01 -4.327195E+02 -4.191554E+01 -3.522147E+02 -tally 3: -4.215917E+01 -3.561920E+02 -4.174788E+01 -3.505184E+02 -4.603223E+01 -4.242918E+02 -4.496402E+01 -4.075053E+02 -4.088458E+01 -3.377000E+02 -tally 4: -1.531988E+01 -4.816326E+01 -9.274393E+00 -1.821174E+01 -1.595868E+01 -5.124238E+01 -1.299895E+00 -6.417145E-01 -1.510024E+01 -4.604170E+01 -8.533361E+00 -1.462765E+01 -1.658141E+01 -5.595629E+01 -1.427417E+00 -6.621807E-01 -1.683102E+01 -5.741400E+01 -9.845257E+00 -2.028406E+01 -1.773179E+01 -6.477077E+01 -1.536972E+00 -6.111079E-01 -1.586070E+01 -5.360975E+01 -9.928220E+00 -2.089005E+01 -1.737609E+01 -6.161847E+01 -1.700608E+00 -8.439708E-01 -1.607027E+01 -5.490113E+01 -7.569336E+00 -1.280955E+01 -1.606086E+01 -5.308665E+01 -9.898901E-01 -3.143027E-01 -tally 5: -0.000000E+00 -0.000000E+00 -8.921179E+01 -1.601939E+03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -tally 6: -8.141852E-04 -1.337187E-07 -4.849156E-03 -4.744020E-06 -4.460252E-03 -4.015453E-06 -1.028479E-02 -2.136252E-05 -5.002274E-03 -5.056965E-06 -1.974747E-03 -7.882970E-07 -tally 7: -2.844008E+01 -1.619630E+02 -4.425619E+01 -3.938244E+02 -5.527425E+01 -6.120383E+02 -9.799897E+00 -1.957877E+01 -tally 8: -2.842000E+01 -1.620214E+02 -4.361000E+01 -3.810139E+02 -5.297000E+01 -5.616595E+02 -6.530000E+00 -8.828900E+00 -tally 9: -2.576000E+01 -1.331666E+02 -0.000000E+00 -0.000000E+00 -7.000000E-02 -1.300000E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.050675E+00 -2.274991E-01 -0.000000E+00 -0.000000E+00 -2.070821E+00 -8.886068E-01 -2.660000E+00 -1.422000E+00 -0.000000E+00 -0.000000E+00 -3.897000E+01 -3.042635E+02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.352932E-01 -4.705717E-02 -0.000000E+00 -0.000000E+00 -1.018668E+00 -2.090017E-01 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.570000E+00 -4.182700E+00 -0.000000E+00 -0.000000E+00 -4.968000E+01 -4.940534E+02 -6.537406E-02 -1.230788E-03 -0.000000E+00 -0.000000E+00 -8.678070E-02 -2.482037E-03 -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.290000E+00 -2.178900E+00 -1.610879E-01 -5.883677E-03 -6.530000E+00 -8.828900E+00 -3.151783E-01 -2.052521E-02 -tally 10: -2.868239E+01 -1.648549E+02 -6.779424E+00 -9.202676E+00 -6.446222E+01 -8.387204E+02 -3.367496E+01 -2.349072E+02 -tally 11: -1.241000E+01 -3.088870E+01 -1.241000E+01 -3.088870E+01 -1.364000E+01 -3.727140E+01 -1.364000E+01 -3.727140E+01 -3.251000E+01 -2.118597E+02 -3.251000E+01 -2.118597E+02 -7.297000E+01 -1.066904E+03 -7.297000E+01 -1.066904E+03 -tally 12: -9.880000E+00 -1.964520E+01 -9.880000E+00 -1.964520E+01 -1.022000E+01 -2.099620E+01 -1.022000E+01 -2.099620E+01 -1.479000E+01 -4.397670E+01 -1.479000E+01 -4.397670E+01 -3.470000E+01 -2.412094E+02 -3.470000E+01 -2.412094E+02 -6.194000E+01 -7.687326E+02 -6.194000E+01 -7.687326E+02 -tally 13: -3.560000E+00 -2.681800E+00 -3.560000E+00 -2.681800E+00 -1.930000E+00 -7.915000E-01 -1.930000E+00 -7.915000E-01 -3.870000E+00 -3.109100E+00 -3.870000E+00 -3.109100E+00 -3.500000E-01 -3.630000E-02 -3.500000E-01 -3.630000E-02 -3.680000E+00 -2.840200E+00 -3.680000E+00 -2.840200E+00 -2.050000E+00 -8.735000E-01 -2.050000E+00 -8.735000E-01 -3.910000E+00 -3.085100E+00 -3.910000E+00 -3.085100E+00 -3.900000E-01 -3.610000E-02 -3.900000E-01 -3.610000E-02 -5.130000E+00 -5.422100E+00 -5.130000E+00 -5.422100E+00 -3.100000E+00 -1.959200E+00 -3.100000E+00 -1.959200E+00 -5.840000E+00 -6.914600E+00 -5.840000E+00 -6.914600E+00 -5.400000E-01 -8.980000E-02 -5.400000E-01 -8.980000E-02 -1.215000E+01 -3.061010E+01 -1.215000E+01 -3.061010E+01 -7.220000E+00 -1.081680E+01 -7.220000E+00 -1.081680E+01 -1.355000E+01 -3.699090E+01 -1.355000E+01 -3.699090E+01 -1.360000E+00 -5.098000E-01 -1.360000E+00 -5.098000E-01 -2.199000E+01 -9.837430E+01 -2.199000E+01 -9.837430E+01 -1.243000E+01 -3.167470E+01 -1.243000E+01 -3.167470E+01 -2.451000E+01 -1.233915E+02 -2.451000E+01 -1.233915E+02 -2.460000E+00 -1.687000E+00 -2.460000E+00 -1.687000E+00 -tally 14: -2.127061E+01 -9.220793E+01 -5.602776E+01 -6.373945E+02 -6.367492E+01 -8.138443E+02 -5.529942E+01 -6.140264E+02 -1.951517E+01 -7.668661E+01 -tally 15: -2.075936E+01 -8.757254E+01 -5.524881E+01 -6.153139E+02 -6.475252E+01 -8.402281E+02 -5.446664E+01 -5.961174E+02 -2.074180E+01 -8.681580E+01 -tally 16: -2.128073E+01 -9.230382E+01 -5.601764E+01 -6.371703E+02 -6.367492E+01 -8.138443E+02 -5.529942E+01 -6.140264E+02 -1.951517E+01 -7.668661E+01 -tally 17: -8.088647E+00 -1.396899E+01 -3.960907E+00 -3.249150E+00 -8.430714E+00 -1.435355E+01 -7.192159E-01 -1.641710E-01 -1.974619E+01 -8.105078E+01 -1.212452E+01 -3.016420E+01 -2.228348E+01 -1.050847E+02 -1.748809E+00 -9.501796E-01 -2.257423E+01 -1.038902E+02 -1.351331E+01 -3.969787E+01 -2.507638E+01 -1.283664E+02 -2.193118E+00 -1.424580E+00 -2.192232E+01 -9.859711E+01 -1.096779E+01 -2.506373E+01 -2.074138E+01 -8.670015E+01 -1.469145E+00 -8.072204E-01 -6.850719E+00 -9.425536E+00 -4.584038E+00 -4.399762E+00 -7.176883E+00 -1.090693E+01 -8.244944E-01 -1.794291E-01 -tally 18: -7.510505E+01 -1.143811E+03 -8.792943E+00 -1.575416E+01 -4.214462E+01 -3.642975E+02 -4.335157E+00 -3.864423E+00 -tally 19: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.533174E+00 -1.298118E+00 -1.711611E-02 -5.967549E-05 -6.520000E+01 -8.551888E+02 -1.156315E+00 -2.733527E-01 -1.049628E-05 -2.261930E-11 -2.266169E+02 -1.049923E+04 -1.538090E-03 -1.381456E-06 -3.974412E-01 -3.209809E-02 -1.373550E+00 -3.796357E-01 -3.041781E+00 -1.891714E+00 -1.514235E+01 -4.620490E+01 -1.767552E+01 -6.295417E+01 -2.453769E-02 -1.227715E-04 -0.000000E+00 -0.000000E+00 -1.070200E+02 -2.305805E+03 -0.000000E+00 -0.000000E+00 -4.056389E-06 -3.411247E-12 -0.000000E+00 -0.000000E+00 -5.252455E-06 -2.290531E-11 -3.359792E-02 -2.267331E-04 -2.459115E-02 -1.233078E-04 -0.000000E+00 -0.000000E+00 -3.839050E+00 -2.975620E+00 -3.863588E+00 -3.013300E+00 -3.869051E-01 -3.180828E-02 -0.000000E+00 -0.000000E+00 -2.010800E+02 -8.160415E+03 -0.000000E+00 -0.000000E+00 -2.243766E-05 -1.069671E-10 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -7.004005E-05 -1.748739E-09 -8.104946E-02 -1.395618E-03 -0.000000E+00 -0.000000E+00 -5.317903E+01 -5.754103E+02 -5.356594E+01 -5.839391E+02 -tally 20: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.540000E+00 -1.293400E+00 -0.000000E+00 -0.000000E+00 -1.739000E+01 -6.083290E+01 -1.225263E+00 -3.054971E-01 -1.029200E-05 -2.180706E-11 -2.403775E+02 -1.175130E+04 -0.000000E+00 -0.000000E+00 -2.000000E-01 -9.000000E-03 -0.000000E+00 -0.000000E+00 -3.341227E+00 -2.322075E+00 -1.485000E+01 -4.439790E+01 -1.739000E+01 -6.083290E+01 -4.000000E-02 -6.000000E-04 -0.000000E+00 -0.000000E+00 -4.160000E+00 -3.501000E+00 -0.000000E+00 -0.000000E+00 -4.353200E-06 -4.363747E-12 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -2.000000E-02 -2.000000E-04 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -4.120000E+00 -3.438000E+00 -4.160000E+00 -3.501000E+00 -4.000000E-01 -3.600000E-02 -0.000000E+00 -0.000000E+00 -5.213000E+01 -5.552351E+02 -0.000000E+00 -0.000000E+00 -2.211790E-05 -1.055892E-10 -0.000000E+00 -0.000000E+00 -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.173000E+01 -5.467243E+02 -5.213000E+01 -5.552351E+02 -tally 21: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.422314E+00 -1.193460E+00 -1.686299E-02 -5.765477E-05 -1.739000E+01 -6.083290E+01 -1.131528E+00 -2.612886E-01 -1.029200E-05 -2.180706E-11 -2.217588E+02 -1.003581E+04 -1.408027E-03 -1.849607E-06 -3.946436E-01 -3.166261E-02 -1.288136E+00 -3.382059E-01 -2.975121E+00 -1.806644E+00 -1.496769E+01 -4.502714E+01 -1.739000E+01 -6.083290E+01 -4.285618E-02 -4.109734E-04 -0.000000E+00 -0.000000E+00 -4.160000E+00 -3.501000E+00 -0.000000E+00 -0.000000E+00 -4.353200E-06 -4.363747E-12 -0.000000E+00 -0.000000E+00 -2.179241E-05 -4.749090E-10 -3.146594E-02 -2.159308E-04 -4.278352E-02 -4.094478E-04 -0.000000E+00 -0.000000E+00 -4.117144E+00 -3.431861E+00 -4.160000E+00 -3.501000E+00 -3.832282E-01 -3.169516E-02 -0.000000E+00 -0.000000E+00 -5.213000E+01 -5.552351E+02 -0.000000E+00 -0.000000E+00 -2.211790E-05 -1.055892E-10 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -1.736514E-04 -1.245171E-08 -7.989710E-02 -1.377742E-03 -0.000000E+00 -0.000000E+00 -5.174677E+01 -5.469474E+02 -5.213000E+01 -5.552351E+02 -tally 22: -3.890713E+01 -3.046363E+02 -1.366220E+01 -3.758161E+01 -6.561669E+01 -8.680729E+02 -2.382728E+01 -1.170590E+02 -8.047875E+00 -1.334796E+01 -4.056568E+01 -3.389623E+02 -tally 23: -3.890713E+01 -3.046363E+02 --1.623579E-01 -4.602199E-02 -4.860074E-01 -5.999399E-01 --7.895692E-01 -2.803790E-01 -2.525526E-01 -8.261176E-02 -9.103525E-02 -2.246700E-01 -4.583205E-01 -8.444556E-02 --1.246553E-01 -2.351010E-01 --3.534581E-01 -1.247916E-01 --3.700473E-01 -5.215562E-02 --1.831625E-01 -1.927381E-01 --1.540114E-01 -1.918221E-02 --1.266458E-01 -1.455875E-01 --6.796869E-01 -3.911926E-01 -1.987931E-02 -4.966442E-02 -4.443797E-01 -8.842717E-02 --1.073855E-01 -4.912428E-02 --3.999416E-02 -4.440138E-02 -2.857919E-01 -6.935717E-02 -4.174851E-01 -5.485570E-02 --2.178958E-01 -8.052149E-02 --1.179644E-02 -6.709330E-02 -8.843286E-01 -2.749681E-01 -2.935079E-01 -3.032897E-02 --1.809434E-01 -1.902413E-01 --2.091991E-01 -1.061912E-01 --7.137275E-02 -4.397656E-02 -2.311558E-01 -4.680679E-02 -9.927573E-02 -1.844111E-01 --2.821437E-02 -7.293762E-02 -6.224251E-01 -1.028351E-01 -4.136440E-01 -5.198207E-02 --7.833133E-02 -1.192960E-02 -1.041586E-01 -1.587417E-01 --3.595677E-01 -3.086335E-01 --2.096284E-01 -7.881012E-02 -1.366220E+01 -3.758161E+01 -1.461402E-02 -3.260482E-03 -8.325893E-02 -6.248769E-02 --2.785736E-01 -3.698417E-02 -1.932396E-03 -1.561742E-02 -8.063397E-02 -3.598680E-02 -8.565555E-02 -5.344369E-03 --3.899905E-02 -2.422867E-02 --1.215439E-01 -9.193858E-03 --1.982614E-01 -1.045860E-02 --7.712629E-02 -2.199979E-02 -3.626484E-02 -9.872078E-04 --6.305159E-02 -1.645879E-02 --3.052155E-01 -5.620564E-02 -3.507115E-02 -1.056383E-02 -1.297490E-02 -5.889958E-03 --1.208752E-02 -7.323602E-03 --3.441007E-03 -1.841496E-02 -5.543442E-02 -1.186636E-02 -8.000436E-02 -3.703835E-03 --3.636792E-02 -1.490603E-02 -8.753196E-02 -7.958027E-03 -2.066727E-01 -1.414130E-02 -3.652482E-02 -8.380395E-04 --1.652432E-01 -1.878732E-02 --1.375567E-01 -1.302400E-02 -3.692057E-03 -6.312506E-03 -9.016211E-02 -6.699735E-03 --5.875401E-02 -1.731945E-02 --3.960008E-02 -3.595906E-03 -1.653510E-01 -9.277293E-03 -4.064973E-02 -2.794606E-03 --1.729061E-02 -3.219772E-03 -5.764808E-02 -1.861051E-02 --5.970583E-02 -2.070164E-02 --6.739411E-02 -1.063341E-02 -6.561669E+01 -8.680729E+02 --7.938430E-01 -2.994198E-01 -9.278084E-01 -1.861899E+00 --1.432236E+00 -7.429647E-01 -7.460836E-02 -5.946808E-01 -6.140731E-02 -3.175177E-01 -1.212677E+00 -5.125288E-01 -1.952865E-02 -5.468421E-01 --2.965796E-01 -1.123288E-01 --5.334195E-01 -1.589612E-01 --6.340814E-01 -4.874650E-01 --4.264003E-02 -9.109571E-03 --4.323424E-01 -3.370329E-01 --1.186876E+00 -9.854644E-01 --2.420825E-01 -1.699455E-01 -2.920627E-02 -6.816643E-02 --2.684345E-01 -9.799236E-02 -1.281596E-01 -3.092987E-01 -3.746150E-01 -1.242044E-01 -1.035056E+00 -2.589772E-01 -2.005450E-01 -2.074622E-01 -5.412719E-01 -3.193584E-01 -1.070173E+00 -3.266747E-01 -2.657850E-01 -1.599950E-01 --4.694853E-01 -2.738937E-01 --7.761977E-01 -2.561652E-01 -3.673179E-02 -9.486916E-02 -3.309909E-01 -1.095243E-01 -1.623761E-01 -2.874582E-01 -2.846296E-01 -2.430397E-01 -7.384842E-01 -2.556480E-01 -3.577508E-01 -1.763210E-01 --2.917525E-01 -1.875646E-01 -1.634324E-01 -2.952144E-01 --4.329582E-01 -3.418652E-01 --2.719362E-01 -2.278925E-01 -2.382728E+01 -1.170590E+02 --4.718326E-01 -1.961501E-01 -1.612551E-02 -2.815245E-02 --6.390587E-01 -1.902968E-01 -2.290989E-01 -3.758858E-02 --1.568179E-01 -1.509162E-01 --2.363058E-01 -6.671396E-02 -4.350800E-02 -1.031680E-01 --2.956828E-01 -2.515141E-02 -4.835878E-01 -8.614200E-02 --5.365970E-02 -8.404087E-02 -6.079969E-02 -3.684343E-02 --1.313088E-02 -1.488843E-02 --2.603258E-02 -2.900625E-02 -1.249213E-01 -2.737277E-02 --4.491422E-01 -9.482600E-02 --1.095589E-01 -3.711500E-02 -2.248159E-01 -2.815827E-02 --5.976009E-02 -5.887828E-03 -6.097208E-02 -5.393315E-02 -3.449714E-02 -4.332442E-02 -1.030757E-01 -2.839453E-02 --4.399117E-01 -8.887569E-02 --4.564910E-01 -1.172398E-01 --2.528382E-01 -1.217655E-01 --3.443316E-01 -4.275616E-02 -5.437008E-02 -2.355567E-02 -5.505588E-02 -5.479129E-02 --8.326640E-02 -3.095858E-02 -1.888781E-01 -2.884542E-02 -1.981251E-01 -1.520694E-02 -5.279866E-02 -1.020641E-01 --1.465368E-01 -3.070686E-02 -2.356940E-01 -7.899657E-02 -4.109278E-01 -5.291082E-02 --2.572510E-01 -3.420895E-02 -8.047875E+00 -1.334796E+01 --1.707535E-01 -3.290927E-02 -1.024687E-01 -1.308811E-02 --1.805451E-01 -1.696222E-02 -3.519587E-02 -7.546726E-03 --1.034933E-01 -2.224207E-02 --1.580512E-01 -2.369625E-02 --4.302961E-02 -1.635623E-02 --2.992903E-02 -5.190220E-03 -2.130862E-01 -1.186351E-02 --3.321696E-02 -7.972404E-03 -4.992040E-02 -5.667098E-03 -1.261320E-02 -2.436872E-03 -8.314024E-04 -5.360616E-03 --6.318247E-02 -1.644558E-03 --1.373600E-01 -1.030707E-02 -1.511677E-03 -3.467685E-03 -1.923485E-02 -8.106508E-04 --1.180094E-01 -4.381376E-03 --2.798056E-02 -4.871288E-03 --7.689499E-02 -7.079493E-03 --5.842586E-02 -1.380713E-03 --9.946341E-02 -7.085062E-03 --8.061825E-02 -8.679468E-03 --9.229524E-03 -9.187483E-03 --1.048310E-01 -3.506026E-03 -3.666209E-02 -3.259203E-03 -1.190727E-01 -4.935341E-03 --7.391655E-02 -2.805554E-03 -2.029126E-02 -2.497736E-03 -2.787185E-02 -5.677987E-04 -6.873108E-02 -1.287727E-02 --5.262840E-02 -3.190440E-03 -3.910911E-02 -8.661121E-03 -1.076197E-01 -5.456176E-03 --7.476066E-02 -2.693605E-03 -4.056568E+01 -3.389623E+02 --6.428633E-01 -6.128893E-01 -4.878518E-01 -2.130257E-01 --9.548044E-01 -4.556949E-01 -2.234940E-01 -1.006817E-01 -1.080276E-01 -5.980158E-01 --3.639229E-01 -3.120105E-01 -3.237506E-01 -3.451548E-01 -1.143081E-01 -7.924550E-02 -6.456733E-01 -2.424413E-01 -1.478136E-01 -1.458665E-01 -2.134798E-02 -9.102875E-02 -3.633264E-01 -7.386463E-02 --2.213946E-01 -1.253249E-01 --3.153847E-01 -1.094273E-01 --7.161113E-01 -2.275500E-01 --2.461979E-01 -1.484452E-01 -2.332886E-01 -9.715521E-02 --7.029988E-02 -1.835254E-02 --1.982842E-01 -9.722998E-02 --2.089693E-01 -2.271404E-01 -7.316104E-02 -3.974665E-02 --3.266640E-01 -8.054809E-02 --5.126088E-01 -3.234942E-01 --3.048753E-01 -3.439501E-01 --4.872647E-01 -9.473730E-02 -1.590200E-01 -3.613462E-02 -4.641787E-01 -1.671339E-01 --1.391114E-01 -3.581561E-02 -2.209343E-01 -1.489367E-02 -3.015665E-01 -4.265694E-02 -1.334716E-01 -2.321929E-01 --3.702914E-01 -1.699549E-01 -8.891532E-02 -1.708595E-01 -6.123686E-01 -1.429184E-01 --5.891300E-01 -1.085467E-01 -tally 24: -3.862543E+01 -2.993190E+02 --5.083613E-01 -2.933365E-01 --4.356793E-01 -6.676831E-01 --6.093148E-01 -5.685331E-01 -2.512276E-01 -1.308652E-01 --1.075955E+00 -4.775270E-01 -3.660307E-01 -1.627691E-01 -5.402149E-01 -2.324946E-01 --3.887573E-01 -1.028105E-01 -4.324152E-01 -1.015147E-01 -3.306993E-02 -8.425069E-02 -2.127456E-01 -5.435453E-02 -2.977294E-01 -1.088039E-01 --1.055079E+00 -3.590635E-01 --6.740592E-01 -2.606281E-01 -3.329512E-01 -1.587428E-01 --1.248691E-01 -1.659045E-01 -2.306000E-01 -1.062057E-01 -9.127791E-02 -2.649459E-01 -2.629881E-01 -4.786229E-02 -2.286813E-01 -2.363629E-02 -6.338613E-01 -1.118828E-01 -7.466647E-01 -1.424535E-01 -7.955161E-02 -1.003327E-02 -1.082691E-01 -2.727882E-02 --5.295185E-01 -1.335133E-01 --6.321517E-01 -1.422916E-01 -1.236137E-01 -2.041422E-01 --5.389265E-02 -1.852888E-01 -3.746082E-01 -5.580885E-02 -1.383528E-01 -2.754456E-01 -5.081204E-01 -1.886515E-01 --4.022264E-01 -1.417397E-01 --3.377771E-01 -6.673888E-02 -1.170109E-01 -1.783182E-02 --2.097916E-01 -7.139323E-02 -1.438678E+01 -4.193571E+01 --6.547124E-01 -1.780450E-01 -2.207489E-01 -2.115835E-01 -4.952323E-02 -3.039341E-01 -6.681546E-01 -1.389250E-01 --4.078026E-02 -4.393667E-02 --8.695509E-01 -2.850853E-01 --1.792062E-01 -7.367253E-02 --5.657500E-01 -2.115125E-01 --8.525189E-02 -2.541971E-02 -5.227867E-02 -2.008468E-02 -6.825349E-02 -5.316522E-02 -3.763076E-01 -7.112554E-02 --1.279973E-02 -1.883096E-01 -7.775189E-02 -6.874374E-02 -1.119537E-01 -8.467755E-02 --1.600632E-01 -8.650448E-02 -6.210095E-01 -1.094309E-01 --9.997484E-02 -3.935353E-02 --2.300525E-01 -2.351925E-02 -2.486103E-02 -3.125565E-02 -1.289518E-02 -2.879251E-02 --3.166559E-01 -2.931428E-02 --1.379285E-02 -2.416257E-02 -1.220552E-02 -5.154030E-02 --1.431676E-01 -3.434080E-02 -8.148581E-02 -4.218412E-02 -8.541678E-03 -6.396306E-02 --7.851012E-03 -5.799658E-02 -2.435723E-01 -6.744263E-02 --2.429877E-01 -6.966516E-02 --1.638644E-01 -2.058798E-02 --8.986584E-03 -1.374824E-02 -3.547454E-01 -7.765460E-02 --1.570173E-01 -6.916960E-02 --1.056941E-02 -7.626528E-03 -6.400634E+01 -8.298077E+02 --3.894111E-01 -8.617494E-01 -1.796567E-01 -1.065356E+00 --1.561037E+00 -7.701475E-01 --2.237530E-01 -2.259442E-01 -1.109999E+00 -6.179412E-01 -1.636912E+00 -7.887441E-01 -4.661183E-01 -4.191138E-01 --1.040546E+00 -2.971961E-01 -1.044850E-01 -1.493530E-01 --4.991935E-01 -3.222404E-01 --4.205099E-01 -2.734911E-01 --7.583139E-01 -3.000853E-01 --3.750811E-01 -1.348273E-01 --6.355508E-01 -3.666139E-01 -5.233787E-01 -1.292414E-01 --2.869538E-02 -9.115092E-02 -6.851052E-01 -3.061040E-01 -1.703522E-01 -7.300335E-02 -4.541075E-01 -4.438507E-01 --2.674857E-01 -4.718588E-01 -3.022517E-02 -1.136781E-01 -5.755596E-01 -2.688162E-01 -2.698373E-01 -1.403188E-01 -8.772347E-01 -3.503562E-01 --4.258508E-01 -1.400825E-01 --1.384853E-01 -4.924947E-02 --1.009402E-01 -2.039230E-01 --1.339732E-01 -4.772083E-02 --3.249636E-01 -4.339747E-01 -1.564400E-01 -2.703717E-01 -2.536360E-01 -8.543919E-02 --3.622063E-01 -7.442240E-02 --2.074953E-02 -1.355614E-01 --3.909820E-02 -1.007999E-01 -3.162815E-01 -9.656425E-02 -2.426423E+01 -1.215124E+02 --9.628829E-01 -3.563586E-01 -2.964625E-01 -9.739638E-02 --3.680881E-01 -3.484018E-01 -4.339143E-01 -7.590564E-02 -4.633394E-02 -1.080030E-01 -3.091634E-01 -1.246585E-01 -4.520500E-02 -1.095704E-01 -2.479383E-01 -1.138276E-01 -6.457108E-02 -6.833667E-02 --5.623363E-02 -1.087254E-01 -3.675294E-01 -9.602246E-02 --1.459951E-01 -9.440544E-02 --6.817672E-02 -4.978066E-02 -1.076782E-02 -1.697440E-01 --1.024501E-02 -1.184830E-01 --1.654178E-01 -1.689209E-02 --1.006214E-01 -3.392546E-02 -5.070063E-01 -7.598100E-02 -2.251704E-01 -7.867348E-02 --1.693789E-01 -2.069974E-01 --2.790249E-01 -2.674643E-02 -3.888604E-01 -3.649330E-02 -7.614452E-02 -7.098023E-02 -1.236282E-02 -5.476895E-02 --3.151637E-01 -3.543466E-02 --6.363562E-01 -9.323507E-02 -2.808153E-01 -8.537981E-02 -2.197639E-01 -3.393653E-02 -8.660625E-02 -1.575544E-02 -3.733826E-02 -1.449783E-02 -8.800903E-04 -3.993931E-02 -3.304886E-01 -3.099095E-02 --4.149186E-02 -5.375091E-02 -2.448819E-01 -9.225028E-02 --1.230091E-01 -3.865008E-02 -7.600812E+00 -1.199814E+01 --8.738539E-01 -3.078183E-01 --2.592305E-01 -1.015952E-01 --6.391696E-02 -6.657129E-02 --2.857855E-01 -2.216294E-02 --3.516811E-01 -3.429194E-02 -4.585144E-02 -6.204056E-02 --1.599494E-01 -1.684846E-02 --2.364219E-01 -1.550644E-02 -1.197289E-01 -8.631394E-02 --1.364517E-01 -5.086560E-02 --2.213374E-01 -2.779096E-02 --7.328761E-02 -1.216230E-02 -2.476803E-01 -2.724500E-02 --6.356296E-02 -2.513244E-02 --3.886281E-01 -9.479377E-02 -1.006972E-01 -1.352120E-02 -6.932242E-02 -3.192705E-02 --3.232505E-02 -5.592418E-02 -9.582599E-02 -1.504811E-02 --2.887999E-01 -3.760482E-02 --2.372013E-01 -1.868786E-02 --1.655526E-01 -4.720116E-02 -8.611265E-02 -2.284310E-02 --2.142116E-01 -2.619080E-02 --1.811202E-01 -1.457105E-02 -1.430164E-01 -2.016598E-02 --4.066031E-01 -7.671356E-02 -1.364946E-01 -1.385677E-02 -8.357667E-02 -1.521943E-02 --2.235270E-02 -1.029570E-02 --7.920760E-02 -4.227880E-02 -2.622096E-01 -2.327728E-02 --7.787296E-03 -2.288300E-02 --1.645219E-02 -5.394704E-02 -7.274557E-02 -1.075570E-02 -4.104875E+01 -3.455300E+02 --9.827893E-01 -2.751051E-01 -3.227606E-01 -1.213711E-01 --1.272840E-02 -2.813639E-01 --1.910394E-01 -5.682320E-02 -4.136260E-01 -2.444497E-01 --5.123352E-02 -3.867174E-01 -4.424857E-02 -9.651204E-02 --3.975443E-02 -1.867060E-01 -7.618837E-01 -1.756891E-01 -4.259599E-01 -1.146646E-01 -5.658031E-02 -1.366891E-01 -2.464931E-01 -2.181122E-01 --1.593998E-01 -2.666678E-01 --1.928096E-01 -1.216164E-01 --7.020992E-01 -1.701086E-01 -3.914244E-01 -1.772217E-01 -3.285697E-01 -1.521826E-01 --2.947923E-02 -8.201284E-02 --1.346653E-01 -4.498340E-02 -2.112724E-01 -9.923303E-02 --8.551910E-02 -8.804286E-03 --3.631005E-01 -1.168145E-01 --1.840770E-01 -5.714283E-02 --2.709303E-02 -9.381338E-02 --2.104005E-02 -4.479215E-02 -4.059493E-01 -8.277066E-02 -2.877400E-01 -8.584721E-02 -4.881128E-02 -1.864179E-01 -8.584545E-02 -4.421744E-02 --4.392466E-01 -6.260373E-02 --3.143214E-02 -8.184856E-02 --5.630973E-01 -1.323469E-01 --8.010498E-02 -1.096975E-01 -1.818829E-01 -1.717701E-02 --1.062149E-01 -5.400365E-02 -tally 25: -3.862543E+01 -2.993190E+02 --5.083613E-01 -2.933365E-01 --4.356793E-01 -6.676831E-01 --6.093148E-01 -5.685331E-01 -2.512276E-01 -1.308652E-01 --1.075955E+00 -4.775270E-01 -3.660307E-01 -1.627691E-01 -5.402149E-01 -2.324946E-01 --3.887573E-01 -1.028105E-01 -4.324152E-01 -1.015147E-01 -3.306993E-02 -8.425069E-02 -2.127456E-01 -5.435453E-02 -2.977294E-01 -1.088039E-01 --1.055079E+00 -3.590635E-01 --6.740592E-01 -2.606281E-01 -3.329512E-01 -1.587428E-01 --1.248691E-01 -1.659045E-01 -2.306000E-01 -1.062057E-01 -9.127791E-02 -2.649459E-01 -2.629881E-01 -4.786229E-02 -2.286813E-01 -2.363629E-02 -6.338613E-01 -1.118828E-01 -7.466647E-01 -1.424535E-01 -7.955161E-02 -1.003327E-02 -1.082691E-01 -2.727882E-02 --5.295185E-01 -1.335133E-01 --6.321517E-01 -1.422916E-01 -1.236137E-01 -2.041422E-01 --5.389265E-02 -1.852888E-01 -3.746082E-01 -5.580885E-02 -1.383528E-01 -2.754456E-01 -5.081204E-01 -1.886515E-01 --4.022264E-01 -1.417397E-01 --3.377771E-01 -6.673888E-02 -1.170109E-01 -1.783182E-02 --2.097916E-01 -7.139323E-02 -1.438678E+01 -4.193571E+01 --6.547124E-01 -1.780450E-01 -2.207489E-01 -2.115835E-01 -4.952323E-02 -3.039341E-01 -6.681546E-01 -1.389250E-01 --4.078026E-02 -4.393667E-02 --8.695509E-01 -2.850853E-01 --1.792062E-01 -7.367253E-02 --5.657500E-01 -2.115125E-01 --8.525189E-02 -2.541971E-02 -5.227867E-02 -2.008468E-02 -6.825349E-02 -5.316522E-02 -3.763076E-01 -7.112554E-02 --1.279973E-02 -1.883096E-01 -7.775189E-02 -6.874374E-02 -1.119537E-01 -8.467755E-02 --1.600632E-01 -8.650448E-02 -6.210095E-01 -1.094309E-01 --9.997484E-02 -3.935353E-02 --2.300525E-01 -2.351925E-02 -2.486103E-02 -3.125565E-02 -1.289518E-02 -2.879251E-02 --3.166559E-01 -2.931428E-02 --1.379285E-02 -2.416257E-02 -1.220552E-02 -5.154030E-02 --1.431676E-01 -3.434080E-02 -8.148581E-02 -4.218412E-02 -8.541678E-03 -6.396306E-02 --7.851012E-03 -5.799658E-02 -2.435723E-01 -6.744263E-02 --2.429877E-01 -6.966516E-02 --1.638644E-01 -2.058798E-02 --8.986584E-03 -1.374824E-02 -3.547454E-01 -7.765460E-02 --1.570173E-01 -6.916960E-02 --1.056941E-02 -7.626528E-03 -6.400634E+01 -8.298077E+02 --3.894111E-01 -8.617494E-01 -1.796567E-01 -1.065356E+00 --1.561037E+00 -7.701475E-01 --2.237530E-01 -2.259442E-01 -1.109999E+00 -6.179412E-01 -1.636912E+00 -7.887441E-01 -4.661183E-01 -4.191138E-01 --1.040546E+00 -2.971961E-01 -1.044850E-01 -1.493530E-01 --4.991935E-01 -3.222404E-01 --4.205099E-01 -2.734911E-01 --7.583139E-01 -3.000853E-01 --3.750811E-01 -1.348273E-01 --6.355508E-01 -3.666139E-01 -5.233787E-01 -1.292414E-01 --2.869538E-02 -9.115092E-02 -6.851052E-01 -3.061040E-01 -1.703522E-01 -7.300335E-02 -4.541075E-01 -4.438507E-01 --2.674857E-01 -4.718588E-01 -3.022517E-02 -1.136781E-01 -5.755596E-01 -2.688162E-01 -2.698373E-01 -1.403188E-01 -8.772347E-01 -3.503562E-01 --4.258508E-01 -1.400825E-01 --1.384853E-01 -4.924947E-02 --1.009402E-01 -2.039230E-01 --1.339732E-01 -4.772083E-02 --3.249636E-01 -4.339747E-01 -1.564400E-01 -2.703717E-01 -2.536360E-01 -8.543919E-02 --3.622063E-01 -7.442240E-02 --2.074953E-02 -1.355614E-01 --3.909820E-02 -1.007999E-01 -3.162815E-01 -9.656425E-02 -2.426423E+01 -1.215124E+02 --9.628829E-01 -3.563586E-01 -2.964625E-01 -9.739638E-02 --3.680881E-01 -3.484018E-01 -4.339143E-01 -7.590564E-02 -4.633394E-02 -1.080030E-01 -3.091634E-01 -1.246585E-01 -4.520500E-02 -1.095704E-01 -2.479383E-01 -1.138276E-01 -6.457108E-02 -6.833667E-02 --5.623363E-02 -1.087254E-01 -3.675294E-01 -9.602246E-02 --1.459951E-01 -9.440544E-02 --6.817672E-02 -4.978066E-02 -1.076782E-02 -1.697440E-01 --1.024501E-02 -1.184830E-01 --1.654178E-01 -1.689209E-02 --1.006214E-01 -3.392546E-02 -5.070063E-01 -7.598100E-02 -2.251704E-01 -7.867348E-02 --1.693789E-01 -2.069974E-01 --2.790249E-01 -2.674643E-02 -3.888604E-01 -3.649330E-02 -7.614452E-02 -7.098023E-02 -1.236282E-02 -5.476895E-02 --3.151637E-01 -3.543466E-02 --6.363562E-01 -9.323507E-02 -2.808153E-01 -8.537981E-02 -2.197639E-01 -3.393653E-02 -8.660625E-02 -1.575544E-02 -3.733826E-02 -1.449783E-02 -8.800903E-04 -3.993931E-02 -3.304886E-01 -3.099095E-02 --4.149186E-02 -5.375091E-02 -2.448819E-01 -9.225028E-02 --1.230091E-01 -3.865008E-02 -7.600812E+00 -1.199814E+01 --8.738539E-01 -3.078183E-01 --2.592305E-01 -1.015952E-01 --6.391696E-02 -6.657129E-02 --2.857855E-01 -2.216294E-02 --3.516811E-01 -3.429194E-02 -4.585144E-02 -6.204056E-02 --1.599494E-01 -1.684846E-02 --2.364219E-01 -1.550644E-02 -1.197289E-01 -8.631394E-02 --1.364517E-01 -5.086560E-02 --2.213374E-01 -2.779096E-02 --7.328761E-02 -1.216230E-02 -2.476803E-01 -2.724500E-02 --6.356296E-02 -2.513244E-02 --3.886281E-01 -9.479377E-02 -1.006972E-01 -1.352120E-02 -6.932242E-02 -3.192705E-02 --3.232505E-02 -5.592418E-02 -9.582599E-02 -1.504811E-02 --2.887999E-01 -3.760482E-02 --2.372013E-01 -1.868786E-02 --1.655526E-01 -4.720116E-02 -8.611265E-02 -2.284310E-02 --2.142116E-01 -2.619080E-02 --1.811202E-01 -1.457105E-02 -1.430164E-01 -2.016598E-02 --4.066031E-01 -7.671356E-02 -1.364946E-01 -1.385677E-02 -8.357667E-02 -1.521943E-02 --2.235270E-02 -1.029570E-02 --7.920760E-02 -4.227880E-02 -2.622096E-01 -2.327728E-02 --7.787296E-03 -2.288300E-02 --1.645219E-02 -5.394704E-02 -7.274557E-02 -1.075570E-02 -4.104875E+01 -3.455300E+02 --9.827893E-01 -2.751051E-01 -3.227606E-01 -1.213711E-01 --1.272840E-02 -2.813639E-01 --1.910394E-01 -5.682320E-02 -4.136260E-01 -2.444497E-01 --5.123352E-02 -3.867174E-01 -4.424857E-02 -9.651204E-02 --3.975443E-02 -1.867060E-01 -7.618837E-01 -1.756891E-01 -4.259599E-01 -1.146646E-01 -5.658031E-02 -1.366891E-01 -2.464931E-01 -2.181122E-01 --1.593998E-01 -2.666678E-01 --1.928096E-01 -1.216164E-01 --7.020992E-01 -1.701086E-01 -3.914244E-01 -1.772217E-01 -3.285697E-01 -1.521826E-01 --2.947923E-02 -8.201284E-02 --1.346653E-01 -4.498340E-02 -2.112724E-01 -9.923303E-02 --8.551910E-02 -8.804286E-03 --3.631005E-01 -1.168145E-01 --1.840770E-01 -5.714283E-02 --2.709303E-02 -9.381338E-02 --2.104005E-02 -4.479215E-02 -4.059493E-01 -8.277066E-02 -2.877400E-01 -8.584721E-02 -4.881128E-02 -1.864179E-01 -8.584545E-02 -4.421744E-02 --4.392466E-01 -6.260373E-02 --3.143214E-02 -8.184856E-02 --5.630973E-01 -1.323469E-01 --8.010498E-02 -1.096975E-01 -1.818829E-01 -1.717701E-02 --1.062149E-01 -5.400365E-02 -tally 26: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -1.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -4.120000E+00 -3.438000E+00 -6.222571E-01 -8.335984E-02 -1.670136E-01 -1.374768E-02 --5.819374E-02 -1.091808E-02 --6.389550E-02 -5.688533E-03 -4.120000E+00 -3.438000E+00 -6.222571E-01 -8.335984E-02 -1.670136E-01 -1.374768E-02 --5.819374E-02 -1.091808E-02 --6.389550E-02 -5.688533E-03 -5.173000E+01 -5.467243E+02 -2.669403E+01 -1.451361E+02 -9.691140E+00 -1.933574E+01 -5.860769E-01 -2.122377E-01 --1.190340E+00 -3.145785E-01 -5.173000E+01 -5.467243E+02 -2.669403E+01 -1.451361E+02 -9.691140E+00 -1.933574E+01 -5.860769E-01 -2.122377E-01 --1.190340E+00 -3.145785E-01 -tally 27: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -1.485000E+01 -4.439790E+01 --8.440076E-02 -1.135203E-02 -8.198663E-02 -3.887429E-02 --1.358080E-01 -2.890416E-02 --3.544823E-02 -9.843339E-04 --1.542072E-01 -8.228126E-03 -1.057111E-01 -3.758100E-03 --1.647870E-02 -4.827841E-03 -1.378297E-01 -1.566876E-02 -4.676778E-02 -4.809366E-03 -1.966204E-02 -7.447981E-04 -1.889258E-02 -6.841953E-04 -1.337703E-02 -1.250077E-03 --1.044684E-01 -6.969498E-03 --1.177995E-02 -8.208715E-03 --1.940058E-04 -5.128759E-03 --2.165868E-02 -1.335569E-03 --3.080886E-02 -4.544434E-04 -1.039856E-03 -1.209631E-03 --1.317068E-02 -1.469722E-03 --6.432758E-02 -2.106736E-03 -3.323023E-02 -4.513838E-03 -2.683700E-02 -1.146747E-03 --3.494912E-02 -1.006153E-03 -6.289525E-02 -3.700145E-03 -1.485000E+01 -4.439790E+01 -1.259515E+00 -3.360064E-01 -7.983154E-01 -1.355632E-01 -3.425460E-01 -2.971972E-02 -2.949225E-01 -3.975603E-02 -1.485000E+01 -4.439790E+01 --8.440076E-02 -1.135203E-02 -8.198663E-02 -3.887429E-02 --1.358080E-01 -2.890416E-02 --3.544823E-02 -9.843339E-04 --1.542072E-01 -8.228126E-03 -1.057111E-01 -3.758100E-03 --1.647870E-02 -4.827841E-03 -1.378297E-01 -1.566876E-02 -4.676778E-02 -4.809366E-03 -1.966204E-02 -7.447981E-04 -1.889258E-02 -6.841953E-04 -1.337703E-02 -1.250077E-03 --1.044684E-01 -6.969498E-03 --1.177995E-02 -8.208715E-03 --1.940058E-04 -5.128759E-03 -4.120000E+00 -3.438000E+00 -6.222571E-01 -8.335984E-02 -1.670136E-01 -1.374768E-02 --5.819374E-02 -1.091808E-02 --6.389550E-02 -5.688533E-03 -4.120000E+00 -3.438000E+00 --1.628271E-01 -9.225450E-03 --6.888325E-02 -1.539168E-03 -2.676973E-02 -5.653613E-03 --3.337963E-03 -7.947252E-04 --4.406165E-02 -8.602797E-04 -4.627072E-02 -2.635048E-03 -7.039651E-02 -2.623481E-03 --3.841045E-02 -3.044564E-03 -9.237978E-03 -4.282545E-04 --5.684456E-02 -7.512518E-04 -2.650251E-04 -5.448171E-04 -4.772861E-03 -5.040314E-04 --2.147644E-02 -7.335266E-04 -1.905098E-02 -8.260721E-04 -5.429075E-02 -2.187346E-03 -5.159732E-03 -4.908243E-04 --7.760747E-03 -1.158921E-03 --8.149531E-03 -1.257165E-04 --1.494397E-02 -4.274428E-04 -2.687381E-02 -4.665908E-04 --1.770251E-02 -5.559502E-04 -1.017742E-03 -3.718233E-04 -3.490710E-02 -3.484712E-04 --3.765157E-03 -8.337155E-04 -4.120000E+00 -3.438000E+00 -6.222571E-01 -8.335984E-02 -1.670136E-01 -1.374768E-02 --5.819374E-02 -1.091808E-02 --6.389550E-02 -5.688533E-03 -4.120000E+00 -3.438000E+00 --1.628271E-01 -9.225450E-03 --6.888325E-02 -1.539168E-03 -2.676973E-02 -5.653613E-03 --3.337963E-03 -7.947252E-04 --4.406165E-02 -8.602797E-04 -4.627072E-02 -2.635048E-03 -7.039651E-02 -2.623481E-03 --3.841045E-02 -3.044564E-03 -9.237978E-03 -4.282545E-04 --5.684456E-02 -7.512518E-04 -2.650251E-04 -5.448171E-04 -4.772861E-03 -5.040314E-04 --2.147644E-02 -7.335266E-04 -1.905098E-02 -8.260721E-04 -5.429075E-02 -2.187346E-03 -5.173000E+01 -5.467243E+02 -2.669403E+01 -1.451361E+02 -9.691140E+00 -1.933574E+01 -5.860769E-01 -2.122377E-01 --1.190340E+00 -3.145785E-01 -5.173000E+01 -5.467243E+02 --1.983402E-01 -1.915674E-01 --1.674839E-01 -1.869769E-01 --5.653273E-01 -1.987939E-01 --7.760837E-02 -4.789688E-02 -2.727635E-01 -2.457144E-02 -1.857970E-02 -1.847097E-02 --3.630622E-01 -5.790100E-02 --4.123237E-01 -5.700176E-02 -5.742532E-02 -1.032394E-02 --5.735109E-02 -1.231577E-02 -1.272672E-01 -1.601764E-02 -2.270866E-01 -1.322803E-02 --5.808421E-04 -9.816465E-03 --1.579343E-01 -1.090331E-02 --1.216659E-01 -5.662713E-03 -1.610713E-02 -1.269120E-02 --9.673684E-03 -4.819562E-03 -1.263075E-01 -8.599309E-03 -1.318035E-01 -1.578558E-02 --1.204668E-01 -4.835293E-03 -9.045915E-02 -4.701121E-03 --1.149557E-02 -1.831502E-02 -4.573371E-02 -1.969365E-03 -2.654515E-02 -5.974645E-03 -5.173000E+01 -5.467243E+02 -2.669403E+01 -1.451361E+02 -9.691140E+00 -1.933574E+01 -5.860769E-01 -2.122377E-01 --1.190340E+00 -3.145785E-01 -5.173000E+01 -5.467243E+02 --1.983402E-01 -1.915674E-01 --1.674839E-01 -1.869769E-01 --5.653273E-01 -1.987939E-01 --7.760837E-02 -4.789688E-02 -2.727635E-01 -2.457144E-02 -1.857970E-02 -1.847097E-02 --3.630622E-01 -5.790100E-02 --4.123237E-01 -5.700176E-02 -5.742532E-02 -1.032394E-02 --5.735109E-02 -1.231577E-02 -1.272672E-01 -1.601764E-02 -2.270866E-01 -1.322803E-02 --5.808421E-04 -9.816465E-03 --1.579343E-01 -1.090331E-02 --1.216659E-01 -5.662713E-03 -tally 28: -0.000000E+00 -0.000000E+00 -1.767552E+01 -6.295417E+01 -3.863588E+00 -3.013300E+00 -5.356594E+01 -5.839391E+02 -tally 29: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.780506E-01 -1.942072E-01 --4.170415E-02 -7.581469E-04 --2.419728E-03 -6.296241E-04 --8.163997E-03 -4.785197E-04 -3.971909E-03 -1.363304E-04 -1.585497E-02 -1.295251E-04 --7.029875E-02 -1.208194E-03 --1.524070E-02 -2.828843E-04 --2.141105E-02 -2.953327E-04 --2.147623E-02 -2.390414E-04 -5.592040E-04 -1.720605E-04 -3.022066E-03 -1.843720E-04 -1.489821E-02 -9.193290E-05 --1.354668E-02 -2.551940E-04 --5.692690E-04 -3.013453E-04 -2.324582E-02 -2.170615E-04 -1.883012E-02 -1.045949E-04 --3.997107E-03 -1.674058E-04 -1.616443E-02 -2.046286E-04 -1.625747E-02 -1.851351E-04 -1.120209E-02 -2.028649E-04 -4.240284E-03 -4.019011E-05 -1.535379E-02 -9.872559E-05 --8.973926E-03 -1.448680E-04 --3.933227E-03 -4.305328E-04 -1.767552E+01 -6.295417E+01 --1.458308E-01 -8.239551E-03 -1.976485E-01 -7.360520E-02 --2.647182E-01 -5.347815E-02 -1.828025E-01 -1.840743E-02 -1.865994E-01 -2.843407E-02 --6.438995E-02 -8.898045E-03 --1.416445E-01 -3.839856E-02 --3.298894E-01 -2.672141E-02 --1.462639E-01 -1.225250E-02 --6.410138E-02 -3.766615E-02 -4.701705E-02 -1.968428E-03 -2.953056E-02 -2.358647E-02 --1.717672E-01 -5.877351E-02 -1.927497E-02 -1.358953E-02 -1.708870E-01 -1.502033E-02 -4.453803E-02 -1.622532E-02 --2.076143E-02 -1.850686E-03 -1.111325E-01 -8.415150E-03 -1.249594E-01 -7.491280E-03 -1.381757E-02 -1.537264E-02 --7.286234E-03 -9.057874E-03 -3.162973E-01 -3.303388E-02 -1.012773E-01 -8.345375E-03 --5.238963E-02 -3.920421E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.863588E+00 -3.013300E+00 -5.075749E-02 -1.018210E-03 -3.445344E-02 -5.778215E-03 --6.239642E-02 -4.107408E-03 --1.475495E-02 -7.971898E-04 -5.809323E-02 -3.039895E-03 --2.510339E-02 -3.529134E-04 --9.731680E-03 -1.221628E-03 --5.815144E-02 -1.403261E-03 --4.936694E-02 -6.481626E-04 -5.141985E-03 -1.343973E-03 -1.515105E-02 -3.044735E-04 -4.474521E-03 -1.155268E-03 --6.855877E-02 -4.048417E-03 --2.701967E-05 -1.279041E-03 -2.197636E-02 -2.843662E-04 --1.780381E-02 -8.441574E-04 -2.916634E-02 -2.530602E-03 -2.289834E-02 -2.201375E-03 -3.283424E-02 -7.615219E-04 -9.623726E-03 -7.614092E-04 -2.808239E-02 -1.500381E-03 -4.835419E-02 -6.933678E-04 --2.636221E-02 -2.230834E-04 --4.957463E-02 -1.939266E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.356594E+01 -5.839391E+02 --1.198882E+00 -3.391100E-01 -3.952398E-01 -5.729760E-01 --1.045726E+00 -4.419194E-01 -2.683170E-01 -1.872580E-01 -5.059349E-01 -2.592209E-01 -4.561651E-01 -1.253696E-01 --4.273775E-01 -3.509266E-01 --6.300496E-01 -2.102051E-01 --3.094705E-01 -1.410278E-01 --6.840225E-01 -1.971765E-01 -4.123355E-02 -3.962538E-02 --1.554557E-01 -2.784362E-02 --4.698631E-01 -1.867413E-01 --7.016026E-02 -3.059344E-02 -2.922284E-01 -8.680517E-02 --1.252431E-01 -3.180591E-02 -1.825937E-01 -8.626653E-02 -1.637960E-01 -1.329538E-01 -6.662867E-01 -1.497985E-01 -4.662585E-01 -7.552145E-02 -1.198254E-03 -2.020899E-01 -5.281410E-01 -9.615758E-02 -6.396211E-02 -1.806992E-01 --1.898620E-01 -1.113751E-01 -tally 30: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.300000E-01 -1.839000E-01 -4.056201E-03 -8.670884E-04 --2.262959E-02 -2.263780E-03 --4.568371E-02 -4.078305E-03 -6.023055E-02 -1.099458E-03 --2.468374E-02 -3.403931E-03 --8.676202E-02 -2.444658E-03 -2.075016E-02 -5.432442E-03 -1.101095E-02 -3.129947E-04 -8.689134E-03 -2.422445E-03 --1.097503E-02 -4.670673E-04 -4.979355E-02 -1.791811E-03 -1.769845E-02 -6.074665E-04 --1.473469E-02 -1.257671E-03 --1.133757E-02 -1.555143E-03 -1.730195E-02 -1.841949E-03 --1.191492E-02 -1.859105E-03 -9.038577E-03 -4.401577E-04 -1.770047E-02 -4.158291E-04 -1.492809E-02 -5.488168E-04 -7.970152E-02 -1.597910E-03 -3.741348E-02 -5.704935E-04 -2.078478E-02 -5.379832E-04 --1.355930E-02 -6.747758E-04 -3.416200E-02 -8.262470E-04 -1.739000E+01 -6.083290E+01 --2.434171E-01 -3.049063E-02 --1.278707E-01 -9.585267E-02 --2.597328E-01 -8.692607E-02 -2.496700E-01 -3.750933E-02 --1.309937E-01 -4.217907E-02 --1.863241E-01 -1.738581E-02 -1.292679E-01 -1.799004E-02 --3.543191E-01 -3.682107E-02 -1.904413E-01 -1.455250E-02 --7.093238E-02 -1.473997E-02 -1.920412E-01 -1.308864E-02 -1.566093E-01 -1.913492E-02 --2.499642E-01 -3.036874E-02 --2.323022E-01 -3.794368E-02 -6.361729E-02 -3.266166E-02 -4.688479E-02 -2.806712E-02 -9.796563E-02 -1.419748E-02 -1.000847E-02 -3.233262E-02 -7.570231E-02 -4.626536E-03 -1.489091E-01 -1.159345E-02 -2.236285E-01 -1.480084E-02 -2.461305E-01 -1.643844E-02 -1.773523E-02 -1.626036E-03 -6.570774E-02 -1.069893E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.160000E+00 -3.501000E+00 --9.464171E-02 -8.682833E-03 -8.467800E-02 -1.402624E-02 -1.283471E-02 -2.630439E-02 -1.859869E-01 -1.189528E-02 -1.910311E-02 -2.907370E-03 --2.542253E-01 -2.143851E-02 --4.021473E-02 -5.812599E-03 --1.242140E-01 -1.017873E-02 --2.934198E-02 -2.409920E-03 -5.719767E-02 -2.211520E-03 -3.023903E-02 -2.870625E-03 -1.092479E-01 -6.089989E-03 -1.604743E-02 -1.110224E-02 -3.811062E-03 -5.234112E-03 -5.446762E-02 -5.323411E-03 --3.868978E-02 -4.949255E-03 -1.384260E-01 -4.903532E-03 --3.761889E-02 -2.524889E-03 --6.079772E-02 -2.328339E-03 -1.956623E-03 -4.096814E-03 -1.716402E-03 -2.022751E-03 --1.108600E-01 -3.227014E-03 --2.447622E-03 -4.075421E-03 -1.582493E-02 -4.847858E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.213000E+01 -5.552351E+02 --6.019876E-01 -2.938936E-01 -2.126970E-01 -3.363271E-01 --6.928646E-01 -3.077152E-01 --2.976474E-01 -5.830705E-02 -7.804821E-01 -3.967156E-01 -5.737502E-01 -1.090147E-01 --2.867929E-01 -1.312720E-01 --4.735578E-01 -6.714577E-02 --6.340442E-02 -4.240623E-02 --1.594570E-01 -1.167021E-01 --5.403124E-02 -6.452745E-02 --2.670969E-01 -5.822561E-02 --3.033558E-01 -4.890487E-02 --3.515557E-01 -5.069681E-02 -2.257462E-01 -4.682933E-02 --1.449924E-02 -1.625521E-02 -2.809498E-01 -6.883451E-02 -1.904808E-01 -1.004755E-01 -2.570005E-01 -4.301248E-02 -9.493600E-02 -7.708499E-02 --2.804222E-01 -4.455703E-02 -3.199914E-01 -7.435651E-02 --2.818069E-04 -7.231318E-02 -3.689494E-01 -1.349712E-01 -tally 31: -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.453374E-01 -1.815824E-01 --4.552571E-02 -8.689847E-04 -4.192526E-03 -6.095248E-04 --4.085060E-03 -3.488081E-04 -3.074303E-02 -3.709785E-04 -1.949067E-02 -1.995057E-04 --7.372260E-02 -1.709765E-03 --5.140901E-03 -6.268082E-05 --2.589014E-02 -1.616678E-04 -1.683116E-02 -2.122512E-04 --1.074659E-02 -1.087471E-04 -3.762844E-03 -3.439135E-05 -1.365793E-02 -5.255161E-05 -5.869374E-05 -4.060049E-04 --7.715004E-03 -3.629588E-04 -8.240120E-03 -5.192031E-04 -1.662861E-02 -5.038262E-04 --2.845811E-03 -2.843348E-04 -1.826833E-03 -1.104947E-05 --5.596885E-04 -1.922661E-05 -1.398723E-02 -1.025178E-04 -1.733988E-02 -1.184228E-04 -1.250057E-02 -1.447801E-04 --5.450018E-03 -3.725923E-05 -2.390947E-02 -6.837656E-04 -1.739000E+01 -6.083290E+01 --2.434171E-01 -3.049063E-02 --1.278707E-01 -9.585267E-02 --2.597328E-01 -8.692607E-02 -2.496700E-01 -3.750933E-02 --1.309937E-01 -4.217907E-02 --1.863241E-01 -1.738581E-02 -1.292679E-01 -1.799004E-02 --3.543191E-01 -3.682107E-02 -1.904413E-01 -1.455250E-02 --7.093238E-02 -1.473997E-02 -1.920412E-01 -1.308864E-02 -1.566093E-01 -1.913492E-02 --2.499642E-01 -3.036874E-02 --2.323022E-01 -3.794368E-02 -6.361729E-02 -3.266166E-02 -4.688479E-02 -2.806712E-02 -9.796563E-02 -1.419748E-02 -1.000847E-02 -3.233262E-02 -7.570231E-02 -4.626536E-03 -1.489091E-01 -1.159345E-02 -2.236285E-01 -1.480084E-02 -2.461305E-01 -1.643844E-02 -1.773523E-02 -1.626036E-03 -6.570774E-02 -1.069893E-02 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.160000E+00 -3.501000E+00 --9.464171E-02 -8.682833E-03 -8.467800E-02 -1.402624E-02 -1.283471E-02 -2.630439E-02 -1.859869E-01 -1.189528E-02 -1.910311E-02 -2.907370E-03 --2.542253E-01 -2.143851E-02 --4.021473E-02 -5.812599E-03 --1.242140E-01 -1.017873E-02 --2.934198E-02 -2.409920E-03 -5.719767E-02 -2.211520E-03 -3.023903E-02 -2.870625E-03 -1.092479E-01 -6.089989E-03 -1.604743E-02 -1.110224E-02 -3.811062E-03 -5.234112E-03 -5.446762E-02 -5.323411E-03 --3.868978E-02 -4.949255E-03 -1.384260E-01 -4.903532E-03 --3.761889E-02 -2.524889E-03 --6.079772E-02 -2.328339E-03 -1.956623E-03 -4.096814E-03 -1.716402E-03 -2.022751E-03 --1.108600E-01 -3.227014E-03 --2.447622E-03 -4.075421E-03 -1.582493E-02 -4.847858E-03 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -0.000000E+00 -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.213000E+01 -5.552351E+02 --6.019876E-01 -2.938936E-01 -2.126970E-01 -3.363271E-01 --6.928646E-01 -3.077152E-01 --2.976474E-01 -5.830705E-02 -7.804821E-01 -3.967156E-01 -5.737502E-01 -1.090147E-01 --2.867929E-01 -1.312720E-01 --4.735578E-01 -6.714577E-02 --6.340442E-02 -4.240623E-02 --1.594570E-01 -1.167021E-01 --5.403124E-02 -6.452745E-02 --2.670969E-01 -5.822561E-02 --3.033558E-01 -4.890487E-02 --3.515557E-01 -5.069681E-02 -2.257462E-01 -4.682933E-02 --1.449924E-02 -1.625521E-02 -2.809498E-01 -6.883451E-02 -1.904808E-01 -1.004755E-01 -2.570005E-01 -4.301248E-02 -9.493600E-02 -7.708499E-02 --2.804222E-01 -4.455703E-02 -3.199914E-01 -7.435651E-02 --2.818069E-04 -7.231318E-02 -3.689494E-01 -1.349712E-01 +5be9b80ecc189d4ee3a6a228d97b0c76b6b47e5204a86ecf03b8faa65c499f6861ffd85c153084bafd0835d10dfacc14f28802901ce966c8a803d60d0c2f42e5 \ No newline at end of file diff --git a/tests/test_tallies/test_tallies.py b/tests/test_tallies/test_tallies.py index b6cdebe2d3..9fca93bcab 100644 --- a/tests/test_tallies/test_tallies.py +++ b/tests/test_tallies/test_tallies.py @@ -5,9 +5,21 @@ import sys sys.path.insert(0, os.pardir) from testing_harness import PyAPITestHarness from openmc import Filter, Mesh, Tally, TalliesFile +from openmc.source import Source +from openmc.stats import Box class TalliesTestHarness(PyAPITestHarness): def _build_inputs(self): + # Build default materials/geometry + self._input_set.build_default_materials_and_geometry() + + # Set settings explicitly + self._input_set.settings.batches = 5 + self._input_set.settings.inactive = 0 + self._input_set.settings.particles = 400 + self._input_set.settings.source = Source(space=Box( + [-160, -160, -183], [160, 160, 183])) + azimuthal_bins = (-3.1416, -1.8850, -0.6283, 0.6283, 1.8850, 3.1416) azimuthal_filter1 = Filter(type='azimuthal', bins=azimuthal_bins) azimuthal_tally1 = Tally() @@ -126,6 +138,7 @@ class TalliesTestHarness(PyAPITestHarness): t.add_score('(n,gamma)') t.add_score('nu-fission') t.add_score('scatter') + t.add_score('elastic') t.add_score('total') score_tallies[0].estimator = 'tracklength' score_tallies[1].estimator = 'analog' @@ -170,6 +183,18 @@ class TalliesTestHarness(PyAPITestHarness): total_tallies[2].estimator = 'analog' total_tallies[3].estimator = 'collision' + questionable_tally = Tally() + questionable_tally.add_score('transport') + questionable_tally.add_score('n1n') + + all_nuclide_tallies = [Tally(), Tally()] + for t in all_nuclide_tallies: + t.add_filter(cell_filter) + t.add_nuclide('all') + t.add_score('total') + all_nuclide_tallies[0].estimator = 'tracklength' + all_nuclide_tallies[0].estimator = 'collision' + self._input_set.tallies = TalliesFile() self._input_set.tallies.add_tally(azimuthal_tally1) self._input_set.tallies.add_tally(azimuthal_tally2) @@ -194,9 +219,14 @@ class TalliesTestHarness(PyAPITestHarness): self._input_set.tallies.add_tally(scatter_tally1) self._input_set.tallies.add_tally(scatter_tally2) [self._input_set.tallies.add_tally(t) for t in total_tallies] + self._input_set.tallies.add_tally(questionable_tally) + [self._input_set.tallies.add_tally(t) for t in all_nuclide_tallies] self._input_set.tallies.add_mesh(mesh_2x2) - super(TalliesTestHarness, self)._build_inputs() + self._input_set.export() + + def _get_results(self): + return super(TalliesTestHarness, self)._get_results(hash_output=True) def _cleanup(self): super(TalliesTestHarness, self)._cleanup() @@ -205,5 +235,5 @@ class TalliesTestHarness(PyAPITestHarness): if __name__ == '__main__': - harness = TalliesTestHarness('statepoint.10.*', True) + harness = TalliesTestHarness('statepoint.5.*', True) harness.main() From f27d4797bd7eef64fb899c5fae7cfc026a29ff13 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 20 Jan 2016 09:20:40 -0600 Subject: [PATCH 28/61] Add tallies to test_survival_biasing --- tests/test_survival_biasing/results_true.dat | 18 ++++++++++++++++++ tests/test_survival_biasing/tallies.xml | 16 ++++++++++++++++ .../test_survival_biasing.py | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/test_survival_biasing/tallies.xml diff --git a/tests/test_survival_biasing/results_true.dat b/tests/test_survival_biasing/results_true.dat index a97654cfa2..3e327841aa 100644 --- a/tests/test_survival_biasing/results_true.dat +++ b/tests/test_survival_biasing/results_true.dat @@ -1,2 +1,20 @@ k-combined: 9.997733E-01 2.995572E-02 +tally 1: +4.354055E+01 +3.793645E+02 +1.808636E+01 +6.546005E+01 +2.234465E+00 +9.989832E-01 +1.937431E+00 +7.510380E-01 +5.021671E+00 +5.045425E+00 +3.506791E-02 +2.460654E-04 +3.752351E+02 +2.817188E+04 +tally 2: +1.808636E+01 +6.546005E+01 diff --git a/tests/test_survival_biasing/tallies.xml b/tests/test_survival_biasing/tallies.xml new file mode 100644 index 0000000000..8d939dfffc --- /dev/null +++ b/tests/test_survival_biasing/tallies.xml @@ -0,0 +1,16 @@ + + + + + + flux total absorption fission nu-fission delayed-nu-fission kappa-fission + + analog + + + + total + collision + + + diff --git a/tests/test_survival_biasing/test_survival_biasing.py b/tests/test_survival_biasing/test_survival_biasing.py index 2a595f3e66..ed6addec45 100644 --- a/tests/test_survival_biasing/test_survival_biasing.py +++ b/tests/test_survival_biasing/test_survival_biasing.py @@ -7,5 +7,5 @@ from testing_harness import TestHarness if __name__ == '__main__': - harness = TestHarness('statepoint.10.*') + harness = TestHarness('statepoint.10.*', True) harness.main() From f0821bdef3c67972fc788517ea9a57e509e6d20e Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 Jan 2016 07:18:21 -0600 Subject: [PATCH 29/61] Make sure MEM_CHECK is not defined when it's not supposed to be --- tests/run_tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/run_tests.py b/tests/run_tests.py index de253c9670..48fc23d4af 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -75,7 +75,9 @@ set(CTEST_MEMORYCHECK_COMMAND "{valgrind_cmd}") set(CTEST_MEMORYCHECK_COMMAND_OPTIONS "--tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes") #set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE ${{CTEST_SOURCE_DIRECTORY}}/../tests/valgrind.supp) set(MEM_CHECK {mem_check}) +if(MEM_CHECK) set(ENV{{MEM_CHECK}} ${{MEM_CHECK}}) +endif() set(CTEST_COVERAGE_COMMAND "gcov") set(COVERAGE {coverage}) From c9d790eb3da3b3fa4896d53f96c1c815b4757950 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 Jan 2016 08:01:58 -0600 Subject: [PATCH 30/61] Check if offsets are allocated before writing to summary.h5 --- src/summary.F90 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/summary.F90 b/src/summary.F90 index c06d2549c2..85d0146923 100644 --- a/src/summary.F90 +++ b/src/summary.F90 @@ -45,7 +45,7 @@ contains call write_attribute_string(file_id, "n_batches", & "description", "Total number of batches") - ! Write eigenvalue information + ! Write eigenvalue information if (run_mode == MODE_EIGENVALUE) then ! write number of inactive/active batches and generations/batch call write_dataset(file_id, "n_inactive", n_inactive) @@ -174,8 +174,10 @@ contains case (CELL_FILL) call write_dataset(cell_group, "fill_type", "universe") call write_dataset(cell_group, "fill", universes(c%fill)%id) - if (size(c%offset) > 0) then - call write_dataset(cell_group, "offset", c%offset) + if (allocated(c%offset)) then + if (size(c%offset) > 0) then + call write_dataset(cell_group, "offset", c%offset) + end if end if if (allocated(c%translation)) then @@ -362,8 +364,10 @@ contains call write_dataset(lattice_group, "outer", lat%outer) ! Write distribcell offsets if present - if (size(lat%offset) > 0) then - call write_dataset(lattice_group, "offsets", lat%offset) + if (allocated(lat%offset)) then + if (size(lat%offset) > 0) then + call write_dataset(lattice_group, "offsets", lat%offset) + end if end if select type (lat) From 679781da0a42e5a4ab1b49b2ae8279b5b30cc00c Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 21 Jan 2016 15:43:49 -0600 Subject: [PATCH 31/61] Disallow duplicate scores in tallies --- src/ace.F90 | 2 +- src/endf.F90 | 47 +++++++++++++++++++++++++++++++++++++++++++ src/input_xml.F90 | 27 +++++++++++++++++++++++++ src/state_point.F90 | 49 +-------------------------------------------- src/summary.F90 | 49 +-------------------------------------------- 5 files changed, 77 insertions(+), 97 deletions(-) diff --git a/src/ace.F90 b/src/ace.F90 index e97338b558..2947ff9de3 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -3,7 +3,7 @@ module ace use ace_header, only: Nuclide, Reaction, SAlphaBeta, XsListing, & DistEnergy use constants - use endf, only: reaction_name, is_fission, is_disappearance + use endf, only: is_fission, is_disappearance use error, only: fatal_error, warning use fission, only: nu_total use global diff --git a/src/endf.F90 b/src/endf.F90 index ba324722c3..64f26539a9 100644 --- a/src/endf.F90 +++ b/src/endf.F90 @@ -17,6 +17,53 @@ contains character(20) :: string select case (MT) + ! Special reactions for tallies + case (SCORE_FLUX) + string = "flux" + case (SCORE_TOTAL) + string = "total" + case (SCORE_SCATTER) + string = "scatter" + case (SCORE_NU_SCATTER) + string = "nu-scatter" + case (SCORE_SCATTER_N) + string = "scatter-n" + case (SCORE_SCATTER_PN) + string = "scatter-pn" + case (SCORE_NU_SCATTER_N) + string = "nu-scatter-n" + case (SCORE_NU_SCATTER_PN) + string = "nu-scatter-pn" + case (SCORE_TRANSPORT) + string = "transport" + case (SCORE_N_1N) + string = "n1n" + case (SCORE_ABSORPTION) + string = "absorption" + case (SCORE_FISSION) + string = "fission" + case (SCORE_NU_FISSION) + string = "nu-fission" + case (SCORE_DELAYED_NU_FISSION) + string = "delayed-nu-fission" + case (SCORE_KAPPA_FISSION) + string = "kappa-fission" + case (SCORE_CURRENT) + string = "current" + case (SCORE_FLUX_YN) + string = "flux-yn" + case (SCORE_TOTAL_YN) + string = "total-yn" + case (SCORE_SCATTER_YN) + string = "scatter-yn" + case (SCORE_NU_SCATTER_YN) + string = "nu-scatter-yn" + case (SCORE_EVENTS) + string = "events" + case (SCORE_INVERSE_VELOCITY) + string = "inverse-velocity" + + ! Normal ENDF-based reactions case (TOTAL_XS) string = '(n,total)' case (ELASTIC) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 1427458901..ec8a8a5a15 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -5,6 +5,7 @@ module input_xml use dict_header, only: DictIntInt, ElemKeyValueCI use distribution_multivariate use distribution_univariate + use endf, only: reaction_name use energy_grid, only: grid_method, n_log_bins use error, only: fatal_error, warning use geometry_header, only: Cell, Lattice, RectLattice, HexLattice @@ -3426,6 +3427,32 @@ contains ! Deallocate temporary string array of scores deallocate(sarray) + + ! Check that no duplicate scores exist + j = 1 + do while (j < n_scores) + ! Determine number of bins for scores with expansions + n_order = t % moment_order(j) + select case (t % score_bins(j)) + case (SCORE_SCATTER_PN, SCORE_NU_SCATTER_PN) + n_bins = n_order + 1 + case (SCORE_FLUX_YN, SCORE_TOTAL_YN, SCORE_SCATTER_YN, & + SCORE_NU_SCATTER_YN) + n_bins = (n_order + 1)**2 + case default + n_bins = 1 + end select + + do k = j + n_bins, n_scores + if (t % score_bins(j) == t % score_bins(k) .and. & + t % moment_order(j) == t % moment_order(k)) then + call fatal_error("Duplicate score of type '" // trim(& + reaction_name(t % score_bins(j))) // "' found in tally " & + // trim(to_str(t % id))) + end if + end do + j = j + n_bins + end do else call fatal_error("No specified on tally " & &// trim(to_str(t % id)) // ".") diff --git a/src/state_point.F90 b/src/state_point.F90 index e89cdf12a8..70ee2d06ad 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -310,54 +310,7 @@ contains call write_dataset(tally_group, "n_score_bins", tally%n_score_bins) allocate(str_array(size(tally%score_bins))) do j = 1, size(tally%score_bins) - select case(tally%score_bins(j)) - case (SCORE_FLUX) - str_array(j) = "flux" - case (SCORE_TOTAL) - str_array(j) = "total" - case (SCORE_SCATTER) - str_array(j) = "scatter" - case (SCORE_NU_SCATTER) - str_array(j) = "nu-scatter" - case (SCORE_SCATTER_N) - str_array(j) = "scatter-n" - case (SCORE_SCATTER_PN) - str_array(j) = "scatter-pn" - case (SCORE_NU_SCATTER_N) - str_array(j) = "nu-scatter-n" - case (SCORE_NU_SCATTER_PN) - str_array(j) = "nu-scatter-pn" - case (SCORE_TRANSPORT) - str_array(j) = "transport" - case (SCORE_N_1N) - str_array(j) = "n1n" - case (SCORE_ABSORPTION) - str_array(j) = "absorption" - case (SCORE_FISSION) - str_array(j) = "fission" - case (SCORE_NU_FISSION) - str_array(j) = "nu-fission" - case (SCORE_DELAYED_NU_FISSION) - str_array(j) = "delayed-nu-fission" - case (SCORE_KAPPA_FISSION) - str_array(j) = "kappa-fission" - case (SCORE_CURRENT) - str_array(j) = "current" - case (SCORE_FLUX_YN) - str_array(j) = "flux-yn" - case (SCORE_TOTAL_YN) - str_array(j) = "total-yn" - case (SCORE_SCATTER_YN) - str_array(j) = "scatter-yn" - case (SCORE_NU_SCATTER_YN) - str_array(j) = "nu-scatter-yn" - case (SCORE_EVENTS) - str_array(j) = "events" - case (SCORE_INVERSE_VELOCITY) - str_array(j) = "inverse-velocity" - case default - str_array(j) = reaction_name(tally%score_bins(j)) - end select + str_array(j) = reaction_name(tally%score_bins(j)) end do call write_dataset(tally_group, "score_bins", str_array) call write_dataset(tally_group, "n_user_score_bins", tally%n_user_score_bins) diff --git a/src/summary.F90 b/src/summary.F90 index 85d0146923..c31068eb9f 100644 --- a/src/summary.F90 +++ b/src/summary.F90 @@ -639,54 +639,7 @@ contains call write_dataset(tally_group, "n_score_bins", t%n_score_bins) allocate(str_array(size(t%score_bins))) do j = 1, size(t%score_bins) - select case(t%score_bins(j)) - case (SCORE_FLUX) - str_array(j) = "flux" - case (SCORE_TOTAL) - str_array(j) = "total" - case (SCORE_SCATTER) - str_array(j) = "scatter" - case (SCORE_NU_SCATTER) - str_array(j) = "nu-scatter" - case (SCORE_SCATTER_N) - str_array(j) = "scatter-n" - case (SCORE_SCATTER_PN) - str_array(j) = "scatter-pn" - case (SCORE_NU_SCATTER_N) - str_array(j) = "nu-scatter-n" - case (SCORE_NU_SCATTER_PN) - str_array(j) = "nu-scatter-pn" - case (SCORE_TRANSPORT) - str_array(j) = "transport" - case (SCORE_N_1N) - str_array(j) = "n1n" - case (SCORE_ABSORPTION) - str_array(j) = "absorption" - case (SCORE_FISSION) - str_array(j) = "fission" - case (SCORE_NU_FISSION) - str_array(j) = "nu-fission" - case (SCORE_DELAYED_NU_FISSION) - str_array(j) = "delayed-nu-fission" - case (SCORE_KAPPA_FISSION) - str_array(j) = "kappa-fission" - case (SCORE_CURRENT) - str_array(j) = "current" - case (SCORE_FLUX_YN) - str_array(j) = "flux-yn" - case (SCORE_TOTAL_YN) - str_array(j) = "total-yn" - case (SCORE_SCATTER_YN) - str_array(j) = "scatter-yn" - case (SCORE_NU_SCATTER_YN) - str_array(j) = "nu-scatter-yn" - case (SCORE_EVENTS) - str_array(j) = "events" - case (SCORE_INVERSE_VELOCITY) - str_array(j) = "inverse-velocity" - case default - str_array(j) = reaction_name(t%score_bins(j)) - end select + str_array(j) = reaction_name(t%score_bins(j)) end do call write_dataset(tally_group, "score_bins", str_array) From 0e1e67bc2edd1c0e84d2212f804c7e5dedecedf2 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 07:18:13 -0600 Subject: [PATCH 32/61] Improve documentation on tally scores --- docs/source/_static/theme_overrides.css | 10 + docs/source/conf.py | 4 +- docs/source/usersguide/input.rst | 329 ++++++++++++++++-------- 3 files changed, 237 insertions(+), 106 deletions(-) create mode 100644 docs/source/_static/theme_overrides.css diff --git a/docs/source/_static/theme_overrides.css b/docs/source/_static/theme_overrides.css new file mode 100644 index 0000000000..7c1a520223 --- /dev/null +++ b/docs/source/_static/theme_overrides.css @@ -0,0 +1,10 @@ +/* override table width restrictions */ +.wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal; +} + +.wy-table-responsive { + margin-bottom: 24px; + max-width: 100%; + overflow: visible; +} diff --git a/docs/source/conf.py b/docs/source/conf.py index 32154fa60f..65db07b25e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -152,7 +152,9 @@ html_title = "OpenMC Documentation" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] +html_static_path = ['_static'] + +html_context = {'css_files': ['_static/theme_overrides.css']} # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 30e9ed07b9..ca16c8fef6 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1475,114 +1475,233 @@ The ```` element accepts the following sub-elements: *Default*: ``tracklength`` but will revert to ``analog`` if necessary. :scores: - A space-separated list of the desired responses to be accumulated. Accepted - options are "flux", "total", "scatter", "absorption", "fission", - "nu-fission", "delayed-nu-fission", "kappa-fission", "nu-scatter", - "scatter-N", "scatter-PN", "scatter-YN", "nu-scatter-N", "nu-scatter-PN", - "nu-scatter-YN", "flux-YN", "total-YN", "current", "inverse-velocity" and - "events". These correspond to the following physical quantities: + A space-separated list of the desired responses to be accumulated. The accepted + options are listed in the following table: - :flux: - Total flux in particle-cm per source particle. + .. table:: Score types available in OpenMC - .. note:: - The ``analog`` estimator is actually identical to the ``collision`` - estimator for the flux score. + +----------------------+---------------------------------------------------+ + |Score | Description | + +======================+===================================================+ + |flux |Total flux in particle-cm per source particle. | + | | | + +----------------------+---------------------------------------------------+ + |total |Total reaction rate in reactions per source | + | |particle. | + +----------------------+---------------------------------------------------+ + |scatter |Total scattering rate. Can also be identified with | + | |the "scatter-0" response type. Units are reactions | + | |per source particle. | + +----------------------+---------------------------------------------------+ + |absorption |Total absorption rate. This accounts for all | + | |reactions which do not produce secondary | + | |neutrons. Units are reactions per source particle. | + +----------------------+---------------------------------------------------+ + |fission |Total fission rate in reactions per source | + | |particle. | + +----------------------+---------------------------------------------------+ + |nu-fission |Total production of neutrons due to fission. Units | + | |are neutrons produced per source neutron. | + +----------------------+---------------------------------------------------+ + |delayed-nu-fission |Total production of delayed neutrons due to | + | |fission. Units are neutrons produced per source | + | |neutron. | + +----------------------+---------------------------------------------------+ + |kappa-fission |The recoverable energy production rate due to | + | |fission. The recoverable energy is defined as the | + | |fission product kinetic energy, prompt and delayed | + | |neutron kinetic energies, prompt and delayed | + | |:math:`\gamma`-ray total energies, and the total | + | |energy released by the delayed :math:`\beta` | + | |particles. The neutrino energy does not contribute | + | |to this response. The prompt and delayed | + | |:math:`\gamma`-rays are assumed to deposit their | + | |energy locally. Units are MeV per source particle. | + +----------------------+---------------------------------------------------+ + |scatter-N |Tally the N\ :sup:`th` \ scattering moment, where N| + | |is the Legendre expansion order of the change in | + | |particle angle :math:`\left(\mu\right)`. N must be | + | |between 0 and 10. As an example, tallying the 2\ | + | |:sup:`nd` \ scattering moment would be specified as| + | |``scatter-2``. Units are reactions| + | |per source particle. | + +----------------------+---------------------------------------------------+ + |scatter-PN |Tally all of the scattering moments from order 0 to| + | |N, where N is the Legendre expansion order of the | + | |change in particle angle | + | |:math:`\left(\mu\right)`. That is, "scatter-P1" is | + | |equivalent to requesting tallies of "scatter-0" and| + | |"scatter-1". Like for "scatter-N", N must be | + | |between 0 and 10. As an example, tallying up to the| + | |2\ :sup:`nd` \ scattering moment would be specified| + | |as `` scatter-P2 ``. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |scatter-YN |"scatter-YN" is similar to "scatter-PN" except an | + | |additional expansion is performed for the incoming | + | |particle direction :math:`\left(\Omega\right)` | + | |using the real spherical harmonics. This is useful| + | |for performing angular flux moment weighting of the| + | |scattering moments. Like "scatter-PN", "scatter-YN"| + | |will tally all of the moments from order 0 to N; N | + | |again must be between 0 and 10. Units are reactions| + | |per source particle. | + +----------------------+---------------------------------------------------+ + |nu-scatter, |These scores are similar in functionality to their | + |nu-scatter-N, |``scatter*`` equivalents except the total | + |nu-scatter-PN, |production of neutrons due to scattering is scored | + |nu-scatter-YN |vice simply the scattering rate. This accounts for | + | |multiplicity from (n,2n), (n,3n), and (n,4n) | + | |reactions. Units are neutrons produced per source | + | |particle. | + +----------------------+---------------------------------------------------+ + |flux-YN |Spherical harmonic expansion of the direction of | + | |motion :math:`\left(\Omega\right)` of the total | + | |flux. This score will tally all of the harmonic | + | |moments of order 0 to N. N must be between 0 and | + | |10. Units are particle-cm per source particle. | + +----------------------+---------------------------------------------------+ + |total-YN |The total reaction rate expanded via spherical | + | |harmonics about the direction of motion of the | + | |neutron, :math:`\Omega`. This score will tally all | + | |of the harmonic moments of order 0 to N. N must be| + | |between 0 and 10. Units are reactions per source | + | |particle. | + +----------------------+---------------------------------------------------+ + |current |Partial currents on the boundaries of each cell in | + | |a mesh. Units are particles per source | + | |particle. Note that this score can only be used if | + | |a mesh filter has been specified. Furthermore, it | + | |may not be used in conjunction with any other | + | |score. | + +----------------------+---------------------------------------------------+ + |inverse-velocity |The flux-weighted inverse velocity where the | + | |velocity is in units of centimeters per second. | + +----------------------+---------------------------------------------------+ + |events |Number of scoring events. Units are events per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |elastic |Elastic scattering reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,2nd) |(n,2nd) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,2n) |(n,2n) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,3n) |(n,3n) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,na) |(n,n\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,n3a) |(n,n3\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,2na) |(n,2n\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,3na) |(n,3n\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,np) |(n,np) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,n2a) |(n,n2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,2n2a) |(n,2n2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,nd) |(n,nd) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,nt) |(n,nt) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,nHe-3) |(n,n\ :sup:`3`\ He) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,nd2a) |(n,nd2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,nt2a) |(n,nt2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,4n) |(n,4n) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,2np) |(n,2np) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,3np) |(n,3np) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,n2p) |(n,n2p) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,n*X*) |Level inelastic scattering reaction rate. The *X* | + | |indicates what which inelastic level, e.g., (n,n3) | + | |is third-level inelastic scattering. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,nc) |Continuum level inelastic scattering reaction | + | |rate. Units are reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,gamma) |Radiative capture reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,p) |(n,p) reaction rate. Units are reactions per source| + | |particle. | + +----------------------+---------------------------------------------------+ + |(n,d) |(n,d) reaction rate. Units are reactions per source| + | |particle. | + +----------------------+---------------------------------------------------+ + |(n,t) |(n,t) reaction rate. Units are reactions per source| + | |particle. | + +----------------------+---------------------------------------------------+ + |(n,3He) |(n,\ :sup:`3`\ He) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,a) |(n,\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,2a) |(n,2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,3a) |(n,3\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,2p) |(n,2p) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,pa) |(n,p\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,t2a) |(n,t2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,d2a) |(n,d2\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |(n,pd) |(n,pd) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,pt) |(n,pt) reaction rate. Units are reactions per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |(n,da) |(n,d\ :math:`\alpha`\ ) reaction rate. Units are | + | |reactions per source particle. | + +----------------------+---------------------------------------------------+ + |*Arbitrary integer* |An arbitrary integer is interpreted to mean the | + | |reaction rate for a reaction with a given ENDF MT | + | |number. Units are reactions per source particle. | + +----------------------+---------------------------------------------------+ - :total: - Total reaction rate in reactions per source particle. - - :scatter: - Total scattering rate. Can also be identified with the ``scatter-0`` - response type. Units are reactions per source particle. - - :absorption: - Total absorption rate. This accounts for all reactions which do not - produce secondary neutrons. Units are reactions per source particle. - - :fission: - Total fission rate in reactions per source particle. - - :nu-fission: - Total production of neutrons due to fission. Units are neutrons produced - per source neutron. - - :delayed-nu-fission: - Total production of delayed neutrons due to fission. Units are neutrons produced - per source neutron. - - :kappa-fission: - The recoverable energy production rate due to fission. The recoverable - energy is defined as the fission product kinetic energy, prompt and - delayed neutron kinetic energies, prompt and delayed :math:`\gamma`-ray - total energies, and the total energy released by the delayed :math:`\beta` - particles. The neutrino energy does not contribute to this response. The - prompt and delayed :math:`\gamma`-rays are assumed to deposit their energy - locally. Units are MeV per source particle. - - :scatter-N: - Tally the N\ :sup:`th` \ scattering moment, where N is the Legendre - expansion order of the change in particle angle :math:`\left(\mu\right)`. - N must be between 0 and 10. As an example, tallying the 2\ :sup:`nd` \ - scattering moment would be specified as `` scatter-2 - ``. Units are reactions per source particle. - - :scatter-PN: - Tally all of the scattering moments from order 0 to N, where N is the - Legendre expansion order of the change in particle angle - :math:`\left(\mu\right)`. That is, ``scatter-P1`` is equivalent to - requesting tallies of ``scatter-0`` and ``scatter-1``. Like for - ``scatter-N``, N must be between 0 and 10. As an example, tallying up to - the 2\ :sup:`nd` \ scattering moment would be specified as `` - scatter-P2 ``. Units are reactions per source particle. - - :scatter-YN: - ``scatter-YN`` is similar to ``scatter-PN`` except an additional expansion - is performed for the incoming particle direction - :math:`\left(\Omega\right)` using the real spherical harmonics. This is - useful for performing angular flux moment weighting of the scattering - moments. Like ``scatter-PN``, ``scatter-YN`` will tally all of the moments - from order 0 to N; N again must be between 0 and 10. Units are reactions - per source particle. - - :nu-scatter, nu-scatter-N, nu-scatter-PN, nu-scatter-YN: - These scores are similar in functionality to their ``scatter*`` - equivalents except the total production of neutrons due to scattering is - scored vice simply the scattering rate. This accounts for multiplicity - from (n,2n), (n,3n), and (n,4n) reactions. Units are neutrons produced per - source particle. - - :flux-YN: - Spherical harmonic expansion of the direction of motion - :math:`\left(\Omega\right)` of the total flux. This score will tally all - of the harmonic moments of order 0 to N. N must be between 0 - and 10. Units are particle-cm per source particle. - - :total-YN: - The total reaction rate expanded via spherical harmonics about the - direction of motion of the neutron, :math:`\Omega`. - This score will tally all of the harmonic moments of order 0 to N. N must - be between 0 and 10. Units are reactions per source particle. - - :current: - Partial currents on the boundaries of each cell in a mesh. Units are - particles per source particle. - - .. note:: - This score can only be used if a mesh filter has been - specified. Furthermore, it may not be used in conjunction with any - other score. - - :inverse-velocity: - The flux-weighted inverse velocity where the velocity is in units of - centimeters per second. - - .. note:: - The ``analog`` estimator is actually identical to the ``collision`` - estimator for the inverse-velocity score. - - :events: - Number of scoring events. Units are events per source particle. + .. note:: + The ``analog`` estimator is actually identical to the ``collision`` + estimator for the flux and inverse-velocity scores. :trigger: Precision trigger applied to all filter bins and nuclides for this tally. From 615d733cc8c1df038e8ac916239648e20ef298c2 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 08:29:42 -0600 Subject: [PATCH 33/61] Add lots of comments --- src/angle_distribution.F90 | 22 +++-- src/energy_distribution.F90 | 153 +++++++++++++++++++++------------ src/physics.F90 | 4 +- src/secondary_correlated.F90 | 27 +++--- src/secondary_header.F90 | 32 ++++--- src/secondary_kalbach.F90 | 28 +++--- src/secondary_uncorrelated.F90 | 12 ++- 7 files changed, 177 insertions(+), 101 deletions(-) diff --git a/src/angle_distribution.F90 b/src/angle_distribution.F90 index 448bafd8f7..282d51b73b 100644 --- a/src/angle_distribution.F90 +++ b/src/angle_distribution.F90 @@ -8,6 +8,14 @@ module angle_distribution implicit none private +!=============================================================================== +! ANGLEDISTRIBUTION represents an angular distribution that is to be used in an +! uncorrelated angle-energy distribution. This occurs whenever the angle +! distrbution is given in File 4 in an ENDF file. The distribution of angles +! depends on the incoming energy of the neutron, so this type stores a +! distribution for each of a set of incoming energies. +!=============================================================================== + type, public :: AngleDistribution real(8), allocatable :: energy(:) type(DistributionContainer), allocatable :: distribution(:) @@ -19,17 +27,17 @@ contains function angle_sample(this, E) result(mu) class(AngleDistribution), intent(in) :: this - real(8), intent(in) :: E - real(8) :: mu + real(8), intent(in) :: E ! incoming energy + real(8) :: mu ! sampled cosine of scattering angle - integer :: i - integer :: n - real(8) :: r + integer :: i ! index on incoming energy grid + integer :: n ! number of incoming energies + real(8) :: r ! interpolation factor on incoming energy grid - ! determine number of incoming energies + ! Determine number of incoming energies n = size(this%energy) - ! find energy bin and calculate interpolation factor -- if the energy is + ! Find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins if (E < this%energy(1)) then i = 1 diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index a8b975879f..1dea1bfece 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -9,7 +9,9 @@ module energy_distribution !=============================================================================== ! ENERGYDISTRIBUTION (abstract) defines an energy distribution that is a -! function of the incident energy of a projectile +! function of the incident energy of a projectile. Each derived type must +! implement a sample() function that returns a sampled outgoing energy given an +! incoming energy !=============================================================================== type, abstract :: EnergyDistribution @@ -31,19 +33,31 @@ module energy_distribution end type EnergyDistributionContainer !=============================================================================== -! Derived classes +! Derived classes +!=============================================================================== + +!=============================================================================== +! TABULAREQUIPROBABLE represents an energy distribution with tabular +! equiprobable energy bins as given in ACE law 1. This is an older +! representation that has largely been replaced with ACE laws 4, 44, and 61. !=============================================================================== type, extends(EnergyDistribution) :: TabularEquiprobable - integer :: n_region - integer, allocatable :: breakpoints(:) - integer, allocatable :: interpolation(:) - real(8), allocatable :: energy_in(:) - real(8), allocatable :: energy_out(:,:) + integer :: n_region ! number of interpolation regions + integer, allocatable :: breakpoints(:) ! breakpoints of interpolation regions + integer, allocatable :: interpolation(:) ! interpolation region codes + real(8), allocatable :: energy_in(:) ! incoming energies + real(8), allocatable :: energy_out(:,:) ! table of outgoing energies for + ! each incoming energy contains procedure :: sample => equiprobable_sample end type TabularEquiprobable +!=============================================================================== +! LEVELINELASTIC gives the energy distribution for level inelastic scattering by +! neutrons as in ENDF MT=51--90. +!=============================================================================== + type, extends(EnergyDistribution) :: LevelInelastic real(8) :: threshold real(8) :: mass_ratio @@ -51,6 +65,12 @@ module energy_distribution procedure :: sample => level_inelastic_sample end type LevelInelastic +!=============================================================================== +! CONTINUOUSTABULAR gives an energy distribution represented as a tabular +! distribution with histogram or linear-linear interpolation. This corresponds +! to ACE law 4, which NJOY produces for a number of ENDF energy distributions. +!=============================================================================== + type CTTable integer :: interpolation integer :: n_discrete @@ -69,13 +89,23 @@ module energy_distribution procedure :: sample => continuous_sample end type ContinuousTabular +!=============================================================================== +! MAXWELLENERGY gives the energy distribution of neutrons emitted from a Maxwell +! fission spectrum. This corresponds to ACE law 7 and ENDF File 5, LF=7. +!=============================================================================== + type, extends(EnergyDistribution) :: MaxwellEnergy - type(Tab1) :: theta - real(8) :: u + type(Tab1) :: theta ! incoming-energy-dependent parameter + real(8) :: u ! restriction energy contains procedure :: sample => maxwellenergy_sample end type MaxwellEnergy +!=============================================================================== +! EVAPORATION represents an evaporation spectrum corresponding to ACE law 9 and +! ENDF File 5, LF=9. +!=============================================================================== + type, extends(EnergyDistribution) :: Evaporation type(Tab1) :: theta real(8) :: u @@ -83,6 +113,11 @@ module energy_distribution procedure :: sample => evaporation_sample end type Evaporation +!=============================================================================== +! EVAPORATION gives the energy distribution of neutrons emitted from a Watt +! fission spectrum. This corresponds to ACE law 11 and ENDF File 5, LF=11. +!=============================================================================== + type, extends(EnergyDistribution) :: WattEnergy type(Tab1) :: a type(Tab1) :: b @@ -91,6 +126,12 @@ module energy_distribution procedure :: sample => watt_sample end type WattEnergy +!=============================================================================== +! NBODYPHASESPACE gives the energy distribution for particles emitted from +! neutron and charged-particle reactions. This corresponds to ACE law 66 and +! ENDF File 6, LAW=6. +!=============================================================================== + type, extends(EnergyDistribution) :: NBodyPhaseSpace integer :: n_bodies real(8) :: mass_ratio @@ -104,12 +145,12 @@ contains function equiprobable_sample(this, E_in) result(E_out) class(TabularEquiprobable), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - integer :: i, k, l - integer :: n_energy_in - integer :: n_energy_out + integer :: i, k, l ! indices + integer :: n_energy_in ! number of incoming energies + integer :: n_energy_out ! number of outgoing energies real(8) :: r ! interpolation factor on incoming energy real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 @@ -120,7 +161,7 @@ contains n_energy_in = size(this%energy_in) n_energy_out = size(this%energy_out, 1) - ! determine index on incoming energy grid and interpolation factor + ! Determine index on incoming energy grid and interpolation factor i = binary_search(this%energy_in, size(this%energy_in), E_in) r = (E_in - this%energy_in(i)) / & (this%energy_in(i+1) - this%energy_in(i)) @@ -171,31 +212,31 @@ contains function continuous_sample(this, E_in) result(E_out) class(ContinuousTabular), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - integer :: i, k, l - integer :: n_energy_in - integer :: n_energy_out - real(8) :: r ! interpolation factor on incoming energy - real(8) :: r1 ! random number on [0,1) - real(8) :: frac ! interpolation factor on outgoing energy - real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i - real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 - real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 - real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l - real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l - real(8) :: c_k, c_k1 ! cumulative probability - logical :: histogram_interp + integer :: i, k, l ! indices + integer :: n_energy_in ! number of incoming energies + integer :: n_energy_out ! number of outgoing energies + real(8) :: r ! interpolation factor on incoming energy + real(8) :: r1 ! random number on [0,1) + real(8) :: frac ! interpolation factor on outgoing energy + real(8) :: E_i_1, E_i_K ! endpoints on outgoing grid i + real(8) :: E_i1_1, E_i1_K ! endpoints on outgoing grid i+1 + real(8) :: E_1, E_K ! endpoints interpolated between i and i+1 + real(8) :: E_l_k, E_l_k1 ! adjacent E on outgoing grid l + real(8) :: p_l_k, p_l_k1 ! adjacent p on outgoing grid l + real(8) :: c_k, c_k1 ! cumulative probability + logical :: histogram_interp ! whether histogram interpolation is used - ! read number of interpolation regions and incoming energies + ! Read number of interpolation regions and incoming energies if (this%n_region == 1) then histogram_interp = (this%interpolation(1) == 1) else histogram_interp = .false. end if - ! find energy bin and calculate interpolation factor -- if the energy is + ! Find energy bin and calculate interpolation factor -- if the energy is ! outside the range of the tabulated energies, choose the first or last bins n_energy_in = size(this%energy_in) if (E_in < this%energy_in(1)) then @@ -221,7 +262,7 @@ contains end if end if - ! interpolation for energy E1 and EK + ! Interpolation for energy E1 and EK n_energy_out = size(this%energy_out(i)%e_out) E_i_1 = this%energy_out(i)%e_out(1) E_i_K = this%energy_out(i)%e_out(n_energy_out) @@ -233,7 +274,7 @@ contains E_1 = E_i_1 + r*(E_i1_1 - E_i_1) E_K = E_i_K + r*(E_i1_K - E_i_K) - ! determine outgoing energy bin + ! Determine outgoing energy bin n_energy_out = size(this%energy_out(l)%e_out) r1 = prn() c_k = this%energy_out(l)%c(1) @@ -243,7 +284,7 @@ contains c_k = c_k1 end do - ! check to make sure k is <= NP - 1 + ! Check to make sure k is <= NP - 1 k = min(k, n_energy_out - 1) E_l_k = this%energy_out(l)%e_out(k) @@ -282,29 +323,29 @@ contains function maxwellenergy_sample(this, E_in) result(E_out) class(MaxwellEnergy), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - real(8) :: theta + real(8) :: theta ! Maxwell distribution parameter ! Get temperature corresponding to incoming energy theta = interpolate_tab1(this%theta, E_in) do - ! sample maxwell fission spectrum + ! Sample maxwell fission spectrum E_out = maxwell_spectrum(theta) - ! accept energy based on restriction energy + ! Accept energy based on restriction energy if (E_out <= E_in - this%u) exit end do end function maxwellenergy_sample function evaporation_sample(this, E_in) result(E_out) class(Evaporation), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - real(8) :: theta + real(8) :: theta ! evaporation spectrum parameter real(8) :: x, y, v ! Get temperature corresponding to incoming energy @@ -313,7 +354,7 @@ contains y = (E_in - this%U)/theta v = 1 - exp(-y) - ! sample outgoing energy based on evaporation spectrum probability + ! Sample outgoing energy based on evaporation spectrum probability ! density function do x = -log((ONE - v*prn())*(ONE - v*prn())) @@ -325,37 +366,37 @@ contains function watt_sample(this, E_in) result(E_out) class(WattEnergy), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - real(8) :: a, b + real(8) :: a, b ! Watt spectrum parameters - ! determine Watt parameter 'a' from tabulated function + ! Determine Watt parameter 'a' from tabulated function a = interpolate_tab1(this%a, E_in) - ! determine Watt parameter 'b' from tabulated function + ! Determine Watt parameter 'b' from tabulated function b = interpolate_tab1(this%b, E_in) do ! Sample energy-dependent Watt fission spectrum E_out = watt_spectrum(a, b) - ! accept energy based on restriction energy + ! Accept energy based on restriction energy if (E_out <= E_in - this%u) exit end do end function watt_sample function nbody_sample(this, E_in) result(E_out) class(NBodyPhaseSpace), intent(in) :: this - real(8), intent(in) :: E_in - real(8) :: E_out + real(8), intent(in) :: E_in ! incoming energy + real(8) :: E_out ! sampled outgoing energy - real(8) :: Ap - real(8) :: E_max + real(8) :: Ap ! total mass of particles in neutron masses + real(8) :: E_max ! maximum possible COM energy real(8) :: x, y, v real(8) :: r1, r2, r3, r4, r5, r6 - ! determine E_max parameter + ! Determine E_max parameter Ap = this%mass_ratio E_max = (Ap - ONE)/Ap * (this%A/(this%A + ONE)*E_in + this%Q) @@ -380,7 +421,7 @@ contains y = -log(r1*r2*r3*r4) - log(r5) * cos(PI/TWO*r6)**2 end select - ! now determine v and E_out + ! Now determine v and E_out v = x/(x+y) E_out = E_max * v end function nbody_sample diff --git a/src/physics.F90 b/src/physics.F90 index 8519f4d2b0..31eb981abb 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -1315,7 +1315,7 @@ contains ! copy energy of neutron E_in = p % E - ! sample outgoing energy + ! sample outgoing energy and scattering cosine call rxn%secondary%sample(E_in, E, mu) ! if scattering system is in center-of-mass, transfer cosine of scattering @@ -1337,7 +1337,7 @@ contains ! or 1 if (abs(mu) > ONE) mu = sign(ONE,mu) - ! Set outgoing energy and scattering angle + ! Set outgoing energy and scattering angle p % E = E p % mu = mu diff --git a/src/secondary_correlated.F90 b/src/secondary_correlated.F90 index 5b1d49e28d..c0289d55eb 100644 --- a/src/secondary_correlated.F90 +++ b/src/secondary_correlated.F90 @@ -6,6 +6,11 @@ module secondary_correlated use random_lcg, only: prn use search, only: binary_search +!=============================================================================== +! CORRELATEDANGLEENERGY represents a correlated angle-energy distribution. This +! corresponds to ACE law 61 and ENDF File 6, LAW=1, LANG/=2. +!=============================================================================== + type AngleEnergyTable integer :: interpolation integer :: n_discrete @@ -16,11 +21,11 @@ module secondary_correlated end type AngleEnergyTable type, extends(AngleEnergy) :: CorrelatedAngleEnergy - integer :: n_region - integer, allocatable :: breakpoints(:) - integer, allocatable :: interpolation(:) - real(8), allocatable :: energy_in(:) - type(AngleEnergyTable), allocatable :: table(:) + integer :: n_region ! number of interpolation regions + integer, allocatable :: breakpoints(:) ! breakpoints of interpolation regions + integer, allocatable :: interpolation(:) ! interpolation region codes + real(8), allocatable :: energy_in(:) ! incoming energies + type(AngleEnergyTable), allocatable :: table(:) ! outgoing E/mu distributions contains procedure :: sample => correlated_sample end type CorrelatedAngleEnergy @@ -29,13 +34,13 @@ contains subroutine correlated_sample(this, E_in, E_out, mu) class(CorrelatedAngleEnergy), intent(in) :: this - real(8), intent(in) :: E_in - real(8), intent(out) :: E_out - real(8), intent(out) :: mu + real(8), intent(in) :: E_in ! incoming energy + real(8), intent(out) :: E_out ! sampled outgoing energy + real(8), intent(out) :: mu ! sapmled scattering cosine - integer :: i, k, l - integer :: n_energy_in - integer :: n_energy_out + integer :: i, k, l ! indices + integer :: n_energy_in ! number of incoming energies + integer :: n_energy_out ! number of outgoing energies real(8) :: r ! interpolation factor on incoming energy real(8) :: r1 ! random number on [0,1) real(8) :: frac ! interpolation factor on outgoing energy diff --git a/src/secondary_header.F90 b/src/secondary_header.F90 index e0c414826b..d858074129 100644 --- a/src/secondary_header.F90 +++ b/src/secondary_header.F90 @@ -4,15 +4,18 @@ module secondary_header use interpolation, only: interpolate_tab1 use random_lcg, only: prn +!=============================================================================== +! ANGLEENERGY (abstract) defines a correlated or uncorrelated angle-energy +! distribution that is a function of incoming energy. Each derived type must +! implement a sample() subroutine that returns an outgoing energy and scattering +! cosine given an incoming energy. +!=============================================================================== + type, abstract :: AngleEnergy contains procedure(iSampleAngleEnergy), deferred :: sample end type AngleEnergy - type :: AngleEnergyContainer - class(AngleEnergy), allocatable :: obj - end type AngleEnergyContainer - abstract interface subroutine iSampleAngleEnergy(this, E_in, E_out, mu) import AngleEnergy @@ -23,9 +26,16 @@ module secondary_header end subroutine iSampleAngleEnergy end interface + type :: AngleEnergyContainer + class(AngleEnergy), allocatable :: obj + end type AngleEnergyContainer + !=============================================================================== -! SECONDARYDISTRIBUTION stores a secondary distribution for angle and energy, -! whether correlated or uncorrelated. +! SECONDARYDISTRIBUTION stores multiple angle-energy distributions, each of +! which has a given probability of occurring for a given incoming energy. In +! general, most secondary distributions only have one angle-energy distribution, +! but for some cases (e.g., (n,2n) in certain nuclides) multiple distinct +! distributions exist. !=============================================================================== type :: SecondaryDistribution @@ -39,12 +49,12 @@ contains subroutine secondary_sample(this, E_in, E_out, mu) class(SecondaryDistribution), intent(in) :: this - real(8), intent(in) :: E_in - real(8), intent(out) :: E_out - real(8), intent(out) :: mu + real(8), intent(in) :: E_in ! incoming energy + real(8), intent(out) :: E_out ! sampled outgoing energy + real(8), intent(out) :: mu ! sampled scattering cosine - integer :: n - real(8) :: p_valid + integer :: n ! number of angle-energy distributions + real(8) :: p_valid ! probability that given distribution is valid n = size(this%applicability) if (n > 1) then diff --git a/src/secondary_kalbach.F90 b/src/secondary_kalbach.F90 index d38541edd5..5e6949206e 100644 --- a/src/secondary_kalbach.F90 +++ b/src/secondary_kalbach.F90 @@ -5,6 +5,12 @@ module secondary_kalbach use random_lcg, only: prn use search, only: binary_search +!=============================================================================== +! KalbachMann represents a correlated angle-energy distribution with the angular +! distribution represented using Kalbach-Mann systematics. This corresponds to +! ACE law 44 and ENDF File 6, LAW=1, LANG=2. +!=============================================================================== + type KalbachMannTable integer :: n_discrete integer :: interpolation @@ -16,11 +22,11 @@ module secondary_kalbach end type KalbachMannTable type, extends(AngleEnergy) :: KalbachMann - integer :: n_region - integer, allocatable :: breakpoints(:) - integer, allocatable :: interpolation(:) - real(8), allocatable :: energy_in(:) - type(KalbachMannTable), allocatable :: table(:) + integer :: n_region ! number of interpolation regions + integer, allocatable :: breakpoints(:) ! breakpoints of interpolation regions + integer, allocatable :: interpolation(:) ! interpolation region codes + real(8), allocatable :: energy_in(:) ! incoming energies + type(KalbachMannTable), allocatable :: table(:) ! outgoing E/mu parameters contains procedure :: sample => kalbachmann_sample end type KalbachMann @@ -29,13 +35,13 @@ contains subroutine kalbachmann_sample(this, E_in, E_out, mu) class(KalbachMann), intent(in) :: this - real(8), intent(in) :: E_in - real(8), intent(out) :: E_out - real(8), intent(out) :: mu + real(8), intent(in) :: E_in ! incoming energy + real(8), intent(out) :: E_out ! sampled outgoing energy + real(8), intent(out) :: mu ! sampled scattering cosine - integer :: i, k, l - integer :: n_energy_in - integer :: n_energy_out + integer :: i, k, l ! indices + integer :: n_energy_in ! number of incoming energies + integer :: n_energy_out ! number of outgoing energies real(8) :: r ! interpolation factor on incoming energy real(8) :: r1 ! random number on [0,1) real(8) :: frac ! interpolation factor on outgoing energy diff --git a/src/secondary_uncorrelated.F90 b/src/secondary_uncorrelated.F90 index 40fa53a382..22a56aa127 100644 --- a/src/secondary_uncorrelated.F90 +++ b/src/secondary_uncorrelated.F90 @@ -6,6 +6,12 @@ module secondary_uncorrelated use secondary_header, only: AngleEnergy use random_lcg, only: prn +!=============================================================================== +! UNCORRELATEDANGLEENERGY represents an uncorrelated angle-energy +! distribution. This corresponds to when an energy distribution is given in ENDF +! File 5/6 and an angular distribution is given in ENDF File 4. +!=============================================================================== + type, extends(AngleEnergy) :: UncorrelatedAngleEnergy logical :: fission = .false. type(AngleDistribution) :: angle @@ -18,9 +24,9 @@ contains subroutine uncorrelated_sample(this, E_in, E_out, mu) class(UncorrelatedAngleEnergy), intent(in) :: this - real(8), intent(in) :: E_in - real(8), intent(out) :: E_out - real(8), intent(out) :: mu + real(8), intent(in) :: E_in ! incoming energy + real(8), intent(out) :: E_out ! sampled outgoing energy + real(8), intent(out) :: mu ! sampled scattering cosine ! Sample cosine of scattering angle if (this%fission) then From 7bd0b2fe9749f3c6d6828588664b90a53ad965ff Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 08:59:54 -0600 Subject: [PATCH 34/61] Cut down on print_nuclide routine --- src/output.F90 | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/src/output.F90 b/src/output.F90 index 3a48de02da..f133bad4bb 100644 --- a/src/output.F90 +++ b/src/output.F90 @@ -322,14 +322,8 @@ contains integer :: i ! loop index over nuclides integer :: unit_ ! unit to write to - integer :: size_total ! memory used by nuclide (bytes) - integer :: size_angle_total ! total memory used for angle dist. (bytes) - integer :: size_energy_total ! total memory used for energy dist. (bytes) integer :: size_xs ! memory used for cross-sections (bytes) - integer :: size_angle ! memory used for an angle distribution (bytes) - integer :: size_energy ! memory used for a energy distributions (bytes) integer :: size_urr ! memory used for probability tables (bytes) - character(11) :: law ! secondary energy distribution law type(UrrData), pointer :: urr ! set default unit for writing information @@ -340,8 +334,6 @@ contains end if ! Initialize totals - size_angle_total = 0 - size_energy_total = 0 size_urr = 0 size_xs = 0 @@ -356,36 +348,15 @@ contains write(unit_,*) ' # of reactions = ' // trim(to_str(nuc % n_reaction)) ! Information on each reaction - write(unit_,*) ' Reaction Q-value COM Law IE size(angle) size(energy)' + write(unit_,*) ' Reaction Q-value COM IE' do i = 1, nuc % n_reaction associate (rxn => nuc % reactions(i)) -!!$ ! Determine size of angle distribution -!!$ if (rxn % has_angle_dist) then -!!$ size_angle = rxn % adist % n_energy * 16 + size(rxn % adist % data) * 8 -!!$ else -!!$ size_angle = 0 -!!$ end if - size_angle = 0 - -!!$ ! Determine size of energy distribution and law -!!$ if (rxn % has_energy_dist) then -!!$ size_energy = size(rxn % edist % data) * 8 -!!$ law = to_str(rxn % edist % law) -!!$ else -!!$ size_energy = 0 -!!$ law = 'None' -!!$ end if - size_energy = 0 - law = 'None' - - write(unit_,'(3X,A11,1X,F8.3,3X,L1,3X,A4,1X,I6,1X,I11,1X,I11)') & + write(unit_,'(3X,A11,1X,F8.3,3X,L1,3X,I6)') & reaction_name(rxn % MT), rxn % Q_value, rxn % scatter_in_cm, & - law(1:4), rxn % threshold, size_angle, size_energy + rxn % threshold ! Accumulate data size size_xs = size_xs + (nuc % n_grid - rxn%threshold + 1) * 8 - size_angle_total = size_angle_total + size_angle - size_energy_total = size_energy_total + size_energy end associate end do @@ -411,19 +382,11 @@ contains size_urr = urr % n_energy * (urr % n_prob * 6 + 1) * 8 end if - ! Calculate total memory - size_total = size_xs + size_angle_total + size_energy_total + size_urr - ! Write memory used write(unit_,*) ' Memory Requirements' write(unit_,*) ' Cross sections = ' // trim(to_str(size_xs)) // ' bytes' - write(unit_,*) ' Secondary angle distributions = ' // & - trim(to_str(size_angle_total)) // ' bytes' - write(unit_,*) ' Secondary energy distributions = ' // & - trim(to_str(size_energy_total)) // ' bytes' write(unit_,*) ' Probability Tables = ' // & trim(to_str(size_urr)) // ' bytes' - write(unit_,*) ' Total = ' // trim(to_str(size_total)) // ' bytes' ! Blank line at end of nuclide write(unit_,*) From 869456ddcffbdd2a3546aeb756fab9ddb2563164 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 09:45:43 -0600 Subject: [PATCH 35/61] Fix comment Evaporation -> WattEnergy --- src/energy_distribution.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/energy_distribution.F90 b/src/energy_distribution.F90 index 1dea1bfece..db3dcc4411 100644 --- a/src/energy_distribution.F90 +++ b/src/energy_distribution.F90 @@ -114,7 +114,7 @@ module energy_distribution end type Evaporation !=============================================================================== -! EVAPORATION gives the energy distribution of neutrons emitted from a Watt +! WATTENERGY gives the energy distribution of neutrons emitted from a Watt ! fission spectrum. This corresponds to ACE law 11 and ENDF File 5, LF=11. !=============================================================================== From c635084221860ee0347ae7699e955e644953aee9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 11:38:47 -0600 Subject: [PATCH 36/61] Add test to cover Watt, N-body phase space, and evaporation spectra. Fix bug with N-body phase space. --- src/ace.F90 | 2 +- tests/test_energy_laws/geometry.xml | 7 +++++++ tests/test_energy_laws/materials.xml | 11 +++++++++++ tests/test_energy_laws/results_true.dat | 2 ++ tests/test_energy_laws/settings.xml | 14 ++++++++++++++ tests/test_energy_laws/test_energy_laws.py | 21 +++++++++++++++++++++ 6 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 tests/test_energy_laws/geometry.xml create mode 100644 tests/test_energy_laws/materials.xml create mode 100644 tests/test_energy_laws/results_true.dat create mode 100644 tests/test_energy_laws/settings.xml create mode 100644 tests/test_energy_laws/test_energy_laws.py diff --git a/src/ace.F90 b/src/ace.F90 index 5b003d4067..1c49262985 100644 --- a/src/ace.F90 +++ b/src/ace.F90 @@ -1033,7 +1033,7 @@ contains ! Read energy law data call get_energy_dist(secondary%distribution(n)%obj, LAW, & - JXS(11), IDAT, nuc%awr, nuc%reactions(i)%Q_value) + JXS(11), IDAT, nuc%awr, nuc%reactions(i + 1)%Q_value) ! <<<<<<<<<<<<<<<<<<<<<<<<<<<< REMOVE THIS <<<<<<<<<<<<<<<<<<<<<<<<<<< ! Before the secondary distribution refactor, when the angle/energy diff --git a/tests/test_energy_laws/geometry.xml b/tests/test_energy_laws/geometry.xml new file mode 100644 index 0000000000..bb0e15d47f --- /dev/null +++ b/tests/test_energy_laws/geometry.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/test_energy_laws/materials.xml b/tests/test_energy_laws/materials.xml new file mode 100644 index 0000000000..1a40aeb1db --- /dev/null +++ b/tests/test_energy_laws/materials.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/test_energy_laws/results_true.dat b/tests/test_energy_laws/results_true.dat new file mode 100644 index 0000000000..777d0790d4 --- /dev/null +++ b/tests/test_energy_laws/results_true.dat @@ -0,0 +1,2 @@ +k-combined: +2.421637E+00 5.324089E-03 diff --git a/tests/test_energy_laws/settings.xml b/tests/test_energy_laws/settings.xml new file mode 100644 index 0000000000..9f0e8ed05f --- /dev/null +++ b/tests/test_energy_laws/settings.xml @@ -0,0 +1,14 @@ + + + + + 10 + 5 + 1000 + + + + + + + diff --git a/tests/test_energy_laws/test_energy_laws.py b/tests/test_energy_laws/test_energy_laws.py new file mode 100644 index 0000000000..5f436e4694 --- /dev/null +++ b/tests/test_energy_laws/test_energy_laws.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +"""The purpose of this test is to provide coverage of Watt, N-body phase space, +and evaporation energy distributions. The only nuclide that uses a Watt fission +spectrum in ENDF/B-VII.1 is U-233. The only nuclide that has a reaction using +the N-body phase space distribution is H-2(n.2n). Several nuclides have +reactions with evaporation spectra. In this test, the material is composed of +U-233, H-2, and Na-23 (which has several reactions with evaporation spectra. + +""" + +import glob +import os +import sys +sys.path.insert(0, os.pardir) +from testing_harness import TestHarness + + +if __name__ == '__main__': + harness = TestHarness('statepoint.10.*') + harness.main() From 2ff33e55111a6ad7b9720c558f5918b05d52afd1 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 22 Jan 2016 13:29:59 -0600 Subject: [PATCH 37/61] Modify test_energy_laws to include Ta-181 Ta-181 is among a handful of nuclides that uses Kalbach-Mann systematics with linear-linear interpolation. --- tests/test_energy_laws/geometry.xml | 2 -- tests/test_energy_laws/materials.xml | 10 +++++----- tests/test_energy_laws/results_true.dat | 2 +- tests/test_energy_laws/settings.xml | 3 --- tests/test_energy_laws/test_energy_laws.py | 21 +++++++++++++++------ 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/tests/test_energy_laws/geometry.xml b/tests/test_energy_laws/geometry.xml index bb0e15d47f..c42f45597d 100644 --- a/tests/test_energy_laws/geometry.xml +++ b/tests/test_energy_laws/geometry.xml @@ -1,7 +1,5 @@ - - diff --git a/tests/test_energy_laws/materials.xml b/tests/test_energy_laws/materials.xml index 1a40aeb1db..97f9b84be1 100644 --- a/tests/test_energy_laws/materials.xml +++ b/tests/test_energy_laws/materials.xml @@ -1,11 +1,11 @@ - + 71c - - - + + + + - diff --git a/tests/test_energy_laws/results_true.dat b/tests/test_energy_laws/results_true.dat index 777d0790d4..48eb6bc81b 100644 --- a/tests/test_energy_laws/results_true.dat +++ b/tests/test_energy_laws/results_true.dat @@ -1,2 +1,2 @@ k-combined: -2.421637E+00 5.324089E-03 +2.130076E+00 1.938907E-03 diff --git a/tests/test_energy_laws/settings.xml b/tests/test_energy_laws/settings.xml index 9f0e8ed05f..1c3f444f0f 100644 --- a/tests/test_energy_laws/settings.xml +++ b/tests/test_energy_laws/settings.xml @@ -1,14 +1,11 @@ - 10 5 1000 - - diff --git a/tests/test_energy_laws/test_energy_laws.py b/tests/test_energy_laws/test_energy_laws.py index 5f436e4694..0e593876fc 100644 --- a/tests/test_energy_laws/test_energy_laws.py +++ b/tests/test_energy_laws/test_energy_laws.py @@ -1,11 +1,20 @@ #!/usr/bin/env python -"""The purpose of this test is to provide coverage of Watt, N-body phase space, -and evaporation energy distributions. The only nuclide that uses a Watt fission -spectrum in ENDF/B-VII.1 is U-233. The only nuclide that has a reaction using -the N-body phase space distribution is H-2(n.2n). Several nuclides have -reactions with evaporation spectra. In this test, the material is composed of -U-233, H-2, and Na-23 (which has several reactions with evaporation spectra. +"""The purpose of this test is to provide coverage of energy distributions that +are not covered in other tests. It has a single material with the following +nuclides: + +U-233: Only nuclide that has a Watt fission spectrum + +H-2: Only nuclide that has an N-body phase space distribution, in this case for +(n,2n) + +Na-23: Has an evaporation spectrum and also has reactions that have multiple +angle-energy distributions, so it provides coverage for both of those +situations. + +Ta-181: One of a few nuclides that has reactions with Kalbach-Mann distributions +that use linear-linear interpolation. """ From 79dea15ddfbe9b1726cb166af34cc12d37ca5900 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 13 Nov 2015 12:59:26 -0600 Subject: [PATCH 38/61] Allow fission to create secondary neutrons in fixed source simulations. --- src/particle_header.F90 | 2 +- src/physics.F90 | 36 +++++++++++++++++++++--------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/particle_header.F90 b/src/particle_header.F90 index 0b9b251ee5..30f5e8bb64 100644 --- a/src/particle_header.F90 +++ b/src/particle_header.F90 @@ -86,7 +86,7 @@ module particle_header logical :: write_track = .false. ! Secondary particles created - integer :: n_secondary = 0 + integer(8) :: n_secondary = 0 type(Bank) :: secondary_bank(MAX_SECONDARY) contains diff --git a/src/physics.F90 b/src/physics.F90 index 31eb981abb..03a4cb6086 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -88,9 +88,14 @@ contains ! change when sampling fission sites. The following block handles all ! absorption (including fission) - if (nuc % fissionable .and. run_mode == MODE_EIGENVALUE) then + if (nuc % fissionable) then call sample_fission(i_nuclide, i_reaction) - call create_fission_sites(p, i_nuclide, i_reaction) + if (run_mode == MODE_EIGENVALUE) then + call create_fission_sites(p, i_nuclide, i_reaction, fission_bank, n_bank) + elseif (run_mode == MODE_FIXEDSOURCE) then + call create_fission_sites(p, i_nuclide, i_reaction, & + p%secondary_bank, p%n_secondary) + end if end if ! If survival biasing is being used, the following subroutine adjusts the @@ -1071,10 +1076,12 @@ contains ! neutrons produced from fission and creates appropriate bank sites. !=============================================================================== - subroutine create_fission_sites(p, i_nuclide, i_reaction) + subroutine create_fission_sites(p, i_nuclide, i_reaction, bank_array, size_bank) type(Particle), intent(inout) :: p integer, intent(in) :: i_nuclide integer, intent(in) :: i_reaction + type(Bank), intent(inout) :: bank_array(:) + integer(8), intent(inout) :: size_bank integer :: nu_d(MAX_DELAYED_GROUPS) ! number of delayed neutrons born integer :: i ! loop index @@ -1124,26 +1131,26 @@ contains end if ! Check for fission bank size getting hit - if (n_bank + nu > size(fission_bank)) then + if (size_bank + nu > size(bank_array)) then if (master) call warning("Maximum number of sites in fission bank & &reached. This can result in irreproducible results using different & &numbers of processes/threads.") end if ! Bank source neutrons - if (nu == 0 .or. n_bank == size(fission_bank)) return + if (nu == 0 .or. size_bank == size(bank_array)) return ! Initialize counter of delayed neutrons encountered for each delayed group ! to zero. nu_d(:) = 0 p % fission = .true. ! Fission neutrons will be banked - do i = int(n_bank,4) + 1, int(min(n_bank + nu, int(size(fission_bank),8)),4) + do i = int(size_bank,4) + 1, int(min(size_bank + nu, int(size(bank_array),8)),4) ! Bank source neutrons by copying particle data - fission_bank(i) % xyz = p % coord(1) % xyz + bank_array(i) % xyz = p % coord(1) % xyz ! Set weight of fission bank site - fission_bank(i) % wgt = ONE/weight + bank_array(i) % wgt = ONE/weight ! Sample cosine of angle -- fission neutrons are always emitted ! isotropically. Sometimes in ACE data, fission reactions actually have @@ -1153,17 +1160,16 @@ contains ! Sample azimuthal angle uniformly in [0,2*pi) phi = TWO*PI*prn() - fission_bank(i) % uvw(1) = mu - fission_bank(i) % uvw(2) = sqrt(ONE - mu*mu) * cos(phi) - fission_bank(i) % uvw(3) = sqrt(ONE - mu*mu) * sin(phi) + bank_array(i) % uvw(1) = mu + bank_array(i) % uvw(2) = sqrt(ONE - mu*mu) * cos(phi) + bank_array(i) % uvw(3) = sqrt(ONE - mu*mu) * sin(phi) ! Sample secondary energy distribution for fission reaction and set energy ! in fission bank - fission_bank(i) % E = sample_fission_energy(nuc, nuc%reactions(& - i_reaction), p) + bank_array(i) % E = sample_fission_energy(nuc, nuc%reactions(i_reaction), p) ! Set the delayed group of the neutron - fission_bank(i) % delayed_group = p % delayed_group + bank_array(i) % delayed_group = p % delayed_group ! Increment the number of neutrons born delayed if (p % delayed_group > 0) then @@ -1172,7 +1178,7 @@ contains end do ! increment number of bank sites - n_bank = min(n_bank + nu, int(size(fission_bank),8)) + size_bank = min(size_bank + nu, int(size(bank_array),8)) ! Store total and delayed weight banked for analog fission tallies p % n_bank = nu From 0e0984a5ff770ce2274ad1d1c5b0c98e8c621e48 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 19 Nov 2015 14:54:52 -0600 Subject: [PATCH 39/61] Check if secondary particle bank limit is reached during subcritical multiplication --- src/physics.F90 | 16 ++++++++++++---- src/tracking.F90 | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/physics.F90 b/src/physics.F90 index 03a4cb6086..c6ecf4fe66 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -1130,11 +1130,19 @@ contains nu = int(nu_t) + 1 end if - ! Check for fission bank size getting hit + ! Check for bank size getting hit. For fixed source calculations, this is a + ! fatal error. For eigenvalue calculations, it just means that k-effective + ! was too high for a single batch. if (size_bank + nu > size(bank_array)) then - if (master) call warning("Maximum number of sites in fission bank & - &reached. This can result in irreproducible results using different & - &numbers of processes/threads.") + if (run_mode == MODE_FIXEDSOURCE) then + call fatal_error("Secondary particle bank size limit reached. If you & + &are running a subcritical multiplication problem, k-effective & + &may be too close to one.") + else + if (master) call warning("Maximum number of sites in fission bank & + &reached. This can result in irreproducible results using different & + &numbers of processes/threads.") + end if end if ! Bank source neutrons diff --git a/src/tracking.F90 b/src/tracking.F90 index 2e4503e139..7cc761055b 100644 --- a/src/tracking.F90 +++ b/src/tracking.F90 @@ -202,6 +202,7 @@ contains if (p % n_secondary > 0) then call p % initialize_from_source(p % secondary_bank(p % n_secondary)) p % n_secondary = p % n_secondary - 1 + n_event = 0 ! Enter new particle in particle track file if (p % write_track) call add_particle_track() From 2fc95bb5633bda3fe282ed5c13ee4896cd347eb7 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 25 Jan 2016 09:12:55 -0600 Subject: [PATCH 40/61] Include fissionable material in fixed source test --- tests/test_fixed_source/materials.xml | 1 + tests/test_fixed_source/results_true.dat | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_fixed_source/materials.xml b/tests/test_fixed_source/materials.xml index 5242021d34..ab7a76bc00 100644 --- a/tests/test_fixed_source/materials.xml +++ b/tests/test_fixed_source/materials.xml @@ -4,6 +4,7 @@ + diff --git a/tests/test_fixed_source/results_true.dat b/tests/test_fixed_source/results_true.dat index 0940301886..b3def050e8 100644 --- a/tests/test_fixed_source/results_true.dat +++ b/tests/test_fixed_source/results_true.dat @@ -1,6 +1,6 @@ tally 1: -4.538791E+02 -2.073271E+04 +4.563929E+02 +2.091711E+04 leakage: -9.830000E+00 -9.663900E+00 +9.780000E+00 +9.566400E+00 From e570f53b22c14ad04370d992eecca1c5a8b829fc Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 27 Jan 2016 11:45:09 -0500 Subject: [PATCH 41/61] Removed elementwise comparisons for subdomains and groups parameters to MGXS class methods --- openmc/mgxs/mgxs.py | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 0eec6d4585..bfa8b02c5c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -673,14 +673,14 @@ class MGXS(object): filter_bins = [] # Construct a collection of the domain filter bins - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups - if groups != 'all': + if not isinstance(groups, basestring): cv.check_iterable_type('groups', groups, Integral) for group in groups: filters.append('energy') @@ -838,7 +838,7 @@ class MGXS(object): """ # Construct a collection of the subdomain filter bins to average across - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains) @@ -881,7 +881,7 @@ class MGXS(object): """ # Construct a collection of the subdomains to report - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) @@ -1010,7 +1010,7 @@ class MGXS(object): xs_results = h5py.File(filename, 'w') # Construct a collection of the subdomains to report - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) @@ -1192,7 +1192,7 @@ class MGXS(object): """ - if groups != 'all': + if not isinstance(groups, basestring): cv.check_iterable_type('groups', groups, Integral) if nuclides != 'all' and nuclides != 'sum': cv.check_iterable_type('nuclides', nuclides, basestring) @@ -1252,7 +1252,7 @@ class MGXS(object): columns = ['group in'] # Select out those groups the user requested - if groups != 'all': + if not isinstance(groups, basestring): if 'group in' in df: df = df[df['group in'].isin(groups)] if 'group out' in df: @@ -1789,21 +1789,21 @@ class ScatterMatrixXS(MGXS): filter_bins = [] # Construct a collection of the domain filter bins - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups - if in_groups != 'all': + if not isinstance(in_groups, basestring): cv.check_iterable_type('groups', in_groups, Integral) for group in in_groups: filters.append('energy') filter_bins.append((self.energy_groups.get_group_bounds(group),)) # Construct list of energy group bounds tuples for all requested groups - if out_groups != 'all': + if not isinstance(out_groups, basestring): cv.check_iterable_type('groups', out_groups, Integral) for group in out_groups: filters.append('energyout') @@ -1887,7 +1887,7 @@ class ScatterMatrixXS(MGXS): """ # Construct a collection of the subdomains to report - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) @@ -1926,12 +1926,6 @@ class ScatterMatrixXS(MGXS): bounds = self.energy_groups.get_group_bounds(group) string += template.format('', group, bounds[0], bounds[1]) - if subdomains == 'all': - if self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) - else: - subdomains = [self.domain.id] - # Loop over all subdomains for subdomain in subdomains: @@ -2135,14 +2129,14 @@ class Chi(MGXS): filter_bins = [] # Construct a collection of the domain filter bins - if subdomains != 'all': + if not isinstance(subdomains, basestring): cv.check_iterable_type('subdomains', subdomains, Integral) for subdomain in subdomains: filters.append(self.domain_type) filter_bins.append((subdomain,)) # Construct list of energy group bounds tuples for all requested groups - if groups != 'all': + if not isinstance(groups, basestring): cv.check_iterable_type('groups', groups, Integral) for group in groups: filters.append('energyout') From 45495b300f3418d9fe79bf9aac7527a0bba27559 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 27 Jan 2016 16:44:52 -0500 Subject: [PATCH 42/61] Fixed issues with typechecking for tally aggregation --- openmc/aggregate.py | 409 ------------------------------------------ openmc/cross.py | 422 +++++++++++++++++++++++++++++++++++++++++++- openmc/tallies.py | 11 +- 3 files changed, 419 insertions(+), 423 deletions(-) delete mode 100644 openmc/aggregate.py diff --git a/openmc/aggregate.py b/openmc/aggregate.py deleted file mode 100644 index 011ad38506..0000000000 --- a/openmc/aggregate.py +++ /dev/null @@ -1,409 +0,0 @@ -import sys -from numbers import Integral - -import numpy as np - -from openmc import Filter, Nuclide -from openmc.cross import CrossScore, CrossNuclide, CrossFilter -from openmc.filter import _FILTER_TYPES -import openmc.checkvalue as cv - - -if sys.version_info[0] >= 3: - basestring = str - -# Acceptable tally aggregation operations -_TALLY_AGGREGATE_OPS = ['sum', 'mean'] - - -class AggregateScore(object): - """A special-purpose tally score used to encapsulate an aggregate of a - subset or all of tally's scores for tally aggregation. - - Parameters - ---------- - scores : Iterable of str or CrossScore - The scores included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally's scores with this AggregateScore - - Attributes - ---------- - scores : Iterable of str or CrossScore - The scores included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally's scores with this AggregateScore - - """ - - def __init__(self, scores=None, aggregate_op=None): - - self._scores = None - self._aggregate_op = None - - if scores is not None: - self.scores = scores - if aggregate_op is not None: - self.aggregate_op = aggregate_op - - def __hash__(self): - return hash(repr(self)) - - def __eq__(self, other): - return str(other) == str(self) - - def __ne__(self, other): - return not self == other - - def __deepcopy__(self, memo): - existing = memo.get(id(self)) - - # If this is the first time we have tried to copy this object, create a copy - if existing is None: - clone = type(self).__new__(type(self)) - clone._scores = self.scores - clone._aggregate_op = self.aggregate_op - - memo[id(self)] = clone - - return clone - - # If this object has been copied before, return the first copy made - else: - return existing - - def __repr__(self): - string = ', '.join(map(str, self.scores)) - string = '{0}({1})'.format(self.aggregate_op, string) - return string - - @property - def scores(self): - return self._scores - - @property - def aggregate_op(self): - return self._aggregate_op - - @scores.setter - def scores(self, scores): - cv.check_iterable_type('scores', scores, basestring) - self._scores = scores - - @aggregate_op.setter - def aggregate_op(self, aggregate_op): - cv.check_type('aggregate_op', aggregate_op, (basestring, CrossScore)) - cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) - self._aggregate_op = aggregate_op - - -class AggregateNuclide(object): - """A special-purpose tally nuclide used to encapsulate an aggregate of a - subset or all of tally's nuclides for tally aggregation. - - Parameters - ---------- - nuclides : Iterable of str or Nuclide or CrossNuclide - The nuclides included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally's nuclides with this AggregateNuclide - - Attributes - ---------- - nuclides : Iterable of str or Nuclide or CrossNuclide - The nuclides included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally's nuclides with this AggregateNuclide - - """ - - def __init__(self, nuclides=None, aggregate_op=None): - - self._nuclides = None - self._aggregate_op = None - - if nuclides is not None: - self.nuclides = nuclides - if aggregate_op is not None: - self.aggregate_op = aggregate_op - - def __hash__(self): - return hash(repr(self)) - - def __eq__(self, other): - return str(other) == str(self) - - def __ne__(self, other): - return not self == other - - def __deepcopy__(self, memo): - existing = memo.get(id(self)) - - # If this is the first time we have tried to copy this object, create a copy - if existing is None: - clone = type(self).__new__(type(self)) - clone._nuclides = self.nuclides - clone._aggregate_op = self._aggregate_op - - memo[id(self)] = clone - - return clone - - # If this object has been copied before, return the first copy made - else: - return existing - - def __repr__(self): - - # Append each nuclide in the aggregate to the string - string = '{0}('.format(self.aggregate_op) - names = [nuclide.name if isinstance(nuclide, Nuclide) else str(nuclide) - for nuclide in self.nuclides] - string += ', '.join(map(str, names)) + ')' - return string - - @property - def nuclides(self): - return self._nuclides - - @property - def aggregate_op(self): - return self._aggregate_op - - @nuclides.setter - def nuclides(self, nuclides): - cv.check_iterable_type('nuclides', nuclides, - (basestring, Nuclide, CrossNuclide)) - self._nuclides = nuclides - - @aggregate_op.setter - def aggregate_op(self, aggregate_op): - cv.check_type('aggregate_op', aggregate_op, basestring) - cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) - self._aggregate_op = aggregate_op - - -class AggregateFilter(object): - """A special-purpose tally filter used to encapsulate an aggregate of a - subset or all of a tally filter's bins for tally aggregation. - - Parameters - ---------- - aggregate_filter : Filter or CrossFilter - The filter included in the aggregation - bins : Iterable of tuple - The filter bins included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally filter's bins with this AggregateFilter - - Attributes - ---------- - type : str - The type of the aggregatefilter (e.g., 'sum(energy)', 'sum(cell)') - aggregate_filter : filter - The filter included in the aggregation - aggregate_op : str - The tally aggregation operator (e.g., 'sum', 'mean', etc.) used - to aggregate across a tally filter's bins with this AggregateFilter - bins : Iterable of tuple - The filter bins included in the aggregation - num_bins : Integral - The number of filter bins (always 1 if aggregate_filter is defined) - stride : Integral - The number of filter, nuclide and score bins within each of this - aggregatefilter's bins. - - """ - - def __init__(self, aggregate_filter=None, bins=None, aggregate_op=None): - - self._type = '{0}({1})'.format(aggregate_op, aggregate_filter.type) - self._bins = None - self._stride = None - - self._aggregate_filter = None - self._aggregate_op = None - - if aggregate_filter is not None: - self.aggregate_filter = aggregate_filter - if bins is not None: - self.bins = bins - if aggregate_op is not None: - self.aggregate_op = aggregate_op - - def __hash__(self): - return hash(repr(self)) - - def __eq__(self, other): - return str(other) == str(self) - - def __ne__(self, other): - return not self == other - - def __repr__(self): - string = 'AggregateFilter\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) - string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self.bins) - return string - - def __deepcopy__(self, memo): - existing = memo.get(id(self)) - - # If this is the first time we have tried to copy this object, create a copy - if existing is None: - clone = type(self).__new__(type(self)) - clone._type = self.type - clone._aggregate_filter = self.aggregate_filter - clone._aggregate_op = self.aggregate_op - clone._bins = self._bins - clone._stride = self.stride - - memo[id(self)] = clone - - return clone - - # If this object has been copied before, return the first copy made - else: - return existing - - @property - def aggregate_filter(self): - return self._aggregate_filter - - @property - def aggregate_op(self): - return self._aggregate_op - - @property - def type(self): - return self._type - - @property - def bins(self): - return self._bins - - @property - def num_bins(self): - return 1 if self.aggregate_filter else 0 - - @property - def stride(self): - return self._stride - - @type.setter - def type(self, filter_type): - if filter_type not in _FILTER_TYPES.values(): - msg = 'Unable to set AggregateFilter type to "{0}" since it ' \ - 'is not one of the supported types'.format(filter_type) - raise ValueError(msg) - - self._type = filter_type - - @aggregate_filter.setter - def aggregate_filter(self, aggregate_filter): - cv.check_type('aggregate_filter', aggregate_filter, (Filter, CrossFilter)) - self._aggregate_filter = aggregate_filter - - @bins.setter - def bins(self, bins): - cv.check_iterable_type('bins', bins, (Integral, tuple)) - self._bins = bins - - @aggregate_op.setter - def aggregate_op(self, aggregate_op): - cv.check_type('aggregate_op', aggregate_op, basestring) - cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) - self._aggregate_op = aggregate_op - - @stride.setter - def stride(self, stride): - self._stride = stride - - def get_bin_index(self, filter_bin): - """Returns the index in the AggregateFilter for some bin. - - Parameters - ---------- - filter_bin : Integral or tuple of Real - A tuple of value(s) corresponding to the bin of interest in - the aggregated filter. The bin is the integer ID for 'material', - 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin - is the integer cell instance ID for 'distribcell' Filters. The - bin is a 2-tuple of floats for 'energy' and 'energyout' filters - corresponding to the energy boundaries of the bin of interest. - The bin is a (x,y,z) 3-tuple for 'mesh' filters corresponding to - the mesh cell of interest. - - Returns - ------- - filter_index : Integral - The index in the Tally data array for this filter bin. For an - AggregateTally the filter bin index is always unity. - - Raises - ------ - ValueError - When the filter_bin is not part of the aggregated filter's bins - - """ - - if filter_bin not in self.bins: - msg = 'Unable to get the bin index for AggregateFilter since ' \ - '"{0}" is not one of the bins'.format(filter_bin) - raise ValueError(msg) - else: - return 0 - - def get_pandas_dataframe(self, datasize, summary=None): - """Builds a Pandas DataFrame for the AggregateFilter's bins. - - This method constructs a Pandas DataFrame object for the AggregateFilter - with columns annotated by filter bin information. This is a helper - method for the Tally.get_pandas_dataframe(...) method. - - Parameters - ---------- - datasize : Integral - The total number of bins in the tally corresponding to this filter - summary : None or Summary - An optional Summary object to be used to construct columns for - distribcell tally filters (default is None). NOTE: This parameter - is not used by the AggregateFilter and simply mirrors the method - signature for the CrossFilter. - - Returns - ------- - pandas.DataFrame - A Pandas DataFrame with columns of strings that characterize the - aggregatefilter's bins. Each entry in the DataFrame will include - one or more aggregation operations used to construct the - aggregatefilter's bins. The number of rows in the DataFrame is the - same as the total number of bins in the corresponding tally, with - the filter bins appropriately tiled to map to the corresponding - tally bins. - - See also - -------- - Tally.get_pandas_dataframe(), Filter.get_pandas_dataframe(), - CrossFilter.get_pandas_dataframe() - - """ - - import pandas as pd - - # Construct a sring representing the filter aggregation - aggregate_bin = '{0}('.format(self.aggregate_op) - aggregate_bin += ', '.join(map(str, self.bins)) + ')' - - # Construct NumPy array of bin repeated for each element in dataframe - aggregate_bin_array = np.array([aggregate_bin]) - aggregate_bin_array = np.repeat(aggregate_bin_array, datasize) - - # Construct Pandas DataFrame for the AggregateFilter - df = pd.DataFrame({self.type: aggregate_bin_array}) - return df diff --git a/openmc/cross.py b/openmc/cross.py index ee0fcb4c82..65e12c5d27 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -1,16 +1,21 @@ import sys +from numbers import Integral + +import numpy as np from openmc import Filter, Nuclide from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv - if sys.version_info[0] >= 3: basestring = str # Acceptable tally arithmetic binary operations _TALLY_ARITHMETIC_OPS = ['+', '-', '*', '/', '^'] +# Acceptable tally aggregation operations +_TALLY_AGGREGATE_OPS = ['sum', 'mean'] + class CrossScore(object): """A special-purpose tally score used to encapsulate all combinations of two @@ -97,17 +102,19 @@ class CrossScore(object): @left_score.setter def left_score(self, left_score): - cv.check_type('left_score', left_score, (basestring, CrossScore)) + cv.check_type('left_score', left_score, + (basestring, CrossScore, AggregateScore)) self._left_score = left_score @right_score.setter def right_score(self, right_score): - cv.check_type('right_score', right_score, (basestring, CrossScore)) + cv.check_type('right_score', right_score, + (basestring, CrossScore, AggregateScore)) self._right_score = right_score @binary_op.setter def binary_op(self, binary_op): - cv.check_type('binary_op', binary_op, (basestring, CrossScore)) + cv.check_type('binary_op', binary_op, basestring) cv.check_value('binary_op', binary_op, _TALLY_ARITHMETIC_OPS) self._binary_op = binary_op @@ -214,12 +221,14 @@ class CrossNuclide(object): @left_nuclide.setter def left_nuclide(self, left_nuclide): - cv.check_type('left_nuclide', left_nuclide, (Nuclide, CrossNuclide)) + cv.check_type('left_nuclide', left_nuclide, + (Nuclide, CrossNuclide, AggregateNuclide)) self._left_nuclide = left_nuclide @right_nuclide.setter def right_nuclide(self, right_nuclide): - cv.check_type('right_nuclide', right_nuclide, (Nuclide, CrossNuclide)) + cv.check_type('right_nuclide', right_nuclide, + (Nuclide, CrossNuclide, AggregateNuclide)) self._right_nuclide = right_nuclide @binary_op.setter @@ -372,13 +381,15 @@ class CrossFilter(object): @left_filter.setter def left_filter(self, left_filter): - cv.check_type('left_filter', left_filter, (Filter, CrossFilter)) + cv.check_type('left_filter', left_filter, + (Filter, CrossFilter, AggregateFilter)) self._left_filter = left_filter self._bins['left'] = left_filter.bins @right_filter.setter def right_filter(self, right_filter): - cv.check_type('right_filter', right_filter, (Filter, CrossFilter)) + cv.check_type('right_filter', right_filter, + (Filter, CrossFilter, AggregateFilter)) self._right_filter = right_filter self._bins['right'] = right_filter.bins @@ -472,3 +483,398 @@ class CrossFilter(object): df = '(' + left_df + ' ' + self.binary_op + ' ' + right_df + ')' return df + + +class AggregateScore(object): + """A special-purpose tally score used to encapsulate an aggregate of a + subset or all of tally's scores for tally aggregation. + + Parameters + ---------- + scores : Iterable of str or CrossScore + The scores included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally's scores with this AggregateScore + + Attributes + ---------- + scores : Iterable of str or CrossScore + The scores included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally's scores with this AggregateScore + + """ + + def __init__(self, scores=None, aggregate_op=None): + + self._scores = None + self._aggregate_op = None + + if scores is not None: + self.scores = scores + if aggregate_op is not None: + self.aggregate_op = aggregate_op + + def __hash__(self): + return hash(repr(self)) + + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._scores = self.scores + clone._aggregate_op = self.aggregate_op + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + def __repr__(self): + string = ', '.join(map(str, self.scores)) + string = '{0}({1})'.format(self.aggregate_op, string) + return string + + @property + def scores(self): + return self._scores + + @property + def aggregate_op(self): + return self._aggregate_op + + @scores.setter + def scores(self, scores): + cv.check_iterable_type('scores', scores, + (basestring, CrossScore, AggregateScore)) + self._scores = scores + + @aggregate_op.setter + def aggregate_op(self, aggregate_op): + cv.check_type('aggregate_op', aggregate_op, (basestring, CrossScore)) + cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) + self._aggregate_op = aggregate_op + + +class AggregateNuclide(object): + """A special-purpose tally nuclide used to encapsulate an aggregate of a + subset or all of tally's nuclides for tally aggregation. + + Parameters + ---------- + nuclides : Iterable of str or Nuclide or CrossNuclide + The nuclides included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally's nuclides with this AggregateNuclide + + Attributes + ---------- + nuclides : Iterable of str or Nuclide or CrossNuclide + The nuclides included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally's nuclides with this AggregateNuclide + + """ + + def __init__(self, nuclides=None, aggregate_op=None): + + self._nuclides = None + self._aggregate_op = None + + if nuclides is not None: + self.nuclides = nuclides + if aggregate_op is not None: + self.aggregate_op = aggregate_op + + def __hash__(self): + return hash(repr(self)) + + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._nuclides = self.nuclides + clone._aggregate_op = self._aggregate_op + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + def __repr__(self): + + # Append each nuclide in the aggregate to the string + string = '{0}('.format(self.aggregate_op) + names = [nuclide.name if isinstance(nuclide, Nuclide) else str(nuclide) + for nuclide in self.nuclides] + string += ', '.join(map(str, names)) + ')' + return string + + @property + def nuclides(self): + return self._nuclides + + @property + def aggregate_op(self): + return self._aggregate_op + + @nuclides.setter + def nuclides(self, nuclides): + cv.check_iterable_type('nuclides', nuclides, + (basestring, Nuclide, CrossNuclide, AggregateNuclide)) + self._nuclides = nuclides + + @aggregate_op.setter + def aggregate_op(self, aggregate_op): + cv.check_type('aggregate_op', aggregate_op, basestring) + cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) + self._aggregate_op = aggregate_op + + +class AggregateFilter(object): + """A special-purpose tally filter used to encapsulate an aggregate of a + subset or all of a tally filter's bins for tally aggregation. + + Parameters + ---------- + aggregate_filter : Filter or CrossFilter + The filter included in the aggregation + bins : Iterable of tuple + The filter bins included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally filter's bins with this AggregateFilter + + Attributes + ---------- + type : str + The type of the aggregatefilter (e.g., 'sum(energy)', 'sum(cell)') + aggregate_filter : filter + The filter included in the aggregation + aggregate_op : str + The tally aggregation operator (e.g., 'sum', 'mean', etc.) used + to aggregate across a tally filter's bins with this AggregateFilter + bins : Iterable of tuple + The filter bins included in the aggregation + num_bins : Integral + The number of filter bins (always 1 if aggregate_filter is defined) + stride : Integral + The number of filter, nuclide and score bins within each of this + aggregatefilter's bins. + + """ + + def __init__(self, aggregate_filter=None, bins=None, aggregate_op=None): + + self._type = '{0}({1})'.format(aggregate_op, aggregate_filter.type) + self._bins = None + self._stride = None + + self._aggregate_filter = None + self._aggregate_op = None + + if aggregate_filter is not None: + self.aggregate_filter = aggregate_filter + if bins is not None: + self.bins = bins + if aggregate_op is not None: + self.aggregate_op = aggregate_op + + def __hash__(self): + return hash(repr(self)) + + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + + def __repr__(self): + string = 'AggregateFilter\n' + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) + string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self.bins) + return string + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._type = self.type + clone._aggregate_filter = self.aggregate_filter + clone._aggregate_op = self.aggregate_op + clone._bins = self._bins + clone._stride = self.stride + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def aggregate_filter(self): + return self._aggregate_filter + + @property + def aggregate_op(self): + return self._aggregate_op + + @property + def type(self): + return self._type + + @property + def bins(self): + return self._bins + + @property + def num_bins(self): + return 1 if self.aggregate_filter else 0 + + @property + def stride(self): + return self._stride + + @type.setter + def type(self, filter_type): + if filter_type not in _FILTER_TYPES.values(): + msg = 'Unable to set AggregateFilter type to "{0}" since it ' \ + 'is not one of the supported types'.format(filter_type) + raise ValueError(msg) + + self._type = filter_type + + @aggregate_filter.setter + def aggregate_filter(self, aggregate_filter): + cv.check_type('aggregate_filter', aggregate_filter, + (Filter, CrossFilter, AggregateFilter)) + self._aggregate_filter = aggregate_filter + + @bins.setter + def bins(self, bins): + cv.check_iterable_type('bins', bins, (Integral, tuple)) + self._bins = bins + + @aggregate_op.setter + def aggregate_op(self, aggregate_op): + cv.check_type('aggregate_op', aggregate_op, basestring) + cv.check_value('aggregate_op', aggregate_op, _TALLY_AGGREGATE_OPS) + self._aggregate_op = aggregate_op + + @stride.setter + def stride(self, stride): + self._stride = stride + + def get_bin_index(self, filter_bin): + """Returns the index in the AggregateFilter for some bin. + + Parameters + ---------- + filter_bin : Integral or tuple of Real + A tuple of value(s) corresponding to the bin of interest in + the aggregated filter. The bin is the integer ID for 'material', + 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin + is the integer cell instance ID for 'distribcell' Filters. The + bin is a 2-tuple of floats for 'energy' and 'energyout' filters + corresponding to the energy boundaries of the bin of interest. + The bin is a (x,y,z) 3-tuple for 'mesh' filters corresponding to + the mesh cell of interest. + + Returns + ------- + filter_index : Integral + The index in the Tally data array for this filter bin. For an + AggregateTally the filter bin index is always unity. + + Raises + ------ + ValueError + When the filter_bin is not part of the aggregated filter's bins + + """ + + if filter_bin not in self.bins: + msg = 'Unable to get the bin index for AggregateFilter since ' \ + '"{0}" is not one of the bins'.format(filter_bin) + raise ValueError(msg) + else: + return 0 + + def get_pandas_dataframe(self, datasize, summary=None): + """Builds a Pandas DataFrame for the AggregateFilter's bins. + + This method constructs a Pandas DataFrame object for the AggregateFilter + with columns annotated by filter bin information. This is a helper + method for the Tally.get_pandas_dataframe(...) method. + + Parameters + ---------- + datasize : Integral + The total number of bins in the tally corresponding to this filter + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). NOTE: This parameter + is not used by the AggregateFilter and simply mirrors the method + signature for the CrossFilter. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame with columns of strings that characterize the + aggregatefilter's bins. Each entry in the DataFrame will include + one or more aggregation operations used to construct the + aggregatefilter's bins. The number of rows in the DataFrame is the + same as the total number of bins in the corresponding tally, with + the filter bins appropriately tiled to map to the corresponding + tally bins. + + See also + -------- + Tally.get_pandas_dataframe(), Filter.get_pandas_dataframe(), + CrossFilter.get_pandas_dataframe() + + """ + + import pandas as pd + + # Construct a sring representing the filter aggregation + aggregate_bin = '{0}('.format(self.aggregate_op) + aggregate_bin += ', '.join(map(str, self.bins)) + ')' + + # Construct NumPy array of bin repeated for each element in dataframe + aggregate_bin_array = np.array([aggregate_bin]) + aggregate_bin_array = np.repeat(aggregate_bin_array, datasize) + + # Construct Pandas DataFrame for the AggregateFilter + df = pd.DataFrame({self.type: aggregate_bin_array}) + return df diff --git a/openmc/tallies.py b/openmc/tallies.py index 9b75f35d48..fb07532a0e 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -12,8 +12,7 @@ import sys import numpy as np from openmc import Mesh, Filter, Trigger, Nuclide -from openmc.cross import CrossScore, CrossNuclide, CrossFilter -from openmc.aggregate import AggregateScore, AggregateNuclide, AggregateFilter +from openmc.cross import * from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv from openmc.clean_xml import * @@ -2680,11 +2679,11 @@ class Tally(object): new_tally = copy.deepcopy(self) new_tally.sparse = False - if self.sum is not None: + if not self.derived and self.sum is not None: new_sum = self.get_values(scores, filters, filter_bins, nuclides, 'sum') new_tally.sum = new_sum - if self.sum_sq is not None: + if not self.derived and self.sum_sq is not None: new_sum_sq = self.get_values(scores, filters, filter_bins, nuclides, 'sum_sq') new_tally.sum_sq = new_sum_sq @@ -2955,10 +2954,10 @@ class Tally(object): diag_indices[start:end] = indices + (i * new_filter.num_bins**2) # Inject this Tally's data along the diagonal of the diagonalized Tally - if self.sum is not None: + if not self.derived and self.sum is not None: new_tally._sum = np.zeros(new_tally.shape, dtype=np.float64) new_tally._sum[diag_indices, :, :] = self.sum - if self.sum_sq is not None: + if not self.derived and self.sum_sq is not None: new_tally._sum_sq = np.zeros(new_tally.shape, dtype=np.float64) new_tally._sum_sq[diag_indices, :, :] = self.sum_sq if self.mean is not None: From bd841a268f86117da6e9e370ef99088f9ea416d6 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 28 Jan 2016 12:56:52 -0500 Subject: [PATCH 43/61] Fixed bug in StatePoint.with_summary property --- openmc/statepoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 49ac43590e..4c6f956a49 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -451,7 +451,7 @@ class StatePoint(object): @property def with_summary(self): - return False if self.summary is None else True + return False if self.summary is False else True @sparse.setter def sparse(self, sparse): From 3d9353b086076cce4f0a95ee19d1b028c1c41c18 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 28 Jan 2016 13:41:08 -0500 Subject: [PATCH 44/61] Removed StatePoint.with_summary property --- openmc/mgxs/library.py | 2 +- openmc/mgxs/mgxs.py | 2 +- openmc/statepoint.py | 6 +----- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index ca9fa5d669..4b8d8a9149 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -396,7 +396,7 @@ class Library(object): cv.check_type('statepoint', statepoint, openmc.StatePoint) - if not statepoint.with_summary: + if statepoint.summary is None: msg = 'Unable to load data from a statepoint which has not been ' \ 'linked with a summary file' raise ValueError(msg) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index bfa8b02c5c..d1f3d4b069 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -583,7 +583,7 @@ class MGXS(object): cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) - if not statepoint.with_summary: + if statepoint.summary is None: msg = 'Unable to load data from a statepoint which has not been ' \ 'linked with a summary file' raise ValueError(msg) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 4c6f956a49..b7af1a9618 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -1,4 +1,4 @@ -import sys +mport sys import re import numpy as np @@ -449,10 +449,6 @@ class StatePoint(object): def summary(self): return self._summary - @property - def with_summary(self): - return False if self.summary is False else True - @sparse.setter def sparse(self, sparse): """Convert tally data from NumPy arrays to SciPy list of lists (LIL) From 1e89fd53e6b5536b53ed23e2482a92a6e5fdcbff Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 28 Jan 2016 13:50:11 -0500 Subject: [PATCH 45/61] Fixed typo in imports for statepoint.py --- openmc/statepoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index b7af1a9618..f5b5b2e72d 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -1,4 +1,4 @@ -mport sys +import sys import re import numpy as np From 3cbea749cb7919a826bcc73f5fe1edbddcc2e497 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 28 Jan 2016 13:54:38 -0500 Subject: [PATCH 46/61] Now clear any old tallies in MGXS.load_from_statepoint(...) --- openmc/mgxs/mgxs.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d1f3d4b069..f241274581 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -612,6 +612,11 @@ class MGXS(object): filters = [] filter_bins = [] + # Clear any tallies previously loaded from a statepoint + self._tallies = None + self._xs_tally = None + self._rxn_rate_tally = None + # Find, slice and store Tallies from StatePoint # The tally slicing is needed if tally merging was used for tally_type, tally in self.tallies.items(): From 6cafdd5b65c074ad02f25d1fe286f61d79354e56 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 28 Jan 2016 13:38:02 -0600 Subject: [PATCH 47/61] Reorganize score tables as per suggestions by @wbinventor --- docs/source/usersguide/input.rst | 364 ++++++++++++++----------------- 1 file changed, 167 insertions(+), 197 deletions(-) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index ca16c8fef6..a9dda8ff47 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1476,36 +1476,186 @@ The ```` element accepts the following sub-elements: :scores: A space-separated list of the desired responses to be accumulated. The accepted - options are listed in the following table: + options are listed in the following tables: - .. table:: Score types available in OpenMC + .. table:: **Flux scores: units are particle-cm per source particle.** +----------------------+---------------------------------------------------+ |Score | Description | +======================+===================================================+ - |flux |Total flux in particle-cm per source particle. | - | | | + |flux |Total flux. | +----------------------+---------------------------------------------------+ - |total |Total reaction rate in reactions per source | - | |particle. | + |flux-YN |Spherical harmonic expansion of the direction of | + | |motion :math:`\left(\Omega\right)` of the total | + | |flux. This score will tally all of the harmonic | + | |moments of order 0 to N. N must be between 0 and | + | |10. | + +----------------------+---------------------------------------------------+ + + .. table:: **Reaction scores: units are reactions per source particle.** + + +----------------------+---------------------------------------------------+ + |Score | Description | + +======================+===================================================+ + |absorption |Total absorption rate. This accounts for all | + | |reactions which do not produce secondary neutrons. | + +----------------------+---------------------------------------------------+ + |elastic |Elastic scattering reaction rate. | + +----------------------+---------------------------------------------------+ + |fission |Total fission reaction rate. | +----------------------+---------------------------------------------------+ |scatter |Total scattering rate. Can also be identified with | - | |the "scatter-0" response type. Units are reactions | - | |per source particle. | + | |the "scatter-0" response type. | +----------------------+---------------------------------------------------+ - |absorption |Total absorption rate. This accounts for all | - | |reactions which do not produce secondary | - | |neutrons. Units are reactions per source particle. | + |scatter-N |Tally the N\ :sup:`th` \ scattering moment, where N| + | |is the Legendre expansion order of the change in | + | |particle angle :math:`\left(\mu\right)`. N must be | + | |between 0 and 10. As an example, tallying the 2\ | + | |:sup:`nd` \ scattering moment would be specified as| + | |``scatter-2``. | +----------------------+---------------------------------------------------+ - |fission |Total fission rate in reactions per source | - | |particle. | + |scatter-PN |Tally all of the scattering moments from order 0 to| + | |N, where N is the Legendre expansion order of the | + | |change in particle angle | + | |:math:`\left(\mu\right)`. That is, "scatter-P1" is | + | |equivalent to requesting tallies of "scatter-0" and| + | |"scatter-1". Like for "scatter-N", N must be | + | |between 0 and 10. As an example, tallying up to the| + | |2\ :sup:`nd` \ scattering moment would be specified| + | |as `` scatter-P2 ``. | +----------------------+---------------------------------------------------+ - |nu-fission |Total production of neutrons due to fission. Units | - | |are neutrons produced per source neutron. | + |scatter-YN |"scatter-YN" is similar to "scatter-PN" except an | + | |additional expansion is performed for the incoming | + | |particle direction :math:`\left(\Omega\right)` | + | |using the real spherical harmonics. This is useful| + | |for performing angular flux moment weighting of the| + | |scattering moments. Like "scatter-PN", "scatter-YN"| + | |will tally all of the moments from order 0 to N; N | + | |again must be between 0 and 10. | +----------------------+---------------------------------------------------+ + |total |Total reaction rate. | + +----------------------+---------------------------------------------------+ + |total-YN |The total reaction rate expanded via spherical | + | |harmonics about the direction of motion of the | + | |neutron, :math:`\Omega`. This score will tally all | + | |of the harmonic moments of order 0 to N. N must be| + | |between 0 and 10. | + +----------------------+---------------------------------------------------+ + |(n,2nd) |(n,2nd) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2n) |(n,2n) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,3n) |(n,3n) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,na) |(n,n\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,n3a) |(n,n3\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2na) |(n,2n\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,3na) |(n,3n\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,np) |(n,np) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,n2a) |(n,n2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2n2a) |(n,2n2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,nd) |(n,nd) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,nt) |(n,nt) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,nHe-3) |(n,n\ :sup:`3`\ He) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,nd2a) |(n,nd2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,nt2a) |(n,nt2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,4n) |(n,4n) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2np) |(n,2np) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,3np) |(n,3np) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,n2p) |(n,n2p) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,n*X*) |Level inelastic scattering reaction rate. The *X* | + | |indicates what which inelastic level, e.g., (n,n3) | + | |is third-level inelastic scattering. | + +----------------------+---------------------------------------------------+ + |(n,nc) |Continuum level inelastic scattering reaction rate.| + +----------------------+---------------------------------------------------+ + |(n,gamma) |Radiative capture reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,p) |(n,p) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,d) |(n,d) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,t) |(n,t) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,3He) |(n,\ :sup:`3`\ He) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,a) |(n,\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2a) |(n,2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,3a) |(n,3\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,2p) |(n,2p) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,pa) |(n,p\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,t2a) |(n,t2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,d2a) |(n,d2\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,pd) |(n,pd) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,pt) |(n,pt) reaction rate. | + +----------------------+---------------------------------------------------+ + |(n,da) |(n,d\ :math:`\alpha`\ ) reaction rate. | + +----------------------+---------------------------------------------------+ + |*Arbitrary integer* |An arbitrary integer is interpreted to mean the | + | |reaction rate for a reaction with a given ENDF MT | + | |number. | + +----------------------+---------------------------------------------------+ + + .. table:: **Particle production scores: units are particles produced per + source particles.** + + +----------------------+---------------------------------------------------+ + |Score | Description | + +======================+===================================================+ |delayed-nu-fission |Total production of delayed neutrons due to | - | |fission. Units are neutrons produced per source | - | |neutron. | + | |fission. | + +----------------------+---------------------------------------------------+ + |nu-fission |Total production of neutrons due to fission. | + +----------------------+---------------------------------------------------+ + |nu-scatter, |These scores are similar in functionality to their | + |nu-scatter-N, |``scatter*`` equivalents except the total | + |nu-scatter-PN, |production of neutrons due to scattering is scored | + |nu-scatter-YN |vice simply the scattering rate. This accounts for | + | |multiplicity from (n,2n), (n,3n), and (n,4n) | + | |reactions. | + +----------------------+---------------------------------------------------+ + + .. table:: **Miscellaneous scores: units are indicated for each.** + + +----------------------+---------------------------------------------------+ + |Score | Description | + +======================+===================================================+ + |current |Partial currents on the boundaries of each cell in | + | |a mesh. Units are particles per source | + | |particle. Note that this score can only be used if | + | |a mesh filter has been specified. Furthermore, it | + | |may not be used in conjunction with any other | + | |score. | + +----------------------+---------------------------------------------------+ + |events |Number of scoring events. Units are events per | + | |source particle. | + +----------------------+---------------------------------------------------+ + |inverse-velocity |The flux-weighted inverse velocity where the | + | |velocity is in units of centimeters per second. | +----------------------+---------------------------------------------------+ |kappa-fission |The recoverable energy production rate due to | | |fission. The recoverable energy is defined as the | @@ -1518,186 +1668,6 @@ The ```` element accepts the following sub-elements: | |:math:`\gamma`-rays are assumed to deposit their | | |energy locally. Units are MeV per source particle. | +----------------------+---------------------------------------------------+ - |scatter-N |Tally the N\ :sup:`th` \ scattering moment, where N| - | |is the Legendre expansion order of the change in | - | |particle angle :math:`\left(\mu\right)`. N must be | - | |between 0 and 10. As an example, tallying the 2\ | - | |:sup:`nd` \ scattering moment would be specified as| - | |``scatter-2``. Units are reactions| - | |per source particle. | - +----------------------+---------------------------------------------------+ - |scatter-PN |Tally all of the scattering moments from order 0 to| - | |N, where N is the Legendre expansion order of the | - | |change in particle angle | - | |:math:`\left(\mu\right)`. That is, "scatter-P1" is | - | |equivalent to requesting tallies of "scatter-0" and| - | |"scatter-1". Like for "scatter-N", N must be | - | |between 0 and 10. As an example, tallying up to the| - | |2\ :sup:`nd` \ scattering moment would be specified| - | |as `` scatter-P2 ``. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |scatter-YN |"scatter-YN" is similar to "scatter-PN" except an | - | |additional expansion is performed for the incoming | - | |particle direction :math:`\left(\Omega\right)` | - | |using the real spherical harmonics. This is useful| - | |for performing angular flux moment weighting of the| - | |scattering moments. Like "scatter-PN", "scatter-YN"| - | |will tally all of the moments from order 0 to N; N | - | |again must be between 0 and 10. Units are reactions| - | |per source particle. | - +----------------------+---------------------------------------------------+ - |nu-scatter, |These scores are similar in functionality to their | - |nu-scatter-N, |``scatter*`` equivalents except the total | - |nu-scatter-PN, |production of neutrons due to scattering is scored | - |nu-scatter-YN |vice simply the scattering rate. This accounts for | - | |multiplicity from (n,2n), (n,3n), and (n,4n) | - | |reactions. Units are neutrons produced per source | - | |particle. | - +----------------------+---------------------------------------------------+ - |flux-YN |Spherical harmonic expansion of the direction of | - | |motion :math:`\left(\Omega\right)` of the total | - | |flux. This score will tally all of the harmonic | - | |moments of order 0 to N. N must be between 0 and | - | |10. Units are particle-cm per source particle. | - +----------------------+---------------------------------------------------+ - |total-YN |The total reaction rate expanded via spherical | - | |harmonics about the direction of motion of the | - | |neutron, :math:`\Omega`. This score will tally all | - | |of the harmonic moments of order 0 to N. N must be| - | |between 0 and 10. Units are reactions per source | - | |particle. | - +----------------------+---------------------------------------------------+ - |current |Partial currents on the boundaries of each cell in | - | |a mesh. Units are particles per source | - | |particle. Note that this score can only be used if | - | |a mesh filter has been specified. Furthermore, it | - | |may not be used in conjunction with any other | - | |score. | - +----------------------+---------------------------------------------------+ - |inverse-velocity |The flux-weighted inverse velocity where the | - | |velocity is in units of centimeters per second. | - +----------------------+---------------------------------------------------+ - |events |Number of scoring events. Units are events per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |elastic |Elastic scattering reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,2nd) |(n,2nd) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,2n) |(n,2n) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,3n) |(n,3n) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,na) |(n,n\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,n3a) |(n,n3\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,2na) |(n,2n\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,3na) |(n,3n\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,np) |(n,np) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,n2a) |(n,n2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,2n2a) |(n,2n2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,nd) |(n,nd) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,nt) |(n,nt) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,nHe-3) |(n,n\ :sup:`3`\ He) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,nd2a) |(n,nd2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,nt2a) |(n,nt2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,4n) |(n,4n) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,2np) |(n,2np) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,3np) |(n,3np) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,n2p) |(n,n2p) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,n*X*) |Level inelastic scattering reaction rate. The *X* | - | |indicates what which inelastic level, e.g., (n,n3) | - | |is third-level inelastic scattering. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,nc) |Continuum level inelastic scattering reaction | - | |rate. Units are reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,gamma) |Radiative capture reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,p) |(n,p) reaction rate. Units are reactions per source| - | |particle. | - +----------------------+---------------------------------------------------+ - |(n,d) |(n,d) reaction rate. Units are reactions per source| - | |particle. | - +----------------------+---------------------------------------------------+ - |(n,t) |(n,t) reaction rate. Units are reactions per source| - | |particle. | - +----------------------+---------------------------------------------------+ - |(n,3He) |(n,\ :sup:`3`\ He) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,a) |(n,\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,2a) |(n,2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,3a) |(n,3\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,2p) |(n,2p) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,pa) |(n,p\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,t2a) |(n,t2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,d2a) |(n,d2\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |(n,pd) |(n,pd) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,pt) |(n,pt) reaction rate. Units are reactions per | - | |source particle. | - +----------------------+---------------------------------------------------+ - |(n,da) |(n,d\ :math:`\alpha`\ ) reaction rate. Units are | - | |reactions per source particle. | - +----------------------+---------------------------------------------------+ - |*Arbitrary integer* |An arbitrary integer is interpreted to mean the | - | |reaction rate for a reaction with a given ENDF MT | - | |number. Units are reactions per source particle. | - +----------------------+---------------------------------------------------+ .. note:: The ``analog`` estimator is actually identical to the ``collision`` From 0e2db9afee6d9bf35a5b5618e01b67c48b2449b5 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 28 Jan 2016 14:42:07 -0500 Subject: [PATCH 48/61] Renamed cross.py to arithmetic.py per suggestion by @paulromano --- openmc/{cross.py => arithmetic.py} | 0 openmc/tallies.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename openmc/{cross.py => arithmetic.py} (100%) diff --git a/openmc/cross.py b/openmc/arithmetic.py similarity index 100% rename from openmc/cross.py rename to openmc/arithmetic.py diff --git a/openmc/tallies.py b/openmc/tallies.py index fb07532a0e..3c4d99c730 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -12,7 +12,7 @@ import sys import numpy as np from openmc import Mesh, Filter, Trigger, Nuclide -from openmc.cross import * +from openmc.arithmetic import * from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv from openmc.clean_xml import * From 51deaa7cbf4a5bc06bb9ddc0dd2beef830115333 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 28 Jan 2016 15:56:28 -0600 Subject: [PATCH 49/61] Prevent segfault when user specifies '18' on tally scores --- src/input_xml.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input_xml.F90 b/src/input_xml.F90 index ec8a8a5a15..df9d28e13e 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -3247,7 +3247,7 @@ contains call fatal_error("Cannot tally absorption rate with an outgoing & &energy filter.") end if - case ('fission') + case ('fission', '18') t % score_bins(j) = SCORE_FISSION if (t % find_filter(FILTER_ENERGYOUT) > 0) then call fatal_error("Cannot tally fission rate with an outgoing & From 26c5e5e66b52c2768a6639c52745f2ca8d4e0533 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 29 Jan 2016 17:06:58 -0600 Subject: [PATCH 50/61] Fix spacing around % as pointed out by @wbinventor --- src/physics.F90 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/physics.F90 b/src/physics.F90 index c6ecf4fe66..da2682ebf7 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -94,7 +94,7 @@ contains call create_fission_sites(p, i_nuclide, i_reaction, fission_bank, n_bank) elseif (run_mode == MODE_FIXEDSOURCE) then call create_fission_sites(p, i_nuclide, i_reaction, & - p%secondary_bank, p%n_secondary) + p % secondary_bank, p % n_secondary) end if end if @@ -1174,7 +1174,8 @@ contains ! Sample secondary energy distribution for fission reaction and set energy ! in fission bank - bank_array(i) % E = sample_fission_energy(nuc, nuc%reactions(i_reaction), p) + bank_array(i) % E = sample_fission_energy(nuc, & + nuc % reactions(i_reaction), p) ! Set the delayed group of the neutron bank_array(i) % delayed_group = p % delayed_group From c746d7a9faea3de7641bc4b0a08268fdd66569d6 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Sat, 30 Jan 2016 11:44:54 -0500 Subject: [PATCH 51/61] Fixed issue with 3D lattice distribcell offsets --- openmc/summary.py | 1 - openmc/universe.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/openmc/summary.py b/openmc/summary.py index eb14d3bb81..29c30c2936 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -368,7 +368,6 @@ class Summary(object): lattice.universes = universes if offsets is not None: - offsets = np.swapaxes(offsets, 0, 2) lattice.offsets = offsets # Add the Lattice to the global dictionary of all Lattices diff --git a/openmc/universe.py b/openmc/universe.py index 237ddce1f7..319acc3302 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -1101,8 +1101,8 @@ class RectLattice(Lattice): # For 3D Lattices else: - offset = self._offsets[i[1]-1, i[2]-1, i[3]-1, distribcell_index-1] - offset += self._universes[i[1]-1][i[2]-1][i[3]-1].get_cell_instance( + offset = self._offsets[i[3]-1, i[2]-1, i[1]-1, distribcell_index-1] + offset += self._universes[i[3]-1][i[2]-1][i[1]-1].get_cell_instance( path, distribcell_index) return offset From 1bd815c52966c9285881d8c6ebca313dcac6c563 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Sat, 30 Jan 2016 13:57:06 -0500 Subject: [PATCH 52/61] Fixed distribcell offsets for 2D lattices --- openmc/summary.py | 1 + openmc/universe.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/openmc/summary.py b/openmc/summary.py index 29c30c2936..3e10f8edbd 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -367,6 +367,7 @@ class Summary(object): # Set the universes for the lattice lattice.universes = universes + # Set the distribcell offsets for the lattice if offsets is not None: lattice.offsets = offsets diff --git a/openmc/universe.py b/openmc/universe.py index 319acc3302..74c438615c 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -1095,7 +1095,7 @@ class RectLattice(Lattice): # For 2D Lattices if len(self._dimension) == 2: - offset = self._offsets[i[1]-1, i[2]-1, 0, distribcell_index-1] + offset = self._offsets[i[3]-1, i[2]-1, i[1]-1, distribcell_index-1] offset += self._universes[i[1]-1][i[2]-1].get_cell_instance(path, distribcell_index) From fb0e166e1cd78caad2304701c525c528ae05967f Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Sat, 30 Jan 2016 15:06:55 -0500 Subject: [PATCH 53/61] Fixed issue with double subdomain-avg MGXS --- openmc/arithmetic.py | 3 ++- openmc/mgxs/library.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/openmc/arithmetic.py b/openmc/arithmetic.py index 65e12c5d27..8574c4873e 100644 --- a/openmc/arithmetic.py +++ b/openmc/arithmetic.py @@ -823,7 +823,8 @@ class AggregateFilter(object): """ - if filter_bin not in self.bins: + if filter_bin not in self.bins and \ + filter_bin != self._aggregate_filter.bins: msg = 'Unable to get the bin index for AggregateFilter since ' \ '"{0}" is not one of the bins'.format(filter_bin) raise ValueError(msg) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 4b8d8a9149..e87b4bdaef 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -568,8 +568,9 @@ class Library(object): for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = subdomain_avg_library.get_mgxs(domain, mgxs_type) - avg_mgxs = mgxs.get_subdomain_avg_xs() - subdomain_avg_library.all_mgxs[domain.id][mgxs_type] = avg_mgxs + if mgxs.domain_type == 'distribcell': + avg_mgxs = mgxs.get_subdomain_avg_xs() + subdomain_avg_library.all_mgxs[domain.id][mgxs_type] = avg_mgxs return subdomain_avg_library From cc571091a3709452d3f4ae9dafac5554c4a5df73 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Sun, 31 Jan 2016 17:47:21 -0500 Subject: [PATCH 54/61] Hotfix for OpenMC-OpenCG lattice conversions with y index reversal for OpenCG --- openmc/opencg_compatible.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 0bda48c160..a5573d9eb4 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -922,6 +922,9 @@ def get_opencg_lattice(openmc_lattice): universe_id = universes[z][y][x].id universe_array[z][y][x] = unique_universes[universe_id] + # Reverse y-dimension in array to match ordering in OpenCG + universe_array = universe_array[:, ::-1, :] + opencg_lattice = opencg.Lattice(lattice_id, name) opencg_lattice.dimension = dimension opencg_lattice.width = pitch From 55f5fa18a3b0d3e3a94eaa2df3d423dfbea427c9 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 1 Feb 2016 12:58:15 -0600 Subject: [PATCH 55/61] Fix CSS override for RTD documentation builds --- docs/source/conf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 65db07b25e..6ca551a431 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -154,7 +154,8 @@ html_title = "OpenMC Documentation" # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] -html_context = {'css_files': ['_static/theme_overrides.css']} +def setup(app): + app.add_stylesheet('theme_overrides.css') # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. From ec05e52089cdc8506db4d09cfd253381db2959c1 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Mon, 1 Feb 2016 15:56:40 -0500 Subject: [PATCH 56/61] Fixed issue in Pandas DataFrame compatibility with OpenCG lattice indexing --- openmc/filter.py | 4 +++- openmc/opencg_compatible.py | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index a0c777fa07..54814a6b6f 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -673,9 +673,11 @@ class Filter(object): # Assign entry to Lattice Multi-index column else: + # Reverse y index per lattice ordering in OpenCG level_dict[lat_id_key][offset] = coords._lattice._id level_dict[lat_x_key][offset] = coords._lat_x - level_dict[lat_y_key][offset] = coords._lat_y + level_dict[lat_y_key][offset] = \ + coords._lattice.dimension[1] - coords._lat_y - 1 level_dict[lat_z_key][offset] = coords._lat_z # Move to next node in LocalCoords linked list diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index a5573d9eb4..0bda48c160 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -922,9 +922,6 @@ def get_opencg_lattice(openmc_lattice): universe_id = universes[z][y][x].id universe_array[z][y][x] = unique_universes[universe_id] - # Reverse y-dimension in array to match ordering in OpenCG - universe_array = universe_array[:, ::-1, :] - opencg_lattice = opencg.Lattice(lattice_id, name) opencg_lattice.dimension = dimension opencg_lattice.width = pitch From e413bf30e5f6437ac3a48f78ede9ed2a834a8050 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Mon, 1 Feb 2016 19:24:43 -0500 Subject: [PATCH 57/61] Fixed issue with discrepancy in indexing of y-dimension in lattice universes and offsets --- openmc/summary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/summary.py b/openmc/summary.py index 3e10f8edbd..d22e367c95 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -369,7 +369,7 @@ class Summary(object): # Set the distribcell offsets for the lattice if offsets is not None: - lattice.offsets = offsets + lattice.offsets = offsets[:, ::-1, :] # Add the Lattice to the global dictionary of all Lattices self.lattices[index] = lattice From a62dc7868f26ffcbcc8fc78129ec760257c6bc15 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Tue, 2 Feb 2016 15:53:27 -0500 Subject: [PATCH 58/61] Added test for distribcell tallies in an asymmetric lattice --- tests/test_asymmetric_lattice/inputs_true.dat | 1 + .../test_asymmetric_lattice/results_true.dat | 1 + .../test_asymmetric_lattice.py | 127 ++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 tests/test_asymmetric_lattice/inputs_true.dat create mode 100644 tests/test_asymmetric_lattice/results_true.dat create mode 100644 tests/test_asymmetric_lattice/test_asymmetric_lattice.py diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat new file mode 100644 index 0000000000..70073c6bd2 --- /dev/null +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -0,0 +1 @@ +dd39c0ae6327e6e74cb077d56e37c112611b95c4c10d96203e672b3e7f928211cc991ec7ebbf9eeadabd968dcdcb651b250233169b62d43ef6994ab9a46cb34a \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat new file mode 100644 index 0000000000..d809e6409d --- /dev/null +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -0,0 +1 @@ +7e75ad5b7979e65e52ce564bfbd8fac819013ef8ba35fe184569b452dd9a1ba98d267b6e33d357fdd1c943f201125ff8a4f8601147b87036525870528063dcae \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py new file mode 100644 index 0000000000..7b83a590ef --- /dev/null +++ b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +from openmc.source import Source +from openmc.stats import Box + + +class AsymmetricLatticeTestHarness(PyAPITestHarness): + + def _build_inputs(self): + """Build an axis-asymmetric lattice of fuel assemblies""" + + # Build full core geometry from underlying input set + self._input_set.build_default_materials_and_geometry() + + # Extract all universes from the full core geometry + geometry = self._input_set.geometry.geometry + all_univs = geometry.get_all_universes() + print(all_univs.keys()) + + # Extract universes encapsulating fuel and water assemblies + water = all_univs[7] + fuel = all_univs[8] + + # Construct a 3x3 lattice of fuel assemblies + core_lat = openmc.RectLattice(name='3x3 Core Lattice', lattice_id=202) + core_lat.dimension = (3, 3) + core_lat.lower_left = (-32.13, -32.13) + core_lat.pitch = (21.42, 21.42) + core_lat.universes = [[fuel, water, water], + [fuel, fuel, fuel], + [water, water, water]] + + # Create bounding surfaces + min_x = openmc.XPlane(x0=-32.13, boundary_type='reflective') + max_x = openmc.XPlane(x0=+32.13, boundary_type='reflective') + min_y = openmc.YPlane(y0=-32.13, boundary_type='reflective') + max_y = openmc.YPlane(y0=+32.13, boundary_type='reflective') + min_z = openmc.ZPlane(z0=0, boundary_type='reflective') + max_z = openmc.ZPlane(z0=+32.13, boundary_type='reflective') + + # Define root universe + root_univ = openmc.Universe(universe_id=0, name='root universe') + root_cell = openmc.Cell(cell_id=1) + root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z + root_cell.fill = core_lat + root_univ.add_cell(root_cell) + + # Over-ride geometry in the input set with this 3x3 lattice + self._input_set.geometry.geometry.root_universe = root_univ + + # Initialize a "distribcell" filter for the cold fuel pin cell + distrib_filter = openmc.Filter(type='distribcell', bins=[27]) + + # Initialize the tallies + tally = openmc.Tally(name='distribcell tally', tally_id=27) + tally.add_filter(distrib_filter) + tally.add_score('nu-fission') + + # Initialize the tallies file + tallies_file = openmc.TalliesFile() + tallies_file.add_tally(tally) + + # Assign the tallies file to the input set + self._input_set.tallies = tallies_file + + # Specify summary output and correct source sampling box + self._input_set.build_default_settings() + self._input_set.settings.output = {'summary': True} + self._input_set.settings.source = Source(space=Box( + [0, 0, 0], [32.13, 32.13, 32.13])) + + # Write input XML files + self._input_set.export() + + def _get_results(self, hash_output=True): + """Digest info in statepoint and summary and return as a string.""" + + # Read the statepoint file + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Extract the tally of interest + tally = sp.get_tally(name='distribcell tally') + + # Create a string of all mean, std. dev. values for both tallies + outstr = '' + outstr += ', '.join(map(str, tally.mean.flatten())) + '\n' + outstr += ', '.join(map(str, tally.std_dev.flatten())) + '\n' + + # Extract fuel assembly lattices from the summary + all_cells = su.openmc_geometry.get_all_cells() + fuel = all_cells[80].fill + core = all_cells[1].fill + + # Append a string of lattice distribcell offsets to the string + outstr += ', '.join(map(str, fuel.offsets.flatten())) + '\n' + outstr += ', '.join(map(str, core.offsets.flatten())) + '\n' + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + def _cleanup(self): + super(AsymmetricLatticeTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = AsymmetricLatticeTestHarness('statepoint.10.h5', True) + harness.main() From dd18376d3f8de550ff2c0e74ea8fd7d8ee301cf9 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 3 Feb 2016 11:18:50 -0500 Subject: [PATCH 59/61] Made source only fissionable for asymmetric lattice test --- openmc/tallies.py | 2 +- tests/test_asymmetric_lattice/inputs_true.dat | 2 +- tests/test_asymmetric_lattice/results_true.dat | 2 +- .../test_asymmetric_lattice.py | 12 +++++++----- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/openmc/tallies.py b/openmc/tallies.py index 3c4d99c730..3294a1d062 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2748,7 +2748,7 @@ class Tally(object): bin_indices.append(bin_index) num_bins += 1 - find_filter.bins = set(find_filter.bins[bin_indices]) + find_filter.bins = np.unique(find_filter.bins[bin_indices]) find_filter.num_bins = num_bins # Update the new tally's filter strides diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index 70073c6bd2..552c8d039e 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -dd39c0ae6327e6e74cb077d56e37c112611b95c4c10d96203e672b3e7f928211cc991ec7ebbf9eeadabd968dcdcb651b250233169b62d43ef6994ab9a46cb34a \ No newline at end of file +fe07eb28fd0dbb56edaecd510f5e8e4db7271e5c9aecf3d880cce92b69872a0aacf825b8e88cd2e9b1ff709f578b269b1835f53cf2561a390062e1e7e03b5276 \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat index d809e6409d..0cf2315ea4 100644 --- a/tests/test_asymmetric_lattice/results_true.dat +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -1 +1 @@ -7e75ad5b7979e65e52ce564bfbd8fac819013ef8ba35fe184569b452dd9a1ba98d267b6e33d357fdd1c943f201125ff8a4f8601147b87036525870528063dcae \ No newline at end of file +cea61172ecad5554ef86f52d6adad6ad5e21931cf3d67feb37b8bf9d75e618786f638685e458051d4a39afe1a924fd651cf6674a88cf1f1842fd69cd851e1f17 \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py index 7b83a590ef..3b9e2029b2 100644 --- a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py +++ b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py @@ -22,7 +22,6 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): # Extract all universes from the full core geometry geometry = self._input_set.geometry.geometry all_univs = geometry.get_all_universes() - print(all_univs.keys()) # Extract universes encapsulating fuel and water assemblies water = all_univs[7] @@ -55,7 +54,7 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): # Over-ride geometry in the input set with this 3x3 lattice self._input_set.geometry.geometry.root_universe = root_univ - # Initialize a "distribcell" filter for the cold fuel pin cell + # Initialize a "distribcell" filter for the fuel pin cell distrib_filter = openmc.Filter(type='distribcell', bins=[27]) # Initialize the tallies @@ -70,11 +69,14 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): # Assign the tallies file to the input set self._input_set.tallies = tallies_file - # Specify summary output and correct source sampling box + self._input_set.build_default_settings() + + # Specify summary output and correct source sampling box + source = Source(space=Box([-32, -32, 0], [32, 32, 32])) + source.only_fissionable = True + self._input_set.settings.source = source self._input_set.settings.output = {'summary': True} - self._input_set.settings.source = Source(space=Box( - [0, 0, 0], [32.13, 32.13, 32.13])) # Write input XML files self._input_set.export() From cd921b74bf3b7febb34da50a36c7a414170c0f8e Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Wed, 3 Feb 2016 14:14:52 -0500 Subject: [PATCH 60/61] Now setting the source space Box to be fissionable in asymmetric lattice test --- tests/test_asymmetric_lattice/inputs_true.dat | 2 +- tests/test_asymmetric_lattice/results_true.dat | 2 +- tests/test_asymmetric_lattice/test_asymmetric_lattice.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index 552c8d039e..e3b00b185c 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -fe07eb28fd0dbb56edaecd510f5e8e4db7271e5c9aecf3d880cce92b69872a0aacf825b8e88cd2e9b1ff709f578b269b1835f53cf2561a390062e1e7e03b5276 \ No newline at end of file +b9b4222c4beea80fe6083590f6b785303d174972d80671fb661bac8e030db6f4a61648240cfad6162799361fc0e08a23c61d31aff844d978528d6dad5b5fbc63 \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/results_true.dat b/tests/test_asymmetric_lattice/results_true.dat index 0cf2315ea4..ec4b883886 100644 --- a/tests/test_asymmetric_lattice/results_true.dat +++ b/tests/test_asymmetric_lattice/results_true.dat @@ -1 +1 @@ -cea61172ecad5554ef86f52d6adad6ad5e21931cf3d67feb37b8bf9d75e618786f638685e458051d4a39afe1a924fd651cf6674a88cf1f1842fd69cd851e1f17 \ No newline at end of file +b5f96919ca474cd1c9c9d0acde3b8aac4a1cf636443c72a38b6c5a4221a8ce3e90182aaef2f664e44b9175ca257a89db2328b63e19388ee0e5006de4b3d92ce6 \ No newline at end of file diff --git a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py index 3b9e2029b2..0080078aa3 100644 --- a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py +++ b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py @@ -74,7 +74,7 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): # Specify summary output and correct source sampling box source = Source(space=Box([-32, -32, 0], [32, 32, 32])) - source.only_fissionable = True + source.space.only_fissionable = True self._input_set.settings.source = source self._input_set.settings.output = {'summary': True} From 0439b6cc6d3f7d6f51441f3edfd1c88eface0f88 Mon Sep 17 00:00:00 2001 From: "wbinventor@gmail.com" Date: Thu, 4 Feb 2016 09:13:06 -0500 Subject: [PATCH 61/61] Now require numpy >=1.9 in install_requires per request by @paulromano --- setup.py | 2 +- tests/test_asymmetric_lattice/test_asymmetric_lattice.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 0bf4549c03..87fdff68cf 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ kwargs = {'name': 'openmc', if have_setuptools: kwargs.update({ # Required dependencies - 'install_requires': ['numpy', 'h5py', 'matplotlib'], + 'install_requires': ['numpy>=1.9', 'h5py', 'matplotlib'], # Optional dependencies 'extras_require': { diff --git a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py index 0080078aa3..5a1d47ef85 100644 --- a/tests/test_asymmetric_lattice/test_asymmetric_lattice.py +++ b/tests/test_asymmetric_lattice/test_asymmetric_lattice.py @@ -69,7 +69,7 @@ class AsymmetricLatticeTestHarness(PyAPITestHarness): # Assign the tallies file to the input set self._input_set.tallies = tallies_file - + # Build default settings self._input_set.build_default_settings() # Specify summary output and correct source sampling box