第一范文网 - 专业文章范例文档资料分享平台

《反演与层析成像》实验 - 图文

来源:用户分享 时间:2025/5/20 19:55:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验二~五 射线追踪-向前处理

一、 实验原理

考虑到要反演地下速度结构,对纵向的分辨率要求要高,所以网格纵向长度要比横向长度小。网格取得越小,分辨率越高,但计算量和数据存储量同时也会加大,所以要综合考虑计算效率以及内存因素。本文在对模型离散化时,采用矩形网格,计算节点只取网格线的交点。本文采用的网格模型如图2所示:

图 2

LTI存在的问题是,不能追踪到逆向传播的射线路径。这是因为,原LTI的计算方向只考虑了初至波正向传播的情况,而没有考虑逆向传播的情况,当模型速度变化复杂时,就不能追踪逆向传播的初至射线。此外,原LTI算得的节点旅行时并不一定都是最小的。原LTI算每列未知的节点旅行时时,算的节点先后顺序不一样,就可能算出不一样的值,而且无法确定先算哪个节点后算哪个节点。因为根据最小走时原理,应该是先算地震波先到达的节点也即旅行时小的节点,后算地震波晚到达的节点。可原LTI算法一开始无法确知地震波先到达哪个节点后到达哪个节点。为了解决这些问题,本文对原LTI作出了改进,具体步骤为:

1,向前处理:

(1) 按原LTI得到各节点的旅行时;

(2) 设置一个记录节点旅行时是否有变化的标志数组,数组元素对应每个

节点,初始值都为1;

(3) 除了炮点所在网格边上的节点,其余的节点再算一次。此时插值的边

界包括把该节点围起来的各个边界,如图2-3所示,如果边界两端点的标志都为0,或者两端点的旅行时都比该节点的大,则不再计算此边界。如果算到比原来小的,就用新算出来的值替代原来的。

图 3

(4) 比较此次计算得到的每个节点的旅行时和上一次计算得到的节点旅行

时,如果不相等,则置与该节点的标志为1,如果相等,则置为0; (5) 重复步骤(3),(4),至到没有节点的旅行时不再变小为止。此时便能

得到节点的最小旅行时。

二、 程序源代码

main()

{ FILE *fp,*fp0,*fp1,*fp2,*fp3,*fp4,*fp5,*fp6; int i,j,y,m,b,e,n,q,c,k,a; double mm,temp1,temp2; double x[108],xc[12][9];

for(i=0;i<108;i++)x[i]=1.0/3000.0; x[20]=x[29]=1.0/5000.0; x[77]=x[78]=1.0/2000.0; for(i=0;i<12;i++)

for(j=0;j<9;j++)xc[i][j]=x[9*i+j];

fp0=fopen(\ for(i=0;i<12;i++) { }

for(i=0;i<12;i++) {

for(j=0;j<12;j++) for(j=0;j<9;j++)

fprintf(fp0,\

fprintf(fp0,\

{

ray[12*i+j].begin=1.5+3.0*i; ray[12*i+j].end=1.5+3.0*j;

ray[12*i+j].slope=(ray[12*i+j].begin-ray[12*i+j].end)/45; ray[12*i+j].length=sqrt(45*45+pow(fabs(ray[12*i+j].begin-ray[12*i+j].end),2)); }

fp=fopen(\射线.txt\ for(i=0;i<144;i++) {

fprintf(fp,\ope,ray[i].length); }

fp1=fopen(\慢度.txt\ for(i=0;i<12;i++) {

for(j=0;j<9;j++)

fprintf(fp1,\}

fprintf(fp1,\ }

for(i=0;i<144;i++)

for(j=0;j<12;j++)

for(y=0;y<9;y++)ray[i].transform[j][y]=0;

for(i=0;i<144;i++) { }

for(i=0;i<144;i++) { }

ray[i].time=0; for(j=0;j<100;j++) {

ray[i].point[j].x=0; ray[i].point[j].y=0; }

fp4=fopen(\

for(i=0;i<12;i++) {

for(j=0;j<12;j++)

{

for(q=0;q<100;q++) { }

for(m=0;m<10;m++) { } n=10;

d[m].x=m*5.0;

d[m].y=-d[m].x*ray[i*12+j].slope+ray[i*12+j].begin; d[q].x=100; d[q].y=0;

e=ray[i*12+j].n;

if(e>0) { {

d[n].y=ray[i*12+j].begin+3.0*y-1.5; d[n].x=(3.0*y-1.5)/fabs(ray[12*i+j].slope); n++;

for(y=1;y<=e;y++)

}} if(e<0) { {

d[n].y=ray[i*12+j].begin+3.0*y+1.5;

d[n].x=-(3.0*y+1.5)/fabs(ray[12*i+j].slope); for(y=-1;y>=e;y--)

n++; }} b=0;

while(d[b].x!=100)

搜索更多关于: 《反演与层析成像》实验 - 图文 的文档
《反演与层析成像》实验 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7kvcn97z0y38cch96p84_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top