Hi guys,
I encountered a problem when I tried building a two-rings hexagonal assembly model. The model’s outer planes are defined as “reflective” boundary conditions. The model’s outer planes are defined as “reflective” boundary conditions. The geometry plot looks all right and will be given here
The calculation can process well, but the results of the mesh tally have some problems after visual processing. A few boundaries cross the model geometry, reflect all the particles and do not sample for all the geometry. The fission rate tally results will be given here as well.
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.
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.
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.