地震学习笔记

您所在的位置:网站首页 二阶差分概念 地震学习笔记

地震学习笔记

2024-02-11 04:02| 来源: 网络整理| 查看: 265

地震学习笔记 | 二维声波方程有限差分正演 | 2D FDM Seismic Forward Author: Yangwen Date: February 14, 2023  21:24:57 Category: Study

本文详细推导了二维声波方程有限差分(Finite Difference Method,FDM)格式,提供了空间精度为2-16之间任意偶数阶的c++代码(时间精度2阶)。

FDM正演公式二维声波方程有限差分格式

在均匀介质中,二维声波方程的表达式为:

其中,$s(t)$为震源函数,$v$为声波速度。

令$u_{i,j}^k=u(idx,jdz,kdt)$,即在空间中选定合适的$dx,dz$为步长的空间进行网格化,而在时间上选定合适的$dt$为步长对时间进行离散化。

下面以时间二阶,空间二阶为例,对$u{i,j}^{k+1}$和$u{i,j}^{k-1}$利用Taylor公式展开可以得到:

将上面两式相加得到$u$对时间$t$的二阶偏导:

同理,可以得到$u$对$x,z$的二阶偏导:

将公式$(4)-(6)$回代入二维声波方程$(1)$,得到二维声波方程在时间二阶、空间二阶的有限差分格式:

化简:

同理可得到二维声波方程在时间二阶,空间2N阶的有限差分格式:

若化简合并$u_{i,j}^k$,则:

其中二阶导数的偶数阶精度有限差分系数如下表所示:

精度(阶数) $C_0$ $C_1$ $C_2$ $C_3$ $C_4$ $C_5$ $C_6$ $C_7$ $C_8$ 2 -2 1 4 $-\frac{5}{2}$ $\frac{4}{3}$ $-\frac{1}{12}$ 6 $-\frac{49}{18}$ $\frac{3}{2}$ $-\frac{3}{20}$ $\frac{1}{90}$ 8 $-\frac{205}{72}$ $\frac{8}{5}$ $-\frac{1}{5}$ $\frac{8}{315}$ $-\frac{1}{560}$ 10 $-\frac{5269}{1800}$ $\frac{5}{3}$ $-\frac{5}{21}$ $\frac{5}{126}$ $-\frac{5}{1008}$ $\frac{1}{3150}$ 12 $-\frac{5369}{1800}$ $\frac{12}{7}$ $-\frac{15}{56}$ $\frac{10}{189}$ $-\frac{1}{112}$ $\frac{2}{1925}$ $-\frac{1}{16632}$ 14 $-\frac{266681}{88200}$ $\frac{7}{4}$ $-\frac{7}{24}$ $\frac{7}{108}$ $-\frac{7}{528}$ $\frac{7}{3300}$ $-\frac{7}{30888}$ $\frac{1}{84084}$ 16 $-\frac{1077749}{352800}$ $\frac{16}{9}$ $-\frac{14}{45}$ $\frac{112}{1485}$ $-\frac{7}{396}$ $\frac{112}{32175}$ $-\frac{2}{3861}$ $\frac{16}{315315}$ $-\frac{1}{411840}$

Notice:在实际编程中,采用式$(8-1)$的形式,因此上表中$C_0$项省略

震源项

采用雷克子波作为震源函数,其在时间域的表达式为:

对时间进行离散化后:

关于雷克子波的更多介绍,可参考地震学习笔记 | 雷克子波的认识 | Matlab代码。

c++程序实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207// 2D FDM Seismic Forward (without Absorting Boundary)// Spatial accuracy: N = 2 - 16 (even number)// Author:Cocklebur// 2023 #include#include#include #include #include using namespace std;#pragma warning(disable : 4996)// Define Constant #define PI 3.14159265359#define nx 400 //网格点x(m);#define nz 400 //网格点z(m);#define dh 4 //空间步长dh(m);#define dt 0.00025 //时间步长dt(s);#define Sx 200 //震源位置x(m);#define Sz 100 //震源位置z(m);#define F 20 //震源主频f(Hz):15-25Hz;#define R 3 //震源Lamda取值范围2-4;#define Kmax 1000 //时间循环次数;// 建 立 二 维 动 态 数 组 函 数 double**dimension2(int x, int y){ int i; double **m; m = (double**)malloc(x * sizeof(double*)); for (i = 0; i < x; i++) { m[i] = (double*)malloc(y*sizeof(double)); } return m;}// 矩 阵 交 换 赋 值 函 数 void exchange(double **u1, double **u2, double **u3) { int i, j; for (i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3