mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 14:15:42 -04:00
Expand list of reaction MTs that are checked.
This commit is contained in:
parent
2a8c07e0d9
commit
ed5480173a
3 changed files with 57 additions and 62 deletions
23
src/ace.F90
23
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
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 :: &
|
||||
|
|
|
|||
26
src/endf.F90
26
src/endf.F90
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue