      SUBROUTINE initial(pmandoi,repack)
      include 'params.h'
      
C.....................................................................
C                                                                    .
C  Program Name: INITIAL                     Date: 1984              .
C                                                                    .
C  Programmer: M. Nestler                                            .
C                                                                    .
C  Program INITIAL sets OI constants and reads in namelist           .
C  parameters.                                                       .
C                                                                    .
C  Record of modifications:                                          .
C                                                                    .
C   08/1991 (M.Seablom)  OI version 1.2 upgrades; removal of volume  .
C                        definitions, addition of minivolume diag-   .
C                        nostic control from namelist.               .
C                                                                    .
C   05/1992 (M.Seablom)  OI version 1.3 upgrades; altered default    .
C                        dsn for observation error.                  .
C                                                                    .
c
C**********************************************************************
C  Data parallel implementation (CM Fortran) : M. Makivic (NPAC)      *
C  Date:       4/94                                                   *
C**********************************************************************


      LOGICAL qobs, repack
      REAL cuth (18)
      CHARACTER * 8 dataname(5)
      CHARACTER * 8  obsname(mxqobs)
      common / obschar / dataname, obsname
      COMMON / errgro / PERGRO, TERGRO, RMXEGRO (18), HERGRO (18)
c  Mandatory pressure levels    common /prmand18/ and /prmand12/
c  PRMAND18  - 18 mandatory pressure levels used in full tropospheric -
c              stratospheric analysis
c  PRMAND12  - 12 mandatory pressure levels used in standard analysis
      COMMON / prmand12 / PMAND12 (12), alogp12 (12), pkap12 (12), pkap1
     &12 (12), PM12 (12)
      COMMON / prmand18 / PMAND18 (18), alogp18 (18), pkap18 (18), pkap1
     &18 (18), PM18 (18)
c  pmand12,pmand18 - mandatory pressure levels  (top to bottom)
c  alogp12,alogp18 - log of mandatory pressure levels  (top to bot)
c  pkap12,pkap18   - mandatory pressure raised to rgas/cp power
c  pkap112,pkap118 - mandatory pressure raised to rgas/cp + 1 power
c  pm12,pm18       - mandatory pressure levels  (bottom to top)
      COMMON / PRMID12 / PMID12 (11)
      COMMON / PRMID18 / PMID18 (17)
      COMMON / STREDGE / PSTRAT (11), PMSTRAT (11)
      logical offlev
      COMMON / obs / maxdex, nfgge, lun, hh (13, 13, 20),
     &vcoroe (18, 18, 4), obserr (mxqobs, 4, 19), ww (13, 13, 20),
     &qobs (mxqobs, 5), offlev (mxqobs)
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
!hpf$ distribute alogp12(block)
!hpf$ distribute alogp18(block)
!hpf$ distribute cuth(block)
!hpf$ distribute glatup(block)
!hpf$ distribute glonup(block)
!hpf$ distribute hergro(block)
!hpf$ distribute hindreg(block)
!hpf$ distribute htlim(block)
!hpf$ distribute kofflv(block)
!hpf$ distribute kq(block)
!hpf$ distribute lat_dump(block)
!hpf$ distribute lev_dump(block)
!hpf$ distribute lon_dump(block)
!hpf$ distribute nh(block)
!hpf$ distribute obserr(block,block,block)
!hpf$ distribute offlev(block)
!hpf$ distribute pindx(block)
!hpf$ distribute pkap112(block)
!hpf$ distribute pkap118(block)
!hpf$ distribute pkap12(block)
!hpf$ distribute pkap18(block)
!hpf$ distribute pm12(block)
!hpf$ distribute pm18(block)
!hpf$ distribute pmand(block)
!hpf$ distribute pmand12(block)
!hpf$ distribute pmand18(block)
!hpf$ distribute pmandoi(block)
!hpf$ distribute pmid12(block)
!hpf$ distribute pmid18(block)
!hpf$ distribute pmstrat(block)
!hpf$ distribute pstrat(block)
!hpf$ distribute qobs(block,block)
!hpf$ distribute rmxlim(block)
!hpf$ distribute sige(block)
!hpf$ distribute vcorfe(block,block,block,block)
!hpf$ distribute vcoroe(block,block,block)
!hpf$ distribute volcentre_x(block)
!hpf$ distribute volcentre_y(block)
!hpf$ distribute ww(block,block,block)
      LOGICAL lif
      REAL  PREAL100(18)
