What kind of variation in my results is to be expected?

Hi all, I’m running code to calculate the dose on a phantom from a shielded neutron source. When the dose is high, my results are fine, but when I improve the shield and the dose drops, my results are varying between runs. For the same setup, I’m getting readings anywhere between 5000 and 1000mSv.

I’m just wondering if this variation is to be expected and if there’s anything I can do to improve it? I’m currently using:
my_settings = openmc.Settings()
my_settings.output = {“tallies”: False}
my_settings.batches = 50
my_settings.inactive = 0
my_settings.particles = 500000
my_settings.run_mode = “fixed source”

my source is a 14MeV neutrons source producing 1e13 n/s in all directions, shielded by a 70cm multilayer shield. I can link my code if needed.

I’m a new user so sorry if this is obvious but I’ve searched around and haven’t seen a clear answer.

It sounds to me like not many particles are reaching the phantom, which means your tally results will have high variance (you can confirm this by looking at the uncertainty on the tally result). The simplest solution is to run more neutrons by either increasing the number of particles per batch or the number of batches.

Ideally you’d want to use a variance reduction technique such as weight windows which would help neutrons penetrate the shield and result in more contributions to the tally. Right now, we have weight windows implemented in OpenMC but you need to generate them first, which is not very straightforward at the moment. Our next version of OpenMC should have automated weight-window generation.