logo资料库

地震波场边界处理的MATLAB实现.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
地震波场边界处理的MATLAB实现 陈敬国 中国地质大学(北京) 地球物理与信息技术学院 (100083) E-mail: chenjg_cugb@163.com 摘要:用有限差分法模拟地震波场是研究地震波在地球介质中传播的有效方法。但我们在实验室进 行波场数值模拟时有限差分网格是限制在人工边界里面,即引入了人工边界条件。本文采用 Clayton_Engquist_Majda二阶吸收边界条件,通过MATLAB编程实现了这一算法。依靠MATLAB具有 更加直观的、符合大众思维习惯的代码,为用户提供了友好、简洁的程序开发环境,方便同行们交 流。 关键词:有限差分法,地震波场,数值模拟,吸收边界条件,MATLAB 1. 引言 用有限差分法模拟地震波场是研究地震波在地球介质中传播的有效方法 [1] 。但我们在实验室进 行波场数值模拟时,只能在有限的空间进行,所以有限差分网格是限制在人工边界里面,即引入了 人为的边界条件。这种人为边界条件的引入将对有限区域内的波场值的计算带来严重影响,所以必 须进行特殊的边界处理。边界条件处理的好坏直接影响地震正演模拟的最终效果。本文中我们采用 Clayton_Engquist_Majda二阶吸收边界条件 。 [2] 被称作是第四代计算机语言的MATLAB语言,利用其丰富的函数资源把编程工作者从繁琐的程 序代码中解放出来。MATLAB用更加直观的、符合大众思维习惯的代码,为用户提供了友好、简洁的 程序开发环境。本文介绍运用MATLAB实现带有吸收边界条件的地震波场数值模拟方法和步骤,便于 同行们交流,亦可用于本科地震理论的教学中,让学生们在程序演示中理解地震波的传播规律。 2. Clayton_Engquist_Majda二阶吸收边界条件 我们给定二维标量声波波动方程(含震源): 式中:是声波波场,是声波速度, 是震源。 对(1)式进行时间和空间2阶精度有限差分离散(见图1),整理后可得 (1) 式 中 , , 为 别 为 空 间 、 时 间 离 散 步 长 , , ,为震源函数。 震源函数: (2) (3)
Clayton_Engquist_Majda二阶吸收边界条件的微分表达式可参见文献[2],其左、右、上、下 边界的差分格式分别为: 3. 基本算法步骤 从图1可以看出,k+1时刻的波场值由k时刻和k-1时刻的波场值决定。所以在MATLAB里实现的 (1) 初始时刻的全波场值均为零,P(i, j, dt)=0(在MATLAB中初始从dt开始,不能从0开始); (2) 时刻2dt时,在炮点S (m, n)给出一个脉冲震源Src(t)(见式(3)),其它点波场P =0; (3) 时刻t大于或等于3dt时,P(i, j, k+1)根据式(2)计算,其它点波场P=0; (4) 在波传播到四周边界时,左、右、上和下边界的波场值分别由式(4-1)、(4-2)、(4-3) 基本算法步骤如下: 和(4-4)计算出来。 4. 数值模拟 由于是计算机模拟,为了能说明问题且便于计算,我们设地质模型边界为1,具体详细参数如 下见表1: 表1 波场模拟参数一览表 模型边界 采 样 间 隔 总 采 样 点 数 X 1 Z 1 dx 0.01 dz 0.01 dt 0.002 Nx 101 Nz 101 Nt 500 声波 波速 V2 2 V1 1 4.1 地质模型的构造 本文选取了两个较为简单的地质模型,分别是均匀介质模型(见图2)和层状均匀介质模型(见 图3)。
4.2 程序及相关说明 根据上述我们建立的地质模型,生成相应的速度文件,再联合表1中的模拟参数和吸收边界条 件,就可以编程实现波场模拟。平时表示波场的习惯u(x,z,t)对应在matlab程序中,为了便于成图则 被表示为u(z,x,t),即u(i,j,k)变为u(j,i,k)。详细过程如下: 第一步:速度文件的载入及相关整理(替换) clc; clear; %清除工作空间及显示屏幕 load vm_0.mat; % 载入速度文件,里面包含v(j, i) Nx=101; Nz=101; Nt=800;hx=0.01;hz=0.01;dt=0.002; % 模拟参数见表1 for i=1:Nx for j=1:Nz r(j,i)=v(j,i)*dt/hx; r2(j,i)=(v(j,i)*dt/hx)^2; s(j,i)=2-4*(v(j,i)*dt/hx)^2; end end % 简缩“常量” u=zeros(Nz,Nx,Nt); % 分布空间,预值充零 第二步:赋初值 for k=1:2 for j=1:Nz for i=1:Nx u(j,i,k)=0; end end end 第三步:边界条件处理及7点差分计算波场延拓 for k=2:Nt-1 for j=1:Nz for i=2:Nx-1 if j==1 u(j,i,k+1)=(2-2*r(j,i)-r2(j,i))*u(j,i,k)+2*r(j,i)*(1+r(j,i))*u(j+1,i,k)-r2(j,i)*u(j+2,i,k)+(2*r(j,i)-1)*u(j,i,k-1)-… 2*r(j,i)*u(j+1,i,k-1); % 上边界吸收 elseif j==Nz u(j,i,k+1)=(2-2*r(j,i)-r2(j,i))*u(j,i,k)+2*r(j,i)*(1+r(j,i))*u(j-1,i,k)-r2(j,i)*u(j-2,i,k)+(2*r(j,i)-1)*u(j,i,k-1)-… 2*r(j,i)*u(j-1,i,k-1); % 下边界吸收 elseif j==30&i==51&(k-1)*dt <= 6*pi/100 %炮点S(30,51),子波持续时间条件 u(j,i,k+1)=c(j,i)^2*dt^2*sin(50*(k-1)*dt)*exp(-188*((k-1)*dt-3*pi/100)^2)+r2(j,i)*(u(j,i+1,k)+u(j,i-1,k)+… u(j+1,i,k)+u(j-1,i,k))+s(j,i)*u(j,i,k)-u(j,i,k-1); else u(j,i,k+1)=r2(j,i)*(u(j,i+1,k)+u(j,i-1,k)+u(j+1,i,k)+u(j-1,i,k))+s(j,i)*u(j,i,k)-u(j,i,k-1); end end end for i=1:Nx for j=2:Nz-1 if i==1 u(j,i,k+1)=(2-2*r(j,i)-r2(j,i))*u(j,i,k)+2*r(j,i)*(1+r(j,i))*u(j,i+1,k)-r2(j,i)*u(j,i+2,k)+(2*r(j,i)-1)*u(j,i,k-1)-…
2*r(j,i)*u(j,i+1,k-1); % 左边界吸收 elseif i==Nx u(j,i,k+1)=(2-2*r(j,i)-r2(j,i))*u(j,i,k)+2*r(j,i)*(1+r(j,i))*u(j,i-1,k)-r2(j,i)*u(j,i-2,k)+(2*r(j,i)-1)*u(j,i,k-1)-… 2*r(j,i)*u(j,i-1,k-1); % 右边界吸收 elseif j==30&i==51&(k-1)*dt <= 6*pi/100 % 同上 u(j,i,k+1)=c(j,i)^2*dt^2*sin(50*(k-1)*dt)*exp(-188*((k-1)*dt-3*pi/100)^2)+r2(j,i)*(u(j,i+1,k)+u(j,i-1,k)+… u(j+1,i,k)+u(j-1,i,k))+s(j,i)*u(j,i,k)-u(j,i,k-1); else u(j,i,k+1)=r2(j,i)*(u(j,i+1,k)+u(j,i-1,k)+u(j+1,i,k)+u(j-1,i,k))+s(j,i)*u(j,i,k)-u(j,i,k-1); end end end end 第四步:四个角点的处理 for k=1:Nt u(1,1,k)=1/2*(u(1,2,k)+u(2,1,k)); u(1,Nx,k)=1/2*(u(1,Nx-1,k)+u(2,Nx,k)); u(Nz,1,k)=1/2*(u(Nz-1,1,k)+u(Nz,2,k)); u(Nz,Nx,k)=1/2*(u(Nz,Nx-1,k)+u(Nz-1,Nx,k)); end 第五步:保存结果及成图 u % 在主窗口显示数值结果,按照时间切片 save U u ; % 保存数值结果 % 波场快照图显示 for k=1:Nt % 表示所有时刻,也可以是等间隔时间如 k=1:10:Nt figure(k) imagesc(u(:,:,k)) ; colormap(gray); % 同理可用surf(u(:,:,k)) xlabel('x'); ylabel('z’'); % zlabel('Amplitude') 在surf(u(:,:,k))中用到 title('Wave Field Snapshot'); axis square end % 二维电影动画放映,除了imagesc,还有contour、surf等绘图命令 clf; shg; M=moviein(Nt); %预设画面矩阵 for k=1:Nt imagesc(u(:,:,k)) colormap(gray) xlabel('x');ylabel('z'); title('Wave Field Snapshot'); axis([0 Nx 0 Nz]); M(:,k)=getframe; % 捕获画面 end % movie(M,5,10) %%电影回放,每秒10帧,重复播放5次 xin_xi_ti_shi=('*****************该程序已经运行结束********************') 4.3 运行结果显示 运行以上程序,可以得到所有时刻的波场快照图,在这里只选择部分图件进行展示。
图4是同一速度均匀介质模型的波场快照图。a、b、c和d是分别200ms、400ms、600ms和800ms 时刻的波场快照,震源位于模型中心,波速为V1。从四个小图上可以看出在波逐步向外传播的过程 中,当波传播到边界时逐渐被吸收从而没有人为的反射波。 图5是二层均匀介质模型的波场快照图。a、b、c和d是分别200ms、400ms、600ms和800ms时刻 的波场快照,震源位于模型上中部,波速分别为V1和V2。从四个小图上可以看出在波逐步向外传 播的过程中,当波传播到地层边界时有很强的反射,而当波传播到人工边界时逐渐被吸收没有人为 的反射波。 5. 结束语 本文侧重于通过数值模拟介绍运用MATLAB实现带吸收边界条件的波场模拟的简要方法和基本 步骤,因而文中数值模型和其计算差分节点设置都仅考虑十分简单的情形。在实际应用中,除计算 节点数增多外,人们不断通过引入差分格式,差分精度等一系列措施改进正演模拟,从而提高计算 效率,减少计算误差。以上数值模拟程序在MATLAB7.0中运行通过,可供同行们交流。 对于二层均匀介质模型,运行的结果以P(z, x)形式保存成dat文件,然后用地震成图软
件打开,可以看到合成地震记录(以后另文再述)。对于时间切片的波场快照图件可以用flash软 件做成swf文件,这样不需平台就可以单独显示动画了。 在相关问题的探讨上,李晓光硕士提供了莫大的帮助,作者表示感谢。 参考文献 [1] 孙若昧.地震波传播有限差分模拟的人工边界问题.地球物理学报,1996,11(3). [2] 邵秀民,刘臻.带吸收边界条件的声波方程显式差分格式的稳定性分析.计算数学,2001,23(2). [3] R.Clayton and B. Enquist, Absorbing boundary conditions for acoustic and elastic wave equations, Bull. Seis. Soc. Am., 67:6(1977), pp.1529-1540. [4] R. P. Bording and L. R. Lines, Seismic modeling and imaging with the complete wave equation, USA: SEG, 1997. [5] 张志涌,徐彦琴.MATLAB教程——基于6.x版本.北京:北京航空航天大学出版社,2001,4. Realization of the Effectual Absorbing Boundary Conditions with MATLAB Chen Jingguo Abstract China University of Geosciences (Beijing) (100083) E-mail: chenjg_cugb@163.com Modeling seismic wave field with the Finite Difference Method (FDM) is an effective method to study the seismic wave propagation in the earth medium. When we model seismic wave field in the laboratory, the finite difference grids are restricted in the artificial boundary. So it should introduce the artificial boundary conditions. nd absorbing boundary conditions and realizes the arithmetic with This paper adopts Clayton_Engquist_Majda 2 MATLAB. The MATLAB codes are direct and accord with our thinking custom. So it can provide the friendly and succinct programming environment and is easy to communicate with other. Key words: finite difference method, seismic wave field, numerical modeling, absorbing boundary conditions, MATLAB
作者简介:陈敬国,男,1981年6月生。2004年本科毕业于中国地质大学(北京),现在该校继续 攻读硕士研究生学位,主要从事地震波数值模拟及地震资料处理方法的学习与研究。
分享到:
收藏