From 66ca3248281be1db120a761bc2d9d9ec89f1dd01 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 6 Dec 2011 00:02:21 -0500 Subject: [PATCH] Reduced redundant calls to calculate_nuclide_xs. --- src/cross_section_header.f90 | 3 +-- src/physics.f90 | 7 ++++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cross_section_header.f90 b/src/cross_section_header.f90 index 2f3116062d..2977231f50 100644 --- a/src/cross_section_header.f90 +++ b/src/cross_section_header.f90 @@ -176,8 +176,7 @@ module cross_section_header type NuclideMicroXS integer :: index_grid ! index on nuclide energy grid integer :: index_temp ! temperature index for nuclide - integer :: last_index_grid ! previous index on nuclide energy grid - integer :: last_index_temp ! previous temperature index for nuclide + real(8) :: last_E = 0.0 ! last evaluated energy real(8) :: interp_factor ! interpolation factor on nuc. energy grid real(8) :: total ! microscropic total xs real(8) :: elastic ! microscopic elastic scattering xs diff --git a/src/physics.f90 b/src/physics.f90 index 249800a727..6982959add 100644 --- a/src/physics.f90 +++ b/src/physics.f90 @@ -182,7 +182,9 @@ contains end if ! Calculate microscopic cross section for this nuclide - call calculate_nuclide_xs(p, index_nuclide, index_sab) + if (p % E /= micro_xs(index_nuclide) % last_E) then + call calculate_nuclide_xs(p, index_nuclide, index_sab) + end if ! Copy atom density of nuclide in material atom_density = mat % atom_density(i) @@ -351,6 +353,9 @@ contains micro_xs(i) % elastic_sab = elastic end if + ! Set last evaluated energy + micro_xs(i) % last_E = p % E + end subroutine calculate_nuclide_xs !===============================================================================