该示例通过使用符号数学工具箱™来求解微分方程来模拟海啸波现象。GydF4y2Ba
该仿真是基于Goring和Raichlen[1]的一篇论文对这一现象的简化可视化。GydF4y2Ba
孤立波(Korteweg-de Vries方程的孤子溶液)在沿恒定深度的管道沿左侧的恒定速度行进。这对应于海上旅行的海啸。在运河的左端,有一个模拟大陆架的斜坡。到达斜坡后,孤波开始增加其高度。当水变得非常浅,大部分波都反射回运河。然而,在斜坡的末端产生狭窄但高峰的水,并在入射波的原始方向上进行减小的速度。这是终于击中岸边的海啸,沿着海岸线造成灾难性的破坏。接近岸边的波的速度相对较小。波最终开始打破。GydF4y2Ba
使用线性分散水理论,高度GydF4y2Ba 在不同深度的一维管中高于未受干扰的水位的自由表面波GydF4y2Ba 是以下部分微分方程的解决方案。(见[2])GydF4y2Ba
在该公式中,下标表示部分衍生物,和GydF4y2Ba 是引力加速度。GydF4y2Ba
考虑一个波穿过线性斜率GydF4y2Ba 从具有恒定深度的区域GydF4y2Ba 到具有恒定深度的区域GydF4y2Ba .傅里叶变换GydF4y2Ba 将水波偏微分方程转化为傅里叶模式的常微分方程GydF4y2Ba .GydF4y2Ba
对于具有恒定深度的区域GydF4y2Ba ,傅里叶模式是行进波以恒定速度在相反方向上传播GydF4y2Ba .GydF4y2Ba
解决方案GydF4y2Ba 对于深水区,是两波的叠加:GydF4y2Ba
以恒定速度向左传播的波GydF4y2Ba
通过频率相关反射系数给出的幅度向右移动波GydF4y2Ba
这种选择GydF4y2Ba 满足深水区的波动方程GydF4y2Ba .GydF4y2Ba
解决方案GydF4y2Ba 对于浅水区,是以恒定速度向左移动的透射波GydF4y2Ba .这种选择GydF4y2Ba 满足浅水区中的波动方程,以进行任何传输系数GydF4y2Ba .GydF4y2Ba
对于过渡区域(斜率),使用GydF4y2Ba .GydF4y2Ba
定义海啸模型的参数如下所示。忽略对频率的依赖GydF4y2Ba 在以下符号中:GydF4y2Ba 那GydF4y2Ba 那GydF4y2Ba .GydF4y2Ba
Syms.GydF4y2BaL.GydF4y2BaHGydF4y2Ba替补GydF4y2BaGGydF4y2Ba积极的GydF4y2BaSyms.GydF4y2BaXGydF4y2BaT.GydF4y2BaW.GydF4y2BaT.GydF4y2BaR.GydF4y2BaU(x)GydF4y2BaL1 = depthratio * L;L2 = L;h1 = depthratio * H;h2 = H;h(x)= x * h / l;c1 = sqrt (g * h1);c2 = sqrt(g * h2);U(x,t)= u(x)* exp(1i * w * t);U1(x,t)= t * exp(1i * w *(t + x / c1));U2(x,t)= exp(1i * w *(t + x / c2))+ r * exp(1i * w *(t-x / c2));GydF4y2Ba
在线性斜率上的过渡区域,使用GydF4y2BaDsolve.GydF4y2Ba
要解决傅立叶变换的颂歌GydF4y2Ba
的GydF4y2Ba
.GydF4y2Ba
Wavepde(x,t)= diff(u,t,t) - g * diff(h(x)* diff(u,x),x);Slopeode(x)=波段(x,0);u(x)= dsolve(slopeode);GydF4y2Ba
解决方案GydF4y2Ba 是涉及贝塞尔功能的复杂表达。它包含两个依赖的两个任意的“常量”GydF4y2Ba .GydF4y2Ba
const = setdiff(symvar(u),sym([depthratio,g,h,l,x,w]))GydF4y2Ba
const =.GydF4y2Ba
对于任意傅里叶模式,整体解必须是连续可微的函数GydF4y2Ba .因此,函数值和衍生物必须在接缝点匹配GydF4y2Ba 和GydF4y2Ba .这提供了四个线性方程GydF4y2Ba 那GydF4y2Ba ,和两个常数GydF4y2Ba .GydF4y2Ba
du1(x)= diff(u1(x,0),x);du2(x)= diff(u2(x,0),x);du(x)= diff(u(x),x);eqs = [u(l1)== u1(l1,0),u(l2)== u2(l2,0),GydF4y2Ba......GydF4y2Badu(l1)== du1(l1),du(l2)== du2(l2)];未知数= [const(1),const(2),r,t];GydF4y2Ba
解决这些方程。GydF4y2Ba
[Cvalue1,Cvalue2,R,T] =求解(EQS,未知数);GydF4y2Ba
将结果替换回来GydF4y2Ba 那GydF4y2Ba , 和GydF4y2Ba .GydF4y2Ba
U (x) =潜艇(U (x){常量(1)常量(2)},{Cvalue1, Cvalue2});GydF4y2Ba
您无法直接评估解决方案GydF4y2Ba 因为相应表达的分子和分母都消失了。相反,找到这些表达式的低频限制。GydF4y2Ba
简化(限制(U(x),w,0))GydF4y2Ba
ans =.GydF4y2Ba
简化(限制(R,W,0))GydF4y2Ba
ans =.GydF4y2Ba
简化(限制(t,w,0))GydF4y2Ba
ans =.GydF4y2Ba
这些限制非常简单。它们仅取决于定义斜率的深度值的比率。GydF4y2Ba
有关以下计算,请使用这些数值进行符号参数。GydF4y2Ba
重力加速度:GydF4y2Ba
深度运河:GydF4y2Ba
浅层和深层区域之间的深度比例:GydF4y2Ba
斜坡区域的长度:GydF4y2Ba
g = 9.81;L = 2;H = 1;depthratio = 0.04;h1 = depthratio * H;h2 = H;L1 = depthratio * L;L2 = L;c1 = sqrt (g * h1);c2 = sqrt(g * h2);GydF4y2Ba
定义振幅的进入孤子GydF4y2Ba 以恒定的速度向左移动GydF4y2Ba 在深水区。GydF4y2Ba
一个= 0.3;孤子= @ (x, t) A *双曲正割(sqrt (3/4 * g * / H) * (x / c2 + t)) ^ 2;GydF4y2Ba
选择GydF4y2Ba 样本要点GydF4y2Ba .选择时间尺度作为进入孤子的(时间)宽度的倍数。存储傅立叶变换的相应离散频率GydF4y2Ba .GydF4y2Ba
元= 64;时间= 40 * sqrt (4/3 * H / / g);W =[0, 1:元/ 2 - 1,-(元/ 2 - 1):1]“* 2 *π/时间表;GydF4y2Ba
选择GydF4y2Ba 样本点GydF4y2Ba 每个区域的方向。创建样本点GydF4y2Ba 对于浅水区,GydF4y2Ba 对于深水区GydF4y2Ba 对于斜坡区域。GydF4y2Ba
nx = 100;x_min = l1 - 4;X_MAX = L2 + 12;x12 = linspace(l1,l2,nx);x1 = linspace(x_min,l1,nx);x2 = linspace(l2,x_max,nx);GydF4y2Ba
的时间网格上计算入射孤子的傅里叶变换GydF4y2Ba 等距样份点。GydF4y2Ba
S = FFT(孤子(孤子(-0.8 *时间尺寸* C2,Linspace(0,Timescale,2 *(NT / 2)-1)))';s = repmat(s,1,nx);GydF4y2Ba
基于傅立叶数据构建深水区中的行波解决方案GydF4y2Ba .GydF4y2Ba
soliton =真实(IFFT(s. * exp(1i * w * x2 / c2))));GydF4y2Ba
将深水区中反射波的傅里叶模式转换为网格上的数值GydF4y2Ba
空间。将这些值乘以傅立叶系数GydF4y2Ba
并使用该功能GydF4y2BaIFFT.GydF4y2Ba
计算反射波GydF4y2Ba
空间。请注意,数字数据的第一行GydF4y2Ba
由NAN值组成,因为符号数据的适当数值评估GydF4y2Ba
为了GydF4y2Ba
是不可能的。的第一行中的值GydF4y2Ba
作为低频的限制。GydF4y2Ba
r = double(潜艇(船只(vpa(r)),w,w),x,x2));R(1,:)=双((1-SQRT(Depthratio))/(1 + SQRT(Depthratio)));反射Wave =真实(IFFT(s. * r。* exp(-1i * w * x2 / c2)));GydF4y2Ba
对浅水区域的透射波采用相同的方法。GydF4y2Ba
t = double(潜水艇(船只(vpa(op(ocm(t)),w,w),x,x1));t(1,:) =双(2 /(1 + SQRT(Depthratio)));传输Wave = Real(IFFT(S. * T. * exp(1i * w * x1 / c1));GydF4y2Ba
此外,使用这种方法对斜率区域。GydF4y2Ba
U12 = DOUBLE(潜水艇(船只(vpa(u(u(x))),w,w),x,x12));U12(1,:)=双(2 /(1 + SQRT(Depthratio)));U12 =真实(IFFT(s. * u12));GydF4y2Ba
对于更平滑的动画,使用沿绘图数据列的三角插值生成其他采样点。GydF4y2Ba
soliton = interpft(soliton, 10*Nt);反射波= interpft(反射波,10*Nt);U12 = interpft(U12, 10*Nt);transmittedWave = interpft(transmittedWave, 10*Nt);GydF4y2Ba
创建一个在单独的图形窗口中显示的解决方案的动画曲线图。GydF4y2Ba
数字(GydF4y2Ba'可见的'GydF4y2Ba那GydF4y2Ba'上'GydF4y2Ba);绘图([x_min,l1,l2,x_max],[-h1,-h1,-h2,-h2],GydF4y2Ba'颜色'GydF4y2Ba那GydF4y2Ba'黑色的'GydF4y2Ba)轴([x_min,x_max,-h-0.1,0.6])保持GydF4y2Ba在GydF4y2Baline1 = plot(x1,传输波(1,:),GydF4y2Ba'颜色'GydF4y2Ba那GydF4y2Ba'蓝色的'GydF4y2Ba);line12 = plot(x12,u12(1,:),GydF4y2Ba'颜色'GydF4y2Ba那GydF4y2Ba'蓝色的'GydF4y2Ba);line2 = plot(x2,soliton(1,:) +反射Wave(1,:),GydF4y2Ba'颜色'GydF4y2Ba那GydF4y2Ba'蓝色的'GydF4y2Ba);GydF4y2Ba为了GydF4y2Bat = 2:尺寸(孤子,1)* 0.35行1.ydata =传输波(t,:);line12.ydata = u12(t,:);line2.ydata =孤子(t,:) +反射波(t,:);暂停(0.1)GydF4y2Ba结尾GydF4y2Ba
在现实生活中,海啸的波长为数百公里,速度通常超过500公里/小时。(注意海洋的平均深度约为4公里,对应的速度为GydF4y2Ba 。)在深海,振幅相当小,通常约0.5米或更小。然而,当传播到架子上时,海啸急剧增加它们的高度:报道了高达30米越来越多的幅度。GydF4y2Ba
虽然海啸通常接近海岸线作为波前延伸数百公里垂直于行驶的方向,但它们不会沿着海岸造成均匀的损坏。在某些方面,他们造成灾害,而在其他地方只观察到中等波浪现象。这是由海床到大陆架的不同斜坡引起的。事实上,非常陡峭的斜坡导致大部分海啸被反射回到深水区域中,而小斜坡反射较少的波浪,传输狭窄但高波浪携带大量能量。GydF4y2Ba
运行不同值的模拟GydF4y2Ba ,对应于不同的斜坡。斜坡陡峭,越来越强大的波浪传输。GydF4y2Ba
请注意,此模型忽略了分散和摩擦效应。在架子上,模拟失去了其物理意义。在这里,摩擦效应是重要的,导致波浪的破坏。GydF4y2Ba
孙晓明,张建平,陆海空海啸的研究进展,中国海洋大学学报(自然科学版),2004,vol . 33, no . 1, pp. 61 - 63。GydF4y2Ba
[2] H.羊肉,流体动力学,多佛,1932年。GydF4y2Ba