Depletion changing eigenvalue

Hey all,
I have built a simple molten salt model and I am trying to begin modeling depletion. When I run a k-code problem I get the eigenvalue of 1.059, which agrees with my previous MCNP model. When I add the CECM depletion operator I get an eigenvalue of around 0.87. I also notice that when I change the number of cores that I use, the eigenvalue will switch between the subcritical value and the correct value. For example if I switch from 12 to 14 cores the eigenvalue will be correct, but if I repeat the run it will go back to 0.87 until I change the number of cores.

When I comment out the depletion portion of my input the model runs as expected. My input is shown below. I think it way be a geometry problem where openmc isn’t depleting the correct regions.

`import openmc
import openmc.deplete
import numpy as np
openmc.config[“cross_sections”] = ‘/home/vlujan3/Library/endfb-vii.1-hdf5/cross_sections.xml’
chain = ‘/home/vlujan3/Library/chain_endfb71_fast.xml’

fuelSalt = openmc.Material()
fuelSalt.add_nuclide(‘U235’, 0.3195, ‘ao’)
fuelSalt.add_nuclide(‘U238’, 44.6805, ‘ao’)
fuelSalt.add_nuclide(‘Pu238’, 0.233925, ‘ao’)
fuelSalt.add_nuclide(‘Pu239’, 3.94485, ‘ao’)
fuelSalt.add_nuclide(‘Pu240’, 1.840725, ‘ao’)
fuelSalt.add_nuclide(‘Pu241’, 0.909075, ‘ao’)
fuelSalt.add_nuclide(‘Pu242’, 0.57135, ‘ao’)
fuelSalt.add_nuclide(‘Na23’, 47.5, ‘ao’)
fuelSalt.add_nuclide(‘Cl37’, 202.83315, ‘ao’)
fuelSalt.add_nuclide(‘Cl35’, 2.165825, ‘ao’)
fuelSalt.set_density(‘g/cm3’, 3.57083)
fuelSalt.temperature =1200
fuelSalt.volume = 1.2e7
fuelSalt.depletable = True

HastelloyN = openmc.Material()
HastelloyN.add_nuclide(‘Ni58’, 71, ‘wo’)
HastelloyN.add_nuclide(‘Mo98’, 16, ‘wo’)
HastelloyN.add_nuclide(‘Cr52’, 7, ‘wo’)
HastelloyN.add_nuclide(‘Fe56’, 4.4, ‘wo’)
HastelloyN.add_nuclide(‘Si28’, 0.57, ‘wo’)
HastelloyN.add_nuclide(‘Mn55’, 0.2, ‘wo’)
HastelloyN.add_nuclide(‘W184’, 0.48, ‘wo’)
HastelloyN.add_nuclide(‘Al27’, 0.1, ‘wo’)
HastelloyN.add_nuclide(‘Ti48’, 0.1, ‘wo’)
HastelloyN.add_nuclide(‘Cu63’, 0.1, ‘wo’)
HastelloyN.add_element(‘C’, 0.05, ‘wo’)
HastelloyN.set_density(‘g/cm3’, 8.86)
HastelloyN.temperature =1200
HastelloyN.volume = 0.570955e6
HastelloyN.depletable= False

Reflector = openmc.Material()
Reflector.add_nuclide(‘Zr90’, 123.48, ‘ao’)
Reflector.add_nuclide(‘Zr91’, 26.928, ‘ao’)
Reflector.add_nuclide(‘Zr92’, 41.16, ‘ao’)
Reflector.add_nuclide(‘Zr94’, 41.712, ‘ao’)
Reflector.add_nuclide(‘Si28’, 147.60, ‘ao’)
Reflector.add_nuclide(‘Si29’, 7.4753, ‘ao’)
Reflector.add_nuclide(‘Si30’, 4.9176, ‘ao’)
Reflector.add_nuclide(‘Pb206’, 4.82, ‘ao’)
Reflector.add_nuclide(‘Pb207’, 4.42, ‘ao’)
Reflector.add_nuclide(‘Pb208’, 10.48, ‘ao’)
Reflector.add_nuclide(‘O16’, 20, ‘ao’)
Reflector.set_density(‘g/cm3’, 5.81)
Reflector.temperature =900
Reflector.volume = 8.88256e6
Reflector.depletable = False

ss316 = openmc.Material()
ss316.add_nuclide(‘Fe56’, 68.5, ‘wo’)
ss316.add_nuclide(‘Cr54’, 16.25, ‘wo’)
ss316.add_nuclide(‘Si28’, 11.5, ‘wo’)
ss316.add_nuclide(‘Mo98’, 2.5, ‘wo’)
ss316.add_nuclide(‘Mn55’, 1, ‘wo’)
ss316.add_nuclide(‘Si28’, 0.5, ‘wo’)
ss316.add_nuclide(‘N14’, 0.05, ‘wo’)
ss316.add_element(‘C’, 0.04, ‘wo’)
ss316.add_nuclide(‘P31’, 0.023, ‘wo’)
ss316.add_nuclide(‘S32’, 0.015, ‘wo’)
ss316.set_density(‘g/cm3’, 8.03)
ss316.temperature =900
ss316.volume = 0.76143e6
ss316.depletable = False

innerCoreBoundary = openmc.ZCylinder(r=127.394)
upperPlate = openmc.ZPlane(235.359)
lowerPlate = openmc.ZPlane(0.0)
activeCore = -upperPlate & +lowerPlate & -innerCoreBoundary

upperNplate = openmc.ZPlane(238.359)
lowerNplate = openmc.ZPlane(-3)
axialNBoundary =openmc.ZCylinder(r=130.394)
NRegion = -upperNplate & +lowerNplate & -axialNBoundary & ~activeCore

upperReflector = openmc.ZPlane(278.359)
lowerReflector = openmc.ZPlane(-43)
axialReflectorBoundary = openmc.ZCylinder(r=170.394)
ReflectingRegion = -upperReflector & +lowerReflector & -axialReflectorBoundary & ~NRegion

upperSSplate = openmc.ZPlane(281.359)
upperSSplate.boundary_type = ‘vacuum’
lowerSSplate = openmc.ZPlane(-46)
lowerSSplate.boundary_type = ‘vacuum’
axialSSBoundary = openmc.ZCylinder(r=173.394)
axialSSBoundary.boundary_type = ‘vacuum’
SSRegion = -upperSSplate & +lowerSSplate & -axialSSBoundary & ~ReflectingRegion

fuel = openmc.Cell(fill=fuelSalt, region=activeCore)
fuel.volume = 1.2e7
casing = openmc.Cell(fill=HastelloyN, region = NRegion)
reflector = openmc.Cell(fill=Reflector, region = ReflectingRegion)
stainlessSteel = openmc.Cell(fill=ss316, region = SSRegion)
U = openmc.Universe(cells =[fuel, casing, reflector, stainlessSteel])

materials = openmc.Materials([fuelSalt, HastelloyN, Reflector, ss316])
model = openmc.model.Model()
model.material = materials
model.geometry = openmc.Geometry(U)
model.settings.batches = 450
model.settings.inactive = 50
model.settings.particles =10000
r = 127.394
h = 235.359

SourceR = openmc.stats.Uniform(0,r)
SourcePhi = openmc.stats.Uniform(0,2*np.pi)
SourceH = openmc.stats.Uniform(0,h)
source = openmc.IndependentSource(
space=openmc.stats.CylindricalIndependent(SourceR, SourcePhi, SourceH)
)

model.settings.source = source
model.settings.ptables=True

opp = openmc.deplete.CoupledOperator(model, chain)
time = [0.0417, 1, 5, 10, 21, 35]
power = 4200e6
cecm = openmc.deplete.PredictorIntegrator(opp, time, power)
cecm.integrate()

model.export_to_xml()
model.run(threads=16)`

If any of you have any suggestions it would be much appreciated, thanks.

  • Mickey

Hi Mickey, welcome to the openmc forum
I am checking your model; some cell overlaps were detected when checking the geometry. even my openmc itself can be started.

after doing some corrections with the regions, the calculated keff is 1.05916, and the BOC keff reported from the depletion calculation was 1.05824 which I think is close enough.

here is the notebook being used for your case, I am lowering the number of particles being used and only using 1 burnup step since I only want to make sure that the model can be used.
depletion_changing_eigenvalue.ipynb (162.5 KB)

Thanks Wahid, it now functions as it should. Would you have any idea as to why the eigenvalue would change with the number of threads?

I think the problem is in the geometry itself. Even if you are using the same amount of core, if you change the number of particles, the keff will also change a lot. That’s why we always do the geometry check/debug just to make sure that our model is right.

1 Like