!hpf$ distribute preal100(block)
      REAL  PREAL101(12)
!hpf$ distribute preal101(block)
!hpf$ distribute  RMXEGRO(block)

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      DATA cuth / 50., 50., 50., 50., 50., 50., 50., 50., 50., 50., 50.,
     & 50., 50., 50., 50., 50., 50., 50. /
c                     - Relative humidity gross check cutoff (percent)
C  SIX HOUR MODEL ERROR GROWTHS STARTING AT THE TOP


      CHARACTER * 40 hcfile
      INTEGER i
      INTEGER iclose
      INTEGER icopy
      INTEGER ihour
      INTEGER iminute
      INTEGER iregn
      INTEGER isecond
      INTEGER itype
      INTEGER j
      CHARACTER * 20 jcs
      INTEGER kx
      REAL lat_dump
      REAL lon_dump
      INTEGER lev
      INTEGER lev_dump
      INTEGER levat
      INTEGER ll
      INTEGER maxins
      INTEGER mxmsgs
      DATA mxmsgs / 20 /
      INTEGER nomsgs
      INTEGER numreg
      INTEGER nunit
      CHARACTER * 40 oefile
      DIMENSION pmandoi (nlevoi)
      REAL preal
c     subroutine        preslev
      REAL pressure
      CHARACTER * 80 retmsg (20)
      REAL rocpf
      REAL rocpf1
      REAL scan
      CHARACTER * 40 vcorfe_file
      CHARACTER * 40 vcoroe_file

c  Error limits   common  /clilim/
      COMMON / clilim / nlimit, plimit, tlimit, rmxlim (18), htlim (18)
c  NLIMIT  - limits are set to nlimit*(six-hour growth)
c  PLIMIT  - sea level pressure   (mb)
c  TLIMIT  - sea level temperature (k)
c  RMXLIM  - mixing ratio  (g/kg)
c  HTLIM   - heights  (m)
c  Initialize BUDDY common ( used for mixing ratio quality control ).
      COMMON / buddy / maxlev, maxlist, maxbatch, maxindx, buddist, budl
     &at
c  Other physical constants   common /const/
      COMMON / const / sige, dlat, dlon, pi, pi180, ptop, pint, gi, omg2
     &re, radei, radei2, gradei, gradei2, g2, polefac, rtd, polelat
      REAL sige (20)
c  SIGE   - sigma values at model level interfaces
c  DLAT   - latitudinal resolution of analysis
c  DLON   - longitudinal resolution of analysis
c  PI     - 3.141...
c  PI180  - pi/180
c  PTOP   - pressure at top of 1st model layer   (10 mb)
c  PINT   - pressure of interface between troposphere and stratosphere
c           (120 mb)
c  GI     -  1./grav    ms-2
c  OMG2RE - omega2/rade
c  RADEI  - 1/rade
c  RADEI2 - 1/rade**2
c  GRADEI - grav/rade
c  GRADEI2- grav**2/rade**2
c  G2     - grav**2
c  POLEFAC- factor needed in polar sterographic projections
c  RTD    - radians to degrees conversion factor
c  POLELAT- latitude at which polar stereographic projection is
c            defined as 'true'. also defines beginning of 'polar'
c            regions
c  Analysis control parameters      common /contrl/
      COMMON / contrl / im, jnp, nb, ndalt, nhms, nlay, nlaym1, nlayp1, 
     &nymd, strat, idimen, slp, fdcos, fexp, flow, sigdat, maxrep
      LOGICAL strat, slp, fdcos, fexp, flow, sigdat
