首页 > 其他分享 >ADCIRC+SWAN耦合模型使用流程

ADCIRC+SWAN耦合模型使用流程

时间:2024-09-10 21:25:59浏览次数:10  
标签:文件 模型 SWAN 风场 耦合 官网 ADCIRC

0、前言

        由于我发现,关于风暴潮耦合模型ADCIRC+SWAN,能够在网上找到的资料实在是少之又少,所以特此打算写一系列的有关该模型的使用流程。

1、软件介绍

        在这里或许有人会问,到底什么是ADCIRC?什么是SWAN?为什么会有两个模型,而ADCIRC+SWAN又是什么 ?

        我的理解是:ADCIRC是一个风暴潮模型,用于模拟在风场和气压场条件下(当然,这个模型支持很多种风场模式,不同的模式需要的输入不同,下文会讲到)的沿海增水的过程,主要是用于模拟由于输入导致的海水变化,这种变化包括水位的升降和海水的流速以及流动方向等。而SWAN是一个波浪模型,同样的也是考虑风场和气压场条件下对波浪的影响,主要是用于模拟由于输入导致的波高、波周期和波向的变化。

        这两个模型可以单独使用,即单独运行ADCIRC(模拟的就是沿岸增水和流速等变化)和单独运行SWAN(模拟的是海水产生的波浪信息)。当然也可以联合使用,也就是我们说的耦合模型ADCIRC+SWAN,换句话说就是,海水的水位和流速这些变化不仅仅是受到风场和气压场的影响,还会受到海水本身产生的波浪信息的影响,反之亦然,波浪信息除了受到风场输入的影响外,也会受到水位等信息对它产生的影响,即在运行ADCIRC+SWAN的过程中,SWAN产生的波辐射应力会修改来自ADCIRC的水位和水流,从而与SWAN相互交换,以进一步更新波辐射应力,从而达到两者耦合的效果。

