inseis_source_wavelet.c 2.55 KB
Newer Older
tilman.metz's avatar
tilman.metz committed
1
/*-----------------------------------------------------------------------------------------
2
 * Copyright (C) 2016  For the list of authors, see file AUTHORS.
tilman.metz's avatar
tilman.metz committed
3
 *
Florian Wittkamp's avatar
Florian Wittkamp committed
4
 * This file is part of IFOS.
tilman.metz's avatar
tilman.metz committed
5
 * 
Florian Wittkamp's avatar
Florian Wittkamp committed
6
 * IFOS is free software: you can redistribute it and/or modify
tilman.metz's avatar
tilman.metz committed
7 8 9
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 2.0 of the License only.
 * 
Florian Wittkamp's avatar
Florian Wittkamp committed
10
 * IFOS is distributed in the hope that it will be useful,
tilman.metz's avatar
tilman.metz committed
11 12 13 14 15
 * 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
Florian Wittkamp's avatar
Florian Wittkamp committed
16
 * along with IFOS. See file COPYING and/or <http://www.gnu.org/licenses/gpl-2.0.html>.
tilman.metz's avatar
tilman.metz committed
17 18 19 20 21 22 23 24
-----------------------------------------------------------------------------------------*/

/*------------------------------------------------------------------------
 *   Read source wavelet in su format                                  
 *  ----------------------------------------------------------------------*/
#include "fd.h"
#include "segy.h"

25
void  inseis_source_wavelet(float *section, int ns, int ishot, int SH, int STF){
tilman.metz's avatar
tilman.metz committed
26 27 28 29

	/* declaration of extern variables */
	extern int MYID;
	extern char SIGNAL_FILE[STRING_SIZE];
30
    extern char SIGNAL_FILE_SH[STRING_SIZE];
31 32 33
    
    extern int USE_WORKFLOW;
    extern int WORKFLOW_STAGE;
34 35 36 37
	/* declaration of local variables */
	int j;
	float dump;
	segy tr;
tilman.metz's avatar
tilman.metz committed
38
	char data[STRING_SIZE];
39 40
    FILE *fpdata;
    
41 42 43 44 45 46 47
    if (STF==0){ /* reading inverted signals */
        if(SH==0) {
            if(USE_WORKFLOW){
                sprintf(data,"%s.stage%d.shot%d.su",SIGNAL_FILE,WORKFLOW_STAGE,ishot);
            } else {
                sprintf(data,"%s.shot%d.su",SIGNAL_FILE,ishot);
            }
48
        } else {
49 50 51 52 53
            if(USE_WORKFLOW){
                sprintf(data,"%s.stage%d.shot%d.su",SIGNAL_FILE_SH,WORKFLOW_STAGE,ishot);
            } else {
                sprintf(data,"%s.shot%d.su",SIGNAL_FILE_SH,ishot);
            }
54
        }
55 56 57
    } else { /* reading signals for STF inversion */
        if(SH==0) {
            sprintf(data,"%s.shot%d_start.su",SIGNAL_FILE,ishot);
58
        } else {
59
            sprintf(data,"%s.shot%d_start.su",SIGNAL_FILE_SH,ishot);
60
        }
61 62
    }
    
tilman.metz's avatar
tilman.metz committed
63
	fpdata = fopen(data,"r");
64
	if (fpdata==NULL) declare_error(" Source wavelet not found ");
tilman.metz's avatar
tilman.metz committed
65 66 67 68 69 70 71 72 73 74 75 76

	/* SEGY (without file-header) */
	fread(&tr,240,1,fpdata);
	fread(&tr.data,4,ns,fpdata);
			
	for(j=0;j<ns;j++){
	    dump=tr.data[j];
	    section[j+1]=dump;
	}
			  
	fclose(fpdata);
}