石油软件概论报告Word格式文档下载.docx
- 文档编号:17920652
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:29
- 大小:464.72KB
石油软件概论报告Word格式文档下载.docx
《石油软件概论报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《石油软件概论报告Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
#defineLEN3200
#defineNQ230000
voidfilter(float*h,intn)
{
inti;
floatt,f=40.,dt=0.001,pi=3.14;
for(i=1;
i<
=n/2;
i++)
{
t=i*dt;
h[i]=sin(2*pi*f*t)/(t*pi);
//算出滤波函数的右半边
h[i+n/2]=h[i];
//将右半边向右移动25
}
h[25]=2*f;
//定义在零点的值
for(i=0;
h[n/2-i]=h[n/2+i];
//左半边由右半边翻转定义
}
}
voidcvbx0(float*ki,float*h,float*ko,intn,intlen1)
inti,j,k;
floats;
for(i=0;
i<
len1;
i++)
ko[i]=0;
//ko赋零值
for(j=0;
j<
j++)//外循环
{
s=0;
51;
i++)//内循环
k=j-25+i;
if(k<
0||k>
=len1)continue;
//当j为0到24和len1-24到len1时,褶积不完全当(k<
=len1)时ki没有数与h褶积
s=s+h[i]*ki[k];
//褶积
ko[j]=s;
//i每循环完一次赋给ko
}
j++)
//当j为0到24和len1-24到len1时,褶积不完全。
这时当(k<
//===============================================================//
voidfft(float*xr,float*xi,intnr,floatT)
{
inti,j,k,l,n,n2,nr1,i1,j1,k2,k1n2;
floatc,s,p,tr,ti,trc,tic,ars;
n=(int)(pow(2,nr));
n2=n/2;
nr1=nr-1;
k=0;
for(l=1;
l<
=nr;
l++)
{
loop1:
for(j=1;
=n2;
k2=k/(int)(pow(2,nr1));
p=(float)(IBIT(k2,nr));
ars=(float)(6.2831852*p/(float)(n));
c=(float)(cos(ars));
s=(float)(sin(ars));
k1n2=k+n2;
tr=xr[k1n2]*c+xi[k1n2]*s*T;
ti=xi[k1n2]*c-xr[k1n2]*s*T;
xr[k1n2]=xr[k]-tr;
xi[k1n2]=xi[k]-ti;
xr[k]=xr[k]+tr;
xi[k]=xi[k]+ti;
k++;
k+=n2;
n)
{gotoloop1;
else
k=0;
nr1=nr1-1;
n2/=2;
=n;
i=IBIT(j-1,nr)+1;
if(i>
j)
j1=j-1;
i1=i-1;
trc=xr[j1];
tic=xi[j1];
xr[j1]=xr[i1];
xi[j1]=xi[i1];
xr[i1]=trc;
xi[i1]=tic;
if(T<
0.0)
for(j=0;
xr[j]/=n;
xi[j]/=n;
intIBIT(intj,intm)
inti,it,j1,j2;
it=0;
j1=j;
for(i=1;
=m;
j2=j1/2;
it=it*2+(j1-2*j2);
j1=j2;
returnit;
//***************************************************************************/
voidmain()
floatki[NQ2],ko[NQ2],xi[128],ri[128],r[128];
floath[51],dt,si,f=25;
intnflg,n,j,m,l,k,i;
intlen,len1,key,jhd,number,nta,ntb,nt,lz;
charnamei[50],nameo[50];
FILE*fp1,*fp2,*fp3,*fp4,*fp5;
union
inthd[NQ2];
floatdata[NQ2];
charbuf[NQ2];
shortintshd[NQ2];
}dat;
printf("
inputfilename:
"
);
scanf("
%s"
&
namei);
outputfilename:
nameo);
fp1=fopen(namei,"
rb"
if(fp1==NULL){printf("
can'
topeninputsegyfile\n"
exit(0);
fp2=fopen(nameo,"
wb"
if(fp2==NULL){printf("
can'
topenoutputsegyfile\n"
fread(&
dat.buf[0],1,LEN,fp1);
fwrite(&
dat.buf[0],1,LEN,fp2);
dat.buf[0],1,400,fp1);
len1=dat.shd[10];
printf("
samplenumbers:
%d\n"
len1);
samplerate(ms):
%u\n"
dat.shd[8]/1000);
seg_yflag:
dat.shd[12]);
/****************************************************************************/
dat.buf[0],1,400,fp2);
nflg=dat.shd[12];
if(nflg==1)len=len1*4+240;
if(nflg==2)len=len1*4+240;
if(nflg==3)len=len1*2+240;
\ninputrecordlength:
len);
n=0;
jhd=60;
//==========================================================/
fp3=fopen("
lvboyinzi.csv"
"
w"
filter(h,51);
fprintf(fp3,"
%f\n"
h[i]);
/************************************************************/
fp4=fopen("
ko.csv"
fp5=fopen("
FFt.csv"
while((l=fread(&
dat.buf[0],1,len,fp1))>
0)
ki[i]=dat.data[i+jhd];
//dat.hd[],dat.shd[]
cvbx0(ki,h,ko,51,len1);
//对数据进行各种处理
dat.data[i+jhd]=ko[i];
dat.buf[0],1,len,fp2);
n++;
if(n==100)
512;
ri[i]=ki[i];
xi[i]=0.;
fft(ri,xi,9,1);
r[i]=sqrt(ri[i]*ri[i]+xi[i]*xi[i]);
fprintf(fp5,"
r[i]);
fft(ri,xi,9,-1);
//printf("
tracenumber:
n);
fprintf(fp4,"
ko[i]);
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);
fclose(fp5);
1.3结果分析
调用filter(h,51)后输出的滤波因子波形,fm=40
滤波前滤波后
用Fimage成图显示
第2章时差校正
2.1方法
倾角时差校正(DMO)方法对于复杂地质构造条件下的纵波反射波(P-P)的多次覆盖地震数据的叠加具有显著的提高信噪比的效果.把共反射点道集中某个波,按水平界面一次反射波的公式计算动校正量,进行动校正后残留下来...对多次波等干扰波,则动校正后必然会存在剩余时差,共反射点叠加技术能利用这点来压制多次波。
在采用共中点(CMP)道集波有限慢度和精确常速极限情况下,这些准则具有互换性。
其最终方程是具有三个参数的位移双曲线NMO方程。
在比较近偏移距和远偏移距位移双曲线NMO方程和层状介质结果后,可赋予这些参数以地球物理意义。
这些参数中的零偏移距时间和NMO速度为常数,它控制了近偏移特性。
2.2程序
stdlib.h>
#defineN20
#defineLEN100
voidmodel(floata[][100],floatb[100]);
voidcvbx0(floatki[][100],floatz[],floatko[][100]);
voidjida(floatko[][100],intu[20],int*max);
voidjiaozheng(intu[20],floatg[][100],floath[][100]);
voidmain()
inti;
intmax;
intu[20];
//时差
floatg[20][100],h[20][100],ko[20][100];
//h为原始数据,ko为相关函数
floatb[100];
//b为模型道
FILE*fp1,*fp2;
"
&
topeninput20-100file\n"
topenoutput20-100file\n"
20;
fread(h[i],4,100,fp1);
//循环控制方法1
rp:
model(h,b);
//求模型道
cvbx0(h,b,ko);
//相关
//system("
pause"
jida(ko,u,&
max);
//求时差
jiaozheng(u,g,h);
//校正
max=%d\n"
max);
if(max>
1)gotorp;
/*方法2
max=2;
while(max>
1)
//相关
*/
printf("
%d\n"
u[i]);
fwrite(h[i],4,LEN,fp2);
voidmodel(floata[][100],floatb[100])
inti,j;
100;
b[i]=0.;
for(j=0;
j<
j++)
{
b[i]+=a[j][i];
}
b[i]=b[i]/20;
voidcvbx0(floatki[][100],floatz[],floatko[][100])
inti,j,k,q;
ko[i][j]=0.;
i++)
s=0.;
for(k=0;
k<
k++)
q=j+k-50;
if(q<
0||q>
=100)continue;
s=s+z[k]*ki[i][q];
ko[i][j]=s;
voidjida(floatko[][100],intu[20],int*max)//求时差
inti,j;
floatd;
u[i]=0;
d=ko[i][0];
if(d<
ko[i][j])
d=ko[i][j];
u[i]=j;
u[i]=50-u[i];
//printf("
*max=abs(u[0]);
if(*max<
abs(u[i]))
*max=abs(u[i]);
voidjiaozheng(intu[20],floatg[][100],floath[][100])
inti,j,q;
q=u[i];
g[i][j]=0.;
if((j-q)>
=0&
&
(j-q)<
100)
g[i][j]=h[i][j-q];
h[i][j]=g[i][j];
2.3结果分析
波形图
波形变面积图
20-100数据处理图
nose20-100数据处理图(第一次校正后)
nose20-100数据处理图(循环校正后)
第3章交互集成软件
3.1方法
1:
、建立工程
2、在menu中做好菜单,本实验中设计了一个滤波下的雷克子波显示(函数on1),该菜单下具有对话框功能,可以输入频率。
菜单还包含实验二中的静校正功能(函数on3,on4)。
3、建立类向导,添加函数,头文件,对对话框添加变量,创建新类等。
4编译运行。
实验主要程序代码都在视图类下编制,主要包括,1读任意文件程序,2画图程序,3,雷克子波和剩余时差静校正程序。
3.2程序
voidCZxsView:
:
On1()
//TODO:
Addyourcommandhandlercodehere
CClientDC*pdc=newCClientDC(this);
CPenpen;
pen.CreatePen(PS_SOLID,5,RGB(250,0,0));
CPen*oldpen=(CPen*)pdc->
SelectObject(&
pen);
constdoublePI=3.14159;
inti,cx=10,x2=50,y2,m=35,k;
doublef,dt,t,q,a[100];
k=m/2;
f=30.0;
zxsqdlg;
if(dlg.DoModal()==IDOK)f=dlg.m_1;
dt=0.004;
=k;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 石油 软件 概论 报告