c  IM     - longitudinal dimension
c  JNP    - latitudinal dimension
c  NB     - index of current time step fields
c  NDALT  - time step between calls to analysis
c  NHMS   - current time  hhmmss
c  NLAY   - model vertical dimension
c  NLAYM1 - model vertical dimension minus 1
c  NLAYP1 - model vertical dimension plus 1
c  NYMD   - current date   yymmdd
c  STRAT  - logical flag for full stratosphere analysis
c  IDIMEN - dimension of analysis (2 or 3)
c  SLP    - flag to set puv analysis cross covariances to 0.0
c  FDCOS  - logical flag for damped cosine correlation model
c  FEXP   - logical flag for second order autoregressive correlation
c         - model
c  FLOW   - logical flag for flow dependent correlations
c  SIGDAT - logical flag for use of significant level data
c  Diagnostic prints  common /mvdumper/
      COMMON / mvdumper / num_dump, lat_dump (20), lon_dump (20), lev_du
     &mp (20)
      COMMON / dalctl / seasat, usesas, dalflg
      LOGICAL seasat, usesas, dalflg
c  PERGRO  - sea level pressure   (mb/6hrs)
c  TERGRO  - sea level temperature (k/6hrs)
c  RMXEGRO - mixing ratio  (g/kg/6hrs)
c  HERGRO  - heights   (m/6hrs)
      COMMON / gridxx / imx, jnpx, mlevx
c  Analysis vertical indices   common /mlay/
      COMMON / mlay / mlev, mlevm1, mmix, mmixm1, ls, lsm1
c  MLEV   - number of levels in huv analysis
c  MLEVM1 - mlev minus 1
c  MMIX   - number of levels in mixing ratio analysis
c  MMIXM1 - mmix minus 1
c  LS     - index of interface level in stratosphere analysis
c  LSM1   - ls minus 1
c  MAXDEX  -  number of instrument types used in analysis
c  NFGGE   -  number of logical units from which observations are read
c  LUN     -  first logical unit from which obs are read
c  DATANAME-  reference identification of data types
c  HH      -  vertical correlations of heights forecast error
c  VCOROE  -  vertical correlation of rawinsonde and satellite
c             observation error, respectively
c  OBSERR  -  instrument measurement error
c  WW      -  vertical correlation of mixing ratio forecast error
c  OBSNAME -  instrument name
c  QOBS    -  logical flag to determine which data to use in analysis
c  OFFLEV  -  logical flag to identify single level reports not on
c             mandatory levels   (e.g. aircraft)
      COMMON / offdata / kofflv (mxqobs)
c  Physical constants     common /physic/
      COMMON / physic / beta, cp, grav, omega2, rade, rgas, rocp, cpog, 
     &gamma, rocp1, gocp
c  BETA   - standard lapse rate   (6.5 k/km)
c  CP     - specific heat at constant pressure   (1003.5)
c  GRAV   - acceleration from gravity  (9.80616 m/s2)
c  OMEGA2 - twice the angular velocity of the earth  (1.46e-4 s-2)
c  RADE   - radius of earth   (6371 km)
c  RGAS   - gas constant
c  ROCP   - rgas/cp
c  CPOG   - cp/g
c  GAMMA  - standard lapse rate  dt/dp   (.0052k/mb)
c  ROCP1  - rocp + 1
c  GOCP   - grav/cp
      COMMON / pmh / pmand (18)
c  Pressure level indices   common /prindex/
      COMMON / prindex / pindx (3201)
c  Print flag
      COMMON / print / msglev
c  Region indices   common /region/
      COMMON / region / hindreg (13104)
c  HINDREG - identifies correlation region in which grid point is
c            located
      COMMON / satwind / cwind
      LOGICAL cwind
c  Search information    common /scan/
      COMMON / scan / maxobs, rscan, onestage, MaxData
      REAL rscan
      LOGICAL onestage
