SUBROUTINE SUPOST 2,1
#if defined (DOC)
*
***s/r SUPOST  - initialize the post-processing of the model state
*     .
*
*Author  : P. Gauthier *ARMA/AES  Sept. 20, 1993
*Revision: C. Charette *ARMA/AES  Jan 96
*     .       -Initialize RPN standard file parameters
*           C. Charette *ARMA/AES  Jan 96
*     .       -Documented the compulsary and diagnostic variables
*              available for each mode of execution of the 3dvar
*           Y. Yang Apri. 2004
*              Added parameters for species. To be read in from the namelist.
*     .
*
*Arguments
*     - NONE -
#endif
C
      IMPLICIT NONE
#include "pardim.cdk"
#include "comdim.cdk"
#include "comlun.cdk"
#include "compost.cdk"
C
      INTEGER JLEV, IERR,jvar,ihu,itt,ivt,imin,igz,ip0
      WRITE(NULOUT,FMT=9000)
 9000 FORMAT(//,1X,6("***********")
     S     ,/,6X,'SUPOST:  initialization of postprocessing'
     S     ,1X,6("***********"))
C
C*    1. Set default values
C
 100  CONTINUE
      DO JLEV = 1, NFLEV
         NPPLEV(JLEV) = 0
      END DO
C
*----------------------------------------------------------------
*      CVCORD = 'PRESS'
*      COMPULSARY VARIALBES:'UU','VV','GZ','ES'
*      DIAGNOSTIC VARIABLES:'PP','CC','QR','QQ','DD','ZB','ZU'
*----------------------------------------------------------------
*      CVCORD = 'ETAGE' .AND. CHUM = 'LQ'
*      COMPULSARY VARIALBES:'UU','VV','TT','HU','P0','LQ'
*      DIAGNOSTIC VARIABLES:'GZ','ES','VT','QR','DD','QQ','PP','CC',
*                           'TB','TU','ZB','ZU' 'PB','PU'
*
*-----------------------------------------------------------------
*      CVCORD = 'ETAGE' .AND. CHUM = 'ES'
*      COMPULSARY VARIALBES:'UU','VV','TT','HU','P0','ES'
*      DIAGNOSTIC VARIABLES:'GZ','VT','QR','DD','QQ','PP','CC',
*                           'TB','TU','ZB','ZU' 'PB','PU'
*
*-----------------------------------------------------------------
*     CVCORD = 'PRESS' DEFAULT VALUES
      do jlev = 1,JPNFLEV
        NPPLEV(jlev)  =  0
      enddo

      NPPCVAR=13
      CPPCVAR(1) = 'UU'
      CPPCVAR(2) = 'VV'
      CPPCVAR(3) = 'TT'
      CPPCVAR(4) = 'LQ'
      CPPCVAR(5) = 'P0'
      CPPCVAR(6) = 'TG'
      CPPCVAR(7) = 'HU'
      CPPCVAR(8) = 'GZ'
      CPPCVAR(9) = 'ES'
      CPPCVAR(10)= 'QR'
      CPPCVAR(11)= 'DD'
      CPPCVAR(12)= 'VT'
      CPPCVAR(13)= 'QQ'
      CPPCVAR(14)= 'PP'
      CPPCVAR(15)= 'CC'
      CPPCVAR(16)= 'TB'
      CPPCVAR(17)= 'TU'
      CPPCVAR(18)= 'ZB'
      CPPCVAR(19)= 'ZU'
      CPPCVAR(20)= 'PB'
      NPPLEV(1)  =  -1
C
      lanlhu2es = .false.
      lswphes   = .false.
      rlimit_es  = 30.0
C
C     Those related to species
C
      NPPCHEM = 0
      CPPCHEM = ''
C
C*    2. Read the parameters from NAMPOST
C
 200  CONTINUE
C
      CALL READNML('NAMPOST',IERR)
C
      CVARPOST   = 'A'
      CGRTYP     = 'G'
      NIP2       =  0
      NDEET      =  0
      NPAS       =  0
      NIG1       =  0
      NIG2       =  0
      NIG3       =  0
      NIG4       =  0
      NIDATYP    =  1
      NPAK       =  -30
      NSTAMP     =  0101010101
C
C*    3. Define the levels at which postprocessing is to occur
C
 300  CONTINUE
C
c reordering cppcvar for dependent variables in varout.ftn
c
      ip0 = 0
      ihu = 0
      itt = 0
      ivt = 0
      lttout = .false.
      lhuout = .false.
      lolqout= .false.
      lgzout = .false.
c
      do jvar = 1,nppcvar
        if(cppcvar(jvar).eq.'P0') then
          ip0 = jvar
        endif
        if(cppcvar(jvar).eq.'TT') then
          itt = jvar
          lttout = .true.
        endif
        if(cppcvar(jvar).eq.'GZ') then
          igz = jvar
          lgzout = .true.
        endif
        if(cppcvar(jvar).eq.'HU') then
          ihu = jvar
          lhuout = .true.
        endif
        if(cppcvar(jvar).eq.'VT') then
          ivt = jvar
          lvtout = .true.
        endif
        if(cppcvar(jvar).eq.'LQ') then
          lolqout = .true.
        endif
      enddo
c
      if((lgzout.or.lvtout).and.ihu.eq.0) then
c Make sure that HU is part of the list
        ihu = nppcvar+1
        cppcvar(ihu) = 'HU'
        nppcvar = ihu
      endif
c
      if(ihu.ne.0) then
c Make sure that TT is part of the list
        imin = min(itt,ihu)
        if (imin.eq.0) then
c TT is not requested: put it in the list before HU
          cppcvar(ihu) = 'TT'
          cppcvar(nppcvar+1) = 'HU'
          nppcvar = nppcvar + 1
        else
C TT is requested: make sure that TT is before HU in the list
          cppcvar(max(itt,ihu)) = 'HU'
          cppcvar(imin) = 'TT'
        endif
      endif
c
      if(ip0 .gt. 1) then
        do jvar = ip0, 2,-1
          cppcvar(jvar) = cppcvar(jvar -1)
        enddo
        cppcvar(1) = 'P0'
      endif
c
      IF(NPPLEV(1).EQ.-1) THEN
         DO JLEV = 1, NFLEV
            NPPLEV(JLEV) = 1
         END DO
      END IF
C
C
C*     4. Print the values
C
 400  CONTINUE
C
      DO JLEV = 1, NPPCVAR
        WRITE(NULOUT,FMT='(4X,"VAR NO.",I3,":",2X,"CPPCVAR= ",A5)')
     S        JLEV,CPPCVAR(JLEV)
      ENDDO
         WRITE(NULOUT,FMT='(4X,"LANLHU2ES=",L5,":",2X,"LSWPHES= ",L5
     S     ,2X,"RLIMIT_ES= ",G12.6)')
     S      LANLHU2ES,LSWPHES,RLIMIT_ES
      RETURN
      END