二维波浪变形模拟算例(Wave transformation over an elliptic shoal on a sloped bottom)

  • 算例简介
  • 模型配置
  • 网格及参数设置
    • 网格与地形
    • 初始条件与边界条件
    • 数值求解方法
    • 模型输出
    • 计算时间
  • 模拟结果

SWASH是由Delft大学开发,用于模拟非静压条件下的水动力/波浪运动的数值模型。
与模型原理相关的内容详见以下论文:

  1. SWASH: An operational public domain code for simulating wave fields and rapidly varied flows in coastal waters (Marcel Zijlema, Guus Stelling, Pieter Smit)1
  2. Computation of free surface waves in coastal waters with SWASH on unstructured grids (Marcel Zijlema)2
  3. An accurate and efficient finite-difference algorithm for non-hydrostatic free-surface flow with application to wave propagation3

其中,第2篇论文是描述了SWASH模型的最新功能,即可支持非结构化三角形网格。不过,本blog提及的算法、设置以swash结构化网格的版本为对象,不涉及非机构化网格。
注:有些指令、参数已经在前面的博客中进行讲解了,故之后不会再详细说明;相关内容详见之前的博文。也希望大家能留言,来相互交流!

SWASH主页:https://swash.sourceforge.io/
模型手册:https://swash.sourceforge.io/online_doc/swashuse/swashuse.html

算例简介

本算例模拟了波浪在不规则地形上的传播、折射和衍射现象。本例的模型配置详见Stelling&Zijlema3或Berkhoff et al. (1982)4。最后,我们将模拟结果与Berkhoff等人的论文中物理实验的结果数据进行比较。
模型输入文件及相关数据可下载于【传送门】。若要运行此算例,请将此下载的压缩文件解压,将含有.sws、 .wlv和 .bot后缀的所有文件解压至swash.exe所在的目录下。

模型配置

首先,定义一个与笛卡尔坐标系(x,y)夹角为-20°的坐标系统(x’,y’)。

