Skip to content

Commit 01178bf

Browse files
author
walshjon
committed
Merge pull request #305 from paulromano/fix-nndc-xs
Fix metastable nuclides listed for NNDC cross sections
2 parents 14fe961 + b9b6677 commit 01178bf

37 files changed

Lines changed: 5883 additions & 6710 deletions

File tree

data/cross_sections_nndc.xml

Lines changed: 22 additions & 868 deletions
Large diffs are not rendered by default.

data/cross_sections_serpent.xml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -453,12 +453,12 @@
453453
<ace_table alias="Co-59.12c" awr="58.426899" location="1" name="27059.12c" path="27059ENDF7.ace" temperature="1.034e-07" zaid="27059"/>
454454
<ace_table alias="Co-59.15c" awr="58.426899" location="47907" name="27059.15c" path="27059ENDF7.ace" temperature="1.293e-07" zaid="27059"/>
455455
<ace_table alias="Co-59.18c" awr="58.426899" location="95695" name="27059.18c" path="27059ENDF7.ace" temperature="1.551e-07" zaid="27059"/>
456-
<ace_table alias="Co-158m.03c" awr="57.438099" location="9465" metastable="1" name="27358.03c" path="27358ENDF7.ace" temperature="2.585e-08" zaid="27358"/>
457-
<ace_table alias="Co-158m.06c" awr="57.438099" location="12631" metastable="1" name="27358.06c" path="27358ENDF7.ace" temperature="5.17e-08" zaid="27358"/>
458-
<ace_table alias="Co-158m.09c" awr="57.438099" location="15789" metastable="1" name="27358.09c" path="27358ENDF7.ace" temperature="7.756e-08" zaid="27358"/>
459-
<ace_table alias="Co-158m.12c" awr="57.438099" location="1" metastable="1" name="27358.12c" path="27358ENDF7.ace" temperature="1.034e-07" zaid="27358"/>
460-
<ace_table alias="Co-158m.15c" awr="57.438099" location="3152" metastable="1" name="27358.15c" path="27358ENDF7.ace" temperature="1.293e-07" zaid="27358"/>
461-
<ace_table alias="Co-158m.18c" awr="57.438099" location="6305" metastable="1" name="27358.18c" path="27358ENDF7.ace" temperature="1.551e-07" zaid="27358"/>
456+
<ace_table alias="Co-58m.03c" awr="57.438099" location="9465" metastable="1" name="27358.03c" path="27358ENDF7.ace" temperature="2.585e-08" zaid="27358"/>
457+
<ace_table alias="Co-58m.06c" awr="57.438099" location="12631" metastable="1" name="27358.06c" path="27358ENDF7.ace" temperature="5.17e-08" zaid="27358"/>
458+
<ace_table alias="Co-58m.09c" awr="57.438099" location="15789" metastable="1" name="27358.09c" path="27358ENDF7.ace" temperature="7.756e-08" zaid="27358"/>
459+
<ace_table alias="Co-58m.12c" awr="57.438099" location="1" metastable="1" name="27358.12c" path="27358ENDF7.ace" temperature="1.034e-07" zaid="27358"/>
460+
<ace_table alias="Co-58m.15c" awr="57.438099" location="3152" metastable="1" name="27358.15c" path="27358ENDF7.ace" temperature="1.293e-07" zaid="27358"/>
461+
<ace_table alias="Co-58m.18c" awr="57.438099" location="6305" metastable="1" name="27358.18c" path="27358ENDF7.ace" temperature="1.551e-07" zaid="27358"/>
462462
<ace_table alias="Ni-Nat.03c" awr="58.1838" location="309404" name="28000.03c" path="28000JNDL32.ace" temperature="2.585e-08" zaid="28000"/>
463463
<ace_table alias="Ni-Nat.06c" awr="58.1838" location="413232" name="28000.06c" path="28000JNDL32.ace" temperature="5.17e-08" zaid="28000"/>
464464
<ace_table alias="Ni-Nat.09c" awr="58.1838" location="516809" name="28000.09c" path="28000JNDL32.ace" temperature="7.756e-08" zaid="28000"/>
@@ -2422,12 +2422,12 @@
24222422
<ace_table alias="Am-241.12c" awr="238.985992" location="1" name="95241.12c" path="95241ENDF7.ace" temperature="1.034e-07" zaid="95241"/>
24232423
<ace_table alias="Am-241.15c" awr="238.985992" location="31077" name="95241.15c" path="95241ENDF7.ace" temperature="1.293e-07" zaid="95241"/>
24242424
<ace_table alias="Am-241.18c" awr="238.985992" location="61491" name="95241.18c" path="95241ENDF7.ace" temperature="1.551e-07" zaid="95241"/>
2425-
<ace_table alias="Am-242.03c" awr="239.980103" location="94457" metastable="1" name="95242.03c" path="95242ENDF7.ace" temperature="2.585e-08" zaid="95242"/>
2426-
<ace_table alias="Am-242.06c" awr="239.980103" location="126665" metastable="1" name="95242.06c" path="95242ENDF7.ace" temperature="5.17e-08" zaid="95242"/>
2427-
<ace_table alias="Am-242.09c" awr="239.980103" location="158587" metastable="1" name="95242.09c" path="95242ENDF7.ace" temperature="7.756e-08" zaid="95242"/>
2428-
<ace_table alias="Am-242.12c" awr="239.980103" location="1" metastable="1" name="95242.12c" path="95242ENDF7.ace" temperature="1.034e-07" zaid="95242"/>
2429-
<ace_table alias="Am-242.15c" awr="239.980103" location="31580" metastable="1" name="95242.15c" path="95242ENDF7.ace" temperature="1.293e-07" zaid="95242"/>
2430-
<ace_table alias="Am-242.18c" awr="239.980103" location="63058" metastable="1" name="95242.18c" path="95242ENDF7.ace" temperature="1.551e-07" zaid="95242"/>
2425+
<ace_table alias="Am-242.03c" awr="239.980103" location="94457" name="95242.03c" path="95242ENDF7.ace" temperature="2.585e-08" zaid="95242"/>
2426+
<ace_table alias="Am-242.06c" awr="239.980103" location="126665" name="95242.06c" path="95242ENDF7.ace" temperature="5.17e-08" zaid="95242"/>
2427+
<ace_table alias="Am-242.09c" awr="239.980103" location="158587" name="95242.09c" path="95242ENDF7.ace" temperature="7.756e-08" zaid="95242"/>
2428+
<ace_table alias="Am-242.12c" awr="239.980103" location="1" name="95242.12c" path="95242ENDF7.ace" temperature="1.034e-07" zaid="95242"/>
2429+
<ace_table alias="Am-242.15c" awr="239.980103" location="31580" name="95242.15c" path="95242ENDF7.ace" temperature="1.293e-07" zaid="95242"/>
2430+
<ace_table alias="Am-242.18c" awr="239.980103" location="63058" name="95242.18c" path="95242ENDF7.ace" temperature="1.551e-07" zaid="95242"/>
24312431
<ace_table alias="Am-243.03c" awr="240.973404" location="101763" name="95243.03c" path="95243ENDF7.ace" temperature="2.585e-08" zaid="95243"/>
24322432
<ace_table alias="Am-243.06c" awr="240.973404" location="142713" name="95243.06c" path="95243ENDF7.ace" temperature="5.17e-08" zaid="95243"/>
24332433
<ace_table alias="Am-243.09c" awr="240.973404" location="180357" name="95243.09c" path="95243ENDF7.ace" temperature="7.756e-08" zaid="95243"/>

