Skip to content

Commit e8f68a0

Browse files
shimwellpaulromano
andauthored
adding resulting nuclide to cross section plot legend (#2851)
Co-authored-by: Paul Romano <[email protected]>
1 parent 3b575a4 commit e8f68a0

File tree

3 files changed

+183
-97
lines changed

3 files changed

+183
-97
lines changed

openmc/data/data.py

+87
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,93 @@
179179
118: 'Og'}
180180
ATOMIC_NUMBER = {value: key for key, value in ATOMIC_SYMBOL.items()}
181181

182+
DADZ = {
183+
'(n,2nd)': (-3, -1),
184+
'(n,2n)': (-1, 0),
185+
'(n,3n)': (-2, 0),
186+
'(n,na)': (-4, -2),
187+
'(n,n3a)': (-12, -6),
188+
'(n,2na)': (-5, -2),
189+
'(n,3na)': (-6, -2),
190+
'(n,np)': (-1, -1),
191+
'(n,n2a)': (-8, -4),
192+
'(n,2n2a)': (-9, -4),
193+
'(n,nd)': (-2, -1),
194+
'(n,nt)': (-3, -1),
195+
'(n,n3He)': (-3, -2),
196+
'(n,nd2a)': (-10, -5),
197+
'(n,nt2a)': (-11, -5),
198+
'(n,4n)': (-3, 0),
199+
'(n,2np)': (-2, -1),
200+
'(n,3np)': (-3, -1),
201+
'(n,n2p)': (-2, -2),
202+
'(n,npa)': (-5, -3),
203+
'(n,gamma)': (1, 0),
204+
'(n,p)': (0, -1),
205+
'(n,d)': (-1, -1),
206+
'(n,t)': (-2, -1),
207+
'(n,3He)': (-2, -2),
208+
'(n,a)': (-3, -2),
209+
'(n,2a)': (-7, -4),
210+
'(n,3a)': (-11, -6),
211+
'(n,2p)': (-1, -2),
212+
'(n,pa)': (-4, -3),
213+
'(n,t2a)': (-10, -5),
214+
'(n,d2a)': (-9, -5),
215+
'(n,pd)': (-2, -2),
216+
'(n,pt)': (-3, -2),
217+
'(n,da)': (-5, -3),
218+
'(n,5n)': (-4, 0),
219+
'(n,6n)': (-5, 0),
220+
'(n,2nt)': (-4, -1),
221+
'(n,ta)': (-6, -3),
222+
'(n,4np)': (-4, -1),
223+
'(n,3nd)': (-4, -1),
224+
'(n,nda)': (-6, -3),
225+
'(n,2npa)': (-6, -3),
226+
'(n,7n)': (-6, 0),
227+
'(n,8n)': (-7, 0),
228+
'(n,5np)': (-5, -1),
229+
'(n,6np)': (-6, -1),
230+
'(n,7np)': (-7, -1),
231+
'(n,4na)': (-7, -2),
232+
'(n,5na)': (-8, -2),
233+
'(n,6na)': (-9, -2),
234+
'(n,7na)': (-10, -2),
235+
'(n,4nd)': (-5, -1),
236+
'(n,5nd)': (-6, -1),
237+
'(n,6nd)': (-7, -1),
238+
'(n,3nt)': (-5, -1),
239+
'(n,4nt)': (-6, -1),
240+
'(n,5nt)': (-7, -1),
241+
'(n,6nt)': (-8, -1),
242+
'(n,2n3He)': (-4, -2),
243+
'(n,3n3He)': (-5, -2),
244+
'(n,4n3He)': (-6, -2),
245+
'(n,3n2p)': (-4, -2),
246+
'(n,3n2a)': (-10, -4),
247+
'(n,3npa)': (-7, -3),
248+
'(n,dt)': (-4, -2),
249+
'(n,npd)': (-3, -2),
250+
'(n,npt)': (-4, -2),
251+
'(n,ndt)': (-5, -2),
252+
'(n,np3He)': (-4, -3),
253+
'(n,nd3He)': (-5, -3),
254+
'(n,nt3He)': (-6, -3),
255+
'(n,nta)': (-7, -3),
256+
'(n,2n2p)': (-3, -2),
257+
'(n,p3He)': (-4, -3),
258+
'(n,d3He)': (-5, -3),
259+
'(n,3Hea)': (-6, -4),
260+
'(n,4n2p)': (-5, -2),
261+
'(n,4n2a)': (-11, -4),
262+
'(n,4npa)': (-8, -3),
263+
'(n,3p)': (-2, -3),
264+
'(n,n3p)': (-3, -3),
265+
'(n,3n2pa)': (-8, -4),
266+
'(n,5n2p)': (-6, -2),
267+
}
268+
182269
# Values here are from the Committee on Data for Science and Technology
183270
# (CODATA) 2018 recommendation (https://physics.nist.gov/cuu/Constants/).
184271

