当前位置: 首页 > 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&#…...

微信聊天记录数据自主权解决方案:WeChatMsg本地化部署与深度应用指南

微信聊天记录数据自主权解决方案&#xff1a;WeChatMsg本地化部署与深度应用指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...

Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示

Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示 如果你正在寻找一个能快速、精准地为语音和文字“打上时间标签”的工具&#xff0c;那么Qwen3-ForcedAligner-0.6B绝对值得你花几分钟了解一下。想象一下&#xff0c;一段长达5分钟的演讲音频&#xff0c;你需要精确知道每个词…...

多角色语音合成解决方案:Chatterbox技术实现与应用指南

多角色语音合成解决方案&#xff1a;Chatterbox技术实现与应用指南 【免费下载链接】chatterbox Open source TTS model 项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox 在数字化内容创作与智能交互领域&#xff0c;语音合成技术正经历从单一语…...

跨平台OCR新利器:PP-OCRv5模型转ONNX实战指南,轻松应对多语言识别挑战

1. 为什么需要跨平台OCR解决方案 在日常工作和生活中&#xff0c;我们经常会遇到需要处理多语言文档的场景。比如收到一份包含中文、英文和日文的合同&#xff0c;或者需要从产品包装上识别不同语言的说明文字。传统OCR方案往往需要针对不同语言训练多个模型&#xff0c;不仅部…...

KEITHLEY 6221+2182A组合在霍尔测量中的5个实战技巧(避坑指南)

KEITHLEY 62212182A组合在霍尔测量中的5个实战技巧&#xff08;避坑指南&#xff09; 霍尔测量作为材料科学研究中的关键手段&#xff0c;对仪器精度和操作细节的要求近乎苛刻。KEITHLEY 6221电流源与2182A纳伏表的组合&#xff0c;凭借其出色的低噪声性能和微电流处理能力&…...

元素偏析系数计算:从概念到实际应用

元素偏析系数计算(Pandat代算或自己操作) 实例32: 偏析系数k是指在熔体凝固过程中&#xff0c;溶质元素在固相和液相中浓度的比值。 通过计算偏析系数&#xff0c;可以预测在凝固过程中某一溶质元素的分布情况&#xff0c;从而帮助设计合金的微观组织结构。 偏析系数 k1 则倾向…...

基于SenseVoice-Small的语音日记应用开发指南

基于SenseVoice-Small的语音日记应用开发指南 1. 语音日记应用的核心价值 你有没有想过&#xff0c;每天用说话的方式记录生活&#xff0c;然后自动变成文字日记&#xff1f;这种语音日记的方式特别适合忙碌的现代人&#xff0c;不用打字&#xff0c;随时随地都能记录心情和想…...

Obsidian Copilot 深度解析:构建知识管理中的智能代理系统

Obsidian Copilot 深度解析&#xff1a;构建知识管理中的智能代理系统 【免费下载链接】obsidian-copilot A ChatGPT Copilot in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-copilot 在知识管理工具日益同质化的今天&#xff0c;Obsidian Copilot …...

终极指南:如何轻松解包Godot PCK文件并提取游戏资源

终极指南&#xff1a;如何轻松解包Godot PCK文件并提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 还在为Godot游戏的PCK文件无法解包而烦恼吗&#xff1f;无论你是游戏开发者想要复用资…...

如何通过League-Toolkit智能工具提升英雄联盟操作效率

如何通过League-Toolkit智能工具提升英雄联盟操作效率 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾因错过对局确认而被…...