src/ace.F90

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ module ace
33
use ace_header, only: Nuclide, Reaction, SAlphaBeta, XsListing, &
44
DistEnergy
55
use constants
6-
use endf, only: reaction_name
6+
use endf, only: reaction_name, is_fission, is_disappearance
77
use error, only: fatal_error, warning
88
use fission, only: nu_total
99
use global
10-
use list_header, only: ListElemInt
10+
use list_header, only: ListElemInt, ListInt
1111
use material_header, only: Material
1212
use output, only: write_message
1313
use set_header, only: SetChar
@@ -610,6 +610,7 @@ subroutine read_reactions(nuc)
610610
integer :: IE ! reaction's starting index on energy grid
611611
integer :: NE ! number of energies for reaction
612612
type(Reaction), pointer :: rxn => null()
613+
type(ListInt) :: MTs
613614

614615
LMT = JXS(3)
615616
JXS4 = JXS(4)
@@ -682,17 +683,37 @@ subroutine read_reactions(nuc)
682683
allocate(rxn % sigma(NE))
683684
XSS_index = JXS7 + LOCA + 1
684685
rxn % sigma = get_real(NE)
686+
end do
687+
688+
! Create set of MT values
689+
do i = 1, size(nuc % reactions)
690+
call MTs % append(nuc % reactions(i) % MT)
691+
end do
685692

