📄 grid.f90
字号:
PROGRAM MAIN
INTEGER::NUM_X,NUM_Y,IUNIT
REAL::X_BEGIN,X_END,Y_BEGIN,Y_END
CHARACTER(LEN=*)::FILENAME
PARAMETER(NUM_X=560,NUM_Y=200,X_BEGIN=1E0,X_END=560E0,Y_BEGIN=1E0,Y_END=200E0,IUNIT=2,FILENAME='H1H')
DIMENSION Z(560,200)
REAL::Z
OPEN(UNIT=1,FILE='D:\DAT\21.DAT',STATUS='OLD')
DO 2 N=1,NUM_Y
DO 1 M=1,NUM_X
READ(1,*) M,N,Z(M,N)
1 CONTINUE
2 CONTINUE
CLOSE(1)
CALL WR_SURFER_GRID(NUM_X,NUM_Y,X_BEGIN,X_END,Y_BEGIN,Y_END,Z,IUNIT,FILENAME)
PAUSE
END
! WRITE GOLDEN SOFTWARE SURFER 8.0 GRID FORMAT DATA BY ASCII (3D)
! NUM_X,NUM_Y=NUMBER IN X AND Y DIRECTION RESPECTIVELY
! X_BEGIN,X_END,Y_BEGIN,Y_END=THE BEGIN AND END VALUE IN X AND Y DIRECTION RESPECTIVELY
! Z(NUM_X,NUM_Y)=Z VALUE AT GRID X AND Y POINT( NUM_X,NUM_Y MUST IN ASCENDING ORDER)
! IUNIT,FILENAME=OPEN FILE UNIT AND NAME TO WRITE THE 3D DATA
! BLANKVALUE= OPTIONAL PARAMETER, IF PRESENT, THEN CHANGE BLANKVALUE TO SURFER DEFAULT
!VALUE 2.0E38
SUBROUTINE WR_SURFER_GRID(NUM_X,NUM_Y,X_BEGIN,X_END,Y_BEGIN,Y_END,Z,IUNIT,FILENAME)
IMPLICIT NONE
INTEGER,INTENT(IN):: NUM_X,NUM_Y,IUNIT
REAL,INTENT(IN)::X_BEGIN,X_END,Y_BEGIN,Y_END,Z(NUM_X,NUM_Y)
CHARACTER(LEN=*),INTENT(IN)::FILENAME
INTEGER I,J
REAL ZMIN,ZMAX,BLANKVALUE_SURFER
close(iunit)
open(IUNIT,file=FILENAME//'.dat.grd')
WRITE(iuNit,'(4A)') 'DSAA'
WRITE(iunit,*) NUM_X,NUM_Y
WRITE(iunit,*) X_BEGIN,X_END
WRITE(iunit,*) Y_BEGIN,Y_END
ZMIN=1.0E38; ZMAX=-1.0E38
do j=1,NUM_Y;do i=1,NUM_X
IF(Z(I,J)>=ZMAX) ZMAX=Z(I,J)
IF(Z(I,J)<=ZMIN) ZMIN=Z(I,J)
ENDDO;ENDDO
WRITE(IUNIT,*) ZMIN,ZMAX
do j=1,NUM_Y;do i=1,NUM_X
BLANKVALUE_SURFER=2.0E38 ! SURFER8 DEFAULT BLANK VALUE
WRITE(IUNIT,*) Z(I,J)
ENDDO;ENDDO
close(IUNIT)
PRINT *, ''
PRINT *, 'Output data to File : ', FILENAME//'.dat.grd'
PRINT *, ''
END SUBROUTINE WR_SURFER_GRID
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -