前言
ADCIRC模型(The ADvanced CIRCulation model)是由北卡罗来纳大学海洋科学研究所的Luettich教授和美国圣母大学的Westerink教授联合研制的,是一个计算机程序系统,用于解决二维和三维的随时间变化的自由地表环流和运输问题。目前应用领域包括:
- 模拟潮汐和风驱动的循环
- 预测风暴潮和洪水
- 近岸海上作业
- 。。。
另外ADCIRC+SWAN耦合模型也是目前沿海风暴潮,热带气旋诱发的沿海洪水模拟最先进和广泛使用的模型。本文就简短介绍如何使用ADCIRC模型来模拟飓风诱发的风暴潮,包括数值稳定网格的建立,网格的可视化,Bathymetric 数据的收集,参数的设置,以及ADCIRC模型的后处理。最重要的是,本文中所采用的软件Aquaveo SMS 13.0 全功能版本可以联系作者获取(snailtech_info@163.com)。
图1. ADCIRC模型模拟飓风登陆期间风暴潮、风速和潮流流速。
1. 网格构建
数值稳定的计算网格是模拟风暴潮的前提。ADCIRC模型采用的是灵活的非结构网格 (Unstructured mesh) 来划分计算区域。这使得我们可以在深海区域采用粗糙分辨率的网格,在浅水海岸采用精细的网格来同时满足计算和精度的需求。
1.1 利用软件SMS13.0来划分网格
SMS13软件允许操作者自定义研究区域。一种比较常用的方案是在获得研究区域内的海岸线数.shp文件。具体步骤如下:
- 利用DEM数据或者Bathymetry数据生成0m等高线,作为后续网格划分的边界区域。这一步可在ArcGIS上操作,最终生成研究区域的线要素数据。如图2A所示:
- 利用SMS提供的网格编辑工具来转换shp图层,重新编辑边界层上的节点分布。流程为:GIS Data --> 右键shp文件并选择convert生成feature objects --> 利用左侧编辑栏修改相应Map Data模块中的边界 --> 修改图层的type为mesh generator --> build polygons --> 左侧编辑工具选择
后双击边界区域,修改网格生成方式 --> 点击菜单栏feature objects选项卡下方的map to 2d mesh即可。具体步骤可参见官方教程, 有相应的demo。
- 最终生成结果如图2D所示
图2: 与ArcGIS结合生成网格。
需要注意的是,这里采用的方法生成的计算网格都比较粗糙,并且采用的是paving的方式。不能够根据所选区域的深浅来自动划分网格的分辨率。并且不能保证数值稳定,在求解过程中容易发散,最终终止程序运行。个人建议采用LTEA或者自己写代码来生成网格。 通过自动插值,并控制CFL<0.5来确保数值稳定,生成的网格如下:
图3:数值稳定网格
2. 数据获取与预处理
2.1 数据源
上述网格生成过程中,设计到两个基本数据,一个是DEM数据,另一个是Bathymetry数据。这里提供两个网站,DEM数据可以从SRTM获取,Bathymetry数据可从NOAA获取。当然,我们国家海域可用数据目前分辨率普遍不高。各位也可根据自身的需要,自己实地测量,比较方便的是将数据记录为.xyz形式或者.nc形式,便于后续网格插值。如果做飓风风暴潮模拟的,飓风数据可在美国NRC中心获取.atcf或者.hurdat2格式的飓风路径数据。
2.2 数据预处理
Bathymetry数据和DEM数据都可以通过.nc的形式被sms13读取。只需利用GIS软件裁剪相应的栅格数据,只需覆盖研究区域即可。另外建议如果有.xyz 文本格式记录的测深数据,优先选择此格式。sms13对这类文本格式的数据读取速度很快,便于快速的插值计算。
3. ADCIRC模型参数设置
图3:ADCIRC模型参数设置
3.1 潮汐数据
右键boundary边界Tidal attributes(图3G),添加M2,S2,N2,K1,O1,Q1,P1,K2等八个主要潮汐分量。潮汐数据可从Aquaveo SMS 官网获得,也可使用TPXO全球潮汐数据库
图4: 潮汐数据库
3.2 模型参数
- NOLIBF, 控制浅水方程中底面摩擦类型。可选项有线性变化,二次,混合非线性,Mannings N at Sea Floor,Chezy Friction Coefficient等。可根据Land cover数据来进行赋值计算。
- TAU0, 影响 ADCIRC 控制方程中的数值扩散程度。具体来说,它会影响决定广义波浪连续性方程 (GWCE) 的原始部分和波浪部分的相对贡献的加权因子。具体可参照下表。可利用SMS内置的栅格计算工具,根据点的点的深度自动赋值。
图4: TAU0的设置
- 其他fort.13的节点属性可以参照adcirc wikipedia page里面的内容进行设置。另外推荐Marsooli R & Lin N 等人的研究工作,具体讲解了参数如何取值。
3.3 构造飓风风场
ADCIRC模型可以接受多种形式定义的风场信息。具体可参照fort.22文本。一种常用的方式是通过.atcf形式的飓风路径来构造对称风场, 即NWS=8。本案例采用了这种方法。结果下图所示
图5:飓风轨迹信息读取及对称风场构造
4 模拟风暴潮
4.1 运行并行程序PADCIRC
在设计好参数之后,接下来可以运行模型。对于中小规模的计算任务,一般节点数量在20w一下的时候,可以利用ADCIRC计算,但是当节点数量非常大,时间步长很短的时候,建议采用ADCIRC模型的并行程序PADCIRC运行,可以极大效率地缩短计算周期。另外对于超大计算需求的,作者可协助将计算任务部署在服务器上。
图6: 并行模拟风暴潮,极大缩短计算时间
4.2 输出设置
ADCIRC可输出水面高程(fort.63),水流平均速度(fort.64)、风速(fort.74)和风压(fort.73)的实时变化数据。以及各输出变量对应的模型运行的全局最大值和最小值文件(maxele.63、maxvel.63、maxwvel.63、maxrs.63、minpr.63)。
图7:模型输出文件控制
4.3 设置观测点
ADCIRC 同样允许操作者在感兴趣的区域设置观测点,以行使实时监督该区域的水位,流速以及风场的变化。只需要在点击左侧编辑栏的Creat feature point然后将其属性设置为ADCIRC Station。最后通过与output选项卡内相似的操作来控制观测站的数据输出。
4.4 运行ADCIRC
在上述网格以及模型参数设置完之后,点击保存和运行。SMS13软件运行如下:
图8: 运行ADCIRC模型
4.5 结果可视化
模型输出的结果(fort.63,64,73,74)是时序变化的。时间步长为用户预先定义。SMS13提供了丰富的栅格和矢量可视化工具。如下图所示为水流速度和水面高程:
图9:结果的可视化
5 总结
整个建模过程分为:构建数值稳定网格、加载潮汐数据、模型参数设置、构建风场和结果可视化等步骤。当然本案例只是展示如何执行完整的adcirc模型用于模拟风暴潮,不能直接用于科学研究。