c  MAXOBS  - maximum number of observations used to influence a
c            grid point
c  RSCAN   - maximum separation distance allowed between grid point
c            and observation before observation is not used for
c            the analysis of that grid point
c  MaxObservPoints- maximum number of observations allowed
      COMMON / sparam / lsolve, ns, nr, nv, nh (13104), nq, kq (3), volc
     &entre_x (13104), ngv, volcentre_y (13104), glatup (13104), glonup 
     &(13104)
      COMMON / vcors / vcorfe (13, 13, 20, 2)
      NAMELIST / ALPUTZ / msglev, idimen, nfgge, maxins, dataname, strat
     &, slp, sigdat, cwind, lat_dump, lon_dump, lev_dump, maxrep, scan, 
     &numreg, lsolve, oefile, hcfile, seasat, usesas, dalflg, MaxData, n
     &um_dump, vcorfe_file, vcoroe_file

      write(6,'(/," INITIAL: Ingress.",/)')
 
      lun         = 71
      onestage    = .false.
 
c  Set namelist default values.
 
      cwind       = .false.
      strat       = .false.
      slp         = .false.
      sigdat      = .false.
      idimen      = 3
      maxins      = 86
      maxrep      = 20
      numreg      = 1
      lsolve      = 12
      scan        = 1600.0
      msglev      = 1
      nfgge       = 1
      oefile      = 'obserr.data'
      hcfile      = 'hcorfe.data'
      dataname(1) = 'RGLOI20M'
      dataname(5) = 'sswind'
      seasat      = .false.
      usesas      = .false.
      dalflg      = .false.
      MaxData    = 150000
      vcorfe_file = 'vcorfe.dat'
      vcoroe_file = 'vcoroe.dat'
      repack      = .false.
      num_dump    = 0
 
c  Read namelist values.
 
c      read(65,alputz)
c      write(6,alputz)
      num_dump    = 0
      lat_dump(1) = 20.
      lon_dump(1) = -90.
      lev_dump(1) = 5
      nfgge       =  1
      seasat      = .false.
      maxins      = 87
      maxrep      = 25
      msglev      = 3
      numreg      = 1
      scan        = 1600.
      oefile      = 'obserr.data'
      dataname(1) = 'RPK2ATOV'
      hcfile      = 'hcorfe.data'
      vcorfe_file = 'vcorfe.data'
      vcoroe_file = 'vcoroe.data'
      MaxData    = 150000
    
      do i = 1,nfgge
        if ( dataname(i)(1:3) .eq. 'rgl' .or. dataname(i)(1:3)
     &       .eq. 'RGL' ) repack = .true.
        if ( dataname(i)(1:3) .eq. 'rpk' .or. dataname(i)(1:3)
     &       .eq. 'RPK' ) repack = .true.
        if ( dataname(i)(1:3) .eq. 'reg' .or. dataname(i)(1:3)
     &       .eq. 'REG' ) repack = .true.
      end do
      maxobs = maxrep
      maxdex = maxins
      rscan  = scan
 
c  Assign values from model.
 
      im     = imr
      jnp    = jmr+1
      nb     = 1
      ndalt  = 060000
      nlay   = nlayr
      nlaym1 = nlay-1
      nlayp1 = nlay+1
      beta   = 0.0065
      cp     = 1004.1600
      dlat   = 180.0 / (jnp-1.0)
      dlon   = 360.0 / im
      grav   = 9.8100
      pi     = 4. * atan(1.)
      pi2    = 2.0 * pi
      omega2 = 2.0 * pi2 / 86164.09
      pi180  = pi / 180.0
      ptop   = 10.
      rade   = 6375.0 e3 / 1000.0
      rgas   = 287.0
      rocp   = rgas / cp
      rocp1  = rocp + 1.0
      cpog   = cp / grav
      gocp   = grav / cp
      nr     = maxrep * 3
 
