From da240211196021401a295ec3e22944643c46daa0 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 24 Apr 2023 09:48:26 -0500 Subject: [PATCH] Add property for distances in CruciformPrism --- openmc/model/surface_composite.py | 13 +++++++++++++ tests/unit_tests/test_surface_composite.py | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/openmc/model/surface_composite.py b/openmc/model/surface_composite.py index 6acfdde4a8..0f4d7cc7fb 100644 --- a/openmc/model/surface_composite.py +++ b/openmc/model/surface_composite.py @@ -1137,6 +1137,19 @@ class CruciformPrism(CompositeSurface): def _surface_names(self): return self._surfnames + @property + def distances(self): + return self._distances + + @distances.setter + def distances(self, values): + values = np.array(values, dtype=float) + # Check for monotonicity + if (values[1:] > values[:-1]).all() or (values[1:] < values[:-1]).all(): + self._distances = values + else: + raise ValueError("distances must be monotonic") + def __neg__(self): n = len(self.distances) regions = [] diff --git a/tests/unit_tests/test_surface_composite.py b/tests/unit_tests/test_surface_composite.py index 066dd33078..d73038bdb6 100644 --- a/tests/unit_tests/test_surface_composite.py +++ b/tests/unit_tests/test_surface_composite.py @@ -455,3 +455,9 @@ def test_cruciform_prism(axis): # Make sure repr works repr(s) + + # Check that non-monotonic distances fail + with pytest.raises(ValueError): + openmc.model.CruciformPrism([1.0, 0.5, 2.0, 3.0]) + with pytest.raises(ValueError): + openmc.model.CruciformPrism([3.0, 2.0, 0.5, 1.0])