!-------------------------------------- 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 READSV(cdetiket) 2,8
#if defined (DOC)
*
***s/r READSV - Read in SVs for use in B matrix
*
*Author : Mark Buehner *ARMA/AES August, 2002
*
*Arguments
* -NONE-
#endif
IMPLICIT NONE
*implicits
#include "pardim.cdk"
#include "comdim.cdk"
#include "comlun.cdk"
#include "comcst.cdk"
#include "comgem.cdk"
#include "comsv.cdk"
#include "comstate.cdk"
#include "rpnstd.cdk"
*
character*8 cdetiket
INTEGER JK,JK1,ILEN,jsv,JI,JJ,KULFILE,ikey
real*8 gdin(NI,NJ)
integer vfstlir
c
WRITE(NULOUT,*) 'STARTING READSV'
call vflush
(nulout)
c
c Initialize SV array
c
DO JSV = 1, NSV
DO JJ = 1,NJ
DO JK = 1, NKGDIM
DO JI = 1,NI
SVGD(JI,JK,JJ,JSV)=0.0d0
ENDDO
ENDDO
ENDDO
ENDDO
c
c input SVs in physical space
c
KULFILE=0
IERR = FNOM(KULFILE,CFLSV,'RND',0)
IF(IERR.GE.0)THEN
IERR = FSTOUV(KULFILE,'RND')
ELSE
CALL ABORT3D
(NULOUT,'sv.fst:PROBLEM WITH FILE')
END IF
c
ip1 = -1
ip2 = -1
idateo = -1
cletiket = cdetiket
cltypvar = ' '
c
DO JSV = 1, NSV
c
write(nulout,*) 'READING IN SV #',JSV
c
clnomvar = 'UU'
DO JK = 1, NFLEV
IKEY = VFSTLIR
(GDIN,KULFILE,INI,INJ,INK,IDATEO
+ ,cletiket,nip1(jk),ip2,JSV,cltypvar,clnomvar)
DO JJ=1,NJ
DO JI=1,NI
SVGD(JI,JK+NGPOSIT(nguu)-1,JJ,JSV)=GDIN(JI,NJ+1-JJ)/(conphy(JJ)*RKNTMS)
ENDDO
ENDDO
ENDDO
c
clnomvar = 'VV'
DO JK = 1, NFLEV
IKEY = VFSTLIR
(GDIN,KULFILE,INI,INJ,INK,IDATEO
+ ,cletiket,nip1(JK),ip2,JSV,cltypvar,clnomvar)
DO JJ=1,NJ
DO JI=1,NI
SVGD(JI,JK+NGPOSIT(ngvv)-1,JJ,JSV)=GDIN(JI,NJ+1-JJ)/(conphy(JJ)*RKNTMS)
ENDDO
ENDDO
ENDDO
c
clnomvar = 'TT'
DO JK = 1, NFLEV
IKEY = VFSTLIR
(GDIN,KULFILE,INI,INJ,INK,IDATEO
+ ,cletiket,nip1(jk),ip2,JSV,cltypvar,clnomvar)
DO JJ=1,NJ
DO JI=1,NI
SVGD(JI,JK+NGPOSIT(ngtt)-1,JJ,JSV)=GDIN(JI,NJ+1-JJ)
ENDDO
ENDDO
ENDDO
c
clnomvar = 'LQ'
DO JK = 1, NFLEV
IKEY = VFSTLIR
(GDIN,KULFILE,INI,INJ,INK,IDATEO
+ ,cletiket,nip1(JK),ip2,JSV,cltypvar,clnomvar)
DO JJ=1,NJ
DO JI=1,NI
SVGD(JI,JK+NGPOSIT(ngq)-1,JJ,JSV)=GDIN(JI,NJ+1-JJ)
ENDDO
ENDDO
ENDDO
c
clnomvar = 'P0'
IKEY = VFSTLIR
(GDIN,KULFILE,INI,INJ,INK,IDATEO
+ ,cletiket,-1,ip2,JSV,cltypvar,clnomvar)
DO JJ=1,NJ
DO JI=1,NI
SVGD(JI,NGPOSIT(ngps),JJ,JSV)=GDIN(JI,NJ+1-JJ)/RPATMB
ENDDO
ENDDO
c
ENDDO
c
IERR = FSTFRM(KULFILE)
IERR = FCLOS (KULFILE)
c
write(nulout,*)'done READSV'
call vflush
(nulout)
c
RETURN
END