Decay Chains simulation and dose calculations

Hi there,

I am new to openmc and I am wondering if you can simulate the decay of an isotope with time in openmc, I am looking for gamma decay specifically, I also want to calculate the dose at a certain cell in the model using photon transport, the way I thought of doing so is to get the total heating score of the simulation in that cell and divide that by the mass of the material in that cell to get the dose in Sv, will that be accurate ?

Many Thanks,

1 Like

Right now we don’t have the ability to simulate the natural decay of isotopes to get a gamma source, although this is something that @pshriwise and I have an interest in developing eventually. At present, if you wanted to do such a calculation, you would have to manually define a photon source that is equivalent to what the decay of the isotope would give you.

For tallying dose, there openmc.data.dose_coefficients function provides effective dose conversion coefficients from ICRP-116. You can use this in conjunction with an EnergyFunctionFilter as follows:

energy, dose = openmc.data.dose_coefficients('photon', 'AP')
dose_filter = openmc.EnergyFunctionFilter(energy, dose)
tally = openmc.Tally()
tally.filters = [dose_filter]
tally.scores = ['flux']

Note that “AP” is one of six irradiation geometries; refer to ICRP-116 for other options

2 Likes

Thank you Paul,

I’ve run the simulation and it’s given me the value of the flux, I want to ask what is the unit of this flux is it eV/cm2*s because I didn’t understand this unit ( particle-cm per source particle) in the documentation ?

Please see the user’s guide section on normalization of tally results.

Thank you Paul,

I want to ask how can I extract the value of the dose from the tally?

This tally will have only a single value. A quick, dirty way is to look at the tallies.out file. If you want to programmatic extract it, the following would work (assuming you only have a single tally):

with openmc.StatePoint(statepoint_filename) as sp:
    t = sp.get_tally()
    dose_value = t.mean.ravel()[0]

For more on post-processing tallies, check out this example notebook.

Hi all,
I am a little confused about these units. After the flux value is found in particles/second, can we calculate the dose value in microsievert/hour in this program?
Thank you

@A66 This was described in a previous post: