wu<
h=1600
voidmain()
{
float
dt=0.004/dx=20.0/fm=25.0,h=1000.0/v=3000.0;
int讦lag_Co,iflag_ReJflag_Wv;
if(iflag_Wv=Wave(fm/dt)!
=l)printf(,,Waveiserror");
if(iflag_Re=Rflct(dt,h/v)!
=l)printf(,,Reflectioniserror
if(iflag_Co=Cnltn(dt,dx)!
=l)printf(,,Convosioniserror
");}
//WaveFormaingfunction
intWave(floatfmjloatdt)
FILE*fpw;intIt;
floatWa[Nw],t;
doublepai=3.1415926;
if((fpw=fopen(,,wave.dat,,/,,wb"))==NULL)printf(,,Connotopenfile,,,,wave,,,,H);
for(11=0;lt{
t=(float)(lt+l)*dt;
Wa[lt]=(float)(l.-2*pai*pai*fm*fm*t*t)*(float)exp(-2*pai*pai*fm*fm*t);//雷克子波的计算?
fwrite(&Wa[lt],sizeof(Wa[lt])丄fpw);
}fclose(fpw);return(l);
}
//ReflectFormaingfunctionintRflct(floatdtjloath,floatv){
FILE*fpr;
intltJx,Ltdpth;
floatt;
floatRe[Nt];
if((fpr=fopen(,,Reflect.dat,,,,,wb,,))==NULL)printf(,,Connotopenfile""Reflect""");
for(lx=0;lx{
for(lt=0;ltRe[lt]=0.;
for(lx=l;lx<2;lx++)
{
for(lt=O;lt{fread(&Wal[lt],sizeof(Wal[lt])lfpw);Wa[Nw-l-lt]=Wal[lt];}//子波数据反褶?
}
fclose(fpw);
for(lx=0;lx{
for(lt=0;lt{fread(&Rel[lt]/sizeof(&Rel[lt])/l,fpr);}for(lt=0;lt{
}
t=(float)2.*h/v;
Ltdpth=(int)(t/dt);
Re[Ltdpth]=l.;
for(lt=0;lt{fwrite(&Re[lt],sizeof(Re[lt])/l,fpr);
}
}
fclose(fpr);
return(l);
}
//Convolutionfunction
intCnltn(floatdtjloatdx)
{
FILE*fpc/*fpw/*fpr;
intItjxjtao;
float
Wal[Nw]M/a[Nw],Re[Nt+Nw+Nw],Rel[Nt];
floatCon[Nt+Nw];
if((fpc=fopen("Convosion.dat,,/,,wb,,))==NULL)printf("ConnotopenfileZConvosionif((fpw=fopen(,,wave.dat,,/,,rb,,))==NULL)printf(,,Connotopenfile,,"wave""");
if((fpr=fopen(,,Reflect.dat,\"rb,,))==NULL)printf(,,Connotopenfile^Reflect);
for(lt=0;lt{
Re[lt]=Rel[lt+Nw];〃反射系数数据移
动:
”0到Nt”移为”Nw到Nw+Nt"
}
for(lt=0;lt{
Con[lt]=0;
for(ltao=0;ltao{
Con[lt]=Con[lt]+Wa[ltao]*Re[-ltao+lt];//褶积运算
}
{fclose(fpw);
fclose(fpr);
fwrite(&Con[lt]zsizeof(Con[lt]),l,fpc);fclose(fpc);
}return(l);
}
对比分析:
1.垂直入射的结果是一条直线,反映了地下为水平界面;非垂直入射的结果是半条的双曲线,其反映了地下的非水平界面。
2.子波的频率越高其反射结果面积越大,子波长度越大其时间越短。
3.在两层反射界面垂直距离的情况下,其界面间距越人则反射信号越容易识别,子波长度越长,主频越大垂直距离越大则识别极限越小。
4.褶积结果与图4上半部分基本吻合,因为任意检波器的自激自收情况与计算的褶枳过程相同,则计算出的褶积结果与图吻合。
七、讨论建议
1、实验收获
学到了怎么利用褶枳计算各种波的反射结果,学到了一个程序应该怎样建立。
2、存在问题
编写程序的过程中出现的调试过程有难度。
3、其它问题
对于程序的取值,是否出界。
4、心得体会
要踏实的学习怎么编写一个好的程序,从编写程序的过程中建立好的编写习惯,对于个中反射波的褶积情况能够熟练的应用。
数值模拟实验一
《地震记录数值模拟的褶积模型》实验报告
学院:
地球物理学院
班级:
勘查技术与工程