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

本文详述了使用NHWAVE模型模拟规则波经过椭圆形浅滩时的变形过程。通过配置地形、网格、边界条件和波浪参数,展示了模型的编译运行步骤。模拟结果显示,NHWAVE模型与物理实验结果高度吻合,验证了模型的准确性。
摘要由CSDN通过智能技术生成

波浪变形模拟算例学习(Wave transformation over an elliptical shoal)

本blog介绍了NHWAVE模型自带算例 Wave transformation over an elliptical shoal on a sloped bottom的编译运行;并分享了该算例配置文件、模拟结果的学习记录。
关于该算例的详细描述见NHWAVE手册或Ma等人的论文 1

此外,本人在NHWAVE原版源代码基础上,更新了垂向网格分层百分比可指定、被动示踪剂输移、温度场输入输出等模块,并修正了植被水流模型中的一些BUG。有兴趣的朋友请上我的GitHub下载代码。

欢迎各位朋友对此提出指导意见;大家可以一起交流,共同进步!

算例简介

该算例模拟的是一列规则波经过一个椭圆形浅滩时的变形、传播规律。这个算例也是广泛地被应用于模型三维模拟性能的测试。相应的物理实验详见 Berkhoff et al. (1982) 2
模拟所需参数文件在代码包 /examples/berkhoff/work 目录下,初始水深文件在 /examples/berkhoff/input 目录下。关于本算例的后处理,可参考本人编写的MATLAB脚本(传送门)。

在NHWAVE中,我们先建立一个垂向三维的数值水槽来模拟该算例。计算域范围为 x = -12 ~ 18 m,y = -10 ~ 10 m。其底部形状的平面图如下图所示。椭圆形浅滩位于一个坡度为1/50的平面海滩上,海滩等高线的梯度方向与x轴间的夹角为20°。
在这里插入图片描述
波浪从左侧边界(x = -13 m)入射,入射波是周期为1.0 s、波高为4.64 cm的规则波。在右侧边界,设置一个厚度为3 m的海绵层(x = 14~17 m)。此外,边界y = ±10 m处采用自由滑动边界条件。模型的模拟时间为 t = 0 ~ 30 s。
为了观察波浪形状与变形情况,我们设置了如下图所示的 (1)~(8) 共8个测量断面。它们的位置如下:

断面编号位置
(1)x = 1.0 m
(2)x = 3.0 m
(3)x = 5.0 m
(4)x = 7.0 m
(5)x = 9.0 m
(6)y = -2.0 m
(7)y = 0 m
(8)y = 2.0 m

地形与网格

计算区域地形如上图所示。若将原坐标系 (x, y) 绕原点顺时针旋转20°,得到和海滩正交的坐标系 (x’, y’),则上图的平面海滩水深 h 可以用以下式子表示:
h = { 0.45 , x ′ < − 5.84 m a x ( 0.07 , 0.45 − 0.02 ( 5.84 + x ′ ) ) , x ≥ − 5.84 h= \begin{cases} 0.45,\quad &x'<-5.84 \\ max(0.07, 0.45-0.02(5.84+x')),\quad &x \geq -5.84 \end{cases} h={0.45,max(0.07,0.450.02(5.84+x)),x<5.84x5.84
由于最小水深为0.07 m,波浪不会发生破碎。此外,椭圆形浅滩的外轮廓为:
( x ′ 3 ) 2 + ( y ′ 4 ) 2 = 1 ( \frac {x'}{3} )^2 + ( \frac {y'}{4} )^2 = 1 (3x)2+(4y)2=1
在上述范围(椭圆形轮廓)内,浅滩的高度d为:
d = − 0.3 + 0.5 1 − ( x ′ 3.75 ) 2 − ( y ′ 5 ) 2 d = -0.3 + 0.5 \sqrt{\smash[b]{1 - ( \frac {x'}{3.75} )^2 - ( \frac {y'}{5} )^2}} d=0.3+0.51(3.75x)2(5y)2
对于非浅滩范围内的位置,d = 0。因此,初始状态下,计算域内的静水深为 h - d。

对于此算例网格采用 Δx = 0.025 m ,Δy = 0.05 m 的均匀网格;在垂向上,设置3个均匀的σ层。
本算例的网格配置见input.txt的DIMENSION、GRID和VERTICAL GRID OPTION部分。

! --------------------DIMENSION---------------------------------
! cell numbers
Mglob = 1200
Nglob = 400
Kglob = 3

! ------------------------GRID----------------------------------
! grid sizes
DX = 0.025
DY = 0.05

! ---------------------VERTICAL GRID OPTION--------------------
! IVGRD = 1: uniform; 2: exponential
IVGRD = 1
GRD_R = 1.1

模型的地形配置见input.txt的BATHYMETRY部分及depth.txt文件。

运行参数配置

本算例的核心是波浪模拟,故本blog重点学习波浪参数及边界条件的设置。在NHWAVE中,首先需要确定边界条件:

! -------------------BOUNDARY_TYPE--------------------------------
! bc_type=1: free-slip
!         2: no-slip
!         3: influx
!         4: outflux (specified eta)
!         5: bottom or wall friction
!         6: radiation bc
BC_X0 = 3
BC_Xn = 1
BC_Y0 = 1
BC_Yn = 1
BC_Z0 = 1
BC_Zn = 1-

上述参数除了左侧(X0)为入射边界外,其余边界均设置为自由滑移的墙面。要注意的是,右侧(Xn)实际上并非自由滑移的墙面,而是海绵边界处;它在SPONGE LAYER部分中设定:

! ---------------- SPONGE LAYER ------------------------
! DHI type sponge layer
! need to specify widths of four boundaries and parameters
! set width=0.0 if no sponge
SPONGE_ON = T
Sponge_West_Width =  0.0
Sponge_East_Width =  3.0
Sponge_South_Width = 0.0
Sponge_North_Width = 0.0

上述参数表示,海绵边界层设置在右侧(East),厚度为3 m。

对于左侧入射的波浪,其参数设定在WAVEMAKER部分:

! ---------------------WAVEMAKER------------------------------
! wavemaker
! AMP - wave height; PER - wave period; DEP - incident water depth
! THETA - incident wave angle
! LEF_SOL - left boundary solitary wave, need AMP,DEP
! LEF_LIN - left boundary linear wave, need AMP,PER,DEP
! LEF_CON - left boundary cnoidal wave, need AMP,PER,DEP
! LEF_STK - left boundary stokes wave, need AMP,PER,DEP
! LEF_TID - left boundary tide wave, has to specify in subroutine
! LEF_JON - left boundary for JONSWAP spectrum
! RIG_LIN - right boundary linear wave, need AMP,PER,DEP,THETA
! INI_ETA - initial surface elevation specified in subroutine initial
! INT_LIN - internal wavemaker for linear wave
! INT_CON - internal wavemaker for cnoidal wave
! INT_SOL - internal wavemaker for solitary wave
! INT_JON - internal wavemaker for JONSWAP spectrum
! INT_SPC - internal wavemaker for 2D spectrum (need spc2d.txt)
! INT_IRR - internal wavemaker for irregular wave (need irr2d.txt)
! FLUX_LR - impose flux at both left and right boundaries
! FOCUSED - left boundary focusing wave packet (isolated whitecap)
! WAV_CUR - left boundary coexisting waves and currents
WAVEMAKER = LEF_LIN
AMP = 0.0464
PER = 1.0
DEP = 0.45
THETA = 0.0
CUR = 0.0
sd_return = 0.0

即设定为线性规则波,并给定了波高(AMP,单位为m)、周期(PER,单位为s)和初始水深(DEP,单位为m)。

此外,在模拟过程中采用可变时间步长,满足Courant数等于 0.5。这是在 input.txt 的COURANT_NUMBER部分:

! --------------------COURANT_NUMBER---------------------------------
CFL = 0.5

模型的编译运行

首先,将/examples/berkhoff/work 目录下的 input.txt 和 /examples/berkhoff/input 目录下的 depth.txt 复制到nhwave所在的运行文件夹内。之后设定并行相关的参数,编译运行程序。

模拟结果处理

读取结果文件夹中的 time文件和eta_[number] 文件(这里的number表示时刻,如"eta_00001")数据。
time文件中有一列数据,如下所示:

   20.016969706377331     
   20.038931270969076     
   20.055400133224612     
   20.077355868674253     
   20.099308572432008     
   20.115771605211396     
   ... (以下省略)

其中数据为时刻(s)。且此处数据的顺序与eta_[number] 文件的number对应。eta文件中有自由水面高程(m)。利用eta文件中的水位场,计算最后五个波的数据,得到各处波浪的波高。
对比模型计算与物理实验中(1)~(8)断面处在的波高分布,如下图所示(图源为NHWAVE手册)。
图中的圆圈为物理实验结果,实线为模拟结果。可以看出,NHWAVE模拟结果与实验的拟合程度十分高。
在这里插入图片描述


  1. Ma G , Shi F , Kirby J T . Shock-capturing non-hydrostatic model for fully dispersive surface wave processes[J]. Ocean Modelling, 2012, 43-44(22-35):22-35. ↩︎

  2. Berkhoff J , Booy N , Radder A C . Verification of numerical wave propagation models for simple harmonic linear water waves[J]. Coastal Engineering, 1982, 6(3):255-279. ↩︎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值