地震波场模拟报告Word文档格式.docx
《地震波场模拟报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《地震波场模拟报告Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
程序4:
基于MISS软件的复杂模型的模拟
一、任务与要求
画出雷克子波的图形
二、方法原理
三、程序设计
(1)程序代码
#include<
stdio.h>
math.h>
#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<
N;
i++)
fprintf(fp,"
%f\n"
f[i]);
fclose(fp);
}
//采样雷克子波函数
voidleiker(floatf[])
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)计算实例
一.任务与要求
把雷克子波和反射系数进行褶积
二.方法原理
三.程序设计
1.程序代码
#defineVm20
voidleiker(double[]);
//声明雷克子波
voidcon(doublea[],doubleb[],doublec[],intM,intL);
//声明褶积函数//
voidmain()
doublex[100]={0};
//x反射系数,f表示子波;
x[50]=1.0;
doubley[100]={0};
//输出的褶积值;
doublef[61]={0.0};
con(x,f,y,100,61);
//调用褶积//
for(i=30;
131;
printf("
y[i]);
//输出y到屏幕//
fp=fopen("
zheji.txt"
//输出褶积后的y值
//采样雷克子波函数//
voidleiker(doublef[])
61;
//褶积的函数//
voidcon(doublea[],doubleb[],doublec[],intM,intL)//a代表反射系数,b代表子波,c代表褶积后的值,M是a的个数,L是b的个数,N是c的个数
{
inti,j,N;
N=M+L-1;
{
doubletp=0.0;
for(j=0;
j<
M;
j++)
{if((i-j)>
=0&
&
(i-j)<
L)
tp+=a[j]*b[i-j];
}
c[i]=tp;
tp=0.0;
}
2.计算实例
二维褶积
反射系数与二维的子波进行褶积
二.方法原理
把二维的转化为一维的数组在进行计算。
1.程序代码
inti,j,k,n;
doubleRef2d[60][100]={0},Ref1d[100]={0},yk[60][160]={0};
doubley[160]={0};
floatTEMP;
60;
Ref2d[i][50]=1.0;
100;
j++)
{
Ref1d[j]=Ref2d[i][j];
}
//调用子函数/
con(Ref1d,f,y,100,61);
第%d道"
i);
n=i;
for(k=0;
k<
160;
k++)
printf("
%f"
y[k]);
yk[n][k]=y[k];
ooooo"
for(i=0;
{
for(j=0;
fprintf(fp,"
%f\t"
yk[i][j]);
\n"
}
123456"
wb"
TEMP=yk[i][j];
fwrite(&
TEMP,sizeof(float),1,fp);
建立一个地层模型,利用MISS做出模型。
三.方法原理
和二维褶积模型的原理类似,只是反射系数做成MISS系统计算后的模型。
stdlib.h>
#defineNX128//水平方向采样点
#defineNZ128//深度方向采样点
floatLS;
intIX,IZ;
floatV[NZ][NX]={0};
FILE*fp,*fp1;
doubleRef2d[128][128]={0},Ref1d[128]={0},yk[128][188]={0};
doubley[188]={0};
//*************************************************************************//
//读文本速度文件
Model_V.txt"
r"
for(IZ=0;
IZ<
NZ;
IZ++)
for(IX=0;
IX<
NX;
IX++)
fscanf(fp,"
&
V[IZ][IX]);
fp1=fopen("
Model_R.txt"
for(IX=0;
for(IZ=0;
LS=float(V[IZ][IX]);
fwrite(&
LS,sizeof(float),1,fp1);
fclose(fp1);
//*********************************************************************//
128;
Ref2d[i][j]=V[i][j];
con(Ref1d,f,y,128,61);
188;
ooooo.txt"
二进制文件"
TEMP=yk[j][i];
2.计算实例
构建的模型:
计算的结果: