Skip to content

Commit 37d0fe8

Browse files
committed
Updating MF32 LCOMP1 resonance parameters to function in the same way as MF2 - and solve the python issue
1 parent d73ec8f commit 37d0fe8

8 files changed

+252
-73
lines changed

ReleaseNotes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ NOTES FOR range-v3 REMOVAL:
77
- Python issues for MU and F in MF6 LAW1 TabulatedDistribution
88
- Python issues for total, elastic, fission, capture, current_weighted_total in mF2 MT152
99
- Python issues for MSIGMA in MF7 MT4 ScatteringLawConstants
10-
- Python issues for GAM in MF32 MT151 ResonanceParameters
1110

1211
## [ENDFtk v1.1.1](https://github.com/njoy/ENDFtk/pull/xxx)
1312
This update makes the following changes on interface functions:
1413
- The regions() and pairs() interface functions on the TAB1 record interface functions have been removed. The removal of these interface functions has no impact on the Python interface as these interface functions were not included on the Python side. Miscellaneous documentation updates were made as well.
1514
- When using the C++ interface for atomic relaxation data, a Transition now has a isRadiative() and isNonRadiative() function returning a boolean so that a user can check if a given transition emits a photon or electron without having to look at subshell identifiers. Since Transition is not exposed ont he Python side, this is not available on the Python side.
1615
- NBT(), INT(), boundaries(), interpolants(), NR(), numberInterpolationRegions() interface functions were added on TwoBodyScattering::TabulatedDistribution in MF6 and MF26 that mimic the behaviour of a TAB1 record.
16+
- For LCOMP1 RMatrix Limited, the GAM() and resonanceParameters() functions have been changed to work the same way as the MF2 version. The size of the returned arrays is no longer equal to the number of channels.
1717

1818
In addition, the following issues were corrected:
1919
- A minor bug in the rectangular matrix covariance block was corrected. The values for the row and column energies are lifted out of a larger array using the std::ranges::take and std::ranges::drop function. For the column energies, we forgot to properly end the sequence. As a result, the end() iterator of the range did not point to the end of the column energies but to the end of the covariance values, which is now corrected.

python/test/MF32/MT151/LCOMP1/Test_ENDFtk_MF32_MT151_LCOMP1_ResonanceParameters.py

