How to simulate reactor shielding in OpenMC?

So I have a geometry model of a core + shielding. A kcode runs fine on it.
I want to quantify how much makes it through the shielding. Specifically, what the absorbed dose rate of neutrons and gammas would be in a specific material right out side the shielding. (So total energy deposited divided by density*volume of the material.)

I’ll need variance reduction. Both for the neutrons and for the gammas, and since different sections of the shield will absorb neutrons and gammas respectively, neutrons and gammas need separate weight windows.

How can this be done in in OpenMC?

  1. How do I define an absorbed dose tally?

  2. How do I model all gammas produced by fission and n-gamma reactions?

  3. How do I create weight windows for neutrons and gammas respectively?

  4. How do I save the neutron and photon source from the kcode, so I don’t have to bother with kcode calculations during the weigh window generation?

  5. Or should I use a different approach?

Sorry if these are n00b questions.

Cheers, Kaspar

Hi Kaspar Welcome to the community.

I have a few examples for question 1 (How do I define an absorbed dose tally?) here

Hi, and thanks for the answer.

As far as I can see, the examples you linked are all calculating effective dose, not absorbed dose.

The effective dose calculations implicitly assume human tissue by using the ICRP conversion table.

Ah sorry

For absorbed dose would that just be a tally with score="heating" ?

The heating tally gives units in eV, so that could be converted to convert to Joules and then divided by the mass of the object to get Gy units.

OK. And have I understood it right that get the actual power deposition from such a tally in W, I should multiply it with the actual reactor power divided by the output of a tally defined thus:

particle_filter = openmc.ParticleFilter(bins=['neutron', 'photon'])
tal_normalization = openmc.Tally()
tal_normalization.filters = [openmc.UniverseFilter([geometry.root_universe]), particle_filter]
tal_normalization.scores = ['heating']

Because it seems needlessly convoluted.

For a neutron problem, do the following:

settings = openmc.Settings()
settings.photon_transport = True

Unfortunately weight window generation capabilities are not yet in the code, although it is actively being worked on. If you have existing WWs from a wwinp file (for MCNP), you can convert them with the openmc.wwinp_to_wws function.