Support different orientations for hexagonal lattices
Created by: dryuri92
I think will be helpful for OpenMC users to give opportunity to create diverse hexagonal lattice which oriented both along OY (as works in current program version ) and OX axis. My proposal is to add new field to hexlattice description called 'orient' not present by default OY long axis orientation and equal "ox" at an another one option. Description at geometry.xml will be like:
... <hex_lattice id="110" n_axial="1" n_rings="2" orient="OX" name="BN-1200 lattice"> <pitch>...
...
universes
1 2
3 4 5
6 7 /universes
By default field 'orient' is absent. Coordinate system be like in OY orientation skewed but (alpha,y) fig 1 with alpha equal 60 degrees instead of (x,alpha). It allows to use the same indexation and avoid check range problem.
Fig 1. Skewed (alpha,y) coodinate system
On Python side new "OX" lattice be like:
lattices = {}
lattices['Reactor core'] = openmc.HexLattice(lattice_id=1, name='Reactor core lattice')
lattices['Reactor core'].orientation = "OX"
when the "OY" be write the same way as early. Numeration in python are some different for "OX" from "OY" case and opposite clockwise but ring and axial layer the same.
(1, 2) (1, 1)
(1, 3) (2, 0) (1, 0)
(1, 4) (1, 5)
For what ? It exists a lot of problem and benchmarks (like Russian's VVER, research and contemporary fast reactors https://www.oecd-nea.org/science/docs/2015/) with hexagonal lattice when pins in assembly oriented along OY axis at the same time assembly in the reactor core lattice along OX. My problem plotting by OpenMC tools looks like
Fig 2. 7 assemblies in core with 127 pins
I ve been tested on my issues and get the same result in value of keff and tallies with different orientation for standalone hexagonal with equal reflective boundary conditions. If my help to modify code or fit to your standart or add some tests is necessary ,I try to correct it.