2、源代码获取

        ADCIRC模型的源代码需要向ADCIRC官网申请, 官网(https://adcirc.org/)首页底部明确写明了申请的条件,只需要向官方发送邮件,说明原因即可。

        SWAN模型的源代码获取相对比较简单,只需要直接访问官网点击下载即可,官网网址:SWAN官网,手册及源码网址:手册及源代码

3、源代码编译

        至于源码编译,是一个比较繁琐的过程,而编译教程,有很多UP主和博主,也给出了比较详细的过程,而且软件的编译也不是该模型的学习重点,即使你不会编译也不影响后期的使用,这里就不再阐述,大概流程如下:

  • 确定编译器:我使用的是GNU系列的编译器(gcc gfortran g++)
  • NetCDF安装、MPICH2安装、CMAKE安装
  • 设置环境变量
  • ADCIRC安装 

        最后安装成功之后就会出现以下四个程序,大家使用的时候可以把这四个程序单独拿出来和其他输入文件(下面会讲到)放到一个文件夹里以便于使用。

而具体编译流程,大家可以参考很多大佬写的文章:

https://www.bilibili.com/read/cv22603731/?spm_id_from=333.976.0.0

https://zhuanlan.zhihu.com/p/480153896

https://zhuanlan.zhihu.com/p/393743862

4、输入文件

大家需要制作的ADCIRC的输入文件有:

节点属性文件fort.13:设置了每个节点的性质,最典型的就是曼宁系数的设置

网格信息文件fort.14:包括格点信息、网格信息、边界信息

控制文件fort.15:记录了你所建立模型的参数设置

风场文件fort.22:这个很好理解,有风的输入才会产生风暴潮,对吧

4.1 节点属性文件 fort.13

        该文件记录了网格中每个节点的属性,包括Tau0等参数,此外还有常见的曼宁系数等都是在该文件中设置的,可以使用官网的程序(节点属性文件制作工具)进行制作,较为方便,大致如下:

4.2 网格信息文件 fort.14

        该文件生成方式有SMS软件和matlab两种,而我则是以matlab生成一个大概的文件,然后再到SMS里面进行细部的修改,matlab使用的程序是OceanMesh2D,较为简单,程序和手册可以在GitHub(https://github.com/CHLNDDEV/OceanMesh2D)获取,另外该程序需要的依赖包m_map也可以在这里(https://www.eoas.ubc.ca/~rich/map.html)获取。

        然后是全球海岸线数据和水深数据,有了这两个数据,才能制作出网格文件,我使用的是GSHHS海岸线数据(GSHHS数据),而全球水深数据是GEBCO(GEBCO数据)。

        将以上所有数据准备好之后就可以生成fort.14文件,格点信息、网格信息、边界信息分别对应如下:

4.3 控制文件 fort.15

        此文件是运行 ADCIRC 模型所必需的,包含运行 ADCIRC 所需的大部分参数,包括坐标类型、干湿分离、运行时间步长和输入时间步长、输出文件设置等,每个参数的具体解释,可以在官网(fort.15文件官网)找到,制作出来的文件大概如下:

4.4 风场文件 fort.22

        选择不同的风场文件,格式不尽相同,ADCIRC支持大概20多种风场格式,我使用的是Holland风场(NWS=8 or 308)和ERA5风场模型(NWS=5 or 305),更多的风场格式也可以查看官网(fort.22文件官网)查看,Holland风场模型的文件如下所示:

4.5 SWAN文件 fort.26 和 文件 swaninit

        如果只是单独运行ADCIRC,不考虑SWAN的耦合,那么以上文件即可满足要求,但如果是做耦合模型的,就需要加入这两个文件,fort.15文件是ADCIRC模型的控制文件,而fort.26文件则是SWAN模型的控制文件,两者都会对模拟的时间段进行设置,而这个时间段需要彼此对应,不然运行的时候就会出现报错,该控制文件的制作可以参考使用手册(使用手册),fort.26如下所示:

        最后将所有文件制作完成之后,与编译好的程序放到同一个文件夹下,之后在终端输出相关命令就可以成功运行了,制作好的所有文件如下:

5、运行命令

  • source ~/.bashrc_adcirc        #激活环境变量
  • ./adcprep --np 4 --partmesh   #网格文件划分,4为使用的核数
  • ./adcprep --np 4 --prepall       #其他文件划分
  • mpirun -np 4 ./padcirc            #并行运行计算

6、输出文件

运行结束之后,会输出很多相应的文件,此处列出比较重要的几个文件:

全局水深fort.63:记录了风暴潮水位信息(ADCIRC输出文件)

全局流速fort.64:记录了风暴潮水流流速信息(ADCIRC输出文件)

全局有效波高swan_HS.63:记录了波浪有效波高(SWAN输出文件)

全局平均波向swan_DIR.63:记录了波浪平均波向(SWAN输出文件)

全局波峰周期swan_TPS.63:记录了波浪波峰周期(SWAN输出文件)

        以上是运行结束之后输出的所有文件,里面的大概内容,此处以fort.63为例,如下所示:

        这是水位信息,其它的输出文件格式也和该文件类似,除fort.64(水流流速)和fort.74(风速)以外,至于为什么不同,大家应该都想得到,水流流速和风速是矢量,在绿色部分的数据那里,会有两列数据,分别是x方向上的数据和y方向上的数据,除此之外,其他所有信息都和输出的水位文件的格式一样。

7、数据可视化

        好了,以上就是ADCIRC+SWAN耦合模型所有的流程了,后面内容就是数据可视化问题,但这部分就不进行过多的介绍了,毕竟我也不是计算机专业的,可视化操作,我只会面向复制粘贴编程,然后搞懂每一行代码的作用,最后成为自己的代码,最后画出来的图,大概就是这样,实在是难以搬上台面。


有科研问题、模型编译以及后续需求的读者
可以联系⬇⬇⬇⬇⬇⬇

闲鱼号:tb419451591
闲鱼昵称:会思考的鸣人

标签:文件,模型,SWAN,风场,耦合,官网,ADCIRC
From: https://blog.csdn.net/elpsycongroo_/article/details/142109076

相关文章

  • 基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调
       将用案例实训,教授如何集成多源数据,依托ArcGISPro和R语言环境,采用“活力-组织力-恢复力-贡献力”(VORS)模型定量测算生态系统健康指数(EHI);如何从经济城镇化(GDPD)、人口城镇化(POPD)和土地城镇化(ULP)构建城镇化指数(UL)测算模型;如何定量测算长时序城镇化水平及生态系统健康状况,利用......
  • Java 工程解耦即高内聚低耦合
      工程结构和模块不断地从JAVA 的单体应用中分离 。单体应用结构只有一个项目结构,有一 个项目文件包 。 刚开学习计算机JAVA 编程的时候,JAVA 项目分为JAVAEE 和JAVASE. 标 准的JAVA 类库jdk  是基础的JAVA 开发工具箱,没有绑定任何商业开发的工具包 。......
  • Comsol 共用声固耦合边界与热粘性声学边界的亥姆霍兹腔体超材料板精准隔声设计
    声子晶体可分为局域共振型声子晶体和布拉格散射型声子晶体,由于布拉格声子晶体需要的结构尺寸往往很大,不便于实际应用; 而基于局域共振型机理的声子晶体能够实现“小体积控制大波长”,因而有更加广泛的应用,其中利用Helmholtz共鸣腔是局域共振型机理的典型应用,近年来......
  • 电路基础 ---- 耦合
    1耦合的概念与类型在模拟电路中,耦合指的是通过某种方式将两个或多个电路部分连接在一起,使得它们之间能够传递信号或电能。耦合的主要目的是在不干扰各电路部分正常工作的情况下,实现信号的有效传输。常见的耦合方式包括电容耦合、电感耦合、变压器耦合、直流耦合和光电耦合。1.1......
  • COAWST V3.8初学记录002(第二部分001:手册算例运行篇--单独运行ROMS和单独运行SWAN)
    COAWSTV3.8初学记录我是一个完完全全的海洋数值模式初学者,此前没有接触过任何海洋数值模式,在学习COAWST模式的过程中非常难受(起码从安装到算例的运行,是完完全全一个人独立学习完成,此前有求助过一些师兄和老师,但是他们也是爱莫能助,主要是距离太远,我这边的情况他们也不甚了......
  • Spring使用实现类注入为什么会导致高耦合度(举例)
    场景描述假设我们要开发一个日志记录器组件,记录日志的方式可能有多种实现:控制台输出、文件输出、甚至是发送到远程服务器。为了实现这个功能,我们可以定义一个Logger接口来抽象日志记录功能,然后根据不同的需求创建不同的实现类。1.接口注入的实现方式首先,我们定义一个Logger......
  • 一个升级的多租户权限管理系统,组件化,模块化,轻耦合,高扩展企业级的应用框架,功能强大(
    前言在现代软件开发中,多租户权限管理系统是企业级应用中的一个关键组件。然而,现有的一些框架,如RuoYi,虽然提供了一些基本的功能,但在面对更复杂的企业级需求时,如原生的MyBatis使用、复杂的分页处理,以及一些高级功能支持上,仍然存在一些不足和痛点。为了解决这些问题,并提供一个更......
  • C#:深入理解接口及低耦合等周边知识
    接口是完全未实现逻辑的类,纯虚类,只有函数成员,且都为public.换句话说:接口是函数成员全都是abstractpublic类型的抽象类.文章目录接口==契约声明接口接口是引用类型实践价值接口与as运算符显示接口成员实现紧耦合及解决方法解决方法:接口隔离接口==契约定义......
  • 气象水文耦合模WRF-Hydro建模技术
    原文链接:气象水文耦合模WRF-Hydro建模技术https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247610398&idx=4&sn=34b4bbed4c74dcbbb0ac19ef8dcdaaff&chksm=fa8271f9cdf5f8ef34ea6f721736a2fbbf8be896744ab7e46caa571c52a30628f056b4bd6964&token=200634784&......
  • 【FMC155】基于VITA57.1标准的2路500MSPS/1GSPS/1.25GSPS 14位直流耦合AD采集FMC子卡
     板卡概述       FMC155是一款基于VITA57.1标准的,实现2路14-bit、500MSPS/1GSPS/1.25GSPS直流耦合ADC同步采集FMC子卡模块。该模块遵循VITA57.1规范,可直接与FPGA载卡配合使用,板卡ADC器件采用ADI的AD9680芯片,该芯片具有两个模拟输入通道和两个JESD204B输出数据通道对,可......