subroutine furlea( i spavac,time1,time0, m ii) c c + + + PURPOSE + + + c This subprogram allows for lower end advance during the depletion c and recession phases. c c Called from FURREC c Author(s): E. R. Kottwitz c Reference in User Guide: Chapter 12 c c NOTE: THIS MODULE HAS NOT BEEN RECODED c c + + + PARAMETERS + + + include 'pmxpln.inc' include 'pmxsrg.inc' include 'pxstep.inc' c c + + + ARGUMENT DECLARATIONS + + + integer ii real spavac,time1,time0 c c + + + ARGUMENT DEFINITIONS + + + c ii - primary kinematic wave calculation counter c spavac - space averaging coefficient for flow area for current c time c time1 - time of current set of calculations (s) c time0 - time of previous set of calculations (s) c c + + + COMMON BLOCKS + + + include 'ciraflo.inc' c read: aqcnst,aqexp c include 'cirfurr.inc' c read: spavz c modify: aflow(0:xsteps,2),infltr(0:xsteps,2),inoptm(0:xsteps), c tadvan(0:xsteps),xpostn(0:xsteps) c include 'cirinfl.inc' c read: kosta,kostf,kostk c c + + + LOCAL VARIABLES + + + real deltax,ratio,tiavq c c + + + LOCAL DEFINITIONS + + + c deltax - advance distance during the current time step (m) c ratio - ratio of deltax to (location of next node - location of c current node) (m/m) c tiavq - time averaging coefficient for flow rate c c + + + DATA INITIALIZATIONS + + + data tiavq/0.35/ c c + + + END SPECIFICATIONS + + + c c Determine advance distance (deltax) and ratio of this distance to c the interval between the next node and the current node c c ---- (WEPP Equation 12.14, solved for DELTAX) deltax = (1.0-tiavq)*qflow(ii,2)*(time1-time0)/ 1 (spavac*aflow(ii,2)+spavz*(infltr(ii,2)-infltr(ii,1))) 10 ratio = deltax/(xpostn(ii+1)-xpostn(ii)) c c If next statement is true then shift current calculation c boundary downslope. Linearly interpolate for inoptm(i) and c adjust aflow, infltr, tadvan, and xpostn arrays. c if(ratio.le.0.5 .or. (ratio.lt.1.0 .and. ii.eq.xsteps-1))then inoptm(ii) = inoptm(ii)+(inoptm(ii+1)-inoptm(ii))*ratio xpostn(ii) = xpostn(ii)+deltax tadvan(ii) = time1 aflow(ii,2) = 0.0 qflow(ii,2) = 0.0 c c ---- (WEPP Equation 12.4, where tau=inoptm) infltr(ii,1) = kostk*inoptm(ii)**kosta+kostf*inoptm(ii) infltr(ii,2) = infltr(ii,1) c c If next statement is true then shift next calculation boundary c upslope. Linearly interpolate for inoptm(i+1), adjust aflow, c infltr, tadvan, and xpostn arrays. c elseif(ratio.gt.0.5 .and. ratio.lt.1.0 .and. ii.lt.(xsteps-1))then ii = ii+1 inoptm(ii) = inoptm(ii-1)+(inoptm(ii)-inoptm(ii-1))*ratio xpostn(ii) = xpostn(ii-1)+deltax tadvan(ii) = time1 aflow(ii,2) = 0.0 qflow(ii,2) = 0.0 c c ---- (WEPP Equation 12.4, where tau=inoptm) infltr(ii,1) = kostk*inoptm(ii)**kosta+kostf*inoptm(ii) infltr(ii,2) = infltr(ii,1) c c If none of the above statements is true then increment i. c Linearly interpolate for tadvan(i) and aflow(i,2) and adjust c infltr array c else ii = ii+1 tadvan(ii) = time0+(time1-time0)/ratio aflow(ii,2) = aflow(ii-1,2)*(ratio-1.0)/ratio qflow(ii,2) = aqcnst*aflow(ii,2)**aqexp c c ---- (WEPP Equation 12.4, where tau=inoptm+time1-tadvan) infltr(ii,2) = kostk*(inoptm(ii)+time1-tadvan(ii))**kosta+ 1 kostf*(inoptm(ii)+time1-tadvan(ii)) c c ---- (WEPP Equation 12.4 where tau=inoptm) infltr(ii,1) = kostk*inoptm(ii)**kosta+kostf*inoptm(ii) c c If the next statement is true then adjust deltax and make next c round of calculation boundary adjustments. c if(ii.lt.xsteps)then deltax = deltax-(xpostn(ii)-xpostn(ii-1)) goto 10 endif endif c return end