openmc/deplete/chain.py

+91-97
Original file line numberDiff line numberDiff line change
@@ -7,115 +7,109 @@
77
from io import StringIO
88
from itertools import chain
99
import math
10-
import os
1110
import re
1211
from collections import defaultdict, namedtuple
1312
from collections.abc import Mapping, Iterable
1413
from numbers import Real, Integral
1514
from warnings import warn
1615

17-
from openmc.checkvalue import check_type, check_greater_than
18-
from openmc.data import gnds_name, zam, DataLibrary
19-
from openmc.exceptions import DataError
20-
from .nuclide import FissionYieldDistribution
21-
2216
import lxml.etree as ET
2317
import scipy.sparse as sp
2418

19+
from openmc.checkvalue import check_type, check_greater_than
20+
from openmc.data import gnds_name, zam
21+
from .nuclide import FissionYieldDistribution, Nuclide
2522
import openmc.data
26-
from openmc._xml import clean_indentation
27-
from .nuclide import Nuclide, DecayTuple, ReactionTuple
2823

2924

30-
# tuple of (possible MT values, (dA, dZ), secondaries) where dA is the change in
31-
# the mass number and dZ is the change in the atomic number
32-
ReactionInfo = namedtuple('ReactionInfo', ('mts', 'dadz', 'secondaries'))
25+
# tuple of (possible MT values, secondaries)
26+
ReactionInfo = namedtuple('ReactionInfo', ('mts', 'secondaries'))
3327

