張 澍 郝麗娟 宋 婧 吳 斌 孫光耀
1(中國科學技術大學 核科學技術學院 合肥 230027)2(中國科學院核能安全技術研究所 中國科學院中子輸運理論與輻射安全重點實驗室 合肥 230031)
基于計數輔助樹的蒙特卡羅粒子輸運計算大規(guī)模計數方法
張澍1,2郝麗娟2宋婧2吳斌2孫光耀2
1(中國科學技術大學核科學技術學院合肥230027)2(中國科學院核能安全技術研究所中國科學院中子輸運理論與輻射安全重點實驗室合肥230031)
傳統(tǒng)的蒙特卡羅粒子輸運計算程序在粒子每一步模擬結束后,通過遍歷所有計數器來判斷當前粒子所在柵元是否需要進行計數,該過程耗時隨計數器數量的增加近似線性增長,當計數器數量較大時,計數耗時遠高于輸運耗時。本文發(fā)展了一種基于計數輔助樹的大規(guī)模計數加速方法,建立了與幾何柵元一一對應的樹形結構,并在節(jié)點中存儲了相應柵元的計數信息,通過當前粒子所在柵元的幾何信息從樹中快速讀出對應的計數器。為了驗證該方法的有效性,基于Hoogenboom全堆基準例題測量了不同計數器數量下的計算耗時。測試結果顯示本文方法能有效地提高大規(guī)模計數問題的計算效率。
蒙特卡羅,粒子輸運,計數輔助樹,大規(guī)模計數
蒙特卡羅粒子輸運方法由于能夠對任意復雜的三維幾何模型和物理現(xiàn)象進行精確的描述和處理,在核能系統(tǒng)核設計與輻射安全評價等領域得到了廣泛的應用。隨著現(xiàn)代反應堆設計中對計算精度要求的提高,包含百萬甚至千萬量級計數柵元的全堆芯高保真高精細模擬成為了研究的熱點之一。國內外很多蒙特卡羅輸運程序,如MCNP (Monte Carlo N Particle Transport Code)[1]、OpenMC (OpenMC Monte Carlo Code)[2]、RMC (Reactor Monte Carlo Code)[3]、JMCT (J Monte Carlo Transport Code)[4]等,都對此方向進行了大量的研究。
蒙特卡羅程序在粒子每一步模擬結束后,需要判斷當前粒子所在柵元是否需要進行計數。傳統(tǒng)的判斷方法需要遍歷所有計數器,其時間復雜度為O(N),其中N為計數器的數量。Veen等[5]指出由于MCNP5對柵元計數應用了傳統(tǒng)的順序遍歷方法,其計數耗時隨著計數器柵元數量的增加近似線性增長,如圖1所示。如果在單個CPU上使用MCNP5對包含約6×106計數的反應堆基準例題進行計算,模擬100代,每代105個粒子,計算耗時會高達4×106min。因此,當計數器數量達到百萬量級時,需要應用高效的計數方法以保證輸運計算的效率。最高效的計數方法為映射法,即建立從柵元編號到計數器的映射,根據粒子當前所在柵元的編號,可直接通過映射關系獲取對應的計數器,其時間復雜度為O(1)。但這種映射關系要求每個柵元在計算模型中唯一存在。
圖1 MCNP5計算時間隨計數器數量的變化[5]Fig.1 Run time of MCNP5 changes with the number of tallies[5].
然而大規(guī)模計數問題常見于通過重復結構描述的裂變堆堆芯模型,蒙特卡羅程序對重復結構柵元有兩類處理方法:一為重復結構柵元共用一套幾何描述,但柵元編號保持獨立,因此可根據映射法保證高效的柵元計數;二為重復結構柵元編號并不保持獨立,需要根據柵元在幾何結構中的層級關系來唯一確定,其優(yōu)點在于內存開銷相對較小,但無法從柵元編號直接映射到對應的計數器。針對此問題,RMC程序提出了基于柵元映射、哈希表和層級標記的計數加速方法[6],將柵元的幾何信息映射為一個整型變量,用單調整數序列的二分查找替換了原本的順序查找,并通過哈希表縮小了二分查找的范圍,顯著提高了計數效率。但該方法只有在使用了層級標記,即預先指定計數柵元為幾何結構的固定層級時才能達到最佳加速效果。
通過充分利用模型的幾何信息,本工作發(fā)展了一種基于計數輔助樹的大規(guī)模計數方法,由柵元幾何信息直接映射到對應的樹形節(jié)點獲取計數器信息,提高了計數的效率,并基于FDS團隊自主研發(fā)的超級蒙特卡羅核計算仿真軟件系統(tǒng)SuperMC[7?8]實現(xiàn)了該方法。SuperMC是一款具有完全自主知識產權的通用、智能、精準的核系統(tǒng)設計優(yōu)化與安全評價軟件,可應用于反應堆的設計[9?11]和分析[12?13]、核材料[14?15]輻照損傷分析等領域。SuperMC目前已發(fā)展復雜系統(tǒng)自動精準建模[16]等關鍵技術,通過了2000余個國際基準模型(國際熱核聚變實驗堆[17]、國際臨界安全基準評價手冊[18]等)及實驗的驗證與確認。
本文所創(chuàng)建的樹形結構類似于不使用重復結構描述的模型幾何結構,樹的每個節(jié)點與模型的每個幾何柵元一一對應,根節(jié)點對應世界體柵元,葉子節(jié)點對應最底層的重復結構柵元。其中,世界體柵元是包圍模型整體空間的一個實體,用于描述模型中未定義的空間。每個節(jié)點使用兩個順序容器(vector)分別記錄了該節(jié)點對應的幾何柵元的所有計數器索引和該節(jié)點對應的幾何柵元的所有子柵元對應子節(jié)點的指針。本文將這種樹形結構的描述方式稱為獨立節(jié)點描述。
在樹形結構的構建中,首先根據模型的幾何結構通過一個遞歸函數建立“樹”,將每個節(jié)點的所有子節(jié)點的指針存儲至vector容器中,完成“樹”的建立后,再遍歷所有的計數器,將其索引添加到對應節(jié)點的計數器列表中。
上述獨立節(jié)點描述的樹形結構,在全堆芯精細計算中,可能需存儲數百萬個vector容器,每個容器都在進程的堆上分配了一段內存。在x86環(huán)境下,每個空的vector容器本身需要16 byte的內存開銷,另外,對于C++編寫的代碼,每次內存開辟都需要一些額外的內存開銷(4?32 byte)[19]。所以,大量的容器帶來計數信息以外的大量額外內存開銷。由于全堆芯的蒙特卡羅計算通常受到計算機內存的限制,因此有必要盡可能降低樹形結構的內存使用。
為避免大量vector容器帶來的額外內存開銷,對上述樹形結構進行了優(yōu)化,將樹中的所有信息壓縮進兩個vector容器,分別為存儲了所有計數信息的tally_vector和存儲了所有節(jié)點間拓補信息的tree_vector,如圖2所示。SuperMC中的計數器數據結構包含兩級層次關系,在輸入文件中可定義若干個計數卡(tally),每個計數卡里又可定義若干獨立的計數器(bin)。因此每個計數器可通過其tally id和 bin id唯一確定,相應地在tally_vector中,連續(xù)地存儲了每個節(jié)點所對應的所有計數器的索引。在tree_vector中,每個節(jié)點用三個整型變量描述,分別是:
1) first child:該節(jié)點的第一個子節(jié)點在tree_vector中存儲位置的索引。默認值是?1,表示該節(jié)點沒有子節(jié)點。
2) first tally:該節(jié)點對應的計數器在tally_vector中存儲位置的起始索引。默認值是?1,表示該節(jié)點不對應任何計數器。
3) last tally:該節(jié)點對應的計數器在tally_vector中存儲位置的末尾索引。
在tree_vector中,第一個節(jié)點對應的是世界體,每個節(jié)點的子節(jié)點都是連續(xù)存儲的。這兩個vector可通過對原始的樹形結構的廣度優(yōu)先搜索進行構建。在tally_vector和tree_vector構建完成后,便可以將原始的樹形結構刪除以釋放其占用的內存。
圖2 tally_vector和tree_vector的結構Fig.2 Structure of tally_vector and tree_vector.
在層級空間的幾何描述方法的基礎上,當前粒子所在柵元的幾何信息由一系列層次不同的柵元組成:
其中:C(i)為指向某個柵元的指針,同時C(i)為C(i+1)的父柵元;C(0)為世界體;C(n)為當前柵元。
基于樹形結構的計數詳細流程如圖3所示,其中的關鍵在于從當前柵元的幾何信息映射到對應的樹形節(jié)點。通過遍歷當前柵元的幾何信息,從世界體柵元出發(fā),可以在tree_vector中找到每一層級的柵元所對應的節(jié)點。當訪問到幾何信息中最后一個柵元時,就可以根據當前所找到的tree_vector節(jié)點,從tally_vector中讀出所對應的計數器信息。上述流程只需要遍歷一次該柵元的幾何信息,故計數效率高,對計算耗時的影響小。以核素反應率計數為例,在每一步輸運完成后,通過tree_vector和tally_vector可快速找出當前柵元對應的計數器,再從數據庫讀出相應的反應截面,計算出對反應率的貢獻,最后根據粒子能量計算出所屬能群,將計數結果累加到計數器中的相應位置。
圖3 基于計數輔助樹的計數流程Fig.3 Tally assist tree-based tally procedure.
為了驗證文中算法的有效性,采用Hoogenboom全堆基準例題[20]進行數值測試。該模型以大型壓水堆堆芯為原型,被用來檢驗蒙特卡羅輸運程序的全堆計算能力,其幾何結構如圖4所示。堆芯包含241個燃料組件,每個燃料組件包含17×17個燃料棒,每根燃料棒軸向劃分為100層,對全堆芯計數時,計數器的個數為6 362 400。計算條件為每代10 000個粒子,共計算150代,其中非活躍代為50代。為比較計數方法的性能,只統(tǒng)計了活躍代的計算時間。雖然對于該例題,本文的計算規(guī)模無法得到收斂的計算結果,但可以反映計數耗時隨計數器數量的變化趨勢。
圖4 Hoogenboom堆芯(a)和組件(b)截面圖[20]Fig.4 Cross section of reactor of Hoogenboom core (a) and a fuel assembly (b)[20].
針對該例題所建立的計數輔助樹,如果通過獨立節(jié)點來描述,在x86環(huán)境下的內存開銷為395.2MB,x64環(huán)境下內存開銷為692.8 MB。而使用tally_vector和tree_vector描述時,內存開銷僅為133.5 MB。與此相對,如果在SuperMC中將重復結構柵元全部展開,所有柵元保持獨立,在x64環(huán)境下,SuperMC中單個柵元的內存開銷為448 byte,全堆芯6×106柵元的內存總開銷會達到約2.7 GB。
表1列出了基于計數輔助樹的計數方法和順序查找方法的計算時間對比結果??傆嬎銜r間由輸運計算耗時和計數耗時兩部分組成,計數器數量為0時的計算時間可看作純輸運耗時。圖5給出了這兩種計數方法計算時間隨計數器數量的變化關系。從圖5中可以看出,順序查找計數方法的計算時間隨計數器數量線性增長,當計數器數量為2000時計數耗時便已達到輸運計算耗時的46.5倍。若根據圖5中的線性關系進行估計,當進行全堆芯計算時,總耗時將高達1.66×106min,無法直接測量。而使用本文發(fā)展的樹形結構計數,計算時間幾乎不受計數器數量的影響,對全堆芯進行計數的計數耗時僅為0.442 min,約為輸運耗時的4%。本文方法已成功應用于SuperMC的Hoogenboom全堆芯計算校驗[21],得到了全堆芯收斂的計算結果。同時本文方法與RMC程序提出的計數方法[6]相比,在計算規(guī)模相似時,計數的耗時也相近,具有同樣良好的加速效果。
表1 兩種計數方法計算時間對比Table 1 Run time comparison of two tally methods.
圖5 計算時間隨計數器數量的變化關系Fig.5 Relationship between run time and tally number.
本文提出了一種基于計數輔助樹的蒙特卡羅大規(guī)模計數加速方法。根據Hoogenboom反應堆基準例題的測試表明,在對全堆芯6×106柵元進行計數時,計數耗時僅為輸運耗時的4%,與傳統(tǒng)通過遍歷查找計數器的方法相比,計算效率提升明顯,可有效應用于高保真全堆芯輸運模擬。
致謝本文開展研究工作中,得到了FDS團隊其他成員的大力支持,在此深表感謝!
1 X-5 Monte Carlo Team. MCNP - a general Monte Carlo N - particle transport code[M]. Los Alamos Scientific Laboratory, 2003
2 Romano P K, Forget B. The OpenMC Monte Carlo particle transport code[J]. Annals of Nuclear Energy, 2013, 51(1): 274?281. DOI: 10.1016/j.anucene.2012.06.040
3 Wang K, Li Z G, She D, et al. RMC-a Monte Carlo code for reactor core analysis[J]. Annals of Nuclear Energy, 2015, 82: 121?129. DOI: 10.1016/j.anucene.2014.08.048
4 鄧力, 李剛, 張寶印, 等. JMCT蒙特卡羅中子-光子輸運程序全堆芯pin-by-pin模型的模擬[J]. 原子能科學技術, 2014, 48(6): 1061?1066
DENG Li, LI Gang, ZHANG Baoyin, et al. Simulation of full-core pin-by-pin model by JMCT Monte Carlo neutron-photon transport code[J]. Atomic Energy Science and Technology, 2014, 48(6): 1061?1066
5 Veen D V, Hoogenboom J E. Efficiency improvement of local power estimation in the general purpose Monte Carlo code MCNP[J]. Progress in Nuclear Science and Technology, 2011, 2(1): 866?871
6 She D, Qiu Y. Improved methods of handling massive tallies in reactor Monte Carlo code RMC[R]. Proceeding 2013 International Conference on Mathematics & Computational Methods Applied to Nuclear Science and Engineering, Sun Valley, Idaho, May 5?9, 2013
7 Wu Y, Song J, Zheng H Q, et al. CAD-based Monte Carlo program for integrated simulation of nuclear system SuperMC[J]. Annals of Nuclear Energy, 2015, 82(1): 161?168. DOI: 10.1016/j.anucene.2014.08.058
8 Wu Y, FDS Team. CAD-based interface program for fusion neutron transport simulation[J]. Fusion Engineering and Design, 2009, 84(7?11): 1987?1992. DOI: 10.1016/j.fusengdes.2008.12.041
9 Wu Y, FDS Team. Conceptual design activities of FDS series fusion power plants in China[J]. Fusion Engineering and Design, 2006, 81(23?24): 2713?2718. DOI: 10.1016/j.fusengdes.2006.07.068
10 Wu Y, Jiang J, Wang M, et al. A fusion-driven subcritical system concept based on viable technologies[J]. Nuclear Fusion, 2011, 51(10): 103036. DOI: 10.1088/0029-5515/ 51/10/103036
11 Qiu L, Wu Y, Xiao B. A low aspect ratio tokamak transmutation system[J]. Nuclear Fusion, 2000, 40(3Y): 629?633. DOI: 10.1088/0029-5515/40/3Y/325
12 Wu Y, FDS Team. Design analysis of the China Dual-Functional Lithium Lead (DFLL) test blanket module in ITER[J]. Fusion Engineering and Design, 2007, 82(1): 1893?1903. DOI: 10.1016/j.fusengdes.2007.08. 012
13 Wu Y, FDS Team. Conceptual design of the China fusion power plant FDS-II[J]. Fusion Engineering and Design, 2008, 83(1): 1683?1689. DOI: 10.1016/j.fusengdes.2008. 06.048
14 Wu Y, FDS Team. Fusion-based hydrogen production reactor and its material selection[J]. Journal of Nuclear Materials, 2009, 386?388: 122?126. DOI: 10.1016/ j.jnucmat.2008.12.075
15 Wu Y, FDS Team. Design status and development strategy of China liquid lithium-lead blankets and related material technology[J]. Journal of Nuclear Materials, 2007, 367?370: 1410?1415. DOI: 10.1016/j.jnucmat.2007.04. 031
16 Li Y, Lu L, Ding A, et al. Benchmarking of MCAM4.0 with the ITER 3D model[J]. Fusion Engineering and Design, 2007, 82(15?24): 2861?2866. DOI: 10.1016/ j.fusengdes.2007.02.022
17 Song J, Sun G Y, Chen Z P, et al. Benchmarking ofCAD-based SuperMC with ITER benchmark model[J]. Fusion Engineering and Design, 2014, 89(1): 2499?2503. DOI: 10.1016/j.fusengdes.2014.05.003
18 Zhang B H, Song J, Sun G Y, et al. Criticality validation of SuperMC with ICSBEP[J]. Annals of Nuclear Energy, 2016, 87: 494?499. DOI: 10.1016/j.anucene.2015.10.004
19 Andrei A. Modern C++ design: generic programming and design patterns applied[M]. Boston: Addison-Wesley, 2001
20 Hoogenboom J E, Martin W R. The Monte Carlo performance benchmark test - aims, specifications and first results[R]. International Conference on Mathematics and Computational Methods Applied to Nuclear Science and Engineering, Rio de Janeiro, Brazil, May 8?12, 2011
21 劉鴻飛, 張彬航, 張澍, 等. 基于Hoogenboom基準模型的SuperMC全堆芯計算能力校驗[J]. 核技術, 2016, 39(4): 040604. DOI: 10.11889/j.0253-3219.2016.hjs.39. 040604
LIU Hongfei, ZHANG Binhang, ZHANG Shu, et al. Full reactor core calculation performance validation of SuperMC based on Hoogenboom benchmark[J]. Nuclear Techniques, 2016, 39(4): 040604. DOI: 10.11889/j. 0253-3219.2016.hjs.39.040604
Tally assist tree-based method for scoring massive tallies in Monte Carlo particle transport calculation
ZHANG Shu1,2HAO Lijuan2SONG Jing2WU Bin2SUN Guangyao2
1(School of Nuclear Science and Technology, University of Science and Technology of China, Hefei 230027, China)
2(Key Laboratory of Neutronics and Radiation Safety, Institute of Nuclear Energy Safety Technology, Chinese Academy of Sciences, Hefei 230031, China)
Background: Traditional Monte Carlo particle transport calculation codes traverse all the tally cards to find which tallies should be scored at the end of each simulation step. The run time of this procedure almost grows linearly with the number of total tally number. When the tally number is large, the tally procedure costs far more time than the transport calculation. Purpose: This paper proposed a tree-based method for scoring massive tallies. Methods: The method builds a tally assist tree that all the nodes map one-for-one to the geometry cells. All the tally information read from the input file is stored in the tree. At the end of each simulation step, by mapping the geometry information of the cell where the particle is currently in to a node in the tree, the tallies need to be scored is directly retrieved from the node. Results: To test the proposed method, the run time of the Hoogenboom benchmark reactor model with different tally numbers is measured. Conclusion: The results show that this method can improve thecomputation efficiency of massive tally problems.
Monte Carlo, Particle transport, Tally assist tree, Massive tallies
SUN Guangyao, E-mail: guangyao.sun@fds.org.cn
TL329.2
10.11889/j.0253-3219.2016.hjs.39.100502
中國科學院戰(zhàn)略性先導科技專項(No.XDA03040000)、國家自然科學基金(No.11305203)、國家磁約束核聚變能發(fā)展研究專項(No.2014GB1120000)資助
張澍,男,1990年出生,2011年畢業(yè)于中國科學技術大學,博士研究生,從事蒙特卡羅粒子輸運研究工作,核能科學與工程專業(yè)
孫光耀,E-mail: guangyao.sun@fds.org.cn
Supported by Strategic Priority Research Program of Chinese Academy of Sciences (No.XDA03040000), National Natural Science Foundation of China(No.11305203), National Special Program for ITER (No.2014GB1120000)First author: ZHANG Shu, male, born in 1990, graduated from University of Science and Technology of China in 2011, doctoral student, focusing on Monte Carlo particle transport, major in nuclear energy science and technology
2016-05-26,
2016-07-07