Question about power designation while depleting


When you assign some power while depleting, how is that taken by the code? Is it assigned to the whole domain, or only to the cells that contain depletable material? I believe the way this is carried out by OpenMC has an effect, for example, if you would like to assess energy deposition along the whole domain of study by means of the different reactions and KERMA factors (as opposite to just to take into account a local Q-value).

So for instance, if I want to deplete several materials (let’s say) in an assembly, the customary way will be to give the average assembly power (that is the most common info you can get from an engineering point of view). Would it be then ok to assign such assembly power into the power card of my input deck?



Hi Augusto,

OpenMC has two means of normalizing reaction rates to the user supplied power:

  1. deplete.Operator(…, energy_mode=“fission-q”) – In this mode, reaction rates are normalized by looking at the ratio of the user-supplied power to the total energy from fissionable materials, based on the Q values supplied in the depletion chain. Note that you can also specify your own Q values with, for example, Operator(…, fission_q={‘U235’: 200.0e6, ‘U238’: 202.0e6, …}) which can be very useful for comparing against other codes that use fixed values.
  2. deplete.Operator(…, energy_mode=“energy-deposition”) – In this mode, reaction rates are normalized by the ratio of the user-supplied power to the total energy deposited in all materials based on KERMA factors.
    To answer your question about depleting several materials in an assembly, yes, you would give the total power expected in the assembly.


1 Like


So I ran this neutron-photon coupling calculation during a depletion calculation. I am tallying with the card energy_mode=“energy-deposition”, and I get a tallies.out file like this one:

Material 1
Particle: neutron
Total Material
Flux 13.9520 +/- 0.00166268
Fission Rate 0.320254 +/- 6.91290e-05
Nu-Fission Rate 0.887214 +/- 0.00019191
heating-local 6.51791e+07 +/- 13585.7
heating 5.78842e+07 +/- 12480.8

(I get one of those as well for photon, electron and positron).

I read the openmc_simulation_n*.h5 files for each depletion step, and so I processed the heating and heating-local cards (which they are in eV/source-term). Now, I am depleting at constant power a 2D fuel pin (fuel, cladding and coolant) assuming full reflective conditions. Such power is the power of the whole domain, and I would expect that the sum of the different heating components of the tallies at each burnup step would give exactly the power at which I am burning. So I set the power to be 17373 [W]. In order to get the real energy from the tallied heating and heating-local components of the particles for each material of the pin, I am first computing the following normalization factor (at each depletion step):

A = ((TOT_POWER_DOMAIN) * Nu-FissionRate)/(Keff * sum(heating from all particles and materials))

Therefore, if I want to get for instance the true power in Watts of each material and for a certain particle, I just do the following, e.g.: fuel_neutron = (heating_neutron)*A/6.242e18

So my idea is to get the energy deposited in each material and for neutrons and photons. Thus, at every burnup step the sum of all the materials power (both by neutrons and photons) should give the original 17373 [W] power of the domain (since I am depleting at constant power). Now, it seems I get very close values but not exactly the 17373 Watts. Moreover, I tend to oscillate such total power estimation as a function of burnup around the constant power value of the domain (see my attached figure).

I also realized that what is actually consistent is the heating and heating-local values. So for the heating-local ones, there are only values related to neutron energy deposition. The total addition in power coming either from a normalization performed by heating or heating-local is the same. Is just that is strange for me that the sum does not corresponds exactly to the original power of the domain. To give you an example, I did this benchmark with SERPENT2 and there you always conserve the addition of the different materials and particles energies to the original value of the domain. My OpenMC version corresponds to a compilation I did in mid-July this year (when there was a fixed-issue for depleting with neutron-photon coupling). Could you take a look at this?

Many thanks!!

@augusto_vib I’m not sure if I understand your normalization factor there, but let me explain how the normalization is done for depletion and perhaps that will help. The heating-local score is specifically intended for a neutron-only calculation because it assumes that the energy of photons produced from neutron reactions is deposited locally. It gives us a way of better estimating the power distribution when photons are not being transported explicitly. However, for a coupled neutron–photon calculation, you should be using the heating score, which assumes photons carry away their energy. This energy may be eventually deposited from the photon reactions themselves, but it may also be redistributed to other locations in a geometry or it may leak out of the problem.

When you use energy_mode="energy-deposition", OpenMC will create a tally with the heating score for coupled neutron–photon or the heating-local score if photon transport is not on. Thus, if you want to get an absolute heating in Watts for a specific material, use either heating or heating-local accordingly and then just scale it based on the ratio of that to the total value for the whole problem.

Thanks for your reply Paul.

Yea, I got that heating will give you energy related to all possible particles, while heating-local will carry the addition of the photon side in the neutron component.

The normalization factor I described before corresponded to the one giving, in the end, source/s. If I define it like this: A = (Powernu-bar)/(KeffEnergy/fission), this gives us source/second.

In the end, if I tally NuFissions, in order to get the nu-bar of the system I would need to divide it by the number of fission reactions. The same I would need to do to obtain the energy of the domain per fission reaction; I would need to add up all the heating tallies of the materials and different particles and have the result divided by the number of fissions. So by describing my previous normalization factor: A = (PowerNuFissions)/(KeffTotalHeating) is equivalent to say: A = (PowerNuFissions/Fissions)/(KeffTotalHeating/Fissions). Like this, it is possible to obtain a normalization factor (based on the total power of the system at which depletion takes place) that is source/s and, moreover, that would give us in the end the proper level for the flux, RR’s, etc.

I think that the heating tally is in eV/source. So if I scale it with the aforementioned normalization factor, I would expect to get power (eV/s). Then, with the proper conversion factor I can get Joules/s or Watts. I also think that if I have the proper normalization of the system, the power I obtained from the different heating tallies should add up exactly to the power of the system at every burnup step. I mean, as you can see from the graph is very close.

I can also mention that by using that normalization factor I also benchmarked the fluxes vs. SERPENT2 and those were really close; in fact, I also benchmarked the energy deposition in Watts vs. SERPENT2 for the different materials and different components (i.e. neutrons and photons) and is also really close. Is just that I wanted to show that well, the sum is not exactly giving the power of the system. Of course I can always re-scale and re-normalize this different power components to the original power of the domain. So this is just a comment, hoping this time I am a bit more clear on the message.

Ahhh I finally got it…sorry for being so dumb… once you actually know the total produced heat per source by the code, the normalization factor is really straightforward… sorry for all my previous novel about getting a normalization factor based on Keff and energy per fission event… now, by looking at documentation ‘8.3 Normalization of tally results’ and just getting a factor f=P/H’ I managed to add up to the total power of the domain P when I sum the different particle deposited energy from each material. Thanks for trying to tell me this before Paul; didn’t get it then.