From f432be0c055f889426ec3ab01c7316cd8d491e1d Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 16 Jul 2019 11:04:50 -0500 Subject: [PATCH] Remove cecm function for deplete.CECMIntegrator The cecm function has been removed from the python api. In order to use the cecm integration scheme, the following class based approach is now expected: >>> from openmc.deplete import CECMIntegrator >>> cecm = CECMIntegrator(operator, timesteps, power) >>> cecm.integrate() if the integrator is not needed, this above expression can be one-lined with >>> CECMIntegrator(operator, timesteps, power).integrate() Unit tests have been updated to no longer use the cecm function, and cecm has been removed from documentation. The CECMIntegrator has been added to documentation. --- docs/source/pythonapi/deplete.rst | 8 +++++++- openmc/deplete/integrator/abc.py | 10 ++-------- openmc/deplete/integrator/cecm.py | 13 ------------- openmc/deplete/operator.py | 2 +- tests/unit_tests/test_deplete_cecm.py | 4 +++- tests/unit_tests/test_deplete_restart.py | 13 +++++++++---- 6 files changed, 22 insertions(+), 28 deletions(-) diff --git a/docs/source/pythonapi/deplete.rst b/docs/source/pythonapi/deplete.rst index 532e06655..32f953ed4 100644 --- a/docs/source/pythonapi/deplete.rst +++ b/docs/source/pythonapi/deplete.rst @@ -17,7 +17,6 @@ transport-depletion coupling algorithms `_. :template: myfunction.rst integrator.predictor - integrator.cecm integrator.celi integrator.leqi integrator.cf4 @@ -25,6 +24,13 @@ transport-depletion coupling algorithms `_. integrator.si_celi integrator.si_leqi +.. autosummary:: + :toctree: generated + :nosignatures: + :template: myclassinherit.rst + + integrator.CECMIntegrator + Each of these functions expects a "transport operator" to be passed. An operator specific to OpenMC is available using the following class: diff --git a/openmc/deplete/integrator/abc.py b/openmc/deplete/integrator/abc.py index d6f318fa4..51877e5e6 100644 --- a/openmc/deplete/integrator/abc.py +++ b/openmc/deplete/integrator/abc.py @@ -81,8 +81,7 @@ class Integrator(ABC): """ def __iter__(self): - for dt, p in zip(self.timesteps, self.power): - yield dt, p + return zip(self.timesteps, self.power) def __len__(self): return len(self.timesteps) @@ -109,7 +108,7 @@ class Integrator(ABC): return 0.0, 0 return self.operator.prev_res[-1].time[-1], len(self.operator.prev_res) - def integrate_all(self): + def integrate(self): """Perform the entire depletion process across all steps""" with self.operator as conc: t, i_start = self._get_start_data() @@ -145,8 +144,3 @@ class Integrator(ABC): Results.save( self.operator, conc_list, results_list, time_list, power, index, proc_time) - - @classmethod - def integrate(cls, operator, timesteps, power=None, power_density=None): - """High-level interface for depleting with this integrator""" - return cls(operator, timesteps, power, power_density).integrate_all() diff --git a/openmc/deplete/integrator/cecm.py b/openmc/deplete/integrator/cecm.py index 031e4ce7b..1bf6e5809 100644 --- a/openmc/deplete/integrator/cecm.py +++ b/openmc/deplete/integrator/cecm.py @@ -58,16 +58,3 @@ class CECMIntegrator(Integrator): time1, x_end = timed_deplete(self.chain, conc, res_middle.rates, dt) return time0 + time1, [x_middle, x_end], [res_middle] - - -def cecm(operator, timesteps, power=None, power_density=None, print_out=False): - # TODO Remove print_out since depletion timings are stored - return CECMIntegrator( - operator, timesteps, power, power_density).integrate_all() - - -try: - cecm.__doc__ = ( - dedent(CECMIntegrator.__doc__) + dedent(Integrator.__init__.__doc__)) -except AttributeError: - pass diff --git a/openmc/deplete/operator.py b/openmc/deplete/operator.py index 21c96b047..a38c4e501 100644 --- a/openmc/deplete/operator.py +++ b/openmc/deplete/operator.py @@ -55,7 +55,7 @@ class Operator(TransportOperator): Instances of this class can be used to perform depletion using OpenMC as the transport operator. Normally, a user needn't call methods of this class directly. Instead, an instance of this class is passed to an integrator - function, such as :func:`openmc.deplete.integrator.cecm`. + class, such as :class:`openmc.deplete.CECMIntegrator`. Parameters ---------- diff --git a/tests/unit_tests/test_deplete_cecm.py b/tests/unit_tests/test_deplete_cecm.py index dd8b769fe..8ad1ec95e 100644 --- a/tests/unit_tests/test_deplete_cecm.py +++ b/tests/unit_tests/test_deplete_cecm.py @@ -5,6 +5,7 @@ These tests integrate a simple test problem described in dummy_geometry.py. from pytest import approx import openmc.deplete +from openmc.deplete import CECMIntegrator from tests import dummy_operator @@ -18,7 +19,8 @@ def test_cecm(run_in_tmpdir): # Perform simulation using the MCNPX/MCNP6 algorithm dt = [0.75, 0.75] power = 1.0 - openmc.deplete.cecm(op, dt, power, print_out=False) + integrator = CECMIntegrator(op, dt, power) + integrator.integrate() # Load the files res = openmc.deplete.ResultsList(op.output_dir / "depletion_results.h5") diff --git a/tests/unit_tests/test_deplete_restart.py b/tests/unit_tests/test_deplete_restart.py index ec62064a4..97f0a8b70 100644 --- a/tests/unit_tests/test_deplete_restart.py +++ b/tests/unit_tests/test_deplete_restart.py @@ -6,6 +6,7 @@ problem described in dummy_geometry.py. from pytest import approx import openmc.deplete +from openmc.deplete import CECMIntegrator from tests import dummy_operator @@ -59,7 +60,8 @@ def test_restart_cecm(run_in_tmpdir): # Perform simulation using the MCNPX/MCNP6 algorithm dt = [0.75] power = 1.0 - openmc.deplete.cecm(op, dt, power, print_out=False) + cecm = CECMIntegrator(op, dt, power) + cecm.integrate() # Load the files prev_res = openmc.deplete.ResultsList(op.output_dir / "depletion_results.h5") @@ -69,7 +71,8 @@ def test_restart_cecm(run_in_tmpdir): op.output_dir = output_dir # Perform restarts simulation using the MCNPX/MCNP6 algorithm - openmc.deplete.cecm(op, dt, power, print_out=False) + cecm_restart = CECMIntegrator(op, dt, power) + cecm_restart.integrate() # Load the files res = openmc.deplete.ResultsList(op.output_dir / "depletion_results.h5") @@ -109,7 +112,8 @@ def test_restart_predictor_cecm(run_in_tmpdir): op.output_dir = output_dir # Perform restarts simulation using the MCNPX/MCNP6 algorithm - openmc.deplete.cecm(op, dt, power, print_out=False) + cecm = CECMIntegrator(op, dt, power) + cecm.integrate() # Load the files res = openmc.deplete.ResultsList(op.output_dir / "depletion_results.h5") @@ -139,7 +143,8 @@ def test_restart_cecm_predictor(run_in_tmpdir): # Perform simulation using the MCNPX/MCNP6 algorithm dt = [0.75] power = 1.0 - openmc.deplete.cecm(op, dt, power, print_out=False) + cecm = CECMIntegrator(op, dt, power) + cecm.integrate() # Load the files prev_res = openmc.deplete.ResultsList(op.output_dir / "depletion_results.h5")