Tally Normalisation with Power

Hello Community,

I am currently simulating a reactor operating at a known power of 367MW. I am interested in normalizing the tallies for fission and absorption rates that I’m obtaining from the simulation. I have referred to the User’s Guide, specifically Section 8.3 - Normalisation of Tallies, but found it to be less helpful than I hoped.

In Serpent, an environment I am familiar with, the process is relatively straightforward. I input the power using the ‘set power’ function, and it calculates the necessary values, including a volume calculation.

I would greatly appreciate guidance on how to normalize my OpenMC tally values to the operating power and how to integrate this into my existing code. Below is a snippet of my code, illustrating the settings set-up and running the simulation.

Any help or insights you can provide will be highly valuable. Thank you in advance.

Best regards,

Jimmy

import os
import numpy as np
from math import pi, sin, cos
import matplotlib.pyplot as plt
import openmc

# Materials definitions

...

##############################################################################################################
##############################################################################################################
##############################################################################################################

# Geometry Definitions

...

############################################################################################################
############################################################################################################
############################################################################################################

# OpenMC simulation parameters

print(openmc.config)
print(openmc.__version__)

# source = openmc.IndependentSource()
# source.space = openmc.stats.Point(xyz=(0.0, 0.0, RH_coreBottomBoundary/2))

settings = openmc.Settings()
settings.run_mode = 'eigenvalue'

source = openmc.IndependentSource()
source.space = openmc.stats.Box([-RH_pressureVesselRadius, -RH_pressureVesselRadius, RH_pressureVesselBottomBoundary],[RH_pressureVesselRadius, RH_pressureVesselRadius, 0.0], only_fissionable=True)

settings.source = source
settings.particles = 50
settings.generations_per_batch = 20
settings.batches = 40
settings.inactive = 20
settings.export_to_xml('./xmlFiles/')

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])

tallies.export_to_xml('./xmlFiles/')

openmc.run(path_input='./xmlFiles/')

with openmc.StatePoint('statepoint.{}.h5'.format(settings.batches)) as sp:
    keff = sp.keff
    k_generation = sp.k_generation

    with open('./txtFiles/keff{}.txt'.format(int(CD_drumAngularPos)), 'w') as f:
        f.write("{}\n".format(keff))

    with open('./txtFiles/k_generation{}.txt'.format(int(CD_drumAngularPos)), 'w') as f:
        for value in k_generation:
            f.write("{}\n".format(value))```

Apologies, has any one been able to review this yet?

Hi @jimmyvdw. I actually put together an example of tally power normalization that should soon be added to our list of example Jupyter notebooks. For now, you can take a look at it here.