c ********************************************************** program interpolate c ********************************************************** c Read a 360x180 file and interpolate the values to a c 180x90 grid. dimension nb(360,180),ns(180,90) character*50 infile,outfile character*30 infrmt,outfrmt character*80 header write (*,*) ' ' write (*,*) ' Enter name of 360x180 input file: ' write (*,*) ' ' read (*,17) infile 17 format (a) write (*,*) ' ' write (*,*) ' Enter input format of 360x180 file, ' write (*,*) ' e.g. (f8.2) or (180i1): ' write (*,*) ' ' read (*,17) infrmt write (*,*) ' ' write (*,*) ' Enter name of 180x90 output file: ' write (*,*) ' ' read (*,17) outfile write (*,*) ' ' write (*,*) ' Enter output format of 180x90 file, ' write (*,*) ' e.g. (f8.2) or (180i1): ' write (*,*) ' ' read (*,17) outfrmt open (7,file=infile,status='old') read (7,18) header 18 format (a80) do 40 j=1,180,1 read (7,infrmt) (nb(i,j),i=1,360,1) 40 continue open (8,file=outfile,status='new',recl=4000) c Interpolate 360x180 field to 180x90 with values ranging from c 89, 87, ... , -89 deg. lat. and -179, -177, ..., 179 deg. lon. do 970 j=1,90,1 do 970 i=1,180,1 ns(i,j) = 0.25*( float(nb(2*i-1,2*j-1)) + & float(nb(2*i,2*j-1)) + & float(nb(2*i-1,2*j)) + & float(nb(2*i,2*j)) ) 970 continue write (8,18) header do 980 j=1,90,1 write (8,outfrmt) (ns(i,j),i=1,180,1) 980 continue stop end