mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 21:55:41 -04:00
Added a MG version of regression_tests/volume_calc
This commit is contained in:
parent
5ef01628c6
commit
adc935b99d
2 changed files with 131 additions and 5 deletions
76
tests/regression_tests/volume_calc/inputs_true_mg.dat
Normal file
76
tests/regression_tests/volume_calc/inputs_true_mg.dat
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<geometry>
|
||||
<cell id="1" material="2" region="-1 -3 5" universe="0" />
|
||||
<cell id="2" material="1" region="-2 3" universe="0" />
|
||||
<cell id="3" material="1" region="-4 -3" universe="0" />
|
||||
<surface boundary="vacuum" coeffs="0.0 0.0 1.0" id="1" type="z-cylinder" />
|
||||
<surface boundary="vacuum" coeffs="0.0 0.0 5.0 1.0" id="2" type="sphere" />
|
||||
<surface coeffs="5.0" id="3" type="z-plane" />
|
||||
<surface boundary="vacuum" coeffs="0.0 0.0 -5.0 1.0" id="4" type="sphere" />
|
||||
<surface coeffs="-5.0" id="5" type="z-plane" />
|
||||
</geometry>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<materials>
|
||||
<cross_sections>mg_lib.h5</cross_sections>
|
||||
<material id="1">
|
||||
<density units="g/cc" value="1.0" />
|
||||
<nuclide ao="2.0" name="H1" />
|
||||
<nuclide ao="1.0" name="O16" />
|
||||
<nuclide ao="0.0001" name="B10" />
|
||||
</material>
|
||||
<material depletable="true" id="2">
|
||||
<density units="g/cc" value="4.5" />
|
||||
<nuclide ao="1.0" name="U235" />
|
||||
<nuclide ao="0.1" name="Mo99" />
|
||||
</material>
|
||||
</materials>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<settings>
|
||||
<run_mode>volume</run_mode>
|
||||
<energy_mode>multi-group</energy_mode>
|
||||
<volume_calc>
|
||||
<domain_type>cell</domain_type>
|
||||
<domain_ids>1 2 3</domain_ids>
|
||||
<samples>100000</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
</volume_calc>
|
||||
<volume_calc>
|
||||
<domain_type>material</domain_type>
|
||||
<domain_ids>1 2</domain_ids>
|
||||
<samples>100000</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
</volume_calc>
|
||||
<volume_calc>
|
||||
<domain_type>universe</domain_type>
|
||||
<domain_ids>0</domain_ids>
|
||||
<samples>100000</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
</volume_calc>
|
||||
<volume_calc>
|
||||
<domain_type>cell</domain_type>
|
||||
<domain_ids>1 2 3</domain_ids>
|
||||
<samples>100</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
<threshold threshold="0.1" type="std_dev" />
|
||||
</volume_calc>
|
||||
<volume_calc>
|
||||
<domain_type>material</domain_type>
|
||||
<domain_ids>1 2</domain_ids>
|
||||
<samples>100</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
<threshold threshold="0.1" type="rel_err" />
|
||||
</volume_calc>
|
||||
<volume_calc>
|
||||
<domain_type>cell</domain_type>
|
||||
<domain_ids>1 2 3</domain_ids>
|
||||
<samples>100</samples>
|
||||
<lower_left>-1.0 -1.0 -6.0</lower_left>
|
||||
<upper_right>1.0 1.0 6.0</upper_right>
|
||||
<threshold threshold="0.05" type="variance" />
|
||||
</volume_calc>
|
||||
</settings>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import os
|
||||
import glob
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
import openmc
|
||||
|
||||
|
|
@ -9,12 +10,15 @@ from tests.testing_harness import PyAPITestHarness
|
|||
|
||||
class VolumeTest(PyAPITestHarness):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
def __init__(self, is_ce, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.exp_std_dev = 1e-01
|
||||
self.exp_rel_err = 1e-01
|
||||
self.exp_variance = 5e-02
|
||||
self.is_ce = is_ce
|
||||
if not is_ce:
|
||||
self.inputs_true = 'inputs_true_mg.dat'
|
||||
|
||||
def _build_inputs(self):
|
||||
# Define materials
|
||||
|
|
@ -22,7 +26,8 @@ class VolumeTest(PyAPITestHarness):
|
|||
water.add_nuclide('H1', 2.0)
|
||||
water.add_nuclide('O16', 1.0)
|
||||
water.add_nuclide('B10', 0.0001)
|
||||
water.add_s_alpha_beta('c_H_in_H2O')
|
||||
if self.is_ce:
|
||||
water.add_s_alpha_beta('c_H_in_H2O')
|
||||
water.set_density('g/cc', 1.0)
|
||||
|
||||
fuel = openmc.Material(2)
|
||||
|
|
@ -31,6 +36,8 @@ class VolumeTest(PyAPITestHarness):
|
|||
fuel.set_density('g/cc', 4.5)
|
||||
|
||||
materials = openmc.Materials((water, fuel))
|
||||
if not self.is_ce:
|
||||
materials.cross_sections = 'mg_lib.h5'
|
||||
materials.export_to_xml()
|
||||
|
||||
cyl = openmc.ZCylinder(surface_id=1, r=1.0, boundary_type='vacuum')
|
||||
|
|
@ -68,9 +75,50 @@ class VolumeTest(PyAPITestHarness):
|
|||
# Define settings
|
||||
settings = openmc.Settings()
|
||||
settings.run_mode = 'volume'
|
||||
if not self.is_ce:
|
||||
settings.energy_mode = 'multi-group'
|
||||
settings.volume_calculations = vol_calcs
|
||||
settings.export_to_xml()
|
||||
|
||||
# Create the MGXS file is necessary
|
||||
if not self.is_ce:
|
||||
groups = openmc.mgxs.EnergyGroups(group_edges=[0., 20.e6])
|
||||
mg_xs_file = openmc.MGXSLibrary(groups)
|
||||
|
||||
nu = [2.]
|
||||
fiss = [1.]
|
||||
capture = [1.]
|
||||
absorption_fissile = np.add(fiss, capture)
|
||||
absorption_other = capture
|
||||
scatter = np.array([[[1.]]])
|
||||
total_fissile = np.add(absorption_fissile,
|
||||
np.sum(scatter[:, :, 0], axis=1))
|
||||
total_other = np.add(absorption_other,
|
||||
np.sum(scatter[:, :, 0], axis=1))
|
||||
chi = [1.]
|
||||
|
||||
for iso in ['H1', 'O16', 'B10', 'Mo99', 'U235']:
|
||||
mat = openmc.XSdata(iso, groups)
|
||||
mat.order = 0
|
||||
mat.set_scatter_matrix(scatter)
|
||||
if iso == 'U235':
|
||||
mat.set_nu_fission(np.multiply(nu, fiss))
|
||||
mat.set_absorption(absorption_fissile)
|
||||
mat.set_total(total_fissile)
|
||||
mat.set_chi(chi)
|
||||
else:
|
||||
mat.set_absorption(absorption_other)
|
||||
mat.set_total(total_other)
|
||||
mg_xs_file.add_xsdata(mat)
|
||||
mg_xs_file.export_to_hdf5('mg_lib.h5')
|
||||
|
||||
def _cleanup(self):
|
||||
super()._cleanup()
|
||||
output = ['mg_lib.h5']
|
||||
for f in output:
|
||||
if os.path.exists(f):
|
||||
os.remove(f)
|
||||
|
||||
def _get_results(self):
|
||||
outstr = ''
|
||||
for i, filename in enumerate(sorted(glob.glob('volume_*.h5'))):
|
||||
|
|
@ -116,6 +164,8 @@ class VolumeTest(PyAPITestHarness):
|
|||
def _test_output_created(self):
|
||||
pass
|
||||
|
||||
|
||||
def test_volume_calc():
|
||||
harness = VolumeTest('')
|
||||
harness.main()
|
||||
for is_ce in [True, False]:
|
||||
harness = VolumeTest(is_ce, '')
|
||||
harness.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue