地震波场模拟报告.docx

上传人:b****5 文档编号:7519321 上传时间:2023-01-24 格式:DOCX 页数:17 大小:155.90KB
下载 相关 举报
地震波场模拟报告.docx_第1页
第1页 / 共17页
地震波场模拟报告.docx_第2页
第2页 / 共17页
地震波场模拟报告.docx_第3页
第3页 / 共17页
地震波场模拟报告.docx_第4页
第4页 / 共17页
地震波场模拟报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

地震波场模拟报告.docx

《地震波场模拟报告.docx》由会员分享,可在线阅读,更多相关《地震波场模拟报告.docx(17页珍藏版)》请在冰豆网上搜索。

地震波场模拟报告.docx

地震波场模拟报告

 

《地震波场模拟》

程序设计报告

 

姓名:

严光明

学号:

201305060208

班级:

勘查二班

教师:

熊晓军

 

2016年4月20日

目录

程序1:

雷克子波

程序2:

一维褶积

程序3:

二维模型的褶积

程序4:

基于MISS软件的复杂模型的模拟

程序1:

雷克子波

一、任务与要求

画出雷克子波的图形

二、方法原理

三、程序设计

(1)程序代码

#include

#include

#definePI3.1415926

#defineVm20//主频

#defineN61//采样点数

#definedt0.002//采样间隔

voidleiker(float[]);//声明采样雷克子波函数

 

voidmain()

