MODULE VARySV

USE VAR_SV, ONLY: klonv, nsol, nsno


IMPLICIT NONE

! +
      INTEGER, DIMENSION(:),SAVE,ALLOCATABLE ::   NLaysv  ! New   Snow     Layer   Switch   
!$OMP THREADPRIVATE(NLaysv)
      INTEGER, DIMENSION(:),SAVE,ALLOCATABLE ::   i_thin  ! Index of the thinest Layer      
!$OMP THREADPRIVATE(i_thin)
      INTEGER, DIMENSION(:),SAVE,ALLOCATABLE ::   LIndsv  ! Contiguous Layer relative Index
!$OMP THREADPRIVATE(LIndsv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   albisv  ! Integrated Surface Albedo
!$OMP THREADPRIVATE(albisv)
      !hj prelim                                            
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   alb1sv  ! Surface Albedo VIS      
!$OMP THREADPRIVATE(alb1sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   alb2sv  ! Surface Albedo NIR      
!$OMP THREADPRIVATE(alb2sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   alb3sv  ! Surface Albedo FIR      
!$OMP THREADPRIVATE(alb3sv)
      REAL, DIMENSION(:,:),SAVE,ALLOCATABLE  ::   alb6sv  ! 6 band-albedo    
!$OMP THREADPRIVATE(alb6sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   albssv  ! Soil               Albedo [-]   
!$OMP THREADPRIVATE(albssv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   SoSosv  !? Surface Absorbed Solar Radiat.  
!$OMP THREADPRIVATE(SoSosv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   Eso_sv  !? Emissivity of       Soil+Snow   
!$OMP THREADPRIVATE(Eso_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   HSv_sv  ! Sensible Heat Flux  [W/m2]      
!$OMP THREADPRIVATE(HSv_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   HLv_sv  ! Latent   Heat Flux  [W/m2]      
!$OMP THREADPRIVATE(HLv_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   HSs_sv  !? Sensible Heat Flux (t)          
!$OMP THREADPRIVATE(HSs_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   HLs_sv  !? Latent   Heat Flux (t)          
!$OMP THREADPRIVATE(HLs_sv) 
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   sqrCm0  ! in Neutral Drag Coef.Moment.    
!$OMP THREADPRIVATE(sqrCm0)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   sqrCh0  ! in Neutral Drag Coef.Heat       
!$OMP THREADPRIVATE(sqrCh0)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   Lx_H2O  ! Latent Heat of Vaporiz./Sublim. 
!$OMP THREADPRIVATE(Lx_H2O)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   ram_sv  ! Aerodyn.Resistance (Moment.)    
!$OMP THREADPRIVATE(ram_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   rah_sv  ! Aerodyn.Resistance (Heat)       
!$OMP THREADPRIVATE(rah_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   Fh__sv  ! Stability Function              
!$OMP THREADPRIVATE(Fh__sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   dFh_sv  ! Stability Function (Deriv.)     
!$OMP THREADPRIVATE(dFh_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   Evp_sv  !x Evaporation        [kg/m2]      
!$OMP THREADPRIVATE(Evp_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   EvT_sv  !x Evapotranspiration [kg/m2]      
!$OMP THREADPRIVATE(EvT_sv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   LSdzsv  ! Land/Sea Vert. Discretiz. Fact. 
!$OMP THREADPRIVATE(LSdzsv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   Tsrfsv  ! Surface    Temperature          
!$OMP THREADPRIVATE(Tsrfsv)
      REAL,SAVE,ALLOCATABLE  ::   sEX_sv(:,:)  ! Verticaly Integr.Extinct.Coef.  
!$OMP THREADPRIVATE(sEX_sv)
      REAL,SAVE,ALLOCATABLE  ::   zzsnsv(:,:)    ! Snow  Pack Thickness      [m]   
!$OMP THREADPRIVATE(zzsnsv)
      REAL,SAVE,ALLOCATABLE  ::   psi_sv(:,:)    ! Soil   Water        Potential   
!$OMP THREADPRIVATE(psi_sv)
      REAL,SAVE,ALLOCATABLE  ::   Khydsv(:,:)    ! Soil   Hydraulic    Conductiv.  
!$OMP THREADPRIVATE(Khydsv)
      REAL, DIMENSION(:),SAVE,ALLOCATABLE    ::   EExcsv  ! Energy in Excess, current       
!$OMP THREADPRIVATE(EExcsv)

CONTAINS
  SUBROUTINE INIT_VARySV
  IMPLICIT NONE
      INTEGER                ::   ikl

      ALLOCATE(NLaysv(klonv))  ! New   Snow     Layer   Switch   
      ALLOCATE(i_thin(klonv))  ! Index of the thinest Layer      
      ALLOCATE(LIndsv(klonv))  ! Contiguous Layer relative Index
      ALLOCATE(albisv(klonv))  ! Integrated Surface Albedo
      !hj prelim                                            
      ALLOCATE(alb1sv(klonv))  ! Surface Albedo VIS      
      ALLOCATE(alb2sv(klonv))  ! Surface Albedo NIR      
      ALLOCATE(alb3sv(klonv))  ! Surface Albedo FIR       
      ALLOCATE(alb6sv(klonv,6))! 6-band  Albedo      

      ALLOCATE(albssv(klonv))  ! Soil               Albedo [-]   
      ALLOCATE(SoSosv(klonv))  !? Surface Absorbed Solar Radiat.  
      ALLOCATE(Eso_sv(klonv))  !? Emissivity of       Soil+Snow   
      ALLOCATE(HSv_sv(klonv))  ! Sensible Heat Flux  [W/m2]      
      ALLOCATE(HLv_sv(klonv))  ! Latent   Heat Flux  [W/m2]      
      ALLOCATE(HSs_sv(klonv))  !? Sensible Heat Flux (t)          
      ALLOCATE(HLs_sv(klonv))  !? Latent   Heat Flux (t)     
      ALLOCATE(sqrCm0(klonv))  ! in Neutral Drag Coef.Moment.    
      ALLOCATE(sqrCh0(klonv))  ! in Neutral Drag Coef.Heat       
      ALLOCATE(Lx_H2O(klonv))  ! Latent Heat of Vaporiz./Sublim. 
      ALLOCATE(ram_sv(klonv))  ! Aerodyn.Resistance (Moment.)    
      ALLOCATE(rah_sv(klonv))  ! Aerodyn.Resistance (Heat)       
      ALLOCATE(Fh__sv(klonv))  ! Stability Function              
      ALLOCATE(dFh_sv(klonv))  ! Stability Function (Deriv.)     
      ALLOCATE(Evp_sv(klonv))  !x Evaporation        [kg/m2]      
      ALLOCATE(EvT_sv(klonv))  !x Evapotranspiration [kg/m2]      
      ALLOCATE(LSdzsv(klonv))  ! Land/Sea Vert. Discretiz. Fact. 
      ALLOCATE(Tsrfsv(klonv))  ! Surface    Temperature          
      ALLOCATE(sEX_sv(klonv,-nsol:nsno+1))  ! Verticaly Integr.Extinct.Coef.  
      ALLOCATE(zzsnsv(klonv,    0:nsno))    ! Snow  Pack Thickness      [m]   
      ALLOCATE(psi_sv(klonv,-nsol:0   ))    ! Soil   Water        Potential   
      ALLOCATE(Khydsv(klonv,-nsol:0   ))    ! Soil   Hydraulic    Conductiv.  
      ALLOCATE(EExcsv(klonv))  ! Energy in Excess, current         

      DO ikl=1,klonv

      NLaysv(ikl) =0.
      i_thin(ikl) =0.
      LIndsv(ikl) =0.
      albisv(ikl) =0.
      alb1sv(ikl) =0. 
      alb2sv(ikl) =0.   
      alb3sv(ikl) =0.
      alb6sv(ikl,:)=0.
      albssv(ikl) =0.
      SoSosv(ikl) =0.
      Eso_sv(ikl) =0.
      HSv_sv(ikl) =0.   
      HLv_sv(ikl) =0.
      HSs_sv(ikl) =0.       
      HLs_sv(ikl) =0.
      sqrCm0(ikl) =0.   
      sqrCh0(ikl) =0.    
      Lx_H2O(ikl) =0.
      ram_sv(ikl) =0.
      rah_sv(ikl) =0.
      Fh__sv(ikl) =0.      
      dFh_sv(ikl) =0.
      Evp_sv(ikl) =0.
      EvT_sv(ikl) =0.
      LSdzsv(ikl) =0.
      Tsrfsv(ikl) =0.
      sEX_sv(ikl,:)  =0.
      zzsnsv(ikl,:)  =0.
      psi_sv(ikl,:)  =0. 
      Khydsv(ikl,:)  =0. 
      EExcsv(ikl)  =0.    


      END DO

  END SUBROUTINE INIT_VARySV

END MODULE VARySV

