Serpent UGM 2015 Knoxville, 1316 October 2015 Implementation of new adjoint-based methods for sensitivity analysis and uncertainty quantication in Serpent Manuele Auero & Massimiliano Fratoni UC Berkeley
Unfortunately, the nuclear data we use everyday are aected by uncertainties. As nuclear data users, we should assess the impact of uncertainties on our results and conclusions. Uncertainty propagation, data assimilation and cross section adjustment were the territory of deterministic codes... but today is the Monte Carlo era (right?). We implemented in Serpent and tested new methods for uncertainty quantication (UQ).
Generalized Perturbation Theory (GPT) Available in deterministic codes from the 60s (Gandini, 1967) GPT in Serpent not discussed in details here. You can have a look at SerpentUGM14 presentation or at Annals of Nuclear Energy, 85, 2015. A collision history approach... extended Generalized Perturbation Theory (XGPT) Newly developed. Continuous energy approach. Ongoing testing & optimization.
Collision history approach Uncertainty propagation Generalized Perturbation Theory capabilities Eect of a perturbation of the parameter x on the response R : S R x Considered response functions: R = k e dr/r dx/x Eective multiplication factor R = R = Σ 1, φ Σ 2, φ φ, Σ 1 φ Reaction rate ratios φ Bilinear ratios (Adjoint-weighted quantities), Σ 2 φ R =? Something else
Collision history approach Uncertainty propagation A collision history-based approach to GPT calculations
Particle's weight perturbation Collision history approach Uncertainty propagation Weight conservation w 0 p unbiased = w p biased w w 0 ( 1 + dσ n,2n Σ n,2n ) ( 1 + dσ s Σ s ) ( 1 dσ f ( Σ f 1 + dσ f Σ f ) ) ( ( 1 + dσ s Σ s 1 + dσ s Σ s ) ( 1 dσ c Σ c ) ( 1 + dσ f Σ f ) )...
Particle's weight perturbation Collision history approach Uncertainty propagation w n x/x α ( ) (n,g) w n ACCx (n,g) REJ x g=(α λ) α = present generation λ = number of propagation generations ACC x = accepted events x in the history of the particle n REJ x = rejected events x
Collision history approach Uncertainty propagation Example: Monte Carlo sensitivity for bilinear ratios R = φ, Σ 1 φ φ, Σ 2 φ Examples: φ 1, χ d ν d Σ f φ k β e = e l e = φ 1, χ t ν t Σ f φ k e α coolant = φ, Σ t,coolantφ φ, 1 χ t ν t Σ f φ k e φ, φ, 1 φ v 1 χ t ν t Σ f φ k e
Collision history approach Uncertainty propagation Example: Monte Carlo sensitivity for bilinear ratios R = φ + φ, (Σ 1 + Σ 1 ) (φ + φ) φ + φ, (Σ 2 + Σ 2 ) (φ + φ) R φ, Σ 1 φ φ, Σ 2 φ φ, Σ 1 φ φ, Σ 2 φ φ, Σ 1 φ φ, Σ 2 φ = R φ, Σ 1 φ φ +, Σ 2 φ φ, Σ 1 φ φ +, Σ 2 φ φ, Σ 1 φ φ, Σ 2 φ S R x = φ Σ 1, φ φ Σ 2, φ x/x φ, Σ x/x 1φ φ, Σ + 2φ + φ φ, Σ 1 φ φ φ φ, Σ 2, Σ1φ, Σ2φ x/x φ, Σ x/x 1φ φ, Σ + x/x 2φ φ, Σ x/x 1φ φ, Σ 2φ
Collision history approach Uncertainty propagation Example: Monte Carlo sensitivity for bilinear ratios Indirect terms... Eect of perturbation on the forward ux: φ, Σ 1 φ x/x = n α t n w n x/x ltσ 1 1 w n k d (γ) n w k Eect of perturbation on the adjoint ux: φ, Σ 1φ = w n l tσ 1 1 x/x n α t n w n k d (γ) n w k 1 x/x w 2 n w n x/x k d (γ) n w k Sum of indirect terms (rewritten as function of neutrons in generation α + γ ): φ, Σ 1 φ x/x φ +, Σ 1φ = [ ( w k x/x k (α+γ) t ( γ) k ) ] w l k /w k tσ 1 x/x
Collision history approach Uncertainty propagation Generalized response functions If the quantity R can be estimated as the ratio of two generic Monte Carlo responses R = E [e 1] E [e 2 ] S R x = the sensitivity coecient of R with respect to x can be obtained as: COV [ e 1, ] history (ACCx REJ x) E [e 1] COV [ e 2, ] history (ACCx REJ x) E [e 2]
What was that? Collision history approach Uncertainty propagation For example, x can be the value of a cross section Σ (e.g., elastic scattering) of a given nuclide at the energy E : x = Σ(E) In that case, S Σ R (E) can be calculated from the accepted and rejected scattering events in the collision history: history ) COV e 1, (ACC Σ,E REJ Σ,E SΣ R (E) = E [e1] This is a continuous energy estimator but... history ) COV e 2, (ACC Σ,E REJ Σ,E E [e2]
Collision history approach Uncertainty propagation Unfortunately, energy discretization is required In continuous energy Monte Carlo transport, the probability of occurrence of a collision at the exact energy E is ZERO For this reason, energy-resolved sensitivity proles are obtained (as in deterministic codes) by calculating group-wise integrals of S R Σ : Eg+1 S R = Σ,g S R Σ (E) de E g This is easily obtained by scoring the collisions occurred at energies between E g and E g+1.
Collision history approach Uncertainty propagation Bilinear ratios sensitivities: a couple of examples Flattop-Pu
Collision history approach Uncertainty propagation Bilinear ratios sensitivities: a couple of examples 0,2 Popsy (Flattop) - Leff - Pu-239 - fission Effective prompt lifetime sensitivity - 8-16 generations - ENDF/B-VII 0,1 Sensitivity per lethargy unit 0-0,1-0,2-0,3 Extended SERPENT-2 TSUNAMI-1D (EGPT) -0,4 10 3 10 4 10 5 10 6 10 7 Energy (ev)
Collision history approach Uncertainty propagation Bilinear ratios sensitivities: a couple of examples PWR pin cell
Collision history approach Uncertainty propagation Bilinear ratios sensitivities: a couple of examples 1 UAM TMI-1 PWR cell - α coolant - U-235 - nubar total coolant void reactivity coeff. sensitivity - 4 generations - ENDF/B-VII Sensitivity per lethargy unit 0.8 0.6 0.4 0.2 0-0.2-0.4 Extended SERPENT-2 TSUNAMI-1D Difference (S-T) -0.6-0.8 10-2 10 0 10 2 10 4 Energy (ev)
Collision history approach Uncertainty propagation Bilinear ratios sensitivities: a couple of examples 0.6 UAM TMI-1 PWR cell - α coolant - U-238 - disappearance coolant void reactivity coeff. sensitivity - 4 generations - ENDF/B-VII 0.5 Extended SERPENT-2 TSUNAMI-1D Difference (S-T) Sensitivity per lethargy unit 0.4 0.3 0.2 0.1 0-0.1 10-2 10 0 10 2 10 4 10 6 Energy (ev)
Collision history approach Uncertainty propagation Uncertainty propagation First-order uncertainty propagation formula (sandwich rule) Var [R] = S R x Cov [x] (S R x ) T
Collision history approach Uncertainty propagation Continuous energy transport, multi-group sens. & UQ Choosing the multi-group energy grid is not an easy task (for both covariance matrices and sensitivity proles) The eciency of any Monte Carlo sensitivity estimator degrades quickly with ner discretizations You could never know if your energy grid is OK for uncertainty propagation, unless you repeat everything with a new grid What about higher moments of the uncertain response function distribution? Multi-group & sandwich rule were the obvious choices for deterministic codes. Still a good choice for Monte Carlo?
Can we do it better? Yes we can... We developed a new method, called Monte Carlo extended Generalized Perturbation Theory (XGPT)... I know, it's a boring name (suggestions?) XGPT for nuclear data uncertainty obtained a side eect of the ongoing development of adjoint capabilities for multiphysics problems at UC Berkeley (not discussed here) Main goals: Continuous energy approach to uncertainty propagation No expert user tasks (e.g., choice of energy grid) Estimate higher moments of the responses distributions Faster than classic GPT+Covariance
The Total Monte Carlo approach The Total Monte Carlo approach (TMC, Rochman et al., 2011) Random ENDF les generated from uncertainties in nuclear models parameters (e.g., TENDL libraries) Continuous-energy cross sections (ACE les) produced via NJOY No major approximations in the uncertainty propagation process Some disadvantages (not only CPU time)
A simple case study A small sphere of 239 Pu with 5 mm of 208 Pb reector Only 208 Pb uncertainties are considered (data from TENDL-2013)
Random cross sections 3000 dierent 208 Pb ENDF les from TENDL-2013 Random MF2-MT151 (resonances), MF3-MT1, MF3-MT2 (elastic) and MF3-MT102 (n, γ) processed with NJOY 3000 ACE les with random elastic scattering and (n, γ) XS The random continuous energy XS reect the UNCERTAINTIES and their CORRELATIONS (according to TENDL-2013)
Random cross sections 208 Pb elastic xs [b] 10 2 Reference 10 1 6 10-2 7 10-2 8 10-2 9 10-2 1 10-1 Energy [MeV] 208 Pb elastic xs [b] 10 1 10 0 3 10-1 4 10-1 5 10-1 6 10-1 Energy [MeV]
Random cross sections 208 Pb elastic xs [b] 10 2 10 1 10 random evaluations Reference 6 10-2 7 10-2 8 10-2 9 10-2 1 10-1 Energy [MeV] 208 Pb elastic xs [b] 10 1 10 0 3 10-1 4 10-1 5 10-1 6 10-1 Energy [MeV]
Random cross sections 208 Pb elastic xs [b] 10 2 10 1 50 random evaluations Reference 6 10-2 7 10-2 8 10-2 9 10-2 1 10-1 Energy [MeV] 208 Pb elastic xs [b] 10 1 10 0 3 10-1 4 10-1 5 10-1 6 10-1 Energy [MeV]
Generalized perturbation theory Random cross sections 208 Pb elastic xs [b] 2 10 500 random evaluations Reference 1 10-2 -2-2 7 10-2 8 10 Energy [MeV] 9 10-1 1 10 1 10 208 Pb elastic xs [b] 6 10 0 10-1 3 10-1 -1 4 10 5 10-1 6 10 Energy [MeV] Manuele Au ero UC Berkeley Serpent UGM October 14, 2015
TMC results for k e 3000 Serpent runs Pu239 & Pb208 sphere - keff uncertainty - TMC keff distributions from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 500 Total Monte Carlo 400 Number of counts per bin [-] 300 200 100 0-400 -200 0 200 400 600 keff - keff [pcm] CPU time: 3000 runs 11 min. 20 cores
Reconstructing continuous energy covariance matrices Processing the independent ACE les, XS standard deviation and correlation matrices are obtained as continuous function of the incident neutron energy. Pb208 nuclear data uncertainty - Random evaluations approach 208 Pb elastic scattering and capture xs - random MF2 MT151 & MF3 MT(1),2,102 from TENDL-2013 Rel. standard dev [%] 60 40 20 0 10 2 Ref. elastic xs [b] 10 1 10 0 10-2 10-1 10 0 10 1 Energy [MeV]
Reconstructing continuous energy covariance matrices Processing the independent ACE les, XS standard deviation and correlation matrices are obtained as continuous function of the incident neutron energy. Pb208 nuclear data uncertainty - Random evaluations approach 208 Pb elastic scattering and capture xs - random MF2 MT151 & MF3 MT(1),2,102 from TENDL-2013 Rel. standard dev [%] 60 40 20 0 Ref. elastic xs [b] 10 2 10 1 6 10-2 7 10-2 8 10-2 9 10-2 1 10-1 Energy [MeV]
Reconstructing continuous energy covariance matrices Processing the independent ACE les, XS standard deviation and correlation matrices are obtained as continuous function of the incident neutron energy. 20 2 Energy [MeV] 0.2 0.02 0.02 0.2 2 20 Energy [MeV] Continuous energy Multi-group (JANIS-4.0)
extendend Generalized Perturbation Theory Proper Orthogonal Decomposition of Nuclear Data uncertainties The main steps: Process N random continuous energy XS Σ i Build an optimal set of n CE orthogonal basis functions b j Project the ND uncertainties onto this set of basis functions Run a single Serpent simulation with the reference XS Σ 0 Calculate the sensitivities of each response R to the bases b j Reconstruct the expected responses R Σi for each XS Σ i Obtain the distribution of the uncertain response R
Proper Orthogonal Decomposition (POD) Singular Value Decomposition (SVD) Let's talk about something else for a while...
Proper Orthogonal Decomposition (POD) Singular Value Decomposition (SVD) Let's talk about something else for a while...
Proper Orthogonal Decomposition (POD) Singular Value Decomposition (SVD) Let's talk about something else for a while... *Standard test image for image processing from http://sipi.usc.edu/database/ Digital image compression
How to build a reduced-order approximation of the image How to build a reduced-order approximation of the covariance matrix Matrix eigendecomposition A = UΣV
How to build a reduced-order approximation of the image How to build a reduced-order approximation of the covariance matrix
How to build a reduced-order approximation of the image How to build a reduced-order approximation of the covariance matrix A = UΣV A U d Σ d V d
Singular Value Decomposition Original image SVD/POD 5 basis functions Multi-group 5 energy groups A=imread("lena.png"); [A, map]=gray2ind(a,255); [U, S, V]=svd(A); A_SVD_5 = U(:,1:5) * S(1:5,1:i) * V(:,1:5) ; imwrite(a_svd_5, gray(255), "lena_5.png");
Singular Value Decomposition Original image SVD/POD 10 basis functions Multi-group 10 energy groups A=imread("lena.png"); [A, map]=gray2ind(a,255); [U, S, V]=svd(A); A_SVD_10 = U(:,1:10) * S(1:10,1:i) * V(:,1:10) ; imwrite(a_svd_10, gray(255), "lena_10.png");
Singular Value Decomposition Original image SVD/POD 20 basis functions Multi-group 20 energy groups A=imread("lena.png"); [A, map]=gray2ind(a,255); [U, S, V]=svd(A); A_SVD_20 = U(:,1:20) * S(1:20,1:i) * V(:,1:20) ; imwrite(a_svd_20, gray(255), "lena_20.png");
Singular Value Decomposition Original image SVD/POD 40 basis functions Multi-group 40 energy groups A=imread("lena.png"); [A, map]=gray2ind(a,255); [U, S, V]=svd(A); A_SVD_40 = U(:,1:40) * S(1:40,1:i) * V(:,1:40) ; imwrite(a_svd_40, gray(255), "lena_40.png");
Singular Value Decomposition Original image SVD/POD 80 basis functions Multi-group 80 energy groups A=imread("lena.png"); [A, map]=gray2ind(a,255); [U, S, V]=svd(A); A_SVD_80 = U(:,1:80) * S(1:80,1:i) * V(:,1:80) ; imwrite(a_svd_80, gray(255), "lena_80.png");
Proper Orthogonal Decomposition of Nuclear Data Let's go back to 208 Pb uncertainties......there is much more room for data compression in the covariance matrices (physics-based correlations) Proper Orthogonal Decomposition of Nuclear Data We want a set of orthogonal basis functions b Σ,j so that: Σ i (E) = Σ 0 (E) 1 + n α j i bσ,j (E) j=1
Proper Orthogonal Decomposition of Nuclear Data Let's go back to 208 Pb uncertainties... 3 basis functions from the POD of 208 Pb (n, ela) Rel. basis function [a.u.] Basis # 3 Rel. basis function [a.u.] Basis # 4 Rel. basis function [a.u.] Basis # 5 Ref. elastic xs [b] 10 1 10 0 Ref. elastic xs [b] 10 2 10 1 Ref. elastic xs [b] 10 2 10 1 10 0 10 0 10 1 Basis # 3 Energy [MeV] 6 10-2 7 10-2 8 10-2 9 10-2 1 10-1 Energy [MeV] Basis # 4 Basis # 5 10-1 10 0 Energy [MeV]
Generalized perturbation theory Proper Orthogonal Decomposition of Nuclear Data Let's go back to 208 Pb uncertainties... Correlation matrices after POD and reconstruction 2 2 2 2 0.2 0.02 0.02 0.2 0.2 n=2 2 Energy [MeV] 20 0.02 0.02 Energy [MeV] 20 Energy [MeV] 20 Energy [MeV] 20 Energy [MeV] 20 0.2 0.2 n=5 2 Energy [MeV] Manuele Au ero UC Berkeley 20 0.02 0.02 0.2 0.2 2 Energy [MeV] n = 10 20 0.02 0.02 0.2 2 20 Energy [MeV] n = 20 Serpent UGM October 14, 2015
Generalized perturbation theory Proper Orthogonal Decomposition of Nuclear Data Let's go back to 208 Pb uncertainties... 2 2 Energy [MeV] 20 Energy [MeV] 20 0.2 0.02 0.02 0.2 0.2 2 20 0.02 0.02 0.2 Energy [MeV] Continuous Energy 2 20 Energy [MeV] SVD/POD 20 basis functions Manuele Au ero UC Berkeley Multi-group >100 ene g. Serpent UGM October 14, 2015
XGPT+POD: calculating sensitivities to CE basis functions We need to calculate the eect on the response R due to a perturbation on Σ equal to b Σ,j S Rb Σ,j = dr/r d bσ,j = E max E min bσ,j (E) S R Σ (E) de
XGPT+POD: calculating sensitivities to CE basis functions Using the collision history approach, S R can be estimated bσ,j from the covariance between the terms of R and the collisions weighted by b Σ,j (E) COV [ e 1, history G bσ,j ] COV [ e 2, history G bσ,j ] S R b Σ,j = E [e 1 ] E [e 2 ]
XGPT+POD: uncertainty propagation From the Proper Orthogonal Decomposition of Nuclear data... Σ i (E) Σ i (E) = Σ 0 (E) ( 1 + ) n α j b i Σ,j (E) j=1...and the basis functions sensitivity coecients S R, we can bσ,j approximate the response function R Σi ( R Σi R Σi = R Σ0 1 + for each random XS Σ i ) n α j S R i b Σ,j j=1
XGPT+POD: uncertainty propagation Estimating the k e distribution in the simple case study k e Σi k e Σi = k e Σ0 ( 1 + n j=1 α j i S k e b Σ,j ) The k e for all the N (3000) random XS Σ i were calculated in a single Serpent run (ACE le for Σ 0 ) with n = 50 bases The XGPT+POD results are compared to TMC results (3000 separate Serpent runs)
XGPT+POD: uncertainty propagation Estimating the k e distribution in the simple case study Pu239 & Pb208 sphere - keff estimates - XGPT + POD keff distributions from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 800 keff - keff (XGPT + POD) [pcm] 600 400 200 0-200 -400-400 -200 0 200 400 600 800 keff - keff (Independent MC runs) [pcm]
XGPT+POD: uncertainty propagation Estimating the k e distribution in the simple case study Pu239 & Pb208 sphere - keff uncertainty - XGPT + POD vs. TMC keff distributions from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 500 400 Total Monte Carlo XGPT + POD Number of counts per bin [-] 300 200 100 0-400 -200 0 200 400 600 keff - keff [pcm]
XGPT+POD: uncertainty propagation Estimating the k e distribution in the simple case study Moment TMC XGPT + POD Standard deviation [pcm] 165.8 164.0 Skewness [-] 0.81 0.79 Kurtosis [-] 3.60 3.55
XGPT+POD CPU-time Real-time demonstration
Conclusions The XGPT+POD method for uncertainty quantication has been implemented in Serpent Uncertainty propagation w/o multi-group energy discretization of sensitivities and covariances Estimation of higher moments of response distributions Straight-forward & simple implementation Useful also for multi-group GPT+COV Not implemented (yet) for URR and S(α,β)
Next steps Generalized perturbation theory Testing and verication required!!! (ongoing) Continuous energy cross sections adjustment UQ in multiphysics applications (coupled neutronics/cfd) Higher order sensitivities Beyond uncertainties: ROMs for coupled problems
Acknowledgments Thanks to A. Bidaud (LPSC Grenoble) D. Rochman (PSI) A. Sartori (SISSA Trieste) for precious discussions
THANK YOU FOR THE ATTENTION QUESTIONS? SUGGESTIONS? IDEAS? The bay area from the Berkeley hills (multi-group version).
O-line steps Backup-slides Generate the optimal bases via POD (from random XS): Load N random ACE les for the selected isotope Score the rel. di. of the XS on the unionized e-grid Build the (weighted) correlation matrix K R N N Solve [S, V] = EIG(K) for the rst n eigenvalues Reconstruct the bases and store them in a cache-friendly way Generate the optimal bases via SVD (from cov. matrices): Should you already have the relative covariance matrices, the bases can be obtained directly via SVD: Solve [U, S, V] = SVD(COV) for the rst n eigenvalues The o-line steps need to be done just once
POD: eigenvalues Backup-slides Scaled eigenvalues of the POD of 208 Pb cross sections 1 10 3 Scaled eigenvalue [a.u.] 1 10 2 1 10 1 1 10 0 0 10 20 30 40 50 Basis number
Backup-slides STD convergence: XGPT+POD vs. TMC Pu239 & Pb208 sphere - convergence of TMC std. dev. keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 250 Pu239 & Pb208 sphere - convergence of XGPT std. dev. keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 250 200 200 keff sample std. dev. [pcm] 150 100 GPT + POD TMC keff std. dev. [pcm] 150 100 XGPT + POD TMC (sample # 3000) 50 50 0 0 1000 2000 3000 Sample number 0 0 10 20 30 40 50 Basis number TMC XGPT+POD
Backup-slides Skewness convergence: XGPT+POD vs. TMC 1.4 Pu239 & Pb208 sphere - convergence of TMC skewness keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 1.4 Pu239 & Pb208 sphere - convergence of XGPT skewness keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 1.2 1.2 keff sample skewness [-] 1 0.8 0.6 0.4 GPT + POD TMC TMC (sample # 3000) keff skewness [-] 1 0.8 0.6 0.4 XGPT + POD TMC (sample # 3000) 0.2 0.2 0 0 1000 2000 3000 Sample number 0 0 10 20 30 40 50 Basis number TMC XGPT+POD
Backup-slides Kurtosis convergence: XGPT+POD vs. TMC Pu239 & Pb208 sphere - convergence of TMC kurtosis Pu239 & Pb208 sphere - convergence of XGPT kurtosis keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) keff distribution from Pb208 elastic scattering and capture xs uncertainty (from TENDL-2013) 6 6 5 5 keff sample kurtosis [-] 4 3 2 1 GPT + POD TMC TMC (sample # 3000) keff kurtosis [-] 4 3 2 1 XGPT + POD TMC (sample # 3000) 0 0 1000 2000 3000 Sample number 0 0 10 20 30 40 50 Basis number TMC XGPT+POD
CPU-time & memory Backup-slides TMC GPT + COV XGPT + POD CPU-time N small # of coll. small n Memory # of coll. λ pop n λ pop