! Calculate SPI and write to NetCDF file for further use
! Using Monthly data only
use netcdf
Implicit None
Integer, parameter :: Nreg=7
Real, Parameter    :: Miss=-99
Logical :: status

Integer :: Nst, ist, Nidx
Real, allocatable, dimension (:)   :: StnID, Lon, Lat, Regs, XH
Real, allocatable, dimension (:,:) :: X
Character (Len=20), allocatable, dimension (:) :: Station
Character (Len=255) :: Fname
!------------------------------------------------------------------------------

   Fname="/home/tanpv/Progs/2022/Dr_VNU/RES/SPEI_Stn_VN.nc"
   Call rd_ncdf_1d (Fname, StnID, Nst, Lon, "lon")
   Deallocate (StnID)
   Call rd_ncdf_1d (Fname, StnID, Nst, Lat, "lat")  
   Deallocate (StnID)
   Call rd_ncdf_1d (Fname, StnID, Nst, Regs, "reg")  
   Deallocate (StnID)
   Call rd_ncdf_1d_Char (Fname, StnID, Nst, Station, "stname")
   Deallocate (StnID)

   Nidx=1
   Allocate (X(Nst,Nidx))
   Do ist=1,Nst; X(ist,1)=Regs(ist); Enddo
   
   Call Write_GrADS_Stn (X,Lon, Lat,  Nst, Nidx, "Stn_network", "RES/", "stn")
   
CONTAINS
!----------------------------------------------------------------------------------
Subroutine Write_GrADS_Stn (X,Lon, Lat,  Nst, Nidx, Grads_File, Out_Dir, Field)
 Integer :: ivar, ist, ic, Nst, Nidx
 Character (Len=8) :: STID
 Character *(*) :: Grads_File, Out_Dir, Field
 Real :: X(Nst, Nidx), Lon(Nst), Lat(Nst)
 Real :: RLAT, RLON, TIM, tmp, Var
 Integer :: NLEV,NFLAG
!----------------------------------------------------------------------------------

 OPEN (10,file=trim(Out_Dir)//trim(Grads_File)//'.dat',FORM='UNFORMATTED',RECORDTYPE='STREAM')
 TIM = 0.0   ! Co the bien doi tu -0.5 .. +0.5; thuong dat bang 0.
 NFLAG = 1   ! Khong doi
             ! STID: character(len=8) ==> Station name
!
 Do ivar = 1,Nidx  ! Nvar chi so, moi chi so duoc xem nhu 1 timeslice
    NLEV = 1    ! =0 o ban ghi cuoi cung cua 1 timeslice; =1 cho tat ca cac timeslice khac
    ic = 0
    Do ist=1, Nst
       ic = ic+1
       STID = Station(ist)(1:8)   ! Chi lay 8 ky tu dau tien
       RLAT = Lat(ist); RLON = Lon(ist)
       WRITE (10) STID,RLAT,RLON,TIM,NLEV,NFLAG
       Var = X(ist,ivar)
       WRITE (10) Var   ! Gia tri cua bien
    Enddo
    ! before new time:
    NLEV = 0
    WRITE (10) STID,RLAT,RLON,TIM,NLEV,NFLAG
  !  print*,"Grasd=", ic
 Enddo   ! ivar
   Close(10)
!---------------------------------------------------------------------!
!     Write control file Station data                                 !  
!---------------------------------------------------------------------!
   open  (2001,file=trim(Out_Dir)//trim(Grads_File)//'.ctl')
   write (2001,'(2A)') 'dset  ','^'//trim(Grads_File)//'.dat'
   write (2001,'(A)')  'dtype station'
   write (2001,'(2A)') 'stnmap ','^'//trim(Grads_File)//'.dat'//'.map'
   write (2001,'(A,F8.1)')  'undef   ',Miss
   write (2001,'(A)')  'title   Factor Analysis'
  write (2001,'(A,I3,1x,A)') 'tdef  ',Nidx,'linear jan1980 1mo'
!   write (2001,'(A,I3,1x,A)') 'tdef  ',1,'linear jan1980 1mo'
   write (2001,'(A)')  'vars   1'
   write (2001,'(A)')  trim(Field)//' 0 99 Factor'
   write (2001,'(A)')  'endvars'
   close (2001)
!Enddo   ! ivar
End Subroutine Write_GrADS_Stn
!------------------------------------------------------------------------------

Include "/home/tanpv/Mylibs/sub_wr_ncdf_Tan.F90"
Include "/home/tanpv/Mylibs/sub_rd_ncdf_Tan.F90"
!==============================================================================
END   ! Program

