NHWAVE学习——模拟淹没锥形岛屿的水流(shallow flows submerged conical islands)
本blog介绍了NHWAVE模型自带算例 Shallow flows around submerged conical islands with small side slopes 的编译运行;并分享了该算例配置文件、模拟结果的学习记录。
关于该算例的详细描述见 NHWAVE 模型代码包中的说明文件 和 相关物理实验的论文1。
此外,本人在NHWAVE原版源代码基础上,更新了垂向网格分层百分比可指定、被动示踪剂输移、温度场输入输出等模块,并修正了植被水流模型中的一些BUG。有兴趣的朋友请上我的GitHub下载代码。
欢迎各位朋友对此提出指导意见;大家可以一起交流,共同进步!
算例简介
Lloyd和Stansby(1997)设计了一个有着淹没锥形岛的举行水槽,并通过物理实验研究了锥形岛附近的流动。水槽的平面图如下所示。水流从水槽的左侧进入,从右侧流出。
虽然,研究水流在圆柱后尾迹的实验不在少数,但很少有实验研究浅水流在淹没的倾斜障碍物后的尾迹。由于障碍物(锥形岛)始终处于水下,尾迹是由于底部空间变化而产生的。该实验也常被作为测试数值模型的基准实验,以测试模型在理想情况下模拟水流分离区和振荡尾迹的能力。
关于该实验装置和粗糙度系数的讨论请参考Lloyd and Stansby (1997)1。
模拟所需参数文件和初始水深文件在代码包 /examples/current_benchmarks/Steady_flow_over_submerged_obstacle 目录下。
模型设置
该实验中,水槽长9.84m,宽1.5m。在上图所示的坐标系中,锥形岛的中心坐标为(5.0m, 0.76m);其尺寸数据如下图所示。锥形岛的边坡约为8度,水深与岛高之比(L&S论文中的h/hi)=1.10。岛的高度为0.049 m,岛底直径为0.75 m。
在初始时刻,设置平底上的水深为0.054 m。
对于该模型中地形配置,可利用 /Steady_flow_over_submerged_obstacle/generate_bathy 中的plot_bathy.m脚本生成。该脚本会生成水槽底部的等高线云图,而且生成了模型所需的 depth.txt 文件。
本算例选择在Lloyd和Stansby (1997) 论文中使用测试用例SB4_02(文中Table 1)。入流恒定流速为U=0.115 m/s,水深为h=0.054 m,平均流量的雷诺数为Re=6210。水深与岛屿高度之比(L&s论文中的h/hi)=1.10。
模型参数配置
模型在水平方向上采用等距网格,其中,Δx=Δy=0.015m;垂向被均匀分为15个σ层。模型在x和y的网格数分别为656和100。
水槽的左右两侧分别采用了恒定入流和出流边界条件(Orlanski开边界条件);水槽两侧固壁和底面的粗糙高度均设置为1.0×10-5。对于上述的入流出流边界,在input.txt的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 = FLUX_LR
AMP = 0.0144
PER = 10.5
DEP = 0.32
THETA = 0.0
CUR = 0.0
sd_return = 0.75
这里只要选择 FLUX_LR 即可,流速等其余参数均在 nhwave.f 文件内部设置,同样出流边界条件也在 nhwave.f 文件内部。上述内容详见 nhwave.f 文件内 subroutine flux_left_right_boundary 部分。
此外,模型选用了三维的RNG k-ε 紊流模型,具体参数设置如下:
! --------------------VISCOSITY------------------------------
VISCOUS_FLOW = T
IVTURB = 10
IHTURB = 10
PRODTYPE = 3
VISCOSITY = 1.e-6
Schmidt = 1.0
Chs = 0.001
Cvs = 0.001
RNG = T
模型的编译运行及模拟结果
首先,将代码包 /Steady_flow_over_submerged_obstacle/input 目录下的 input.txt、depth.txt和stat.txt 复制到 nhwave 所在的运行文件夹内。之后设定并行相关的参数,编译运行程序。
得到的表面流场结果如下图所示。
此外,还比较了 (x, y, z) = (6.02m, 0.760m, -1.0m) 和 (6.02m, 1.030m, -1.0m) 处的x、y方向速度分量。将它们与物理实验数据(Lloyd and Stansby, 1997)对比, 结果如下;图上圆圈表示物理实验所得数据,实线表示数值模拟所得结果。