CCC - DJL This sige array is no longer used to hold model edge sigmas 
CCC   sige( 1:nlayp1 ) = 0.
 
      write(6,'(/," INITIAL: Grid is ",i3," x ",i3,/,t8,"DLAT:",f4.1,
     &     " DLON: ",f4.1," NDALT: ",i6)') im, jnp, dlat, dlon, ndalt
 
c  Read which data types are to be used.
 
      do nunit = 1, nfgge
         do kx = 1, mxqobs
            qobs(kx,nunit) = .false.
         end do
      end do
 
      do kx = 1, mxqobs
         kofflv(kx) = 0
         if( offlev(kx) ) kofflv(kx) = 1
      end do
 
c   Read nfgge qobs arrays.
 
      do iobs = 1,nfgge
        read ( 66,910 ) ( qobs(kx,iobs), kx = 1,mxqobs )
        write( 6,'(//," Dataset name: ",a8)' ) dataname(iobs)
 
 
         do kx = 1, mxqobs
            if ( qobs ( kx,iobs ) ) then
 
              if ( kofflv(kx) .eq. 0 ) then
                write ( 6,'(" INITIAL-> Observation used:",a8)')
     &               obsname(kx)
              else
                write ( 6,'(" INITIAL-> Observation used:",a8,
     &               " (including off level data)")') obsname(kx)
              end if
 
            else
 
              if ( obsname(kx) .ne. '        ' )
     &         write(6,'(" INITIAL-> Observation omitted:",a8)')
     &            obsname(kx)
            end if
         end do
 
      end do
 
 
c  Set mandatory levels for the analysis.
 
      do ll = 1, nlevoi
         pmand(ll)   = pmandoi(ll)
         print*,' Analysis level ',ll,pmand(ll),' mb.'
      end do
 
      rocpf  = rocp
      rocpf1 = rocp1
 
      do ll = 1, 18
         preal       = pmand18(ll)
         alogp18(ll) = alog(preal)
         pkap18(ll)  = pmand18(ll)**rocpf
         pkap118(ll) = pmand18(ll)**rocpf1
      end do
 
      do ll = 1, 12
         preal       = pmand12(ll)
         alogp12(ll) = alog(preal)
         pkap12(ll)  = pmand12(ll)**rocpf
         pkap112(ll) = pmand12(ll)**rocpf1
      end do
 
c  Assign analysis vertical indices.
 
      mlev   = nlevoi
      mlevm1 = mlev - 1
      mmix   = 6
      mmixm1 = mmix - 1
      write(6,'(" INITIAL: Vertical indicies: LS=",i3," MLEV=",i3)')
     &      ls, mlev
 
c  Set the gridxx common.
 
      imx   = im
      jnpx  = jnp
      mlevx = mlev
 
c  Derive other constants.
 
      gamma   = 0.0552
      gi      = 1.0 / grav
      omg2re  = omega2 / rade
      radei   = 1.0 / rade
      radei2  = radei * radei
      gradei  = grav * ( radei * 0.001 )
      gradei2 = gradei * gradei
      g2      = grav * grav
      polelat = 70.0
      polefac = 1.0 + sin( 1.0 * polelat * pi180 )
      rtd     = 1.0 / pi180
 
c Initialize all constants in buddy common.
      maxlev   = 20000
      maxlist  = 20000
      maxbatch = 20000
      maxindx  = 1000
      budlat   = 5.0
      buddist  = budlat * pi180 / radei
 
