[cig-commits] r22886 - in seismo/3D/SPECFEM3D_GLOBE/trunk/utils: lib seis_process seis_process/asc2sac seis_process/sac2asc
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Fri Sep 27 16:42:01 PDT 2013
Author: dkomati1
Date: 2013-09-27 16:42:01 -0700 (Fri, 27 Sep 2013)
New Revision: 22886
Added:
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/Makefile
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.c
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/formats.h
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sac.h
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacclose.c
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacdatawrite.c
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sachdrwrite.c
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacopen.c
Removed:
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/lib/asc2sac.c
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/ascfile.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/compile
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/ascii2sac.csh
seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/sac2asc/Makefile
Log:
new version of utils/seis_process/asc2sac that does not require any external library
Deleted: seismo/3D/SPECFEM3D_GLOBE/trunk/utils/lib/asc2sac.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/lib/asc2sac.c 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/lib/asc2sac.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/Makefile
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/Makefile (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/Makefile 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.c (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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, &) == 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_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.f90 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/asc2sac.f90 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/ascfile.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/ascfile.f90 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/ascfile.f90 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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
-
-
Deleted: seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/compile
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/compile 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/compile 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/formats.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/formats.h (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/formats.h 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/sac.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sac.h (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sac.h 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/sacclose.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacclose.c (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacclose.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/sacdatawrite.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacdatawrite.c (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacdatawrite.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/sachdrwrite.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sachdrwrite.c (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sachdrwrite.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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_GLOBE/trunk/utils/seis_process/asc2sac/sacopen.c
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacopen.c (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/asc2sac/sacopen.c 2013-09-27 23:42:01 UTC (rev 22886)
@@ -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);
+}
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/ascii2sac.csh
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/ascii2sac.csh 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/ascii2sac.csh 2013-09-27 23:42:01 UTC (rev 22886)
@@ -1,27 +1,7 @@
-#!/bin/csh -f
-#
-# Vala Hjorleifsdottir and Qinya Liu, Caltech, Jan 2007
-#
-# uses `asc2sac` binary which can be compiled from UTILS/lib/asc2sac.c
-# (requires SAC libraries for compilation)
+#!/bin/csh
-#############################################################
-## modify to match your location
-
-asc2sac_bin=/opt/seismo-util/bin/asc2sac
-
-#############################################################
-
foreach file ($*)
echo $file
-
- # call depending on which version you use:
- #
- # seismo-util version by Brian
- #set nlines = `wc -l $file | awk '{print $1}'`
- #$asc2sac_bin $file $nlines $file.sac
-
- # UTILS/lib version by Eh
- $asc2sac_bin $file
-
+ set nlines = `wc -l $file | awk '{print $1}'`
+ ./asc2sac/asc2sac $file $nlines $file.sac
end
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/sac2asc/Makefile
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/sac2asc/Makefile 2013-09-27 23:39:33 UTC (rev 22885)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/utils/seis_process/sac2asc/Makefile 2013-09-27 23:42:01 UTC (rev 22886)
@@ -4,6 +4,7 @@
INCLUDE_SACPATH=-I.
+CC = gcc
CFLAGS = -g -Wall $(INCLUDE_SACPATH)
PROG=sac2asc
More information about the CIG-COMMITS
mailing list