686-
! Skip redundant reactions -- this includes total inelastic level
687-
! scattering, gas production cross sections (MT=200+), and (n,p), (n,d),
688-
! etc. reactions leaving the nucleus in an excited state
689-
if (rxn % MT == N_LEVEL .or. rxn % MT > N_DA) cycle
693+
! Create total, absorption, and fission cross sections
694+
do i = 2, size(nuc % reactions)
695+
rxn => nuc % reactions(i)
696+
IE = rxn % threshold
697+
NE = size(rxn % sigma)
698+
699+
! Skip total inelastic level scattering, gas production cross sections
700+
! (MT=200+), etc.
701+
if (rxn % MT == N_LEVEL) cycle
702+
if (rxn % MT > N_5N2P .and. rxn % MT < N_P0) cycle
703+
704+
! Skip level cross sections if total is available
705+
if (rxn % MT >= N_P0 .and. rxn % MT <= N_PC .and. MTs % contains(N_P)) cycle
706+
if (rxn % MT >= N_D0 .and. rxn % MT <= N_DC .and. MTs % contains(N_D)) cycle
707+
if (rxn % MT >= N_T0 .and. rxn % MT <= N_TC .and. MTs % contains(N_T)) cycle
708+
if (rxn % MT >= N_3HE0 .and. rxn % MT <= N_3HEC .and. MTs % contains(N_3HE)) cycle
709+
if (rxn % MT >= N_A0 .and. rxn % MT <= N_AC .and. MTs % contains(N_A)) cycle
710+
if (rxn % MT >= N_2N0 .and. rxn % MT <= N_2NC .and. MTs % contains(N_2N)) cycle
690711

691712
! Add contribution to total cross section
692713
nuc % total(IE:IE+NE-1) = nuc % total(IE:IE+NE-1) + rxn % sigma
693714

694715
! Add contribution to absorption cross section
695-
if (rxn % MT >= N_GAMMA .and. rxn % MT <= N_DA) then
716+
if (is_disappearance(rxn % MT)) then
696717
nuc % absorption(IE:IE+NE-1) = nuc % absorption(IE:IE+NE-1) + rxn % sigma
697718
end if
698719

@@ -705,8 +726,7 @@ subroutine read_reactions(nuc)
705726
end if
706727

707728
! Add contribution to fission cross section
708-
if (rxn % MT == N_FISSION .or. rxn % MT == N_F .or. rxn % MT == N_NF &
709-
.or. rxn % MT == N_2NF .or. rxn % MT == N_3NF) then
729+
if (is_fission(rxn % MT)) then
710730
nuc % fissionable = .true.
711731
nuc % fission(IE:IE+NE-1) = nuc % fission(IE:IE+NE-1) + rxn % sigma
712732

@@ -719,11 +739,14 @@ subroutine read_reactions(nuc)
719739

720740
! Keep track of this reaction for easy searching later
721741
i_fission = i_fission + 1
722-
nuc % index_fission(i_fission) = i + 1
742+
nuc % index_fission(i_fission) = i
723743
nuc % n_fission = nuc % n_fission + 1
724744
end if
725745
end do
726746

