蘆 韡,馮晉濤,潘俊杰
(中國核動力研究設計院 核反應堆系統設計技術重點實驗室,四川 成都 610041)
擁有高質量的設計工具是開展科研、工程設計任務的前提條件。核反應堆專用科研、設計計算軟件匯集了人們對核反應堆的理論方法、設計、建造和運行經驗,它是核反應堆研發設計的必備工具。隨著計算機技術與性能的發展和提升,各種高性能計算服務器的應用,核反應堆計算軟件的計算規模不斷增大,網格數量和精細度不斷增加,計算數據也越發龐大,對核反應堆計算軟件進行海量數據存儲管理和輸入/輸出 (I/O)能力的需求急劇的增長,因此,對輸入輸出技術和數據存儲管理技術就提出了新的要求。
HDF是用于存儲和分發科學數據的一種自我描述、多對象文件格式,由美國國家高級計算應用中心NCSA(National Center f or Superco mputing Applications,NCSA)創建,以滿足不同群體的科學家在不同工程項目領域的需要,其最新版本HDF5格式在氣象、遙感等領域已有較為深入應用。本文針對反應堆堆芯數據管理、存儲的需求,包括組件各項中子學參數、堆芯各項中子學參數以及堆芯各項熱工水力參數等,通過對HDF5數據格式及其編程技術的研究,將其成功應用到中國核動力研究設計院自主研發的先進中子學柵格計算軟件KYLIN-2、先進節塊法堆芯三維少群中子學計算軟件CORCA-3D、堆芯熱工水力子通道分析軟件CORT H中,為反應堆堆芯數值計算領域的數據存儲管理和高效I/O問題提供解決方案。
HDF5文件是一個由兩種基本數據對象 (分別為HDF5群組Groups與HDF5數據集Datasets)存放多種數據的容器,其中HDF5群組是包含0個或多個HDF5對象以及支持元數據(metadata)的一個群組結構,HDF5數據集是數據元素的一個多維數組以及支持元數據。
使用群組和數據集時在許多方面類似于使用UNIX的目錄和文件。HDF5文件里的對象經常通過它的絕對路徑來引用。通過群組和數據集,可以存儲任意復雜的數據。HDF5文件以層次式的方式,有效地建立了文件內各個對象之間的組織方式和邏輯包含關系,如圖1所示。

圖1 HDF5數據模型結構Fig.1 Data model of HDF5
在創建HDF5數據格式文件時,需創建 “群組+數據集”,創建群組時需在應用程序中指明群組的位置、名稱,而創建數據集時則需指明數據集的位置、名稱、數據類型、數據空間以及創建特性列表等信息。
1)數據類型:HDF5數據集包含兩種數據類型,元數據類型 (ato mic)和復合數據類型(co mposite)。元數據類型在API層面上不能分解稱更小的數據類型單位,它包括整型(integer),浮點型 (float),日期和時間 (date and ti me),字符串 (string),比特域 (bitfield),非透明 (opaque)等數據類型。復合數據類型是一個或多個元數據類型 (和/或這些數據類型的數組)的集合。如圖2所示。

圖2 HDF5數據類型Fig.2 Data type of HDF5
2)數據空間:HDF5數據空間描述了數據數組的維度。數據空間或者是數據點的有規則的N維數組 (稱為簡單數據空間),或者是由其他方式組成的更加通用的數據集合 (稱為復雜數據空間)。數據集的維數可以是固定的,也可以是可擴展的。數據空間也可以描述一個數據集的一部分,這就使得對選取的數據集進行局部I/O操作成為可能。
3)創建特性列表:創建數據集時,HDF5允許用戶指定原始數據在磁盤上如何組織和壓縮。這個信息存放在數據集創建特性列表中,并傳遞給數據集接口。磁盤上的這個原始數據集能被連續存放 (與內存管理中的線性方式相同)、分成大塊 (chunks)存放、外部存放等。
反應堆數值計算領域常用的計算數據文件組織形式為十進制或二進制文本文件。與傳統的數據存儲方式比較,HDF5文件能較好地解決了計算數據存儲管理中存在的眾多問題,HDF5文件在反應堆數值計算領域的主要優勢如下。
(1)數據存儲規模無限性
除去硬件條件的限制,HDF5數據格式不限制單個HDF5文件大小,常規數據文件一般不能超過2 GB,而HDF5對超過4 GB的數據仍然能夠流暢存儲。隨著反應堆數值計算精細化程度的不斷提高,相應的計算數據可能達到數GB的規模,HDF5文件能有效的解決反應堆堆芯計算數據的存儲規模問題。
(2)跨平臺和可移植性
目前主流的核反應堆計算軟件的編程語言包括C、C++、Fortran和Java等,運行平臺包括UNIX、Linux和Windows等。HDF5文件具有C、C++、Java和Fortran90程序接口,支持跨平臺在不同的計算環境中訪問數據,很好地適用于不同編程語言及不同運行平臺的核反應堆計算軟件。
(3)并行I/O和局部I/O機制
反應堆堆芯計算數據規模較為龐大,I/O時間開銷較大。HDF5文件實現了一個虛擬文件層,提供了多I/O機制,HDF5并行I/O驅動器支持并行的將數據寫到HDF5文件中,局部I/O機制則能使開發者和用戶精確地讀寫需要的數據,從而提高數據訪問效率。
此外,HDF5文件還具有自我描述性、數據模型通用性、數據存儲機制的靈活性等特點,豐富的層次結構為用戶表達數據結構提供了極大的靈活性。
HDF5函數庫 (HDF5 Librar y)提供了一系列應用程序接口 (API)。這些API提供用于創建、存取、處理HDF5文件和對象的例程。HDF5函數庫是由C語言實現的,也包括使用Fortran90和Java編寫的外殼函數,可通過以上3種編程語言在反應堆數值計算軟件中進行HDF5庫文件的讀寫操作。
使用HDF5函數庫進行數據寫入的流程如圖3所示。
HDF5中用來存放數據與定位數據的結構分別是DataSet與hyperslab,使用方式如下:
1)定義數據集之前,需指定數據類型、數據空間、存儲布局、未初始化數據的默認值等。數據集具有可擴展性,可以根據需要實時擴展數據空間的大小,從而改變數據集的容量。
2)讀或寫數據都需要先定位到數據空間中將要讀寫的位置,然后調用write或者read函數進行存取。
在層次數據結構中,訪問HDF5文件內容類似Windows文件夾的訪問:首先指定文件名,然后以 “/”來表示層次。例如/Data/FEMData表示某文件內名稱為Data的群組下面的一個名為FEMData的群組或者數據集。HDF5支持部分I/O,可以有選擇性的讀寫數據集中的一部分數據,這個機制是通過Hyperslab來實現的。部分I/O避免多余的內存數據拷貝,保證數據存儲效率。

