program sst_timeseries_1991 ! ####### change implicit none ! Declaration integer :: i,j,m,t,lo,la integer :: nlon,nlat,lon_bin,lat_bin,nlon_s,nlat_s integer :: epslon integer :: ntime,box_n character :: year_name*4,logfile*12,dir_in*60,dir_out*64 character :: outnum*3,outdate*3,tendigi*10 character :: file_name_out*16,file_in*15 integer ::res,shi,ge integer(kind=2) sst(8640,4320) integer(kind=2) sst_s(365,540,540) ! ####### change ntime = 365 ! ####### change year_name = "1991" ! ####### change epslon = 0.1 tendigi = "0123456789" lon_bin = 16 ; lat_bin = 8 nlon_s = 540 ; nlat_s = 540 logfile = "log_"//year_name//".txt" dir_in = "/nobackupp2/jli13/data/derived/pf52/data_gap/SST_daily_"//year_name//"/" dir_out = "/nobackupp2/jli13/data/derived/pf52/data_gap/time_series/sst_yr/" !---------------------------------------- i_loop : do i = 1,lat_bin j_loop : do j = 1,lon_bin open(50,file = logfile, status = 'unknown',access = 'append') write(50,*), "i =",i, " ; j =", j, " ; year = ", year_name close(50) box_n = j+lon_bin*(i-1) select case(box_n) case (:9) outnum = "00"//tendigi(box_n+1:box_n+1) case(10:99) ge = mod(box_n,10) outnum = "0"//tendigi(box_n/10+1:box_n/10+1)//tendigi(ge+1:ge+1) case(100:) res = mod(box_n,100) shi = res/10 ge = mod(res,10) outnum = tendigi(box_n/100+1:box_n/100+1)//tendigi(shi+1:shi+1)//tendigi(ge+1:ge+1) end select file_name_out = "sst_"//outnum//"_"//year_name//".dat" m=0 ! time counter, from 1 to ntime !~~~~~~~~~~~~~~~~~ t_loop : do t = 1,ntime m=m+1 select case(t) case (:9) outdate = "00"//tendigi(t+1:t+1) case(10:99) ge = mod(t,10) outdate = "0"//tendigi(t/10+1:t/10+1)//tendigi(ge+1:ge+1) case(100:) res = mod(t,100) shi = res/10 ge = mod(res,10) outdate = tendigi(t/100+1:t/100+1)//tendigi(shi+1:shi+1)//tendigi(ge+1:ge+1) end select file_in = year_name//outdate//"_sst.dat" ! read in sst data open(100,file=dir_in//file_in,form='unformatted', & access='direct',recl=8640*4320*2) ! 2 bytes read(100,rec=1) sst close(100) sst_s(m,:,:)=sst(1+nlon_s*(j-1):nlon_s+nlon_s*(j-1),1+nlat_s*(i-1):nlat_s+nlat_s*(i-1)) enddo t_loop ! write data out open(200,file=dir_out//file_name_out,form='unformatted', & access='direct',recl=ntime*2) do la = 1,nlat_s do lo = 1,nlon_s write(200,rec=lo+nlon_s*(la-1)),sst_s(:,lo,la) enddo enddo close(200) enddo j_loop enddo i_loop !---------------------------------------------------------------------- !---------------------------------------------------------------------- open(50,file = logfile, status = 'unknown',access = 'append') write(50,*) "----------------------------------------" write(50,*) "----------- Done! Byebye ---------------" write(50,*),"----------------------------------------" close(50) !---------------------------------------------------------------------- !---------------------------------------------------------------------- end program