!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
!
SUBROUTINE SUPOST 5,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
* L. Fillion *ARMA/MSC Feb 05
* . -Include LAM4D limited area analysis option.
* L. Fillion ARMA/EC May 2006: Mesovar upgrade to v10_0_0.
* L. Fillion ARMA/EC 15 Aug 2007: LAM4D upgrade to v10_0_3.
* L. Fillion ARMA/EC 4 Nov 2009: mdimppcvar(nppcnvar) contains the nb. vert. levels output for each cppcvar(jvar)...
* L. Fillion ARMA/EC 31 May 2010: Improve output of LQ and HU.
* .
*
*Arguments
* - NONE -
#endif
C
IMPLICIT NONE
#include "comct0.cdk"
#include "pardim.cdk"
#include "comdim.cdk"
#include "comlun.cdk"
#include "compost.cdk"
#include "comgrd_param.cdk"
#include "comgdpar.cdk"
C
INTEGER JLEV, IERR,jvar,ihu,itt,ivt,imin,igz,ip0,ilq
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
mdimppcvar(:) = 1
C
lanlhu2es = .false.
lswphes = .false.
rlimit_es = 30.0
C
C* 2. Read the parameters from NAMPOST
C
200 CONTINUE
C
CALL READNML
('NAMPOST',IERR)
C
CVARPOST = 'A'
NIP2 = 0
NDEET = 0
NPAS = 0
NIDATYP = 1
NPAK = -30
NSTAMP = 0101010101
!
if (grd_typ.ne.'LU') then
CGRTYP = 'G'
NIG1 = 0
NIG2 = 0
NIG3 = 0
NIG4 = 0
else
CGRTYP = cgrtypa
NIG1 = nig1t
NIG2 = nig2t
NIG3 = nig3t
NIG4 = nig4t
endif
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
mdimppcvar(:) = nflev
!
do jvar = 1,nppcvar
if(cppcvar(jvar).eq.'TG') then
mdimppcvar(jvar) = 1
endif
if(cppcvar(jvar).eq.'TB') then
mdimppcvar(jvar) = 1
endif
if(cppcvar(jvar).eq.'P0') then
ip0 = jvar
mdimppcvar(jvar) = 1
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
ilq = jvar
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
mdimppcvar(ihu) = nflev
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
mdimppcvar(nppcvar) = nflev
else
C TT is requested: make sure that TT is before HU in the list
cppcvar(max(itt,ihu)) = 'HU'
cppcvar(imin) = 'TT'
mdimppcvar(imin) = nflev
mdimppcvar(max(itt,ihu)) = nflev
endif
endif
c
if(ip0 .gt. 1) then
do jvar = ip0, 2,-1
cppcvar(jvar) = cppcvar(jvar -1)
mdimppcvar(jvar) = mdimppcvar(jvar-1)
enddo
cppcvar(1) = 'P0'
mdimppcvar(1) = 1
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 jvar = 1, NPPCVAR
WRITE(NULOUT,FMT='(4X,"VAR NO.",I3,":",2X,"CPPCVAR= ",A5,2X,"NB LEVELS= ",I3)')
S jvar,CPPCVAR(jvar),mdimppcvar(jvar)
ENDDO
WRITE(NULOUT,FMT='(4X,"LANLHU2ES=",L5,":",2X,"LSWPHES= ",L5
S ,2X,"RLIMIT_ES= ",G12.6)')
S LANLHU2ES,LSWPHES,RLIMIT_ES
RETURN
END