c  Compute an index array for evenly spaced pressure levels.  The array
c  PINDX consists of a whole number which is the index of the mandatory
c  level above the pressure level and a fractional part which is the linear
c  in log(P) interpolation weight from the upper mandatory level.  The
c  index of the PINDX array is related to the pressure through a linear
c  mapping which is summarized in the following table:
c
c                      Pressure       PINDX
c       Pressure      Resolution      index        RFACT     RDISP
c       --------      ----------      -----        -----     -----
c
c      0.1 - 1            .001        1 - 901      1000.      -99.
c        1 - 10           .01       901 - 1801      100.      801.
c       10 - 50           .1       1801 - 2201       10.     1701.
c       50 - 1050        1.        2201 - 3201        1.     2151.
c
c  There are 900 pressures tabulated between each factor of 10 change in
c  pressure, except for the 10 - 50 mb range, where the range is reduced 
c  so that the 50 - 1050 mb range is identical to the original PINDX array.
c
      call preslev(pmand,nlevoi,pindx)
 
c  Set limits for prediction errors. These limits equal the six-hour
c  model growth rates times nlimit.
 
      nlimit = 8
 
c  1) sea level pressure and temperature:
      plimit = pergro * nlimit
      tlimit = tergro * nlimit
c  2) heights and mixing ratio:
 
      do ll = 1, 18
         rmxlim(ll) = rmxegro(ll) * nlimit
         htlim(ll)  = hergro(ll) * nlimit
      end do
 
c  Adjust 6-hour error growths based on frequency of analysis.
 
      if( ndalt.ne.60000 ) then
         ihour   = ndalt / 10000
         iminute = ( ndalt - 10000 * ihour ) / 100
         isecond = mod ( ndalt, 100 )
         adjust  = 6.0 / ( ihour + iminute/60.0 + isecond/3600.0 )
         pergro  = pergro / adjust
         tergro  = tergro / adjust
 
         do ll = 1, 18
            rmxegro(ll) = rmxegro(ll) / adjust
            hergro(ll) = hergro(ll) / adjust
         end do
 
      endif
 
 
c  Determine region indices and set flow dependent flag.
 
      if( (numreg.gt.0).and.(numreg.le.20) ) then
 
         do ll = 1, im*jnp
            hindreg(ll) = numreg
         end do
 
      else if ( numreg.le.0 ) then
 
         read(66,935) ( hindreg(ll),ll = 1, 46*72 )
         flow = .false.
         if ( numreg.lt.0 ) flow = .true.
 
      endif
 
      write(6,'(/," Flow dependent code: ",l10)') flow
 
 
c  Parameter files residing on Cray are opened here.
 
c  Open file containing table lookup for forecat error horizontal correlation
 
      open ( unit=61, file=hcfile )
 
c  Open observation error file from Cray.
 
      open ( unit=62, file=oefile )
 
c  Open file containing table lookup for forecast error vertical correlation
                                                                                
      open ( unit=63, file=vcorfe_file )
 
c  Open file containing table lookup for observation error vertical correlation
 
      open ( unit=92, file=vcoroe_file )
 
      write(6,'(/," Parameter files opened: ",/)') 
      write(6,'(" Horizontal forecast error correlation:  ",a40)') 
     .                                                       hcfile
      write(6,'(" Vertical forecast error correlation:    ",a40)') 
     .                                                  vcorfe_file
      write(6,'(" Observation error standard deviations:  ",a40)') 
     .                                                       oefile
      write(6,'(" Vertical observation error correlation: ",a40)') 
     .                                                  vcoroe_file
 
