0 引言
近年来,随着计算机计算能力的提升与数值方法的发展,非结构网格在地球系统模式中得到了越来越多的应用[1-2]。不同于结构网格,非结构网格没有极点附近网格收缩而出现奇异的问题;同时,非结构网格可以更灵活地处理各种边界条件、实现局部网格加密等。
在各种非结构网格中,球面质心Voronoi网格[3](Spherical Centroid Voronoi Tessellations,SCVT)因具备良好的性质而得到广泛应用。生成SCVT一般采用的Lloyd算法[3]是一个不动点迭代算法,其计算量与生成的网格点数成正比。为应对快速生成高分辨率SCVT的挑战,Jacobsen等[4]提出了基于区域分解和球极投影的并行算法,并在GitHub开源了其代码(MPI-SCVT:https://github.com/douglasjacobsen/MPI-SCVT)。数值实验显示了MPI-SCVT相对于串行算法的加速效果。
尽管MPI-SCVT可以很好地适用于一般分辨率下SCVT的生成,当所需网格的分辨率非常高(例如2 km以下)时,MPI-SCVT的使用会出现一系列问题。首先,MPI-SCVT内置的几种网格初始化方法生成的网格点质量较差,与最终的收敛结果距离较远,这使得迭代步数过多,程序整体运行时间长。其次,高分辨率导致迭代过程中通信的数据量大,MPI-SCVT使用的boost MPI(http://www.boost.org)单次通信数据量超过一定大小(约2 GB)时会出错。再者,MPI-SCVT调用外部库Triangle[5]实现平面Delaunay三角网格[4]的构建,当单次输入网格点数超过约42 600 000时,Triangle无法正常运行。最后,高分辨率导致输出变量较大,使用外部库NetCDF-CXX无法完成所需NetCDF文件的输出。
本文详细内容请下载:http://www.chinaaet.com/resource/share/2000004430。
作者信息:
刘 壮,黄小猛
(清华大学 地球系统科学系,北京100084)