Recommendations on the variance reduction (RIB) technique for neutron deep penetration problem

Dear FLUKA experts and users,

In my current modeling of a cyclotron bunker I need to estimate dose rate distribution outside the shielding walls of the bunker. Particularly, I am interested in the dose rate behind the wall shown on the image below (the right-side wall).

It’s made out of concrete with density 2.35 g/cm^3 and has thickness of 214.5 cm. The primary source is neutrons emitted from a point and slightly biassed towards the direction of the wall (almost perpendicularly to it, predominantly into the forward hemisphere since the parabolic-like angular \theta distribution has a subtle skewness) with an external-sampled spectra-based energy and angle distributions. Trying to propagate neutron radiation field outside that wall I applied region importance biassing technique in several option (I did several attempts to achieve an error less than 10% outside the wall):

  1. [16 slices with the importance base of 2] For the first time I sliced the wall into 16 regions applying importance coefficients such 2^{i_{reg}}, where i_{reg} = 1..16. The region’s after the last slice (outside the wall) – ROI4 importance was set to 2^{16} as well as for the last slice. Giving all other regions (including the inner air AIRINNE region) their default importance values of 1 = 2^{0} I got a sequence of importance values: air_inside \rightarrow 2^{0}, wall_slice1 \rightarrow 2^{1}, …, wall_slice16 \rightarrow 2^{16}, region_of_interest \rightarrow 2^{16};
    It does not give the desired results since the neutron fluence drops down before particles reach the last slice and the ROI after it. The dose errors suddenly increases in the last couple of bins within the wall region.

  2. [36 slices with importance base of ~1.46] In the second attempt I sliced the wall into 36 regions setting the importances from 1.465^{-6} for the 1st slice to 1.465^{29} for the last slice and the ROI next. The result is similar to the 1st case.

  3. [36 slices with importance base of ~1.64]. Than I decided to change the importance ratio (\frac{I_{i+1}}{I_{i}}) to 1.6495. Now I have 1.6495^{-12} for the 1st slice and 1.6495^{23} for the last slice and ROI next. It also does not work – an error occurs since approx. 20 minutes of running. The .err files didn’t show any particle generation progress.

  4. [16 slices with importance base of 3] The default importance value set to all regions except the sliced wall’s regions is 3^{-7}. The slices’ importances start with 3^{-6} up to 3^{9} for the last slice (outermost) and 3^{10} for the ROI4. This version does not work also – running process takes “eternity”, doesn’t finish and gives no result (the .err file ratio3_errors.err attached).

The BLKBODY region importance defined to be 0 in all these cases described above.

As it’s mentioned in the first two cases the extreme increasing in the estimated variable (dose) uncertainties. On the screenshot below you could find the errors value in the two adjacent bins. I tried to increase the bins dimentions and make this binning grid more coarse to accumulate more particles in a bin, but it didn’t help as well.

Trying to investigate the possible reason of that I scored fluence distribution and it looks like the neutrons merely don’t reach the region of interest which suggest the biassing scheme to be unsuitable to that kind of simulation or set in a wrong way (?)
I also concerned about the split parameter described in the info boxed on the screenshots is 0, is it okay?

Generally, I ran 100 runs (each run contains 5-10 cycles), 500,000 neutrons per one cycle. And I also tried to use automatic importance biassing selecting the ROI4 region as the region of interest, but it gave uncertainties about 90% for 10 runs, 5 cycles for each run and 500,000 primary particles per a cycle.

Therefore, I would ask about any suggestions and/or recommendations on a proper variance reduction technique which could help to achieve errors less than 10\% What would be the optimal approach to implement that technique/techniques for this model? Probably the chosen RIB approach is not effective enough in this case or I’ve been using it in a wrong way? I would be extremely grateful for any hints and recommendations.

Cheers,
Ihor

sim.zip (143.7 KB)

FLUKA: 4-5.2
Operating system: Ubuntu 24.04 LTS

Hi Ihor,

you are mostly on the right track, and the importance ladder with ratio 3 was the closest to being correct. The issue is that you are biasing all particles, and electromagnetic radiation is flooding your CPU time.

To fix it, add this card to your biasing scheme:

*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
BIASING           -1         0  ELECTRON    PHOTON         1                    

that is, biasing to all regions, with modifier of 0, for EM particles, which will ensure that the importance of EM radiation (electron/positron/(neutrinos)/photons) is not biased. The M=0 factor is understood from note 3 on the manual page for the biasing.

When applying this, the simulation will massively speed up, and your neutron scoring should converge much faster.

Let me know if this works for you as well!

Stefano

Dear Stefano,

Many thanks for this hint!

I will be able to start running a new modified version only on Sunday, so I will get back with the results in the middle of the next week.

Thank you again!

Cheers,
Ihor

Dear @smarin,

Thank you again for you previous hint!

I’m back with the intermediate results. I disabled biassing for the EM radiation adding the above-mentioned BIASING card (at the end of the biassing section) as you suggested and have started to run the updated input files about a day (~24 hours) ago. Also, I slightly increased the bin widths in the USRBIN card hoping it could speed the calculations up. However, it seems like at this moment it’s been processing only 20k neutrons out of 500k I set in the START card. So, 20k neutrons per 24 hours is definitely not what I expected to get, since the previous version with the importance base of 2 takes about a day for such number of primaries (500k neutrons). There’s a lot of Emsnsc, PWNINE, and Too many failed attemps to perform (n,...) errors and warnings in the .err file. I’m attaching the updated input file and also the corresponding .err file (not finished yet, but it contains the errors and number of primaries left). Could you, please, suggest other possible reasons that might lead to so slow running? Is the any other way to increase the performance of the simulation?

Cheers,
Ihor

bias_16-slices_3-ratio.inp (19.4 KB)
errors.err (40.4 KB)

Hi Ihor,

A few things:

  • you can ignore the .err results, it appears to be just internal logs from the neutronics, nothing caused by you.
  • the main cause of what you are seeing is that you are overbiasing neutrons penetrating through the chicane wall, rather than just streaming along the “maze”. So my reccomendation is:
    a) keep the importance ladder in RW. There is no other legitimate way in which neutrons can reach ROI4
    b) don’t bias the U1W and U2W walls, neutrons are much more likely to bounce around and inside the room than penetrate those walls. Tracking these neutrons is killing your CPU
    c) Instead, split the air in the tunnel into zones, and bias them.

The next two figure show the current importance biasing and what I am recommending. Of course, depending on what you need, you may also segment the neutron streaming through the chican even more.


Already with this scheme, I get a massive speedup in the simulation + I see neutron fluences in ROI4 and all the way to the region neighboring ROI1, simply running for 5 minutes (80’000 primaries)

With the increased computation time + increased ladders, you should be able to populate all your ROIs.

Also, I highly recommend switching on the PRINT with a card like this:

*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
BIASING            0          4.57247E-4   BLKBODY  @LASTREG          PRINT  

which you can inspect after a short run to see that none of the regions have an exploding number of primaries present. You can check that the number of particles undergoing splitting is approximately uniform (within reason, an order of magnitude is ok, just make sure it does not explode in any one region).

Hope this helps out, and you can get the results you want. Unfortunately this type of biasing studies take a long time upstream, but once you are happy they can save you a lot of time.

Stefano

p.s. I attach a figure I generate from running your input for 300 s in 3 configurations:

  • base (as you sent me)
  • fast (simply turning off biasing in the chicane walls)
  • combined (biasing the maze throughout the chicane, to guide the neutrons)