[cig-commits] r22884 - in seismo/3D/SPECFEM3D/trunk/utils: lib seis_process/asc2sac

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Fri Sep 27 16:38:33 PDT 2013


Author: dkomati1
Date: 2013-09-27 16:38:33 -0700 (Fri, 27 Sep 2013)
New Revision: 22884

Added:
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/Makefile
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.c
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascii2sac.csh
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/formats.h
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sac.h
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacclose.c
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacdatawrite.c
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sachdrwrite.c
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacopen.c
Removed:
   seismo/3D/SPECFEM3D/trunk/utils/lib/asc2sac.c
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.f90
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascfile.f90
   seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/compile
Log:
new version of utils/seis_process/asc2sac that does not require any external library


Deleted: seismo/3D/SPECFEM3D/trunk/utils/lib/asc2sac.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/lib/asc2sac.c	2013-09-27 22:55:28 UTC (rev 22883)
+++ seismo/3D/SPECFEM3D/trunk/utils/lib/asc2sac.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -1,131 +0,0 @@
-/*
- * asc2sac.c by Eh Tan
- *
- * Copyright (C) 2009, California Institute of Technology.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <errno.h>
-#include "sacio.h"
-#include "config.h"
-
-
-void asc2sac(char *ascfn) {
-    sac_int_t npts, max_npts, nerr, nconv, itmp;
-    float ftmp;
-    char *sacfn;
-    float *time, *data, a, b;
-    FILE *f;
-
-    sacfn = (char *)malloc(strlen(ascfn) + strlen(".sac") + 1);
-    if (!sacfn) {
-        fprintf(stderr, "Out of memory\n");
-        exit(1);
-    }
-    strcpy(sacfn, ascfn);
-    strcat(sacfn, ".sac");
-
-    /* reading ascii file */
-    f = fopen(ascfn, "r");
-    if(f == NULL) {
-  fprintf(stderr, "Cannot open file '%s' to read\n", ascfn);
-  exit(1);
-    }
-
-    time = data = 0;
-    max_npts = 0;
-    for (npts = 0; (nconv = fscanf(f, "%f %f\n", &a, &b)) == 2; ++npts) {
-        if (nconv != 2) {
-            fprintf(stderr, "error while reading file '%s'\n", ascfn);
-            exit(1);
-        }
-        if (npts >= max_npts) {
-            max_npts = max_npts ? 2 * max_npts : 1024;
-            time = (float*) realloc(time, max_npts * sizeof(float));
-            data = (float*) realloc(data, max_npts * sizeof(float));
-            if(time == NULL || data == NULL) {
-                fprintf(stderr, "Out of memory\n");
-                exit(1);
-            }
-        }
-        time[npts] = a;
-        data[npts] = b;
-    }
-    if (nconv != EOF || ferror(f)) {
-        fprintf(stderr, "error while reading file '%s' (on or near line %ld)\n", ascfn, (long)npts);
-  exit(1);
-    }
-    fclose(f);
-    /* finished reading ascii file */
-
-    /* write SAC data usng SAC IO library */
-    nerr = 0;
-    newhdr();
-    setnhv("npts", &npts, &nerr, strlen("npts"));
-    itmp = 1;
-    setlhv("leven", &itmp, &nerr, strlen("leven"));
-    ftmp = time[1] - time[0];
-    setfhv("delta", &ftmp, &nerr, strlen("delta"));
-    setfhv("b", &(time[0]), &nerr, strlen("b"));
-    setfhv("e", &(time[npts-1]), &nerr, strlen("e"));
-    setihv("iftype", "itime", &nerr, strlen("iftype"), strlen("itime"));
-    setihv("idep", "idisp", &nerr, strlen("idep"), strlen("idisp"));
-
-    if(nerr) {
-  fprintf(stderr, "error when setting header for '%s'\n", sacfn);
-        exit(1);
-    }
-
-    wsac0(sacfn, time, data, &nerr, strlen(sacfn));
-
-    if(nerr) {
-        fprintf(stderr, "error when writing '%s'\n", sacfn);
-        exit(1);
-    }
-
-    free(time);
-    free(data);
-    free(sacfn);
-
-    return;
-}
-
-
-int main(int argc, char *argv[]) {
-    int i;
-
-    if (argc < 2) {
-        fprintf(stderr,
-                "usage: %s FILE...\n"
-                "\n"
-                "    Converts ASCII time series files to SAC binary files.\n"
-                "    Input files must have two columns:  t, f(t).\n"
-                "\n",
-                argv[0]);
-        exit(1);
-    }
-
-    for (i = 1; i < argc; ++i) {
-        asc2sac(argv[i]);
-    }
-
-    return 0;
-}

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/Makefile
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/Makefile	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/Makefile	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,13 @@
+
+CC=gcc
+CFLAGS= -DSAC_NULL
+PROG=asc2sac
+SRCS=asc2sac.c  sacclose.c  sacdatawrite.c  sachdrwrite.c  sacopen.c
+OBJS=${SRCS:%.c=%.o}
+
+$(PROG): $(OBJS)
+	$(CC) $(CFLAGS) -o $(PROG) $(OBJS)
+
+clean:
+	rm -f $(PROG) $(OBJS) *~ core
+

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.c	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,68 @@
+
+#include <stdio.h>
+#include "formats.h"
+
+int main(int argc, char*argv[]) {
+  struct sac *sac_hdr;
+  int npts;
+  float time, amp, *data, dt;
+  float bval;
+  FILE *fp;
+  int i;
+  char *filename;
+  char *comp[8];
+
+  if(argc < 4) {
+    fprintf(stderr, "%s ascii-file npts sac-file\n", argv[0]);
+    exit(0);
+  }
+  npts = atoi(argv[2]);
+  filename = argv[3];
+  if((fp = fopen(argv[1], "r")) == NULL) {
+    fprintf(stderr, "Error opening ascii-file: %s\n", argv[1]);
+    exit(-1);
+  }
+  data = (float *) malloc(sizeof(float) * npts);
+  i = 0;
+  while(fscanf(fp, "%f %f", &time, &amp) == 2) {
+    if(i > npts) {
+      fprintf(stderr, "Number of points read in (%d) is greater than specified (%d)\n",
+        i, npts);
+      exit(-1);
+    }
+    if(i == 0) {
+      bval = time;
+    }
+    if(i == 1) {
+       dt = time - bval;
+    }
+    data[i] = amp;
+    i++;
+  }
+  if(i != npts) {
+    fprintf(stderr, "Number of points read in (%d) is less than specified (%d)\n",
+      i, npts);
+    exit(-1);
+  }
+  fclose(fp);
+  /* Must set parameters */
+  sac_hdr = &sac_null;      /* Sets header to a null header */
+  sac_hdr->npts = npts; /* number of points */
+  sac_hdr->delta = dt; /* Time between points */
+  sac_hdr->leven = 1;     /* Evenly spaced data */
+  sac_hdr->iftype = 1;    /* Type of File */
+  sac_hdr->internal4 = 6; /* Internal Variable */
+  sac_hdr->b = bval;         /* Starting time */
+  /* Open and write a newly created  Sac file */
+  /*      fprintf(stderr, "%s\n", filename); */
+  if((fp = sacopen(filename, "w")) == NULL) {
+    fprintf(stderr, "Error opening sac-file: %s\n", filename);
+    exit(-1);
+  }
+  sachdrwrite(fp, sac_hdr);
+  sacdatawrite(fp, data, npts);
+  sacclose(fp);
+  return(0);
+}
+
+

