C
C Auxiliary main program RTCOEF
C (for testing of routine COEF52)
C *******************************
C For testing purposes, a brief main program RTCOEF is included
C to control the computation of R/T coefficients using the routine
C COEF52. Main program first calls COEF52 to read the data for the
C model, and, after this, it reads two records specifying the
C required computations. The computations are performed either in an
C angle loop, or in a frequency loop. For any required angle of
C incidence and frequency, routine COEF52 is called to compute the
C relevant R/T coefficient.
C
C The complete set of input data is as follows:
C ********************************************
C 1) One record: NZ
C NZ ... number of layers, including both halfspaces
C 2) NZ records: VP,VS,RHO,QP,QS,D
C Parameters of the layers; one record for one layer. The
C first record corresponds to the halfspace with the incident
C wave (first halfspace), the last record to the NZ-th layer,
C that is to the second halfspace.
C 3) One record: FREF
C FREF ... reference frequency (in Hz).
C 4) One record: NC,NH,NQ,NF,NA
C NC ... type of R/T coefficient
C NH ... NH=0...the second halfspace is solid or liquid
C NH=1...the second halfspace is a vacuum
C NQ ... NQ=0... model is non-dissipative
C NQ=1... model is dissipative
C NF ... number of frequencies in the frequency loop.
C For NF=1, the frequency loop is not considered
C NA ... number of angles of incidence in the angle loop.
C For NA=1, the angle loop is not considered
C 5) One record: FMIN,DF,AMIN,DA,GAMMA
C FMIN,DF ... specify frequency loop, in Hz
C AMIN,DA ... specify angle loop, in degrees
C GAMMA ... attenuation angle, in degrees
C The records 4 and 5 can be repeated any number of times. The
C computation finishes if NC=0 is used in record 4.
C If we wish to compute the R/T coefficients in an angle loop
C (for one given frequency FMIN), we use NF=1. If we wish to
C compute the R/T coefficients in a frequency loop (for one
C given angle of incidence AMIN), we use NA=1. Use always NF=1
C or NA=1.
C The input data are stored in the file input.dat.
C The results of computations are stored in the file
C output.dat. For convenience, all input data are first stored
C in output.dat (even those for model). Then, after an empty
C line, the results of computations are stored. Each line diplays:
C ANGLE,FREQ,RMOD,RPHASE,RMOD0,RPH0.
C
C Test examples
C *************
C Four test examples are included. See the description in the file
C 'rtcoef.htm'.
C
C The test data are located in subdirectory
C rtcoef
C of package DATA.
C The test examples may be executed by command
C perl go.pl rtcoef.h
C running the demonstration history file
C rtcoef.h.
C
C References
C **********
C Brokesova,J. (2000). Reflection/transmission coefficients at a
C plane interface in dissipative and non-dissipative media:
C A comparison. J.Comput.Acoustics, 9,623 -641.
C Brokesova,J., and Cerveny,V. (1998). Inhomogeneous plane waves
C in dissipative, isotropic and anisotropic media. Reflection/
C transmission coefficients. In Seismic waves in complex 3-D
C structures, Report No. 7, pp. 57 - 146. Department of
C Geophysics, Charles University, Prague.
C Cerveny,V. (1989). Synthetic body wave seismograms for laterally
C varying media containing thin transition layers. Geophys. J.
C Int., 99, 331-349,
C Cerveny,V. (2001). Seismic ray theory. Cambridge Univ. Press,
C Cambridge.
C Muller,G. (1985). The reflectivity method. A tutorial. J.Geophys.,
C 58, 153-174.
C
C
C Consortium Project "Seismic Waves in Complex 3-D Structures"
C Praha, April 2003
C J.Brokesova, V.Cerveny
C
************************************************************************
c
c program rtcoef
c **************
c
c Auxiliary program rtcoef is designed for computations
c of R/T coefficients of inhomogeneous P, SV and SH plane wave
c at stack of layers between two isotropic anelastic halfspaces.
c It uses the routine coef52.
c
open(7,file='input.dat')
open(9,file='output.dat')
c
c reading the model
call coef52(0,0,0,0,7,9,0.,0.,0.,0.,0.,0.,0.)
c
c reading the data for coef52
1 read(7,100)nc,nh,nq,nf,na
write(9,100)nc,nh,nq,nf,na
if(nc.eq.0.or.nc.eq.11.or.nc.eq.12.or.nc.gt.14)go to 10
read(7,101)fmin,df,amin,da,gamma
write(9,101)fmin,df,amin,da,gamma
write(9,102)
c
c angle loop
if(na.eq.1)go to 5
freq=fmin
do 2 i=1,na
angle=amin+(i-1)*da
call coef52(nc,nh,nq,1,7,9,angle,gamma,freq,rmod,rphase,
1rmod0,rph0)
write(9,101)angle,freq,rmod,rphase,rmod0,rph0
2 continue
go to 10
c
c frequency loop
5 angle=amin
do 6 i=1,nf
freq=fmin+(i-1)*df
call coef52(nc,nh,nq,1,7,9,angle,gamma,freq,rmod,rphase,
1rmod0,rph0)
write(9,101)angle,freq,rmod,rphase,rmod0,rph0
6 continue
c
7 go to 1
100 format(6i5)
101 format(8f10.3)
102 format (/)
10 continue
stop
end
c
************************************************************************
c
INCLUDE 'coef52.for'
c coef52.for
c
************************************************************************
c