PROGRAM MAIN ! ! Example of reading cell corner locations from individual face files. ! A single cell is a quadrilateral with corner points A,B,C,D. ! ! D ( xg(i,j+1), yg(i,j+1) ) C ( xg(i+1,j+1), yg(i+1,j+1) ) ! ! ! A ( xg(i,j), yg(i,j) ) B ( xg(i+1,j), yg(i+1,j) ) ! ! For spherical polar coordinate system xg is longitude (with -179.99999,180.0 range) and ! yg is latitude (-90,90). ! IMPLICIT NONE INTEGER IUNIT REAL*8, ALLOCATABLE :: XG(:,:), YG(:,:) INTEGER NX, NY INTEGER WORDLEN ! gfortran needs wordlen = 8 for real*8 ! to compile: gfortran -fconvert=big-endian read_face_corner_coords.F90 WORDLEN = 8 ! ifort 9 needs wordlen = 8 for real*8 ! to compile: ifort -convert big_endian read_face_corner_coords.F90 ! WORDLEN = 8 IUNIT = 11 NX = 511 NY = 511 ALLOCATE(XG(NX,NY)) ALLOCATE(YG(NX,NY)) OPEN(UNIT=IUNIT, FILE='tile001.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) OPEN(UNIT=IUNIT, FILE='tile002.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) OPEN(UNIT=IUNIT, FILE='tile003.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) OPEN(UNIT=IUNIT, FILE='tile004.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) OPEN(UNIT=IUNIT, FILE='tile005.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) OPEN(UNIT=IUNIT, FILE='tile006.mitgrid', & ACCESS='DIRECT', RECL=NX*NY*WORDLEN,STATUS='OLD') READ(IUNIT,REC=6) XG READ(IUNIT,REC=7) YG PRINT *, 'MAXVAL(XG), MINVAL(XG) = ', MAXVAL(XG), MINVAL(XG) PRINT *, 'MAXVAL(YG), MINVAL(YG) = ', MAXVAL(YG), MINVAL(YG) CLOSE(IUNIT) END