[Ocean Modelling for Begineers] Ch4. Long Waves in a Channel
Ch4. Long Waves in a Channel
简介
本章主要介绍明渠中分层流体模拟。练习包括浅水表面波,风暴潮、内波和分层流体模拟。
4.1 有限差分法详细介绍
4.1.1 泰勒公式
4.1.2 前差,后差,中心差分
4.1.3 二阶微分格式
4.1.4 截断误差
考虑函数:
\]
方程的导数为:
\]
如果我们使用中心差分近似一阶导数,可以得到
\]
相对误差与绝对误差的比值
\]
使用有限差分法模拟波动过程时,只有波长范围内有10个以上节点时才能准确描述波动过程。
4.2 表面重力长波
4.2.1 单个过程分析
NS方程描述了在不同长度尺度和时间尺度上同时发生的流体运动过程。在某些假定下,我们可以取出单独过程进行研究。比如说,当周期远远小于惯性周期时,我们可以忽略科氏力的作用而对控制方程进行简化。
4.2.2 浅水过程
4.2.3 浅水模型
我们做以下假定:
- 波周期相比惯性周期很小,可以忽略科氏力作用
- 假设摩擦力为一阶近似
- 忽略非线性项,即波速远远超过颗粒运动速度
4.2.4 控制方程
4.2.5 波动解析解
4.2.6 动画演示
4.2.7 数值计算网格
使用交错网格,流速节点位于相邻水位节点中间。
4.2.8 有限差分格式
4.2.9 稳定准则
CFL准则:
\]
其中\(h_max\)为模型中最大水深。
4.2.10 一阶Shapiro过滤器
为了去掉数值振荡现象,使用Shapiro过滤算子(Shapiro, 1970):
\]
其中\(\epsilon\)为光滑系数。
4.2.11 陆地与海岸边界
没有流动可以穿过陆地与海岸线,除非特殊处理的计算格式(4.4节介绍)。由于交叉网格设置,海岸线需要特殊的条件,若\(h_{k+1}\le 0\)时\(u_k\)为0。
4.2.12 侧向陆边界条件
模型计算网格从\(k=1\)到\(k=nx\),边界处单元\(k=0\)与\(k=(n+1)x\)也需要赋值才能计算。一种方法是令边界闭合,横向对流流速为0:
\]
0梯度边界条件用来消除物理量在边界处扩散流量,边界条件为:
\]
周期边界条件表示为:
\]
4.2.13 模块化Fortran脚本
4.2.14 Fortran代码结构
4.3 练习5:明渠中长波运动
4.3.1 目标
4.3.2 说明
水渠长1km,网格步长10m,设置101个节点单元,包括最后一个边界节点,计算时间步长0.1s,满足CFL准则。
- 溃坝算例
平衡状态水深为10m,在中心110m宽长度上初始高程提升1m - 波动算例
在中点处放置一个造波板,以1m振幅,20s周期造波
4.3.3 简单代码及动画示例
4.3.4 结果
4.4 练习6: 干湿算法
4.4.1 目标
可以模拟洪水传播到陆地过程。例如由潮水或风暴潮淹没海岸情形。
4.4.2 重新定义干湿
湿节点定义为水深超过某一阀值\(h_{min}\),通常为几厘米左右。这个阀值作用主要是避免水体退去后湿单元出现负水深,从而使模型崩溃。干单元通常定义为\(h\le h_{min}\)
4.4.3 淹没干单元
4.4.4 淹没边坡
- \(h_0\)为静水位置距底部距离,在有水地方为正值,而在陆地为负值
- 初始高程在湿单元处为0,在干单元与陆地高程相同\(\eta = -min(0, h_0)\)
- 真正水深为\(h = h_0 + \eta\),这个水深用来判别干湿节点
4.4.5 终极测试(?Ultimate Crash Tests)
两组测试算例,长1km,网格步长10m,设置101个节点单元,前后增加一个边界节点,计算时间步长0.1s,满足CFL准则。
- 小岛最高位于水面0.5m,左侧200m有一风暴潮,初始高程1m,两侧为陆边界
- 斜坡上有一高程为4m水坑
代码几处要点
- 过滤算子只在湿节点作用,跳过干节点
- 流速更新只考虑两种情形,两侧为湿节点;由湿节点流向干节点
- 干湿阀值水深为0.1m,水深越小越精确(随着阀值减小,水体下流速度变快?)。但是此值不能为0,否则水体前进速度会变得特别快,并不符合实际。
存在问题
- 干湿水深阀值如何确定?
4.5 多层浅水模型
4.5.1 基础
在浅水假定条件下,可以构造每一层都是密度为常数多层浅水模型。第i层的动量方程为
\]
其中,\(i\)为层数,每层水体动压为
P_1 = \rho_1 g \eta_1 \cr
P_2 = P_1 + (\rho_2 - \rho_1) g \eta_1 \cr
\cdots
\end{array}\]
更一般形式为
\]
连续方程为
\]
其中第i层水体厚度为
\]
这里\(h_{i, 0}\)为第i层水体未扰动时的厚度。
4.6 练习7:长波在分层流体中运动
4.6.1 目标
模拟重力波在不同密度分层水体内运动情况
4.6.2 算例描述
顶层水体密度为\(1025 kg/m^3\),第二层至底层密度分别从\(1026 kg/m^3\)到\(1026.5 kg/m^3\)逐渐增加。模型由左侧正弦振荡自由表面驱动,振幅为1s,周期分别为10s与2h。两侧为封闭的固边界。计算时间取10倍波动周期,时间步0.25s。
4.6.3 代码
4.6.4 结果
4.6.5 内波相速度
在两层流体模型中,内部长波的相速度为:
\]
这里\(g'\)为相对重力加速度,\(h^* = h_1 h_2 /(h_1 + h_2)\)为相对水深,对\(h_2\gg h_1\)时,\(h*\approx h_1\)。因此内部波运动速度远小于表面重力波,与表面重力波一样,在静压模型中,无法模拟内波破碎现象。
4.6.6 封闭水体自由振荡
在波节点处,流体只进行水平运动而没有垂向运动。与之相反,在波腹处流体只有垂向运动。
4.6.7 Merian 定律
4.6.8 海湾内协同振荡(Co-oscillations)
[Ocean Modelling for Begineers] Ch4. Long Waves in a Channel的更多相关文章
- [Ocean Modelling for Begineers] Ch3. Basics of Geophysical Fluid Dynamics
Ch3. Basics of Geophysical Fluid Dynamics 本章主要介绍 标量与向量 Newton定律 波动与恒定状态流体 浮力 科氏力 守恒律 紊动 N-S方程 3.1 Un ...
- [Ocean Modelling for Begineers] Ch5. 2D Shallow-Water Modelling
本章利用二维浅水模型研究表面重力波的不同物理过程,如湖水中风驱动流体,正压不稳定机制(?the barotropic instability mechanism).本章将为读者介绍使用不同的对流格式模 ...
- Meditation Guide
Meditation “Stop!!!” don’t we just scream[vi. 尖叫:呼啸:发出尖锐刺耳的声音:令人触目惊心 ] this in our minds when the da ...
- NeoOcean - Unity3D Ocean Waves Simulation
GMail: bearworks8@gmail.com QQMail:196221347@qq.com QQ Group:391782326 Dropbox Demo: https://www.dr ...
- Basic EEG waves 四种常见EEG波形
Source: https://www.medicine.mcgill.ca/physio/vlab/biomed_signals/eeg_n.htm The electroencephalogram ...
- Waves – 赞!超炫交互体验的点击动画效果
Waves 点击效果的灵感来自于谷歌的材料设计,很容易使用.只需要引入 waves.min.css 和 waves.min.js 到 HTML 文件中可以使用了.采用 touchstart 与 tou ...
- Mongodb Manual阅读笔记:CH4 管理
4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- VPS -Digital Ocean -初试以及VPN的搭建
首先恭喜你找到这篇博客,它会带你走出困境. 题外话(请忽略):一直以来想搞一个VPS,终于在自己的刺激下试了一下Digital Ocean,还没有使用很长时间不做太多评论,唯一给我的感觉是各种操作还算 ...
- Waves:类Material Design 的圆形波浪(涟漪)点击特效插件
Waves:类Material Design 的圆形波浪(涟漪)点击特效插件 2014/08/06 分类:前端开发, 素材分享 浏览:6,734次 来源:原创 1个评论 6,734 ...
随机推荐
- Java 是编译型语言还是解释型语言?
Java首先由编译器编译成.class类型的文件,这个是java自己类型的文件.然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行.因此Java是一种半编译半解释的语言,理解这种意思即可 ...
- 【二食堂】Beta - 事后分析
事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Beta阶段我们首先要对文本标注方式进行优化,其次时添加好友系统,实现邀请好友共同标注的功能. ...
- 大闸蟹的项目分析——CSDN APP
大闸蟹的软件案例分析 项目 内容 这个作业属于那个课程 班级博客 这个作业的要求在哪里 作业要求 我在这个课程的目标是 学习软件工程的相关知识 这个作业在哪个具体方面帮我实现目标 从多角度分析软件 一 ...
- 「刷题」THUPC泛做
刷了一下,写一下. T1. 天天爱射击 可以这样想. 我们二分一下每一块木板在什么时刻被击碎. 然后直接用主席树维护的话是\(O(nlog^2n)\)的. 会\(T\),而且是一分不给那种... 那么 ...
- UVA-1498 Activation
UVA-1498 DP应该是肯定的,设 f [ i ] [ j ] 表示现在对中共有 i 人,Tomato在第 j 个,出现所求情况的概率,我们可以很(简单的)艰难的列出下列方程: f[i][1] = ...
- 大厂面试题分享:如何让(a===1&&a===2&&a===3)的值为true?
当我第一次看到这一题目的时候,我是比较震惊的,分析了下很不合我们编程的常理,并认为不大可能,变量a要在同一情况下要同时等于1,2和3这三个值,这是天方夜谭吧,不亚于哥德巴赫1+1=1的猜想吧,不过一切 ...
- 运用Tomcat创建第一个web项目
一.了解Web服务器软件 在部署tomcat前,先说一说web服务器软件是用来干什么的?简单来说,就是web容器,可以部署web项目,让用户通过浏览器来访问这些项目. 1.常见的javaweb服务器软 ...
- 攻防世界 web4.cookie
题有几种解法,我有点懒,懒的打开burp,所以可以直接在浏览器拿flag, 首先访问ip/cookie.php,提示:See the http response 接着F12查看响应头 给你cyberp ...
- i love dingning
"如果你爱一个人,不是下课给人家买买水,不是短信发来发去,也不是周末一起出来唱唱歌聊聊天吃吃饭,而是做一个出色的人.以后的以后,可能还有别的人爱她,你要做的,是把别人都比下去.你要变得优秀, ...
- centos7 永久修改hostname
1.修改 /etc/sysconfig/network ,重启后还是原来的主机名 2.百度有说明是/etc/rc.d/rc.sysinit下的脚本还原了还来主机名,问题是的我主机上没有这个脚本 3.执 ...