Hi all,
I’m testing MuSurfaceFilter in OpenMC 0.15.3:
tally.filters = [
openmc.SurfaceFilter([cz_2]),
openmc.MuSurfaceFilter([-1.0, 0.0, 1.0]),
]
tally.scores = ["current"]
with
cz_2 = openmc.ZCylinder(r=130.0, name="reflector boundary")
To investigate, I also changed the outer boundary to reflective:
cz_3 = openmc.ZCylinder(
r=132.0,
name="core barrel boundary",
boundary_type="reflective",
)
With reflective boundary:
surface musurface low musurface high nuclide score mean std. dev.
0 2 -1.00e+00 0.00e+00 total current 0.00e+00 0.00e+00
1 2 0.00e+00 1.00e+00 total current 4.79e-02 1.64e-04
surface musurface low musurface high
2 -1.0 0.0 0.000000
0.0 1.0 0.047905
Name: mean, dtype: float64
Without reflective boundary (vacuum):
surface musurface low musurface high nuclide score mean std. dev.
0 2 -1.00e+00 0.00e+00 total current 0.00e+00 0.00e+00
1 2 0.00e+00 1.00e+00 total current 4.92e-02 1.59e-04
surface musurface low musurface high
2 -1.0 0.0 0.0000
0.0 1.0 0.0492
Name: mean, dtype: float64
In both cases, the [-1, 0] μ-bin is exactly zero, while all current appears in the [0, 1] bin. The results are also very similar between reflective and vacuum boundary conditions.
My understanding was that MuSurfaceFilter([-1, 0, 1]) should separate surface crossings according to the sign of the cosine between the particle direction and the local surface normal. With a reflective outer boundary, I expected at least some population of both μ bins at the internal surface cz_2.
Am I misunderstanding how MuSurfaceFilter works with the current score, or would one normally expect both μ bins to be populated for an internal surface?
OpenMC version
OpenMC 0.15.3
Commit hash: 27e38e894697bb32a1dac7848d2618818b6b8daf