From 77cef923b5552a86bd309caec935f238efe3bb1f Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Sun, 14 Oct 2018 14:21:37 -0400 Subject: [PATCH] Fix MaterialFilter C-API indexing error --- openmc/capi/filter.py | 6 ++++-- tests/unit_tests/test_capi.py | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/openmc/capi/filter.py b/openmc/capi/filter.py index 8d9d794d16..5f6e74bbc8 100644 --- a/openmc/capi/filter.py +++ b/openmc/capi/filter.py @@ -238,13 +238,15 @@ class MaterialFilter(Filter): materials = POINTER(c_int32)() n = c_int32() _dll.openmc_material_filter_get_bins(self._index, materials, n) - return [Material(index=materials[i]) for i in range(n.value)] + #TODO: fix this off-by-one when materials become 0-indexed + return [Material(index=materials[i]+1) for i in range(n.value)] @bins.setter def bins(self, materials): # Get material indices as int32_t[] n = len(materials) - bins = (c_int32*n)(*(m._index for m in materials)) + #TODO: fix this off-by-one when materials become 0-indexed + bins = (c_int32*n)(*(m._index-1 for m in materials)) _dll.openmc_material_filter_set_bins(self._index, n, bins) diff --git a/tests/unit_tests/test_capi.py b/tests/unit_tests/test_capi.py index ae2d927191..059557dbf3 100644 --- a/tests/unit_tests/test_capi.py +++ b/tests/unit_tests/test_capi.py @@ -168,6 +168,8 @@ def test_tally(capi_init): openmc.capi.MaterialFilter(uid=1) mats = openmc.capi.materials f = openmc.capi.MaterialFilter([mats[2], mats[1]]) + assert f.bins[0] == mats[2] + assert f.bins[1] == mats[1] t.filters = [f] assert t.filters == [f]