斜坡与x’的方向平行。在斜坡上有一个凸起的小丘,小丘的平面形态为:
( x ′ 4 ) 2 + ( y ′ 3 ) 2 = 1 (\frac{x'}{4})^2 + (\frac{y'}{3})^2 = 1 (4x′​)2+(3y′​)2=1
小丘的高度d为:
d = − 0.3 + 0.5 1 − x ′ 5 2 − y ′ 3.75 2 d=-0.3+0.5\sqrt{1-\frac{x'}{5}^2 - \frac{y'}{3.75}^2} d=−0.3+0.51−5x′​2−3.75y′​2 ​
所以底高程可以表示为:
z b = − m i n [ 0.45 , m a x ( 0.10 , 0.45 − 0.02 ( 5.84 + y ′ ) ) ] + d z_b=-min[0.45,max(0.10,0.45-0.02(5.84+y'))]+d zb​=−min[0.45,max(0.10,0.45−0.02(5.84+y′))]+d
波浪从y = -10m的位置向着y的正方向入射。入射波为规则波列,波高H0=4.64cm,周期T0=1.0s。
为最大限度地消除波浪反射和边界对计算域的影响,在模型的另一端y = 20m处设置了辐射边界和海绵层的组合。
此外,物理实验中观测了8个断面的水面变化,这8个断面的位置如上图所示。

补充:计算域三维图如下所示

网格及参数设置

网格与地形

本算例的参数文件中省略了MODE和vert,故采用默认设置 MODE TWODimensional和VERT 1,即该数值模型为平面的二维模型。

CGRID -10. -10. 0. 20. 35. 200 700
$
INPGRID BOTTOM -10. -10. 0. 200 700 0.1 0.05
READINP BOTTOM 1. 'l41berkh.bot' 3 0 FREE

计算域的原点为(-10.0m, -10.0m),两个方向的长度分别为20.0m和35.0m。x方向和y方向的网格数分别为200和700,即Δx=0.1m、Δy=0.05m。
之后,通过INPGRID和READINP指令,从文件’l41berkh.bot’中读取地形数据。

初始条件与边界条件

INIT zero
$
BOU SIDE S CCW BTYPE WEAK CON REG 0.0464 1.
BOU SIDE N CCW BTYPE RADIATION
SPON UP 5.

INIT指令设定初始条件,即初始时水位和流速值均为零。
BOU指令设定了模型的下侧(South, y=0)和上侧(North, y=35.0m)边界的边界条件。对于波浪入射的下侧边界,模型采用了弱反射(WEAKREFL)设置,并设定规则入射波(REGular)的波高h=0.0464m,波周期per=1.0s。对于上侧边界,本模型采用了辐射边界(RADIATION)和海绵边界层(SPON)的组合。其中SPON之后的’UP‘同’North‘;参数width=5.0m,表示,边界层的厚度为5.0m(即海绵边界层位于y=15~20m)。这样的组合能够最大程度地消解传播到上侧边界的波浪,并壁面上侧边界对波浪的反射。

数值求解方法

NONHYDrostatic
$
DISCRET CORRDEP MINMOD

首先,模型采用了非静压模拟(NONHYDrostatic)的方法。对于流速计算点的水位和水深,模型采用MINMOD函数进行求解。

模型输出

QUANT DIST HEXP 10.
$
CURVE 'sect1' -4.75 1. 380  4.75  1.
CURVE 'sect2' -4.75 3. 380  4.75  3.
CURVE 'sect3' -4.75 5. 380  4.75  5.
CURVE 'sect4' -4.75 7. 380  4.75  7.
CURVE 'sect5' -4.75 9. 380  4.75  9.
CURVE 'sect6'  2.00 0. 220  2.00 11.
CURVE 'sect7'  0.00 0. 220  0.00 11.
CURVE 'sect8' -2.00 0. 220 -2.00 11.
$
TABLE 'sect1' NOHEAD 'section1.tbl' TSEC XP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect2' NOHEAD 'section2.tbl' TSEC XP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect3' NOHEAD 'section3.tbl' TSEC XP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect4' NOHEAD 'section4.tbl' TSEC XP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect5' NOHEAD 'section5.tbl' TSEC XP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect6' NOHEAD 'section6.tbl' TSEC YP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect7' NOHEAD 'section7.tbl' TSEC YP WATL VEL OUTPUT 000030.000 0.01 SEC
TABLE 'sect8' NOHEAD 'section8.tbl' TSEC YP WATL VEL OUTPUT 000030.000 0.01 SEC
$
BLOCK 'COMPGRID' NOHEAD 'l41ber01.mat' LAY 3 XP YP BOTL WATL VKSI VETA OUTPUT 000030.000 5 SEC

输出格式设置分为两部分,第一部分设置了各个监测面的位置。这部分的设置采用CURVE指令,它可在计算域中定义一条线,之后可输出该线上的物理量的值;其格式如下:

'sname’为各个监测面的名字,xp1和yp1表示所画线条的起始点,而xp和yp表示所画线条的结束点。在这条线上,我们将定义int等分点(即在两个端点内生成 int-1 个点);之后,这些点上的值将被输出。以CURVE ‘sect1’ 为例,我们可知这条线的从
(-4.75m, 1.0m)开始,到(4.75m, 1.0m)结束,并在线段内部生成其(380-1)个等分点。

第二部分则利用TABLE指令,以无文件头表格的方式输出了各个监测点的x或y坐标(XP或YP)、水位(WATL)、三个方向的速度(VEL),以及对应的时间(TSEC);输出数据即水位时间序列。输出的时间间隔为 0.01s,起始时间为 00:00:30.000。
此外,通过该TABLE的设置可以看出,每个tbl文件共含6列数据(第一列为时间,第二列为坐标值,第三列为水位值,第四到第六列为x、y和z方向的流速值)

计算时间

COMPUTE 000000.000 0.01 SEC 000035.000

模型计算时间为 35.0s,时间步长为 0.01s。

模拟结果

将参数文件 l41ber01.sws,以及地形数据文件 l41ber01.bot 复制到swash.exe的同一目录下。并在这个目录下,用如下指令运行:

swashrun l41ber01

运行完成后,得到6个结果数据文件 sect[N].tbl,其中N=1~8。
通过脚本mkplot.m将结果数据绘制成点线图。matlab脚本文件也在压缩包中。同时,mkplot.m实现了数据的可视化,于是得到 berkhoff_1.png 文件(图片如下)。

实验数据也附在压缩包的berkhoff_output.gif中,图中的红色圆圈即物理实验数据点。berkhoff_output.gif同时也是论文所示的模拟结果与物理实验结果的对比图(如下)。


  1. https://doi.org/10.1016/j.coastaleng.2011.05.015 ↩︎

  2. https://doi.org/10.1016/j.compfluid.2020.104751 ↩︎

  3. https://doi.org/10.1002/fld.595 ↩︎ ↩︎

  4. https://doi.org/10.1016/0378-3839(82)90022-9 ↩︎

非静压模型SWASH学习(6)——二维波浪变形模拟算例(Wave transformation over an elliptic shoal on a sloped bottom)相关推荐

  1. 非静压模型NHWAVE学习(7)——波浪变形模拟算例学习(Wave transformation over an elliptical shoal)

    波浪变形模拟算例学习(Wave transformation over an elliptical shoal) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NH ...

  2. 非静压模型NHWAVE学习(8)——波浪破碎模拟算例学习(Breaking solitary wave run-up)

    NHWAVE波浪破碎模拟算例学习(Breaking solitary wave run-up) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NHWAVE模型自带算 ...

  3. 非静压模型NHWAVE学习(11)——孤立波爬坡测试算例(Solitary Wave on a Simple Beach)

    NHWAVE孤立波爬坡测试算例(Solitary Wave on a Simple Beach) 测试算例简介 实验设置 与解析解对比的模拟(Analytical Solution) 最大爬升高度的模 ...

  4. 非静压模型SWASH学习(2)——潮汐波模拟算例(Tidal wave flow over an irregular bed)

    潮汐波模拟算例(Tidal wave flow over an irregular bed) 算例简介 网格.地形及入射波配置 参数设置 网格与地形 初始条件与边界条件 物理参数 数值方法 输出控制 模 ...

  5. 非静压模型SWASH学习(4)——溃坝流模拟算例(Dam break over wet bed)

    溃坝流模拟算例(Dam break over wet bed) 算例简介 模型配置 网格及参数设置 网格和地形 初始条件 边界条件 物理参数 数值格式与参数 输出控制 计算时间 模拟结果 SWASH是 ...

  6. 非静压模型NHWAVE学习(6)——波浪模拟算例学习(Periodic wave over a submerged bar)

    波浪模拟算例学习(Periodic wave over a submerged bar) 算例简介 网格与地形 运行参数配置 模型的编译运行及模拟结果 本blog介绍了NHWAVE模型自带算例Peri ...

  7. 非静压模型NHWAVE学习(9)——波浪破碎RANS紊流模型算例学习(Wave Breaking on a Planar Beach)

    NHWAVE波浪破碎RANS紊流模型算例学习(Wave Breaking on a Planar Beach) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果 本blog介绍了NHWAV ...

  8. 非静压模型NHWAVE学习(13)——模拟淹没锥形岛屿的水流(shallow flows submerged conical islands)

    NHWAVE学习--模拟淹没锥形岛屿的水流(shallow flows submerged conical islands) 算例简介 模型设置 模型参数配置 模型的编译运行及模拟结果 本blog介绍 ...

  9. 非静压模型NHWAVE学习(10)——海底滑坡引体发涌浪的模拟算例(Three-dimensional rigid submarine slide)

    NHWAVE海底滑坡体算例学习(Three-dimensional rigid submarine slide) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果 本blog介绍了NHWA ...

最新文章

  1. sql server 链接到oracle库,读取对应信息
  2. friend keyword 对于模板 并不只不过友元!!!
  3. DevExpress的分隔条控件SplitterControl的使用
  4. Jquery json的超强组合
  5. 欢迎广大测试人员,加入微信群,了解自动化测试的框架,检查点,参数化。...
  6. .net core HttpClient 使用之消息管道解析(二)
  7. 计算机控制技术课程解释与问题答疑
  8. 蓝桥杯——等差素数列(c语言)
  9. 计算机文献检索的步骤实例,数据库检索方法与技巧(上)
  10. 编译原理 —— 四元式和三地址代码
  11. MySQL数据的备份与恢复
  12. [02]Hello World!
  13. 精打教程(144)拼多多一联电子面单修改模板
  14. CFile、CStdioFile、FILE和其他文件操作
  15. 计算机简单易懂知识,如何选购电脑主板?小白装机简单易懂的电脑主板选购知识指南...
  16. 二进制树形搜索算法_二进制搜索
  17. 创业第12天,百度竞价助手3.0正式发布,上传各大软件下载站
  18. python原神抽奖
  19. Android 手机重启问题解决方案
  20. 电脑秘籍奇妙的140个技巧2

热门文章

  1. 03 | ssh基础知识,连接服务器的那些事
  2. 立体声混音没有声音_如何录制来自PC的声音(即使没有立体声混音)
  3. FigDraw 2. SCI 文章绘图必备 R 语言基础
  4. 鸿蒙渊更新公告,《天下3》更新公告(版本2.0.706)
  5. Canvas之绘制时钟
  6. xcode8继续愉快的使用插件
  7. 开源的抖音壁纸即刻取图出现“这张图不见了,联系客服解决吧”的解决办法
  8. B端和C端的产品有何差异
  9. 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发
  10. HEVC (H.265)介绍(转)