对fortran代码进行格式化,增强可读性,支持f90,for
格式化之前的代码
DO 1200 L=1,NUMROK
READ(20,*) I1,I2,J1,J2,K1,K2,IVAL
WRITE(IOCODE,1150) I1,I2,J1,J2,K1,K2,IVAL
DO 1200 K=K1,K2
DO 1200 J=J1,J2
DO 1200 I=I1,I2
IROCK(I,J,K)=IVAL
1200 CONTINUE
1500 WRITE(IOCODE,1600)
DO 1700 K=1,KK
WRITE(IOCODE,1650) K
DO 1700 J=1,JJ
IF(NUMROK.EQ.0) READ(20,*) (IROCK(I,J,K),I=1,II)
WRITE(IOCODE,1675) (IROCK(I,J,K),I=1,II)
1700 CONTINUE
2000 CONTINUE
IF(NPVT.LE.1) GO TO 3000
READ(20,1)
READ(20,*) NUMPVT
IF(NUMPVT.EQ.0) GO TO 2500
WRITE(IOCODE,2100)
DO 2200 L=1,NUMPVT
READ(20,*) I1,I2,J1,J2,K1,K2,IVAL
WRITE(IOCODE,1150) I1,I2,J1,J2,K1,K2,IVAL
DO 2200 K=K1,K2
DO 2200 J=J1,J2
DO 2200 I=I1,I2
IPVT(I,J,K)=IVAL
2200 CONTINUE
2500 WRITE(IOCODE,2600)
DO 2700 K=1,KK
WRITE(IOCODE,1650) K
DO 2700 J=1,JJ
IF(NUMPVT.EQ.0) READ(20,*) (IPVT(I,J,K),I=1,II)
WRITE(IOCODE,1675) (IPVT(I,J,K),I=1,II)
2700 CONTINUE
3000 CONTINUE
1100 FORMAT(//T15,'***** ROCK REGION MODIFICATIONS *****',
& //T15,' I1 I2 J1 J2 K1 K2 IROCK')
1150 FORMAT(15X,6I4,3X,I3)
1600 FORMAT(//T15,'***** ROCK REGION DISTRIBUTION *****',/)
1650 FORMAT(/1X,'K =',I4/)
1675 FORMAT(1X,20I6)
2100 FORMAT(//T15,'***** PVT REGION MODIFICATIONS *****',
& //T15,' I1 I2 J1 J2 K1 K2 IPVT')
2600 FORMAT(//T15,'***** PVT REGION DISTRIBUTION *****',/)
C**** RELATIVE PERMEABILITY & CAPILLARY PRESSURE TABLE
DO 10 NR=1,NROCK
READ(20,1)
WRITE(IOCODE,7) NR
DO 5 I=1, 25
READ(20,*) SAT(NR,I),KROT(NR,I),KRWT(NR,I),KRGT(NR,I),
& KROGT(NR,I),PCOWT(NR,I),PCGOT(NR,I)
WRITE(IOCODE,21)SAT(NR,I),KROT(NR,I),KRWT(NR,I),KRGT(NR,I),
& KROGT(NR,I),PCOWT(NR,I),PCGOT(NR,I)
IF(SAT(NR,I).GE.1.0001)GO TO 9
5 CONTINUE
9 MSAT(NR)=I
READ(20,1)
READ(20,*) ITHREE(NR),SWR(NR)
IF(ITHREE(NR).EQ.0) WRITE(IOCODE,92) SWR(NR)
IF(ITHREE(NR).GT.0) WRITE(IOCODE,94) SWR(NR)
92 FORMAT(//,10X,'THE THREE-PHASE REL. PERM. CALC. IS NOT USED.',
& /,10X,'IRREDUCIBLE WATER SATURATION IS ',F6.4)
94 FORMAT(//,10X,'THE THREE-PHASE REL. PERM. CALC. IS USED.',
& /,10X,'IRREDUCIBLE WATER SATURATION IS ',F6.4)
10 CONTINUE
格式化之后的代码
DO 1200 L=1,NUMROK
READ(20,*) I1,I2,J1,J2,K1,K2,IVAL
WRITE(IOCODE,1150) I1,I2,J1,J2,K1,K2,IVAL
DO 1200 K=K1,K2
DO 1200 J=J1,J2
DO 1200 I=I1,I2
IROCK(I,J,K)=IVAL
1200 CONTINUE
1500 WRITE(IOCODE,1600)
DO 1700 K=1,KK
WRITE(IOCODE,1650) K
DO 1700 J=1,JJ
IF(NUMROK.EQ.0) READ(20,*) (IROCK(I,J,K),I=1,II)
WRITE(IOCODE,1675) (IROCK(I,J,K),I=1,II)
1700 CONTINUE
2000 CONTINUE
IF(NPVT.LE.1) GO TO 3000
READ(20,1)
READ(20,*) NUMPVT
IF(NUMPVT.EQ.0) GO TO 2500
WRITE(IOCODE,2100)
DO 2200 L=1,NUMPVT
READ(20,*) I1,I2,J1,J2,K1,K2,IVAL
WRITE(IOCODE,1150) I1,I2,J1,J2,K1,K2,IVAL
DO 2200 K=K1,K2
DO 2200 J=J1,J2
DO 2200 I=I1,I2
IPVT(I,J,K)=IVAL
2200 CONTINUE
2500 WRITE(IOCODE,2600)
DO 2700 K=1,KK
WRITE(IOCODE,1650) K
DO 2700 J=1,JJ
IF(NUMPVT.EQ.0) READ(20,*) (IPVT(I,J,K),I=1,II)
WRITE(IOCODE,1675) (IPVT(I,J,K),I=1,II)
2700 CONTINUE
3000 CONTINUE
1100 FORMAT(//T15,'***** ROCK REGION MODIFICATIONS *****',
& //T15,' I1 I2 J1 J2 K1 K2 IROCK')
1150 FORMAT(15X,6I4,3X,I3)
1600 FORMAT(//T15,'***** ROCK REGION DISTRIBUTION *****',/)
1650 FORMAT(/1X,'K =',I4/)
1675 FORMAT(1X,20I6)
2100 FORMAT(//T15,'***** PVT REGION MODIFICATIONS *****',
& //T15,' I1 I2 J1 J2 K1 K2 IPVT')
2600 FORMAT(//T15,'***** PVT REGION DISTRIBUTION *****',/)
C**** RELATIVE PERMEABILITY & CAPILLARY PRESSURE TABLE
DO 10 NR=1,NROCK
READ(20,1)
WRITE(IOCODE,7) NR
DO 5 I=1, 25
READ(20,*) SAT(NR,I),KROT(NR,I),KRWT(NR,I),KRGT(NR,I),
& KROGT(NR,I),PCOWT(NR,I),PCGOT(NR,I)
WRITE(IOCODE,21)SAT(NR,I),KROT(NR,I),KRWT(NR,I),KRGT(NR,I),
& KROGT(NR,I),PCOWT(NR,I),PCGOT(NR,I)
IF(SAT(NR,I).GE.1.0001)GO TO 9
5 CONTINUE
9 MSAT(NR)=I
READ(20,1)
READ(20,*) ITHREE(NR),SWR(NR)
IF(ITHREE(NR).EQ.0) WRITE(IOCODE,92) SWR(NR)
IF(ITHREE(NR).GT.0) WRITE(IOCODE,94) SWR(NR)
92 FORMAT(//,10X,'THE THREE-PHASE REL. PERM. CALC. IS NOT USED.',
& /,10X,'IRREDUCIBLE WATER SATURATION IS ',F6.4)
94 FORMAT(//,10X,'THE THREE-PHASE REL. PERM. CALC. IS USED.',
& /,10X,'IRREDUCIBLE WATER SATURATION IS ',F6.4)
10 CONTINUE