!$Author: joelevin $ !$Date: 2011-03-24 11:33:26 -0500 (Thu, 24 Mar 2011) $ !$Revision: 11724 $ !$HeadURL: https://svn.weru.ksu.edu/weru/weps1/trunk/weps.src/src/lib_wepp/disag.for $ SUBROUTINE disag(NR, TRF, RF, P, DURD, TPD, IP) ! + + + PURPOSE + + + ! THIS SUBROUTINE DISSAGREGATES A STORM INTO A DOUBLE EXPONENTIAL ! INTENSITY PATTERN WITH RELATIVE TIME TO PEAK INTENSITY, TP, AND ! RELATIVE MAXIMUM INTENSITY, IP = MAX INT/AVE INT, ! SATISFYING 0 < TP < 1 AND IP >= 1 ! CALLED FROM IDAT ! AUTHOR(S): D. FLANAGAN, J. ASCOUGH ! VERSION: THIS MODULE TAKEN FROM ASCOUGH STANDALONE IRS CODE ! DATE CODED: 3-23-2005 ! CODED BY: D. FLANAGAN ! + + + PARAMETER DECLARATIONS + + + ! + + + ARGUMENT DECLARATIONS + + + INTEGER NR REAL TRF(*), RF(*), P, DURD, TPD, IP ! + + + ARGUMENT DEFINITIONS + + + ! NR - INTEGER VALUE FOR RAINFALL ARRAY DIMENSION ! TRF - REAL VALUE FOR TIME OF RAINFALL VALUE TO BEGIN (TIME) ! RF - REAL VALUE FOR RAINFALL DEPTH RATE (DEPTH/TIME) ! P - REAL VALUE FOR TOTAL RAINFALL (DEPTH ) ! DURD - REAL VALUE FOR STORM DURATION (TIME) ! TPD - RELATIVE TIME TO PEAK - TIME TO PEAK INTENSITY DIVIDED ! BY STORM DURATION, DURD ! IP - RELATIVE PEAK INTENSITY - MAXIMUM INT/AVERAGE INT ! NOTE: THIS RETURNS THE SAME UNITS AS USED ON INPUT. SO IF INPUT IS ! IN MM AND HOURS, TRF IS HOURS, AND RF IS MM/HOUR ! + + + LOCAL VARIABLES + + + INTEGER I REAL DELTFQ, TIMEDL(NR), INTDL(NR) ! + + + LOCAL DEFINITIONS + + + ! I - INTEGER VALUE FOR LOCAL LOOP ! DELTFQ - REAL VALUE FOR INCREMENTAL NORMALIZED RAINFALL DEPTH ! INTDL() - REAL ARRAY FOR DIMENSIONLESS RAINFALL INTENSITY ! TIMEDL() - REAL ARRAY FOR DIMENSIONLESS ELAPSED TIME ! + + + END SPECIFICATIONS + + + ! INITIALIZE VARIABLES DELTFQ = 1.0 / FLOAT(NR-1) TIMEDL(1) = 0.0 INTDL(NR) = 0.0 IF (IP.LE.1.0) THEN CALL CONST(NR, DELTFQ, TIMEDL, INTDL) ELSE CALL DBLEX(NR, DELTFQ, TIMEDL, INTDL, TPD, IP) END IF ! MAKE SURE LAST INTENSITY VALUE IS 0.0 INTDL(NR) = 0.0 ! CALCULATE ACTUAL TIME AND INTENSITY DO I = 1, NR TRF(I) = TIMEDL(I) * DURD if( DURD .LE. 0.0 ) then ! duration is required to get rain, so zero it out RF(I) = 0.0 else RF(I) = INTDL(I) * P / DURD end if END DO RETURN END