!-------------------------------------- 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