c  Read and set the observation errors.
 
      call setobse(obserr,mxqobs,nlevoi)
 
 
      return
 
 
  910 format( 7x, 50l1, 23x )
  935 format( 18(1x,i2) )
  965 format( 80x )
  970 format( 1x, 13f6.4)
  975 format( 1x, 7( f5.2, 1x ) )
 
      end

      BLOCK DATA OBSCH
      integer mxqobs
      parameter(mxqobs=200)
      CHARACTER * 8 dataname(5)
      CHARACTER * 8  obsname(mxqobs)
      common / obschar / dataname, obsname
      DATA obsname  /'SFC LND1', 'SFC LND2', 'SFC SHP1', 'SFC SHP2', 'BU
     &OY ENV', 'BUOY DRF', 'RAWINSND', 'PILOT WD', 'NAVAIDS ', 'DROPWSND
     &', 'RADAR WD', 'ROCKTSND', 'BALLOON ', 'AIR ASDR', 'AIR AIDS', 'AI
     &R AIRP', 'AIR CODR', 'AIR ALPX', 'WISC E 1', 'WISC E 2', 'WISC W  
     &', 'WISC OCN', 'WISC JAP', 'NESS E  ', 'NESS W  ', 'EUROPEAN', 'OR
     &IG JAP', 'SEASAT  ', 'WSAT 55 ', 'WSAT 57 ', 'LIMS    ', 'VTPR   W
     &', 'TRSA NHL', 'TRSA SHL', 'TRSB NHL', 'TRSB SHL', 'TRSC NHL', 'TR
     &SC SHL', 'TRSA NHW', 'TRSA SHW', 'TRSB NHW', 'TRSB SHW', 'TRSC NHW
     &', 'TRSC SHW', 'NO6A NHL', 'NO6A SHL', 'NO6B NHL', 'NO6B SHL', 'NO
     &6C NHL', 'NO6C SHL', 'NO6A NHW', 'NO6A SHW', 'NO6B NHW', 'NO6B SHW
     &', 'NO6C NHW', 'NO6C SHW', 'SPEA NHW', 'SPEA SHW', 'SPEB NHW', 'SP
     &EB SHW', 'SPEC NHW', 'SPEC SHW', 'VASA NHL', 'VASA SHL', 'VASB NHL
     &', 'VASB SHL', 'VASA NHW', 'VASA SHW', 'VASB NHW', 'VASB SHW', 'GL
     &AA NHL', 'GLAA SHL', 'GLAB NHL', 'GLAB SHL', 'GLAC NHL', 'GLAC SHL
     &', 'GLAD NHL', 'GLAD SHL', 'GLAA NHW', 'GLAA SHW', 'GLAB NHW', 'GL
     &AB SHW', 'GLAC NHW', 'GLAC SHW', 'GLAD NHW', 'GLAD SHW', 'GEN 1000
     &', 113* '        '/
      END BLOCK DATA OBSCH
c
c  Error growth rates       common  /errgro/
      BLOCK DATA EGRO
      COMMON / errgro / PERGRO, TERGRO, RMXEGRO (18), HERGRO (18)
      DATA PERGRO / 1.7e0 /
      DATA TERGRO / 2.4e0 /
      DATA RMXEGRO / 0.00e0, 0.00e0, 0.00e0, 0.00e0, 0.00e0, 0.00e0, 0.0
     &0e0, 0.00e0, 0.00e0, 0.00e0, 0.00e0, 0.00e0, 0.05e0, 0.15e0, 0.20e
     &0, 0.65e0, 0.90e0, 1.20e0 /
      DATA HERGRO / 23.9e0, 23.9e0, 23.9e0, 23.9e0, 23.9e0, 23.9e0, 23.9
     &e0, 20.8e0, 15.6e0, 14.2e0, 13.3e0, 12.3e0, 11.6e0, 10.4e0, 9.2e0,
     & 6.9e0, 5.5e0, 3.7e0 /
      END BLOCK DATA EGRO
      BLOCK DATA PRESS
c  Mandatory pressure levels    common /prmand18/ and /prmand12/
c  PRMAND18  - 18 mandatory pressure levels used in full tropospheric -
c              stratospheric analysis
c  PRMAND12  - 12 mandatory pressure levels used in standard analysis
      COMMON / prmand12 / PMAND12 (12), alogp12 (12), pkap12 (12), pkap1
     &12 (12), PM12 (12)
      COMMON / prmand18 / PMAND18 (18), alogp18 (18), pkap18 (18), pkap1
     &18 (18), PM18 (18)
c  pmand12,pmand18 - mandatory pressure levels  (top to bottom)
c  alogp12,alogp18 - log of mandatory pressure levels  (top to bot)
c  pkap12,pkap18   - mandatory pressure raised to rgas/cp power
c  pkap112,pkap118 - mandatory pressure raised to rgas/cp + 1 power
c  pm12,pm18       - mandatory pressure levels  (bottom to top)
       COMMON / PRMID12 / PMID12 (11)
       COMMON / PRMID18 / PMID18 (17)
       COMMON / STREDGE / PSTRAT (11), PMSTRAT (11)
C  MANDATORY PRESSURES STARTING AT THE TOP
      DATA PMAND12 / 50.e0, 70.e0, 100.e0, 150.e0, 200.e0, 250.e0, 300.e
     &0, 400.e0, 500.e0, 700.e0, 850.e0, 1000.e0 /
      DATA PMAND18 / 0.4e0, 1.e0, 2.e0, 5.e0, 10.e0, 30.e0, 50.e0, 70.e0
     &, 100.e0, 150.e0, 200.e0, 250.e0, 300.e0, 400.e0, 500.e0, 700.e0, 
     &850.e0, 1000.e0 /
C MANDATORY PRESSURES STARTING AT BOTTOM
      DATA PM12 / 1000.e0, 850.e0, 700.e0, 500.e0, 400.e0, 300.e0, 250.e
     &0, 200.e0, 150.e0, 100.e0, 70.e0, 50.e0 /
      DATA PM18 / 1000.e0, 850.e0, 700.e0, 500.e0, 400.e0, 300.e0, 250.e
     &0, 200.e0, 150.e0, 100.e0, 70.e0, 50.e0, 30.e0, 10.e0, 5.e0, 2.e0,
     & 1.e0, 0.4e0 /
C  MID LAYER PRESSURES
      DATA PMID12 / 59.8e0, 84.7e0, 124.4e0, 174.6e0, 224.7e0, 274.7e0, 
     &349.1e0, 449.3e0, 598.0e0, 774.1e0, 924.3e0 /
      DATA PMID18 / 0.6325e0, 1.414e0, 3.162e0, 7.071e0, 17.32e0, 38.73e
     &0, 59.16e0, 83.67e0, 122.5e0, 174.6e0, 224.7e0, 274.7e0, 349.1e0, 
     &449.3e0, 598.0e0, 774.1e0, 924.3e0 /
C  EDGE PRESSURES IN STRATOSPHERE
      DATA PSTRAT / 0.30486097e0, 0.52482938e0, 0.90351310e0, 1.55543104
     &e0, 2.67773178e0, 4.60981380e0, 7.93596409e0, 13.66205421e0, 23.51
     &972907e0, 40.49007909e0, 69.70516115e0 /
C  MID LAYER PRESSURES IN STRATOSPHERE
      DATA PMSTRAT / 0.40000000e0, 0.68861471e0, 1.18547557e0, 2.0408398
     &1e0, 3.51338084e0, 6.04841440e0, 10.41256796e0, 17.92561891e0, 30.
     &85961260e0, 53.12595870e0, 91.45829289e0 /
      END BLOCK DATA PRESS
      BLOCK DATA OBSERV
C Initialize various common blocks (previously BLOCK DATA OI):
c  Observations  information    common /obs/
      logical offlev
      integer mxqobs
      parameter (mxqobs=200)
      COMMON / obs / maxdex, nfgge, lun, hh (13, 13, 20),
     &vcoroe (18, 18, 4), obserr (mxqobs, 4, 19), ww (13, 13, 20),
     &qobs (mxqobs, 5), offlev (mxqobs)
      DATA offlev / .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .FAL
     &SE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .TRUE., .TRUE., 
     &.TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .T
     &RUE., .TRUE., .TRUE., .TRUE., .TRUE., .TRUE., .FALSE., .FALSE., .F
     &ALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALS
     &E., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE.,
     & .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .F
     &ALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALS
     &E., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE.,
     & .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .F
     &ALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALS
     &E., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., 113 * .FALSE. /
	  END BLOCK DATA OBSERV