3428
REACTIONS = {
35-
'(n,2nd)': ReactionInfo({11}, (-3, -1), ('H2',)),
36-
'(n,2n)': ReactionInfo(set(chain([16], range(875, 892))), (-1, 0), ()),
37-
'(n,3n)': ReactionInfo({17}, (-2, 0), ()),
38-
'(n,na)': ReactionInfo({22}, (-4, -2), ('He4',)),
39-
'(n,n3a)': ReactionInfo({23}, (-12, -6), ('He4', 'He4', 'He4')),
40-
'(n,2na)': ReactionInfo({24}, (-5, -2), ('He4',)),
41-
'(n,3na)': ReactionInfo({25}, (-6, -2), ('He4',)),
42-
'(n,np)': ReactionInfo({28}, (-1, -1), ('H1',)),
43-
'(n,n2a)': ReactionInfo({29}, (-8, -4), ('He4', 'He4')),
44-
'(n,2n2a)': ReactionInfo({30}, (-9, -4), ('He4', 'He4')),
45-
'(n,nd)': ReactionInfo({32}, (-2, -1), ('H2',)),
46-
'(n,nt)': ReactionInfo({33}, (-3, -1), ('H3',)),
47-
'(n,n3He)': ReactionInfo({34}, (-3, -2), ('He3',)),
48-
'(n,nd2a)': ReactionInfo({35}, (-10, -5), ('H2', 'He4', 'He4')),
49-
'(n,nt2a)': ReactionInfo({36}, (-11, -5), ('H3', 'He4', 'He4')),
50-
'(n,4n)': ReactionInfo({37}, (-3, 0), ()),
51-
'(n,2np)': ReactionInfo({41}, (-2, -1), ('H1',)),
52-
'(n,3np)': ReactionInfo({42}, (-3, -1), ('H1',)),
53-
'(n,n2p)': ReactionInfo({44}, (-2, -2), ('H1', 'H1')),
54-
'(n,npa)': ReactionInfo({45}, (-5, -3), ('H1', 'He4')),
55-
'(n,gamma)': ReactionInfo({102}, (1, 0), ()),
56-
'(n,p)': ReactionInfo(set(chain([103], range(600, 650))), (0, -1), ('H1',)),
57-
'(n,d)': ReactionInfo(set(chain([104], range(650, 700))), (-1, -1), ('H2',)),
58-
'(n,t)': ReactionInfo(set(chain([105], range(700, 750))), (-2, -1), ('H3',)),
59-
'(n,3He)': ReactionInfo(set(chain([106], range(750, 800))), (-2, -2), ('He3',)),
60-
'(n,a)': ReactionInfo(set(chain([107], range(800, 850))), (-3, -2), ('He4',)),
61-
'(n,2a)': ReactionInfo({108}, (-7, -4), ('He4', 'He4')),
62-
'(n,3a)': ReactionInfo({109}, (-11, -6), ('He4', 'He4', 'He4')),
63-
'(n,2p)': ReactionInfo({111}, (-1, -2), ('H1', 'H1')),
64-
'(n,pa)': ReactionInfo({112}, (-4, -3), ('H1', 'He4')),
65-
'(n,t2a)': ReactionInfo({113}, (-10, -5), ('H3', 'He4', 'He4')),
66-
'(n,d2a)': ReactionInfo({114}, (-9, -5), ('H2', 'He4', 'He4')),
67-
'(n,pd)': ReactionInfo({115}, (-2, -2), ('H1', 'H2')),
68-
'(n,pt)': ReactionInfo({116}, (-3, -2), ('H1', 'H3')),
69-
'(n,da)': ReactionInfo({117}, (-5, -3), ('H2', 'He4')),
70-
'(n,5n)': ReactionInfo({152}, (-4, 0), ()),
71-
'(n,6n)': ReactionInfo({153}, (-5, 0), ()),
72-
'(n,2nt)': ReactionInfo({154}, (-4, -1), ('H3',)),
73-
'(n,ta)': ReactionInfo({155}, (-6, -3), ('H3', 'He4')),
74-
'(n,4np)': ReactionInfo({156}, (-4, -1), ('H1',)),
75-
'(n,3nd)': ReactionInfo({157}, (-4, -1), ('H2',)),
76-
'(n,nda)': ReactionInfo({158}, (-6, -3), ('H2', 'He4')),
77-
'(n,2npa)': ReactionInfo({159}, (-6, -3), ('H1', 'He4')),
78-
'(n,7n)': ReactionInfo({160}, (-6, 0), ()),
79-
'(n,8n)': ReactionInfo({161}, (-7, 0), ()),
80-
'(n,5np)': ReactionInfo({162}, (-5, -1), ('H1',)),
81-
'(n,6np)': ReactionInfo({163}, (-6, -1), ('H1',)),
82-
'(n,7np)': ReactionInfo({164}, (-7, -1), ('H1',)),
83-
'(n,4na)': ReactionInfo({165}, (-7, -2), ('He4',)),
84-
'(n,5na)': ReactionInfo({166}, (-8, -2), ('He4',)),
85-
'(n,6na)': ReactionInfo({167}, (-9, -2), ('He4',)),
86-
'(n,7na)': ReactionInfo({168}, (-10, -2), ('He4',)),
87-
'(n,4nd)': ReactionInfo({169}, (-5, -1), ('H2',)),
88-
'(n,5nd)': ReactionInfo({170}, (-6, -1), ('H2',)),
89-
'(n,6nd)': ReactionInfo({171}, (-7, -1), ('H2',)),
90-
'(n,3nt)': ReactionInfo({172}, (-5, -1), ('H3',)),
91-
'(n,4nt)': ReactionInfo({173}, (-6, -1), ('H3',)),
92-
'(n,5nt)': ReactionInfo({174}, (-7, -1), ('H3',)),
93-
'(n,6nt)': ReactionInfo({175}, (-8, -1), ('H3',)),
94-
'(n,2n3He)': ReactionInfo({176}, (-4, -2), ('He3',)),
95-
'(n,3n3He)': ReactionInfo({177}, (-5, -2), ('He3',)),
96-
'(n,4n3He)': ReactionInfo({178}, (-6, -2), ('He3',)),
97-
'(n,3n2p)': ReactionInfo({179}, (-4, -2), ('H1', 'H1')),
98-
'(n,3n2a)': ReactionInfo({180}, (-10, -4), ('He4', 'He4')),
99-
'(n,3npa)': ReactionInfo({181}, (-7, -3), ('H1', 'He4')),
100-
'(n,dt)': ReactionInfo({182}, (-4, -2), ('H2', 'H3')),
101-
'(n,npd)': ReactionInfo({183}, (-3, -2), ('H1', 'H2')),
102-
'(n,npt)': ReactionInfo({184}, (-4, -2), ('H1', 'H3')),
103-
'(n,ndt)': ReactionInfo({185}, (-5, -2), ('H2', 'H3')),
104-
'(n,np3He)': ReactionInfo({186}, (-4, -3), ('H1', 'He3')),
105-
'(n,nd3He)': ReactionInfo({187}, (-5, -3), ('H2', 'He3')),
106-
'(n,nt3He)': ReactionInfo({188}, (-6, -3), ('H3', 'He3')),
107-
'(n,nta)': ReactionInfo({189}, (-7, -3), ('H3', 'He4')),
108-
'(n,2n2p)': ReactionInfo({190}, (-3, -2), ('H1', 'H1')),
109-
'(n,p3He)': ReactionInfo({191}, (-4, -3), ('H1', 'He3')),
110-
'(n,d3He)': ReactionInfo({192}, (-5, -3), ('H2', 'He3')),
111-
'(n,3Hea)': ReactionInfo({193}, (-6, -4), ('He3', 'He4')),
112-
'(n,4n2p)': ReactionInfo({194}, (-5, -2), ('H1', 'H1')),
113-
'(n,4n2a)': ReactionInfo({195}, (-11, -4), ('He4', 'He4')),
114-
'(n,4npa)': ReactionInfo({196}, (-8, -3), ('H1', 'He4')),
115-
'(n,3p)': ReactionInfo({197}, (-2, -3), ('H1', 'H1', 'H1')),
116-
'(n,n3p)': ReactionInfo({198}, (-3, -3), ('H1', 'H1', 'H1')),
117-
'(n,3n2pa)': ReactionInfo({199}, (-8, -4), ('H1', 'H1', 'He4')),
118-
'(n,5n2p)': ReactionInfo({200}, (-6, -2), ('H1', 'H1')),
29+
'(n,2nd)': ReactionInfo({11}, ('H2',)),
30+
'(n,2n)': ReactionInfo(set(chain([16], range(875, 892))), ()),
31+
'(n,3n)': ReactionInfo({17}, ()),
32+
'(n,na)': ReactionInfo({22}, ('He4',)),
33+
'(n,n3a)': ReactionInfo({23}, ('He4', 'He4', 'He4')),
34+
'(n,2na)': ReactionInfo({24}, ('He4',)),
35+
'(n,3na)': ReactionInfo({25}, ('He4',)),
36+
'(n,np)': ReactionInfo({28}, ('H1',)),
37+
'(n,n2a)': ReactionInfo({29}, ('He4', 'He4')),
38+
'(n,2n2a)': ReactionInfo({30}, ('He4', 'He4')),
39+
'(n,nd)': ReactionInfo({32}, ('H2',)),
40+
'(n,nt)': ReactionInfo({33}, ('H3',)),
41+
'(n,n3He)': ReactionInfo({34}, ('He3',)),
42+
'(n,nd2a)': ReactionInfo({35}, ('H2', 'He4', 'He4')),
43+
'(n,nt2a)': ReactionInfo({36}, ('H3', 'He4', 'He4')),
44+
'(n,4n)': ReactionInfo({37}, ()),
45+
'(n,2np)': ReactionInfo({41}, ('H1',)),
46+
'(n,3np)': ReactionInfo({42}, ('H1',)),
47+
'(n,n2p)': ReactionInfo({44}, ('H1', 'H1')),
48+
'(n,npa)': ReactionInfo({45}, ('H1', 'He4')),
49+
'(n,gamma)': ReactionInfo({102}, ()),
50+
'(n,p)': ReactionInfo(set(chain([103], range(600, 650))), ('H1',)),
51+
'(n,d)': ReactionInfo(set(chain([104], range(650, 700))), ('H2',)),
52+
'(n,t)': ReactionInfo(set(chain([105], range(700, 750))), ('H3',)),
53+
'(n,3He)': ReactionInfo(set(chain([106], range(750, 800))), ('He3',)),
54+
'(n,a)': ReactionInfo(set(chain([107], range(800, 850))), ('He4',)),
55+
'(n,2a)': ReactionInfo({108}, ('He4', 'He4')),
56+
'(n,3a)': ReactionInfo({109}, ('He4', 'He4', 'He4')),
57+
'(n,2p)': ReactionInfo({111}, ('H1', 'H1')),
58+
'(n,pa)': ReactionInfo({112}, ('H1', 'He4')),
59+
'(n,t2a)': ReactionInfo({113}, ('H3', 'He4', 'He4')),
60+
'(n,d2a)': ReactionInfo({114}, ('H2', 'He4', 'He4')),
61+
'(n,pd)': ReactionInfo({115}, ('H1', 'H2')),
62+
'(n,pt)': ReactionInfo({116}, ('H1', 'H3')),
63+
'(n,da)': ReactionInfo({117}, ('H2', 'He4')),
64+
'(n,5n)': ReactionInfo({152}, ()),
65+
'(n,6n)': ReactionInfo({153}, ()),
66+
'(n,2nt)': ReactionInfo({154}, ('H3',)),
67+
'(n,ta)': ReactionInfo({155}, ('H3', 'He4')),
68+
'(n,4np)': ReactionInfo({156}, ('H1',)),
69+
'(n,3nd)': ReactionInfo({157}, ('H2',)),
70+
'(n,nda)': ReactionInfo({158}, ('H2', 'He4')),
71+
'(n,2npa)': ReactionInfo({159}, ('H1', 'He4')),
72+
'(n,7n)': ReactionInfo({160}, ()),
73+
'(n,8n)': ReactionInfo({161}, ()),
74+
'(n,5np)': ReactionInfo({162}, ('H1',)),
75+
'(n,6np)': ReactionInfo({163}, ('H1',)),
76+
'(n,7np)': ReactionInfo({164}, ('H1',)),
77+
'(n,4na)': ReactionInfo({165}, ('He4',)),
78+
'(n,5na)': ReactionInfo({166}, ('He4',)),
79+
'(n,6na)': ReactionInfo({167}, ('He4',)),
80+
'(n,7na)': ReactionInfo({168}, ('He4',)),
81+
'(n,4nd)': ReactionInfo({169}, ('H2',)),
82+
'(n,5nd)': ReactionInfo({170}, ('H2',)),
83+
'(n,6nd)': ReactionInfo({171}, ('H2',)),
84+
'(n,3nt)': ReactionInfo({172}, ('H3',)),
85+
'(n,4nt)': ReactionInfo({173}, ('H3',)),
86+
'(n,5nt)': ReactionInfo({174}, ('H3',)),
87+
'(n,6nt)': ReactionInfo({175}, ('H3',)),
88+
'(n,2n3He)': ReactionInfo({176}, ('He3',)),
89+
'(n,3n3He)': ReactionInfo({177}, ('He3',)),
90+
'(n,4n3He)': ReactionInfo({178}, ('He3',)),
91+
'(n,3n2p)': ReactionInfo({179}, ('H1', 'H1')),
92+
'(n,3n2a)': ReactionInfo({180}, ('He4', 'He4')),
93+
'(n,3npa)': ReactionInfo({181}, ('H1', 'He4')),
94+
'(n,dt)': ReactionInfo({182}, ('H2', 'H3')),
95+
'(n,npd)': ReactionInfo({183}, ('H1', 'H2')),
96+
'(n,npt)': ReactionInfo({184}, ('H1', 'H3')),
97+
'(n,ndt)': ReactionInfo({185}, ('H2', 'H3')),
98+
'(n,np3He)': ReactionInfo({186}, ('H1', 'He3')),
99+
'(n,nd3He)': ReactionInfo({187}, ('H2', 'He3')),
100+
'(n,nt3He)': ReactionInfo({188}, ('H3', 'He3')),
101+
'(n,nta)': ReactionInfo({189}, ('H3', 'He4')),
102+
'(n,2n2p)': ReactionInfo({190}, ('H1', 'H1')),
103+
'(n,p3He)': ReactionInfo({191}, ('H1', 'He3')),
104+
'(n,d3He)': ReactionInfo({192}, ('H2', 'He3')),
105+
'(n,3Hea)': ReactionInfo({193}, ('He3', 'He4')),
106+
'(n,4n2p)': ReactionInfo({194}, ('H1', 'H1')),
107+
'(n,4n2a)': ReactionInfo({195}, ('He4', 'He4')),
108+
'(n,4npa)': ReactionInfo({196}, ('H1', 'He4')),
109+
'(n,3p)': ReactionInfo({197}, ('H1', 'H1', 'H1')),
110+
'(n,n3p)': ReactionInfo({198}, ('H1', 'H1', 'H1')),
111+
'(n,3n2pa)': ReactionInfo({199}, ('H1', 'H1', 'He4')),
112+
'(n,5n2p)': ReactionInfo({200}, ('H1', 'H1')),
119113
}
120114

