App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/c/synseis/src/synseis_bck.c  view on Meta::CPAN

	}
	else {
	  resample_source = TRUE;
/*	  t_increment = (float)atof(&argv[i][2]);*/
	}
	break;
      case 'S': /*-Ssource file name*/
	read_source = TRUE;
	source_filename = &argv[i][2];
	resample_source = FALSE;
	break;
      case 'V': /*-V verbose*/
	  verbose = TRUE;
	  if( verbose == TRUE )
          printf("%s\n",zrhov_filename);
	   break;
      case 'W': /*water depth*/
	sscanf (&argv[i][2],"%f",&water_depth);
	
/* not like by linux
 * water_depth=(float)atof(&argv[i][2]);*/
	
	break;
      case 'X': /* -X0 t0 for resampling source */
	if (argv[i][2]== '0') 
	 sscanf (&argv[i][3],"%f",&xstart); /*default=0.0*/
	/* doesn't work in linux	
		xstart = (float)atof(&argv[i][3]);*defaullt 0*/
	break;
      case 'Z': /*-Zdepth-density-velocityfile name*/
	zrhov_filename = &argv[i][2];
	break;
      }
    }
  }
  if( verbose == TRUE ) printf("%s\n",zrhov_filename); 
  if( verbose == TRUE ) printf("t_increment= %f\n",t_increment);
  if( verbose == TRUE ) printf("z_increment =%f\n",z_increment);
  if( verbose == TRUE ) printf("water_depth =%f\n",water_depth);
  if( verbose == TRUE ) printf("source_filname =%s\n",source_filename);
  
//  if (argc == 1 || error ) {
//    fprintf (stderr, " -AFfrequency of Ricker wavelet(Hz)\n");
//    fprintf (stderr, " -AElength of ricker wavelet in secs\n");
//    fprintf (stderr, " -Aoname of output ricker wavelet file if wanted\n");
//    fprintf (stderr, " -CZoutput file with depth, refle. coef. pairs*\n");
//    fprintf (stderr, " -CToutput file with time, reflec. coef. pairs*\n");
//    fprintf (stderr, " -Isampling interval (s)*\n");
//    fprintf (stderr, " -IZsampling interval in depth (m)*\n");
//    fprintf (stderr, " -LDresampled log density filename*\n");
//    fprintf (stderr, " -LVresampled velocity filename*\n");
//    fprintf (stderr, " -Roresampled output source filename*\n");
//    fprintf (stderr, " -Rresample source=TRUE, otherwise don't resample\n");
//    fprintf (stderr, " -Ssource_file_name (resampling=FALSE)\n");
//    fprintf (stderr, " -Vspill all the details of the modelin\n");
//    fprintf (stderr, " -Zname of file with depth(mbsf),density(g/cc),velocity(m/s)*\n");
//    fprintf (stderr, "\n\n\n\n\n * ALWAYS USE\n");
//
//  }
//
//  /*DATA INPUT */
//
//  /*SOURCE IN A FILE ----------------START-----------------------------*/
//  /* read source file*/
//  if(read_source == TRUE) {
//    if(  (fpin = fopen(source_filename,"r") ) == NULL) {
//      printf("Can't open file1 %s, try again\n", source_filename);
//      exit(0);
//    }
//
//    if(resample_source == TRUE) {
//      for(i=0, num_pts_src=0; (!feof(fpin));  i++, num_pts_src++) {
//	fscanf (fpin, "%d %f", &t, &A);
//	/*wint[i] = t;*/
//	wint[i] = (float)t * t_increment; /*TINT;default 1 ms Sample Interval*/
//	winA[i] = A;
//      }
//      fclose(fpin);
//    }
//
//    if(resample_source == FALSE) {
//      for(i=0, num_pts_src=0; (!feof(fpin));  i++, num_pts_src++) {
//	fscanf (fpin, "%f\n", &A); /* N.B. only amplitudes */
//	winA_reg[i] = A;
///*	printf(" amplitude from file= %f\n",winA_reg[i]); */
//      }
//      fclose(fpin);
//      num_pts_reg = num_pts_src;
//      xstart = (float)XSTART; /* XSTART default = 0.0 */
//      /*t_increment = (float)TINT; TINT=0.001 s */
//      if(verbose == TRUE) {
//	printf("For source resampled before i/p \n");
//	printf("t_increment= %f  xstart= %f counter= %f\n",t_increment, xstart,(float)1);
//	for(i=0; i< num_pts_reg; i++) {
//	  wint_reg = xstart + (float)i* t_increment;
//	  printf("t= %f  A= %f\n",wint_reg, winA_reg[i]);
//	}
//      }
//      /*      t_increment = wint[1] - wint[0]; only amplitudes here
//	      if(verbose == TRUE) printf("t_increment=%f\n",t_increment);
//	      if(T_INCREMENT != t_increment) printf("t_increment warning\n");*/
//    }
//
//    if(resample_source == TRUE) {
//      /*regularize source here*/
//      if(verbose == TRUE) printf("    time,      Amplitude\n");
//      subtract = wint[0];
//      for(i=0; i< num_pts_src; i++) {
//	wint[i] = wint[i] - subtract; /* make xstart = 0*/
//	if(verbose == TRUE) printf("%f,      %f\n",wint[i],winA[i]);
//      }
//      regular(xstart, t_increment, num_pts_src,
//	      &num_pts_reg, winA, wint, winA_reg); /*xstart from stdin*/
//
//      if(verbose == TRUE){
//	printf("  time,     Amplitude,num_pts_reg = %d\n", num_pts_reg);
//      }
//
//      for ( i=0;  i< num_pts_reg;  i++) {
//	wint_reg = xstart + i* t_increment;
//	if(verbose == TRUE) printf("%f,      %f\n",wint_reg, winA_reg[i]);

