Dear community,
I am trying to normalize my reaction and absorption rates to 367MW, as described in the user guide and Jupyter notebook. I have done this processing in serpent using “set power”, but having followed the guidelines for OpenMC my thermal reaction rates are an order of magnitude larger than expected. The output is a heating rate of ~1.26e-11J/source, achieving a source rate of 2.906e+19.
Below is a snippet of my OpenMC code:
source = openmc.IndependentSource()
source.space = openmc.stats.Box(
\[-RH_pressureVesselRadius, -RH_pressureVesselRadius, RH_pressureVesselBottomBoundary\], \[ RH_pressureVesselRadius, RH_pressureVesselRadius, 0.0\])
# Correct way to restrict to fissionable sites
source.constraints = {
“fissionable”: True
}
settings.source = source
settings.particles = 100000
settings.generations_per_batch = 5
settings.batches = 100
settings.inactive = 20
settings.export_to_xml(“/rds/general/user/jm2022/home/OpenMC_Files/xml_files/”)
tallies = openmc.Tallies()
FE_fuelThermalTallyi = []
FE_fuelFastTallyi = []
for i in range(0, 60):
FE_fuelThermalTallyi.append(openmc.Tally(tally_id=(2*i)+1))
FE_fuelThermalTallyi[i].filters = [openmc.EnergyFilter([0,0.625]), openmc.UniverseFilter(301+i)]
FE_fuelThermalTallyi[i].scores = [‘absorption’, ‘fission’]
tallies.append(FE_fuelThermalTallyi[i])
FE_fuelFastTallyi.append(openmc.Tally(tally_id=(2*i)+2))
FE_fuelFastTallyi[i].filters = [openmc.EnergyFilter([0.625,19.6403e6]), openmc.UniverseFilter(301+i)]
FE_fuelFastTallyi[i].scores = [‘absorption’, ‘fission’]
tallies.append(FE_fuelFastTallyi[i])
heatingTally = openmc.Tally(tally_id=999)
heatingTally.scores = [‘heating’]
tallies.append(heatingTally)
as well as the post processing:
file_name = ‘statepoint.100.h5’
sp = openmc.StatePoint(file_name)
thermal_abs = []
for i in range(120):
tally = sp.get_tally(id=i+1)
if (i + 1) % 2 == 0:
fast_abs.append(tally.mean.ravel()\[0\]) fast_fiss.append(tally.mean.ravel()\[1\])else:
thermal_abs.append(tally.mean.ravel()[0])
thermal_fiss.append(tally.mean.ravel()\[1\])thermal_absorption_avg = [sum(thermal_abs[i*6:(i+1)*6])/6 for i in range(10)]
print(“Thermal absorption average:”, str(thermal_absorption_avg))
reactor_power = 367.0e6
j_per_eV = 1.60218e-19
heating_tally = sp.get_tally(id=999)
print(“Heating tally mean [eV/particle]:”, str(heating_tally.mean.ravel()[0]))
heating_rate = heating_tally.mean.ravel()[0] * j_per_eV
source_rate = reactor_power / heating_rate
print(“Source rate [particles/s]:” + str(source_rate))
print(“Heating rate [J/particle]:” + str(heating_rate))
thermal_absorption_norm = [value * source_rate for value in thermal_absorption_avg]
Any advice/guidance on the topic would be greatly appreciated, as I have been struggling for a while.
Best regards,
Joe