静压模型SWASH学习(9)——平底水槽高频驻波算例(Standing short wave in closed basin)

平底水槽高频驻波算例(Standing short wave in closed basin)

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](#1)
  2. Computation of free surface waves in coastal waters with SWASH on unstructured grids (Marcel Zijlema)[2](#2)
  3. An accurate and efficient finite-difference algorithm for non-hydrostatic free-surface flow with application to wave propagation[3](#3)

其中,第2篇论文是描述了SWASH模型的最新功能,即可支持非结构化三角形网格。不过,本blog提及的算法、模型设置以结构化网格版本的swash模型为对象,暂不涉及非机构化网格。

注:有些指令、参数已经在前面的博客中进行讲解了,故之后不会再详细说明;相关内容详见之前的博文。也希望大家能留言,来相互交流!

SWASH主页:https://swash.sourceforge.io/

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

算例简介

本算例模拟了平底水槽中高频驻波的运动,其中涉及了显著的非静压效应。本算例可用于检验非静压模型模拟短波运动的能力,同时也可检测模型的质量、能量守恒特性。

模型输入文件及相关数据可下载于【传送门】。若要运行此算例,请将此下载的压缩文件解压,将含有.sws、 .bot和 .bnd后缀的所有文件解压至swash.exe所在的目录下。

模型配置

本算例的模型区域为一个垂向二维的平底水槽,其水平长度 L x L_x Lx = 20.0 m。初始时刻的水深为 h h h ,初始水位分布满足:
η ( x ) = A c o s ( k x ) \eta(x) = Acos(kx) η(x)=Acos(kx)

式中, A A A = 0.1 m表示振幅, k = 2 π / L k=2\pi/L k=2π/L表示波数,波长L与水槽长度一致。此外,模型的左右两侧均为光滑的垂直壁面,底部为光滑的壁面,且本算例中的水体粘度为零。

为测试不同网格设置的模型效果,本算例配置了如下三种垂向网格:

工况编号 水深/m Δx/m Nσ 备注
1 10 1.0 2 传统交错网格,网格垂向均匀
2 10 1.0 10 传统交错网格,网格垂向均匀
3 100 1.0 13 Kellor-Box网格,网格比例分别为0.05, 0.25, 0.7

网格及参数设置

网格设置

模型的计算域及水平网格通过配置文件.sws中的如下命令指定:

复制代码
MODE DYN ONED

CGRID 0. 0. 0. 20. 0. 20 0

上述的第一行命令指定了模型采用了垂向二维计算域,而CGRID指令指定了计算域的水平长度为20.0 m,且水平上被均分为20个网格。

对于模型的垂向网格设置,三个工况对应的控制指令如下:

  1. 工况1:a13stw01.sws(垂向上有2个均匀的σ层)

    VERT 2

  2. 工况2:a13stw02.sws(垂向上有10个均匀的σ层)

    VERT 10

  3. 工况3:a13stw03.sws(垂向上有3个σ层,从上至下的网格比例分别为5%,25%和70%)

    VERT 3 5. 25. 70.

此外,计算域的底高程(静止水深)通过INPGRID BOTTOM和READINP BOTTOM指令读取。工况1和2对应的指令如下所示(水深为10.0 m,READINP中的fac = 10.0):

复制代码
INPGRID BOTTOM 0. 0. 0. 1 0 20. 1.
READINP BOTTOM 10. 'a13stwav.bot' 1 0 FREE

工况3对应的指令如下所示(水深为100.0 m,READINP中的fac = 100.0):

复制代码
INPGRID BOTTOM 0. 0. 0. 1 0 20. 1.
READINP BOTTOM 100. 'a13stwav.bot' 1 0 FREE

初始条件与边界条件

模型的初始流速为零,初始水位则通过如下指令从a13stwav.wlv文件中读取:

复制代码
INPGRID WLEV 0. 0. 0. 20 0 1. 1.
READINP WLEV 1. 'a13stwav.wlv' 1 0 FREE

由于模型的左右边界都是默认的光滑垂直壁面(封闭边界),因此无需额外通过指令指定左右边界。而模型的底部摩阻力则通过如下指令设置:

复制代码
FRIC CONST 0.
VISC 0.

即底部为光滑壁面,水体粘度为零。

数值求解方法

对于工况1、2,模型设置的指令如下:

复制代码
NONHYDrostatic

DISCRET UPW NONE
DISCRET UPW UMOM V NONE
DISCRET CORRDEP NONE

首先,模型采用了非静压模拟(NONHYDrostatic)的方法,并采用了传统(Standard)的交错网格设置。

对于水平流速,模型采用中心差分格式(UPW NONE)进行计算;对于垂向流速,模型也采用中心差分格式(UPW UMOM V NONE)进行计算;此外,模型中的水位和水深值将基于流速计算点进行中心差分(DISCRET CORRDEP NONE)。

输出设置

模型中首先输出了测点x = 18.0m处的水位变化,输出的时间间隔为0.01 s;对应指令如下:

复制代码
GROUP 'GAUGE' 18 18 1 1
TABLE 'GAUGE' NOHEAD 'a13stw01.tbl' TSEC WATL OUTPUT 000000.000 0.01 SEC

此外,在工况2的模拟中,模型中还输出了测点x = 18.0m处的流速的垂向分布,输出的时间间隔为0.01 s;对应指令如下:

复制代码
GROUP 'GAUGE' 18 18 1 1
TABLE 'GAUGE' NOHEAD 'a13stw02.tbl' TSEC WATL       OUTPUT 000000.000 0.01 SEC
TABLE 'GAUGE'   HEAD 'a13stw02.tab' TSEC ZK VELK VZ OUTPUT 000000.000 0.01 SEC

模拟时间

对于工况1和3,垂向网格数较少,模型的时间步长可设置为0.01 s。对应的指令如下所示:

复制代码
TEST 1,0
COMPUTE 000000.000 0.01 SEC 000030.000
STOP

对于工况2,垂向网格数较多,在此将时间步长缩短至0.002 s。对应的指令如下所示:

复制代码
TEST 1,0
COMPUTE 000000.000 0.002 SEC 000030.000
STOP

模拟结果

首先,将参数文件a13stw01.sws、a13stw02.sws和a13stw03.sws,以及地形数据文件a13stwav.bot 和初始水位a13stwav.wlv复制到swash.exe的同一目录下。并在这个目录下,用swashrun指令依次运行a13stw01、a13stw02和a13stw03。得到结果后,运行数据包中的mkplot.m脚本将数据结果可视化。

测点x = 18.0 m处的水位过程如下图所示:

测点x = 18.0 m处的流速的垂向分布如下图所示(工况2):

图中圆圈数据表示解析解所得流速分布。解析解所得流速分布数据也在数据包中,其文件格式为.dat。


  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 ↩︎

相关推荐
Suckerbin1 小时前
Pikachu靶场-RCE漏洞
学习·安全·网络安全
Rey_family3 小时前
HTML 表单学习笔记
笔记·学习·html
xx24063 小时前
CSS3笔记
笔记·学习·css3
张张张3124 小时前
4.21—4.22学习总结 JavaWeb:HTML-CSS
前端·css·学习·html
姝孟5 小时前
Linux学习笔记2
linux·笔记·学习
虾球xz6 小时前
游戏引擎学习第239天:通过 OpenGL 渲染游戏
c++·学习·游戏·游戏引擎
jonhswei6 小时前
xss学习6
学习·xss
奕天者6 小时前
C++学习笔记(三十六)——STL之排序算法
c++·笔记·学习
-曾牛6 小时前
GitHub创建远程仓库
java·运维·git·学习·github·远程工作