+40-20
Original file line numberDiff line numberDiff line change
@@ -44,34 +44,54 @@ def verify_chunk( self, chunk ) :
4444
self.assertAlmostEqual( 7.788000e+3, chunk.ER[1] )
4545
self.assertAlmostEqual( -1.223300e+6, chunk.resonance_energies[0] )
4646
self.assertAlmostEqual( 7.788000e+3, chunk.resonance_energies[1] )
47-
#self.assertEqual( 6, len( chunk.GAM[0] ) )
48-
#self.assertEqual( 6, len( chunk.GAM[1] ) )
47+
self.assertEqual( 11, len( chunk.GAM[0] ) )
48+
self.assertEqual( 11, len( chunk.GAM[1] ) )
4949
self.assertAlmostEqual( 1., chunk.GAM[0][0] )
5050
self.assertAlmostEqual( 9.611086e+5, chunk.GAM[0][1] )
51-
#self.assertAlmostEqual( 2., chunk.GAM[0][2] )
52-
#self.assertAlmostEqual( 3., chunk.GAM[0][3] )
53-
#self.assertAlmostEqual( 4., chunk.GAM[0][4] )
54-
#self.assertAlmostEqual( 5., chunk.GAM[0][5] )
51+
self.assertAlmostEqual( 2., chunk.GAM[0][2] )
52+
self.assertAlmostEqual( 3., chunk.GAM[0][3] )
53+
self.assertAlmostEqual( 4., chunk.GAM[0][4] )
54+
self.assertAlmostEqual( 5., chunk.GAM[0][5] )
55+
self.assertAlmostEqual( 0., chunk.GAM[0][6] )
56+
self.assertAlmostEqual( 0., chunk.GAM[0][7] )
57+
self.assertAlmostEqual( 0., chunk.GAM[0][8] )
58+
self.assertAlmostEqual( 0., chunk.GAM[0][9] )
59+
self.assertAlmostEqual( 0., chunk.GAM[0][10] )
5560
self.assertAlmostEqual( 1.455, chunk.GAM[1][0] )
5661
self.assertAlmostEqual( 1.187354e+3, chunk.GAM[1][1] )
57-
#self.assertAlmostEqual( 6., chunk.GAM[1][2] )
58-
#self.assertAlmostEqual( 7., chunk.GAM[1][3] )
59-
#self.assertAlmostEqual( 8., chunk.GAM[1][4] )
60-
#self.assertAlmostEqual( 9., chunk.GAM[1][5] )
61-
#self.assertEqual( 6, len( chunk.resonance_parameters[0] ) )
62-
#self.assertEqual( 6, len( chunk.resonance_parameters[1] ) )
62+
self.assertAlmostEqual( 6., chunk.GAM[1][2] )
63+
self.assertAlmostEqual( 7., chunk.GAM[1][3] )
64+
self.assertAlmostEqual( 8., chunk.GAM[1][4] )
65+
self.assertAlmostEqual( 9., chunk.GAM[1][5] )
66+
self.assertAlmostEqual( 0., chunk.GAM[1][6] )
67+
self.assertAlmostEqual( 0., chunk.GAM[1][7] )
68+
self.assertAlmostEqual( 0., chunk.GAM[1][8] )
69+
self.assertAlmostEqual( 0., chunk.GAM[1][9] )
70+
self.assertAlmostEqual( 0., chunk.GAM[1][10] )
71+
self.assertEqual( 11, len( chunk.resonance_parameters[0] ) )
72+
self.assertEqual( 11, len( chunk.resonance_parameters[1] ) )
6373
self.assertAlmostEqual( 1., chunk.resonance_parameters[0][0] )
6474
self.assertAlmostEqual( 9.611086e+5, chunk.resonance_parameters[0][1] )
65-
#self.assertAlmostEqual( 2., chunk.resonance_parameters[0][2] )
66-
#self.assertAlmostEqual( 3., chunk.resonance_parameters[0][3] )
67-
#self.assertAlmostEqual( 4., chunk.resonance_parameters[0][4] )
68-
#self.assertAlmostEqual( 5., chunk.resonance_parameters[0][5] )
75+
self.assertAlmostEqual( 2., chunk.resonance_parameters[0][2] )
76+
self.assertAlmostEqual( 3., chunk.resonance_parameters[0][3] )
77+
self.assertAlmostEqual( 4., chunk.resonance_parameters[0][4] )
78+
self.assertAlmostEqual( 5., chunk.resonance_parameters[0][5] )
79+
self.assertAlmostEqual( 0., chunk.resonance_parameters[0][6] )
80+
self.assertAlmostEqual( 0., chunk.resonance_parameters[0][7] )
81+
self.assertAlmostEqual( 0., chunk.resonance_parameters[0][8] )
82+
self.assertAlmostEqual( 0., chunk.resonance_parameters[0][9] )
83+
self.assertAlmostEqual( 0., chunk.resonance_parameters[0][10] )
6984
self.assertAlmostEqual( 1.455, chunk.resonance_parameters[1][0] )
7085
self.assertAlmostEqual( 1.187354e+3, chunk.resonance_parameters[1][1] )
71-
#self.assertAlmostEqual( 6., chunk.resonance_parameters[1][2] )
72-
#self.assertAlmostEqual( 7., chunk.resonance_parameters[1][3] )
73-
#self.assertAlmostEqual( 8., chunk.resonance_parameters[1][4] )
74-
#self.assertAlmostEqual( 9., chunk.resonance_parameters[1][5] )
86+
self.assertAlmostEqual( 6., chunk.resonance_parameters[1][2] )
87+
self.assertAlmostEqual( 7., chunk.resonance_parameters[1][3] )
88+
self.assertAlmostEqual( 8., chunk.resonance_parameters[1][4] )
89+
self.assertAlmostEqual( 9., chunk.resonance_parameters[1][5] )
90+
self.assertAlmostEqual( 0., chunk.resonance_parameters[1][6] )
91+
self.assertAlmostEqual( 0., chunk.resonance_parameters[1][7] )
92+
self.assertAlmostEqual( 0., chunk.resonance_parameters[1][8] )
93+
self.assertAlmostEqual( 0., chunk.resonance_parameters[1][9] )
94+
self.assertAlmostEqual( 0., chunk.resonance_parameters[1][10] )
7595