121115
__all__ = ["Chain", "REACTIONS"]
@@ -418,9 +412,9 @@ def from_endf(cls, decay_files, fpy_files, neutron_files,
418412
if parent in reactions:
419413
reactions_available = set(reactions[parent].keys())
420414
for name in transmutation_reactions:
421-
mts, changes, _ = REACTIONS[name]
415+
mts = REACTIONS[name].mts
416+
delta_A, delta_Z = openmc.data.DADZ[name]
422417
if mts & reactions_available:
423-
delta_A, delta_Z = changes
424418
A = data.nuclide['mass_number'] + delta_A
425419
Z = data.nuclide['atomic_number'] + delta_Z
426420
daughter = '{}{}'.format(openmc.data.ATOMIC_SYMBOL[Z], A)

openmc/plotter.py

+5
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@
5858
def _get_legend_label(this, type):
5959
"""Gets a label for the element or nuclide or material and reaction plotted"""
6060
if isinstance(this, str):
61+
if type in openmc.data.DADZ:
62+
z, a, m = openmc.data.zam(this)
63+
da, dz = openmc.data.DADZ[type]
64+
gnds_name = openmc.data.gnds_name(z + dz, a + da, m)
65+
return f'{this} {type} {gnds_name}'
6166
return f'{this} {type}'
6267
elif this.name == '':
6368
return f'Material {this.id} {type}'

0 commit comments

Comments
 (0)