747+
! Clear MTs set
748+
call MTs % clear()
749+
727750
end subroutine read_reactions
728751

729752
!===============================================================================

src/constants.F90

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -166,54 +166,28 @@ module constants
166166

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

218192
! ACE table types
219193
integer, parameter :: &

src/endf.F90

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ function is_fission(MT) result(fission_event)
159159
integer, intent(in) :: MT
160160
logical :: fission_event
161161

162-
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
162+
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
163163
.or. MT == N_3NF) then
164164
fission_event = .true.
165165
else
@@ -168,6 +168,28 @@ function is_fission(MT) result(fission_event)
168168

169169
end function is_fission
170170

171+
!===============================================================================
172+
! IS_DISAPPEARANCE determines if a given MT number is that of a disappearance
173+
! reaction, i.e. a reaction with no neutron in the exit channel
174+
!===============================================================================
175+
176+
function is_disappearance(MT) result(dis)
177+
178+
integer, intent(in) :: MT
179+
logical :: dis
180+
181+
if (MT >= N_GAMMA .and. MT <= N_DA) then
182+
dis = .true.
183+
elseif (MT >= N_P0 .and. MT <= N_AC) then
184+
dis = .true.
185+
elseif (any(MT == [N_TA, N_DT, N_P3HE, N_D3HE, N_3HEA, N_3P])) then
186+
dis = .true.
187+
else
188+
dis = .false.
189+
end if
190+
191+
end function is_disappearance
192+
171193
!===============================================================================
172194
! IS_SCATTER determines if a given MT number is that of a scattering event
173195
!===============================================================================
@@ -178,7 +200,7 @@ function is_scatter(MT) result(scatter_event)
178200
logical :: scatter_event
179201

180202
if (MT < 100) then
181-
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
203+
if (MT == N_FISSION .or. MT == N_F .or. MT == N_NF .or. MT == N_2NF &
182204
.or. MT == N_3NF) then
183205
scatter_event = .false.
184206
else
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
k-combined:
2-
1.026057E+00 2.398033E-02
2+
9.600453E-01 2.025740E-01
33
tallies:
44
0.000000E+00
55
0.000000E+00
6-
1.890713E+01
7-
7.152908E+01
8-
3.917546E+00
9-
3.075301E+00
10-
5.552927E+01
11-
6.183865E+02
6+
1.161117E+01
7+
2.754585E+01
8+
2.434414E+00
9+
1.211549E+00
10+
3.447929E+01
11+
2.424749E+02

tests/test_filter_cellborn/results_true.dat

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
k-combined:
2-
1.026057E+00 2.398033E-02
2+
9.600453E-01 2.025740E-01
33
tallies:
44
0.000000E+00
55
0.000000E+00
6-
9.139025E+01
7-
1.677920E+03
6+
5.474596E+01
7+
6.113816E+02
88
0.000000E+00
99
0.000000E+00
1010
0.000000E+00
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
k-combined:
2-
1.026057E+00 2.398033E-02
2+
9.600453E-01 2.025740E-01
33
tallies:
4-
3.042702E+01
5-
1.853385E+02
6-
4.178722E+01
7-
3.512687E+02
8-
5.646523E+01
9-
6.385839E+02
10-
1.076536E+01
11-
2.354172E+01
4+
2.878078E+01
5+
1.706092E+02
6+
4.244509E+01
7+
3.618897E+02
8+
5.296331E+01
9+
5.632082E+02
10+
9.415257E+00
11+
1.798132E+01
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
k-combined:
2-
1.026057E+00 2.398033E-02
2+
9.600453E-01 2.025740E-01
33
tallies:
4-
2.946000E+01
5-
1.737786E+02
6-
4.311000E+01
7-
3.722645E+02
8-
5.405000E+01
9-
5.861625E+02
10-
7.210000E+00
11-
1.053790E+01
4+
2.904000E+01
5+
1.735606E+02
6+
4.173000E+01
7+
3.504547E+02
8+
5.212000E+01
9+
5.450908E+02
10+
6.720000E+00
11+
9.287600E+00

0 commit comments

Comments
 (0)