luca-fiorito-11/sandy

Do Doppler broadening before perturbation

Closed this issue · 2 comments

The current default sampling procedure for cross sections read from ENDF files in Sandy can be summerized (according to my understanding, please correct if I misunderstood) as:

  1. Read the ENDF file using the read_formatted_file(file, listmat=None, listmf=None, listmt=None) function
  2. A PENDF with linearized cross sections is constructed and merged with the endf6 file
  3. Samples are extracted from the covariance matrix in the same grid as the covariance matrix
  4. An union energy grid is constructed based on the energy grids of the linearized cross sections and the samples is constructed
  5. The cross section is interpolated to the new grid
  6. The perturbations are "interpolated" to the new grid by filling empty values with ones (P.reindex(P.index.union(frame[mat,mt].index)).ffill().fillna(1).reindex(frame[mat,mt].index))
  7. Perturbations are capped to (0,2)
  8. Perturbations are multiplied with the cross section
  9. The tape is updated and dumped to a file
  10. (optional) a NJOY sequence is run to produce ace files

I have written out this procedure because I would like you to correct me if I misunderstood something.
The issue is that to use the cross sections, doppler broadening happens after the perturbations. This happens when using the default Sandy procedure or a custom processing procedure. The perturbations are seen as "small resonances" and get flattened by doppler broadening. I have attached two graphs of the results of sampling procedures where the MT18 cross section for U235 was perturbed by 30% in the WIMS group structure. The graphs show perturbations of the first two groups starting from the lowest energies by 30% (to better see the effects). According to my results, the perturbation of the thermal group flattens the perturbation, leading to possible underestimation of the perturbation effect. The same graph shows what happens when the sampling procedure is modified so the doppler broadening happens before the perturbation and other processing steps (reconstruction of resonances, unresolved resonances, ..) take place after. Using the modified procedure, the perturbation remains intact.

I am currently working on a patch that would implement this modified procedure in Sandy.
group0
group1

Hi @janmalec , I'll try and have a look at it today or tomorrow.
In the meantime, be aware that we moved development to branch v1.0, targeting a release strategy based on tags and not on branches.
The next milestone (release 1.0) already includes something similar, and some algorithms should be already available in the branch (or in a PR).

I'll try and send you something so you can give us your feedback.
Any contribution from you is highly appreciated, but I'd like to merge on the strategy (and avoid parallel non-consistent development).
I'll send you a meeting request.

Luca

Thank you! Send me an invite over Teams, have time almost any time this week except Wednesday.