mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 21:55:41 -04:00
Fix MaterialFilter C-API indexing error
This commit is contained in:
parent
ea0a91b0e6
commit
77cef923b5
2 changed files with 6 additions and 2 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue