From b5ed2b985f5142f985a04c152d707bb13d3f3f7b Mon Sep 17 00:00:00 2001 From: Ethan Peterson Date: Wed, 4 May 2022 13:47:40 -0400 Subject: [PATCH] cleaning up a few syntax things --- openmc/mesh.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/openmc/mesh.py b/openmc/mesh.py index d81afb725..c6fa7bb99 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -1,4 +1,4 @@ -from abc import ABC +from abc import ABC, abstractmethod from collections.abc import Iterable from math import pi from numbers import Real, Integral @@ -61,6 +61,7 @@ class MeshBase(IDManagerMixin, ABC): pass @property + @abstractmethod def vertices(self): """Return coordinates of mesh vertices. @@ -74,6 +75,7 @@ class MeshBase(IDManagerMixin, ABC): return np.stack(np.meshgrid(*self._grids, indexing='ij'), axis=-1) @property + @abstractmethod def centroids(self): """Return coordinates of mesh element centroids. @@ -84,7 +86,7 @@ class MeshBase(IDManagerMixin, ABC): coordinates with a shape equal to (dim1, ..., dimn, ndim). """ - ndim = len(self.dimension) + ndim = self.n_dimension vertices = self.vertices s0 = (slice(0, -1),)*ndim + (slice(None),) s1 = (slice(1, None),)*ndim + (slice(None),) @@ -105,7 +107,7 @@ class MeshBase(IDManagerMixin, ABC): return string def _volume_dim_check(self): - if len(self.dimension) != 3 or \ + if self.n_dimension != 3 or \ any([d == 0 for d in self.dimension]): raise RuntimeError(f'Mesh {self.id} is not 3D. ' 'Volumes cannot be provided.') @@ -509,7 +511,7 @@ class RegularMesh(MeshBase): for entry in bc: cv.check_value('bc', entry, _BOUNDARY_TYPES) - n_dim = len(self.dimension) + n_dim = self.n_dimension # Build the cell which will contain the lattice xplanes = [openmc.XPlane(self.lower_left[0], boundary_type=bc[0]), @@ -1227,7 +1229,7 @@ class UnstructuredMesh(MeshBase): (1.0, 1.0, 1.0), ...] """ def __init__(self, filename, library, mesh_id=None, name='', - length_multiplier=1.0): + length_multiplier=1.0): super().__init__(mesh_id, name) self.filename = filename self._volumes = None @@ -1322,6 +1324,19 @@ class UnstructuredMesh(MeshBase): Real) self._length_multiplier = length_multiplier + @property + def dimension(self): + return self.n_elements + + @property + def n_dimension(self): + return 3 + + @property + def vertices(self): + raise NotImplementedError("Vertices for UnstructuredMesh objects are " + "not yet available") + def __repr__(self): string = super().__repr__() string += '{: <16}=\t{}\n'.format('\tFilename', self.filename) @@ -1452,7 +1467,7 @@ class UnstructuredMesh(MeshBase): subelement.text = self.filename if self._length_multiplier != 1.0: - element.set("length_multiplier", str(self.length_multiplier)) + element.set("length_multiplier", str(self.length_multiplier)) return element