Expand list of reaction MTs that are checked.

This commit is contained in:
Paul Romano 2014-08-26 01:15:01 -04:00
parent 2a8c07e0d9
commit ed5480173a
3 changed files with 57 additions and 62 deletions

View file

@ -3,7 +3,7 @@ module ace
use ace_header, only: Nuclide, Reaction, SAlphaBeta, XsListing, &
DistEnergy
use constants
use endf, only: reaction_name, is_fission
use endf, only: reaction_name, is_fission, is_disappearance
use error, only: fatal_error, warning
use fission, only: nu_total
use global
@ -696,25 +696,24 @@ contains
IE = rxn % threshold
NE = size(rxn % sigma)
! Skip redundant reactions -- this includes total inelastic level
! scattering, gas production cross sections (MT=200+), and (n,p), (n,d),
! etc. reactions leaving the nucleus in an excited state
! Skip total inelastic level scattering, gas production cross sections
! (MT=200+), etc.
if (rxn % MT == N_LEVEL) cycle
if (rxn % MT > 200 .and. rxn % MT < 600) cycle
if (rxn % MT > N_5N2P .and. rxn % MT < N_P0) cycle
! Skip level cross sections if total is available
if (rxn % MT >= 600 .and. rxn % MT < 650 .and. MTs % contains(N_P)) cycle
if (rxn % MT >= 650 .and. rxn % MT < 700 .and. MTs % contains(N_D)) cycle
if (rxn % MT >= 700 .and. rxn % MT < 750 .and. MTs % contains(N_T)) cycle
if (rxn % MT >= 750 .and. rxn % MT < 800 .and. MTs % contains(N_3HE)) cycle
if (rxn % MT >= 800 .and. rxn % MT < 850 .and. MTs % contains(N_A)) cycle
if (rxn % MT >= N_P0 .and. rxn % MT <= N_PC .and. MTs % contains(N_P)) cycle
if (rxn % MT >= N_D0 .and. rxn % MT <= N_DC .and. MTs % contains(N_D)) cycle
if (rxn % MT >= N_T0 .and. rxn % MT <= N_TC .and. MTs % contains(N_T)) cycle
if (rxn % MT >= N_3HE0 .and. rxn % MT <= N_3HEC .and. MTs % contains(N_3HE)) cycle
if (rxn % MT >= N_A0 .and. rxn % MT <= N_AC .and. MTs % contains(N_A)) cycle
if (rxn % MT >= N_2N0 .and. rxn % MT <= N_2NC .and. MTs % contains(N_2N)) cycle
! Add contribution to total cross section
nuc % total(IE:IE+NE-1) = nuc % total(IE:IE+NE-1) + rxn % sigma
! Add contribution to absorption cross section
if ((rxn % MT >= N_GAMMA .and. rxn % MT <= N_DA) .or. &
(rxn % MT >= 600 .and. rxn % MT < 850)) then
if (is_disappearance(rxn % MT)) then
nuc % absorption(IE:IE+NE-1) = nuc % absorption(IE:IE+NE-1) + rxn % sigma
end if

View file

