地震波场模拟报告.docx
- 文档编号:7519321
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:17
- 大小:155.90KB
地震波场模拟报告.docx
《地震波场模拟报告.docx》由会员分享,可在线阅读,更多相关《地震波场模拟报告.docx(17页珍藏版)》请在冰豆网上搜索。
地震波场模拟报告
《地震波场模拟》
程序设计报告
姓名:
严光明
学号:
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.计算实例 构建的模型: 计算的结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 地震波 模拟 报告