lib/App/SeismicUnixGui/c/synseis/src/synseis_bck.c  view on Meta::CPAN

//	printf("%f,%f\n",wint_reg,winA_reg[i]);
//      }
//    }
//*/
//    convolve(Refl_coef_reg, num_pts_log_reg, num_pts_reg,
//	       t_increment, winA_reg, Convolve_Amplitude);
//    num_pts_conv = num_pts_log_reg+num_pts_reg;
//    if(verbose == TRUE) {
//      for (i=0;  i< num_pts_conv;  i++){
//	Convolve_time = (t_increment * (float)i  ) + xstart;
//	printf("%f\t%f\n", Convolve_time, Convolve_Amplitude[i]);
//      }
//    }
//  }
//  /*----------------------- my source already resampled ---------------*/
//
//  /*read my own source but didn't resample,as it had been already resampled*/
//  if (read_source == TRUE && resample_source == FALSE){
//    /*N.B. num_pts_reg=num_pts_src*/
//    xstart = XSTART; /*defaulted to 0.0*/
//    /*t_increment = TINT;*/
//
//    if(verbose == TRUE) {
//      printf("own source,didn't resample,already resampled\n");
//      printf("time and Amplitude\n");
//      for(i=0; i < num_pts_src; i++){
//	wint_reg = xstart + t_increment * (float)i;
//	printf("%f      %f\n",wint_reg,winA_reg[i]);
//      }
//    }
//    convolve(Refl_coef_reg, num_pts_log_reg, num_pts_reg,
//	     t_increment, winA_reg, Convolve_Amplitude);
//    num_pts_conv = num_pts_log_reg + num_pts_reg;
//    if(verbose == TRUE) {
//      printf("time and Amplitude for synthetic seismogram using above source\n");
//      for (i=0;  i< num_pts_conv;  i++){
//	Convolve_time = (t_increment * (float)i  ) + xstart;
//	printf("%f\t%f\n", Convolve_time, Convolve_Amplitude[i]);
//      }
//    }
//  }
//  /*---------------  Ricker Source ------------------------------------*/
//  if (ricker_wavelet == TRUE) { /*calculated ricker source*/
//    t_increment = (float)SI;
//    convolve(Refl_coef_reg, num_pts_log_reg, num_samples_Ricker,
//	       t_increment, Ricker_Amplitude,Convolve_Amplitude);
//      num_pts_conv = num_pts_log_reg + num_samples_Ricker;
//
//    if(verbose == TRUE ) {
//      printf(" convolving Ricker Source with reflection coefficient\n");
//      for (i=0; i< num_pts_conv;  i++){
//	Convolve_time = (t_increment * (float)i  ) + xstart;
//	printf("%f\t%f\n", Convolve_time, Convolve_Amplitude[i]);
//      }
//    }
//
//  }
  
  /*CONVOLVE SOURCE AND DATA -----------------END-----------------*/
  
  /*OUTPUT CONVOLVED SIGNAL TO STDOUT*/

//  for (i=0;  i< num_pts_conv;  i++){
//    tmin = 2. * water_depth /1500.; /*in secs*/
//    Convolve_time = (t_increment * (float)i  ) + tmin;
//    fprintf(stdout,"%lf\t%lf\n", Convolve_time, Convolve_Amplitude[i] );
// }
//  fclose(stdout);

  
} /*end main*/

double ricker(td, freq, rick_long)
  /* subroutine to calculate a ricker wavelet amplitude at a given time value*/
  double 
    td, /*enter in seconds!!!*/
    freq,/* dominant frequency (Hz)*/
    rick_long;   /*length of ricker wavelet*/
  
  {
#define PI        3.1415926
#define PI2       9.8696044
    
    double 
      zero_cross, t2, /* half the signal length*/
      amplitude, /*output value*/
      dominant_freq2; /*dominant frequencey squared, Hz*/
    
    double arg1;
    
    zero_cross = rick_long/2.; /* in seconds*/
    dominant_freq2 = freq * freq; 
    t2 = ( td - zero_cross) *  ( td - zero_cross);
    arg1 = PI2 * dominant_freq2 * t2;
    amplitude = (1. - 2. * arg1) * exp(-arg1);
    return(amplitude);	
  }
  
  
     void regular(xstart,t_increment,num_pts_src,num_pts_reg,winA,wint,winA_reg)
    
     float xstart, t_increment, winA[], wint[], winA_reg[];
     int num_pts_src,*num_pts_reg;

     /* xstart: x min for resampling
	t_increment: resampling interval
	num_pts_src: num_pts in input data set
	num_pts_reg: in output sampled data set
	winA: input data amplitudes
	wint: input data times
	winA_reg: output sampled data amplitudes
	*/
{	
  /*function to regularize data*/
  int i; /*local variable*/
  float xint;		
  xint =xstart;
  /*printf("made it to subroutine");*/
  while(xint < wint[0])  xint = xint +  t_increment;
  for  (i=0; i < num_pts_src; i++) {
    while(wint[i+1] >= xint) {



( run in 0.638 second using v1.01-cache-2.11-cpan-39bf76dae61 )