The mesh tally outputs are broken by the ''reflective" boundary type planes

Hi @YimingZ,

A very interesting problem! It took a bit for me to sort out what is going on here.

I pulled your model (thanks for providing it!) and pulled it up in the plotter. This allowed me to look at the containing cell definition more clearly. It looked correct to me.

But of course when I ran the problem I saw the same issue as you:

So I stared at it for a bit and then broke the cell region definition up into 4 cells (one for each quadrant):

This helped me see that what’s likely going on is that particles are hitting the surfaces moving through this concave region. This is fine when the boundary condition for those surfaces is transmissive, but when it’s vacuum or reflecting, it’s going to cause strange behavior.

So what I’d recommend doing is separating the quadrants into six, 60-degree convex regions. This will allow you to set the boundary condition on the outer surfaces and avoid this “ghost surface” issue you’re facing with the concave regions when the model is broken into quadrants.

I tried this out for a couple of sections to make sure it would work.

Model viewed by material:

Containing cells at the highest level:

Results:

If you decide to do this, one thing that might be helpful to you is the openmc.model.CylinderSector in the Python API that will allow you to define these sections pretty easily. It helped me out when I realized that the necessary planes weren’t already present.

Interesting problem! Thanks for bringing it up!

-Patrick