圖3 HDF5文件數據寫入流程Fig.3 Write flow of HDF5
針對反應堆組件中子學、堆芯中子學、堆芯熱工水力數據的特點,設計并實現了基于HDF5數據格式的組件中子學參數庫KYMRES(KYlin-2 Main RESults databank)、堆芯中子學參數庫COMRES(COrca-3D Main RESults databank)和堆芯熱工水力參數庫THMRES(Ther mal-Hydraulic subchannel Main RESults databank)。
HDF5文件的優勢之一是能對數據進行分層分組的管理,上述參數庫的設計正是基于這一思路開展。
組件中子學參數庫KY MRES包含基礎數據和狀態點 (分支)數據,其中基礎數據可劃分為幾何數據、選項數據等,狀態點數據則包括二維分布場:中子通量、功率、截面、核密度等。KYMRES庫具體形式如圖4所示。KYMRES庫成功應用于先進中子學柵格 (組件)計算軟件KYLIN-2中,可用于軟件自身再啟動計算和下游堆芯計算。同時,KYMRES庫包含了KYLIN-2軟件所有的計算輸出信息,由于HDF5文件提供了專用的文件查看工具,因此KYMRES庫也可作為KYLIN-2軟件的輸出文件提供給用戶使用。
堆芯中子學參數庫COMRES是具備主要信息的堆芯三維數據庫,提供給堆芯后續計算使用,如首循環裝載計算、換料循環裝載計算提供給堆芯燃耗計算的堆芯數據庫、歷史循環的燃耗計算提供給換料循環裝載計算的堆芯數據庫。
COMRES庫包含基礎數據和燃耗步數據,其中基礎數據包括不隨燃耗或堆芯狀態變化的堆芯幾何模型、燃料組件裝載等信息,燃耗步數據則包括隨燃耗或堆芯狀態變化的堆芯總體、組件、節塊、燃料棒等不同尺度下的各類參數,如中子通量、功率、截面、核密度等參數的三維分布場。
COMRES庫具體結構形式如圖5所示,COMRES庫已成功應用于先進節塊法堆芯三維少群中子學計算軟件CORCA-3D中。
T H MRES庫用于存儲堆芯各項熱工水力參數,依次按照時間步、子通道號、軸向節塊號的層次進行數據的存儲,存儲的數據主要包括流體物性 (流體密度、比焓、導熱率),堆芯熱工水力參數 (溫度、壓力、流量),本構關系式參數(摩擦系數、空泡份額、含氣率、換熱系數),DNBR參數 (不同CHF關系式計算的結果)等。
T H MRES庫具備完整的堆芯三維熱工水力參數信息,成功應用于堆芯熱工水力子通道分析軟件CORT H等軟件中,可用于CORT H軟件再啟動計算,堆芯溫場、流場三維顯示,同時也可作為堆芯多專業耦合系統的接口數據。
T H MRES庫第一層為瞬態時間步,第二層為各子通道編號,第三層為子通道內軸向節塊,第四層為節塊內各參數,具體結構形式如圖6所示。

圖4 KYMRES庫結構Fig.4 Structure of KYMRES

圖6 THMRES庫結構Fig.6 Structure of TH MRES
本文針對核反應堆計算軟件對海量數據存儲管理和輸入輸出 (I/O)的需求,對HDF5數據格式進行了深入研究,掌握了HDF5數據格式的結構、特點、優勢,以及HDF5文件的編程接口。針對中國核動力研究設計院自主研發的先進中子學柵格計算軟件KYLIN-2、先進節塊法堆芯三維少群中子學計算軟件CORCA-3D、堆芯熱工水力子通道分析軟件CORT H對數據存儲和處理的需求,設計并實現了基于HDF5文件格式的組件參數庫KY MRES、堆芯參數庫COMRES、子通道參數庫T H MRES。
KY MRES、COMRES和T H MRES庫對數據進行了分層分組的管理和存儲,KYLIN-2、CORCA-3D和CORT H軟件能夠十分便捷的對指定的群組或數據集進行存取,無需將數據庫整體讀入,節省了內存開銷,并且軟件能夠同時對多個群組或數據集進行存取操作。對局部I/O和并行I/O的支持使得上述數據庫I/O效率得到了大幅提升。滿足了反應堆堆芯數值計算軟件的數據存儲管理和高效I/O的要求。