7696
self.assertEqual( 5, chunk.NC )
7797

python/test/MF32/MT151/Test_ENDFtk_MF32_MT151_GeneralRMatrixLimited.py

+46-11
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,30 @@ def verify_chunk( self, chunk ) :
8585
self.assertAlmostEqual( 1.913996e+6, parameters1.ER[1] )
8686
self.assertAlmostEqual( -4.586687e+5, parameters1.resonance_energies[0] )
8787
self.assertAlmostEqual( 1.913996e+6, parameters1.resonance_energies[1] )
88-
self.assertEqual( 2, len( parameters1.GAM[0] ) )
89-
self.assertEqual( 2, len( parameters1.GAM[1] ) )
88+
self.assertEqual( 5, len( parameters1.GAM[0] ) )
89+
self.assertEqual( 5, len( parameters1.GAM[1] ) )
9090
self.assertAlmostEqual( 1.000091, parameters1.GAM[0][0] )
9191
self.assertAlmostEqual( 9.809761e+2, parameters1.GAM[0][1] )
92+
self.assertAlmostEqual( 0., parameters1.GAM[0][2] )
93+
self.assertAlmostEqual( 0., parameters1.GAM[0][3] )
94+
self.assertAlmostEqual( 0., parameters1.GAM[0][4] )
9295
self.assertAlmostEqual( 1., parameters1.GAM[1][0] )
9396
self.assertAlmostEqual( 1.878975e+5, parameters1.GAM[1][1] )
94-
self.assertEqual( 2, len( parameters1.resonance_parameters[0] ) )
95-
self.assertEqual( 2, len( parameters1.resonance_parameters[1] ) )
97+
self.assertAlmostEqual( 0., parameters1.GAM[1][2] )
98+
self.assertAlmostEqual( 0., parameters1.GAM[1][3] )
99+
self.assertAlmostEqual( 0., parameters1.GAM[1][4] )
100+
self.assertEqual( 5, len( parameters1.resonance_parameters[0] ) )
101+
self.assertEqual( 5, len( parameters1.resonance_parameters[1] ) )
96102
self.assertAlmostEqual( 1.000091, parameters1.resonance_parameters[0][0] )
97103
self.assertAlmostEqual( 9.809761e+2, parameters1.resonance_parameters[0][1] )
104+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][2] )
105+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][3] )
106+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][4] )
98107
self.assertAlmostEqual( 1., parameters1.resonance_parameters[1][0] )
99108
self.assertAlmostEqual( 1.878975e+5, parameters1.resonance_parameters[1][1] )
109+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][2] )
110+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][3] )
111+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][4] )
100112

