C
C     INCLUDE 'model.inc'
C     ------------------------------------------------------------------
      CHARACTER*80 TEXTM
      COMMON/MODELT/TEXTM
      SAVE /MODELT/
C     ..................................................................
      INTEGER MSB,MCB
      PARAMETER (MSB=128)
      PARAMETER (MCB=128)
      INTEGER NEXPV,NEXPQ,IVERT
      REAL BOUNDM(6)
      INTEGER NSRFCS,NSB,KSB(0:MSB),NCB,KCB(0:MSB)
      EQUIVALENCE (KSB(0),NSB),(KCB(0),NCB)
      COMMON/MODELC/NEXPV,NEXPQ,IVERT,BOUNDM,NSRFCS,KSB,KCB
      SAVE /MODELC/
C     ------------------------------------------------------------------
C     TEXTM...The name of the model. String of 80 characters.
C
C     NEXPV,NEXPQ... Specify exponents of the power of velocities
C             (NEXPV) and Q-factors (NEXPQ) in input data.  For example,
C             unit values of NEXPV and NEXPQ indicate that the
C             parameters of the medium are velocities and Q factors,
C             indices equal -1 indicate reciprocal values of these
C             quantities, i.e. slownesses and loss factors.
C     IVERT...Orientation of the vertical axis:
C             IVERT=0: unknown (default),
C             IVERT=+1: X1 vertical, pointing upwards,
C             IVERT=-1: X1 vertical, pointing downwards,
C             IVERT=+2: X2 vertical, pointing upwards,
C             IVERT=-2: X2 vertical, pointing downwards,
C             IVERT=+3: X3 vertical, pointing upwards,
C             IVERT=-3: X3 vertical, pointing downwards,
C             Should have no influence on the calculations.  If it
C             is non-zero, it may be considered for plotting purposes.
C     BOUNDM..Boundaries X1MIN,X1MAX,X2MIN,X2MAX,X3MIN,X3MAX of the
C             model.
C     NSRFCS..Number of smooth surfaces in the model. The surfaces
C             are indexed sequentially by positive integers, from 1 to
C             NSRFCS.  NSRFCS is the storage location for NSRFC.
C     NSB...  Number of material simple blocks in the model. The blocks
C             are indexed sequentially by positive integers ISB from 1
C             to NSB.  Free-space blocks are not indexed.
C     KSB...  Contains the indices of the surfaces bounding individual
C             simple blocks.  KSB(ISB), for ISB = 1 to NSB, specify the
C             partition of array KSB(NSB+1:NSB+NS) among the simple
C             blocks.  Here NS is the total number of all occurences of
C             the indices of the surfaces bounding all individual simple
C             blocks in the input data.  The indices of the surfaces
C             bounding individual simple blocks are stored from
C             KSB(NSB+1) to KSB(NSB+NS). The locations KSB(NSB+NS+1:MSB)
C             are undefined.  It must be NSB+NS.LT.MSB.  The indices of
C             the surfaces bounding the simple block ISB are stored in
C             KSB(I1) to KSB(I2), with
C               I1 = KSB(ISB-1)+1  ,
C               I2 = KSB(ISB)      ,
C             where KSB(ISB-1)=NSB for ISB=1.  For each simple block
C             with index ISB, the indices of the surfaces forming the
C             set F(+) are stored with positive signs, the indices of
C             surfaces from F(-) with negative signs.  For an example
C             refer to the sample input data for the model.
C     NCB...  Number of material complex blocks in the model. The blocks
C             are indexed sequentially by positive integers ICB from 1
C             to NCB.  The free-space blocks are not indexed.
C     KCB...  Contains the indices of the simple blocks forming
C             individual complex blocks.  KCB(ICB), for ICB = 1 to NCB,
C             specify the partition of array KSB(NCB+1:NCB+NB) among the
C             complex blocks.  Here NB is the total number of all
C             occurences of the indices of the simple blocks forming
C             individual complex blocks in the input data.  The indices
C             of the simple blocks forming individual complex blocks are
C             stored from KSB(NCB+1) to KSB(NCB+NB). The locations
C             KSB(NCB+NB+1:MCB) are undefined. It must be NCB+NB.LT.MCB.
C             The indices of the simple blocks forming complex block ICB
C             are stored in KCB(I1) to KCB(I2), where
C               I1 = KCB(ICB-1)+1  ,
C               I2 = KCB(ICB)      .
C             Here KCB(ICB-1)=NCB for ICB=1.  For an example refer to
C             the sample input data for the model.
C
C     All the input data are stored sequentially in the same order as
C     they were read.  The only exception are locations KSB(1) to
C     KSB(NSB) and KCB(1) to KCB(NCB) which are inserted when the input
C     data are being read .  The index of the last allocated numeric
C     storage unit of array KSB is named MSB.  The index of the last
C     allocated numeric storage unit of array KCB is named MCB.  The
C     values of MSB and MCB are given by the sixth and seventh statement
C     of the block data subroutine MODELB.  If the value of MSB or MCB
C     is changed, it must be adjusted in all subroutines which include
C     the common block /MODELC/.
C
C     Common block /MODELT/ is included in external procedure MODEL1.
C     of file 'model.for', and in subroutine SECT1 of file 'sec.for'.
C
C     Common block /MODELC/ is included in external procedures MODEL1,
C     BLOCK, ISIDE, INTERF of file 'model.for',  in subroutines FUNC and
C     DISC of file 'sec.for',  in program 'intf.for',  in subroutine
C     RAY1 of file 'ray.for' of package CRT, in 'bndlin.for',
C     and may be included in any other subroutine.
C
C Date: 1996, July 8
C Coded by Ludek Klimes
C
C=======================================================================
C