Merge pull request #2166 from pshriwise/umesh-centroid-fix

Fix for centroid method in UnstructuredMesh class
This commit is contained in:
Paul Romano 2022-08-11 21:20:04 -05:00 committed by GitHub
commit 362b4cf68a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 7 deletions

View file

@ -1476,7 +1476,7 @@ class UnstructuredMesh(MeshBase):
Coordinates of the mesh vertices with array shape (n_elements, 3)
.. versionadded:: 0.13.1
connectivity : numpy.ndarray
connectivity : numpy.ndarray
Connectivity of the elements with array shape (n_elements, 8)
.. versionadded:: 0.13.1
@ -1562,10 +1562,6 @@ class UnstructuredMesh(MeshBase):
def total_volume(self):
return np.sum(self.volumes)
@property
def centroids(self):
return self._centroids
@property
def vertices(self):
return self._vertices
@ -1628,8 +1624,8 @@ class UnstructuredMesh(MeshBase):
Parameters
----------
bin : int
Bin ID for the returned centroid
Bin ID for the returned centroid
Returns
-------
numpy.ndarray
@ -1637,6 +1633,8 @@ class UnstructuredMesh(MeshBase):
"""
conn = self.connectivity[bin]
# remove invalid connectivity values
conn = conn[conn >= 0]
coords = self.vertices[conn]
return coords.mean(axis=0)

View file

@ -37,6 +37,26 @@ class UnstructuredMeshTest(PyAPITestHarness):
def _compare_results(self):
with openmc.StatePoint(self._sp_name) as sp:
# check some properties of the unstructured mesh
umesh = None
for m in sp.meshes.values():
if isinstance(m, openmc.UnstructuredMesh):
umesh = m
assert umesh is not None
# check that the first element centroid is correct
# this will depend on whether the tet mesh or hex mesh
# file is being used in this test
if umesh.element_types[0] == umesh._LINEAR_TET:
exp_vertex = (-10.0, -10.0, -10.0)
exp_centroid = (-8.75, -9.75, -9.25)
else:
exp_vertex = (-10.0, -10.0, 10.0)
exp_centroid = (-9.0, -9.0, 9.0)
np.testing.assert_array_equal(umesh.vertices[0], exp_vertex)
np.testing.assert_array_equal(umesh.centroid(0), exp_centroid)
# loop over the tallies and get data
for tally in sp.tallies.values():
# find the regular and unstructured meshes