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

📄 rayt3d.c

📁 seismic software,very useful
💻 C
📖 第 1 页 / 共 4 页
字号:
		filevyz[lenvyz]='\0';		lenvzz = strlen(diskvyz); 		filevzz = (char*)emalloc(lenvzz+1);		bcopy(diskvzz,filevzz,lenvzz);		filevzz[lenvzz]='\0';	}   	/* compute slowness squares  */ 	ov2 = ealloc1float(nzo*nyo*nxo);	ov2int_(v,&nx,&ny,&nz,&fx,&fy,&fz,&dx,&dy,&dz,ov2,&nxo,&nyo,&nzo,		&fxo,&fyo,&fzo,&dxo,&dyo,&dzo);	if(nev){    	    if (!getparfloat("v0",&v0)) v0 = 5000;    	    if (!getparfloat("dvz",&dvz)) dvz = 0.;	    dr = (dxo<dyo)?dxo/3.:dyo/3.;	    rmax = sqrt((exs-fxo)*(exs-fxo)+(eys-fyo)*(eys-fyo));	    if(rmax<sqrt((exo-fxs)*(exo-fxs)+(eyo-fys)*(eyo-fys)))		rmax = sqrt((exo-fxs)*(exo-fxs)+(eyo-fys)*(eyo-fys));	    nr = 1.5+rmax/dr;	    tb = alloc1float(nr*nzo); 	    timeb_(&nr,&nzo,&dr,&dzo,&fzo,&dvz,&v0,tb); 	}/* allocate velocity derivative arrays for ray tracing *//* memory for this vt group of arrys: 7*nzyxt*ncpu*sizeof(float) bytes */	if(compress<=1.) {   		vt = ealloc1float(nzyxt*ncpu); 		vxxt = ealloc1float(nzyxt*ncpu);		vxyt = ealloc1float(nzyxt*ncpu);		vxzt = ealloc1float(nzyxt*ncpu);		vyyt = ealloc1float(nzyxt*ncpu);		vyzt = ealloc1float(nzyxt*ncpu);		vzzt = ealloc1float(nzyxt*ncpu);	}			/*	fprintf(stderr," after alloc  vzzt nzyxt=%d \n",nzyxt);*/   	/* allocate time arrays   */	/* this t group of arrays size: 2*(nzo+1)*nyo*nxo*ncpu*sizeof(float) */ 	tt1 = ealloc1float(nyo*nxo*ncpu); 	tt2 = ealloc1float(nyo*nxo*ncpu);	t = ealloc1float(nzo*nyo*nxo*ncpu);	s = ealloc1float(nzo*nyo*nxo*ncpu);	ysp = ealloc1float(ncpu);	xsp = ealloc1float(ncpu);	azhnp = ealloc1float(ncpu);	azhxp = ealloc1float(ncpu);	fxtp = ealloc1float(ncpu);	fytp = ealloc1float(ncpu);	nxtp = ealloc1int(ncpu);	nytp = ealloc1int(ncpu);/*	fprintf(stderr," after alloc  nytp \n");*/    	i2 = 2;	i3 = 3;	i6 = 6;	n1 = 128;	if(n1<na) n1 = na;	n2 = 1001*n1;	if(nt>1001) n2 = nt * n1;	/* allocate other working arrays */	/* this p group of arrays size: 28*128*1001*ncpu*sizeof(float) */	xp = ealloc1float(n2*ncpu);	yp = ealloc1float(n2*ncpu);	zp = ealloc1float(n2*ncpu);	pxp = ealloc1float(n2*ncpu);	pyp = ealloc1float(n2*ncpu);	pzp = ealloc1float(n2*ncpu);	e1xp = ealloc1float(n2*ncpu);	e1yp = ealloc1float(n2*ncpu);	e1zp = ealloc1float(n2*ncpu);	e2xp = ealloc1float(n2*ncpu);	e2yp = ealloc1float(n2*ncpu);	e2zp = ealloc1float(n2*ncpu);	q111p = ealloc1float(n2*ncpu);	q112p = ealloc1float(n2*ncpu);	q121p = ealloc1float(n2*ncpu);	q122p = ealloc1float(n2*ncpu);	p211p = ealloc1float(n2*ncpu);	p212p = ealloc1float(n2*ncpu);	p221p = ealloc1float(n2*ncpu);	p222p = ealloc1float(n2*ncpu);	q211p = ealloc1float(n2*ncpu);	q212p = ealloc1float(n2*ncpu);	q221p = ealloc1float(n2*ncpu);	q222p = ealloc1float(n2*ncpu);	vp = ealloc1float(n2*ncpu);	dvdxp = ealloc1float(n2*ncpu);	dvdyp = ealloc1float(n2*ncpu);	dvdzp = ealloc1float(n2*ncpu);	nrsp = ealloc1int(n1*ncpu);	a0p = ealloc1float(n1*ncpu);	azh0p = ealloc1float(n1*ncpu);	p2p = ealloc1float(i2*i2*ncpu);	q2p = ealloc1float(i2*i2*ncpu);	hp = ealloc1float(i3*i3*ncpu);	gradvp = ealloc1float(i3*ncpu);	d2tp = ealloc1float(i6*ncpu);	map = ealloc1int(n1*ncpu);	vs = ealloc1float(n1*ncpu);	dvdxs = ealloc1float(n1*ncpu);	dvdys = ealloc1float(n1*ncpu);	dvdzs = ealloc1float(n1*ncpu);	uxx = ealloc1float(n1*ncpu);	uxy = ealloc1float(n1*ncpu);	uxz = ealloc1float(n1*ncpu);	uyy = ealloc1float(n1*ncpu);	uyz = ealloc1float(n1*ncpu);	uzz = ealloc1float(n1*ncpu);	tzt = ealloc1float(n1*ncpu);	xx = ealloc1float(n1*ncpu);	yy = ealloc1float(n1*ncpu);	zz = ealloc1float(n1*ncpu);	pxs = ealloc1float(n1*ncpu);	pys = ealloc1float(n1*ncpu);	pzs = ealloc1float(n1*ncpu);	e1xs = ealloc1float(n1*ncpu);	e1ys = ealloc1float(n1*ncpu);	e1zs = ealloc1float(n1*ncpu);	e2xs = ealloc1float(n1*ncpu);	e2ys = ealloc1float(n1*ncpu);	e2zs = ealloc1float(n1*ncpu);	p111s = ealloc1float(n1*ncpu);	p112s = ealloc1float(n1*ncpu);	p121s = ealloc1float(n1*ncpu);	p122s = ealloc1float(n1*ncpu);	q111s = ealloc1float(n1*ncpu);	q112s = ealloc1float(n1*ncpu);	q121s = ealloc1float(n1*ncpu);	q122s = ealloc1float(n1*ncpu);	p211s = ealloc1float(n1*ncpu);	p212s = ealloc1float(n1*ncpu);	p221s = ealloc1float(n1*ncpu);	p222s = ealloc1float(n1*ncpu);	q211s = ealloc1float(n1*ncpu);	q212s = ealloc1float(n1*ncpu);	q221s = ealloc1float(n1*ncpu);	q222s = ealloc1float(n1*ncpu);	dxx = ealloc1float(n1*ncpu);	dyy = ealloc1float(n1*ncpu);	dzz = ealloc1float(n1*ncpu);	dpxs = ealloc1float(n1*ncpu);	dpys = ealloc1float(n1*ncpu);	dpzs = ealloc1float(n1*ncpu);	de1x = ealloc1float(n1*ncpu);	de1y = ealloc1float(n1*ncpu);	de1z = ealloc1float(n1*ncpu);	de2x = ealloc1float(n1*ncpu);	de2y = ealloc1float(n1*ncpu);	de2z = ealloc1float(n1*ncpu);	dp111 = ealloc1float(n1*ncpu);	dp112 = ealloc1float(n1*ncpu);	dp121 = ealloc1float(n1*ncpu);	dp122 = ealloc1float(n1*ncpu);	dq111 = ealloc1float(n1*ncpu);	dq112 = ealloc1float(n1*ncpu);	dq121 = ealloc1float(n1*ncpu);	dq122 = ealloc1float(n1*ncpu);	dp211 = ealloc1float(n1*ncpu);	dp212 = ealloc1float(n1*ncpu);	dp221 = ealloc1float(n1*ncpu);	dp222 = ealloc1float(n1*ncpu);	dq211 = ealloc1float(n1*ncpu);	dq212 = ealloc1float(n1*ncpu);	dq221 = ealloc1float(n1*ncpu);	dq222 = ealloc1float(n1*ncpu);	xt = ealloc1float(n1*ncpu);	yt = ealloc1float(n1*ncpu);	zt = ealloc1float(n1*ncpu);	pxt = ealloc1float(n1*ncpu);	pyt = ealloc1float(n1*ncpu);	pzt = ealloc1float(n1*ncpu);	e1xt = ealloc1float(n1*ncpu);	e1yt = ealloc1float(n1*ncpu);	e1zt = ealloc1float(n1*ncpu);	e2xt = ealloc1float(n1*ncpu);	e2yt = ealloc1float(n1*ncpu);	e2zt = ealloc1float(n1*ncpu);	p111t = ealloc1float(n1*ncpu);	p112t = ealloc1float(n1*ncpu);	p121t = ealloc1float(n1*ncpu);	p122t = ealloc1float(n1*ncpu);	q111t = ealloc1float(n1*ncpu);	q112t = ealloc1float(n1*ncpu);	q121t = ealloc1float(n1*ncpu);	q122t = ealloc1float(n1*ncpu);	p211t = ealloc1float(n1*ncpu);	p212t = ealloc1float(n1*ncpu);	p221t = ealloc1float(n1*ncpu);	p222t = ealloc1float(n1*ncpu);	q211t = ealloc1float(n1*ncpu);	q212t = ealloc1float(n1*ncpu);	q221t = ealloc1float(n1*ncpu);	q222t = ealloc1float(n1*ncpu);	dxt = ealloc1float(n1*ncpu);	dyt = ealloc1float(n1*ncpu);	dzt = ealloc1float(n1*ncpu);	dpxt = ealloc1float(n1*ncpu);	dpyt = ealloc1float(n1*ncpu);	dpzt = ealloc1float(n1*ncpu);	de1xt = ealloc1float(n1*ncpu);	de1yt = ealloc1float(n1*ncpu);	de1zt = ealloc1float(n1*ncpu);	de2xt = ealloc1float(n1*ncpu);	de2yt = ealloc1float(n1*ncpu);	de2zt = ealloc1float(n1*ncpu);	dp111t = ealloc1float(n1*ncpu);	dp112t = ealloc1float(n1*ncpu);	dp121t = ealloc1float(n1*ncpu);	dp122t = ealloc1float(n1*ncpu);	dq111t = ealloc1float(n1*ncpu);	dq112t = ealloc1float(n1*ncpu);	dq121t = ealloc1float(n1*ncpu);	dq122t = ealloc1float(n1*ncpu);	dp211t = ealloc1float(n1*ncpu);	dp212t = ealloc1float(n1*ncpu);	dp221t = ealloc1float(n1*ncpu);	dp222t = ealloc1float(n1*ncpu);	dq211t = ealloc1float(n1*ncpu);	dq212t = ealloc1float(n1*ncpu);	dq221t = ealloc1float(n1*ncpu);	dq222t = ealloc1float(n1*ncpu);/*	fprintf(stderr," after alloc  all arrays \n");*/    	fprintf(jpfp," \n");   	fprintf(jpfp," RAYT3D parameters \n");   	fprintf(jpfp,"===================\n");   	fprintf(jpfp," vfile=%s \n",vfile);   	if(nev==0) fprintf(jpfp," tfile=%s \n",tfile);   	fprintf(jpfp," one-way time: dt=%g nt=%d \n",dt,nt);   	fprintf(jpfp," nz=%d nx=%d ny=%d \n",nz,ny,nx);   	fprintf(jpfp," fz=%g fx=%g fy=%g \n",fz,fy,fx);   	fprintf(jpfp," dz=%g dx=%g dy=%g \n",dz,dy,dx);   	fprintf(jpfp," nzo=%d nxo=%d nyo=%d \n",nzot,nyot,nxot);   	fprintf(jpfp," fzo=%g fxo=%g fyo=%g \n",fzot,fyot,fxot);   	fprintf(jpfp," dzo=%g dxo=%g dyo=%g \n",dzot,dyot,dxot);   	fprintf(jpfp," nzoe=%d nxoe=%d nyoe=%d \n",nzo,nyo,nxo);   	fprintf(jpfp," fzoe=%g fxoe=%g fyoe=%g \n",fzo,fyo,fxo);   	fprintf(jpfp," dzoe=%g dxoe=%g dyoe=%g \n",dzo,dyo,dxo);	if(nev){   	fprintf(jpfp," \n");   	fprintf(jpfp," ntline=%d v0=%g dvz=%g \n",nev,v0,dvz);	for(iev=0; iev<nev; ++iev) {   	fprintf(jpfp," \n");   	fprintf(jpfp," itline=%d tofile=%s \n",iev+1,tofile[iev]);   	fprintf(jpfp," xbeg=%g xend=%g ybeg=%g yend=%g \n",		ybeg[iev],yend[iev],xbeg[iev],xend[iev]);   	fprintf(jpfp," nout=%d dxout=%g dyout=%g \n",		nout[iev],dyout[iev],dxout[iev]);	}	}   	fprintf(jpfp," \n");	fprintf(jpfp," nxs=%d nys=%d fxs=%g fys=%g dxs=%g dys=%g \n",		nys,nxs,fys,fxs,dys,dxs);			  	fprintf(jpfp," aperx=%g apery=%g \n",apery,aperx);	fprintf(jpfp," fa=%g da=%g na=%d \n",fa*180./PI,da*180./PI,na);	fprintf(jpfp," amin=%g amax=%g azhmin=%g azhmax=%g \n",		amin*180./PI,amax*180./PI,azhmin*180./PI,azhmax*180./PI);	fprintf(jpfp," ek=%d ms=%d ncpu=%d jpfile=%s restart=%s isres=%d\n",		ek,ms,ncpu,jpfile,restart,isres);	fprintf(jpfp,"compress = %f\n",compress);		if(compress>1) {		fprintf(jpfp,"num_points[0] = %d\n",num_points[0]);		fprintf(jpfp,"num_points[1] = %d\n",num_points[1]);		fprintf(jpfp,"num_points[2] = %d\n",num_points[2]);		fprintf(jpfp,"null = %f\n",null);		fprintf(jpfp,"out_bytes = %lld\n",out_bytes);	}	   	fprintf(jpfp," \n");   	fprintf(jpfp," finish velocity input ... \n");   	fprintf(jpfp," begin traveltime calculation ... \n");	fflush(jpfp);	is0 = ixs0*nys + iys0;	nzyx = nz * ny * nx;	nzyxo = nzo * nyo * nxo;/*	fprintf(stderr,"is0=%d ixs0=%d nys=%d iys0=%d \n",is0,ixs0,nys,iys0);*/	/* loop over sources */	for (is=is0;is<nxs*nys;is=is+ncpu) {        np = ncpu;	    if(is+np>nxs*nys) np = nxs*nys - is;	    for(ip=0;ip<np;ip++) {			ixs = (is+ip)/nys;			iys = (is+ip) - ixs*nys; 			ysp[ip] = fys + iys*dys;		 			xsp[ip] = fxs + ixs*dxs;		 		/*		fprintf(stderr,"ysp=%f xsp=%f ip=%d fxs=%f ixs=%d dxs=%f iys=%d dys=%f\n",			ysp[ip],xsp[ip],ip,fxs,ixs,dxs,iys,dys);		*/	    }		/*	fprintf(stderr,"nzyx=%d nzyxo=%d nz=%d ny=%d nx=%d \n",		nzyx,nzyxo,nz,ny,nx);	fprintf(stderr,"nzo=%d nyo=%d nxo=%d ek=%d nt=%d dt=%g tmax=%g\n",		nzo,nyo,nxo,ek,nt,dt,tmax);fprintf(stderr,"na=%d fa=%g da=%g amin=%g amax=%g azhmin=%g azhmax=%g \n",		na,fa,da,amin,amax,azhmin,azhmax);fprintf(stderr,"fxo=%g fyo=%g fzo=%g dxo=%g dyo=%g dzo=%g fac=%g \n",		fxo,fyo,fzo,dxo,dyo,dzo,fac);fprintf(stderr,"fx=%g fy=%g fz=%g dx=%g dy=%g dz=%g aperx=%g apery=%g \n",		fx,fy,fz,dx,dy,dz,aperx,apery);		for(ip=0;ip<np;ip++) 			fprintf(stderr,"ysp=%g xsp=%g \n",xsp[ip],ysp[ip]);*//*	fprintf(stderr,"before raytracing \n");*//* allocate velocity derivative arrays for ray tracing *//* memory for this vt group of arrys: 7*nzyxt*ncpu*sizeof(float) bytes */	if(compress>1.0) {  		vt = ealloc1float(nzyxt*ncpu); 		vxxt = ealloc1float(nzyxt*ncpu);		vxyt = ealloc1float(nzyxt*ncpu);		vxzt = ealloc1float(nzyxt*ncpu);		vyyt = ealloc1float(nzyxt*ncpu);		vyzt = ealloc1float(nzyxt*ncpu);		vzzt = ealloc1float(nzyxt*ncpu);	}	    /* parallel computation */    rt3dp_(&np,&nzyx,&nzyxo,&nz,&ny,&nx,&nzo,&nyo,&nxo,&ek,&nt,       &na,&fa,&da,&amin,&amax,&azhmin,&azhmax,&dt,&tmax,&fxo,&fyo,&fzo,       &dxo,&dyo,&dzo,&fac,&fx,&fy,&fz,&dx,&dy,&dz,&aperx,&apery,v,vxx,vxy,vxz,	   vyy,vyz,vzz,ov2,vt,vxxt,vxyt,vxzt,vyyt,vyzt,vzzt,tt1,tt2,t,s,       	   xsp,ysp,azhnp,azhxp,fxtp,fytp,nxtp,nytp,&nzyxt,	   xp,yp,zp,pxp,pyp,pzp,e1xp,e1yp,e1zp,e2xp,e2yp,e2zp,	   q111p,q112p,q121p,q122p,p211p,p212p,p221p,p222p,	   q211p,q212p,q221p,q222p,vp,dvdxp,dvdyp,dvdzp,nrsp,	   a0p,azh0p,&n1,&n2,p2p,q2p,hp,gradvp,d2tp,&i2,&i3,&i6,	   map,vs,dvdxs,dvdys,dvdzs,uxx,uxy,uxz,uyy,uyz,uzz,tzt,	   xx,yy,zz,pxs,pys,pzs,e1xs,e1ys,e1zs,e2xs,e2ys,e2zs,	   p111s,p112s,p121s,p122s,q111s,q112s,q121s,q122s,   	   p211s,p212s,p221s,p222s,q211s,q212s,q221s,q222s,	   dxx,dyy,dzz,dpxs,dpys,dpzs,de1x,de1y,de1z,de2x,	   de2y,de2z,dp111,dp112,dp121,dp122,dq111,dq112,dq121,dq122,	   dp211,dp212,dp221,dp222,dq211,dq212,dq221,dq222,	   xt,yt,zt,pxt,pyt,pzt,e1xt,e1yt,e1zt,e2xt,e2yt,e2zt,	   p111t,p112t,p121t,p122t,q111t,q112t,q121t,q122t,p211t,	   p212t,p221t,p222t,q211t,q212t,q221t,q222t,dxt,dyt,	   dzt,dpxt,dpyt,dpzt,de1xt,de1yt,de1zt,de2xt,de2yt,de2zt,	   dp111t,dp112t,dp121t,dp122t,dq111t,dq112t,dq121t,dq122t,	   dp211t,dp212t,dp221t,dp222t,dq211t,dq212t,dq221t,dq222t,	   vv,&idisk,filevxx,filevxy,filevxz,filevyy,filevyz,filevzz,	   &lenvxx,&lenvxy,&lenvxz,&lenvyy,&lenvyz,&lenvzz);				   	/* free memory */	if(compress>1.0) {  		free1float(vt); 		free1float(vxxt); 		free1float(vxyt); 		free1float(vxzt); 		free1float(vyyt); 		free1float(vyzt); 		free1float(vzzt);	}	   /* check the travel time calculation */	   for(ip=0;ip<np;ip++) {		isnow = is + ip;		itmp = nxo * nyo * nzo;	   	fminmax(t+ip*itmp,itmp, &gmin, &gmax);	   	/* print warning message if needed */		if(gmin > 9999.) { 		fprintf(jpfp,		" NULL travel time table at source is=%d xs=%g ys=%g\n",		isnow+1,ysp[ip],xsp[ip]);   	      	fflush(jpfp); 		warn(		" NULL travel time table at source is=%d xs=%g ys=%g\n",		isnow+1,ysp[ip],xsp[ip]);		}	    }	    /* output travel time table */	    if(!nev){ 

⌨️ 快捷键说明

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