To describe the sampling methodology implemented in SANDY we introduce some assumptions with the purpose of simplifying the explanation. Let us assume that a given ENDF-6 file contains only one covariance matrix \Sigma that:
- is defined over M energy groups;
- is in relative units;
- is representative for a continuous energy data type, say, cross section.
No loss of generality follows by imposing this assumptions as it happens that they apply to almost all the covariances allowed by the ENDF-6 format.
SANDY parses the ENDF-6 file, it extracts the covariance matrix and constructs a multivariate Normal distribution N(0,\Sigma). To sample from a multivariate Normal distribution, first we must draw a matrix X of m independent and identically N(0,1) distributed variables x=[x_1, x_2, \dots, x_m].
X=\begin{bmatrix} x_1^{(1)} & x_1^{(2)} & ... & x_1^{(n)} \\ x_2^{(1)} & x_2^{(2)} & ... & x_2^{(n)} \\ \vdots & \vdots & \ddots & \vdots \\ x_m^{(1)} & x_m^{(2)} & ... & x_m^{(n)} \\ \end{bmatrix}\,,
where n is the number of samples.
Then, we define a linear operator L that, when applied to uncorrelated standard samples X, converts them into N(0,\Sigma)-distributed samples K.
K = L X \label{eq:corr_eq}
The operator L does not affect the mean of the distribution, since
E \left[ K \right] = E \left[ L X \right] = L E \left[ X \right] = 0 \,.
Also, the linearity of the operator preserves the shape of the distribution.
Then, the covariance becomes
E \left[ K K^T \right] = E \left[ \left( L X \right) \left( L X \right)^T \right] = L E \left[ X X^T \right] L^T = L L^T \,,
since by definition E \left[ X X ^T \right] is the identity matrix.
The problem of sampling Normally distributed variables with covariance matrix \Sigma reduces to finding L such that
L L^T = \Sigma \,.
SANDY calculates L by performing an eigendecomposition of \Sigma.
Eventually, K can be converted into a N(1,\Sigma)-distributed matrix of perturbation coefficients P by shifting the distribution mean to the unit vector 1
P = \begin{bmatrix} p_1^{(1)} & p_1^{(2)} & ... & p_1^{(n)} \\ p_2^{(1)} & p_2^{(2)} & ... & p_2^{(n)} \\ \vdots & \vdots & \ddots & \vdots \\ p_m^{(1)} & p_m^{(2)} & ... & p_m^{(n)} \\ \end{bmatrix} = K + 1 \,.
By definition, covariance matrices are positive-definite, that is, their eigenvalues are all positive. These requirements must also be satisfied to apply the decomposition in Eq. However, it is not rare to find covariance matrices for which it is not the case.
SANDY cannot investigate into the covariance evaluation process to identify the sources of this issue. Therefore, it reconstructs an approximate covariance matrix \widetilde{\Sigma} with all negative eigenvalues set to zero. This assumption is acceptable for small negative eigenvalues that are likely to sprout from round-off or truncation processes. For such cases it follows that \widetilde{\Sigma} \approx \Sigma.
To check whether the covariance eigenvalues are well represented by the
perturbations, option --eig
was implemented in SANDY.
Hint
to compare the first 20 eigenvalues, type
sandy <endf6_file> --samples 100 --eig 20
By default, SANDY displays the first 10 eigenvalues.
SANDY perturbation coefficients P reflect the multigroup energy structure of the covariance matrix used for sampling. On the contrary, the tabulated data in the ENDF-6 files are not defined for a energy group structure, but they rather apply to a continuous-energy domain using a number of explicitely given energy-value pairs (e_k,v_k) and interpolation laws.
For any given coefficient p_i^{(j)} defined over an energy group [e_i,e_{i+1}], SANDY perturbs all energy-value pairs (e_k,v_k) for which e_i \leq e_k \leq e_{i+1} using the following formula
v_k^{(j)} = v_k p_i^{(j)} \,.
That is, if a cross section must be perturbed by 10% between 1 and 10 eV,
then all the values of the energy-value pairs in the corresponding MF3
section are multiplied by 1.1.
Important
This procedure implies that all cross section points in the energy interval of interest are 100% correlated.
To make sure that the actual covariance structure is represented in the
perturbed files, SANDY adds additional energy-value pairs to the tabulated data.
This is particularly important when the covariance energy structure is finer
than the energy-value pair density, as it is often found in MF4
and MF5
for energies below 1 KeV.
When sampling from a Normal distribution, and in particular when the standard deviations are large, it is likely to draw perturbations <=0 that, when applied to the evaluated data, they will make them change sign. Physically, many quantities such as cross sections or energy ditributions are intrinsically positive. As a consequence, SANDY proposes two methods to handle negative perurbations:
- method 1:
- perturbation coefficients outside the range [0,2] are set to 1;
- method 2:
- perturbation coefficients outside the range [0,2] are set either to 0 or 2 if they fall respectively below or above the defined range.
A comparison of the two methods to represent different level of uncertainty is reported in figure.
Given the strong nuclear data uncertainty reduction using the 1st method for standard deviations larger than 40%, it was decided to implement the 2nd method in the code.
To correctly perturb cross sections, SANDY needs the tabulated data in MF3
to
be reconstructed from the resonance parameters in MF2
and to be linearized,
so that for any energy point a cross section value can be retrieved via
linear interpolation.
ENDF-6 files that satisfy these conditions are called PENDF, or pointwise-ENDF,
files and are recognizible by a special flag in section MF1/MT451
.
To produce such files it is common to utilize processing codes such as
NJOY (module RECONR) or PREPRO (modules RECENT and LINEAR).
Notice that SANDY does not perturb cross sections for files that are not in
PENDF format.
To perturb cross sections, one can choose to extract perturbations from
the MF33
section in the original ENDF-6 file.
sandy <pendf_file> --cov <endf6_file> --samples 100 --mf 33
By doing so, the user must be aware that the covariance information for the
resonance region will not be included, if the dedicated section MF32
is
provided.
If that is the case, another choice to properly include both MF32
and
MF33
contributions is to:
- process the ENDF-6 file with the NJOY module ERRORR for a given multigroup structure;
- extract perturbations from the processed covariance matrix written in the ERRORR output file.
sandy <pendf_file> --cov <errorr_file> --samples 100 --mf 33
The ERRORR output contains a derived MF33
sections that includes
both the cross sections and resonance parameters covariances.
Note
This is the preferred methodology used by the authors to produce perturbed files with SANDY.
A template NJOY input file to produce a ERRORR output file is reported below.
The information stored in the various MT
sections is often redundant [1],
in the sense that some cross sections can be derived from others via summation rules.
For example, the total cross section can be reconstructed as the sum of all the
partial (non-redundant) cross sections, or the total inelastic cross section can
be reconstructed as the sum of all the discrete and continuous inelastic levels.
[1] | A cross section is defined as redundant when it can be completely calculated from the combination of other cross sections, according to the conservation laws. |
SANDY automatically reconstruct redundant cross sections for each perturbed file.
Also, in the case pertrubations exist only for a redundant cross section, say
MT4
, and not for its components, say from MT51
to MT91
.
Then, SANDY applies the MT4
perturbations also to MT51
, MT52
, and so
on, to make sure that the perturbation is taken into account and that the sum of
the components equals the redundant cross section.
Important
by imposing conservation laws such as summation rules, extra levels of correlations are forced upon the random samples, which might not be present in the original covariances.
Covariances for average fission neutron multiplicities are given in MF31
for:
MT452
total fission neutrons;MT455
delayed fission neutrons;MT456
prompt fission neutrons.
To produce perturbed files where only the fission neutron mulitplicities are varied, type
sandy <endf6_file> --samples 100 --mf 31
As for cross sections, the redundant total fission nubar is reconstructed from the prompt and delayed fission nubar.
The ENDF-6 formats allows angular distributions to be stored in section
MF4
in two forms:
- by tabulating the normalized probability distribution as a function of incident energy;
- by tabulating the Legendre polynomial expansion coefficientsas a function of incident neutron energy.
However, the corresponing covariances in MF34
only accept the second form.
To run SANDY to perturb only the angular distributions, type
sandy <endf6_file> --samples 100 --mf 34
If no option is specified, SANDY will perturb all Legendre polynomial coefficients up to any order [2], as long as covariance data are available. However, to consider only covariances for Legendre polynomial coefficients up to a given order, say 2, one must type
[2] | all correlations between different Legendre polynomial coefficients are also taken into account. |
sandy <endf6_file> --samples 100 --mf 34 --max-polynomial 2
Covariances for outgoing energy distributions in MF35
are mostly given for
prompt fission neutron spectra (PFNS) and for few incident energy ranges,
therefore assuming large correlations for distributions associated to incident
energies in the same range.
In addition, the format does not allow correlations between spectra that do not
belong to the same range.
To perturb only energy distributions, type
sandy <endf6_file> --samples 100 --mf 35
SANDY draws samples from each covariance matrix independently. Then, the perturbations are applied to each evaluated energy distribution only if the incident neutron energy belongs to the covariance range.
Being probability distributions, all perturbed PFNS must be normalized to unity. If the normalization was already included in the covariance matrix, the sums of the elements in any row (and in any column) would be equal to zero [3].
To make up for covariances that do not comply with this rule, SANDY normalizes all perturbed energy distributions.
[3] | This constraint is also called the zero-sum rule. |
Important
by imposing conservation laws such as data normalization, extra levels of correlations are forced upon the random samples, which might not be present in the original covariances.