当前位置: 首页 > news >正文

傅里叶谱方法-傅里叶谱方法求解二维浅水方程组和二维粘性 Burgers 方程及其Matlab程序实现

3.3.2 二维浅水方程组

二维浅水方程组是描述水波运动的基本方程之一。它主要用于描述近岸浅水区域内的波浪、潮汐等水动力学现象。这个方程组由两个偏微分方程组成,一个是质量守恒方程,另一个是动量守恒方程。浅水方程描述了具有自由表面、密度均匀、深度较浅的液体在重力作用下的流动过程, 用于研究潮波和河流,具体形式如下:
{∂η∂t=−∂(ηu)∂x−∂(ηv)∂y∂u∂t=−v∂u∂y−u∂u∂x−g∂η∂x∂v∂t=−u∂v∂x−v∂v∂y−g∂η∂y(3-34)\left\{\begin{array}{l} \frac{\partial \eta}{\partial t}=-\frac{\partial(\eta u)}{\partial x}-\frac{\partial(\eta v)}{\partial y} \\ \frac{\partial u}{\partial t}=-v \frac{\partial u}{\partial y}-u \frac{\partial u}{\partial x}-g \frac{\partial \eta}{\partial x} \\ \frac{\partial v}{\partial t}=-u \frac{\partial v}{\partial x}-v \frac{\partial v}{\partial y}-g \frac{\partial \eta}{\partial y} \end{array}\right.\tag{3-34} tη=x(ηu)y(ηv)tu=vyuuxugxηtv=uxvvyvgyη(3-34)
其中, η\etaη 代表水深, ttt 为时间, xxxyyy 是水平面上的坐标, u、vu 、 vuvxxxyyy 方向上的流速, ggg 为重力加速度。物理上,这个方程组描述了水波在浅水区域内的传播和运动。它假设水深相对于波长很小,即波长远大于水深,这样就可以近似将水流速度视为垂直于水深方向的,这被称为“浅水近似”。

在实际应用中,二维浅水方程组被广泛用于预测海洋和河流等水动力学现象。例如,可以用它来预测风浪的形成和演变,或者用它来优化海岸线防护结构的设计。

需要注意的是,二维浅水方程组是一种近似模型,它对真实的水动力学现象只能提供近似的描述,实际情况可能更加复杂。因此,在具体应用中,需要根据实际情况选择合适的模型并对其进行修正和调整。对方程组 (3-34) 的等号两边做 x−yx-yxy 空间上的二维傅里叶变换, 得到偏微分方程组:
{∂η^^∂t=−ikxF{F−1[η^^]F−1[u~^]}−ikyF{F−1[η~^]F−1[v^]}∂u^^∂t=−F{F−1[v^^]⋅F−1[ikyu^^]+F−1[u⃗^]⋅F−1[ikxu^]}−igkxη^^∂v^∂t=−F{F−1[u^]⋅F−1[ikxv^]+F−1[v^]⋅F−1[ikyv^]}−igkyη^^(3-35)\left\{\begin{array}{l} \frac{\partial \hat{\hat{\eta}}}{\partial t}=-\mathrm{i} k_x F\left\{F^{-1}[\hat{\hat{\eta}}] F^{-1}[\hat{\tilde{u}}]\right\}-\mathrm{i} k_y F\left\{F^{-1}[\hat{\tilde{\eta}}] F^{-1}[\hat{v}]\right\} \\ \frac{\partial \hat{\hat{u}}}{\partial t}=-F\left\{F^{-1}[\hat{\hat{v}}] \cdot F^{-1}\left[\mathrm{i} k_y \hat{\hat{u}}\right]+F^{-1}[\hat{\vec{u}}] \cdot F^{-1}\left[\mathrm{i} k_x \hat{u}\right]\right\}-\mathrm{i} g k_x \hat{\hat{\eta}} \\ \frac{\partial \hat{v}}{\partial t}=-F\left\{F^{-1}[\hat{u}] \cdot F^{-1}\left[\mathrm{i} k_x \hat{v}\right]+F^{-1}[\hat{v}] \cdot F^{-1}\left[\mathrm{i} k_y \hat{v}\right]\right\}-\mathrm{i} g k_y \hat{\hat{\eta}} \end{array}\right.\tag{3-35} tη^^=ikxF{F1[η^^]F1[u~^]}ikyF{F1[η~^]F1[v^]}tu^^=F{F1[v^^]F1[ikyu^^]+F1[u^]F1[ikxu^]}igkxη^^tv^=F{F1[u^]F1[ikxv^]+F1[v^]F1[ikyv^]}igkyη^^(3-35)
g=1g=1g=1, 初始条件为 η(x,y,0)=0.1⋅exp⁡(−x2/10−y2/10)+0.1\eta(x, y, 0)=0.1 \cdot \exp \left(-x^2 / 10-y^2 / 10\right)+0.1η(x,y,0)=0.1exp(x2/10y2/10)+0.1u(x,y,0)=v(x,y,0)=0u(x, y, 0)=v(x, y, 0)=0u(x,y,0)=v(x,y,0)=0, 用傅里叶谱方法计算上述方程的代码如下:

主程序代码:

clear all; close all;
L=40; N=64;
x=L/N*[-N/2:N/2-1]; y=x;
kx=2*pi/L*[0:N/2-1 -N/2:-1]; ky=kx;
[X,Y]=meshgrid(x,y);
[kX,kY]=meshgrid(kx,ky);
%初始条件
e=0.1*exp(-X.^2/10-Y.^2/10)+0.1;
et=fft2(e); ut=zeros(N^2,1); vt=zeros(N^2,1);
euvt=[et(:); ut; vt;];
%求解
t=[0 5 10 25]; g=1;
[t,euvtsol]=ode45('shallow_water',t,euvt,[],kX,kY,N,g);
%画图
for n=1:4subplot(2,2,n)mesh(x,y,real(ifft2(reshape(euvtsol(n,1:N^2),N,N))))axis([-20 20 -20 20 0.1 0.2]), title(['t=' num2str(t(n))])xlabel x, ylabel y, zlabel \eta, view(-80,45)
end

程序输出结果如图所示, 从 t=0t=0t=0 时刻开始, 一个三维高斯形水柱在重力的作用下坍塌, 并激起了向四周传播的圆形水波。
浅水方程的计算结果

3.3.3 二维粘性 Burgers 方程

Burgers方程是一种非线性偏微分方程,它最初由荷兰数学家J. M. Burgers在20世纪30年代提出,用于描述一维粘性流体中的流动行为。

Burgers方程在物理学中具有广泛的应用。它可以用于模拟一维粘性流体中的多种现象,如激波、涡旋、湍流等。在流体力学中,Burgers方程常用于模拟流体中的湍流现象,如湍流尾流、湍流边界层等。在量子场论中,Burgers方程被用于描述费米子系统中的量子涡旋。

Burgers方程还是一些数值方法和数学工具的基础,如Shocks-capturing方法、Lax-Friedrichs格式等。这些方法可以有效地处理Burgers方程中出现的激波等非线性现象,从而得到比较精确的数值解。

Burgers方程也是非线性动力学中一个重要的模型。它的解可能会出现奇点和激波等非线性现象,这些现象为非线性偏微分方程的研究提供了新的思路和挑战。通过对Burgers方程的研究,可以深入了解非线性动力学中的一些重要现象和性质。

此外,Burgers方程还被应用于宏观经济学中的一些问题,如经济增长、通货膨胀等。通过对Burgers方程的应用,可以揭示一些经济现象的本质规律和机制。

除了上述介绍的应用和研究方向,Burgers方程还有以下一些特点和性质:

Burgers方程是一种具有非线性扰动传递性的方程。这意味着,当一个扰动在Burgers方程中传播时,它会不断地变形和扩散,从而形成复杂的结构。

Burgers方程可以通过一些数学方法和技巧来求解。其中比较常用的方法包括Burgers方程的相似变换、行波解法和反演公式等。
Burgers方程的解可能会出现激波、奇点等非线性现象。这些现象具有一定的物理意义,并且对于解决实际问题具有重要的作用。

Burgers方程可以被看作是Navier-Stokes方程的一维版本,它描述了粘性流体中的一些基本特性和行为。因此,Burgers方程在流体力学中有着重要的应用和研究价值。

Burgers方程还可以被拓展到更高维度或者更复杂的情形下。例如,二维Burgers方程、Burgers-Fisher方程等。

总之,Burgers方程在物理学、数学和工程学等领域具有广泛的应用和研究价值,它的研究和应用也带动了非线性动力学和偏微分方程等领域的发展。

Burgers 方程有钟行孤波和扭波两种形式的行波解(如图)

二维粘性 Burgers 方程的形式如下:
∂u∂t=v(∂2∂x2+∂2∂y2)u−u(∂∂x+∂∂y)u(3-36)\frac{\partial u}{\partial t}=v\left(\frac{\partial^2}{\partial x^2}+\frac{\partial^2}{\partial y^2}\right) u-u\left(\frac{\partial}{\partial x}+\frac{\partial}{\partial y}\right) u\tag{3-36} tu=v(x22+y22)uu(x+y)u(3-36)
其中, uuu 代表速度, x、yx 、 yxy 为空间坐标, ttt 为时间, vvv 为粘性系数。对上式做二维傅里叶变换, 得:

∂u^^∂t=−v(kx2+ky2)u^^−F{F−1[u^]⋅F−1[i(kx+ky)u^^]}(3-37)\frac{\partial \hat{\hat{u}}}{\partial t}=-v\left(k_x^2+k_y^2\right) \hat{\hat{u}}-F\left\{F^{-1}[\hat{u}] \cdot F^{-1}\left[\mathrm{i}\left(k_x+k_y\right) \hat{\hat{u}}\right]\right\}\tag{3-37}tu^^=v(kx2+ky2)u^^F{F1[u^]F1[i(kx+ky)u^^]}(3-37)
v=0.01v=0.01v=0.01, 初始条件 u(x,y,0)=sech⁡(4x2+4y2)u(x, y, 0)=\operatorname{sech}\left(4 x^2+4 y^2\right)u(x,y,0)=sech(4x2+4y2), 傅里叶谱方法的代码如下:

主程序代码:

clear all; close all;
L=4; N=64;
x=L/N*[-N/2:N/2-1]; y=x;
kx=2*pi/L*[0:N/2-1 -N/2:-1]; ky=kx;
[X,Y]=meshgrid(x,y);
[kX,kY]=meshgrid(kx,ky);
K2=kX.^2+kY.^2;
%初始条件
u=sech(4*X.^2+4*Y.^2);
ut=fft2(u);
%求解
v=0.01; t=0:0.4:1.2;
[t,utsol]=ode45('burgers',t,ut(:),[],N,kX,kY,K2,v);
%画图
for n=1:4subplot(2,2,n)mesh(x,y,real(ifft2(reshape(utsol(n,:),N,N))))axis([-2 2 -2 2 0 1]), xlabel x, ylabel y, zlabel uview(46,20), title(['t=' num2str(t(n))])
end

程序执行结果如图所示,初始波形逐渐演变成激波,这是符合实际情况的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L46WfgOw-1680611827553)(https://mweb-1307664364.cos.ap-chengdu.myqcloud.com/2023/04/04/untitled12.png)]
当Burgers方程中的初始波形是单峰的、集中在某一区域内的时候,它会随着时间的推移而逐渐演变成为一个激波。这个现象可以通过分析Burgers方程的解得到解释。

在初始时刻,Burgers方程的初始波形会随着时间的推移而扩散,并逐渐变得平缓。然而,由于Burgers方程是一个非线性方程,波形在演化过程中会发生非线性的相互作用,这些相互作用会导致波形逐渐变得不规则,并在某些区域内出现奇点。当波形的斜率超过一定阈值时,这些奇点会形成激波,即波形在激波前是平缓的,但在激波后却是陡峭的。

激波的形成可以用物理学中的震荡现象来解释。当初始波形逐渐演化为激波时,波前的部分会受到高压的压缩,而波后的部分则会受到低压的拉伸,这样就形成了一个压缩波和一个展开波,它们相互作用,最终形成了一个陡峭的激波。

总之,Burgers方程中的初始波形逐渐演变为激波的现象,是由于非线性相互作用导致的,它在物理学和工程学等领域中有着广泛的应用。

相关文章:

傅里叶谱方法-傅里叶谱方法求解二维浅水方程组和二维粘性 Burgers 方程及其Matlab程序实现

3.3.2 二维浅水方程组 二维浅水方程组是描述水波运动的基本方程之一。它主要用于描述近岸浅水区域内的波浪、潮汐等水动力学现象。这个方程组由两个偏微分方程组成,一个是质量守恒方程,另一个是动量守恒方程。浅水方程描述了具有自由表面、密度均匀、深…...

算法训练营 - 广度优先BFS

目录 从层序遍历开始 N 叉树的层序遍历 经典BFS最短路模板 经典C queue 数组模拟队列 打印路径 示例1.bfs查找所有连接方块 Cqueue版 数组模拟队列 示例2.从多个位置同时开始BFS 示例3.抽象最短路类(作图关键) 示例4.跨过障碍的最短路 从层序遍历…...

​​​​​​​判断两个字符串是否匹配(1个通配符代表一个字符)

目录 判断两个字符串是否匹配(1个通配符代表一个字符) 程序设计 程序分析...

用css画一个csdn程序猿

效果如下&#xff1a; 头部 我们先来拆解一下&#xff0c;程序猿的结构 两只耳朵和头是圆形组成的&#xff0c;耳朵内的红色部分也是圆形 先画头部&#xff0c;利用圆角实现头部形状 借助工具来快速实现圆角效果 https://9elements.github.io/fancy-border-radius/ <div…...

Java多线程编程—wait/notify机制

文章目录1. 不使用wait/notify机制通信的缺点2. 什么是wait/notify机制3. wait/notify机制原理4. wait/notify方法的基本用法5. 线程状态的切换6. interrupt()遇到方法wait()7. notify/notifyAll方法8. wait(long)介绍9. 生产者/消费者模式10. 管道机制11. 利用wait/notify实现…...

Three.js教程:旋转动画、requestAnimationFrame周期性渲染

推荐&#xff1a;将NSDT场景编辑器加入你3D工具链其他工具系列&#xff1a;NSDT简石数字孪生基于WebGL技术开发在线游戏、商品展示、室内漫游往往都会涉及到动画&#xff0c;初步了解three.js可以做什么&#xff0c;深入讲解three.js动画之前&#xff0c;本节课先制作一个简单的…...

租车自驾app开发有什么作用?租车便利出行APP开发

在线租车APP有哪些优势&#xff0c;租车APP开发的基本功能&#xff0c;租车自驾app开发有什么作用?租车便利出行APP开发&#xff0c;租车服务平台小程序有哪些功能&#xff0c;租车软件开发需要多少钱&#xff0c;租车app都有哪些&#xff0c;租车平台定制开发&#xff0c;租车…...

linux shell 文件分割

split 按照 10m 大小进行分割 split -b 10m large_file.bin new_file_prefix...

智慧农业系统开发功能有哪些?

农业从古至今都是备受关注的话题&#xff0c;新时代背景下农业发展已经融合了互联网&#xff0c;数字化技术等新型发展方式&#xff0c;形成了农业物联网管控系统&#xff0c;让农业生产更加科技化、智能化、高效化&#xff0c;对农业可持续发展有巨大的推动作用。所以&#xf…...

【C语言】 指针的进阶 看这一篇就够了

目录 1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.qsort排序和冒泡排序 1.字符指针 让我们一起来回顾一下指针的概念&#xff01; 1.指针就是一个变量&#xff0c;用来存放地址&#xff0c;地址…...

redis set list

Listlist: 插入命令&#xff1a;lpush / rpush 查看list列表所有数据(-1 表示最后一个)&#xff1a;lrange key 0 -1 查看列表长度(key 不存在则长度返回0 ): llen key list长度 获取下表 为 0 的元素 修改下标为0的元素&#xff0c;改为haha 移除列表的第一个元素 或最后一…...

如何解决DNS劫持

随着互联网的不断发展&#xff0c;DNS(域名系统)成为了构建网络基础的重要组成部分。而DNS遭到劫持&#xff0c;成为一种常见的安全问题。那么DNS遭到劫持是什么意思呢?如何解决DNS劫持问题呢?下面就让小编来为您一一解答。 DNS遭到劫持是什么意思? DNS遭到劫持指的是黑客通…...

【LeetCode】剑指 Offer(28)

目录 题目&#xff1a;剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 55 - I. 二叉树的深度 - 力…...

「ML 实践篇」模型训练

在训练不同机器学习算法模型时&#xff0c;遇到的各类训练算法大多对用户都是一个黑匣子&#xff0c;而理解它们实际怎么工作&#xff0c;对用户是很有帮助的&#xff1b; 快速定位到合适的模型与正确的训练算法&#xff0c;找到一套适当的超参数等&#xff1b;更高效的执行错…...

域名解析协议-DNS

DNS&#xff08;Domain Name System&#xff09;是互联网上非常重要的一项服务&#xff0c;我们每天上网都要依靠大量的DNS服务。在Internet上&#xff0c;用户更容易记住的是域名&#xff0c;但是网络中的计算机的互相访问是通过 IP 地址实现的。DNS 最常用的功能是给用户提供…...

分享:包括 AI 绘画在内的超齐全免费可用的API 大全

AI 绘画已经火出圈了&#xff0c;你还不知道哪里可以用嘛&#xff1f;我给大家整理了超级齐全的免费可用 API&#xff0c;包括 AI 绘画在内&#xff0c;有需要的小伙伴赶紧收藏了。 AI 绘画/AI 作画 类 AI 绘画&#xff1a;通过AI 生成图片&#xff0c;包括图生文、文生图等。…...

虹科新闻 | 虹科与Overland-Tandberg正式建立合作伙伴关系

虹科Overland-Tandberg 近日&#xff0c;虹科与美国Overland-Tandberg公司达成战略合作&#xff0c;虹科正式成为Overland-Tandberg公司在中国区域的认证授权代理商。未来&#xff0c;虹科将携手Overland-Tandberg&#xff0c;共同致力于提供企业数据管理和保护解决方案。 虹科…...

架构设计三原则

作为程序员&#xff0c;很多人都希望成为一名架构师&#xff0c;但并非简单地通过编程技能就能够达成这一目标。事实上&#xff0c;优秀的程序员和架构师之间存在一个明显的鸿沟——不确定性。 编程的本质是确定性的&#xff0c;也就是说&#xff0c;对于同一段代码&#xff0c…...

Android 性能优化——ANR监控与解决

作者&#xff1a;Drummor 1 哪来的ANR ANR(Application Not responding):如果 Android 应用的界面线程处于阻塞状态的时间过长&#xff0c;会触发“应用无响应”(ANR) 错误。如果应用位于前台&#xff0c;系统会向用户显示一个对话框。ANR 对话框会为用户提供强制退出应用的选项…...

Machine Learning-Ex3(吴恩达课后习题)Multi-class Classification and Neural Networks

目录 1. Multi-class Classification 1.1 Dataset 1.2 Visualizing the data 1.3 Vectorizing Logistic Regression 1.3.1 Vectorizing the cost function&#xff08;no regularization&#xff09; 1.3.2 Vectorizing the gradient&#xff08;no regularization&#…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...