Deleted: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.f90	2013-09-27 22:55:28 UTC (rev 22883)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/asc2sac.f90	2013-09-27 23:38:33 UTC (rev 22884)
@@ -1,23 +0,0 @@
-program asc2sac
-
-  implicit none
-
-  integer, parameter :: NDATAMAX = 40000
-  integer :: npts, nl, nerr
-  character(len=250) :: cnl, ascfile, sacfile
-  real b, dt, data(NDATAMAX)
-
-  call getarg(1,ascfile)
-  call getarg(2,cnl)
-  call getarg(3,sacfile)
-  if (trim(ascfile) == '' .or. trim(cnl) == '' .or. trim(sacfile) == '') &
-    stop 'Usage: asc2sac ascfile npts sacfile'
-  read(cnl,*) nl
-
-  call rasc(ascfile,data,npts,b,dt,NDATAMAX,nerr)
-  if (npts > NDATAMAX .or. npts /= nl) stop 'Check npts'
-
-  call wsac1(sacfile,data,npts,b,dt,nerr)
-
-
-end program asc2sac

Deleted: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascfile.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascfile.f90	2013-09-27 22:55:28 UTC (rev 22883)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascfile.f90	2013-09-27 23:38:33 UTC (rev 22884)
@@ -1,66 +0,0 @@
-!------------------------------------------------
-
-subroutine rasc(ascfile,dat,npts,b,dt,nmax,nerr)
-
-  implicit none
-  character(len=*) ascfile
-  real dat(1), b, dt
-  integer npts, nmax, nerr
-
-  real tv
-  integer nline, ios, IOUNIT
-
-  IOUNIT=99
-
-  open(IOUNIT,file=trim(ascfile),status='old',iostat=ios)
-  if (ios /= 0) then
-     print 'Error opening '//trim(ascfile); nerr=1
-     return
-  endif
-
-  nline=0
-  do while(ios == 0)
-     read(IOUNIT,*,iostat=ios) tv,dat(nline+1)
-     if (ios == 0) nline=nline+1
-     if (nline==1) then
-        b=tv
-     else if (nline == 2) then
-        dt=tv-b
-     endif
-  enddo
-
-  if (nline > nmax) then
-     print *, 'npts exceeding nmax '; nerr=2
-     return
-  endif
-
-  npts=nline
-  nerr=0
-  close(IOUNIT)
-
-end subroutine rasc
-
-subroutine wasc(ascfile,dat,npts,b,dt,nerr)
-
-  implicit none
-
-  character(len=*) :: ascfile
-  real :: dat(1), b, dt
-  integer :: npts, nerr, i, ios, IOUNIT
-
-  IOUNIT=99
-  open(IOUNIT,file=trim(ascfile),status='unknown',iostat=ios)
-  if (ios /= 0) then
-     print 'Error opening '//trim(ascfile)//' for writing'
-     nerr = 1; return
-  endif
-  do i = 1, npts
-     write(IOUNIT,'(2g15.7)') b+(i-1)*dt, dat(i)
-  enddo
-  close(IOUNIT)
-
-  nerr=0
-
-end subroutine wasc
-
-

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascii2sac.csh
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascii2sac.csh	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascii2sac.csh	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,7 @@
+#!/bin/csh
+
+foreach file ($*)
+	echo $file
+  set nlines = `wc -l $file | awk '{print $1}'`
+  ./asc2sac $file $nlines $file.sac
+end


Property changes on: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/ascii2sac.csh
___________________________________________________________________
Added: svn:executable
   + *

Deleted: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/compile
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/compile	2013-09-27 22:55:28 UTC (rev 22883)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/compile	2013-09-27 23:38:33 UTC (rev 22884)
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-SACLIB='/opt/sac-101.0/lib/libsacio.a'
-
-gfortran -o asc2sac asc2sac.f90 ascfile.f90 $SACLIB

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/formats.h
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/formats.h	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/formats.h	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,18 @@
+
+#ifndef __FORMATS_H__
+#define __FORMATS_H__
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+
+#include "sac.h"
+//#include "helm.h"
+//#include "models.h"
+//#include "gram.h"
+
+void print_error();
+
+#endif /*__FORMATS_H__*/

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sac.h
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sac.h	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sac.h	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,409 @@
+
+#ifndef __SAC_H__
+#define __SAC_H__
+/*===========================================================================*/
+/* SEED reader     |               sac.h                   |     header file */
+/*===========================================================================*/
+/*
+  Name:   sac.h
+  Purpose:  structure for header of a SAC (Seismic Analysis Code) data file
+  Usage:    #include "sac.h"
+  Input:    not applicable
+  Output:   not applicable
+  Warnings: not applicable
+  Errors:   not applicable
+  Called by:  output_data
+  Calls to: none
+  Algorithm:  not applicable
+  Notes:    Key to comment flags describing each field:
+        Column 1:
+          R = required by SAC
+            = (blank) optional
+        Column 2:
+          A = settable from a priori knowledge
+          D = available in data
+          F = available in or derivable from SEED fixed data header
+          T = available in SEED header tables
+            = (blank) not directly available from SEED data, header
+              tables, or elsewhere
+  Problems: none known
+  References: O'Neill, D. (1987).  IRIS Interim Data Distribution Format
+    (SAC ASCII), Version 1.0 (12 November 1987).  Incorporated
+    Research Institutions for Seismology, 1616 North Fort Myer
+    Drive, Suite 1440, Arlington, Virginia 22209.  11 pp.
+    Tull, J. (1987).  SAC User's Manual, Version 10.2, October 7,
+      1987.  Lawrence Livermore National Laboratory, L-205,
+      Livermore, California 94550.  ??? pp.
+  Language: C, hopefully ANSI standard
+  Author: Dennis O'Neill
+  Revisions:07/15/88  Dennis O'Neill  Initial preliminary release 0.9
+    11/21/88  Dennis O'Neill  Production release 1.0
+    09/19/89  Dennis O'Neill  corrected length of char strings
+*/
+/** Information for a sac file except data.
+    The order of the variables are in the same order as
+    would be for a sac file.
+    R = required by SAC<p>
+    A = settable from a priori knowledge<p>
+    D = available in data<p>
+    F = available in or derivable from SEED fixed data header<p>
+    T = available in SEED header tables<p>
+      = (blank) not directly available from SEED data, header tables, or elsewhere<p>
+
+*/
+
+struct sac
+{
+  /** RF time increment, sec    .
+      @param Required
+      @param SEED Available in or derivable from SEED fixed data header
+  */
+  float delta;
+  /**    minimum amplitude      .    */  float  depmin;
+  /**    maximum amplitude      .    */  float  depmax;
+  /**    amplitude scale factor .    */  float  scale;
+  /**    observed time inc      .    */  float  odelta;
+  /** RD initial value, ampl.   .
+      @param Required
+      @param Data available in data
+  */
+  float b;
+  /** RD final value, amplitude .
+      @param Required
+      @param Data available in data
+  */
+  float e;
+  /**    event start, sec > 0   .    */  float  o;
+  /**    1st arrival time       .    */  float  a;
+  /**    internal use           .    */  float  internal1;
+  /**    user-defined time pick .    */  float  t0;
+  /**    user-defined time pick .    */  float  t1;
+  /**    user-defined time pick .    */  float  t2;
+  /**    user-defined time pick .    */  float  t3;
+  /**    user-defined time pick .    */  float  t4;
+  /**    user-defined time pick .    */  float  t5;
+  /**    user-defined time pick .    */  float  t6;
+  /**    user-defined time pick .    */  float  t7;
+  /**    user-defined time pick .    */  float  t8;
+  /**    user-defined time pick .    */  float  t9;
+  /**    event end, sec > 0     .    */  float  f;
+  /**    instrument respnse parm.    */  float  resp0;
+  /**    instrument respnse parm.    */  float  resp1;
+  /**    instrument respnse parm.    */  float  resp2;
+  /**    instrument respnse parm.    */  float  resp3;
+  /**    instrument respnse parm.    */  float  resp4;
+  /**    instrument respnse parm.    */  float  resp5;
+  /**    instrument respnse parm.    */  float  resp6;
+  /**    instrument respnse parm.    */  float  resp7;
+  /**    instrument respnse parm.    */  float  resp8;
+  /**    instrument respnse parm.    */  float  resp9;
+  /**  T station latititude     .
+       @param Table available in SEED header tables
+   */
+  float stla;
+  /**  T station longitude      .
+       @param Table available in SEED header tables
+  */
+  float stlo;
+  /**  T station elevation, m   .
+       @param Table available in SEED header tables
+  */
+  float stel;
+  /**  T station depth, m       .
+       @param Table available in SEED header tables
+  */
+  float stdp;
+  /**    event latitude         .    */  float  evla;
+  /**    event longitude        .    */  float  evlo;
+  /**    event elevation        .    */  float  evel;
+  /**    event depth            .    */  float  evdp;
+  /**    reserved for future use.    */  float  unused1;
+  /**    available to user      .    */  float  user0;
+  /**    available to user      .    */  float  user1;
+  /**    available to user      .    */  float  user2;
+  /**    available to user      .    */  float  user3;
+  /**    available to user      .    */  float  user4;
+  /**    available to user      .    */  float  user5;
+  /**    available to user      .    */  float  user6;
+  /**    available to user      .    */  float  user7;
+  /**    available to user      .    */  float  user8;
+  /**    available to user      .    */  float  user9;
+  /**    stn-event distance, km .    */  float  dist;
+  /**    event-stn azimuth      .    */  float  az;
+  /**    stn-event azimuth      .    */  float  baz;
+  /**    stn-event dist, degrees.    */  float  gcarc;
+  /**    internal use           .    */  float  internal2;
+  /**    internal use           .    */  float  internal3;
+  /**    mean value, amplitude  .    */  float  depmen;
+  /**  T component azimuth      .
+       @param Table available in SEED header tables
+  */
+  float cmpaz;
+  /**  T component inclination  .
+       @param Table available in SEED header tables
+  */
+  float cmpinc;
+  /**    reserved for future use.    */  float  unused2;
+  /**    reserved for future use.    */  float  unused3;
+  /**    reserved for future use.    */  float  unused4;
+  /**    reserved for future use.    */  float  unused5;
+  /**    reserved for future use.    */  float  unused6;
+  /**    reserved for future use.    */  float  unused7;
+  /**    reserved for future use.    */  float  unused8;
+  /**    reserved for future use.    */  float  unused9;
+  /**    reserved for future use.    */  float  unused10;
+  /**    reserved for future use.    */  float  unused11;
+  /**    reserved for future use.    */  float  unused12;
+  /**  F zero time of file, yr  .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzyear;
+  /**  F zero time of file, day .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzjday;
+  /**  F zero time of file, hr  .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzhour;
+  /**  F zero time of file, min .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzmin;
+  /**  F zero time of file, sec .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzsec;
+  /**  F zero time of file, msec.
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  nzmsec;
+  /**    internal use           .    */  long internal4;
+  /**    internal use           .    */  long internal5;
+  /**    internal use           .    */  long internal6;
+  /** RF number of samples      .
+      @param Required
+      @param SEED Available in or derivable from SEED fixed data header
+  */
+  long  npts;
+  /**    internal use           .    */  long internal7;
+  /**    internal use           .    */  long internal8;
+  /**    reserved for future use.    */  long unused13;
+  /**    reserved for future use.    */  long unused14;
+  /**    reserved for future use.    */  long unused15;
+  /** RA type of file           .
+      @param Required
+      @param Prior settable from a priori knowledge
+   */
+  long  iftype;
+  /**    type of amplitude      .    */  long idep;
+  /**    zero time equivalence  .    */  long iztype;
+  /**    reserved for future use.    */  long unused16;
+  /**    recording instrument   .    */  long iinst;
+  /**    stn geographic region  .    */  long istreg;
+  /**    event geographic region.    */  long ievreg;
+  /**    event type             .    */  long ievtyp;
+  /**    quality of data        .    */  long iqual;
+  /**    synthetic data flag    .    */  long isynth;
+  /**    reserved for future use.    */  long unused17;
+  /**    reserved for future use.    */  long unused18;
+  /**    reserved for future use.    */  long unused19;
+  /**    reserved for future use.    */  long unused20;
+  /**    reserved for future use.    */  long unused21;
+  /**    reserved for future use.    */  long unused22;
+  /**    reserved for future use.    */  long unused23;
+  /**    reserved for future use.    */  long unused24;
+  /**    reserved for future use.    */  long unused25;
+  /**    reserved for future use.    */  long unused26;
+  /** RA data-evenly-spaced flag.
+      @param Required
+      @param Prior settable from a priori knowledge
+  */
+  long  leven;
+  /**    station polarity flag  .    */  long lpspol;
+  /**    overwrite permission   .    */  long lovrok;
+  /**    calc distance, azimuth .    */  long lcalda;
+  /**    reserved for future use.    */  long unused27;
+  /**  F station name           .
+       @param SEED Available in or derivable from SEED fixed data header
+   */
+  char  kstnm[8];
+  /**    event name             .    */  char kevnm[16];
+  /**    man-made event name    .    */  char khole[8];
+  /**    event origin time id   .    */  char ko[8];
+  /**    1st arrival time ident .    */  char ka[8];
+  /**    time pick 0 ident      .    */  char kt0[8];
+  /**    time pick 1 ident      .    */  char kt1[8];
+  /**    time pick 2 ident      .    */  char kt2[8];
+  /**    time pick 3 ident      .    */  char kt3[8];
+  /**    time pick 4 ident      .    */  char kt4[8];
+  /**    time pick 5 ident      .    */  char kt5[8];
+  /**    time pick 6 ident      .    */  char kt6[8];
+  /**    time pick 7 ident      .    */  char kt7[8];
+  /**    time pick 8 ident      .    */  char kt8[8];
+  /**    time pick 9 ident      .    */  char kt9[8];
+  /**    end of event ident     .    */  char kf[8];
+  /**    available to user      .    */  char kuser0[8];
+  /**    available to user      .    */  char kuser1[8];
+  /**    available to user      .    */  char kuser2[8];
+  /**  F component name         .
+       @param SEED Available in or derivable from SEED fixed data header
+  */
+  char  kcmpnm[8];
+  /**    network name           .    */  char knetwk[8];
+  /**    date data read         .    */  char kdatrd[8];
+  /**    instrument name        .    */  char kinst[8];
+};
+
+#ifdef SAC_NULL
+/** a SAC structure containing all null values.
+    @see sac
+*/
+static struct sac sac_null = {
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345., -12345., -12345., -12345., -12345.,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  -12345, -12345, -12345, -12345, -12345,
+  { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }, { '-','1','2','3','4','5',' ',' ' },
+  { '-','1','2','3','4','5',' ',' ' }
+};
+#endif
+
+#define FLOAT_NULL   -12345.0
+#define LONG_NULL    -12345
+#define CHAR_NULL_8  "-12345  "
+#define CHAR_NULL_16 "-12345          "
+
+/* definitions of constants for SAC enumerated data values */
+/* undocumented == couldn't find a definition for it (denio, 07/15/88) */
+#define IREAL   0 /* undocumented              */
+#define ITIME   1 /* file: time series data    */
+#define IRLIM   2 /* file: real&imag spectrum  */
+#define IAMPH   3 /* file: ampl&phas spectrum  */
+#define IXY     4 /* file: gen'l x vs y data   */
+#define IUNKN   5 /* x data: unknown type      */
+/* zero time: unknown        */
+/* event type: unknown       */
+#define IDISP   6 /* x data: displacement (nm) */
+#define IVEL    7 /* x data: velocity (nm/sec) */
+#define IACC    8 /* x data: accel (cm/sec/sec)*/
+#define IB      9 /* zero time: start of file  */
+#define IDAY   10 /* zero time: 0000 of GMT day*/
+#define IO     11 /* zero time: event origin   */
+#define IA     12 /* zero time: 1st arrival    */
+#define IT0    13 /* zero time: user timepick 0*/
+#define IT1    14 /* zero time: user timepick 1*/
+#define IT2    15 /* zero time: user timepick 2*/
+#define IT3    16 /* zero time: user timepick 3*/
+#define IT4    17 /* zero time: user timepick 4*/
+#define IT5    18 /* zero time: user timepick 5*/
+#define IT6    19 /* zero time: user timepick 6*/
+#define IT7    20 /* zero time: user timepick 7*/
+#define IT8    21 /* zero time: user timepick 8*/
+#define IT9    22 /* zero time: user timepick 9*/
+#define IRADNV 23 /* undocumented              */
+#define ITANNV 24 /* undocumented              */
+#define IRADEV 25 /* undocumented              */
+#define ITANEV 26 /* undocumented              */
+#define INORTH 27 /* undocumented              */
+#define IEAST  28 /* undocumented              */
+#define IHORZA 29 /* undocumented              */
+#define IDOWN  30 /* undocumented              */
+#define IUP    31 /* undocumented              */
+#define ILLLBB 32 /* undocumented              */
+#define IWWSN1 33 /* undocumented              */
+#define IWWSN2 34 /* undocumented              */
+#define IHGLP  35 /* undocumented              */
+#define ISRO   36 /* undocumented              */
+#define INUCL  37 /* event type: nuclear shot  */
+#define IPREN  38 /* event type: nuke pre-shot */
+#define IPOSTN 39 /* event type: nuke post-shot*/
+#define IQUAKE 40 /* event type: earthquake    */
+#define IPREQ  41 /* event type: foreshock     */
+#define IPOSTQ 42 /* event type: aftershock    */
+#define ICHEM  43 /* event type: chemical expl */
+#define IOTHER 44 /* event type: other source  */ /* data quality: other problm*/
+#define IGOOD  45 /* data quality: good        */
+#define IGLCH  46 /* data quality: has glitches*/
+#define IDROP  47 /* data quality: has dropouts*/
+#define ILOWSN 48 /* data quality: low s/n     */
+#define IRLDTA 49 /* data is real data         */
+#define IVOLTS 50 /* file: velocity (volts)    */
+#define INIV51 51 /* undocumented              */
+#define INIV52 52 /* undocumented              */
+#define INIV53 53 /* undocumented              */
+#define INIV54 54 /* undocumented              */
+#define INIV55 55 /* undocumented              */
+#define INIV56 56 /* undocumented              */
+#define INIV57 57 /* undocumented              */
+#define INIV58 58 /* undocumented              */
+#define INIV59 59 /* undocumented              */
+#define INIV60 60 /* undocumented              */
+
+/* True/false definitions */
+#ifndef TRUE
+#define FALSE 0
+#define TRUE !FALSE
+#endif
+
+/* Format strings for writing headers for SAC ASCII files */
+#define FCS "%15.7f%15.7f%15.7f%15.7f%15.7f\n"  /* for floats */
+#define ICS "%10d%10d%10d%10d%10d\n"    /* for integers */
+#define CCS1 "%-8.8s%-8.8s%-8.8s\n"   /* for strings */
+#define CCS2 "%-8.8s%-16.16s\n"     /* for strings */
+
+/* Construct for writing data to SAC ASCII files */
+/*
+ * for (i = 0; i < data_hdr->nsamples; i++)
+ * {
+ * fprintf (outfile, "%15.7f", *seismic_data_ptr++);
+ * if ( ( ((i+1)%5) == 0) && (i > 0) ) fprintf (outfile, "\n");
+ * }
+ *
+ */
+
+#include <stdio.h>
+
+FILE *sacopen(char *infile, char * mode);
+int  sacclose(FILE *fp);
+struct sac * sachdrread(FILE *fp);
+float *sacdatamalloc(int npts);
+void sacfree(float *data_ptr);
+int sacdataread(FILE *fp, float * data_ptr, int npts, char *infile);
+int sacdatawrite(FILE *fpout, float *data_ptr, int npts);
+int sachdrwrite(FILE *fpout, struct sac *sac_hdr);
+struct sac * sachdrmalloc();
+
+#endif /* __SAC_H__ */
+
+
+

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacclose.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacclose.c	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacclose.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,11 @@
+
+#include "formats.h"
+
+int
+sacclose(FILE *fp) {
+  if(fclose(fp) != 0) {
+  fprintf(stderr,"Sacclose: Could not open file\n");
+    return(-1);
+  }
+  return(0);
+}

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacdatawrite.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacdatawrite.c	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacdatawrite.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,11 @@
+
+#include "formats.h"
+
+int
+sacdatawrite(FILE *fpout, float *data_ptr, int npts) {
+  if(fwrite(data_ptr, npts*sizeof(float), 1, fpout) != 1) {
+    fprintf(stderr, "SacDataWrite: could not write sac data\n");
+    return(-1);
+  }
+  return(1);
+}

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sachdrwrite.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sachdrwrite.c	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sachdrwrite.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,12 @@
+
+
+#include "formats.h"
+
+int
+sachdrwrite(FILE *fpout, struct sac *sac_hdr) {
+  if(fwrite(sac_hdr, sizeof(struct sac), 1, fpout) != 1) {
+    fprintf(stderr, "SacHeaderWrite: could not write sac header\n");
+    return(-1);
+  }
+  return(1);
+}

Added: seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacopen.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacopen.c	                        (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/utils/seis_process/asc2sac/sacopen.c	2013-09-27 23:38:33 UTC (rev 22884)
@@ -0,0 +1,12 @@
+
+#include "formats.h"
+
+FILE *
+sacopen(char *infile, char * mode) {
+  FILE *fp;
+  if((fp = fopen(infile, mode)) == NULL) {
+    fprintf(stderr, "SacOpen: cant open file: %s\n", infile);
+    return(NULL);
+  }
+  return(fp);
+}



More information about the CIG-COMMITS mailing list