mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-29 06:35:48 -04:00
added mgxs mesh domain test and fixed issue in getting pandas df mean index for mesh domain
This commit is contained in:
parent
19b5faa449
commit
2c2a291432
4 changed files with 219 additions and 2 deletions
|
|
@ -3733,9 +3733,12 @@ class ScatterMatrixXS(MatrixMGXS):
|
|||
df['moment'] = moments
|
||||
|
||||
# Place the moment column before the mean column
|
||||
mean_index = df.columns.get_loc('mean')
|
||||
columns = df.columns.tolist()
|
||||
df = df[columns[:mean_index] + ['moment'] + columns[mean_index:-1]]
|
||||
mean_index = [i for i, s in enumerate(columns) if 'mean' in s][0]
|
||||
if self.domain_type == 'mesh':
|
||||
df = df[columns[:mean_index] + [('moment', '')] + columns[mean_index:-1]]
|
||||
else:
|
||||
df = df[columns[:mean_index] + ['moment'] + columns[mean_index:-1]]
|
||||
|
||||
# Select rows corresponding to requested scattering moment
|
||||
if moment != 'all':
|
||||
|
|
|
|||
1
tests/test_mgxs_library_mesh/inputs_true.dat
Normal file
1
tests/test_mgxs_library_mesh/inputs_true.dat
Normal file
|
|
@ -0,0 +1 @@
|
|||
a4cd030bea212e45fdb159e75a7fb3d1947e9bf3d0384ac5d37a72298d67dcfdd1b9eb5c6af8ac6e5983bd5b47de9c17a2ea472b467b7222a4909ee070bf1ca3
|
||||
132
tests/test_mgxs_library_mesh/results_true.dat
Normal file
132
tests/test_mgxs_library_mesh/results_true.dat
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.640786 0.044177
|
||||
1 1 2 1 1 total 0.660597 0.128423
|
||||
2 2 1 1 1 total 0.615276 0.104046
|
||||
3 2 2 1 1 total 0.646999 0.186709
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.36665 0.048814
|
||||
1 1 2 1 1 total 0.40784 0.096486
|
||||
2 2 1 1 1 total 0.36356 0.074111
|
||||
3 2 2 1 1 total 0.41456 0.160443
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.366650 0.048814
|
||||
1 1 2 1 1 total 0.407840 0.096486
|
||||
2 2 1 1 1 total 0.363560 0.074111
|
||||
3 2 2 1 1 total 0.414593 0.160436
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.025749 0.002863
|
||||
1 1 2 1 1 total 0.028400 0.005275
|
||||
2 2 1 1 1 total 0.022988 0.004099
|
||||
3 2 2 1 1 total 0.027589 0.010350
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.015861 0.002876
|
||||
1 1 2 1 1 total 0.017280 0.004371
|
||||
2 2 1 1 1 total 0.014403 0.003542
|
||||
3 2 2 1 1 total 0.018061 0.010110
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.009888 0.001077
|
||||
1 1 2 1 1 total 0.011121 0.002456
|
||||
2 2 1 1 1 total 0.008585 0.001552
|
||||
3 2 2 1 1 total 0.009527 0.003659
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.026065 0.002907
|
||||
1 1 2 1 1 total 0.029084 0.006430
|
||||
2 2 1 1 1 total 0.022596 0.004062
|
||||
3 2 2 1 1 total 0.025066 0.009687
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 1.938476 0.211550
|
||||
1 1 2 1 1 total 2.177360 0.480780
|
||||
2 2 1 1 1 total 1.682799 0.303764
|
||||
3 2 2 1 1 total 1.864890 0.715661
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.615037 0.041754
|
||||
1 1 2 1 1 total 0.632196 0.123878
|
||||
2 2 1 1 1 total 0.592288 0.100439
|
||||
3 2 2 1 1 total 0.619410 0.177190
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.584014 0.054315
|
||||
1 1 2 1 1 total 0.622514 0.111323
|
||||
2 2 1 1 1 total 0.587256 0.084833
|
||||
3 2 2 1 1 total 0.613792 0.168612
|
||||
mesh 1 group in group out nuclide moment mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total P0 0.584014 0.054315
|
||||
1 1 1 1 1 1 total P1 0.243427 0.025488
|
||||
2 1 1 1 1 1 total P2 0.089236 0.007357
|
||||
3 1 1 1 1 1 total P3 0.008994 0.005768
|
||||
4 1 2 1 1 1 total P0 0.622514 0.111323
|
||||
5 1 2 1 1 1 total P1 0.239376 0.042594
|
||||
6 1 2 1 1 1 total P2 0.088386 0.017200
|
||||
7 1 2 1 1 1 total P3 -0.001243 0.005639
|
||||
8 2 1 1 1 1 total P0 0.587256 0.084833
|
||||
9 2 1 1 1 1 total P1 0.245120 0.041033
|
||||
10 2 1 1 1 1 total P2 0.086784 0.016255
|
||||
11 2 1 1 1 1 total P3 0.008660 0.004755
|
||||
12 2 2 1 1 1 total P0 0.612950 0.167940
|
||||
13 2 2 1 1 1 total P1 0.226176 0.061882
|
||||
14 2 2 1 1 1 total P2 0.086593 0.026126
|
||||
15 2 2 1 1 1 total P3 0.009672 0.011995
|
||||
mesh 1 group in group out nuclide moment mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total P0 0.584014 0.054315
|
||||
1 1 1 1 1 1 total P1 0.243427 0.025488
|
||||
2 1 1 1 1 1 total P2 0.089236 0.007357
|
||||
3 1 1 1 1 1 total P3 0.008994 0.005768
|
||||
4 1 2 1 1 1 total P0 0.622514 0.111323
|
||||
5 1 2 1 1 1 total P1 0.239376 0.042594
|
||||
6 1 2 1 1 1 total P2 0.088386 0.017200
|
||||
7 1 2 1 1 1 total P3 -0.001243 0.005639
|
||||
8 2 1 1 1 1 total P0 0.587256 0.084833
|
||||
9 2 1 1 1 1 total P1 0.245120 0.041033
|
||||
10 2 1 1 1 1 total P2 0.086784 0.016255
|
||||
11 2 1 1 1 1 total P3 0.008660 0.004755
|
||||
12 2 2 1 1 1 total P0 0.613792 0.168612
|
||||
13 2 2 1 1 1 total P1 0.226142 0.061856
|
||||
14 2 2 1 1 1 total P2 0.086174 0.025979
|
||||
15 2 2 1 1 1 total P3 0.009721 0.012027
|
||||
mesh 1 group in group out nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total 1.000000 0.088094
|
||||
1 1 2 1 1 1 total 1.000000 0.160891
|
||||
2 2 1 1 1 1 total 1.000000 0.126864
|
||||
3 2 2 1 1 1 total 1.001374 0.305883
|
||||
mesh 1 group in group out nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 1 total 0.027395 0.004680
|
||||
1 1 2 1 1 1 total 0.022914 0.006025
|
||||
2 2 1 1 1 1 total 0.019384 0.002846
|
||||
3 2 2 1 1 1 total 0.029629 0.006292
|
||||
mesh 1 group out nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 1.0 0.220956
|
||||
1 1 2 1 1 total 1.0 0.316565
|
||||
2 2 1 1 1 total 1.0 0.132140
|
||||
3 2 2 1 1 total 1.0 0.181577
|
||||
mesh 1 group out nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 1.0 0.222246
|
||||
1 1 2 1 1 total 1.0 0.316565
|
||||
2 2 1 1 1 total 1.0 0.132140
|
||||
3 2 2 1 1 total 1.0 0.181577
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 3.610522e-07 3.169931e-08
|
||||
1 1 2 1 1 total 3.942353e-07 8.459167e-08
|
||||
2 2 1 1 1 total 3.097784e-07 5.252025e-08
|
||||
3 2 2 1 1 total 3.799163e-07 1.806470e-07
|
||||
mesh 1 group in nuclide mean std. dev.
|
||||
x y z
|
||||
0 1 1 1 1 total 0.025735 0.002840
|
||||
1 1 2 1 1 total 0.028773 0.006349
|
||||
2 2 1 1 1 total 0.022306 0.004010
|
||||
3 2 2 1 1 total 0.024549 0.009379
|
||||
81
tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py
Normal file
81
tests/test_mgxs_library_mesh/test_mgxs_library_mesh.py
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import sys
|
||||
import glob
|
||||
import hashlib
|
||||
sys.path.insert(0, os.pardir)
|
||||
from testing_harness import PyAPITestHarness
|
||||
import openmc
|
||||
import openmc.mgxs
|
||||
|
||||
|
||||
class MGXSTestHarness(PyAPITestHarness):
|
||||
def _build_inputs(self):
|
||||
# Generate inputs using parent class routine
|
||||
super(MGXSTestHarness, self)._build_inputs()
|
||||
|
||||
# Initialize a one-group structure
|
||||
energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 20.])
|
||||
|
||||
# Initialize MGXS Library for a few cross section types
|
||||
# for one material-filled cell in the geometry
|
||||
self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry)
|
||||
self.mgxs_lib.by_nuclide = False
|
||||
|
||||
# Test all MGXS types
|
||||
self.mgxs_lib.mgxs_types = openmc.mgxs.MGXS_TYPES
|
||||
self.mgxs_lib.energy_groups = energy_groups
|
||||
self.mgxs_lib.legendre_order = 3
|
||||
self.mgxs_lib.domain_type = 'mesh'
|
||||
|
||||
# Instantiate a tally mesh
|
||||
mesh = openmc.Mesh(mesh_id=1)
|
||||
mesh.type = 'regular'
|
||||
mesh.dimension = [2, 2]
|
||||
mesh.lower_left = [-100., -100.]
|
||||
mesh.width = [100., 100.]
|
||||
|
||||
self.mgxs_lib.domains = [mesh]
|
||||
self.mgxs_lib.build_library()
|
||||
|
||||
# Initialize a tallies file
|
||||
self._input_set.tallies = openmc.Tallies()
|
||||
self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False)
|
||||
self._input_set.tallies.export_to_xml()
|
||||
|
||||
def _get_results(self, hash_output=False):
|
||||
"""Digest info in the statepoint and return as a string."""
|
||||
|
||||
# Read the statepoint file.
|
||||
statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0]
|
||||
sp = openmc.StatePoint(statepoint)
|
||||
|
||||
# Load the MGXS library from the statepoint
|
||||
self.mgxs_lib.load_from_statepoint(sp)
|
||||
|
||||
# Build a string from Pandas Dataframe for each 1-group MGXS
|
||||
outstr = ''
|
||||
for domain in self.mgxs_lib.domains:
|
||||
for mgxs_type in self.mgxs_lib.mgxs_types:
|
||||
mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type)
|
||||
df = mgxs.get_pandas_dataframe()
|
||||
outstr += df.to_string() + '\n'
|
||||
|
||||
# Hash the results if necessary
|
||||
if hash_output:
|
||||
sha512 = hashlib.sha512()
|
||||
sha512.update(outstr.encode('utf-8'))
|
||||
outstr = sha512.hexdigest()
|
||||
|
||||
return outstr
|
||||
|
||||
def _cleanup(self):
|
||||
super(MGXSTestHarness, self)._cleanup()
|
||||
f = os.path.join(os.getcwd(), 'tallies.xml')
|
||||
if os.path.exists(f): os.remove(f)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
harness = MGXSTestHarness('statepoint.10.*', True)
|
||||
harness.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue