!
!-----------------------------------------------------------------------
!
!  ADAS Sizing parameters
!
!  Note in the following, nvar_max is the max of
!  nvar_sng, nvar_ua and nvar_anx, and is used for the size of the
!  analysis work arrays.
!
!  ntime is the number of time levels of obs read-in.
!  ntime must be at least 2 to accomodate time consistency check.
!
!-----------------------------------------------------------------------
!
  INTEGER :: nsrc_sng,nsrc_ua,nsrc_rad,nsrc_ret
  PARAMETER (nsrc_sng=9,    & ! number of sources of single-lvl data
         nsrc_ua=4,         & ! number of sources for multi-lvl data
         nsrc_rad=5,        & ! number of sources of radar data
         nsrc_ret=1)          ! number of sources of retrieval data
!
  INTEGER :: ntime,nz_ua,nz_tab,nvar_sng,nvar_ua,                       &
          nvar_radin,nvar_rad,nvar_retin,nvar_ret,                      &
          nvar_anx
  PARAMETER (ntime=2,       & ! number of time levels of data
         nz_ua=200,         & ! max number of vertical levels in sounding
         nz_tab=40,         & ! max number of levels in obs err table
         nvar_sng=14,       & ! number of variables for single-lvl data
         nvar_ua=5,         & ! number of variables for multi-lvl data
         nvar_radin=4,      & ! number of variables for radar data input
         nvar_rad=3,        & ! number of variables for radar data anx
         nvar_retin=5,      & ! number of variables for retrieval data input
         nvar_ret=5,        & ! number of variables for retrieval data anx
         nvar_anx=5)          ! number of analysis variables
  
  INTEGER, PARAMETER :: nvar_rad_3dvar = 4
  INTEGER, PARAMETER :: nvar_anx_3dvar = 6
  INTEGER, PARAMETER :: mx_nvar_anx = MAX(nvar_anx,nvar_anx_3dvar)

  INTEGER :: mx_sng_file,mx_ua_file,mx_rad,mx_ret
  PARAMETER( mx_sng_file=6,      & ! max number of single-level data files
             mx_ua_file=5,       & ! max number of uppper-level data files
             mx_rad=160,         & ! max number of radar sites
             mx_ret=1)             ! max number of retrieval radar sites

  INTEGER :: mx_sng,mx_ua,mx_colrad,nz_rdr,nz_ret,mx_colret

  PARAMETER (mx_sng=10000,       & ! max number of single-lvl data points
             mx_ua=400,          & ! max number of upper level sites
             mx_colrad=20000,    & ! max number of radar columns
             nz_rdr=100,         & ! max number of radar vertical levels
             nz_ret=53,          & ! max number of retrieval vertical levels
             mx_colret=1)          ! max number of retrieval columns

  INTEGER :: mx_pass
  PARAMETER (mx_pass = 10)
!
!-----------------------------------------------------------------------
!
!  ADAS control parameters
!  Input via namelist in INITADAS
!
!-----------------------------------------------------------------------
!
  INTEGER :: npass,nsngfil,nuafil,nradfil,nretfil
  INTEGER :: ccatopt,spradopt
  REAL :: sprdist,wlim,zwlim,thwlim,sfcqcrng

  COMMON /adas_parm/ npass,nsngfil,nuafil,nradfil,nretfil,              &
                     sprdist,wlim,zwlim,thwlim,sfcqcrng,                &
                     ccatopt,spradopt

  INTEGER :: raduvobs,radrhobs
  REAL :: refrh,rhradobs
  INTEGER :: radistride,radkstride
  INTEGER :: radcldopt,radqvopt,radqcopt,radqropt,radptopt
  REAL :: refsat,rhrad
  REAL :: refcld,cldrad
  INTEGER :: ceilopt
  REAL :: ceilmin,dzfill,refrain,radsetrat,radreflim,radptgain

  COMMON /adas_radopt/ raduvobs,radrhobs,refrh,rhradobs,                &
                 radistride,radkstride,                                 &
                 radcldopt,radqvopt,radqcopt,radqropt,radptopt,         &
                 refsat,rhrad,                                          &
                 refcld,cldrad,ceilopt,ceilmin,dzfill,                  &
                 refrain,radsetrat,radreflim,radptgain


  INTEGER :: cloudopt
  INTEGER :: clddiag
  REAL :: range_cld
  REAL :: refthr1,refthr2
  REAL :: hgtrefthr
  REAL :: wmhr_cu
  REAL :: wmhr_sc
  REAL :: wc_st
  INTEGER :: bgqcopt
  INTEGER :: cldqvopt
  INTEGER :: cldqcopt
  INTEGER :: cldqropt
  INTEGER :: cldwopt
  INTEGER :: cldptopt
  INTEGER :: smth_opt
  REAL :: thresh_cvr
  REAL :: rh_thr1
  REAL :: cvr2rh_thr1
  REAL :: rh_thr2
  REAL :: cvr2rh_thr2
  REAL :: frac_qw_2_pt
  REAL :: frac_qc_2_lh
  REAL :: max_lh_2_pt
  REAL :: qvslimit_2_qc
  REAL :: qrlimit
  REAL :: frac_qr_2_qc
  INTEGER :: cld_files
  COMMON /cmpcld_vars/ cloudopt,clddiag,range_cld,                      &
                        refthr1,refthr2,hgtrefthr,                      &
                        wmhr_cu,wmhr_sc,wc_st,bgqcopt,                  &
                        cldqvopt,cldqcopt,                              &
                        cldqropt,cldwopt,cldptopt,thresh_cvr,           &
                        rh_thr1,cvr2rh_thr1,rh_thr2,cvr2rh_thr2,        &
                        qvslimit_2_qc,qrlimit,frac_qr_2_qc,             &
                        frac_qw_2_pt,frac_qc_2_lh,max_lh_2_pt,          &
                        smth_opt,cld_files
!
!-----------------------------------------------------------------------
!
!  ADAS cloud analysis parameters
!
!-----------------------------------------------------------------------
!
!c Bad or no data flag.

  REAL :: r_missing     ! bad or no-data flag.
  PARAMETER (r_missing=-9999.0)
!
!c The maximum possible number of stations with cloud coverage reports.
!
  INTEGER :: max_cld_snd

  PARAMETER (max_cld_snd = 3000)
!
!c The maximum possible number of cloudy grid points in 3D domain
!c (should be about max_cld_snd*nz)
!
  INTEGER :: max_obs
  PARAMETER (max_obs = 100000)
!
!c The size for extended ADAS domain (extension for searching the
!c observations just out side the ADAS domain) ->"ADAS+ domain".

  INTEGER i_perimeter
  PARAMETER (i_perimeter = 10) ! (or 0) the extended ARPS domain
!
!c The radius of influence for the radar data interpolations.

  REAL :: ri_h, ri_v
  !wdt keep or move to ri_h = 12000.0?
  PARAMETER(ri_h = 20000.0, ri_v = 2500.0)
  !PARAMETER(ri_h = 12000.0, ri_v = 3000.0)
!
!c The refrence level (M AGL) for computing the lifting condensation
!c level

  REAL :: z_ref_lcl
  PARAMETER(z_ref_lcl = 180.0)
!
  CHARACTER (LEN=256) :: sngfname(mx_sng_file)
  CHARACTER (LEN=256) :: sngtmchk(mx_sng_file)
  CHARACTER (LEN=256) :: uafname(mx_ua_file)
  CHARACTER (LEN=256) :: radfname(mx_rad)
  CHARACTER (LEN=256) :: retfname(mx_ret)

  CHARACTER (LEN=256) :: backerrfil
  CHARACTER (LEN=256) :: blackfil
  CHARACTER (LEN=256) :: sngerrfil(nsrc_sng)
  CHARACTER (LEN=256) :: uaerrfil(nsrc_ua)
  CHARACTER (LEN=256) :: reterrfil(nsrc_ret)
  CHARACTER (LEN=256) :: raderrfil(nsrc_rad)

  COMMON /adas_fname/ sngfname,sngtmchk,uafname,radfname,retfname,      &
         backerrfil,blackfil,sngerrfil,uaerrfil,reterrfil,raderrfil

  INTEGER :: iusesng(0:nsrc_sng,mx_pass)
  INTEGER :: iuseua (0:nsrc_ua,mx_pass)
  INTEGER :: iuserad(0:nsrc_rad,mx_pass)
  INTEGER :: iuseret(0:nsrc_ret,mx_pass)

  INTEGER :: ianxtyp(mx_pass)
  REAL :: xyrange(mx_pass)
  REAL :: kpvar(mx_nvar_anx)
  REAL :: kpvrsq(mx_nvar_anx)
  REAL :: zrange(mx_pass)
  REAL :: thrng(mx_pass)
  INTEGER :: trnropt(mx_pass)
  REAL :: trnrcst(mx_pass)
  REAL :: trnrng(mx_pass)

  COMMON /adas_vars/ ianxtyp,iusesng,iuseua,iuserad,iuseret,            &
                     xyrange,kpvar,kpvrsq,zrange,thrng,                 &
                     trnropt,trnrcst,trnrng

  CHARACTER (LEN=8) :: srcsng(nsrc_sng)
  CHARACTER (LEN=8) :: srcua(nsrc_ua)
  CHARACTER (LEN=8) :: srcrad(nsrc_rad)
  CHARACTER (LEN=8) :: srcret(nsrc_ret)

  COMMON /adas_srcs/ srcsng,srcua,srcrad,srcret

  CHARACTER (LEN=256) :: incdmpf

  COMMON /adas_incfil/ incdmpf


  INTEGER :: incrdmp         ! Option to write ADAS analysis increments
                             ! to a file
                             ! = 0, Don't create increment file;
                             ! = 1, write increment file
                             !      (unformatted IEEE binary);
                             ! = 3, write HDF format increment file;

  INTEGER :: incrhdfcompr    ! HDF4 compression option for incrdmp = 3.

  INTEGER :: uincdmp,vincdmp,wincdmp,                                   &
          pincdmp,ptincdmp,qvincdmp,                                    &
          qcincdmp,qrincdmp,qiincdmp,qsincdmp,qhincdmp

  COMMON /adas_incr/ incrdmp,incrhdfcompr,                              &
          uincdmp,vincdmp,wincdmp,pincdmp,ptincdmp,                     &
          qvincdmp,qcincdmp,qrincdmp,qiincdmp,qsincdmp,qhincdmp