Implementing Gadolinium Pin Subdivisions in BWR Lattices

Hello,

I’m looking to implement sub-divisioning for the gadolinium fuel rods inside my 10x10 BWR lattice.

I noticed that the openmc.model.pin function is capable of pin-wise sub-divisioning, but it outputs an openmc universe. If my geometry was an actual10x10 lattice, I believe it wouldn’t be too hard to figure out, but my 10x10 lattice is disrupted by the presence of two water rods at the center (See attached image).

My original solution to address this issue was to create several for loops and conditional statements to generate the surfaces, cells, and fills for each pin in the core (See attached). So far that seems to have given me good results, but I’m a bit stumped on how I should go about adding the concentric rings to the gadolinium fuel pins

Will I need to create a series of concentric surfaces within each gadolinium pin and fill them individually with the gadolinium fuel materials (and associated cell logic), or is there an easier way to do generate lattices with sub-divisioning for the gadolinium rods that also bypasses the two water rods.

ASSMO.py (34.2 KB)

Thanks in advance.

Hi @QPhung. I’ve put together an example showing two different ways you could go about this. In the first method, I create cells that appear in the universe above the lattice so that when a cell is filled with a lattice of fuel pins, some of them are “hidden” by the large rods in the higher universe. In the second method, I create 4 distinct universes for each sector of the large rods and put those directly in the lattice. Note that the second version is likely to produce better tracking performance, but may be undesirable if you want to keep the large water rod together as a single cell rather than breaking it across lattice boundaries.