{

FILE*fp;

inti;

floatf[N]={0.0};//雷克子波采样值

leiker(f);//调用子函数

fp=fopen("201305060208.txt","w");//采样值写入文件

for(i=0;i

fprintf(fp,"%f\n",f[i]);

fclose(fp);

}

//采样雷克子波函数

voidleiker(floatf[])

{

inti;

for(i=0;i

{

f[i]=(1-2*PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt)*exp(-PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt);//雷克子波表达式

}

}

(2)计算实例

程序2:

一维褶积

一.任务与要求

把雷克子波和反射系数进行褶积

二.方法原理

三.程序设计

1.程序代码

#include

#include

#definePI3.1415926

#defineVm20

#definedt0.002//采样间隔

voidleiker(double[]);//声明雷克子波

voidcon(doublea[],doubleb[],doublec[],intM,intL);//声明褶积函数//

voidmain()

{

inti;

FILE*fp;

doublex[100]={0};//x反射系数,f表示子波;

x[50]=1.0;

doubley[100]={0};//输出的褶积值;

doublef[61]={0.0};//雷克子波采样值

leiker(f);//调用子函数

 

con(x,f,y,100,61);//调用褶积//

for(i=30;i<131;i++)

printf("%f\n",y[i]);//输出y到屏幕//

 

fp=fopen("zheji.txt","w");//采样值写入文件

for(i=30;i<131;i++)

fprintf(fp,"%f\n",y[i]);//输出褶积后的y值

fclose(fp);

 

}

 

//采样雷克子波函数//

voidleiker(doublef[])

{

inti;

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

{

f[i]=(1-2*PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt)*exp(-PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt);//雷克子波表达式

}

}

 

//褶积的函数//

voidcon(doublea[],doubleb[],doublec[],intM,intL)//a代表反射系数,b代表子波,c代表褶积后的值,M是a的个数,L是b的个数,N是c的个数

{

inti,j,N;

N=M+L-1;

for(i=0;i

{

doubletp=0.0;

for(j=0;j

{if((i-j)>=0&&(i-j)

tp+=a[j]*b[i-j];

}

c[i]=tp;

tp=0.0;

}

}

2.计算实例

程序3:

二维褶积

一.任务与要求

反射系数与二维的子波进行褶积

二.方法原理

把二维的转化为一维的数组在进行计算。

三.程序设计

1.程序代码

#include

#include

#definePI3.1415926

#defineVm20

#definedt0.002//采样间隔

voidleiker(double[]);//声明雷克子波

voidcon(doublea[],doubleb[],doublec[],intM,intL);//声明褶积函数//

voidmain()

{

inti,j,k,n;

FILE*fp;

doubleRef2d[60][100]={0},Ref1d[100]={0},yk[60][160]={0};

doubley[160]={0};//输出的褶积值;

floatTEMP;

doublef[61]={0.0};//雷克子波采样值

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

{

Ref2d[i][50]=1.0;

}

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

{

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

{

Ref1d[j]=Ref2d[i][j];

}

leiker(f);//调用子函数/

con(Ref1d,f,y,100,61);//调用褶积//

printf("第%d道",i);

n=i;

for(k=0;k<160;k++)

{

printf("%f",y[k]);

yk[n][k]=y[k];

}

}

fp=fopen("ooooo","w");

{

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

{

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

{

fprintf(fp,"%f\t",yk[i][j]);

}

fprintf(fp,"\n");

}

}

fclose(fp);

 

fp=fopen("123456","wb");

{

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

{

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

{

TEMP=yk[i][j];

fwrite(&TEMP,sizeof(float),1,fp);

}

}

}

fclose(fp);

 

}

 

//采样雷克子波函数//

voidleiker(doublef[])

{

inti;

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

{

f[i]=(1-2*PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt)*exp(-PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt);//雷克子波表达式

}

}

 

//褶积的函数//

voidcon(doublea[],doubleb[],doublec[],intM,intL)//a代表反射系数,b代表子波,c代表褶积后的值,M是a的个数,L是b的个数,N是c的个数

{

inti,j,N;

N=M+L-1;

for(i=0;i

{

doubletp=0.0;

for(j=0;j

{if((i-j)>=0&&(i-j)

tp+=a[j]*b[i-j];

}

c[i]=tp;

tp=0.0;

}

}

2.计算实例

程序4:

基于MISS软件的复杂模型的模拟

一.任务与要求

建立一个地层模型,利用MISS做出模型。

三.方法原理

和二维褶积模型的原理类似,只是反射系数做成MISS系统计算后的模型。

三.程序设计

1.程序代码

#include

#include

#definePI3.1415926

#include

#defineNX128//水平方向采样点

#defineNZ128//深度方向采样点

#defineVm20

#definedt0.002//采样间隔

voidleiker(double[]);//声明雷克子波

voidcon(doublea[],doubleb[],doublec[],intM,intL);//声明褶积函数//

voidmain()

{

inti,j,k,n;

floatLS;

intIX,IZ;

floatV[NZ][NX]={0};

FILE*fp,*fp1;

doubleRef2d[128][128]={0},Ref1d[128]={0},yk[128][188]={0};

doubley[188]={0};//输出的褶积值;

floatTEMP;

doublef[61]={0.0};//雷克子波采样值

//*************************************************************************//

//读文本速度文件

fp=fopen("Model_V.txt","r");

for(IZ=0;IZ

{

for(IX=0;IX

{

fscanf(fp,"%f",&V[IZ][IX]);

}

}

fclose(fp);

fp1=fopen("Model_R.txt","wb");

for(IX=0;IX

{

for(IZ=0;IZ

{

LS=float(V[IZ][IX]);

fwrite(&LS,sizeof(float),1,fp1);

}

}

fclose(fp1);

//*********************************************************************//

 

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

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

{

Ref2d[i][j]=V[i][j];

}

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

{

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

{

Ref1d[j]=Ref2d[i][j];

}

leiker(f);//调用子函数/

con(Ref1d,f,y,128,61);//调用褶积//

printf("第%d道",i);

n=i;

for(k=0;k<188;k++)

{

printf("%f",y[k]);

yk[n][k]=y[k];

}

}

fp=fopen("ooooo.txt","w");

{

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

{

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

{

fprintf(fp,"%f\t",yk[i][j]);

}

fprintf(fp,"\n");

}

}

fclose(fp);

 

fp=fopen("二进制文件","wb");

{

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

{

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

{

TEMP=yk[j][i];

fwrite(&TEMP,sizeof(float),1,fp);

}

}

}

fclose(fp);

 

}

 

//采样雷克子波函数//

voidleiker(doublef[])

{

inti;

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

{

f[i]=(1-2*PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt)*exp(-PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt);//雷克子波表达式

}

}

 

//褶积的函数//

voidcon(doublea[],doubleb[],doublec[],intM,intL)//a代表反射系数,b代表子波,c代表褶积后的值,M是a的个数,L是b的个数,N是c的个数

{

inti,j,N;

N=M+L-1;

for(i=0;i

{

doubletp=0.0;

for(j=0;j

{if((i-j)>=0&&(i-j)

tp+=a[j]*b[i-j];

}

c[i]=tp;

tp=0.0;

}

}

 

2.计算实例

构建的模型:

 

计算的结果:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1