From 6e1114dcabbc1f4e4c8d0185c38c66b249cb83e8 Mon Sep 17 00:00:00 2001 From: liangjg Date: Thu, 20 Dec 2018 09:10:02 -0500 Subject: [PATCH] address review comments --- openmc/deplete/integrator/cecm.py | 2 +- openmc/deplete/integrator/predictor.py | 2 +- openmc/deplete/operator.py | 13 ++++++++++--- openmc/material.py | 1 + src/input_xml.F90 | 2 +- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/openmc/deplete/integrator/cecm.py b/openmc/deplete/integrator/cecm.py index 43425e1b1..ac519cf87 100644 --- a/openmc/deplete/integrator/cecm.py +++ b/openmc/deplete/integrator/cecm.py @@ -47,7 +47,7 @@ def cecm(operator, timesteps, power=None, power_density=None, print_out=True): """ if power is None: if power_density is None: - raise RuntimeError( + raise ValueError( "Neither power nor power density was specified.") if not isinstance(power_density, Iterable): power = power_density*operator.heavy_metal diff --git a/openmc/deplete/integrator/predictor.py b/openmc/deplete/integrator/predictor.py index bf6e2553e..969144f68 100644 --- a/openmc/deplete/integrator/predictor.py +++ b/openmc/deplete/integrator/predictor.py @@ -43,7 +43,7 @@ def predictor(operator, timesteps, power=None, power_density=None, """ if power is None: if power_density is None: - raise RuntimeError( + raise ValueError( "Neither power nor power density was specified.") if not isinstance(power_density, Iterable): power = power_density*operator.heavy_metal diff --git a/openmc/deplete/operator.py b/openmc/deplete/operator.py index ac995bc85..4dc164c2d 100644 --- a/openmc/deplete/operator.py +++ b/openmc/deplete/operator.py @@ -70,6 +70,8 @@ class Operator(TransportOperator): Results from a previous depletion calculation. If this argument is specified, the depletion calculation will start from the latest state in the previous results. + diff_burnable_mats : bool, optional + Whether to differentiate burnable materials with multiple instances Attributes ---------- @@ -102,13 +104,17 @@ class Operator(TransportOperator): All burnable material IDs being managed by a single process prev_res : ResultsList Results from a previous depletion calculation + diff_burnable_mats : bool + Whether to differentiate burnable materials with multiple instances """ - def __init__(self, geometry, settings, chain_file=None, prev_results=None): + def __init__(self, geometry, settings, chain_file=None, prev_results=None, + diff_burnable_mats=True): super().__init__(chain_file) self.round_number = False self.settings = settings self.geometry = geometry + self.diff_burnable_mats = diff_burnable_mats if prev_results != None: # Reload volumes into geometry @@ -221,8 +227,9 @@ class Operator(TransportOperator): """ - # Automatically distribute burnable materials - self._differentiate_burnable_mats() + if self.diff_burnable_mats: + # Automatically distribute burnable materials + self._differentiate_burnable_mats() burnable_mats = set() model_nuclides = set() diff --git a/openmc/material.py b/openmc/material.py index c7187d53e..08d314c95 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -747,6 +747,7 @@ class Material(IDManagerMixin): raise ValueError("Volume must be set in order to determine mass.") return self.volume*self.get_mass_density(nuclide) + @property def get_heavy_metal_mass(self): """Return mass of heavy metal nuclides. diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 716a89361..0ce836348 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -2258,7 +2258,7 @@ contains call write_message("Maximum neutron transport energy: " // & trim(to_str(energy_max(NEUTRON))) // " eV for " // & trim(adjustl(nuclides(i) % name)), 7) - if (master .and. energy_max(NEUTRON) < 20.E6) call warning("Maximum & + if (master .and. energy_max(NEUTRON) < 20.e6) call warning("Maximum & &neutron energy is below 20 MeV. This may bias the results.") exit end if