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

📄 vint2vrms.c

📁 seismic software,very useful
💻 C
字号:
#include "usgrid.h"#include "par.h"char *sdoc = "VINT2VRMS - convert interval velocity grid to rms velocity grid \n""\n""vint2vrms [parameters] <vint.data  >vrms.data 				\n" "\n""Required parameters:						 	\n""vint.data         Name of interval velocity grid file (standard input)	\n""vrms.data         Name of rms velocity grid file (standard output)	\n""\n""Optional parameters:							\n""ghdout=1          grid header output (1=yes 0=no)			\n""\n"" Notes:								\n"" 1. Input and output velocity grids are stored as (nt/nz,nx,ny) order, \n""    i.e., dimensions of the grids are:					\n""         1st dimension is time       				\n""         2nd dimension is lateral distance in inline direction		\n""         3rd dimension is lateral distance in crossline direction	\n"" 2. No time/depth conversion performed. The input and output must      \n""    be sampled in time.                                 		\n""\n""AUTHOR:	   Zhiming Li,       ,	3/30/93   		\n"    ;main(int argc, char **argv){    	FILE *infp=stdin,*outfp=stdout;	int ierr;	int n1,n2,n3,i1,i2,i3;	float d1,o1,tmp;	float *vint, *vrms;	float gmin, gmax;	int ghdout=1;	usghed usgh;    	/* get parameters */    	initargs(argc,argv);    	askdoc(1);	file2g(infp);	file2g(outfp);	/* required parameters */	/* optional parameters */	if(!getparint("ghdout",&ghdout)) ghdout=1;	/* read velocity grid header */	ierr = fgetusghdr(infp, &usgh);	if(ierr!=0) err(" input vint grid not standard grid file format \n"); 		n1 = usgh.n1;	n2 = usgh.n2;	n3 = usgh.n3; 	if(n3==0) n3=1;	d1 = usgh.d1;	o1 = usgh.o1;		gmin = usgh.gmin;	gmax = gmin;	    	vint = (float*)malloc(n1*sizeof(float));    	vrms = (float*)malloc(n1*sizeof(float));		for(i3=0;i3<n3;i3++) {		for(i2=0;i2<n2;i2++) {			efread(vint,sizeof(float),n1,infp);			vrms[0] = vint[0];			tmp = vint[0]*vint[0]*o1;			if(gmin>vrms[0])gmin=vrms[0];			if(gmax<vrms[0])gmax=vrms[0];			for(i1=1;i1<n1;i1++) {				tmp = tmp +  vint[i1]*vint[i1]*d1;				vrms[i1] = sqrt(tmp/(o1+i1*d1));				if(gmin>vrms[i1])gmin=vrms[i1];				if(gmax<vrms[i1])gmax=vrms[i1];			}			efwrite(vrms,sizeof(float),n1,outfp);		}	}	usgh.gmin = gmin;	usgh.gmax = gmax;	usgh.gtype = 1;	if(ghdout==1) {		ierr = fputusghdr(outfp, &usgh);		if(ierr!=0) err(" output vrms grid file error \n"); 	}	}

⌨️ 快捷键说明

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