C
C Program WATABLE to read the results of common anisotropic ray tracing, C isotropic ray tracing, and anisotropic ray tracing, and to compare C the results. C C Version: 5.90 C Date: 2005, June 12 C C Coded by Petr Bulant C Department of Geophysics, Charles University Prague, C Ke Karlovu 3, 121 16 Praha 2, Czech Republic, C E-mail: bulant@seis.karlov.mff.cuni.cz C C....................................................................... C C C Description of data files: C C Main input data read from external interactive device (*): C The data consist of character strings read by list directed (free C format) input. The strings have thus to be enclosed in C apostrophes. The interactive * external unit may be redirected to C the file containing the data. C (1) 'SEP'/ C 'SEP'...Name of the file with input parameters. C Description of file SEP C If blank, default values of the corresponding data are C considered. C No default, 'SEP' must be specified and cannot be blank. C C C Input file 'SEP' in the SEP format: C The file has the form of a SEP parameter file. C For the description of the SEP format refer to file C 'sep.for'. C Names of optional input/output files related to ray tracing using C program 'crt.for': C QILSTI='string' ... Name of the optional input/output file C containing second-order perturbations calculated along C isotropic reference rays. C Default: QILSTI=' ' (the file is not read/written) C QILSTA='string' ... Name of the optional input/output file C containing second-order perturbations calculated along C common anisotropic reference rays. C Default: QILSTA=' ' (the file is not read/written) C Description of QILSTI and QILSTA. C Names of optional input files related to ray tracing using C program anray.for: C ANRTIM1='string' ... Name of the optional input file containing C travel times of the faster anisotropic S wave. C Default: ANRTIM1=' ' (the file is not read) C ANRTIM2='string' ... Name of the optional input file containing C travel times of the slower anisotropic S wave. C Default: ANRTIM2=' ' (the file is not read) C Description of C C ANRTIM1 and ANRTIM2. C C C Input/output formatted file QILSTI: C (1) / (a slash). C (2) For each two-point ray one line (2.1): C On input, the lines have the following form: C (2.1) IREC,TI,DTLI1,DTLI2,DTQI1,DTQI2,T1,T1,T2,T2, C DTLIA,DTQIA,TA,TA,DTQA1,DTQA2,DTQ12 / C For the description of the quantities refer to file C green.for. C On output, the lines have the following form: C (2.1) IREC,TI,DTLI1,DTLI2,DTQI1,DTQI2,T1,DT1,T2,DT2, C DTLIA,DTQIA,TA,DTA,DTQA1,DTQA2,DTQ12 / C DT1,DT2 ... If the input files ANRTIM1 and ANRTIM2 with the C anisotropic travel times are given, the difference C between the anisotropic travel times and their C approximation by the second-order perturbation expansion C calculated along the isotropic S-wave reference ray. C Otherwise the copy of T1 and T2. C DTA ... If the input file QILSTA with the perturbations along C common anisotropic rays is given, the difference C between the common anisotropic travel time and its C approximation by the second-order perturbation expansion C calculated along the isotropic S-wave reference ray. C Otherwise the copy of TA. C (3) / (a slash). C C Input/output formatted file QILSTA: C (1) / (a slash). C (2) For each two-point ray one line (2.1): C On input, the lines have the following form: C (2.1) IREC,TA,DTLA1,DTLA2,DTQA1,DTQA2,T1,T1,T2,T2, C DTLAI,DTQAI,TI,TI,DTQI1,DTQI2,DTQ12 / C For the description of the quantities refer to file C green.for. C On output, the lines have the following form: C (2.1) IREC,TA,DTLA1,DTLA2,DTQA1,DTQA2,T1,DT1,T2,DT2, C DTLAI,DTQAI,TI,DTI,DTQI1,DTQI2,DTQ12 / C DT1,DT2 ... If the input files ANRTIM1 and ANRTIM2 with the C anisotropic travel times are given, the difference C between the anisotropic travel times and their C approximation by the second-order perturbation expansion C calculated along the common anisotropic reference ray. C Otherwise the copy of T1 and T2. C DTI ... If the input file QILSTI with the perturbations along C isotropic rays is given, the difference C between the isotropic travel time and its C approximation by the second-order perturbation expansion C calculated along the common anisotropic reference ray. C Otherwise the copy of TI. C (3) / (a slash). C C----------------------------------------------------------------------- C INTEGER MTPR PARAMETER (MTPR=30) INTEGER IREC(MTPR),I,J REAL TT1(MTPR),TT2(MTPR),TTI(MTPR),DLI1(MTPR),DLI2(MTPR), * DQI1(MTPR),DQI2(MTPR),TTI1(MTPR),TTI2(MTPR),DLIA(MTPR), * DQIA(MTPR),TTIA(MTPR),TTA(MTPR),DLA1(MTPR), * DLA2(MTPR),DQA1(MTPR),DQA2(MTPR),TTA1(MTPR),TTA2(MTPR), * DTIA(MTPR),DTI1(MTPR),DTI2(MTPR), * DTAI(MTPR),DTA1(MTPR),DTA2(MTPR), * DLAI(MTPR),DQAI(MTPR),TTAI(MTPR),DQA1I(MTPR),DQA2I(MTPR), * DQ12I(MTPR),DQI1A(MTPR),DQI2A(MTPR),DQ12A(MTPR) REAL QICOR(16) REAL T,TI,DTLI1,DTLI2,DTQI1,DTQI2,T1,TI1,T2,TI2,DTLIA,DTQIA, * TA,TIA,DTQA1,DTQA2,DTQ12,DTLA1,DTLA2,TA1,TA2, * DTLAI,DTQAI,TAI CHARACTER*135 FORMQI CHARACTER*80 FQI,FQA,FA1,FA2,FILSEP,TEXT DATA IREC/MTPR*0/ DATA TT1/MTPR*0./,TT2/MTPR*0./,TTI/MTPR*0./,DLI1/MTPR*0./, * DLI2/MTPR*0./, * DQI1/MTPR*0./,DQI2/MTPR*0./,TTI1/MTPR*0./,TTI2/MTPR*0./, * DLIA/MTPR*0./, * DQIA/MTPR*0./,TTIA/MTPR*0./,TTA/MTPR*0./, * DLA1/MTPR*0./, * DLA2/MTPR*0./,DQA1/MTPR*0./,DQA2/MTPR*0./,TTA1/MTPR*0./, * TTA2/MTPR*0./, * DTIA/MTPR*0./,DTI1/MTPR*0./,DTI2/MTPR*0./, * DTAI/MTPR*0./,DTA1/MTPR*0./,DTA2/MTPR*0./, * DLAI/MTPR*0./,DQAI/MTPR*0./,TTAI/MTPR*0./, * DQA1I/MTPR*0./,DQA2I/MTPR*0./,DQ12I/MTPR*0./, * DQI1A/MTPR*0./,DQI2A/MTPR*0./,DQ12A/MTPR*0./ C WRITE(*,'(A)') '+WATABLE: Enter input filename: ' FILSEP=' ' READ(*,*) FILSEP C C Reading all data from the SEP file into the memory: IF (FILSEP.NE.' ') THEN CALL RSEP1(5,FILSEP) ELSE C WATABLE-01 CALL ERROR('WATABLE-01: SEP file not given') C Input file in the form of the SEP (Stanford Exploration Project) C parameter or history file must be specified. C There is no default filename. ENDIF C WRITE(*,'(A)') '+WATABLE: Working ... ' CALL RSEP3T('QILSTI', FQI,' ') CALL RSEP3T('QILSTA', FQA,' ') CALL RSEP3T('ANRTIM1', FA1,' ') CALL RSEP3T('ANRTIM2', FA2,' ') IF (FQI.NE.' ') OPEN(1,FILE=FQI) IF (FQA.NE.' ') OPEN(2,FILE=FQA) IF (FA1.NE.' ') OPEN(3,FILE=FA1) IF (FA2.NE.' ') OPEN(4,FILE=FA2) IF (FQI.NE.' ') READ(1,*) TEXT IF (FQA.NE.' ') READ(2,*) TEXT FORMQI(1:7)='(1I6,A,' C IF (FA1.NE.' ') THEN 10 CONTINUE I=0 READ(3,*,END=11) I,T IF(I.EQ.0) GOTO 11 IREC(I)=I TT1 (I)=T GOTO 10 11 CONTINUE ENDIF IF (FA2.NE.' ') THEN 20 CONTINUE I=0 READ(4,*,END=21) I,T IF(I.EQ.0) GOTO 21 IREC(I)=I TT2 (I)=T GOTO 20 21 CONTINUE ENDIF IF (FQI.NE.' ') THEN 30 CONTINUE I=0 READ(1,*,END=31) I,TI,DTLI1,DTLI2,DTQI1,DTQI2,T1,TI1,T2,TI2, * DTLIA,DTQIA,TA,TIA,DTQA1,DTQA2,DTQ12 IF(I.EQ.0) GOTO 31 IREC (I)=I TTI (I)=TI DLI1 (I)=DTLI1 DLI2 (I)=DTLI2 DQI1 (I)=DTQI1 DQI2 (I)=DTQI2 TTI1 (I)=T1 DTI1 (I)=TI1 TTI2 (I)=T2 DTI2 (I)=TI2 DLIA (I)=DTLIA DQIA (I)=DTQIA TTIA (I)=TA DTIA (I)=TIA DQA1I(I)=DTQA1 DQA2I(I)=DTQA2 DQ12I(I)=DTQ12 GOTO 30 31 CONTINUE ENDIF IF (FQA.NE.' ') THEN 40 CONTINUE I=0 READ(2,*,END=41) I,TA,DTLA1,DTLA2,DTQA1,DTQA2,T1,TA1,T2,TA2, * DTLAI,DTQAI,TI,TAI,DTQI1,DTQI2,DTQ12 IF(I.EQ.0) GOTO 41 IREC (I)=I TTA (I)=TA DLA1 (I)=DTLA1 DLA2 (I)=DTLA2 DQA1 (I)=DTQA1 DQA2 (I)=DTQA2 TTA1 (I)=T1 DTA1 (I)=TA1 TTA2 (I)=T2 DTA2 (I)=TA2 DLAI (I)=DTLAI DQAI (I)=DTQAI TTAI (I)=TI DTAI (I)=TAI DQI1A(I)=DTQI1 DQI2A(I)=DTQI2 DQ12A(I)=DTQ12 GOTO 40 41 CONTINUE ENDIF C IF (FQI.NE.' ') THEN REWIND(1) WRITE(1,'(A)') ' /' DO 50, I=1,MTPR IF (IREC(I).NE.0) THEN IF (TTA(I).NE.0..AND.TTIA(I).NE.0.) DTIA(I)=TTA(I)-TTIA(I) IF (TT1(I).NE.0..AND.TTI1(I).NE.0.) DTI1(I)=TT1(I)-TTI1(I) IF (TT2(I).NE.0..AND.TTI2(I).NE.0.) DTI2(I)=TT2(I)-TTI2(I) QICOR( 1)=TTI (I) QICOR( 2)=DLI1 (I) QICOR( 3)=DLI2 (I) QICOR( 4)=DQI1 (I) QICOR( 5)=DQI2 (I) QICOR( 6)=TTI1 (I) QICOR( 7)=DTI1 (I) QICOR( 8)=TTI2 (I) QICOR( 9)=DTI2 (I) QICOR(10)=DLIA (I) QICOR(11)=DQIA (I) QICOR(12)=TTIA (I) QICOR(13)=DTIA (I) QICOR(14)=DQA1I(I) QICOR(15)=DQA2I(I) QICOR(16)=DQ12I(I) CALL FORM2(16,QICOR,QICOR,FORMQI(8:135)) WRITE(1,FORMQI) IREC(I),(' ',QICOR(J),J=1,16),' /' ENDIF 50 CONTINUE WRITE(1,'(A)') ' /' ENDIF IF (FQA.NE.' ') THEN REWIND(2) WRITE(2,'(A)') ' /' DO 60, I=1,MTPR IF (IREC(I).NE.0) THEN IF (TTI(I).NE.0..AND.TTAI(I).NE.0.) DTAI(I)=TTI(I)-TTAI(I) IF (TT1(I).NE.0..AND.TTA1(I).NE.0.) DTA1(I)=TT1(I)-TTA1(I) IF (TT2(I).NE.0..AND.TTA2(I).NE.0.) DTA2(I)=TT2(I)-TTA2(I) QICOR( 1)=TTA (I) QICOR( 2)=DLA1 (I) QICOR( 3)=DLA2 (I) QICOR( 4)=DQA1 (I) QICOR( 5)=DQA2 (I) QICOR( 6)=TTA1 (I) QICOR( 7)=DTA1 (I) QICOR( 8)=TTA2 (I) QICOR( 9)=DTA2 (I) QICOR(10)=DLAI (I) QICOR(11)=DQAI (I) QICOR(12)=TTAI (I) QICOR(13)=DTAI (I) QICOR(14)=DQI1A(I) QICOR(15)=DQI2A(I) QICOR(16)=DQ12A(I) CALL FORM2(16,QICOR,QICOR,FORMQI(8:135)) WRITE(2,FORMQI) IREC(I),(' ',QICOR(J),J=1,16),' /' ENDIF 60 CONTINUE WRITE(2,'(A)') ' /' ENDIF C IF (FQI.NE.' ') CLOSE(1) IF (FQA.NE.' ') CLOSE(2) IF (FA1.NE.' ') CLOSE(3) IF (FA2.NE.' ') CLOSE(4) WRITE(*,'(A)') '+WATABLE: Done. ' STOP END C C======================================================================= C INCLUDE 'error.for' C error.for INCLUDE 'sep.for' C sep.for INCLUDE 'forms.for' C forms.for INCLUDE 'length.for' C length.for C C======================================================================= C