|
7 | 7 | from io import StringIO
|
8 | 8 | from itertools import chain
|
9 | 9 | import math
|
10 |
| -import os |
11 | 10 | import re
|
12 | 11 | from collections import defaultdict, namedtuple
|
13 | 12 | from collections.abc import Mapping, Iterable
|
14 | 13 | from numbers import Real, Integral
|
15 | 14 | from warnings import warn
|
16 | 15 |
|
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 |
| - |
22 | 16 | import lxml.etree as ET
|
23 | 17 | import scipy.sparse as sp
|
24 | 18 |
|
| 19 | +from openmc.checkvalue import check_type, check_greater_than |
| 20 | +from openmc.data import gnds_name, zam |
| 21 | +from .nuclide import FissionYieldDistribution, Nuclide |
25 | 22 | import openmc.data
|
26 |
| -from openmc._xml import clean_indentation |
27 |
| -from .nuclide import Nuclide, DecayTuple, ReactionTuple |
28 | 23 |
|
29 | 24 |
|
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')) |
33 | 27 |
|
34 | 28 | 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')), |
119 | 113 | }
|
120 | 114 |
|
121 | 115 | __all__ = ["Chain", "REACTIONS"]
|
@@ -418,9 +412,9 @@ def from_endf(cls, decay_files, fpy_files, neutron_files,
|
418 | 412 | if parent in reactions:
|
419 | 413 | reactions_available = set(reactions[parent].keys())
|
420 | 414 | for name in transmutation_reactions:
|
421 |
| - mts, changes, _ = REACTIONS[name] |
| 415 | + mts = REACTIONS[name].mts |
| 416 | + delta_A, delta_Z = openmc.data.DADZ[name] |
422 | 417 | if mts & reactions_available:
|
423 |
| - delta_A, delta_Z = changes |
424 | 418 | A = data.nuclide['mass_number'] + delta_A
|
425 | 419 | Z = data.nuclide['atomic_number'] + delta_Z
|
426 | 420 | daughter = '{}{}'.format(openmc.data.ATOMIC_SYMBOL[Z], A)
|
|
0 commit comments