Hi Jaakko,

We have been experimenting with generation of homogenized cross sections for various reactor types.

One of the problems we encountered was that sometimes the energy group structure is not well suited for the spectrum of the reactor being modeled.

e.g. ECCO, a fast reactor lattice code in ERANOS, has 10 or so thermal energy groups.

If you use ECCO group structure in Serpent to model fast reactor, you will naturally get very poor statistics with unrealistic means and large errors for homogenized parameters.

The problem is that we then use these means in full core diffusion calculations and get results that can be quite bit off.

A short term solution to this could be adjusting the energy group structure to correspond to the problem's spectrum.

Such that the homogenized parameters errors are more or less the same for every group.

I am proposing potentially more useful and flexible solution which should not be too difficult to implement.

Recently, you have already introduced the source biasing in spatial domain (UFS) to force uniform distribution of errors in space.

How about using similar approach in energy domain so that the events (statistics) also get evenly distributed among energy groups.

The source energy distribution is of course fixed so biasing it would not necessarily help.

But perhaps there are other variance reduction techniques (weight window for each group?) that can be easily automated to solve this problem.

I wonder what you and other participants in this forum think about the idea.

Cheers!

Eugene

## Variance reduction in energy domain

- Jaakko Leppänen
- Site Admin
**Posts:**2356**Joined:**Thu Mar 18, 2010 10:43 pm**Security question 2:**0**Location:**Espoo, Finland-
**Contact:**

### Re: Variance reduction in energy domain

We had some discussion about this issue at the last Serpent User Group Meeting (see summary and notes). The problem with any method based on history splitting is that it takes a very large number of collisions to get to thermal energies, and the survival probability becomes extremely small.

I tried to estimate the fraction of thermal neutrons in a fast system, and the problem turned out to be even more difficult than I thought. I first ran an ordinary criticality source simulation for an infinte SFR assembly lattice, and got zero scores in the thermal region. Switching on implicit capture improved the results below about 1 keV, but there was still practically zero scores below 10 eV. The neutrons are simply too likely to be removed by fission.

The next thing I tried was to generate a fission source by running a criticality source simulation, and then a second external source simulation with that source and fission switched off. It turned out that I had to set the weight thershold of Russian roulette to 1E-50 before getting neutrons in the thermal region. I got the following result for neutron population as function of energy:

Looking at the scaling of this plot, it seems to me practically impossible to get neutrons in the thermal region by splitting histories in a criticality source simulation. One option would be to divide the calculation in two parts like I did, but that's not a very practical approach for group constant generation. Do you think you could get the calculation going by using some dummy values in the thermal groups? If the neutron spectrum looks like this, it shouldn't make any difference for the results. Naturally it changes everything if the thermal flux in your system is non-negligible.

I tried to estimate the fraction of thermal neutrons in a fast system, and the problem turned out to be even more difficult than I thought. I first ran an ordinary criticality source simulation for an infinte SFR assembly lattice, and got zero scores in the thermal region. Switching on implicit capture improved the results below about 1 keV, but there was still practically zero scores below 10 eV. The neutrons are simply too likely to be removed by fission.

The next thing I tried was to generate a fission source by running a criticality source simulation, and then a second external source simulation with that source and fission switched off. It turned out that I had to set the weight thershold of Russian roulette to 1E-50 before getting neutrons in the thermal region. I got the following result for neutron population as function of energy:

Looking at the scaling of this plot, it seems to me practically impossible to get neutrons in the thermal region by splitting histories in a criticality source simulation. One option would be to divide the calculation in two parts like I did, but that's not a very practical approach for group constant generation. Do you think you could get the calculation going by using some dummy values in the thermal groups? If the neutron spectrum looks like this, it shouldn't make any difference for the results. Naturally it changes everything if the thermal flux in your system is non-negligible.

- Jaakko

### Re: Variance reduction in energy domain

Jaakko, thanks for the reply.

I unfortunately missed the meeting in Madrid but I am glad this issue was brought up.

From your results, it does seem like a dead end.

In fast reactor case, using arbitrary dummy numbers in groups with literally zero fluxes will probably work.

In other cases however, such as our recent experience with high conversion axially heterogeneous BWRs,

poor (but not zero) statistics in some groups can lead to wrong results in nodal codes or even lack of numerical convergence altogether.

Can you try the same exercise on a case with "not as hard" spectrum as in SFR? (I can send you an RBWR input example if you don't have it handy)

As I mentioned before, another alternative could be to use the energy group structure which is specific to every problem and chosen such that the variances in every group are the same.

Theoretically, if you keep the record of every collision event, you can choose the groups such that you will have the same number of collisions in every group and calculate your tallies after the run is finished, but this is probably unfeasible.

Or perhaps using fine group structure and collapsing them down to a desired number based on the same principle of uniform variances could be more practical?

We can of course do it manually (as we do now) but it would be nice to have it automated.

Any thoughts?

Eugene

I unfortunately missed the meeting in Madrid but I am glad this issue was brought up.

From your results, it does seem like a dead end.

In fast reactor case, using arbitrary dummy numbers in groups with literally zero fluxes will probably work.

In other cases however, such as our recent experience with high conversion axially heterogeneous BWRs,

poor (but not zero) statistics in some groups can lead to wrong results in nodal codes or even lack of numerical convergence altogether.

Can you try the same exercise on a case with "not as hard" spectrum as in SFR? (I can send you an RBWR input example if you don't have it handy)

As I mentioned before, another alternative could be to use the energy group structure which is specific to every problem and chosen such that the variances in every group are the same.

Theoretically, if you keep the record of every collision event, you can choose the groups such that you will have the same number of collisions in every group and calculate your tallies after the run is finished, but this is probably unfeasible.

Or perhaps using fine group structure and collapsing them down to a desired number based on the same principle of uniform variances could be more practical?

We can of course do it manually (as we do now) but it would be nice to have it automated.

Any thoughts?

Eugene

- Jaakko Leppänen
- Site Admin
**Posts:**2356**Joined:**Thu Mar 18, 2010 10:43 pm**Security question 2:**0**Location:**Espoo, Finland-
**Contact:**

### Re: Variance reduction in energy domain

The situation is probably completely different if you have any moderation at all, and energy-based weight windows could be a good way to improve the results. Could you send me the RBWR input file by e-mail and I'll take a look?

For the optimization of the group structure, it's probably better to run some test calculations for diagnostics (flux spectrum, collision spectrum, etc. can be easily calculated using detectors), and decide on the group boundaries based on the results. The problem is probably not so much the cross sections, but the scattering matrices, which are calculated based on sampled scattering events.

For the optimization of the group structure, it's probably better to run some test calculations for diagnostics (flux spectrum, collision spectrum, etc. can be easily calculated using detectors), and decide on the group boundaries based on the results. The problem is probably not so much the cross sections, but the scattering matrices, which are calculated based on sampled scattering events.

- Jaakko