@ -166,54 +166,28 @@ module constants
! Reaction types
integer, parameter :: &
TOTAL_XS = 1, &
ELASTIC = 2, &
N_LEVEL = 4, &
MISC = 5, &
N_2ND = 11, &
N_2N = 16, &
N_3N = 17, &
N_FISSION = 18, &
N_F = 19, &
N_NF = 20, &
N_2NF = 21, &
N_NA = 22, &
N_N3A = 23, &
N_2NA = 24, &
N_3NA = 25, &
N_NP = 28, &
N_N2A = 29, &
N_2N2A = 30, &
N_ND = 32, &
N_NT = 33, &
N_N3HE = 34, &
N_ND2A = 35, &
N_NT2A = 36, &
N_4N = 37, &
N_3NF = 38, &
N_2NP = 41, &
N_3NP = 42, &
N_N2P = 44, &
N_NPA = 45, &
N_N1 = 51, &
N_N40 = 90, &
N_NC = 91, &
N_DISAPPEAR = 101, &
N_GAMMA = 102, &
N_P = 103, &
N_D = 104, &
N_T = 105, &
N_3HE = 106, &
N_A = 107, &
N_2A = 108, &
N_3A = 109, &
N_2P = 111, &
N_PA = 112, &
N_T2A = 113, &
N_D2A = 114, &
N_PD = 115, &
N_PT = 116, &
N_DA = 117
TOTAL_XS = 1, ELASTIC = 2, N_LEVEL = 4, MISC = 5, N_2ND = 11, &
N_2N = 16, N_3N = 17, N_FISSION = 18, N_F = 19, N_NF = 20, &
N_2NF = 21, N_NA = 22, N_N3A = 23, N_2NA = 24, N_3NA = 25, &
N_NP = 28, N_N2A = 29, N_2N2A = 30, N_ND = 32, N_NT = 33, &
N_N3HE = 34, N_ND2A = 35, N_NT2A = 36, N_4N = 37, N_3NF = 38, &
N_2NP = 41, N_3NP = 42, N_N2P = 44, N_NPA = 45, N_N1 = 51, &
N_N40 = 90, N_NC = 91, N_DISAPPEAR = 101, N_GAMMA = 102, N_P = 103, &
N_D = 104, N_T = 105, N_3HE = 106, N_A = 107, N_2A = 108, &
N_3A = 109, N_2P = 111, N_PA = 112, N_T2A = 113, N_D2A = 114, &
N_PD = 115, N_PT = 116, N_DA = 117, N_5N = 152, N_6N = 153, &
N_2NT = 154, N_TA = 155, N_4NP = 156, N_3ND = 157, N_NDA = 158, &
N_2NPA = 159, N_7N = 160, N_8N = 161, N_5NP = 162, N_6NP = 163, &
N_7NP = 164, N_4NA = 165, N_5NA = 166, N_6NA = 167, N_7NA = 168, &
N_4ND = 169, N_5ND = 170, N_6ND = 171, N_3NT = 172, N_4NT = 173, &
N_5NT = 174, N_6NT = 175, N_2N3HE = 176, N_3N3HE = 177, N_4N3HE = 178, &
N_3N2P = 179, N_3N3A = 180, N_3NPA = 181, N_DT = 182, N_NPD = 183, &
N_NPT = 184, N_NDT = 185, N_NP3HE = 186, N_ND3HE = 187, N_NT3HE = 188, &
N_NTA = 189, N_2N2P = 190, N_P3HE = 191, N_D3HE = 192, N_3HEA = 193, &
N_4N2P = 194, N_4N2A = 195, N_4NPA = 196, N_3P = 197, N_N3P = 198, &
N_3N2PA = 199, N_5N2P = 200, N_P0 = 600, N_PC = 649, N_D0 = 650, &
N_DC = 699, N_T0 = 700, N_TC = 749, N_3HE0 = 750, N_3HEC = 799, &
N_A0 = 800, N_AC = 849, N_2N0 = 875, N_2NC = 891
! ACE table types
integer, parameter :: &

View file

@ -159,7 +159,7 @@ contains
integer, intent(in) :: MT
logical :: fission_event
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
.or. MT == N_3NF) then
fission_event = .true.
else
@ -168,6 +168,28 @@ contains
end function is_fission
!===============================================================================
! IS_DISAPPEARANCE determines if a given MT number is that of a disappearance
! reaction, i.e. a reaction with no neutron in the exit channel
!===============================================================================
function is_disappearance(MT) result(dis)
integer, intent(in) :: MT
logical :: dis
if (MT >= N_GAMMA .and. MT <= N_DA) then
dis = .true.
elseif (MT >= N_P0 .and. MT <= N_AC) then
dis = .true.
elseif (any(MT == [N_TA, N_DT, N_P3HE, N_D3HE, N_3HEA, N_3P])) then
dis = .true.
else
dis = .false.
end if
end function is_disappearance
!===============================================================================
! IS_SCATTER determines if a given MT number is that of a scattering event
!===============================================================================
@ -178,7 +200,7 @@ contains
logical :: scatter_event
if (MT < 100) then
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
.or. MT == N_3NF) then
scatter_event = .false.
else