openmc icon indicating copy to clipboard operation
openmc copied to clipboard

Missing MG particle speed getter and delayed fission neutron emission

Open ilhamv opened this issue 1 year ago • 4 comments
trafficstars

Bug Description

  • Particle.speed() has not been implemented for MG mode.
  • Delayed neutrons are emitted at t = 0 and promptly in MG and CE modes, respectively.

Steps to Reproduce

These bugs particularly affect simulations with TimeFilter tallies in fissionable systems running sufficiently long in the order of delayed neutron precursor mean decay times.

Attempt to Fix the Bug

I attempted to fix them here and ran verification tests of neutron pulse simulations:

MG test

Here is the result of a pulsed infinite homogeneous 361-group problem, where the MGXS is generated from the pincell example:

shem361

The "analytical" reference solution is also shown for verification. The simulation was run in 10 batches with 100k particles per batch.

CE test

Here is the result of the jezebel example pulsed with 2 MeV isotropic point source at the origin:

jez_n

The simulation was run in 10 batches with 100k particles per batch.

Estimates of neutron inverse period, or time constant $\alpha$, can be naively calculated from two consecutive data points:

jez_alpha

Experimental value for the prompt neutron time constant ($\alpha_p$ = -640 +- 10 /ms) is also shown above for verification.

Note: In running this Jezebel problem, I had to increase the secondary bank size limit from the default value 10k to 100k.

ilhamv avatar Feb 29 '24 20:02 ilhamv

Whoa, very cool! Do you want to fix this, or were you hoping that someone else would? I may take this one on, as I do hope to have Sjenitzer's method implemented in OpenMC some day (which is a bit different from the type of transient methods you all run!)

gridley avatar Mar 07 '24 16:03 gridley

@gridley I would be happy to take this on! Should I make a PR for it?

Sjenitzer's "Dynamic MC" can be seen as an orchestra of several methods, and those methods can be implemented piece by piece, each with its own parameters (e.g., different time grids for population combing, forced precursor decay, nonlinear feedbacks, etc.). This gives users flexibility on choosing which methods to turn on and how they are set up, so that they can achieve optimum customized run (which can be very problem dependent).

One low hanging fruit, but is particularly useful for a range of problems, I think, is the forced precursor decay. Users would just need to set a time mesh for the method and then some additional work would be done in the creation of the fission sites.

ilhamv avatar Mar 07 '24 18:03 ilhamv

Please do, I think it won't be a lot of code to fix.

As for forced decay: my current thinking was that we need a mechanism for time boundaries first. So we'd stop all the histories at that boundary, then yield back to let modifications be made to material densities, etc. I guess we should discuss this on another GH issue though!

gridley avatar Mar 07 '24 18:03 gridley

I did open #2897 to discuss further.

gridley avatar Mar 07 '24 18:03 gridley