101113
parameters2 = block.resonance_parameters[1]
102114
self.assertEqual( 1, parameters2.NCH )
@@ -117,19 +129,42 @@ def verify_chunk( self, chunk ) :
117129
self.assertAlmostEqual( 2.880782e+3, parameters2.resonance_energies[0] )
118130
self.assertAlmostEqual( 6.957171e+3, parameters2.resonance_energies[1] )
119131
self.assertAlmostEqual( 1.003819e+5, parameters2.resonance_energies[2] )
120-
#self.assertEqual( 1, len( parameters2.GAM[0] ) )
121-
#self.assertEqual( 1, len( parameters2.GAM[1] ) )
122-
#self.assertEqual( 1, len( parameters2.GAM[2] ) )
132+
self.assertEqual( 5, len( parameters2.GAM[0] ) )
133+
self.assertEqual( 5, len( parameters2.GAM[1] ) )
134+
self.assertEqual( 5, len( parameters2.GAM[2] ) )
123135
self.assertAlmostEqual( .3499989, parameters2.GAM[0][0] )
136+
self.assertAlmostEqual( 0., parameters2.GAM[0][1] )
137+
self.assertAlmostEqual( 0., parameters2.GAM[0][2] )
138+
self.assertAlmostEqual( 0., parameters2.GAM[0][3] )
139+
self.assertAlmostEqual( 0., parameters2.GAM[0][4] )
124140
self.assertAlmostEqual( .3500785, parameters2.GAM[1][0] )
141+
self.assertAlmostEqual( 0., parameters2.GAM[1][1] )
142+
self.assertAlmostEqual( 0., parameters2.GAM[1][2] )
143+
self.assertAlmostEqual( 0., parameters2.GAM[1][3] )
144+
self.assertAlmostEqual( 0., parameters2.GAM[1][4] )
125145
self.assertAlmostEqual( 1.382810, parameters2.GAM[2][0] )
126-
#self.assertEqual( 1, len( parameters2.resonance_parameters[0] ) )
127-
#self.assertEqual( 1, len( parameters2.resonance_parameters[1] ) )
128-
#self.assertEqual( 1, len( parameters2.resonance_parameters[2] ) )
146+
self.assertAlmostEqual( 0., parameters2.GAM[2][1] )
147+
self.assertAlmostEqual( 0., parameters2.GAM[2][2] )
148+
self.assertAlmostEqual( 0., parameters2.GAM[2][3] )
149+
self.assertAlmostEqual( 0., parameters2.GAM[2][4] )
150+
self.assertEqual( 5, len( parameters2.resonance_parameters[0] ) )
151+
self.assertEqual( 5, len( parameters2.resonance_parameters[1] ) )
152+
self.assertEqual( 5, len( parameters2.resonance_parameters[2] ) )
129153
self.assertAlmostEqual( .3499989, parameters2.resonance_parameters[0][0] )
154+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][1] )
155+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][2] )
156+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][3] )
157+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][4] )
130158
self.assertAlmostEqual( .3500785, parameters2.resonance_parameters[1][0] )
159+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][1] )
160+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][2] )
161+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][3] )
162+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][4] )
131163
self.assertAlmostEqual( 1.382810, parameters2.resonance_parameters[2][0] )
132-
164+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][1] )
165+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][2] )
166+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][3] )
167+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][4] )
133168
matrix = block.covariance_matrix
134169
self.assertEqual( 12, matrix.NPARB )
135170
self.assertEqual( 12, matrix.covariance_matrix_order )

python/test/MF32/MT151/Test_ENDFtk_MF32_MT151_ShortRangeRMatrixLimitedBlock.py

+46-10
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,30 @@ def verify_chunk( self, chunk ) :
8282
self.assertAlmostEqual( 1.913996e+6, parameters1.ER[1] )
8383
self.assertAlmostEqual( -4.586687e+5, parameters1.resonance_energies[0] )
8484
self.assertAlmostEqual( 1.913996e+6, parameters1.resonance_energies[1] )
85-
self.assertEqual( 2, len( parameters1.GAM[0] ) )
86-
self.assertEqual( 2, len( parameters1.GAM[1] ) )
85+
self.assertEqual( 5, len( parameters1.GAM[0] ) )
86+
self.assertEqual( 5, len( parameters1.GAM[1] ) )
8787
self.assertAlmostEqual( 1.000091, parameters1.GAM[0][0] )
8888
self.assertAlmostEqual( 9.809761e+2, parameters1.GAM[0][1] )
89+
self.assertAlmostEqual( 0., parameters1.GAM[0][2] )
90+
self.assertAlmostEqual( 0., parameters1.GAM[0][3] )
91+
self.assertAlmostEqual( 0., parameters1.GAM[0][4] )
8992
self.assertAlmostEqual( 1., parameters1.GAM[1][0] )
9093
self.assertAlmostEqual( 1.878975e+5, parameters1.GAM[1][1] )
91-
self.assertEqual( 2, len( parameters1.resonance_parameters[0] ) )
92-
self.assertEqual( 2, len( parameters1.resonance_parameters[1] ) )
94+
self.assertAlmostEqual( 0., parameters1.GAM[1][2] )
95+
self.assertAlmostEqual( 0., parameters1.GAM[1][3] )
96+
self.assertAlmostEqual( 0., parameters1.GAM[1][4] )
97+
self.assertEqual( 5, len( parameters1.resonance_parameters[0] ) )
98+
self.assertEqual( 5, len( parameters1.resonance_parameters[1] ) )
9399
self.assertAlmostEqual( 1.000091, parameters1.resonance_parameters[0][0] )
94100
self.assertAlmostEqual( 9.809761e+2, parameters1.resonance_parameters[0][1] )
101+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][2] )
102+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][3] )
103+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[0][4] )
95104
self.assertAlmostEqual( 1., parameters1.resonance_parameters[1][0] )
96105
self.assertAlmostEqual( 1.878975e+5, parameters1.resonance_parameters[1][1] )
106+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][2] )
107+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][3] )
108+
self.assertAlmostEqual( 0., parameters1.resonance_parameters[1][4] )
97109

