⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kzmig.c.9.2.99

📁 seismic software,very useful
💻 99
📖 第 1 页 / 共 5 页
字号:
void timeb_(int *nr, int *nz, float *dr, float *dz, float *fz, float *a,	float *v0, float *t, float *p);void resit_(float *t, int *nx, int *ny, int *nz, int *nz0, int *nr,	float *dx, float *dy, float *dr, float *fx, float *fy, 	float *x0, float *y0, float *tb);void resit0_(float *t, int *nout, int *nz, int *nz0, int *nr, float *dr,	float *x, float *y, float *x0, float *y0, float *tb);void latint_(int *nx, int *ny, int *nz, float *x, float *y, float *t,	int *n1, int *n2, int *nzt, int *n0, float *f1, float *f2, 	float *d1, float *d2, float *tt);void bisear_(int *nxin, int *nxout, float *xin, float *xout, int *indx);void blinint_(int *nx, int *ny, int *nz, float *sx, float *sy, float *t0,    float *t1, float *t2, float *t3, float *t);float disp2l(float a, float b, float c,float x, float y);void xy2abc(float x1, float y1, float x2, float y2,        float *a, float *b, float *c);float disaper(float aperx,float apery,float x1,float y1,float x2,float y2);segytrace tra, tr;segybhdr bh;segychdr ch;main(int argc, char **argv){	int nlines, ncdppl;   	int nt,nzo,nz,nz0,it,ix,iy;    	FILE *infp,*outfp,*ttfp,*imgfp,*hdrfp,*hffp,*fldfp;	float x1,x2,x3,y1,y2,y3,s1,s2,s3,l1,l2,l3;	char *backupi="", *backupo="";	char *diskimg="DISKIMAGE", *diskhdr="DISKHEADER";	char *ttfile,*datain,*dataout;	char *diskfld="DISKFOLD", *hisfile="KZMIG.HISFILE";	int ibacko,isave, ihis=0, ipre=0;	float ds, dl, tmp;	int mtrace, ntrpre=0, ktrace, itrace, jtrace, ntrace, nofo;	int ltrace;	int *imutel, m1000, ifact, it0;	float **mig, **fold, *tgain, *zgain,*s, *l, *trace, *tras; 	float *ofo;	int *off, itgain, izgain, nl, ns, ntras, is, il, io;	int nsread, nlread;	int mlimit, nlcore, *iofs; 	float tpow, zpow, sstart, lstart, t0;	float xs, ys, xg, yg, dt, dzo, fzo, v0, dvz; 	float *ss, *sl, *gs, *gl, ms, ml, ofomin, dofo; 	float *st, *lt;	char *buf;	int itmp, itmp2, ntl;	float tminl, dtl, dldt, apers, aperl; 	float f0, df, ftaper;	int nf, nfft, *ifcut, *ltaper, nsave, tahd;	float *work1, *work2, *tracef, *wsave, *sqrtf;	float ddl, dds, ksmax, klmax;	int ndl, nds, ntmp, tapecntl;	float rmsmar, ampmax, amprms;	char *badtracefile="BAD_TRACE_FILE";	FILE *btfp;	float dd, mx, my, ofs;	int ids, idl; 	int cdp1, cdp2, cdp3;	int cdppds, cdppdds, cdppdl, cdppddl, cdpnum;	int nss, nll, iix, iiy, is0, il0;	float sinmin, sinmax, linmin, linmax; 	float angmax; 	char *jpfile;        FILE *jpfp;	int ntrend, nsout, nlout, isend;	float send, lend, dsout, dlout, dend, *disend;	float ps, pl;	int iofoin=0;	float ofol, ofor;	int offnear, offfar, flexbin;	int one=1; 	int range,gath,oldheadx,oldheady,newheadx,newheady,gottrace,ready,done,	    nr,ntab,itab,nxs0,nys0,nxs,nys,iz,ixs,iys,izi,izw,	    nxsb,nysb,nxs0b,nys0b;	float **ttab,*tb0,*pb0,*tb,*pb,*tt;	float offmax,ssmin,ssmax,slmin,slmax,rmax,dr,zi,fz,fxs,fys,scale,fold0;			usghed ugh;	int nzt,nst,nlt,nxst,nyst,ierr;	float fzt,fst,flt,fxst,fyst,exst,eyst,dzt,dst,dlt,dxst,dyst,ezt,est,elt;	float aa,bb,cc,dismax,tabx,taby;	float ltmin, ltmax, stmin, stmax; 		long long lwork, ltmp;	long long lpos, nseek;	float tr1,tr2,tr3,ln1,ln2,ln3,fline,ftrace;	String tracekey="tracl", linekey="tracr", trktype, lnktype;	Value trkval, lnkval;	int indxtrk, indxlnk;	int intline, inttrace, ikey;	int ntrdsk, ndskwt;	int ncpu, traceout;	char *envs;	char *datetime;	int on2trace, ntotal;	int outputonly;   	/* get parameters */   	initargs(argc,argv);	requestdoc(1);	/* open input and output data sets */    	if (!getparstring("datain", &datain)) {		infp = stdin;	} else {    		infp = efopen(datain,"r");	}    	if (!getparstring("dataout", &dataout)) {		outfp = stdout;	} else {    		outfp = efopen(dataout,"w");	}	fseek2g(infp,0,1);    fseek2g(outfp,0,1);	/* required parameters */    	if (!getparfloat("x1",&x1)) err("must specify x1");    	if (!getparfloat("y1",&y1)) err("must specify y1");    	if (!getparfloat("s1",&s1)) err("must specify s1");    	if (!getparfloat("l1",&l1)) err("must specify l1");    	if (!getparint("cdp1",&cdp1)) err("must specify cdp1");    	if (!getparfloat("x2",&x2)) err("must specify x2");    	if (!getparfloat("y2",&y2)) err("must specify y2");    	if (!getparfloat("s2",&s2)) err("must specify s2");    	if (!getparfloat("l2",&l2)) err("must specify l2");    	if (!getparint("cdp2",&cdp2)) err("must specify cdp2");    	if (!getparfloat("x3",&x3)) err("must specify x3");    	if (!getparfloat("y3",&y3)) err("must specify y3");    	if (!getparfloat("s3",&s3)) err("must specify s3");    	if (!getparfloat("l3",&l3)) err("must specify l3");    	if (!getparint("cdp3",&cdp3)) err("must specify cdp3");    	if (!getparfloat("dds",&dds)) err("Must specify dds!\n");    	if (!getparfloat("ddl",&ddl)) ddl = 0.; 	/* optional parameters */    	if (!getparfloat("sstart",&sstart)) sstart = s1;    	if (!getparfloat("lstart",&lstart)) lstart = l1;    	if (!getparfloat("ds",&ds)) ds = dds;    	if (!getparfloat("dl",&dl)) dl = ddl;    	if (!getparint("ndl",&ndl)) ndl = 1; if(ndl<1) ndl=1;    	if (!getparint("nds",&nds)) nds = 1; if(nds<1) nds=1;    	if (!getparfloat("angmax",&angmax)) angmax = 60.;	if(ds<dds) err(" dds larger than ds ");	if(dl<ddl) err(" ddl larger than dl ");	if(dds>0.) {		tmp = (s2-s1)/dds + 1.5;		ncdppl = tmp;	} else {		ncdppl = 1; 	}	if(ddl!=0.) {		tmp = (l3-l1)/ddl + 1.5;		nlines = tmp;	} else {		nlines = 1;	} 	if(nlines<10) {		tahd = 1;		fold0 = 10.;	}	else {		tahd = 0;		fold0 = 100.;	}    	if (!getparint("nl",&nlread)) nlread = nlines;    	if (!getparint("ns",&nsread)) nsread = ncdppl;	nl = nlread;	ns = nsread;    	if (dl==0. && nl>1) err("Must specify nonzero dl for migration");    	if (ds==0. && ns>1) err("Must specify nonzeor ds for migration");	if(dds==0.) { dds = 1.0; ds = dds; }	if(ddl==0.) { ddl = 1.0; dl = ddl; }	if(ncdppl>1) {		tmp = (cdp2 - cdp1)/(ncdppl-1.) + .5;		cdppdds = tmp;		tmp = (cdp2 - cdp1)/(ncdppl-1.) + .5;		cdppds = tmp;	} else {		cdppdds = nlines;		cdppds = nlines;	}	if(cdppdds<1) cdppdds = 1;	if(cdppds<1) cdppds = 1;	if(nlines>1) {		tmp = (cdp3 - cdp1)/(nlines-1.) + .5;		cdppddl = tmp;		tmp = (cdp3 - cdp1)/(nlines-1.) + .5;		cdppdl = tmp;	} else {		cdppddl = ncdppl;		cdppdl = ncdppl;	}	if(cdppddl<1) cdppddl = 1;	if(cdppdl<1) cdppdl = 1;	if(cdppdds!=1 && cdppddl!=1 ) {		warn("cdppdds=%d cdppddl=%d ",cdppdds,cdppddl);		err("check cdp1, cdp2, cdp3 ");	}	if(cdppdds==1) {		cdpnum = 0;	} else {		cdpnum = 1;	}	tmp = ds/dds+0.5;	nss  = tmp;	tmp = dl/ddl+0.5;	nll  = tmp;	tmp = (sstart-s1)/dds+0.5;	is0 = tmp;	tmp = (lstart-l1)/ddl+0.5;	il0 = tmp;    	if (!getparint("mtrace",&mtrace)) mtrace = 1000;    	if (!getparint("ntras",&ntras)) ntras = 2000000000;	    	if (!getparfloat("tpow",&tpow)) tpow = -1.;    	if (!getparfloat("zpow",&zpow)) zpow = 1.;	itgain = 0;	izgain = 0;	if(tpow!=0.) itgain = 1;	if(zpow!=0.) izgain = 1;    	if (!getparint("ifact",&ifact)) ifact = 1;    	if (!getparfloat("apers",&apers)) apers = fabs(ns*ds)/4.;    	if (!getparfloat("aperl",&aperl)) aperl = fabs(nl*dl)/4.;    	if (!getparfloat("rmsmar",&rmsmar)) rmsmar = 50.;	getparstring("badtracefile",&badtracefile);	if( (btfp = fopen(badtracefile,"r"))!=NULL ) {		efclose(btfp);			btfp = efopen(badtracefile,"a");	} else {		btfp = efopen(badtracefile,"w");	}    	if ( getparfloat("send",&send)     	  && getparfloat("lend",&lend)     	  && getparint("ntrend",&ntrend) ) {		if(ntrend<1) err("ntrend must be greater than 0 ");		nsout = ntrend;		nlout = 1;	} else {		ntrend = 0;		nsout = ns;		nlout = nl;	} 	if(!getparint("ntrdsk",&ntrdsk)) ntrdsk = 0;        ndskwt = 0;	if (!getparint("ncpu",&ncpu)) ncpu = 1;	envs = (char*) emalloc(80*sizeof(char));        if(!getenv("PARALLEL")) {                sprintf(envs,"%s=%d","PARALLEL",ncpu);                putenv(envs);        }	if (!getparint("traceout",&traceout)) traceout = 1;	if (!getparint("on2trace",&on2trace)) on2trace = 0;   	if (!getparint("outputonly",&outputonly)) outputonly = 0;	ikey = 0;	if ( getparstring("tracekey",&tracekey)		&& getparstring("linekey",&linekey) ) {        ikey = 1;		trktype = hdtype(tracekey);		lnktype = hdtype(linekey);		indxtrk = getindex(tracekey);		indxlnk = getindex(linekey);		if(!getparfloat("tr1",&tr1)) err(" tr1 missing");		if(!getparfloat("tr2",&tr2)) err(" tr2 missing");		if(!getparfloat("tr3",&tr3)) err(" tr3 missing");		if(!getparfloat("ln1",&ln1)) err(" ln1 missing");		if(!getparfloat("ln2",&ln2)) err(" ln2 missing");		if(!getparfloat("ln3",&ln3)) err(" ln3 missing");	}	/* read id headers */    if(outputonly==0) {		fgethdr(infp,&ch,&bh);	}	/* read in first trace for nt and dt */	if(outputonly==0) {   		if (!fgettr(infp,&tra)) err("can't get first trace");	} else {			getparstring("diskhdr",&diskhdr);			hdrfp = efopen(diskhdr,"r");			fseek2g(hdrfp,0,1);			if(fread(&tra,sizeof(char),240,hdrfp)!=240)				err(" read error on %s \n",diskhdr);			efclose(hdrfp);	}   	nt = tra.ns;   	dt = (float)tra.dt/1000000.;	t0 = (float)tr.delrt/1000;	if(outputonly==1) idhdrs(&ch,&bh,nt);	ntotal = tra.tracl;	ntl = nt * ifact;	dtl = dt/ifact;	tminl = t0;	dldt = dtl/dt;	/* get traveltime grid header info */	if(!getparstring("ttfile",&ttfile))  ttfile="ttfile";	ttfp = fopen(ttfile,"r");	fseek2g(ttfp,0,1);	ierr = fgetusghdr(ttfp,&ugh);	if (ierr!=0) err("Grid parameters of %s required!\n",ttfile);	nzt = ugh.n1;	fzt = ugh.o1;	dzt = ugh.d1;	nst = ugh.n2;	fst = ugh.o2;	dst = ugh.d2;	nlt = ugh.n3;	flt = ugh.o3;	dlt = ugh.d3;	nxst = ugh.n4;	fxst = ugh.o4;	dxst = ugh.d4;	nyst = ugh.n5;	fyst = ugh.o5;	dyst = ugh.d5;	if (dyst==0.) dyst = 1.;	if (dxst==0.) dxst = 1.;	if (dst==0.) dst = 1.;	if (dlt==0.) dlt = 1.;	ezt = fzt+(nzt-1)*dzt;	if(dlt<999990){		est = fst+(nst-1)*dst;		elt = flt+(nlt-1)*dlt;	} else{		est = send;		elt = lend;	}	exst = fxst+(nxst-1)*dxst;	eyst = fyst+(nyst-1)*dyst;	if(!getparint("izw",&izw)) izw = (fzt<4*dzt)? 4-fzt/dzt: 0;   	if (!getparfloat("v0",&v0)) v0 = 5000.;   	if (!getparfloat("dvz",&dvz)) dvz = 0.6;   	if (!getparfloat("offmax",&offmax)) offmax = 13000;	tabx = offmax/dxst;	if(tabx>nxst) tabx = nxst;	taby = offmax/dyst;	if(taby>nyst) taby = nyst;	ntab = 0.5*tabx*taby+9.+3.*sqrt(tabx*tabx+taby*taby);	if(ntab>(tabx+3)*nyst) ntab = (tabx+3)*nyst;	if(ntab>(taby+3)*nxst) ntab = (taby+3)*nxst;	if(ntab>nxst*nyst) ntab = nxst*nyst;      	if (!getparint("nzo",&nzo)) nzo = 10*(nzt-1)+1;   	if (!getparfloat("dzo",&dzo)) dzo = 0.1*dzt;   	if (!getparfloat("fzo",&fzo)) fzo = fzt;		/*		fprintf(stderr,"fzo=%g fzt=%g fzo+(nzo-1)*dzo=%g ezt=%g \n",		fzo,fzt,fzo+(nzo-1)*dzo,ezt);		*/	if(fabs(fzo-fzt)<0.1*dzo) fzo = fzt;	if(fabs(fzo+(nzo-1)*dzo-ezt)<0.1*dzo) ezt  = fzo+(nzo-1)*dzo;	if(fzo<fzt || fzo+(nzo-1)*dzo>ezt) {	  warn("migration depth fzo=%g fze=%g \n", fzo, fzo+(nzo-1)*dzo);	  warn("traveltime depth fzt=%g ezt=%g \n", fzt, ezt);	  err("migration depth is beyond the depth in traveltime table!\n");	}	nz0 = (int)((fzo-fzt)/dzt);	fz = fzt+nz0*dzt;	nz = 1+(int)((fzo+(nzo-1)*dzo-fzt)/dzt+0.99)-nz0;     	if (!getparint("offnear",&offnear)) offnear = 0;    	if (!getparint("offfar",&offfar)) offfar = 0;    	if (!getparint("flexbin",&flexbin)) flexbin = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -