[Fortran] 纯文本查看 复制代码
IF(HIN.LT.0.0) THEN !为非饱和状态
IF(INDEX.EQ.0) THEN !排水
DO I=1,N
IF(B(I,1).GT.BC) THEN
IA(I,1)=-1
ENDIF
IF(B(I,M).GT.BC) THEN
IA(I,M)=-1
ENDIF
ENDDO
DO J=2,M-1
DO I=1,N
IF(IA(I,J-1).EQ.-1.AND.B(I,J).GT.BC) THEN
IA(I,J)=-1
KI=I
10 KI=KI-1
IF(KI.GE.1) THEN
IF(B(KI,J).GT.BC) THEN
IA(KI,J)=-1
GOTO 10
ENDIF
ENDIF
KI=I
20 KI=KI+1
IF(KI.LE.N) THEN
IF(B(KI,J).GT.BC) THEN
IA(KI,J)=-1
GOTO 20
ENDIF
ENDIF
ENDIF
IF(IA(I,M-J+2).EQ.-1.AND.B(I,M-J+1).GT.BC) THEN
IA(I,M-J+1)=-1
KI=I
30 KI=KI-1
IF(KI.GE.1) THEN
IF(B(KI,M-J+1).GT.BC) THEN
IA(KI,M-J+1)=-1
GOTO 30
ENDIF
ENDIF
KI=I
40 KI=KI+1
IF(KI.LE.N) THEN
IF(B(KI,M-J+1).GT.BC) THEN
IA(KI,M-J+1)=-1
GOTO 40
ENDIF
ENDIF
ENDIF
ENDDO
ENDDO
ELSE !吸水
DO J=1,M
DO I=1,N
IF(B(I,J).EQ.0.0) B(I,J)=10.0
ENDDO
ENDDO
DO I=1,N
IF(B(I,1).LT.BC) THEN
IA(I,1)=1
ENDIF
IF(B(I,M).LT.BC) THEN
IA(I,M)=1
ENDIF
ENDDO
DO J=2,M-1
DO I=1,N
IF(IA(I,J-1).EQ.1.AND.B(I,J).LT.BC) THEN
IA(I,J)=1
KI=I
50 KI=KI-1
IF(KI.GE.1) THEN
IF(B(KI,J).LT.BC) THEN
IA(KI,J)=1
GOTO 50
ENDIF
ENDIF
KI=I
60 KI=KI+1
IF(KI.LE.N) THEN
IF(B(KI,J).LT.BC) THEN
IA(KI,J)=1
GOTO 60
ENDIF
ENDIF
ENDIF
IF(IA(I,M-J+2).EQ.1.AND.B(I,M-J+1).LT.BC) THEN
IA(I,M-J+1)=1
KI=I
70 KI=KI-1
IF(KI.GE.1) THEN
IF(B(KI,M-J+1).LT.BC) THEN
IA(KI,M-J+1)=1
GOTO 70
ENDIF
ENDIF
KI=I
80 KI=KI+1
IF(KI.LE.N) THEN
IF(B(KI,M-J+1).LT.BC) THEN
IA(KI,M-J+1)=1
GOTO 80
ENDIF
ENDIF
ENDIF
ENDDO
ENDDO
DO J=1,M
DO I=1,N
IF(B(I,J).EQ.10.0) THEN
B(I,J)=0.0
IA(I,J)=-1 !接触局域假设为充气
ENDIF
ENDDO
ENDDO
ENDIF
ENDIF