98110
parameters2 = chunk.resonance_parameters[1]
99111
self.assertEqual( 1, parameters2.NCH )
@@ -114,18 +126,42 @@ def verify_chunk( self, chunk ) :
114126
self.assertAlmostEqual( 2.880782e+3, parameters2.resonance_energies[0] )
115127
self.assertAlmostEqual( 6.957171e+3, parameters2.resonance_energies[1] )
116128
self.assertAlmostEqual( 1.003819e+5, parameters2.resonance_energies[2] )
117-
#self.assertEqual( 1, len( parameters2.GAM[0] ) )
118-
#self.assertEqual( 1, len( parameters2.GAM[1] ) )
119-
#self.assertEqual( 1, len( parameters2.GAM[2] ) )
129+
self.assertEqual( 5, len( parameters2.GAM[0] ) )
130+
self.assertEqual( 5, len( parameters2.GAM[1] ) )
131+
self.assertEqual( 5, len( parameters2.GAM[2] ) )
120132
self.assertAlmostEqual( .3499989, parameters2.GAM[0][0] )
133+
self.assertAlmostEqual( 0., parameters2.GAM[0][1] )
134+
self.assertAlmostEqual( 0., parameters2.GAM[0][2] )
135+
self.assertAlmostEqual( 0., parameters2.GAM[0][3] )
136+
self.assertAlmostEqual( 0., parameters2.GAM[0][4] )
121137
self.assertAlmostEqual( .3500785, parameters2.GAM[1][0] )
138+
self.assertAlmostEqual( 0., parameters2.GAM[1][1] )
139+
self.assertAlmostEqual( 0., parameters2.GAM[1][2] )
140+
self.assertAlmostEqual( 0., parameters2.GAM[1][3] )
141+
self.assertAlmostEqual( 0., parameters2.GAM[1][4] )
122142
self.assertAlmostEqual( 1.382810, parameters2.GAM[2][0] )
123-
#self.assertEqual( 1, len( parameters2.resonance_parameters[0] ) )
124-
#self.assertEqual( 1, len( parameters2.resonance_parameters[1] ) )
125-
#self.assertEqual( 1, len( parameters2.resonance_parameters[2] ) )
143+
self.assertAlmostEqual( 0., parameters2.GAM[2][1] )
144+
self.assertAlmostEqual( 0., parameters2.GAM[2][2] )
145+
self.assertAlmostEqual( 0., parameters2.GAM[2][3] )
146+
self.assertAlmostEqual( 0., parameters2.GAM[2][4] )
147+
self.assertEqual( 5, len( parameters2.resonance_parameters[0] ) )
148+
self.assertEqual( 5, len( parameters2.resonance_parameters[1] ) )
149+
self.assertEqual( 5, len( parameters2.resonance_parameters[2] ) )
126150
self.assertAlmostEqual( .3499989, parameters2.resonance_parameters[0][0] )
151+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][1] )
152+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][2] )
153+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][3] )
154+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[0][4] )
127155
self.assertAlmostEqual( .3500785, parameters2.resonance_parameters[1][0] )
156+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][1] )
157+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][2] )
158+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][3] )
159+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[1][4] )
128160
self.assertAlmostEqual( 1.382810, parameters2.resonance_parameters[2][0] )
161+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][1] )
162+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][2] )
163+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][3] )
164+
self.assertAlmostEqual( 0., parameters2.resonance_parameters[2][4] )
129165

130166
matrix = chunk.covariance_matrix
131167
self.assertEqual( 12, matrix.NPARB )

0 commit comments

Comments
 (0)