基于Matlab实现的地震波场边界处理软件_第1页
基于Matlab实现的地震波场边界处理软件_第2页
基于Matlab实现的地震波场边界处理软件_第3页
基于Matlab实现的地震波场边界处理软件_第4页
基于Matlab实现的地震波场边界处理软件_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Matlab实现的地震波场边界处理软件姓名:姚嘉德 学号:2015301130007院系:资源与环境科学学院摘要:用有限差分法模拟地震波场是研究地震波在地球介质中传播的有效方法。但我们在实验室进 行波场数值模拟时有限差分网格是限制在人工边界里面,即引入了人工边界条件。本文采用Clayton_Engquist_Majda二阶吸收边界条件,通过MATLAB编程实现了这一算法。依靠MATLAB具有 更加直观的、符合大众思维习惯的代码,为用户提供了友好、简洁的程序开发环境,方便同行们交流。利用Matlab本身所具有可视化功能以及像素识别功能,可以将生成的动画电影进行识别,用于地震局实时分析有着深远

2、意义。关键词:有限差分法,地震波场,吸收边界条件,MATLAB矢量帧,像素识别Abstract: Modeling seismic wave field with the Finite Difference Method (FDM) is an effective method to study theseismic wave propagation in the earth medium. When we model seismic wave field in the laboratory, the finitedifference grids are restricted in the a

3、rtificial boundary. So it should introduce the artificial boundary conditions.This paper adopts Clayton_Engquist_Majda second absorbing boundary conditions and realizes the arithmetic with MATLAB. The MATLAB codes are direct and accord with our thinking custom. So it can provide the friendlyand succ

4、inct programming environment and is easy to communicate with other.Using the functions of Matlab that make visualization come true and identify the pixel,we can identify the earthquake wave field.Key words: finite difference method, seismic wave field, numerical modeling, absorbing boundary conditio

5、ns,MATLAB一、引言用有限差分法模拟地震波场是研究地震波在地球介质中传播的有效方法 。但我们在实验室进 行波场数值模拟时,只能在有限的空间进行,所以有限差分网格是限制在人工边界里面,即引入了 人为的边界条件。这种人为边界条件的引入将对有限区域内的波场值的计算带来严重影响,所以必 须进行特殊的边界处理。边界条件处理的好坏直接影响地震正演模拟的最终效果。本文中我们采用Clayton_Engquist_Majda二阶吸收边界条件2。被称作是第四代计算机语言的MATLAB语言,利用其丰富的函数资源把编程工作者从繁琐的程 序代码中解放出来。MATLAB用更加直观的、符合大众思维习惯的代码,为用户提

6、供了友好、简洁的 程序开发环境。本文介绍运用MATLAB实现带有吸收边界条件的地震波场数值模拟方法和步骤,便于 同行们交流,亦可用于本科地震理论的教学中,让学生们在程序演示中理解地震波的传播规律。二.、Clayton_Engquist_Majda二阶吸收边界条件我们给定二维标量声波波动方程(含震源):(1)式中:是声波波场,是声波速度, 是震源。 对(1)式进行时间和空间2阶精度有限差分离散(见图1),整理后可得(2)式中, 为别为空间、时间离散步长, , ,为震源函数。 震源函数:(3)Clayton_Engquist_Majda二阶吸收边界条件的微分表达式可参见文献2,其左、右、上、下 边

7、界的差分格式分别为:三、基本算法步骤从图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)计算出来。四、数值模拟由于是计算

8、机模拟,为了能说明问题且便于计算,我们设地质模型边界为1,具体详细参数如下见表1:V22 第一步:速度文件的载入及相关整理(替换)clc; clear; %清除工作空间及显示屏幕load vm_0.mat; % 载入速度文件,里面包含v(j, i)Nx=101; Nz=101; Nt=800;hx=0.01;hz=0.01;dt=0.002; % 模拟参数见表1for i=1:Nxfor j=1:Nzr(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;endend% 简缩“常量”u=zeros(Nz,Nx

9、,Nt); % 分布空间,预值充零第二步:赋初值for k=1:2for j=1:Nzfor i=1:Nxu(j,i,k)=0;endendend第三步:边界条件处理及7点差分计算波场延拓for k=2:Nt-1for j=1:Nzfor i=2:Nx-1if j=1u(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=Nzu(j,i,k+1)=(2

10、-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*dt2*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

11、(j+1,i,k)+u(j-1,i,k)+s(j,i)*u(j,i,k)-u(j,i,k-1);elseu(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);endendend;for i=1:Nx4.1 地质模型的构造本文选取了两个较为简单的地质模型,分别是均匀介质模型(见图2)和层状均匀介质模型(见图3)。4.2 程序及相关说明根据上述我们建立的地质模型,生成相应的速度文件,再联合表 1中的模拟参数和吸收边界条件,就可以编程实现波场模拟。平时表示波场的习惯u(x,

12、z,t)对应在matlab程序中,为了便于成图则被表示为u(z,x,t),即u(i,j,k)变为u(j,i,k)。详细过程如下: % 波场快照图显示for k=1:Nt % 表示所有时刻,也可以是等间隔时间如 k=1:10:Ntfigure(k)imagesc(u(:,:,k) ; colormap(gray); % 同理可用surf(u(:,:,k)xlabel('x'); ylabel('z');% zlabel('Amplitude') 在surf(u(:,:,k)中用到title('Wave Field Snapshot'

13、);axis squareend% 二维电影动画放映,除了imagesc,还有contour、surf等绘图命令clf; shg;M=moviein(Nt); %预设画面矩阵for k=1:Ntimagesc(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=('*

14、该程序已经运行结束*')4.3 运行结果显示运行以上程序,可以得到所有时刻的波场快照图,在这里只选择部分图件进行展示。for j=2:Nz-1if i=1u(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=Nxu(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-

15、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*dt2*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);elseu(j,i,k+1)=r2(j

16、,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);endendendend第四步:四个角点的处理for k=1:Ntu(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

17、 ; % 保存数值结果 图4是同一速度均匀介质模型的波场快照图。a、b、c和d是分别200ms、400ms、600ms和800ms时刻的波场快照,震源位于模型中心,波速为V1。从四个小图上可以看出在波逐步向外传播的过程中,当波传播到边界时逐渐被吸收从而没有人为的反射波。图5是二层均匀介质模型的波场快照图。a、b、c和d是分别200ms、400ms、600ms和800ms时刻的波场快照,震源位于模型上中部,波速分别为 V1和V2。从四个小图上可以看出在波逐步向外传播的过程中,当波传播到地层边界时有很强的反射,而当波传播到人工边界时逐渐被吸收没有人为的反射波。五、成像总结本文侧重于通过数值模拟介绍

18、运用MATLAB实现带吸收边界条件的波场模拟的简要方法和基本步骤,因而文中数值模型和其计算差分节点设置都仅考虑十分简单的情形。在实际应用中,除计算节点数增多外,人们不断通过引入差分格式,差分精度等一系列措施改进正演模拟,从而提高计算效率,减少计算误差。以上数值模拟程序在MATLAB7.0中运行通过,可供同行们交流。对于二层均匀介质模型,运行的结果以P(z, x)形式保存成dat文件,然后用地震成图软六、Matlab的动画实现原理MATLAB中,创建电影动画的过程分为以下四步:step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。该函数格式有:(1)F=gefframe,从当前图形框中得到动画帧(2)F=gefframe(h),从图形句柄h中得到动画帧(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧step3:调用mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论