mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 14:15:42 -04:00
Add unit tests for settings.from_xml() and a few fixes
This commit is contained in:
parent
489a03c648
commit
c0ede1ec8d
2 changed files with 73 additions and 11 deletions
|
|
@ -174,7 +174,6 @@ class Settings(object):
|
|||
self._source = cv.CheckedList(Source, 'source distributions')
|
||||
|
||||
self._confidence_intervals = None
|
||||
self._cross_sections = None
|
||||
self._electron_treatment = None
|
||||
self._photon_transport = None
|
||||
self._ptables = None
|
||||
|
|
@ -993,11 +992,14 @@ class Settings(object):
|
|||
def _sourcepoint_from_xml_element(self, root):
|
||||
elem = root.find('source_point')
|
||||
if elem is not None:
|
||||
for key in ('separate', 'write', 'overwrite', 'batches'):
|
||||
for key in ('separate', 'write', 'overwrite_latest', 'batches'):
|
||||
value = get_text(elem, key)
|
||||
if value is not None:
|
||||
if key in ('separate', 'write', 'overwrite'):
|
||||
if key in ('separate', 'write'):
|
||||
value = value == 'true'
|
||||
elif key == 'overwrite_latest':
|
||||
value = value == 'true'
|
||||
key = 'overwrite'
|
||||
else:
|
||||
value = [int(x) for x in value.split()]
|
||||
self.sourcepoint[key] = value
|
||||
|
|
@ -1053,9 +1055,12 @@ class Settings(object):
|
|||
self.cutoff[key] = float(value)
|
||||
|
||||
def _entropy_mesh_from_xml_element(self, root):
|
||||
elem = root.find('entropy_mesh')
|
||||
if elem is not None:
|
||||
self.entropy_mesh = Mesh.from_xml_element(elem)
|
||||
text = get_text(root, 'entropy_mesh')
|
||||
if text is not None:
|
||||
path = "./mesh[@id='{}']".format(int(text))
|
||||
elem = root.find(path)
|
||||
if elem is not None:
|
||||
self.entropy_mesh = Mesh.from_xml_element(elem)
|
||||
|
||||
def _trigger_from_xml_element(self, root):
|
||||
elem = root.find('trigger')
|
||||
|
|
@ -1115,9 +1120,12 @@ class Settings(object):
|
|||
self.track = [int(x) for x in text.split()]
|
||||
|
||||
def _ufs_mesh_from_xml_element(self, root):
|
||||
elem = root.find('ufs_mesh')
|
||||
if elem is not None:
|
||||
self.ufs_mesh = Mesh.from_xml_element(elem)
|
||||
text = get_text(root, 'ufs_mesh')
|
||||
if text is not None:
|
||||
path = "./mesh[@id='{}']".format(int(text))
|
||||
elem = root.find(path)
|
||||
if elem is not None:
|
||||
self.ufs_mesh = Mesh.from_xml_element(elem)
|
||||
|
||||
def _resonance_scattering_from_xml_element(self, root):
|
||||
elem = root.find('resonance_scattering')
|
||||
|
|
|
|||
|
|
@ -19,11 +19,12 @@ def test_export_to_xml(run_in_tmpdir):
|
|||
'write': True, 'overwrite': True}
|
||||
s.statepoint = {'batches': [50, 150, 500, 1000]}
|
||||
s.confidence_intervals = True
|
||||
s.cross_sections = '/path/to/cross_sections.xml'
|
||||
s.ptables = True
|
||||
s.seed = 17
|
||||
s.survival_biasing = True
|
||||
s.cutoff = {'weight': 0.25, 'weight_avg': 0.5, 'energy': 1.0e-5}
|
||||
s.cutoff = {'weight': 0.25, 'weight_avg': 0.5, 'energy_neutron': 1.0e-5,
|
||||
'energy_photon': 1000.0, 'energy_electron': 1.0e-5,
|
||||
'energy_positron': 1.0e-5}
|
||||
mesh = openmc.Mesh()
|
||||
mesh.lower_left = (-10., -10., -10.)
|
||||
mesh.upper_right = (10., 10., 10.)
|
||||
|
|
@ -47,6 +48,59 @@ def test_export_to_xml(run_in_tmpdir):
|
|||
upper_right = (10., 10., 10.))
|
||||
s.create_fission_neutrons = True
|
||||
s.log_grid_bins = 2000
|
||||
s.photon_transport = False
|
||||
s.electron_treatment = 'led'
|
||||
s.dagmc = False
|
||||
|
||||
# Make sure exporting XML works
|
||||
s.export_to_xml()
|
||||
|
||||
# Generate settings from XML
|
||||
s = openmc.Settings.from_xml()
|
||||
assert s.run_mode == 'fixed source'
|
||||
assert s.batches == 1000
|
||||
assert s.generations_per_batch == 10
|
||||
assert s.inactive == 100
|
||||
assert s.particles == 1000000
|
||||
assert s.keff_trigger == {'type': 'std_dev', 'threshold': 0.001}
|
||||
assert s.energy_mode == 'continuous-energy'
|
||||
assert s.max_order == 5
|
||||
assert isinstance(s.source[0], openmc.Source)
|
||||
assert isinstance(s.source[0].space, openmc.stats.Point)
|
||||
assert s.output == {'summary': True, 'tallies': False, 'path': 'here'}
|
||||
assert s.verbosity == 7
|
||||
assert s.sourcepoint == {'batches': [50, 150, 500, 1000], 'separate': True,
|
||||
'write': True, 'overwrite': True}
|
||||
assert s.statepoint == {'batches': [50, 150, 500, 1000]}
|
||||
assert s.confidence_intervals
|
||||
assert s.ptables
|
||||
assert s.seed == 17
|
||||
assert s.survival_biasing
|
||||
assert s.cutoff == {'weight': 0.25, 'weight_avg': 0.5,
|
||||
'energy_neutron': 1.0e-5, 'energy_photon': 1000.0,
|
||||
'energy_electron': 1.0e-5, 'energy_positron': 1.0e-5}
|
||||
assert isinstance(s.entropy_mesh, openmc.Mesh)
|
||||
assert s.entropy_mesh.lower_left == [-10., -10., -10.]
|
||||
assert s.entropy_mesh.upper_right == [10., 10., 10.]
|
||||
assert s.entropy_mesh.dimension == [5, 5, 5]
|
||||
assert s.trigger_active
|
||||
assert s.trigger_max_batches == 10000
|
||||
assert s.trigger_batch_interval == 50
|
||||
assert not s.no_reduce
|
||||
assert s.tabular_legendre == {'enable': True, 'num_points': 50}
|
||||
assert s.temperature == {'default': 293.6, 'method': 'interpolation',
|
||||
'multipole': True, 'range': [200., 1000.]}
|
||||
assert s.trace == [10, 1, 20]
|
||||
assert s.track == [1, 1, 1, 2, 1, 1]
|
||||
assert isinstance(s.ufs_mesh, openmc.Mesh)
|
||||
assert s.ufs_mesh.lower_left == [-10., -10., -10.]
|
||||
assert s.ufs_mesh.upper_right == [10., 10., 10.]
|
||||
assert s.ufs_mesh.dimension == [5, 5, 5]
|
||||
assert s.resonance_scattering == {'enable': True, 'method': 'rvs',
|
||||
'energy_min': 1.0, 'energy_max': 1000.0,
|
||||
'nuclides': ['U235', 'U238', 'Pu239']}
|
||||
assert s.create_fission_neutrons
|
||||
assert s.log_grid_bins == 2000
|
||||
assert not s.photon_transport
|
||||
assert s.electron_treatment == 'led'
|
||||
assert not s.dagmc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue