...
 
Commits (21)
......@@ -350,6 +350,23 @@ Default values are:
If SEISMO$>$0 seismograms recorded at the receiver positions are written to the corresponding output files. The sampling rate of the seismograms is NDT*DT seconds. In case of a small time step interval and a high number of time steps, it might be useful to choose a high NDT in order to avoid a unnecessary detailed sampling of the seismograms and consequently large files of seismogram data. Possible output formats of the seismograms are SU, ASCII and BINARY. It is recommended to use SU format for saving the seismograms. The main advantage of this format is that the time step interval (NDT*DT) and the acquisition geometry (shot and receiver locations) are stored in the corresponding SU header words. Also additional header words like offset are set by IFOS2D. This format thus facilitates a further visualization and processing of the synthetic seismograms. Note, however, that SU cannot handle sampling rates smaller than 1.0e-6 seconds and the number of samples is limited to about 32.000. In such cases, you should increase the sampling rate by increasing NDT. If this is impossible (for example because the Nyquist criterion is violated) you must choose a different output format (ASCII or binary). File endings will be added to SEIS\_FILE automatically.
\section{Wavefield separation}
\label{wavefield_sep}
{\color{blue}{\begin{verbatim}
"Wavefield separation" : "comment",
"WAVESEP" : "1",
"VEL" : "1500",
"DENS" : "1000",
"ANGTAPI" : "0",
"ANGTAPO" : "70",
\end{verbatim}}}
{\color{red}{\begin{verbatim}
Default values are:
WAVESEP=0
\end{verbatim}}}
If WAVESEP$=$1 a wavefield separation is performed after every forward modeling. The recorded wavefield is separated into an upgoing and downgoing wavefield by using the recorded p-data and vz-data (\cite{amundsen:93}). Therefore, SEISMO$=$4 or SEISMO$=$5 are mandatory. For the following inversion only the upgpoing wavefield is used. For the calculation of the filter the velocity (VEL in m/s) and the density (DENS in kg/m$^3$) are needed, as well as the angles of the taper of the filter (ANGTAPI, ANGTAPO in degree with $0^\circ$ $<=$ ANGTAPI, ANGTAPO $<=$ $90^\circ$ and ANGTAPI $<=$ ANGTAPO). ANGTAPO describes the maximum used dipping angle. ANGTAPI defines the start of the taper function of the filter.
\section{Q-approximation}
\label{q_approx}
......
......@@ -3079,3 +3079,13 @@ author = {Choi, Y. and Alkhalifah, T.},
pages = {748--758},
year ={2012}
}
@article{amundsen:93,
title={Wavenumber-based filtering of marine point-source data},
author={Amundsen, Lasse},
journal=Geo,
volume={58},
number={9},
pages={1335--1348},
year={1993},
publisher={Society of Exploration Geophysicists}
}
......@@ -58,6 +58,13 @@
"XREC2, YREC2" : "93.0 , 0.2",
"NGEOPH" : "80",
"Wavefield Separation" : "comment",
"WAVESEP" : "0",
"VEL" : "1500.0",
"DENS" : "1000.0",
"ANGTAPI" : "0.0",
"ANGTAPO" : "70.0",
"Seismograms" : "comment",
"NDT" : "1",
"SEIS_FORMAT" : "1",
......
......@@ -58,6 +58,14 @@
"XREC2, YREC2" : "93.0 , 0.2",
"NGEOPH" : "80",
"Wavefield separation" : "comment",
"WAVESEP" : "0",
"VEL" : "1500",
"DENS" : "1000",
"ANGTAPI" : "0",
"ANGTAPO" : "70",
"Seismograms" : "comment",
"NDT" : "1",
"SEIS_FORMAT" : "1",
......
......@@ -156,6 +156,8 @@ int main(int argc, char **argv){
float *F_LOW_PASS_EXT=NULL;
int nfrq=0;
int FREQ_NR=1;
char pf[STRING_SIZE];
float JOINT_EQUAL_PSV=0.0, JOINT_EQUAL_SH=0.0;
float JOINT_EQUAL_PSV_all=0.0, JOINT_EQUAL_SH_all=0.0;
......@@ -814,6 +816,18 @@ int main(int argc, char **argv){
MPI_Barrier(MPI_COMM_WORLD);
/* MPI split for processors used for pup parallelisation */
int myid_pup, pupid=0, no_myid;
MPI_Comm MPI_COMM_PUP;
no_myid=9; /* must be power of 2 +1 */
if (MYID<=no_myid-1) pupid = 1;
else pupid = 0;
MPI_Comm_split(MPI_COMM_WORLD, pupid, MYID, &MPI_COMM_PUP);
MPI_Comm_rank(MPI_COMM_PUP, &myid_pup);
/* end of MPI split for processors with ntr>0 */
SHOTINC=1;
RECINC=1;
......@@ -1376,7 +1390,29 @@ int main(int argc, char **argv){
catseis(sectionvz, fulldata_vz, recswitch, ntr_glob, MPI_COMM_WORLD);
}
catseis(sectionp, fulldata_p, recswitch, ntr_glob, MPI_COMM_WORLD);
// if (MYID==0) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
// if (VERBOSE==1 && MYID==0) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
/* wavefield separation for forward modelling of STF*/
if (WAVESEP==1) {
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (pupid) pup(fulldata_p, fulldata_vy, ntr_glob,recpos,ishot,ns,iter,MPI_COMM_PUP,myid_pup,no_myid);
if ((VERBOSE==1)&&(MYID == 0)) fprintf(FP,"\n wavefield separation finished"); /* save pup*/
if (VERBOSE==1 && MYID==0) {
fprintf(FP,"Write PUP data to file...\n ");
sprintf(pf,"%s_pup.su.stf.shot%i",SEIS_FILE,ishot);
outseis_glob(FP,fopen(pf,"w"), 0, fulldata_p,recpos,recpos_loc,ntr_glob,srcpos,1,ns,SEIS_FORMAT,ishot,0);
}
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast( &fulldata_p[1][1], ntr_glob*ns, MPI_FLOAT, 0, MPI_COMM_WORLD);
h=1;
for(i=1;i<=ntr;i++){
for(j=1;j<=ns;j++){
sectionp[h][j]=fulldata_p[recpos_loc[3][i]][j];
}
h++;
}
}
if (VERBOSE==0 && MYID==0) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
break;
} /* end of switch (SEISMO) */
......@@ -1907,7 +1943,36 @@ int main(int argc, char **argv){
catseis(sectionvz, fulldata_vz, recswitch, ntr_glob, MPI_COMM_WORLD);
}
catseis(sectionp, fulldata_p, recswitch, ntr_glob, MPI_COMM_WORLD);
if (MYID==0) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
if (MYID==0 && VERBOSE==1) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
/* wavefield separation*/
if (WAVESEP==1) {
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (pupid) pup(fulldata_p, fulldata_vy, ntr_glob,recpos,ishot,ns,iter,MPI_COMM_PUP,myid_pup,no_myid);
if ((VERBOSE==1)&&(MYID == 0)) fprintf(FP,"\n wavefield separation finished"); /* save pup*/
if (VERBOSE==1 && MYID==0) {
fprintf(FP,"Write PUP data to file...\n ");
sprintf(pf,"%s_pup.su.shot%i",SEIS_FILE,ishot);
outseis_glob(FP,fopen(pf,"w"), 0, fulldata_p,recpos,recpos_loc,ntr_glob,srcpos,1,ns,SEIS_FORMAT,ishot,0);
}
if ((VERBOSE==1) && (MYID == 0)) fprintf(FP,"wavefield separation finished.");
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast( &fulldata_p[1][1], ntr_glob*ns, MPI_FLOAT, 0, MPI_COMM_WORLD);
if (FORWARD_ONLY==0) {
if(ntr>0) {
h=1;
for(i=1;i<=ntr;i++){
for(j=1;j<=ns;j++){
sectionp[h][j]=fulldata_p[recpos_loc[3][i]][j];
}
h++;
}
}
}
}
if (MYID==0 && VERBOSE==0) saveseis_glob(FP,fulldata_vx,fulldata_vy,fulldata_vz,fulldata_p,fulldata_curl,fulldata_div,recpos,recpos_loc,ntr_glob,srcpos,ishot,ns,iter,1);
break;
} /* end of switch (SEISMO) */
......@@ -3505,6 +3570,29 @@ int main(int argc, char **argv){
}
}
/* wavefield separation */
if (WAVESEP==1) {
catseis(sectionvy, fulldata_vy, recswitch, ntr_glob, MPI_COMM_WORLD);
catseis(sectionp, fulldata_p, recswitch, ntr_glob, MPI_COMM_WORLD);
if (MYID == 0) fprintf(FP,"\n start wavefield separation...");
if (pupid) pup(fulldata_p, fulldata_vy, ntr_glob,recpos,ishot,ns,iter,MPI_COMM_PUP,myid_pup,no_myid);
if ((VERBOSE==1)&&(MYID == 0)) fprintf(FP,"\n wavefield separation finished"); /* save pup*/
if (VERBOSE==1 && MYID==0) {
fprintf(FP,"Write PUP data to file...\n ");
sprintf(pf,"%s_pup.su.step.shot%i",SEIS_FILE,ishot);
outseis_glob(FP,fopen(pf,"w"), 0, fulldata_p,recpos,recpos_loc,ntr_glob,srcpos,1,ns,SEIS_FORMAT,ishot,0);
}
if ((VERBOSE==1) && (MYID == 0)) fprintf(FP,"\n wavefield separation finished");
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast( &fulldata_p[1][1], ntr_glob*ns, MPI_FLOAT, 0, MPI_COMM_WORLD);
h=1;
for(i=1;i<=ntr;i++){
for(j=1;j<=ns;j++){
sectionp[h][j]=fulldata_p[recpos_loc[3][i]][j];
}
h++;
}
}
/*-------------------------------------------------------------------------------*/
/*------------------ end loop over timesteps (forward model) step length -------*/
......
......@@ -181,7 +181,9 @@ IFOS2D= \
readmod_viscac.c \
time_window_glob.c \
create_trkill_table.c \
filter_frequencies.c
filter_frequencies.c \
pup.c \
fft.c
# -------------
# Targes
......
......@@ -119,6 +119,9 @@ void exchange_par(void){
extern int WOLFE_TRY_OLD_STEPLENGTH;
extern float WOLFE_C1_SL;
extern float WOLFE_C2_SL;
extern int WAVESEP;
extern float VEL, DENS, ANGTAPI, ANGTAPO;
/* definition of local variables */
......@@ -220,7 +223,13 @@ void exchange_par(void){
fdum[68]=TRKILL_OFFSET_LOWER;
fdum[69]=TRKILL_OFFSET_UPPER;
fdum[70]=LBFGS_SCALE_GRADIENTS;
fdum[74]=LBFGS_SCALE_GRADIENTS;
fdum[70]=VEL;
fdum[71]=DENS;
fdum[72]=ANGTAPI;
fdum[73]=ANGTAPO;
/***********/
/* Integer */
......@@ -375,9 +384,10 @@ void exchange_par(void){
idum[114]=TRKILL_OFFSET;
idum[115]=TRKILL_STF_OFFSET;
idum[116]=TRKILL_STF_OFFSET_INVERT;
idum[117]=WAVESEP;
idum[117]=JOINT_EQUAL_WEIGHTING;
idum[118]=STF_FULL;
idum[118]=JOINT_EQUAL_WEIGHTING;
idum[119]=STF_FULL;
} /** if (MYID == 0) **/
MPI_Barrier(MPI_COMM_WORLD);
......@@ -503,8 +513,14 @@ void exchange_par(void){
TRKILL_STF_OFFSET_UPPER=fdum[67];
TRKILL_OFFSET_LOWER=fdum[68];
TRKILL_OFFSET_UPPER=fdum[69];
VEL=fdum[70];
DENS=fdum[71];
ANGTAPI=fdum[72];
ANGTAPO=fdum[73];
LBFGS_SCALE_GRADIENTS=fdum[70];
LBFGS_SCALE_GRADIENTS=fdum[74];
/***********/
/* Integer */
......@@ -662,9 +678,10 @@ void exchange_par(void){
TRKILL_OFFSET=idum[114];
TRKILL_STF_OFFSET=idum[115];
TRKILL_STF_OFFSET_INVERT=idum[116];
WAVESEP=idum[117];
JOINT_EQUAL_WEIGHTING=idum[117];
STF_FULL=idum[118];
JOINT_EQUAL_WEIGHTING=idum[118];
STF_FULL=idum[119];
if ( MYID!=0 && L>0 ) {
FL=vector(1,L);
}
......
......@@ -10,6 +10,7 @@
#include <stddef.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <mpi.h>
#define iround(x) ((int)(floor)(x+0.5))
......@@ -24,8 +25,9 @@
#define REQUEST_COUNT 4
#define WORKFLOW_MAX_VAR 13
/****************************/
/* declaration of functions */
/****************************/
void window_cos(float **win, int npad, int nsrc, float it1, float it2, float it3, float it4);
......@@ -131,7 +133,9 @@ void FFT_filt(float ** data, float freqshift, int ntr, int ns,int method);
/*short FFT(short int dir,long m,float *x,float *y);*/
void FFT(int isign, unsigned long nlog, float *re, float *im); /* NR version*/
// void FFT(int isign, unsigned long nlog, float *re, float *im); /* NR version*/
void fft(float *array, float *arrayim, int npad, int dir); /* 1d fft*/
float *filter_frequencies(int *nfrq);
......@@ -209,6 +213,7 @@ void psource(int nt, float ** sxx, float ** syy, float ** sp,
void psource_rsg(int nt, float ** sxx, float ** syy,
float ** srcpos_loc, float ** signals, int nsrc);
void pup(float** data_p, float** data_vy, int ntr_glob, int** recpos, int ishot, int ns, int iter, MPI_Comm newcomm_nodentr, int myid_pup, int no_myid );
float *rd_sour(int *nts,FILE* fp_source);
......
/*-----------------------------------------------------------------------------------------
* Copyright (C) 2016 For the list of authors, see file AUTHORS.
*
* This file is part of IFOS.
*
* IFOS 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, version 2.0 of the License only.
*
* IFOS 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 IFOS. See file COPYING and/or <http://www.gnu.org/licenses/gpl-2.0.html>.
-----------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
* 1D-FFT
* ----------------------------------------------------------------------*/
#include "fd.h"
#include <fftw3.h>
void fft(float *array, float *arrayim, int npad, int dir) {
/* declaration of local variables */
int i,j;
/* declaration of variables for FFTW3*/
fftw_complex *in,*out;
fftw_plan p;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * npad);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * npad);
if (dir==1) {
/* write data into complex vector */
for (j=0;j<npad;j++){
in[j][0]=array[j+1];
in[j][1]=arrayim[j+1];
}
p = fftw_plan_dft_1d(npad, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
/* scramble data (reorder seismogram to put frequency 0 in the middle) */
for (i=0,j=npad/2;j<npad;j++,i++){
array[j+1]=out[i][0];
array[i+1]=out[j][0];
arrayim[j+1]=out[i][1];
arrayim[i+1]=out[j][1];
}
} else {
/* unscramble data */
for (i=0,j=npad/2;j<npad;j++,i++){
in[i][0]=array[j+1];
in[j][0]=array[i+1];
in[i][1]=arrayim[j+1];
in[j][1]=arrayim[i+1];
}
p = fftw_plan_dft_1d(npad, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);
fftw_execute(p);
/* write output into data matrix */
for(j=0;j<npad;j++){
array[j+1] = out[j][0];
arrayim[j+1] = out[j][1];
}
}
fftw_free(in);
fftw_free(out);
fftw_destroy_plan(p);
}
/*-----------------------------------------------------------------------------------------
* Copyright (C) 2016 For the list of authors, see file AUTHORS.
*
* This file is part of IFOS.
*
* IFOS 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, version 2.0 of the License only.
*
* IFOS 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 IFOS. See file COPYING and/or <http://www.gnu.org/licenses/gpl-2.0.html>.
-----------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
* 2D-FFT preparation
* ----------------------------------------------------------------------*/
#include "fd.h"
void fft2(float **array, float **arrayim, int NYG, int NXG, int dir) {
COMPLEX *C;
int j, i, k;
C = cplxvector(1, NYG*NXG);
if (dir==1) {
k = 1;
for (i=1; i<=NXG; i++)
for (j=1; j<=NYG; j++) {
C[k].re = array[j][i];
C[k].im = 0.0;
k++;
}
forward_fft2f(C, NYG, NXG);
k = 1;
for (i=1; i<=NXG; i++)
for (j=1; j<=NYG; j++) {
array[j][i] = C[k].re;
arrayim[j][i] = C[k].im;
k++;
}
} else {
k = 1;
for (i=1; i<=NXG; i++)
for (j=1; j<=NYG; j++) {
C[k].re = array[j][i];
C[k].im = arrayim[j][i];
k++;
}
inverse_fft2f(C, NYG, NXG);
k = 1;
for (i=1; i<=NXG; i++)
for (j=1; j<=NYG; j++) {
array[j][i] = C[k].re;
arrayim[j][i] = 0.0;
k++;
}
}
free_cplxvector(C, 1, NYG*NXG);
}
This diff is collapsed.
......@@ -148,3 +148,6 @@ int JOINT_EQUAL_WEIGHTING;
float JOINT_INVERSION_PSV_SH_ALPHA_VS;
float JOINT_INVERSION_PSV_SH_ALPHA_RHO;
int SNAPSHOT_START,SNAPSHOT_END,SNAPSHOT_INCR;
int WAVESEP;
float VEL, DENS, ANGTAPI, ANGTAPO;
\ No newline at end of file
......@@ -17,7 +17,7 @@
-----------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
* Write seismograms to disk
* Read seismograms from disk
* ----------------------------------------------------------------------*/
#include "fd.h"
#include "segy.h"
......@@ -27,6 +27,7 @@ void inseis(FILE *fp, int comp, float **section, int ntr, int ns, int sws, int
/* declaration of extern variables */
extern int NDT, MYID;
extern char DATA_DIR[STRING_SIZE];
extern char SEIS_FILE[STRING_SIZE];
extern float TIME, DH, DT, REFREC[4];
char data[STRING_SIZE];
FILE *fpdata;
......@@ -39,7 +40,19 @@ void inseis(FILE *fp, int comp, float **section, int ntr, int ns, int sws, int
sprintf(data,"%s_vy.su.shot%d",DATA_DIR,comp);
}
/* sws 3 -- 6 not used */
if(sws==3){ /* open forward modeled seismic data pup*/
sprintf(data,"%s_pup.su.shot%d",SEIS_FILE,comp);
}
if(sws==4){ /* open forward modeled seismic data pup used for step length calculation */
sprintf(data,"%s_pup.su.step.shot%d",SEIS_FILE,comp);
}
if(sws==5){ /* open seismic data pup */
sprintf(data,"%s_pup.su.shot%d",DATA_DIR,comp);
}
/* SWS==6 not used */
if(sws==7){ /* open convolved seismic data vx */
sprintf(data,"%s_vx.su.conv.shot%d",DATA_DIR,comp);
......@@ -57,7 +70,6 @@ void inseis(FILE *fp, int comp, float **section, int ntr, int ns, int sws, int
sprintf(data,"%s_vz.su.shot%d",DATA_DIR,comp);
}
fpdata = fopen(data,"r");
if (fpdata==NULL) {
if(MYID==0) printf(" Was not able to read %s",data);
......
This diff is collapsed.
......@@ -127,6 +127,9 @@ void read_par_json(FILE *fp, char *fileinp){
extern int WOLFE_TRY_OLD_STEPLENGTH;
extern float WOLFE_C1_SL;
extern float WOLFE_C2_SL;
extern int WAVESEP;
extern float VEL, DENS, ANGTAPI, ANGTAPO;
extern int STF_FULL;
/* definition of local variables */
......@@ -341,6 +344,8 @@ void read_par_json(FILE *fp, char *fileinp){
if (get_int_from_objectlist("IDY",number_readobjects,&IDY,varname_list, value_list)){
IDY=1;
fprintf(fp,"Variable IDY is set to default value %d.\n",IDY);}
/*=================================
section seismogramm parameters
......@@ -397,6 +402,7 @@ void read_par_json(FILE *fp, char *fileinp){
declare_error("Variable REFRECY could not be retrieved from the json input file!");
}
}
/*=================================
section general model and log parameters
......@@ -978,6 +984,45 @@ void read_par_json(FILE *fp, char *fileinp){
}
/*=================================
section wavefield separation
=================================*/
if (get_int_from_objectlist("WAVESEP",number_readobjects,&WAVESEP,varname_list, value_list)){
WAVESEP=0;
fprintf(fp,"Variable WAVESEP is set to default value %i.\n",WAVESEP);}
else {
if (SEISMO < 4 && WAVESEP == 1) {
WAVESEP=0;
fprintf(fp,"Variable SEISMO has to be set to 4 or 5 to use wavefield separation. WAVESEP is set to %i now.\n",WAVESEP);
}
if (ADJOINT_TYPE != 4 && WAVESEP == 1 && FORWARD_ONLY == 0) {
WAVESEP=0;
fprintf(fp,"Variable ADJOINT_TYPE has to be set to 4 to use wavefield separation. WAVESEP is set to %i now.\n",WAVESEP);
}
if (WAVETYPE == 2 && WAVESEP == 1) {
WAVESEP=0;
fprintf(fp,"Variable WAVETYPE has to be set to 1 or 3 to use wavefield separation. WAVESEP is set to %i now.\n",WAVESEP);
}
if (WAVESEP==1) {
if (get_float_from_objectlist("VEL",number_readobjects,&VEL,varname_list, value_list)){
VEL=1500;
fprintf(fp,"Variable VEL is set to default value %f.\n",VEL);}
if (get_float_from_objectlist("DENS",number_readobjects,&DENS,varname_list, value_list)){
DENS=1000;
fprintf(fp,"Variable DENS is set to default value %f.\n",DENS);}
if (get_float_from_objectlist("ANGTAPI",number_readobjects,&ANGTAPI,varname_list, value_list)){
ANGTAPI=0;
fprintf(fp,"Variable ANGTAPI is set to default value %f.\n",ANGTAPI);}
if (get_float_from_objectlist("ANGTAPO",number_readobjects,&ANGTAPO,varname_list, value_list)){
ANGTAPO=70;
fprintf(fp,"Variable ANGTAPO is set to default value %f.\n",ANGTAPO);}
}
}
fprintf(fp,"\nEnd of setting default values\n");
fprintf(fp,"=====================================\n\n");
......
......@@ -27,7 +27,7 @@ void seismo_ssg(int lsamp, int ntr, int **recpos, float **sectionvx,
float **sectionvy,float **sectionvz, float **sectionp, float **sectioncurl, float **sectiondiv,
float **vx, float **vy, float **vz, float **sxx, float **syy, float **sp, float **pi, float **u, float *hc){
extern int NDT, SEISMO, FDORDER, ACOUSTIC,WAVETYPE;
extern int NDT, SEISMO, FDORDER, ACOUSTIC,WAVETYPE,WAVESEP;
extern float DH, DT;
extern FILE *FP;
int i,j, itr, ins, nxrec, nyrec, m, fdoh;
......
......@@ -89,9 +89,6 @@ float maximum_m(float **mat, int nx, int ny)
return maxm;
}
float *vector(int ni, int nj){
float *a;
int k;
......@@ -102,7 +99,6 @@ float *vector(int ni, int nj){
return a-ni+SHIFT_IND;
}
int *ivector(int ni, int nj){
int *a;
......