Skip to content

Commit 812f836

Browse files
committed
Merge branch 'fix/return-type' into 'develop'
changing return type to view of integers See merge request njoy/ENDFtk!48
2 parents a9c02bb + 30de839 commit 812f836

File tree

7 files changed

+71
-65
lines changed

7 files changed

+71
-65
lines changed

ReleaseNotes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Given here are some release notes for ENDFtk.
55

66
This update makes the following changes on interface functions:
77
- A contructor without transitions has been added to the MF28 SubshellData. The type of the number of electrons in a subshell in the constructor was changed to a double.
8+
- The return type of M, number_atoms and analytical_function_Types properties in the MF7 MT4 ScatteringLawConstants (and the corresponding C++ functions) has been changed to a view of integers.
89

910
This update adds GENDF capability.
1011

python/src/section/7/4/ScatteringLawConstants.python.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,23 +158,23 @@ void wrapScatteringLawConstants( python::module& module, python::module& ) {
158158
.def_property_readonly(
159159

160160
"M",
161-
[] ( const Component& self ) -> DoubleRange
161+
[] ( const Component& self ) -> IntRange
162162
{ return self.M(); },
163163
"The number of atoms for each scattering atom type present in the\n"
164164
"molecule or unit cell, stored in B(6), B(12) and B(18)"
165165
)
166166
.def_property_readonly(
167167

168168
"number_atoms",
169-
[] ( const Component& self ) -> DoubleRange
169+
[] ( const Component& self ) -> IntRange
170170
{ return self.numberAtoms(); },
171171
"The number of atoms for each scattering atom type present in the\n"
172172
"molecule or unit cell, stored in B(6), B(12) and B(18)"
173173
)
174174
.def_property_readonly(
175175

176176
"analytical_function_types",
177-
[] ( const Component& self ) -> DoubleRange
177+
[] ( const Component& self ) -> IntRange
178178
{ return self.analyticalFunctionTypes(); },
179179
"The analytical function type for each non-principal scattering atom\n"
180180
"type, stored in B(7), B(13) and B(19)"

python/test/MF7/MT4/Test_ENDFtk_MF7_MT4_ScatteringLawConstants.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def verify_chunk_principal( self, chunk ) :
5656
self.assertAlmostEqual( 8.934780e+0, chunk.atomic_weight_ratios[0] )
5757
self.assertEqual( 1, len( chunk.M ) )
5858
self.assertEqual( 1, len( chunk.number_atoms ) )
59-
self.assertAlmostEqual( 1., chunk.M[0] )
60-
self.assertAlmostEqual( 1., chunk.number_atoms[0] )
59+
self.assertEqual( 1, chunk.M[0] )
60+
self.assertEqual( 1, chunk.number_atoms[0] )
6161
self.assertEqual( 0, len( chunk.analytical_function_types ) )
6262

6363
self.assertEqual( 2, chunk.NC )
@@ -92,12 +92,12 @@ def verify_chunk_principal_one_secondary( self, chunk ) :
9292
self.assertAlmostEqual( 1.586200e+1, chunk.atomic_weight_ratios[1] )
9393
self.assertEqual( 2, len( chunk.M ) )
9494
self.assertEqual( 2, len( chunk.number_atoms ) )
95-
self.assertAlmostEqual( 1., chunk.M[0] )
96-
self.assertAlmostEqual( 2., chunk.M[1] )
97-
self.assertAlmostEqual( 1., chunk.number_atoms[0] )
98-
self.assertAlmostEqual( 2., chunk.number_atoms[1] )
95+
self.assertEqual( 1, chunk.M[0] )
96+
self.assertEqual( 2, chunk.M[1] )
97+
self.assertEqual( 1, chunk.number_atoms[0] )
98+
self.assertEqual( 2, chunk.number_atoms[1] )
9999
self.assertEqual( 1, len( chunk.analytical_function_types ) )
100-
self.assertAlmostEqual( 0., chunk.analytical_function_types[0] )
100+
self.assertEqual( 0, chunk.analytical_function_types[0] )
101101

102102
self.assertEqual( 3, chunk.NC )
103103

@@ -135,15 +135,15 @@ def verify_chunk_principal_two_secondary( self, chunk ) :
135135
self.assertAlmostEqual( 2.000000e+0, chunk.atomic_weight_ratios[2] )
136136
self.assertEqual( 3, len( chunk.M ) )
137137
self.assertEqual( 3, len( chunk.number_atoms ) )
138-
self.assertAlmostEqual( 1., chunk.M[0] )
139-
self.assertAlmostEqual( 2., chunk.M[1] )
140-
self.assertAlmostEqual( 3., chunk.M[2] )
141-
self.assertAlmostEqual( 1., chunk.number_atoms[0] )
142-
self.assertAlmostEqual( 2., chunk.number_atoms[1] )
143-
self.assertAlmostEqual( 3., chunk.number_atoms[2] )
138+
self.assertEqual( 1, chunk.M[0] )
139+
self.assertEqual( 2, chunk.M[1] )
140+
self.assertEqual( 3, chunk.M[2] )
141+
self.assertEqual( 1, chunk.number_atoms[0] )
142+
self.assertEqual( 2, chunk.number_atoms[1] )
143+
self.assertEqual( 3, chunk.number_atoms[2] )
144144
self.assertEqual( 2, len( chunk.analytical_function_types ) )
145-
self.assertAlmostEqual( 0., chunk.analytical_function_types[0] )
146-
self.assertAlmostEqual( 1., chunk.analytical_function_types[1] )
145+
self.assertEqual( 0, chunk.analytical_function_types[0] )
146+
self.assertEqual( 1, chunk.analytical_function_types[1] )
147147

148148
self.assertEqual( 4, chunk.NC )
149149

@@ -185,18 +185,18 @@ def verify_chunk_principal_three_secondary( self, chunk ) :
185185
self.assertAlmostEqual( 4.000000e+0, chunk.atomic_weight_ratios[3] )
186186
self.assertEqual( 4, len( chunk.M ) )
187187
self.assertEqual( 4, len( chunk.number_atoms ) )
188-
self.assertAlmostEqual( 1., chunk.M[0] )
189-
self.assertAlmostEqual( 2., chunk.M[1] )
190-
self.assertAlmostEqual( 3., chunk.M[2] )
191-
self.assertAlmostEqual( 4., chunk.M[3] )
192-
self.assertAlmostEqual( 1., chunk.number_atoms[0] )
193-
self.assertAlmostEqual( 2., chunk.number_atoms[1] )
194-
self.assertAlmostEqual( 3., chunk.number_atoms[2] )
195-
self.assertAlmostEqual( 4., chunk.number_atoms[3] )
188+
self.assertEqual( 1, chunk.M[0] )
189+
self.assertEqual( 2, chunk.M[1] )
190+
self.assertEqual( 3, chunk.M[2] )
191+
self.assertEqual( 4, chunk.M[3] )
192+
self.assertEqual( 1, chunk.number_atoms[0] )
193+
self.assertEqual( 2, chunk.number_atoms[1] )
194+
self.assertEqual( 3, chunk.number_atoms[2] )
195+
self.assertEqual( 4, chunk.number_atoms[3] )
196196
self.assertEqual( 3, len( chunk.analytical_function_types ) )
197-
self.assertAlmostEqual( 0., chunk.analytical_function_types[0] )
198-
self.assertAlmostEqual( 1., chunk.analytical_function_types[1] )
199-
self.assertAlmostEqual( 2., chunk.analytical_function_types[2] )
197+
self.assertAlmostEqual( 0, chunk.analytical_function_types[0] )
198+
self.assertAlmostEqual( 1, chunk.analytical_function_types[1] )
199+
self.assertAlmostEqual( 2, chunk.analytical_function_types[2] )
200200

201201
self.assertEqual( 5, chunk.NC )
202202

python/test/MF7/Test_ENDFtk_MF7_MT4_Section.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def verify_chunk_analytical_functions( self, chunk ) :
6161
self.assertEqual( 1, len( barray.atomic_weight_ratios ) )
6262
self.assertAlmostEqual( 8.934780e+0, barray.atomic_weight_ratios[0] )
6363
self.assertEqual( 1, len( barray.number_atoms ) )
64-
self.assertAlmostEqual( 1., barray.number_atoms[0] )
64+
self.assertEqual( 1, barray.number_atoms[0] )
6565
self.assertEqual( 0, len( barray.analytical_function_types ) )
6666

6767
law = chunk.scattering_law

src/ENDFtk/section/7/4/ScatteringLawConstants.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ class ENDFTK_PYTHON_EXPORT ScatteringLawConstants : protected ListRecord {
125125
using namespace njoy::tools;
126126
return ListRecord::list()
127127
| std20::views::drop( 5 )
128-
| std23::views::stride( 6 ); }
128+
| std23::views::stride( 6 )
129+
| std20::views::transform( [] ( auto&& value ) -> int
130+
{ return std::round( value ); } );
131+
}
129132

130133
/**
131134
* @brief Return the number of atoms for each scattering atom type present in
@@ -145,7 +148,9 @@ class ENDFTK_PYTHON_EXPORT ScatteringLawConstants : protected ListRecord {
145148
using namespace njoy::tools;
146149
return ListRecord::list()
147150
| std20::views::drop( 6 )
148-
| std23::views::stride( 6 );
151+
| std23::views::stride( 6 )
152+
| std20::views::transform( [] ( auto&& value ) -> int
153+
{ return std::round( value ); } );
149154
}
150155

151156
using ListRecord::NC;

test/section/7/4.test.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -881,7 +881,7 @@ void verifyChunkWithAnalyticalFunctions(
881881
CHECK( 1 == barray.atomicWeightRatios().size() );
882882
CHECK_THAT( 8.934780e+0, WithinRel( barray.atomicWeightRatios()[0] ) );
883883
CHECK( 1 == barray.numberAtoms().size() );
884-
CHECK_THAT( 1., WithinRel( barray.numberAtoms()[0] ) );
884+
CHECK( 1 == barray.numberAtoms()[0] );
885885
CHECK( 0 == barray.analyticalFunctionTypes().size() );
886886

887887
auto table = std::get< AnalyticalFunctions >( chunk.scatteringLaw() );
@@ -964,7 +964,7 @@ void verifyChunkWithOneTemperatureAndOneScatterer(
964964
CHECK( 1 == barray.atomicWeightRatios().size() );
965965
CHECK_THAT( 8.934780e+0, WithinRel( barray.atomicWeightRatios()[0] ) );
966966
CHECK( 1 == barray.numberAtoms().size() );
967-
CHECK_THAT( 1., WithinRel( barray.numberAtoms()[0] ) );
967+
CHECK( 1 == barray.numberAtoms()[0] );
968968
CHECK( 0 == barray.analyticalFunctionTypes().size() );
969969

970970
auto table = std::get< TabulatedFunctions >( chunk.scatteringLaw() );
@@ -1146,7 +1146,7 @@ void verifyChunkWithTwoTemperaturesAndOneScatterer(
11461146
CHECK( 1 == barray.atomicWeightRatios().size() );
11471147
CHECK_THAT( 8.934780e+0, WithinRel( barray.atomicWeightRatios()[0] ) );
11481148
CHECK( 1 == barray.numberAtoms().size() );
1149-
CHECK_THAT( 1., WithinRel( barray.numberAtoms()[0] ) );
1149+
CHECK( 1 == barray.numberAtoms()[0] );
11501150
CHECK( 0 == barray.analyticalFunctionTypes().size() );
11511151

11521152
auto table = std::get< TabulatedFunctions >( chunk.scatteringLaw() );
@@ -1357,8 +1357,8 @@ void verifyChunkWithTwoTemperaturesAndTwoScatterers(
13571357
CHECK_THAT( 8.934780e+0, WithinRel( barray.atomicWeightRatios()[0] ) );
13581358
CHECK_THAT( 1.586200e+1, WithinRel( barray.atomicWeightRatios()[1] ) );
13591359
CHECK( 2 == barray.numberAtoms().size() );
1360-
CHECK_THAT( 1., WithinRel( barray.numberAtoms()[0] ) );
1361-
CHECK_THAT( 2., WithinRel( barray.numberAtoms()[1] ) );
1360+
CHECK( 1 == barray.numberAtoms()[0] );
1361+
CHECK( 2 == barray.numberAtoms()[1] );
13621362
CHECK( 1 == barray.analyticalFunctionTypes().size() );
13631363
CHECK( 0 == barray.analyticalFunctionTypes()[0] );
13641364

@@ -1586,8 +1586,8 @@ void verifyChunkWithTwoTemperaturesTwoScatterersAndNoSecondaryTemperature(
15861586
CHECK_THAT( 8.934780e+0, WithinRel( barray.atomicWeightRatios()[0] ) );
15871587
CHECK_THAT( 1.586200e+1, WithinRel( barray.atomicWeightRatios()[1] ) );
15881588
CHECK( 2 == barray.numberAtoms().size() );
1589-
CHECK_THAT( 1., WithinRel( barray.numberAtoms()[0] ) );
1590-
CHECK_THAT( 2., WithinRel( barray.numberAtoms()[1] ) );
1589+
CHECK( 1 == barray.numberAtoms()[0] );
1590+
CHECK( 2 == barray.numberAtoms()[1] );
15911591
CHECK( 1 == barray.analyticalFunctionTypes().size() );
15921592
CHECK( 1 == barray.analyticalFunctionTypes()[0] );
15931593

test/section/7/4/ScatteringLawConstants.test.cpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -530,8 +530,8 @@ verifyChunkWithOnlyPrincipalScatterer( const ScatteringLawConstants& chunk ) {
530530
CHECK_THAT( 8.934780e+0, WithinRel( chunk.atomicWeightRatios()[0] ) );
531531
CHECK( 1 == chunk.M().size() );
532532
CHECK( 1 == chunk.numberAtoms().size() );
533-
CHECK_THAT( 1., WithinRel( chunk.M()[0] ) );
534-
CHECK_THAT( 1., WithinRel( chunk.numberAtoms()[0] ) );
533+
CHECK( 1 == chunk.M()[0] );
534+
CHECK( 1 == chunk.numberAtoms()[0] );
535535
CHECK( 0 == chunk.analyticalFunctionTypes().size() );
536536

537537
CHECK( 2 == chunk.NC() );
@@ -571,12 +571,12 @@ void verifyChunkWithBothPrincipalAndSecondaryScatterer(
571571
CHECK_THAT( 1.586200e+1, WithinRel( chunk.atomicWeightRatios()[1] ) );
572572
CHECK( 2 == chunk.M().size() );
573573
CHECK( 2 == chunk.numberAtoms().size() );
574-
CHECK_THAT( 1., WithinRel( chunk.M()[0] ) );
575-
CHECK_THAT( 2., WithinRel( chunk.M()[1] ) );
576-
CHECK_THAT( 1., WithinRel( chunk.numberAtoms()[0] ) );
577-
CHECK_THAT( 2., WithinRel( chunk.numberAtoms()[1] ) );
574+
CHECK( 1 == chunk.M()[0] );
575+
CHECK( 2 == chunk.M()[1] );
576+
CHECK( 1 == chunk.numberAtoms()[0] );
577+
CHECK( 2 == chunk.numberAtoms()[1] );
578578
CHECK( 1 == chunk.analyticalFunctionTypes().size() );
579-
CHECK( 0. == chunk.analyticalFunctionTypes()[0] );
579+
CHECK( 0 == chunk.analyticalFunctionTypes()[0] );
580580

581581
CHECK( 3 == chunk.NC() );
582582
}
@@ -620,15 +620,15 @@ void verifyChunkWithTwoSecondaryScatterers(
620620
CHECK_THAT( 2.000000e+0, WithinRel( chunk.atomicWeightRatios()[2] ) );
621621
CHECK( 3 == chunk.M().size() );
622622
CHECK( 3 == chunk.numberAtoms().size() );
623-
CHECK_THAT( 1., WithinRel( chunk.M()[0] ) );
624-
CHECK_THAT( 2., WithinRel( chunk.M()[1] ) );
625-
CHECK_THAT( 3., WithinRel( chunk.M()[2] ) );
626-
CHECK_THAT( 1., WithinRel( chunk.numberAtoms()[0] ) );
627-
CHECK_THAT( 2., WithinRel( chunk.numberAtoms()[1] ) );
628-
CHECK_THAT( 3., WithinRel( chunk.numberAtoms()[2] ) );
623+
CHECK( 1 == chunk.M()[0] );
624+
CHECK( 2 == chunk.M()[1] );
625+
CHECK( 3 == chunk.M()[2] );
626+
CHECK( 1 == chunk.numberAtoms()[0] );
627+
CHECK( 2 == chunk.numberAtoms()[1] );
628+
CHECK( 3 == chunk.numberAtoms()[2] );
629629
CHECK( 2 == chunk.analyticalFunctionTypes().size() );
630-
CHECK( 0. == chunk.analyticalFunctionTypes()[0] );
631-
CHECK( 1. == chunk.analyticalFunctionTypes()[1] );
630+
CHECK( 0 == chunk.analyticalFunctionTypes()[0] );
631+
CHECK( 1 == chunk.analyticalFunctionTypes()[1] );
632632

633633
CHECK( 4 == chunk.NC() );
634634
}
@@ -677,18 +677,18 @@ void verifyChunkWithThreeSecondaryScatterers(
677677
CHECK_THAT( 4.000000e+0, WithinRel( chunk.atomicWeightRatios()[3] ) );
678678
CHECK( 4 == chunk.M().size() );
679679
CHECK( 4 == chunk.numberAtoms().size() );
680-
CHECK_THAT( 1., WithinRel( chunk.M()[0] ) );
681-
CHECK_THAT( 2., WithinRel( chunk.M()[1] ) );
682-
CHECK_THAT( 3., WithinRel( chunk.M()[2] ) );
683-
CHECK_THAT( 4., WithinRel( chunk.M()[3] ) );
684-
CHECK_THAT( 1., WithinRel( chunk.numberAtoms()[0] ) );
685-
CHECK_THAT( 2., WithinRel( chunk.numberAtoms()[1] ) );
686-
CHECK_THAT( 3., WithinRel( chunk.numberAtoms()[2] ) );
687-
CHECK_THAT( 4., WithinRel( chunk.numberAtoms()[3] ) );
680+
CHECK( 1 == chunk.M()[0] );
681+
CHECK( 2 == chunk.M()[1] );
682+
CHECK( 3 == chunk.M()[2] );
683+
CHECK( 4 == chunk.M()[3] );
684+
CHECK( 1 == chunk.numberAtoms()[0] );
685+
CHECK( 2 == chunk.numberAtoms()[1] );
686+
CHECK( 3 == chunk.numberAtoms()[2] );
687+
CHECK( 4 == chunk.numberAtoms()[3] );
688688
CHECK( 3 == chunk.analyticalFunctionTypes().size() );
689-
CHECK( 0. == chunk.analyticalFunctionTypes()[0] );
690-
CHECK( 1. == chunk.analyticalFunctionTypes()[1] );
691-
CHECK( 2. == chunk.analyticalFunctionTypes()[2] );
689+
CHECK( 0 == chunk.analyticalFunctionTypes()[0] );
690+
CHECK( 1 == chunk.analyticalFunctionTypes()[1] );
691+
CHECK( 2 == chunk.analyticalFunctionTypes()[2] );
692692

693693
CHECK( 5 == chunk.NC() );
694694
}

0 commit comments

Comments
 (0)