! Subroutine write 2-dimension X on station to GrADS ! Input: X(Nst, Nidx) - 2-dimension array stored data at Nst stations of Nidx vars ! Lat(Nst), Lon(Nst): Latitude and Logitude of Nst stations ! Station(Nst): Station name ! Out_Dir, Grads_File: Folder and grads filename in String ! Field: Varname ! RMiss: Missing value ! Output: *.dat and *ctl files ! Subroutine Write_GrADS_Stn (X, Lon, Lat, Station, Nst, Nidx, Grads_File, Out_Dir, Field, RMiss) Integer :: ivar, ist, ic, Nst, Nidx Character (Len=8) :: STID Character *(*) :: Grads_File, Out_Dir, Field Real :: X(Nst, Nidx), Lon(Nst), Lat(Nst) Character (Len=*) :: Station(Nst) Real :: RLAT, RLON, TIM, tmp, Var, RMiss 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 ',RMiss 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 !---------------------------------------------------------------------!