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

📄 readhvel.c

📁 seismic software,very useful
💻 C
字号:
#include "velo.h"#include "par.h"/* read in velocity picks from input file pointer infp (HANDVEL card dataset) *//* input:                                                               *//*      infp                    file pointer for VELF card dataset      *//*      maxnp                   maximum number of (t,v) pairs per cdp 	*//*      maxncdp                 maximum number of cdps 			*//* ouput:                                                               *//*      cdp[maxncdp]            cdp of HANDVEL cards 	               	*//*      ts[maxncdp][maxnp]      time of picks (ms)                      *//*      vs[maxncdp][maxnp]      velocity of picks                       *//*      ncdp                    total number of cdp's found in HANVEL	*//*      nps[maxncdp]            number t-v pairs per cdp                *//*                                                                      *//* author:      Zhiming Li              10/94                           */void hvelread(FILE *infp, int *cdp, float *ts, float *vs,        int *ncdp, int *nps, int maxnp, int maxncdp) {        int it, i, nxin, jv, icdpnow, icdp;        int icmax,ic,nvt,ivelo;        float *time4, *velo4;	float *times, *velos;	char *cbuf;        icmax = maxncdp * maxnp;        icdpnow = 0;        nxin = 0;        cbuf = (char*)malloc(81*sizeof(char));        times = (float*)malloc(maxnp*sizeof(float));        velos = (float*)malloc(maxnp*sizeof(float));        time4 = (float*)malloc(4*sizeof(float));        velo4 = (float*)malloc(4*sizeof(float));        jv = 0;    for (ic=0;ic<icmax;ic++) {       	if (feof(infp) !=0 ) break;	bzero(cbuf,81);	fgets(cbuf,81,infp);       	if ( cbuf[0]=='H' && cbuf[1]=='A' && cbuf[2]=='N' && cbuf[3]=='D' 		&& cbuf[4]=='V' && cbuf[5]=='E' && cbuf[6]=='L' )  {		icdp = 0;		sscanf(cbuf+8,"%d",&icdp);		if(icdp==0) err("cdp number can not be zero");	  	if (icdpnow == 0 ) icdpnow = icdp;	} else if(icdpnow!=0 && cbuf[0]!='*' ) { 	  	if (icdp != icdpnow) {			if(nxin>=maxncdp) 			err(" maximum number of functions exceeded ");			if(jv>maxnp) 			err(" maximum number of t-v pairs exceeded ");			nps[nxin] = jv;			cdp[nxin] = icdpnow;	      		nvt = jv;			for(it=0;it<nvt;it++) {				ts[it+nxin*maxnp] = times[it];				vs[it+nxin*maxnp] = velos[it];			}		      		nxin = nxin + 1;	      		jv = 0;	      		icdpnow = icdp;		}		for(i=0;i<4;i++) {			time4[i] = 0.;			velo4[i] = 0.;		}		sscanf(cbuf,"%f %f %f %f %f %f %f %f",			&time4[0],&velo4[0],&time4[1],&velo4[1],			&time4[2],&velo4[2],&time4[3],&velo4[3]);	  	for(i=0;i<4;i++) {	     		ivelo = velo4[i];	     		if (ivelo == 0) break; 	     		times[jv] = time4[i];	     		velos[jv] = velo4[i];	     		jv = jv + 1;	     	}	}     }     if (jv>0) {	if(nxin>=maxncdp) 	err(" maximum number of functions exceeded ");	if(jv>maxnp) 	err(" maximum number of t-v pairs exceeded ");	nps[nxin] = jv;	cdp[nxin] = icdp;   	nvt = jv;	for(it=0;it<nvt;it++) {		ts[it+nxin*maxnp] = times[it];		vs[it+nxin*maxnp] = velos[it];	}		nxin = nxin + 1;	jv = 0;	icdpnow = icdp;     }     *ncdp = nxin;	     free(times);     free(velos);     free(cbuf);     free(time4);     free(velo4);}

⌨️ 快捷键说明

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