文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.222602
中文引用格式: 劉壯,黃小猛. 高分辨率全球非結(jié)構(gòu)網(wǎng)格生成實(shí)踐[J].電子技術(shù)應(yīng)用,2022,48(6):103-106,111.
英文引用格式: Liu Zhuang,Huang Xiaomeng. Generating high-resolution global unstructured meshes[J]. Application of Electronic Technique,2022,48(6):103-106,111.
0 引言
近年來,隨著計(jì)算機(jī)計(jì)算能力的提升與數(shù)值方法的發(fā)展,非結(jié)構(gòu)網(wǎng)格在地球系統(tǒng)模式中得到了越來越多的應(yīng)用[1-2]。不同于結(jié)構(gòu)網(wǎng)格,非結(jié)構(gòu)網(wǎng)格沒有極點(diǎn)附近網(wǎng)格收縮而出現(xiàn)奇異的問題;同時(shí),非結(jié)構(gòu)網(wǎng)格可以更靈活地處理各種邊界條件、實(shí)現(xiàn)局部網(wǎng)格加密等。
在各種非結(jié)構(gòu)網(wǎng)格中,球面質(zhì)心Voronoi網(wǎng)格[3](Spherical Centroid Voronoi Tessellations,SCVT)因具備良好的性質(zhì)而得到廣泛應(yīng)用。生成SCVT一般采用的Lloyd算法[3]是一個(gè)不動(dòng)點(diǎn)迭代算法,其計(jì)算量與生成的網(wǎng)格點(diǎn)數(shù)成正比。為應(yīng)對(duì)快速生成高分辨率SCVT的挑戰(zhàn),Jacobsen等[4]提出了基于區(qū)域分解和球極投影的并行算法,并在GitHub開源了其代碼(MPI-SCVT:https://github.com/douglasjacobsen/MPI-SCVT)。數(shù)值實(shí)驗(yàn)顯示了MPI-SCVT相對(duì)于串行算法的加速效果。
盡管MPI-SCVT可以很好地適用于一般分辨率下SCVT的生成,當(dāng)所需網(wǎng)格的分辨率非常高(例如2 km以下)時(shí),MPI-SCVT的使用會(huì)出現(xiàn)一系列問題。首先,MPI-SCVT內(nèi)置的幾種網(wǎng)格初始化方法生成的網(wǎng)格點(diǎn)質(zhì)量較差,與最終的收斂結(jié)果距離較遠(yuǎn),這使得迭代步數(shù)過多,程序整體運(yùn)行時(shí)間長。其次,高分辨率導(dǎo)致迭代過程中通信的數(shù)據(jù)量大,MPI-SCVT使用的boost MPI(http://www.boost.org)單次通信數(shù)據(jù)量超過一定大小(約2 GB)時(shí)會(huì)出錯(cuò)。再者,MPI-SCVT調(diào)用外部庫Triangle[5]實(shí)現(xiàn)平面Delaunay三角網(wǎng)格[4]的構(gòu)建,當(dāng)單次輸入網(wǎng)格點(diǎn)數(shù)超過約42 600 000時(shí),Triangle無法正常運(yùn)行。最后,高分辨率導(dǎo)致輸出變量較大,使用外部庫NetCDF-CXX無法完成所需NetCDF文件的輸出。
本文詳細(xì)內(nèi)容請(qǐng)下載:http://theprogrammingfactory.com/resource/share/2000004430。
作者信息:
劉 壯,黃小猛
(清華大學(xué) 地球系統(tǒng)科學(xué)系,北京100084)