From 4edef2dd2d7bd7714e1a03de8af00929f1e36f7c Mon Sep 17 00:00:00 2001 From: walshjon Date: Wed, 23 Oct 2013 14:26:22 -0700 Subject: [PATCH] removed extraneous forced recalculation of S(a,b) xs --- src/ace_header.F90 | 5 +++-- src/cross_section.F90 | 11 ++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/ace_header.F90 b/src/ace_header.F90 index d075c22889..5e2f39a007 100644 --- a/src/ace_header.F90 +++ b/src/ace_header.F90 @@ -214,8 +214,9 @@ module ace_header real(8) :: kappa_fission ! microscopic energy-released from fission ! Information for S(a,b) use - integer :: index_sab ! index in sab_tables (zero means no table) - real(8) :: elastic_sab ! microscopic elastic scattering on S(a,b) table + integer :: index_sab ! index in sab_tables (zero means no table) + integer :: last_index_sab = 0 ! index in sab_tables last used by this nuclide + real(8) :: elastic_sab ! microscopic elastic scattering on S(a,b) table ! Information for URR probability table use logical :: use_ptable ! in URR range with probability tables? diff --git a/src/cross_section.F90 b/src/cross_section.F90 index 4c9ffb8c88..299033590d 100644 --- a/src/cross_section.F90 +++ b/src/cross_section.F90 @@ -93,6 +93,8 @@ contains ! Calculate microscopic cross section for this nuclide if (p % E /= micro_xs(i_nuclide) % last_E) then call calculate_nuclide_xs(i_nuclide, i_sab, p % E) + else if (i_sab /= micro_xs(i_nuclide) % last_index_sab) then + call calculate_nuclide_xs(i_nuclide, i_sab, p % E) end if ! ======================================================================== @@ -235,13 +237,8 @@ contains end if end if - ! Set last evaluated energy -- if we're in S(a,b) region, force - ! re-calculation of cross-section - if (i_sab == 0) then - micro_xs(i_nuclide) % last_E = E - else - micro_xs(i_nuclide) % last_E = ZERO - end if + micro_xs(i_nuclide) % last_E = E + micro_xs(i_nuclide) % last_index_sab = i_sab end subroutine calculate_nuclide_xs