!$Author: fredfox $ !$Date: 2006-03-30 18:04:39 $ !$Revision: 1.4 $ !$Source: /weru/cvs/wepp/wepp.watbal/test/main.for,v $ PROGRAM MAIN C C THIS PROGRAM IS THE MAIN DRIVER FOR AN OMS-BASED STANDALONE C HYDROLOGY COMPONENT BASED ON THE ASCOUGH STANDALONE IRS CODE C C THIS PROGRAM CALCULATES RAINFALL EXCESS USING THE GREEN-AMPT C EQUATION (SUBROUTINE GRNA) FOR INFILTRATION AND ROUTES THE C RAINFALL EXCESS DOWN A PLANE USING THE KINEMATIC WAVE EQUATION C (SUBROUTINE HDRIVE) C C INITIAL RESTRICTIONS OF USE (3-28-2005) C C GREEN-AMPT - NONE C HDRIVE - 1) NO INPUT OF WATER FROM ABOVE THE PLANE C 2) NO NEGATIVE RAINFALL EXCESS C C SUBROUTINES CALLED C C 1) INIT - INITIALIZES PARAMETER VALUES C 2) IDAT - GETS INPUT FOR GRNA C 3) PAREST - GETS KS AND SUCTION EITHER FROM USER OR ESTIMATES C BASED ON SOIL TEXTURE AND GROUND AND CANOPY COVER C 4) GRNA - CALCULATES INFILTRATION FOR UNSTEADY RAINFALL BASED C METHOD PRESENTED BY CHU, S.T., 1978, C INFILTRATION DURING UNSTEADY RAINFALL C (WATER RESOUR. RES. 5(2):446-459) C 6) RDAT - GETS INPUT FOR HDRIVE C 7) HDRIVE - SOLVES KINEMATIC WAVE EQUATIONS FOR HYDROGRAPH C 8) PRINT - PRINTS OUT RESULTS C C AUTHORS: DCF, JCAII MARCH 2005 C C DATE LAST MODIFIED: 4-1-2005 C C + + + PARAMETER DECLARATIONS + + + C INTEGER MXTIME, MXPOND PARAMETER (MXTIME = 1000, MXPOND = 65) C C + + + LOCAL VARIABLES + + + C CHARACTER*80 TITLE INTEGER NR, NF, NQ, NS, NROUTE, I, II, NQT, NT REAL TR(MXTIME), TF(MXTIME), R(MXTIME), RCUM(MXTIME), F(MXTIME), 1 FF(MXTIME), RE(MXTIME), RECUM(MXTIME), RR(MXTIME), DT, DTC, 1 DEPSTO, KS, SM, NU, DE, TN, TP(MXPOND), 1 ZZ, POR, SAT, CC, SC, 1 S(MXTIME), T(MXTIME), Q(MXTIME+1), TQ(MXTIME), SLEN, 1 TQ1(MXTIME), TRF(MXTIME), RF(MXTIME), QTOT(MXTIME), 1 RPRINT(MXTIME), ALPHA, M, N, TSTAR, ACV(3), HCV(3), SCV(3), 1 DUR, RUNOFF, PEAKRO, DURRUN, DURPQ, QTP, 1 TPEE, SI(MXTIME+1), ISEED, A1, A2, DUREXR, 1 EFFDRN, EFFINT, EFFDRR, DDEPSTO(MXTIME) DOUBLE PRECISION U C SCV(1) = 1.666666E-5 NQT = 0 C C OPEN INPUT AND OUTPUT FILES C OPEN (UNIT=3,FILE='HYDROL.INP',STATUS='OLD') OPEN (UNIT=4,FILE='HYDROL.OUT',STATUS='UNKNOWN') OPEN (UNIT=7,FILE='HYD2ER.PAS',STATUS='UNKNOWN') C CALL INITIALIZATION SUBROUTINE CALL INIT(TR, TF, R, RCUM, F, FF, RE, RECUM, RR, 1 DT, DTC, NR, NF, KS, SM, NU, DE, TN, TP, 1 ZZ, POR, SAT, CC, SC, 1 S, T, Q, TQ, SLEN, NQ, NS, TQ1, TRF, RF, QTOT, RPRINT, 1 ALPHA, M, N, TSTAR, NROUTE, ACV, HCV, SCV) READ (3,*) TITLE CALL IDAT(TR, R, RR, DT, DTC, NR, NF, TRF, RF, DUR) CALL PAREST(DEPSTO, KS, SM, POR, SAT, CC, SC) CALL GRNA( NF, DEPSTO, TR, R, RR, KS, SM, & & NS, TF, RCUM, F, FF, RE, RECUM, TP, & & RPRINT, DDEPSTO, RUNOFF, DUREXR, EFFINT, EFFDRR ) CALL PRINT(1, 4, NQT, DURPQ, QTP, TPEE, RECUM, 1 TITLE, KS, SM, POR, SAT, CC, SC, TRF, RF, NS, 1 RE, TP, TF, RPRINT, RCUM, F, FF, DDEPSTO, 1 SLEN, M, ALPHA, TQ1, Q, SCV, QTOT, HCV, DURRUN, 1 RUNOFF, PEAKRO, NR, EFFDRN, EFFINT, EFFDRR) IF (RECUM(NF).EQ.0.0) THEN WRITE (*,1500) F(NS-1) STOP END IF C GET RAINFALL EXCESS INTO HDRIVE FORMAT DO I = 1, NS T(I) = TF(I) * 60. S(I) = RE(I) END DO C C COMPUTE RUNOFF HYDROGRAPH C NF = 0 C CALL RDAT(NF, SI, SC, S, T, SLEN, NS, ALPHA, M, A1, A2, 1 ACV, HCV, SCV, TSTAR) C CALL HDRIVE(NQT, DURPQ, QTP, TPEE, 1 U, ISEED, II, DT, NS, NT, NQ, QTOT, Q, TQ1, 1 RECUM, T, S, SI, SLEN, ALPHA, M, DUREXR, A1, A2, 1 TSTAR, PEAKRO, DURRUN) C C COMPUTE EFFECTIVE DURATION OF RUNOFF FOR EROSION COMPONENT C IF(PEAKRO.GT.0.0)THEN EFFDRN = RUNOFF/PEAKRO ELSE EFFDRN = 0.0 ENDIF C CALL PRINT(2, 4, NQT, DURPQ, QTP, TPEE, RECUM, 1 TITLE, KS, SM, POR, SAT, CC, SC, TRF, RF, NS, 1 RE, TP, TF, RPRINT, RCUM, F, FF, DDEPSTO, 1 SLEN, M, ALPHA, TQ1, Q, SCV, QTOT, HCV, DURRUN, 1 RUNOFF, PEAKRO, NR, EFFDRN, EFFINT, EFFDRR) C C CHANGE UNITS ON HYDROLOGY OUTPUTS FOR EROSION MODULE TO THE C CORRECT UNITS FOR THE EROSION COMPONENT (M, S, ETC.) RUNOFF = RUNOFF/1000.0 PEAKRO = PEAKRO/3.6E06 EFFDRN = EFFDRN*3600.0 EFFINT = EFFINT/3.6E06 EFFDRR = EFFDRR*3600.0 C WRITE (7,1600) RUNOFF, PEAKRO, EFFDRN, EFFINT, EFFDRR C CLOSE (UNIT=3) CLOSE (UNIT=4) CLOSE (UNIT=7) C 1500 FORMAT (//' *** NO RAINFALL EXCESS WITH CHOSEN PARAMETERS.'// 1 ' FINAL INFILTRATION RATE = ',F10.3,' MM/HR'// 1 ' PROGRAM STOP - CHOOSE NEW INFILTRATION PARAMETERS.'/) 1600 FORMAT (1X,5G12.4) STOP END