CambridgeNuclear / SCONE

Stochastic Calculator Of Neutron transport Equation
https://scone.readthedocs.io
Other
34 stars 20 forks source link

Burn-up #124

Open ChasingNeutrons opened 5 months ago

ChasingNeutrons commented 5 months ago

This has been too long - an issue seems a good way to maybe make some movement.

We should add burn-up. A few bits of this should be straightforward to add in small pieces, a few will take more effort and could maybe benefit from some discussion.

The easy parts:

  1. Add a CRAM solver and tests. Ideally this should be relatively quick for a large matrix size (~3000). Although not immediately important, it would be ideal if it was a sparse solver. We would also prefer not to have any additional dependencies as a result.
  2. Microscopic reaction rate tallies. We already have a microscopic XS tally, but is this one optimal? It requires creating a new material - can this be simplified for depletion, e.g., under the assumption that the XS data has been independently created?
  3. Additionally, it would be ideal to have the choice to use a fine-group flux tally and condense down to one group afterwards. The tally itself already exists - I think I need to do some reading to understand how to conveniently do that condensation.
  4. Power tally - I think we already have this, albeit in quite an approximate form.
  5. Fission yield tally. This one is slightly more complicated because we need to have access to fission yield data, but the mechanics should otherwise be straightforward.
  6. Tally flushing/resetting. This would be necessary for enforcing xenon equilibrium.

The hard parts:

  1. Reading/processing data. I think we already discussed that it would be ideal to have an external script to do all of the data processing from the fission yield and decay data files. I suppose this would ideally have an input of the (hopefully customisable) chains we would like to include and an output of straightforwardly SCONE-readable decay constants and energy-dependent fission yields. On chains, we might want to allow the option of a lumped fission product?
  2. Expanding nuclear data to hold this information. This is the most daunting bit for me anyway, I don't have a good view as to how this should look or where it should sit.
  3. Creating a new physics package. I think this is probably the optimal way to handle burnup. Annoying because it will duplicate a significant chunk of the eigenvalue package, but it would also add quite a lot to the package otherwise (time-stepping algorithms, calling tally processing, enforcing xenon equilibrium). Perhaps there are other ways to do this that are neater?

These are just the thing I can think of at the moment. I can edit this to include other things as we suggest. This can hopefully give a bit of direction and help us make a start.