!--------------------------------------------------------------------------------
Subroutine Read_PDSI_nc (FName)
Character (Len=*) :: FName
Real, Allocatable, Dimension (:) :: tmplon, tmplat, tmpTime
Real, Allocatable, Dimension (:,:,:) :: Temp, Preci
Integer :: Nlatmp, Nlotmp, Ntmp
Character (Len=50) :: VarName

VarName="ori_pdsi"
Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, Dr_IDX_Tmp, trim(VarName))
!Allocate (Xlon(Nlotmp), Xlat(Nlatmp), Xtime(Ntmp))
!Xlon(:)=tmplon(:); Xlat(:)=tmplat(:); Xtime(:)=tmpTime(:); Ntime=Ntmp; Nlon=Nlotmp; Nlat=Nlatmp
Deallocate (tmplon, tmplat, tmpTime)

if (Allocated(Temp)) Deallocate(Temp); if (Allocated(Preci)) Deallocate(Preci)
Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, Temp, "T2m")
Deallocate (tmplon, tmplat, tmpTime)
Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, Preci, "Pr")
Deallocate (tmplon, tmplat, tmpTime)
T2m(1:Nlon,1:Nlat,1:Ntime)=Temp(1:Nlon,1:Nlat,1:Ntime); Precip(1:Nlon,1:Nlat,1:Ntime)=Preci(1:Nlon,1:Nlat,1:Ntime)

!VarName="ori_wplm"
!Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, WPLM, trim(VarName))
!Deallocate (tmplon, tmplat, tmpTime)
!VarName="ori_zind"
!Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, ZIND, trim(VarName))
!Deallocate (tmplon, tmplat, tmpTime)

!VarName="sel_pdsi"
!Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, scPDSI, trim(VarName))
!Deallocate (tmplon, tmplat, tmpTime)
!VarName="sel_wplm"
!Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, scWPLM, trim(VarName))
!Deallocate (tmplon, tmplat, tmpTime)
!VarName="sel_zind"
!Call rd_ncdf_3d (trim(FName), tmplon, tmplat, tmpTime, Nlotmp, Nlatmp, Ntmp, scZIND, trim(VarName))
!Deallocate (tmplon, tmplat, tmpTime)
End Subroutine Read_PDSI_nc
!--------------------------------------------------------------------------------
Subroutine Read_SPI_nc (FName)
Character (Len=*) :: FName
Real, Allocatable, Dimension (:) :: Lon, Lat, Time
Integer ::  Nlon1, Nlat1, Nt

!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI01, "SPI_01")
!Xlon(:)=lon(:); Xlat(:)=lat(:); Xtime(:)=Time(:); Ntime=Nt; Nlon=Nlon1; Nlat=Nlat1
!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI03, "SPI_03")
!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI06, "SPI_06")
!Deallocate (Lon, Lat, Time)

Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, Dr_IDX_Tmp, "SPI_12")

!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, Precip, "Precip")
!Deallocate (Lon, Lat, Time)
End Subroutine Read_SPI_nc
!--------------------------------------------------------------------------------
Subroutine Read_SPEI_nc (FName)
Character (Len=*) :: FName
Real, Allocatable, Dimension (:) :: Lon, Lat, Time
Integer ::  Nlon1, Nlat1, Nt

!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI01,
!"SPI_01")
!Xlon(:)=lon(:); Xlat(:)=lat(:); Xtime(:)=Time(:); Ntime=Nt; Nlon=Nlon1;
!Nlat=Nlat1
!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI03,
!"SPI_03")
!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, SPI06,
!"SPI_06")
!Deallocate (Lon, Lat, Time)

Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, Dr_IDX_Tmp, "SPI_12")

!Deallocate (Lon, Lat, Time)
!Call rd_ncdf_3d (trim(FName), Lon, Lat, Time, Nlon1, Nlat1, Nt, Precip,
!"Precip")
!Deallocate (Lon, Lat, Time)
End Subroutine Read_SPEI_nc
!-----------------------------------------------------------------------------

