当前位置: 首页 > news >正文

波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)

SWAN模型编译与波浪折射模拟(Test of the refraction formulation)

  • 编译过程
  • 算例简介
  • 参数文件
    • 文件头(HEADING)
    • 计算区域和网格
    • 地形数据
    • 边界条件
    • 物理模块设置
    • 输出设置
    • 执行参数
  • 模拟结果

由于工作原因,最近开始接触波浪模型,所以学习一下SWAN,顺便做个记录、

SWAN是由Delft大学开发的第三代波浪模型,它基于动谱平衡方程,考虑了波-波的非线性作用,对近海、
与模型原理相关的内容详见以下论文:

  1. Booij, N., R.C. Ris and L.H. Holthuijsen, 1999, A third-generation wave model for coastal regions, Part I, Model description and validation, J. Geophys. Res. C4, 104, 7649-7666.1
  2. Ris, R.C., N. Booij and L.H. Holthuijsen, 1999, A third-generation wave model for coastal regions, Part II, Verification, J. Geophys. Res. C4, 104, 7667-7681.2

目前,SWAN模型支持结构化矩形网格、曲边矩形网格、非结构化三角形网格。本人暂时从简单的结构化矩形网格开始学习。

希望大家能留言,来相互交流!

SWAN主页:https://swanmodel.sourceforge.io/
用户手册:https://swanmodel.sourceforge.io/online_doc/swanuse/swanuse.html
原理手册:https://swanmodel.sourceforge.io/

编译过程

这里主要介绍SWAN模型在windows系统下WSL子系统环境中的编译过程。该过程与swash模型代码的编译过程类似(详见在windows 11的WSL上上编译SWASH模型)。

本次尝试所使用的平台是windows 11系统下的ubuntu 18.04.6 LTS子系统,代码版本为swan41.45(下载链接)。

编译代码前我们需要安装gfortran和MPI库。安装指令如下

sudo apt-get update
sudo apt-get install gcc
sudo apt-get install gfortransudo apt-get install mpich

之后,再安装编译代码所需的make工具:

sudo apt-get install make

首先,解压代码包文件,并在wsl输入指令以进入该文件夹。之后,输入make config以形成新的macro.inc文件(暂不涉及NETCDF库的运用)。
接下来,我们将通过make ser(串行)或make mpi(并行)生成可执行文件 swan.exe。

并行运行swan程序的指令格式如下:

./swanrun -input [inputfile] -mpi [n]

其中,[inputfile]表示.sws文件的名称,n表示并行的线程数。

串行运行swan程序的指令格式如下:

./swashrun -input [inputfile] 

算例简介

该算例模拟了一个理想的方形区域中波浪触壁折射等过程。该算例的输入文件可在SWAN官网下载,下载连接是https://swanmodel.sourceforge.io/download/zip/refrac.tar.gz。

参数文件

参数文件或控制文件.swn包含文件头(HEADING)、输入(MODEL INPUT)和输出(OUTPUT REQUESTS)这三部分,最终以STOP指令表示结束。$ 或 ! 符号表示注释,即以 $ 或 ! 开头的行不会被读取,仅有注释作用。
其中文件头包含了算例的名称;输入部分包含了网格、初始条件、边界条件、数值方法等;输出部分定义了文件格式、输出次数等。

文件头(HEADING)

在本算例控制文件a11refr.swn中,文件头如下:

PROJ 'a11refr' 'A11'

它表示了模拟算例的名称为‘a11refr’,模拟的组次为A11。

此外,文件头部通常还包括了SET、MODE等指令,用于设置模拟参数等,本例中暂不介绍,都采用默认值。值得注意的是,MODE指令设置了模拟的空间维度与运行模式,如下图所示;在默认情况下,模拟是平面二维的稳态模拟。
在这里插入图片描述

计算区域和网格

设置计算区域与网格的指令如下:
在这里插入图片描述

CGRID 0. 0. 0. 20000. 4000. 25 100 SECTOR 80. 130. 100 0.05 0.25 40

模型采用结构化的矩形网格(默认REGular),前三个参数分别为表示计算域原点的坐标及计算域与x轴正方向的夹角;在本算例中,这三个参数均为零,即计算域的长宽方向分别于x、y轴正方向平行,且计算域原点于笛卡尔坐标系原点一致。
模型在x、y方向上的长度分别为xlenc = 20000.0 m和ylenc = 4000.0 m,x、y方向上的网格数分别是25和100个。
模型并未模拟全波向(CIRcle,即模拟了0 ~ 360°方向上所有波的谱)的波浪,而只考虑了部分波向上的波浪(SECtor);在本算例中,模型计算了80 ~ 130°方向上的波浪,并将该方向均分了mdc = 100个小份进行离散。在频率上,模型考虑了频率范围在 0.05 ~ 0.25 Hz的波浪,msc = 40 表示频域上离散的网格数。
值得注意的是,除频域外,其余部分的离散方式都采用均匀离散,而频域上采用等比数列的方式离散。以本算例为例,离散后的频域为:

    0.05000.05210.05420.05640.05870.06110.06370.06630.06900.07180.07480.07780.08100.08440.08780.09140.09520.09910.10320.10740.11180.11640.12120.12610.13130.13670.14230.14820.15430.16060.16720.17400.18120.18860.19640.20440.21280.22160.23070.24010.2500

地形数据

地形数据通过以下指令读入:

INPGRID BOTTOM 0. 0. 0. 1 1 20000. 4000.
READINP BOTTOM 1. 'a11refr.bot'  1 0 FREE

在这里插入图片描述
首先通过INPGRID定义了一个地形数据的网格,这个网格区域的原点也是(0.0, 0.0),并且它的长度方向与x轴的夹角为0;地形数据在x、y方向上的范围分别有20000 m、4000 m。
数据文件通过READINP指令从a11refr.bot文件中读入,读入数据都变成原数据的fac = 1.0倍,数据文件中不包含heading(nhedf = 0)。此外,数据格式的形式为第一类(idla = 1)。
在这里插入图片描述
结合.bot文件中的数据可知,本算例的地形如下图所示。
在这里插入图片描述

边界条件

设置模型边界条件的指令如下:

BOU SHAPE GAUSS 0.01 PEAK DSPR POWER
BOUN SIDE S CCW CON PAR 1. 10. 120. 500.

设置模型边界需要两步。首先,指定边界处的波浪谱,如下所示。本算例选择了高斯谱(GAUSS),并指定了其中的参数σfr=0.01\sigma_{fr}=0.01σfr=0.01,指定谱峰周期为波浪的特征周期,入射波在波向上的分布采用POWER形式。在此情况下,入射波的方向在一定范围内呈摆动的状态。
在这里插入图片描述
第二步是设置设置边界条件的添加位置,如下图所示。在本算例中,边界被添加到南边界上;边界处的波浪参数设置为恒定状态,并指定了特征波高为1.0 m,谱峰周期为10.0 s,谱峰波浪的方向为120°,POWER模式中的系数值m = 500。
在这里插入图片描述

物理模块设置

OFF QUAD
OFF BREA
OFF WCAP

本算例关闭了三个模块,即不考虑四波相互作用(QUAD)、不考虑水深变化所致波浪破碎(BREA)、 不考虑白浪耗散(WCAP)。

输出设置

CURVE 'CTA11' 10000. 0.  100  10000. 4000.
TABLE 'CTA11' HEAD DIST HS TM01 DIR DEP RTP DSPR
TABLE 'CTA11' NOHEAD 'a11ref01.tab' DIST HS  DIR DEP RTP

本次模拟将输出一个a11ref01.tab文件,该文件将输出在结束时刻,线段(10000,0) - (10000, 4000)上的101个100等分点上的物理量。这些物理量包含与(10000,0)的距离、特征波高、平均波周期(绝对)、平均波向、水深、峰值波高(相对值),共六列数据。

POINTS 'loc' FILE   'a11refr.loc'
SPEC   'loc' SPEC1D 'a11ref01.spc'
TABLE  'loc' HEAD   'a11ref01.tbl' HS RTP TM01 TM02 FSPR

在这里插入图片描述
本次模拟还将输出一系列点上物理量的时间序列,这些点的坐标详见a11refr.loc文件。输出数据包括一个一维的谱数据文件a11ref01.spc、一个数据列表文件a11ref01.tbl,文件中包含了物理量有特征波高、峰值波高、平均波周期(基于波能谱)、平均波周期(基于上跨零点)、无量纲的频谱范围宽度。

执行参数

TEST 1,0
COMPUTE
STOP

由于本算例是恒定条件运行,因此没有设置起止时间、时间步长等参数,仅写入COMPUTE指令即可。

模拟结果

以下对比了模拟所得特征波高(Hs)、平均波向(Dir)结果与对应的解析解结果,如下图所示。图中的红色圆圈表示模拟值,黑线表示解析值。解析解数据在输入文件压缩包中。
在这里插入图片描述


  1. https://doi.org/10.1029/98JC02622 ↩︎

  2. https://doi.org/10.1029/1998JC900123 ↩︎

http://www.xdnf.cn/news/1305145.html

相关文章:

  • yolo安装
  • es7.x中分片和节点关系以及查看节点数
  • WEB安全--Java安全--Servlet内存马
  • 前端基础知识版本控制系列 - 01( 对版本管理的理解)
  • pyqt5无法显示opencv绘制文本和掩码信息
  • Map、Dictionary、Hash Table:到底该用哪一个?
  • 机械学习---- PCA 降维深度解析
  • 朗空量子与 Anolis OS 完成适配,龙蜥获得抗量子安全能力
  • redis-保姆级配置详解
  • 焊接机器人保护气体效率优化
  • 18- 网络编程
  • NAS播放器的新星,一站式全平台媒体库管理工具『Cinemore』体验
  • 文档对比(java-diff-utils)
  • HTML5新增属性
  • 【机器学习深度学习】OpenCompass 评测指标全解析:让大模型评估更科学
  • 从前端框架到GIS开发系列课程(26)在mapbox中实现地球自转效果,并添加点击事件增强地图交互性
  • 物联网(IoT)系统中,通信协议如何选择
  • 20250815在荣品RD-RK3588-MID开发板的Android13下调通TP芯片FT8206
  • 智慧零碳园区——解读2025 零碳产业园区实施路径规划【附全文阅读】
  • MqSQL中的《快照读》和《当前读》
  • SQL182 连续两次作答试卷的最大时间窗
  • C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏
  • Linux入门(十九)定时备份数据库
  • 第1篇_Go语言初探_环境搭建与HelloWorld
  • 802.11 Wi-Fi 竞争机制深度分析:CSMA/CA 与 DCF
  • 机器学习之PCA降维
  • Scrapy + Django爬虫可视化项目实战(二) 详细版
  • 轴机械臂cad【7张】三维图+设计说明书
  • 25.Linux 聚合链路与软件网桥
  • XXL-TOOL v2.0.0 发布 | Java工具类库