C C generatefiles.f - Generates files: INPUT_'//NAME//'.PCG.txt C INPUT_'//NAME//'.OC.txt C INPUT_'//NAME//'.GR3.txt C INPUT_'//NAME//'.ZONES.txt C INPUT_'//NAME//'.WEL.txt C INPUT_'//NAME//'.INP.txt C INPUT_'//NAME//'.OPT.txt C C for computer program MODOPTIM C PARAMETER (NCOL=150, NSETS=20) C DIMENSION DISTANCE(NSETS), ALTITUDE(NSETS) DIMENSION TIMEBEG(NSETS), DRAWBEG(NSETS), WEIGHT(NSETS) DIMENSION TIEMPO(5000), DRAW(5000) DIMENSION THKCOL(NCOL), THKROW(1000), ROWALT(1000) DIMENSION HUNIT(7), HUNITHK(7), HSAVE(7) DIMENSION RMU08(8), RMU12(12), RMU16(16) DIMENSION RMU20(20) DIMENSION RSTO08(8), RSTO12(12), RSTO16(16) DIMENSION RSTO20(20) C REAL ABS, ALFA, ATAN REAL BOTLFA, DELTA, G REAL GP, QDIS, RADMAX REAL TMULT, TEMP2 REAL RKICU, RKMSCU, RKUFA REAL RKLFA, RKWEL, SPESTO REAL SWEL REAL TOPICU, TOPUFA, TOPMSCU REAL TOPLFA, SCTOP REAL SCBOT, TEMP1, TIMEMAX C INTEGER IBSAS(NCOL), IBICU(NCOL), IBUFA(NCOL) INTEGER IBMSCU(NCOL), IBLFA(NCOL), NROW(7) INTEGER IHOURS(NSETS), IMINS(NSETS), ISECS(NSETS) INTEGER ICHK(5000), IUNIT(7) C CHARACTER*1 FIRSTCHAR CHARACTER*4 SAS, ICU, UFA CHARACTER*4 MSCU, LFA, SITENAME(NSETS) CHARACTER*4 ROWGEO(1000), ANIS CHARACTER*6 NAME CHARACTER*12 OBSNAME(NSETS) CHARACTER*17 UFH, CBC CHARACTER*18 NEWNAME(NSETS) CHARACTER*19 OC CHARACTER*20 GR3, INP CHARACTER*20 OPT, PCG, WEL CHARACTER*21 BAS, BCF CHARACTER*22 VAR1, ZONES CHARACTER*26 OPTOUT CHARACTER*27 RESI CHARACTER*28 PARAM CHARACTER*30 MODOUT, FILENAME(NSETS) CHARACTER*80 TXT(5000) C DATA RMU08 /1.0, 1.5, 2.0, 3.0, 3.0, 2.0, 1.5, 1.0/ DATA RMU12 /1.0, 1.5, 2.0, 3.0, 4.0, 5.0, * 5.0, 4.0, 3.0, 2.0, 1.5, 1.0/ DATA RMU16 /1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, * 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.5, * 1.0/ DATA RMU20 /1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, * 8.0, 10.0, 10.0, 8.0, 7.0, 6.0, 5.0, * 4.0, 3.0, 2.0, 1.5, 1.0/ C OPEN(21,FILE='generatefiles.txt',STATUS='OLD') C C Skip first line of file C Read input and output file name code C Read well screen radius, RWS, in inches C Read distances from pumping well, where drawdowns are measured, in feet C Read well discharge, QDIS, in GPM, convert discharge to ft^3/d C READ(21,*) READ(21,*) NAME READ(21,*) RKICU READ(21,*) RKUFA READ(21,*) RKMSCU READ(21,*) RKLFA READ(21,*) RW READ(21,*) QDIS READ(21,*) SCTOP READ(21,*) SCBOT READ(21,*) TOPICU READ(21,*) TOPUFA READ(21,*) TOPMSCU READ(21,*) TOPLFA READ(21,*) BOTLFA READ(21,*) ICON1 READ(21,*) ICON2 C C Calculate or define parameters related to input files C IZERO = 0 IONE = 1 ITWO = 2 ISIX = 6 IORDER = 7 IMIN1 = -1 IOUTER = 30 IOCIU1 = 69 IOCIU2 = 89 IOCBCU = 90 NUMSP = 90 IINNER = 99 ITERMAX = 100 RZERO = 0.0 RONE = 1.0 RKMIN = 0.005 SMIN = 0.010 SMIN2 = 0.00010 SMAX = 0.500 CCMIN = 0.950 HCLOSE = 0.010000 RCLOSE = 10.0000 NUMSP2 = NUMSP - 2 RKWEL = 3.0E+9 RADMAX = 4.0E+5 DELTA = 1.0E-7 EPSILON = 1.0E-3 SPESTO = 1.0E-6 ALFA = 1.0E-1 SWEL = 1.0E+0 QDIS = 1440.0*0.133665210*QDIS RW = RW/12.00 PI = 4.0*ATAN(1.00) SAS = ' SAS' ICU = ' ICU' UFA = ' UFA' MSCU = 'MSCU' LFA = ' LFA' THKICU = TOPICU - TOPUFA THKUFA = TOPUFA - TOPMSCU THKMSCU = TOPMSCU - TOPLFA THKLFA = TOPLFA - BOTLFA C C Check for inconsistencies in altitudes of lithology contacts C and altitude of well screen interval C IF((THKICU .LE. 0.0) .OR. (THKUFA .LE. 0.0) .OR. * (THKMSCU .LE. 0.0) .OR. (THKLFA .LE. 0.0)) THEN WRITE(6,100) THKICU, THKUFA, THKMSCU, THKLFA STOP END IF C IF(SCTOP .LE. SCBOT) THEN WRITE(6,102) SCBOT, SCTOP STOP END IF C IF(SCBOT .LT. BOTLFA) THEN WRITE(6,104) SCBOT, BOTLFA STOP END IF C C Define MODOPTIM input file names C PCG = 'INPUT_'//NAME//'.PCG.txt' OC = 'INPUT_'//NAME//'.OC.txt' GR3 = 'INPUT_'//NAME//'.GR3.txt' ZONES = 'INPUT_'//NAME//'.ZONES.txt' WEL = 'INPUT_'//NAME//'.WEL.txt' INP = 'INPUT_'//NAME//'.INP.txt' OPT = 'INPUT_'//NAME//'.OPT.txt' C C Define MODOPTIM output file names C BCF = 'OUTPUT_'//NAME//'.BCF.txt' VAR1 = 'OUTPUT_'//NAME//'.VAR1.txt' UFH = 'OUTPUT_'//NAME//'.ufh' CBC = 'OUTPUT_'//NAME//'.cbc' OPTOUT = 'OUTPUT_'//NAME//'.MAIN-OPT.txt' RESI = 'OUTPUT_'//NAME//'.Resi&Sens.txt' BAS = 'OUTPUT_'//NAME//'.BAS.txt' MODOUT = 'OUTPUT_'//NAME//'.MODFLOW-List.txt' PARAM = 'OUTPUT_'//NAME//'.Parameters.txt' C C Open MODOPTIM input files C OPEN(22,FILE=PCG ,STATUS='UNKNOWN') OPEN(23,FILE=OC ,STATUS='UNKNOWN') OPEN(24,FILE=GR3 ,STATUS='UNKNOWN') OPEN(25,FILE=ZONES ,STATUS='UNKNOWN') OPEN(26,FILE=WEL ,STATUS='UNKNOWN') OPEN(27,FILE=INP ,STATUS='UNKNOWN') OPEN(28,FILE=OPT ,STATUS='UNKNOWN') OPEN(29,FILE='t.69',STATUS='UNKNOWN') WRITE(29,*) OPT C C Generate file INPUT_//NAME//PCG.txt C WRITE(22,106) IOUTER, IINNER, IONE WRITE(22,108) HCLOSE, RCLOSE, RONE, ITWO, IONE, IZERO C C Generate file INPUT_//NAME//OC.txt C WRITE(23,106) IOCIU1, IOCIU1, IOCIU2, IZERO WRITE(23,106) IZERO, IZERO, IZERO, IZERO WRITE(23,106) IONE, IZERO, IONE, IZERO WRITE(23,106) IMIN1, IONE, IONE, IONE DO 2 I=2,NUMSP2 WRITE(23,106) IMIN1, IONE, IONE, IONE 2 CONTINUE WRITE(23,106) IMIN1, IONE, IONE, IONE WRITE(23,106) IMIN1, IONE, IONE, IONE C C Generate file INPUT_//NAME//GR3.txt C C Compute lengths of radial, concentric, or column cells based on multiplier t C C RADMAX = r_w + r_w * t + r_w * t^2 + r_w * t^3 + ... + r_w * t^(NCOL - 1) C C RADMAX = r_w * ( 1 + t + t^2 + ... + t^(NCOL - 1)) C C RADMAX = r_w * (t^NCOL - 1 )/(t-1) C C r_w * (t^NCOL - 1) - RADMAX*(t-1) = 0 C C Multiplier t (TMULT) is computed from the following Newton's algorithm: C NCOLM1 = NCOL - 1 RNCOL = FLOAT(NCOL) TMULT = 1.10 TMULTI = TMULT 3 DIFF = 1.0E+7 ITER = 0 DO 4 WHILE ((ITER .LT. ITERMAX) .AND. (DIFF .GT. DELTA)) G = RW*((TMULT**NCOL) - 1.0) - RADMAX*(TMULT - 1.0) GP = RW*RNCOL*(TMULT**NCOLM1) - RADMAX DIFF = ABS(G/GP) TMULT = TMULT - G/GP ITER = ITER + 1 4 END DO IF(TMULT .LE. 1.00010D0) THEN TMULT = TMULTI + 0.10 GO TO 3 END IF C THKCOL(1) = RW SUM = THKCOL(1) DO 6 N=2,NCOL THKCOL(N) = RW*(TMULT**(N-1)) SUM = SUM + THKCOL(N) 6 CONTINUE C SUM = 0.0 DO 8 N=1,NCOLM1 ITEMP = INT(100.0*THKCOL(N)) THKCOL(N) = FLOAT(ITEMP)/100.0 SUM = SUM + THKCOL(N) 8 CONTINUE THKCOL(NCOL) = RADMAX - SUM C C Compute thicknesses for vertical cells in all hydrogeologic units C Use index J to indicate the bottom of the altitude of each row C Use index I to indicate the altitude intervals of each unit or screen interval C Number of rows for each hydrogeologic unit were established earlier C Redefine lithology in vector form C HUNIT(1) = TOPICU HUNIT(2) = TOPUFA HUNIT(3) = TOPMSCU HUNIT(4) = TOPLFA HUNIT(5) = BOTLFA HUNIT(6) = SCTOP HUNIT(7) = SCBOT C C Save lithology contacts in descending order in vector HSAVE C DO 10 I=1,5 IF(HUNIT(I) .EQ. SCTOP) THEN IORDER = IORDER - 1 HUNIT(6) = -9999.99 END IF IF(HUNIT(I) .EQ. SCBOT) THEN IORDER = IORDER - 1 HUNIT(7) = -9999.99 END IF 10 CONTINUE C C Consider one layer less in the vertical discretization if C well screen bottom is located above the top of the LFA C ICON3 = -1 IF(SCBOT .GT. TOPLFA) THEN IORDER = IORDER - 1 HUNIT(5) = -9999.99 VERSPAN = TOPICU - TOPLFA ICON3 = 1 ELSE VERSPAN = TOPICU - BOTLFA END IF IORDERM1 = IORDER - 1 C DO 14 I=1,IORDER HSAVE(I) = MAX(HUNIT(1), HUNIT(2), HUNIT(3), HUNIT(4), * HUNIT(5), HUNIT(6), HUNIT(7)) DO 12 J=1,7 IF(HSAVE(I) .EQ. HUNIT(J)) THEN HUNIT(J) = -9999.99 END IF 12 CONTINUE 14 CONTINUE C DO 16 I=1,IORDER HUNIT(I) = HSAVE(I) 16 CONTINUE C T08 = 0.0 T12 = 0.0 T16 = 0.0 T20 = 0.0 DO 18 K=1,20 IF(K .LE. 8) THEN T08 = T08 + RMU08(K) END IF C IF(K .LE. 12) THEN T12 = T12 + RMU12(K) END IF C IF(K .LE. 16) THEN T16 = T16 + RMU16(K) END IF C IF(K .LE. 20) THEN T20 = T20 + RMU20(K) END IF 18 CONTINUE C DO 20 I=1,IORDERM1 HUNITHK(I) = HUNIT(I) - HUNIT(I+1) IF (HUNITHK(I) .LE. 4.) THEN NROW(I) = 2 ELSE IF((HUNITHK(I) .GT. 4.) .AND. (HUNITHK(I) .LE. T08)) THEN NROW(I) = 8 ELSE IF((HUNITHK(I) .GT. T08) .AND. (HUNITHK(I) .LE. T12)) THEN NROW(I) = 12 ELSE IF((HUNITHK(I) .GT. T12) .AND. (HUNITHK(I) .LE. T16)) THEN NROW(I) = 16 ELSE IF((HUNITHK(I) .GT. T16) .AND. (HUNITHK(I) .LE. T20)) THEN NROW(I) = 20 ELSE IF( HUNITHK(I) .GT. T20) THEN NROW(I) = 20 + INT((HUNITHK(I)-T20)/RMU20(10)) END IF 20 CONTINUE C NROWTOT = 0 DO 22 I=1,IORDERM1 NROWTOT = NROWTOT + NROW(I) 22 CONTINUE NROWTOT = NROWTOT + 1 C J = 1 THKROW(1) = 1.0 DO 50 I=1,IORDERM1 IF (NROW(I) .EQ. 2) THEN TEMP1 = HUNITHK(I)/2.0 TEMP2 = HUNITHK(I) - TEMP1 J = J + 1 THKROW(J) = TEMP1 J = J + 1 THKROW(J) = TEMP2 ELSE IF(NROW(I) .EQ. 8) THEN SUM = (RMU08(1) + RMU08(2) + RMU08(3) + * RMU08(6) + RMU08(7) + RMU08(8))*HUNITHK(I)/T08 TEMP1 = (HUNITHK(I) - SUM)/2.0 TEMP2 = HUNITHK(I) - SUM - TEMP1 DO 24 K=1,3 J = J + 1 THKROW(J) = RMU08(K)*HUNITHK(I)/T08 24 CONTINUE J = J + 1 THKROW(J) = TEMP1 J = J + 1 THKROW(J) = TEMP2 DO 28 K=6,8 J = J + 1 THKROW(J) = RMU08(K)*HUNITHK(I)/T08 28 CONTINUE ELSE IF(NROW(I) .EQ. 12) THEN SUM = (RMU12(1) + RMU12(2) + RMU12(3) + RMU12(4) + RMU12(5) * + RMU12(8) + RMU12(9) + RMU12(10) + RMU12(11) + * RMU12(12))*HUNITHK(I)/T12 TEMP1 = (HUNITHK(I) - SUM)/2.0 TEMP2 = HUNITHK(I) - SUM - TEMP1 DO 30 K=1,5 J = J + 1 THKROW(J) = RMU12(K)*HUNITHK(I)/T12 30 CONTINUE J = J + 1 THKROW(J) = TEMP1 J = J + 1 THKROW(J) = TEMP2 DO 32 K=8,12 J = J + 1 THKROW(J) = RMU12(K)*HUNITHK(I)/T12 32 CONTINUE ELSE IF(NROW(I) .EQ. 16) THEN SUM = (RMU16(1) + RMU16(2) + RMU16(3) + RMU16(4) + * RMU16(5) + RMU16(6) + RMU16(7) + * RMU16(10) + RMU16(11) + RMU16(12) + RMU16(13) + * RMU16(14) + RMU16(15) + RMU16(16))*HUNITHK(I)/T16 TEMP1 = (HUNITHK(I) - SUM)/2.0 TEMP2 = HUNITHK(I) - SUM - TEMP1 DO 34 K=1,7 J = J + 1 THKROW(J) = RMU16(K)*HUNITHK(I)/T16 34 CONTINUE J = J + 1 THKROW(J) = TEMP1 J = J + 1 THKROW(J) = TEMP2 DO 36 K=10,16 J = J + 1 THKROW(J) = RMU16(K)*HUNITHK(I)/T16 36 CONTINUE ELSE IF(NROW(I) .EQ. 20) THEN SUM = (RMU20(1) + RMU20(2) + RMU20(3) + RMU20(4) + * RMU20(5) + RMU20(6) + RMU20(7) + RMU20(8) + * RMU20(9) + * RMU20(12) + RMU20(13) + RMU20(14) + RMU20(15) + * RMU20(16) + RMU20(17) + RMU20(18) + RMU20(19) + * RMU20(20))*HUNITHK(I)/T20 TEMP1 = (HUNITHK(I) - SUM)/2.0 TEMP2 = HUNITHK(I) - SUM - TEMP1 DO 38 K=1,9 J = J + 1 THKROW(J) = RMU20(K)*HUNITHK(I)/T20 38 CONTINUE J = J + 1 THKROW(J) = TEMP1 J = J + 1 THKROW(J) = TEMP2 DO 40 K=12,20 J = J + 1 THKROW(J) = RMU20(K)*HUNITHK(I)/T20 40 CONTINUE ELSE IF(NROW(I) .GT. 20) THEN TEMP1 = HUNITHK(I) - T20 ITEMP = NROW(I) - 20 IF(ITEMP .EQ. 2*(ITEMP/2)) THEN TEMP2 = (HUNITHK(I) - T20 - FLOAT(ITEMP-2)*RMU20(10))/2.0 ITEMPH = ITEMP/2 - 1 ELSE TEMP2 = HUNITHK(I) - T20 - FLOAT(ITEMP-1)*RMU20(10) ITEMPH = ITEMP/2 END IF DO 42 K=1,10 J = J + 1 THKROW(J) = RMU20(K) 42 CONTINUE C DO 44 K=1,ITEMPH J = J + 1 THKROW(J) = RMU20(10) 44 CONTINUE C IF(ITEMP .EQ. 2*(ITEMP/2)) THEN J = J + 1 THKROW(J) = TEMP2 J = J + 1 THKROW(J) = TEMP2 ELSE J = J + 1 THKROW(J) = TEMP2 END IF C DO 46 K=1,ITEMPH J = J + 1 THKROW(J) = RMU20(10) 46 CONTINUE C DO 48 K=11,20 J = J + 1 THKROW(J) = RMU20(K) 48 CONTINUE END IF 50 CONTINUE C C J must be equal to NROWTOT C IF(J .NE. NROWTOT) THEN WRITE(6,*) 'ERROR IN NUMBER OF ROWS, MAXIMUM ROW INDEX J IS', J, * ' AND TOTAL NUMBER OF ROWS IS', NROWTOT END IF C C Assign altitudes to each row throughout the thickness of the aquifer C system. Allow for the first row which is just above the uppermost unit C Assign an arbitrary thickness of 1 to the row where levels remain C constant. Assign a hydrogelogic unit to each row based on values of C TOPICU, TOPUFA, TOPMSCU, and TOPLFA C WRITE(24,110) WRITE(24,112) NCOL WRITE(24,114) WRITE(24,116) (THKCOL(K), K=1,NCOL) WRITE(24,118) NROWTOT, HUNIT(1)+0.50, IONE C ROWALT(1) = HUNIT(1) IUNIT(1) = 2 DO 62 I=1,NROWTOT IF(I .GT. 1) THEN ROWALT(I) = ROWALT(I-1) - THKROW(I) END IF TEMP1 = ROWALT(I) IF (TEMP1 .GE. (TOPUFA-EPSILON)) THEN ROWGEO(I) = ICU ELSE IF((TEMP1 .LT. (TOPUFA-EPSILON)) .AND. * (TEMP1 .GE. (TOPMSCU-EPSILON))) THEN ROWGEO(I) = UFA IF((ROWGEO(I) .EQ. UFA) .AND. (ROWGEO(I-1) .EQ. ICU)) THEN IUNIT(2) = I END IF ELSE IF((TEMP1 .LT. (TOPMSCU-EPSILON)) .AND. * (TEMP1 .GE. (TOPLFA-EPSILON))) THEN ROWGEO(I) = MSCU IF((ROWGEO(I) .EQ. MSCU) .AND. (ROWGEO(I-1) .EQ. UFA)) THEN IUNIT(3) = I END IF ELSE IF (TEMP1 .LT. (TOPLFA-EPSILON)) THEN ROWGEO(I) = LFA IF((ROWGEO(I) .EQ. LFA) .AND. (ROWGEO(I-1) .EQ. MSCU)) THEN IUNIT(4) = I END IF END IF 62 CONTINUE C ROWGEO(1) = SAS DO 64 N=1,NROWTOT WRITE(24,120) THKROW(N), N, ROWALT(N), ROWGEO(N) 64 CONTINUE WRITE(24,122) WRITE(24,124) IONE, IZERO, RONE, RZERO C C Generate file INPUT_//NAME//ZONES.txt C DO 66 N=1,NCOL IF (ICON1 .LT. 0) THEN IBSAS(N) = -1 ELSE IF(ICON1 .GE. 0) THEN IBSAS(N) = 0 END IF IBICU(N) = 2 IBUFA(N) = 3 IBMSCU(N) = 4 IBLFA(N) = 5 66 CONTINUE C N = 1 DO 68 WHILE (ROWALT(N) .GE. (SCTOP-EPSILON)) NBEG = N N = N + 1 68 END DO NBEG = NBEG + 1 ISCTOP = NBEG C N = 1 DO 70 WHILE (ROWALT(N) .LT. (SCBOT-EPSILON)) NEND = N N = N + 1 70 END DO NEND = NEND + 1 IF(NEND .GT. NROWTOT) THEN ISCBOT = NROWTOT ELSE ISCBOT = NEND END IF NROWTOT1 = NROWTOT - 1 C WRITE(25,126) (IBSAS(K), K=1,NCOL) DO 72 N=2,NROWTOT1 IF((ROWALT(N) .GE. (SCTOP-EPSILON)) .OR. * (ROWALT(N) .LT. (SCBOT-EPSILON))) THEN IF (ROWGEO(N) .EQ. ICU) THEN WRITE(25,126) (IBICU(K), K=1,NCOL) ELSE IF(ROWGEO(N) .EQ. UFA) THEN WRITE(25,126) (IBUFA(K), K=1,NCOL) ELSE IF(ROWGEO(N) .EQ. MSCU) THEN WRITE(25,126) (IBMSCU(K), K=1,NCOL) ELSE IF(ROWGEO(N) .EQ. LFA) THEN WRITE(25,126) (IBLFA(K), K=1,NCOL) END IF ELSE IF (ROWGEO(N) .EQ. ICU) THEN WRITE(25,126) ISIX, (IBICU(K), K=2,NCOL) ELSE IF(ROWGEO(N) .EQ. UFA) THEN WRITE(25,126) ISIX, (IBUFA(K), K=2,NCOL) ELSE IF(ROWGEO(N) .EQ. MSCU) THEN WRITE(25,126) ISIX, (IBMSCU(K), K=2,NCOL) ELSE IF(ROWGEO(N) .EQ. LFA) THEN WRITE(25,126) ISIX, (IBLFA(K), K=2,NCOL) END IF END IF 72 CONTINUE C DO 74 N=1,NCOL IF (ICON3 .GE. 0) THEN IF (ICON2 .LT. 0) THEN IBMSCU(N) = -4 ELSE IF(ICON2 .GE. 0) THEN IBMSCU(N) = 4 END IF ELSE IF(ICON3 .LT. 0) THEN IBMSCU(N) = 4 IF (ICON2 .LT. 0) THEN IBLFA(N) = -5 ELSE IF(ICON2 .GE. 0) THEN IBLFA(N) = 5 END IF END IF 74 CONTINUE C IF((ROWALT(NROWTOT) .GE. (SCTOP-EPSILON)) .OR. * (ROWALT(NROWTOT) .LT. (SCBOT-EPSILON))) THEN IF (ROWGEO(NROWTOT) .EQ. ICU) THEN WRITE(25,126) (IBICU(K), K=1,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. UFA) THEN WRITE(25,126) (IBUFA(K), K=1,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. MSCU) THEN WRITE(25,126) (IBMSCU(K), K=1,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. LFA) THEN WRITE(25,126) (IBLFA(K), K=1,NCOL) END IF ELSE IF (ROWGEO(NROWTOT) .EQ. ICU) THEN WRITE(25,126) ISIX, (IBICU(K), K=2,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. UFA) THEN WRITE(25,126) ISIX, (IBUFA(K), K=2,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. MSCU) THEN WRITE(25,126) ISIX, (IBMSCU(K), K=2,NCOL) ELSE IF(ROWGEO(NROWTOT) .EQ. LFA) THEN WRITE(25,126) ISIX, (IBLFA(K), K=2,NCOL) END IF END IF WRITE(25,128) C C Generate file INPUT_//NAME//WEL.txt C WRITE(26,106) ISIX, IOCBCU WRITE(26,106) IONE WRITE(26,130) IONE, NBEG, IONE, QDIS C C Generate file INPUT_//NAME//OPT.txt C READ(21,*) MAXIT READ(21,*) NDRASETS WRITE(28,132) INP, OPTOUT, RESI, BAS, MODOUT, PARAM WRITE(28,134) MAXIT, SMIN2, SMIN, CCMIN WRITE(28,136) WRITE(28,138) SMAX, SMAX, SMIN, RKMIN, SMIN WRITE(28,140) C IF(SCBOT .GT. TOPLFA) THEN ANIS = 'aUFA' IANIS = 3 ELSE ANIS = 'aLFA' IANIS = 5 END IF C TEMP1 = 1.0/(ABS(SCTOP - SCBOT)) IF (IANIS .EQ. 3) THEN WRITE(28,142) RKICU, RKUFA, RKMSCU, RKWEL, ANIS, * ALFA, SPESTO, SPESTO, SPESTO, SWEL WRITE(28,144) 0.01*RKICU, RKICU, 100.0*RKICU, * 0.01*RKUFA, RKUFA, 100.0*RKUFA, * 0.01*RKMSCU, RKMSCU, 100.0*RKMSCU, * 0.01*RONE, RONE, 100.0*RONE, RKWEL WRITE(28,146) ANIS, 0.01*ALFA, ALFA, RONE, IANIS WRITE(28,148) 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.01*RONE, RONE, 100.0*RONE, TEMP1 ELSE IF(IANIS .EQ. 5) THEN WRITE(28,150) RKICU, RKUFA, RKMSCU, RKLFA, RKWEL, ANIS, * ALFA, SPESTO, SPESTO, SPESTO, SPESTO, SWEL WRITE(28,152) 0.01*RKICU, RKICU, 100.0*RKICU, * 0.01*RKUFA, RKUFA, 100.0*RKUFA, * 0.01*RKMSCU, RKMSCU, 100.0*RKMSCU, * 0.01*RKLFA, RKLFA, 100.0*RKLFA, * 0.01*RONE, RONE, 100.0*RONE, RKWEL WRITE(28,146) ANIS, 0.01*ALFA, ALFA, RONE, IANIS WRITE(28,154) 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.03*SPESTO, SPESTO, 100.0*SPESTO, * 0.01*RONE, RONE, 100.0*RONE, TEMP1 END IF WRITE(28,156) WRITE(28,158) C C Read the next four lines for every drawdown time series C DO 76 N=1,NDRASETS READ(21,*) SITENAME(N) READ(21,*) DISTANCE(N) READ(21,*) ALTITUDE(N) READ(21,*) FILENAME(N) OBSNAME(N) = SITENAME(N)//'_OBS_well' WEIGHT(N) = 1.00 76 CONTINUE C IOUNIT = 30 TIMEMAX = 0.0 DO 90 N=1,NDRASETS IOUNIT = IOUNIT + 2 OPEN(IOUNIT,FILE=FILENAME(N),STATUS='OLD') DO 78 I=1,5000 READ(IOUNIT,*,END=80) FIRSTCHAR IF(FIRSTCHAR .EQ. '#') THEN ICHK(I) = 0 ICOM = I ELSE ICHK(I) = 1 END IF ITOT = I 78 CONTINUE C 80 J = 0 REWIND(IOUNIT) DO 82 I=1,ITOT IF (ICHK(I) .EQ. 0) THEN READ(IOUNIT,160) TXT(I) ELSE IF(ICHK(I) .EQ. 1) THEN J = J + 1 READ(IOUNIT,*) TIEMPO(J), DRAW(J) JMAX = J END IF 82 CONTINUE C IF(TIMEMAX .LT. TIEMPO(JMAX)) THEN TIMEMAX = TIEMPO(JMAX) + 0.02 END IF C I = 1 DO 84 WHILE (DRAW(I) .LE. 0.10) I = I + 1 84 END DO IBEG = I DRAWBEG(N) = DRAW(IBEG) TIMEBEG(N) = TIEMPO(IBEG) NEWNAME(N) = 'INPUT_'//SITENAME(N)//'.OBS.txt' C IOUNITM1 = IOUNIT - 1 IADDC = ICOM + IBEG OPEN(IOUNITM1,FILE=NEWNAME(N),STATUS='UNKNOWN') DO 86 I=1,ITOT IF (I .LE. ICOM) THEN WRITE(IOUNITM1,160) TXT(I) ELSE IF((I .GT. ICOM) .AND. (I .LE. IADDC)) THEN WRITE(IOUNITM1,162) TIEMPO(I-ICOM), DRAW(I-ICOM) ELSE IF (I .GT. IADDC) THEN WRITE(IOUNITM1,164) TIEMPO(I-ICOM), DRAW(I-ICOM) END IF 86 CONTINUE C IHOURS(N) = INT(1440.0*TIMEBEG(N))/60 TEMP1 = 1440.0*TIMEBEG(N) - 60.0*FLOAT(IHOURS(N)) IMINS(N) = INT(TEMP1) TEMP1 = TEMP1 - FLOAT(IMINS(N)) ISECS(N) = INT(60.0*TEMP1) C WRITE(28,166) SITENAME(N), DISTANCE(N), ALTITUDE(N), OBSNAME(N), * TIMEBEG(N), DRAWBEG(N), WEIGHT(N), * IHOURS(N), IMINS(N), ISECS(N), NEWNAME(N) 90 CONTINUE WRITE(28,168) C C Generate file INPUT_//NAME//INP.txt C ITEMP1 = INT(100.0*TIMEMAX) TIMEMAX = FLOAT(ITEMP1)/100.0 XMULT = 1.10 WRITE(27,170) WRITE(27,172) NAME WRITE(27,174) GR3 WRITE(27,176) TIMEMAX, NUMSP, XMULT WRITE(27,178) WRITE(27,180) BCF, VAR1, WEL, OC, PCG, UFH, CBC WRITE(27,182) ZONES WRITE(27,184) WRITE(27,186) WRITE(27,188) IF (ANIS .EQ. 'aUFA') THEN WRITE(27,190) IONE, IUNIT(2), IONE+1, RONE, ANIS(2:4), IONE, * IUNIT(3)-1, NCOL, RONE, IMIN1, IMIN1, IMIN1, IMIN1 ELSE IF(ANIS .EQ. 'aLFA') THEN WRITE(27,190) IONE, IUNIT(4), IONE+1, RONE, ANIS(2:4), IONE, * NROWTOT, NCOL, RONE, IMIN1, IMIN1, IMIN1, IMIN1 END IF C 100 FORMAT(/1X,'ERROR DETECTED IN THICKNESSES OF HYDROGEOLOGIC UNITS', * /1X,'THICKNESSES OF ICU, UFA, MSCU, AND LFA UNITS ARE', * /1X,4(F8.2,2X),/1X,'CORRECT MISTAKE AND RE-RUN',/) 102 FORMAT(/1X,'ERROR DETECTED IN ALTITUDE OF WELL SCREEN INTERVAL', * /1X,'SCREEN BOTTOM IS AT ',F8.2,'FEET, WHICH IS HIGHER', * ' THAN SCREEN TOP AT ',F8.2,' FEET', * /' CORRECT MISTAKE AND RE-RUN',/) 104 FORMAT(/1X,'ERROR DETECTED IN ALTITUDE OF WELL SCREEN BOTTOM', * /1X,'SCREEN BOTTOM AT ',F8.2,' FEET IS BELOW', * ' LFA BOTTOM LOCATED AT ',F8.2,' FEET', * /' CORRECT MISTAKE AND RE-RUN',/) 106 FORMAT(4I10) 108 FORMAT(F10.6,F10.4,F10.1,3I10) 110 FORMAT('#-------------------------------------------------------', * /'# INPUT FOR GRID DISCRTIZATION FILE ', * /'#-------------------------------------------------------', * /'# DATA GROUP 1 - Width of columns and reference for ', * 'X-coordinate',/'# ') 112 FORMAT(1X,'NCOL=',I3,' RADIAL ',/'# ') 114 FORMAT('# NCOL is the number or columns', * /'# MULT Flag - last value read in DXM array is total', * ' width of model', * /'# DXM array filled by uniformly multipl', * 'ying successive column widths.', * /'# RADIAL Flag - Radial flow simulated. Radial models ', * 'restricted to 1 row or 1 layer.', * /'# Reference of X-coordinate defaults to', * ' X = 0 at left-edge of the model.', * /'# All arrays in BCF package are multipl', * 'ied by 2*pi*radii.', * /'# Radii is equivalent to X-coordinate ', * 'of the columns.', * /'# ENTER WIDTHS OF MODEL COLUMNS:',/'# ') 116 FORMAT(15(10(1X,F10.2),/),' ',/'# ') 118 FORMAT(1X,'NROW=',I3,' Yreference=',F7.2,' IYreference=',I1, * /,'# Thicknesses Layer number Altitude Unit', * /'# ') 120 FORMAT(F10.2,' !! ',I3,8X,F10.2,5X,A4) 122 FORMAT('# ',/,'# Number of layers') 124 FORMAT(1X,I2,2X,I2,/'# Define only the thickness of each layer', * /'# ',/1X,F3.1,/' ',/'# ',/'# Define only the', * ' centroid of each layer',/'# ',/1X,F3.1,/' ') 126 FORMAT(200I3) 128 FORMAT('RETURN CONTROL TO MAIN FILE') 130 FORMAT(3I10,F10.1) 132 FORMAT('# INPUT FOR MAIN OPTIMIZATION FILE', * /'# Additional comments possible by starting line', * ' with # sign', * /'# All entry beyond a ! are comments that are not read', * /'#-------------------------------------------------------', * /'# DATA GROUP 1 - FILE SPECIFICATIONS',/'# ', * /A20,' 9 !! Composite MODFLOW-MODOPTIM', * ' file ', * /A26,' 8 !! Main MODOPTIM output file', * /A27,' 85 !! MODOPTIM residuals and sensitivities', * ' file associated with lowest SS error.', * /A21,' 5 !! MODFLOW-BAS file is generated', * ' by MODOPTIM', * /A30,' 6 !! Standard MODFLOW output ', * /A28,' 86 !! MODOPTIM file with parameter estimates', * ' and statistics associated with lowest SS error.', * /'# ', * /'#-------------------------------------------------------', * /'# DATA GROUP 2 - CLOSURE CRITERIA FOR OPTIMIZATION', * /'# ') 134 FORMAT(' maxit=',I2,' smin=',F7.4,' dermin=',F7.4, * ' CCmin > ',F6.3) 136 FORMAT('# ',/'# maxit is maximum number of parameter estimation ', * 'iterations', * /'# smin is the minimum overall parameter change', * /'# dermin is the minimum reduction in Sum-of-Squares ', * 'objective fuction', * /'# CCmin is the minimum correlation coefficient shown ', * 'for parameter pairs', * /'#-------------------------------------------------------', * /'# DATA GROUP 3 - OPTIMIZATION CONTROL VARIABLES',/'# ') 138 FORMAT(' smax=',F6.3,' stfrc=',F6.3,' frcsec=',F6.3, * ' rkmin=',F6.3,' cfi=',F6.3,' LIMIT:Keep',/'# ') 140 FORMAT('# smax is the maximum step length for all parameters,', * ' typical value is 0.5', * /'# stfrc is the maximum fraction any given parameter can', * /'# change between its lower and upper limits,', * ' typical value is 0.25', * /'# frcsec determines LM value for damping Hessian ', * 'after BFGS', * /'# update fails, typical value is 0.1 for low damping', * ' and 1.0 for high damping', * /'# rkmin is the threshold below which a diagonal value is', * /'# treated as zero, typical value is 0.0001', * /'# cfi is the pertubation factor for calculating ', * 'gradients, typical value is 0.01',/'# ', * /'#-------------------------------------------------------', * /'# DATA GROUP 4 - OPTIONAL - DEFINITION OF WEIGHT ', * 'MATRICIES',/'# ', * /'# If a weight matrix is not read, no weight matrices ', * 'will be defined', * /'# and estimated parameters cannot be modified by a ', * 'weight matrix',/'# ', * /'#-------------------------------------------------------', * /'# DATA GROUP 5 - DEFINITION OF PARAMETERS',/'# ', * /'# Begin defining Parameters to be optimized',/'# ') 142 FORMAT('# BEST ESTIMATES', * /'# Parameter Unique Tag Type Parameter Estimate', * /'# 1 kICU PERM ',E12.6, * /'# 2 kUFA PERM ',E12.6, * /'# 3 kMSU PERM ',E12.6, * /'# 4 kWEL PERM ',E12.6, * /'# 5 ',A4,' ANIS ',E12.6, * /'# 6 sICU STOR ',E12.6, * /'# 7 sUFA STOR ',E12.6, * /'# 8 sMSU STOR ',E12.6, * /'# 9 sWEL STOR ',E12.6,/'# ') 144 FORMAT('# ______________ Hydraulic Conductivity ________________', * /'# ', * /' Parameter:kICU Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 2 )[All] ', * '!! Intermediate Confining Unit',/'# ', * /' Parameter:kUFA Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 3 )[All] ', * '!! Upper Floridan Aquifer',/'# ', * /' Parameter:kMSU Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 4 )[All] ', * '!! Middle Semi-Confining Unit',/'# ', * /' Parameter:kWEL Tag:PERM Status:Modify', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /1X,E12.6,'*( 6 )[All] ', * '!! WELLBORE',/'# ') 146 FORMAT('# _________ Vertical-to-Horizontal Anisotropy __________', * /'# ', * /' Parameter:',A4,' Tag:ANIS Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( ',I1,' )[All] ', * ' !! Anisotropy in Penetrated Aquifer',/'# ') 148 FORMAT('# _________________ Specific Storage ___________________', * /'# ', * /' Parameter:sICU Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 2 )[All] ', * '!! Intermediate Confining Unit',/'# ', * /' Parameter:sUFA Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 3 )[All] ', * '!! Upper Floridan Aquifer',/'# ', * /' Parameter:sMSU Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 4 )[All] ', * '!! Middle Semi-Confining Unit',/'# ', * /' Parameter:sWEL Tag:STOR Status:Modify', * ' Type:Parallel,None,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /1X,E12.6,'*( 6 )[All] ', * '!! WELLBORE Multiplier is inverse of well bore length', * ' = 1/(SCBOT-SCTOP)',/'# ', * /' ! End Parameter Input ',/'# ') 150 FORMAT('# BEST ESTIMATES', * /'# Parameter Unique Tag Type Parameter Estimate', * /'# 1 kICU PERM ',E12.6, * /'# 2 kUFA PERM ',E12.6, * /'# 3 kMSU PERM ',E12.6, * /'# 4 kLFA PERM ',E12.6, * /'# 5 kWEL PERM ',E12.6, * /'# 6 ',A4,' ANIS ',E12.6, * /'# 7 sICU STOR ',E12.6, * /'# 8 sUFA STOR ',E12.6, * /'# 9 sMSU STOR ',E12.6, * /'# 10 sLFA STOR ',E12.6, * /'# 11 sWEL STOR ',E12.6,/'# ') 152 FORMAT('# ______________ Hydraulic Conductivity ________________', * /'# ', * /' Parameter:kICU Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 2 )[All] ', * '!! Intermediate Confining Unit',/'# ', * /' Parameter:kUFA Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 3 )[All] ', * '!! Upper Floridan Aquifer',/'# ', * /' Parameter:kMSU Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 4 )[All] ', * '!! Middle Semi-Confining Unit',/'# ', * /' Parameter:kLFA Tag:PERM Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 5 )[All] ', * '!! Lower Floridan Aquifer',/'# ', * /' Parameter:kWEL Tag:PERM Status:Modify', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /1X,E12.6,'*( 6 )[All] ', * '!! WELLBORE',/'# ') 154 FORMAT('# _________________ Specific Storage ___________________', * /'# ', * /' Parameter:sICU Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 2 )[All] ', * '!! Intermediate Confining Unit',/'# ', * /' Parameter:sUFA Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 3 )[All] ', * '!! Upper Floridan Aquifer',/'# ', * /' Parameter:sMSU Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 4 )[All] ', * '!! Middle Semi-Confining Unit',/'# ', * /' Parameter:sLFA Tag:STOR Status:Active', * ' Type:Cnst,Vol,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /' 1.00*( 5 )[All] ', * '!! Lower Floridan Aquifer',/'# ', * /' Parameter:sWEL Tag:STOR Status:Modify', * ' Type:Parallel,None,Exp,NON', * /' Lower:',E12.6,' Initial:',E12.6, * ' upper:',E12.6, * /'# Multiplier*(Zones)[SP] - it is required to ', * 'indicate zone input between parenthesis', * /1X,E12.6,'*( 6 )[All] ', * '!! WELLBORE Multiplier is inverse of well bore length', * ' = 1/(SCBOT-SCTOP)',/'# ', * /' ! End Parameter Input ',/'# ') 156 FORMAT('#-------------------------------------------------------', * /'# DATA GROUP 6 - GENERAL OBSERVATION MODIFIERS',/'# ', * /' Time interpolation',/'# ', * /'# Flag that allows simulated water levels to be ', * 'interpolated in time to the', * /'# observation time',/'# ', * /' Insert Blanks between observations',/'# ', * /'# Flag that indicates blank lines should be printed ', * 'between sites in the ouput.', * /'# default is no blank lines',/'# ', * /' START:0.0 SCALE:1.000',/'# ', * /'# Indicates time 0 of simulation in time units of data', * ' input. Default is 0.', * /'# Indiates scale unit 1 of data input used within ', * 'MODFLOW simulation. Default is 1.',/'# ', * /' Z-Interpolate:No',/'# ', * /'# Simulated water levels can either be or not be ', * 'interpolated between layers', * /'# to observed location') 158 FORMAT('#-------------------------------------------------------', * /'# DATA GROUP 7 - OBSERVATIONS - BEGIN READING ', * 'OBSERVATIONS',/'# ', * /'# HEAD is the 4 character discriptor that identifies ', * 'values to be compared', * /'# IJK: is the discrete location of the observations.', * ' Choices are:', * /'# XYZ: Cart-X, Cart-Y,Cart-Z', * /'# XYK: Cart-X, Cart-Y, Layer', * /'# XJZ: Cart-X, Row, Cart-Z', * /'# XJK: Cart-X, Row, Layer', * /'# IYZ: Column, Cart-Y, Cart-Z', * /'# IYK: Column, Cart_Y. Layer', * /'# IJZ: Column, Row, Cart-Z', * /'# IJK: Column, Row, Layer', * /'# SITE: is a descriptor used to identify an ', * 'observation site ',/'# ', * /' Add BLANKS - Insert a blank line between time-drawdown ', * 'series from each observation well.',/'# ') 160 FORMAT(A80) 162 FORMAT('# ',3X,F10.6,5X,F8.2) 164 FORMAT(5X,F10.6,5X,F8.2) 166 FORMAT(1X,A4,' XYK:',F10.3,6X,F10.3,6X,' 1 ',6X,'SITE:',A12, * /'# Time, Days s, ft Weight', * /6X,F10.5,6X,F8.2,6X,F8.3,6X,' W-Default',6X,'!! ', * I2,' HOURS, ',I2,' MINs., ',I2,' SECs AFTER PUMPING', * /6X,'Redirect to file:',A18,/'# ') 168 FORMAT(' ') 170 FORMAT('# INPUT FOR COMPOSITE MODFLOW/MODOPTIM FILE WITH ', * 'PARAMETERS TO BE ESTIMATED', * /'#-------------------------------------------------------', * /'# DATA GROUP 1 - General data for building MODFLOW/BAS', * ' file',/'# ') 172 FORMAT(1X,A6,' AQUIFER TEST ANALYSIS OF WELL PENETRATING TWO ', * /' AQUIFERS - Upper Floridan and Lower Floridan aquifers', * /'# ') 174 FORMAT(' GRIDDING info:',A20,/'# ',/' 4 = ITMUNI !! ', * ' Specifies time units in MODFLOW are in days', * /'#-------------------------------------------------------', * /'# DATA GROUP 2 - Specification of stress period and ', * 'time step lengths',/'# ', * /'# Stress period information has been moved to here so', * ' the machine can count', * /'# the number of periods. IPER = n/3 A modulo divide', * ' of n by 3 that does not', * /'# result in 0 terminates the run.',/'# ', * /'# All free format data that is of an unspecified ', * 'length must terminate', * /'# with a line that contains: ', * /'# PERLEN NSTP TSMULT') 176 FORMAT(F10.3,4X,I6,4X,F6.2,/' ',/'# ', * /'# PERLEN is stress-period length', * /'# NSTP is number of time steps in a stress period', * /'# TSMULT is time step multiplier',/'# ') 178 FORMAT('#-------------------------------------------------------', * /'# DATA GROUP 3 - Specify MODFLOW files and unit numbers', * /'# ',/'# Identify MODFLOW packages and file names. ', * 'MODFLOW data inputs to be built', * /'# by MODOPTIM must be assigned a unit number ', * 'between 10 and 39, inclusive.', * /'# Unit numbers 40 through 69, inclusive, are reserved', * ' by MODOPTIM.',/'# filename modkey:unit') 180 FORMAT('FILE:',A21,10X,' BCF:10', * /'FILE:',A22,9X, 'VAR1:17', * /'FILE:',A20,11X,'WEL5:71', * /'FILE:',A19,12X,' OC:72', * /'FILE:',A20,11X,'PCG2:73',/' file input', * /'#------------------------', * /'# Specify additional files and their associated unit ', * 'numbers to be opened', * /'# in an unformatted format. Follow the format of:', * /'#------------------------', * /'FILE:',A17,14X,'<89>', * /'FILE:',A17,14X,'<90>',/'# ',/' unformatted file', * ' input') 182 FORMAT('#-------------------------------------------------------', * /'# DATA GROUP 4 - Specification of MODFLOW variables ', * 'IPART and ISTRT',/'# ', * /'# iapart indicates whether array BUFF is separated from', * ' array RHS.', * /'# If iapart=0, arrays BUFF and RHS occupy the same space', * /'# istrt indicated whether starting heads art to be save.', * /'# If istrt=0, starting heads are not saved', * /' A line is required for IAPART and ISTRT, no values ', * 'default to 0, 1.', * /'#-------------------------------------------------------', * /'# DATA GROUP 5 - Parameter zones/ibound arrays',/'# ', * /' Direct entry of 1 IBOUND array and increment',/'# ', * /' Redirect to file:',A22,/'# ',/' ',/'# ') 184 FORMAT('#-------------------------------------------------------', * /'# DATA GROUP 6 - Inactive cells and starting head values', * /'# ', * /' 999. !! head value assigned to inactive cells', * /'# ',/'# specify starting head .......',/'# ', * /'# can alternatively supply Global: ', * ' & will assume file is', * /'# START.HEAD opened on unit 39.',/'# ', * /'# ',/' FILE:OUTPUT_SHD.txt GLOBAL:0.00000 unit:39') 186 FORMAT('# ', * /'#-------------------------------------------------------', * /'# DATA GROUP 7 - Construct package with parameters to', * ' be estimated',/'# ', * /' PACKAGE = BCF',/'# ', * /'#-------------------------------------------------------', * /'# DATA GROUP 8 - Additional information specific to ', * 'BCF package',/'# ', * /'# Specify if run is Transient or SS. "TRAN" is the ', * 'fragment used as a key.', * /'# Cell-by-cell unit numbers use "UNIT:" as key.',/'# ', * /' Transient simulation with cell-by-cell to unit:90', * /'# ') 188 FORMAT('# Specify layer type with LAYCON values:', * /'# 0 - confined', * /'# 1 - unconfined', * /'# 2 - confined/unconfined with T held constant', * /'# 3 - confined/unconfined', * /'# Any unspecified layer will be assumed to be confined.', * /'# ',/' 0 ',/'# ', * /'# Specify Anisotropy as a constant or by layer ', * /'# No numeric values will force an assumption of ', * 'isotropic conditions', * /'# in all layers.',/'# ',/' Isotropic ',/'# ', * /' AUTOmatically fill BCF from GR3 file ', * /' of BCF package ',/'# ', * /' PACKAGE = VAR1',/'# ') 190 FORMAT(' 50 90', * /' Tag:ANIS Field:4 SP:1', * /' 2 ', * /3I10,F10.2,' Y-conductance ',A3,' PUMP', * /3I10,F10.2,' Y-conductance CUBE ', * /I10,/I10,/I10,/I10,/' of VAR package') C STOP END