C
C     INCLUDE 'mtt.inc'
C     Declaration of the common blocks used through MTT program:
C
C Date: 1999, December 8
C
C     ------------------------------------------------------------------
      INCLUDE 'ram.inc'
C     ram.inc.
C
      INTEGER IRAM(MRAM)
      EQUIVALENCE (IRAM,RAM)
      INTEGER NRAMP,MRAMP,NT,NR,NQ,NRAMT
      INTEGER ORAYE,ORAYA,IRAYMI,IRAYMA
      INTEGER NOUT,MOUT
      PARAMETER (MOUT=21)
      CHARACTER*80 CHOUT(MOUT),FOUT(0:MOUT+1)
      REAL GIANT,DWARF
      PARAMETER (GIANT=2000000000.)
      REAL O1,O2,O3,D1,D2,D3
      REAL PROJ1,PROJ2,PROJ3
      INTEGER N1,N2,N3
      LOGICAL L3D,L2D
      COMMON/MTTC/NRAMP,MRAMP,NT,NR,NQ,NRAMT,ORAYE,ORAYA,IRAYMI,IRAYMA,
     *            NOUT,CHOUT,FOUT,DWARF,L3D,L2D,
     *            O1,O2,O3,D1,D2,D3,N1,N2,N3,PROJ1,PROJ2,PROJ3
      SAVE  /MTTC/
C     ------------------------------------------------------------------
C     MRAM ...Dimension of the arrays IRAM, RAM.
C     NRAMP...Number of records for points on rays in arrays IRAM, RAM.
C     MRAMP...Maximum number of records for points in arrays IRAM, RAM.
C     IRAM(1 : 3*NT), where NT is a number of triangles ...
C             Indices of the rays forming the homogeneous triangles
C             in the ray-parameter domain.
C     IRAM(3*NT+1 : 4*NT) ... indices of triangles sorted according to
C             the indices of the rays forming the triangles, i.e. the
C             triangle formed by rays with the lowest indices is located
C             in IRAM(IRAM(3*NT+1):IRAM(3*NT+1)+2), the triangle formed
C             by rays with the highest indices is located in
C             IRAM(IRAM(4*NT):IRAM(4*NT)+2)
C     IRAM(4*NT+1 : 4*NT+NR), where NR is a number of rays ...
C             "Deleting array" containing the information about when
C             can be the rays erased from memory. Each record of the
C             array corresponds to one ray. The record
C             describes the last triangle where the ray is used;
C             it displays the highest index of the rays of the
C             last triangle.
C             Zero for the rays, which will not be used.
C     IRAM(4*NT+NR+1 : 4*NT+2*NR+1) ... "Addressing array" containing
C             the addresses of the ends of individual
C             records for rays in the array [I]RAM.
C             If the ray have not yet been read into memory, zero.
C             If the ray was already read but is no longer stored in
C             the memory, the address of previous ray stored in memory.
C             To enable reading of the ray IRAYMI, address of the ray
C             IRAYMI-1 is set to 3*NT+2*NR+1 and stored as the first ray
C     [I]RAM(4*NT+2*NR+2 : 4*NT+2*NR+2+JR, ...) JR parameters of a ray,
C             where JR=address of the ray - address of the previous ray;
C             or JR=number of points on the ray * NQ.
C     NT ...  Number of triangles.
C     NR ...  Number of rays, which may be used in some triangle.
C     NQ ...  Number of quantities recorded for each point on a ray.
C             The quantities represent:
C             1. X1-coordinate.
C             2. X2-coordinate.
C             3. X3-coordinate.
C             4. Index of the surface at which the endpoint of the
C                computed element of the ray is situated, zero for
C                endpoint situated inside complex block.
C             5. Sequential index of a point.
C             6. - 5.+NOUT  Quantities to be interpolated. The kinds
C                of quantities are given by character strings CHOUT.
C     NOUT .. Number of character strings stored in CHOUT and FOUT.
C     CHOUT . Character strings, describing which quantity is to be
C             interpolated and written into corresponding output
C             file FOUT. The strings are the same as the names of
C             the parameters specifying
C             the names of output files with the interpolated quantities
C             (NUM,MTT,MP1,...).
C     FOUT .. Filenames of the output files corresponding to the
C             individual interpolated quantities.
C     ORAYE . When substracting this number from the index of a ray,
C             we get the position of the ray in "deleting array".
C     ORAYA . When substracting this number from the index of a ray,
C             we get the position of the ray in "addressing array".
C             Address of the ray with index IRAY: IRAM(IRAY-ORAYA)
C             Parameters of the ray with index IRAY:
C                    from   RAM(IRAM(IRAY-ORAYA-1)+1)
C                    to     RAM(IRAM(IRAY-ORAY).
C     IRAYMI,IRAYMA ... Minimum and maximum of indices of rays.
C     GIANT . High real number which is smaller than the highest integer
C             existing on the computer. Here the value 2*10to9 was
C             selected as the highest integer on most computers
C             equals 2to31.
C     DWARF . Small real number, 100 times greater than the
C             highest number R satisfying the equation 1.+R=1.
C
C     L3D ... L3D=.TRUE. indicates a 3-D computation.
C     L2D ... L2D=.TRUE. indicates a 2-D computation.
C     O1,O2,O3 ... Coordinates of the origin of the grid.
C     D1,D2,D3 ... Steps per gridpoint.
C     N1,N2,N3 ... Numbers of gridpoints.
C     PROJ1,PROJ2,PROJ3 ... Three components of the projection vector,
C             which is used in 2-D computations to project the
C             coordinates of gridpoints to the plane defined by rays.
C Coded by Petr Bulant
C
C=======================================================================
C