CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C TYPE 17 - MODIFIED BIN SORTER C C THIS COMPONENT WILL SORT DATA INTO BINS AND CALCULATE THE TOTAL TIME THAT C A VARIABLE VALUE IS BETWEEN THE LOW AND HIGH LIMITS OF EACH BIN C C SAMPLE INPUT AND OUTPUT VALUES HAVE BEEN ADDED FOLLOWING THE NOMENCLATURE C C CREATED BY: C PAUL KNOESPEL C C CREATED ON: C MAY 9, 1990 C C MODIFIED ON / BY / REASON: C C C VARIABLE LISTING C C I - INPUT VALUE C C - CALCULATED VALUE C C BIN C ACCUMULATED TIME VARIABLE VALUE IS BETWEEN BIN LIMITS C BINLIMIT C DIVISION BETWEEN BINS (VARIABLE UNITS) C DBIN C WIDTH OF A BIN (VARIABLE UNITS) C DTDT C TRNSYS VARIABLE - NOT USED C HILIMIT I HIGH VALUE OF THE LAST BIN (VARIABLE UNITS) C HODOFF I HOUR OF THE DAY TO END TRACKING (HR) C HODON I HOUR OF THE DAY TO START TRACKING (HR) C HOWOFF I HOUR OF THE WEEK TO END TRACKING (HR) C HOWON I HOUR OF THE WEEK TO START TRACKING (HR) C I C BIN NUMBER INDEX C INFO C TRNSYS TYPE INFORMATION C J C VARIABLE NUMBER INDEX C LOLIMIT I LOW VALUE OF THE FIRST BIN (VARIABLE UNITS) C LU I FORTRAN LOGICAL UNIT FOR OUTPUT C NBIN I NUMBER OF TIME BINS INTO WHICH THE VARIABLES ARE SORTED C ND C NUMBER OF DERIVATIVES C NI C NUMBER OF INPUTS C NP C NUMBER OF PARAMETERS C NVAR I NUMBER OF VARIABLES TO BE TRACKED C OUT C OUTPUT ARRAY TO TRNSYS C PAR I CONSTANT INPUT ARRAY FROM TRNSYS C T C TRNSYS VARIABLE - NOT USED C TEND I SIMULATION TIME TO END TRACKING (HR) C TIME I SIMULATION TIME (HR) C TIMEPREV C SIMULATION TIME OF THE PREVIOUS SUBROUTINE CALL (HR) C TSTART I SIMULATION TIME TO START TRACKING (HR) C XIN I INPUT ARRAY FROM TRNSYS C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C SAMPLE INPUT AND OUTPUT VALUES C C PARAMETERS SAMPLE VALUES C PAR(1) TSTART 0.0 C PAR(2) TEND 400.0 C PAR(3) HOWON 0.0 C PAR(4) HOWOFF 60.0 C PAR(5) HODON 8.0 C PAR(6) HODOFF 17.0 C PAR(7) LUNIT 21 C PAR(8) NVAR 2.0 C PAR(9) LOLIM .11 C PAR(10) HILIM .21 C PAR(11) NBIN 5.0 C C INPUTS C XIN(1) CZONE1 STEP FUNCTION C PERIOD = 8 HOURS C NUMBER OF EQUAL STEPS = 4 C VALUES = .05 .1 .15 .2 C XIN(2) CZONE2 STEP FUNCTION C PERIOD = 8 HOURS C NUMBER OF EQUAL STEPS = 4 C VALUES = 0.0 .1 .2 .3 C C SIMULATION: TIME STEP = 1HR, LENGTH = 410HRS, PRINT INTERVAL = 1HR C C GENERATED OUTPUT C C1 INPUT NUMBER 1 C BELOW .11 - 42.0 C .11 TO .13 - 00.0 C .13 TO .15 - 00.0 C .15 TO .17 - 12.0 C .17 TO .19 - 00.0 C .19 TO .21 - 12.0 C ABOVE .21 - 00.0 C1 INPUT NUMBER 2 C BELOW .11 - 42.0 C .11 TO .13 - 00.0 C .13 TO .15 - 00.0 C .15 TO .17 - 00.0 C .17 TO .19 - 00.0 C .19 TO .21 - 12.0 C ABOVE .21 - 12.0 C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE TYPE17(TIME,XIN,OUT,T,DTDT,PAR,INFO,ICNTRL,*) IMPLICIT NONE INTEGER NI, NP, ND, INFO(15) INTEGER NVAR, NBIN, I, J,LUW,LUK,IFORM,LUR REAL TIME, XIN(25), OUT(20), T, DTDT,ICNTRL, PAR(11) REAL TSTART, TEND, HOWON, HOWOFF, HODON, HODOFF, HOW, HOD REAL LOLIMIT, HILIMIT, TIMEPREV REAL BIN(0:51,25), BINLIMIT(0:50), DBIN COMMON /LUNITS/LUR,LUW,IFORM,LUK C C SET PARAMETERS AND PERFORM CHECKS ON THE FIRST CALL OF THE SIMULATION C IF(INFO(7).EQ.-1)THEN TSTART = PAR(1) TEND = PAR(2) HOWON = PAR(3) HOWOFF = PAR(4) HODON = PAR(5) HODOFF = PAR(6) NVAR = NINT(PAR(8)) LOLIMIT = PAR(9) HILIMIT = PAR(10) NBIN = NINT(PAR(11)) IF (NBIN .GT. 50) NBIN = 50 NI = NVAR NP = 11 ND = 0 INFO(6) = 0 INFO(9) = 2 CALL TYPECK(1,INFO,NI,NP,ND) DO 5 I = 0, NBIN+1 DO 5 J = 1, NVAR BIN(I,J) = 0.0 5 CONTINUE TIMEPREV = 0.0 BINLIMIT(0) = LOLIMIT DBIN = (HILIMIT - LOLIMIT) / FLOAT(NBIN) DO 10 I = 1, NBIN BINLIMIT(I) = BINLIMIT(I-1)+DBIN 10 CONTINUE ENDIF HOW = AMOD(TIME,168.0) HOD = AMOD(TIME,24.0) C C SORT INPUT VALUES AT EACH TIME STEP THAT MEETS THE WEEKLY AND DAILY C TIME REQUIREMENTS C IF (((TIME .GT. TSTART) .AND. (TIME .LE. TEND)) .AND. . ((HOW .GT. HOWON) .AND. (HOW .LE. HOWOFF)) .AND. . ((HOD .GT. HODON) .AND. (HOD .LE. HODOFF))) THEN DO 20 J = 1, NVAR IF (XIN(J) .LT. BINLIMIT(0)) BIN(0,J)=BIN(0,J)+(TIME-TIMEPREV) DO 15 I = 1, NBIN IF ((XIN(J) .GT. BINLIMIT(I-1)) .AND. . (XIN(J) .LE. BINLIMIT(I))) THEN BIN(I,J) = BIN(I,J) + (TIME-TIMEPREV) ENDIF 15 CONTINUE IF (XIN(J) .GT. BINLIMIT(NBIN)) BIN(NBIN+1,J) = . BIN(NBIN+1,J) + (TIME-TIMEPREV) 20 CONTINUE ENDIF TIMEPREV = TIME IF (TIME .EQ. TEND) THEN DO 30 J = 1, NVAR WRITE(LUW,200) J WRITE(LUW,210) BINLIMIT(0), BIN(0,J) DO 25 I = 1, NBIN WRITE(LUW,220) BINLIMIT(I-1), BINLIMIT(I), BIN(I,J) 25 CONTINUE WRITE(LUW,230) BINLIMIT(NBIN), BIN(NBIN+1,J) 30 CONTINUE ENDIF 200 FORMAT('1', 9X, 'INPUT NUMBER ', I2) 210 FORMAT(10X, 'BELOW', 8X, F9.6, ' - ', F8.2) 220 FORMAT(10X, F9.6, ' TO ', F9.6, ' - ', F8.2) 230 FORMAT(10X, 'ABOVE', 8X, F9.6, ' - ', F8.2) RETURN 1 END C1 INPUT NUMBER 1 C BELOW 0.110000 - 42.00 C 0.110000 TO 0.130000 - 0.00 C 0.130000 TO 0.150000 - 0.00 C 0.150000 TO 0.170000 - 12.00 C 0.170000 TO 0.190000 - 0.00 C 0.190000 TO 0.210000 - 12.00 C ABOVE 0.210000 - 0.00 C1 INPUT NUMBER 2 C BELOW 0.110000 - 42.00 C 0.110000 TO 0.130000 - 0.00 C 0.130000 TO 0.150000 - 0.00 C 0.150000 TO 0.170000 - 0.00 C 0.170000 TO 0.190000 - 0.00 C 0.190000 TO 0.210000 - 12.00 C ABOVE 0.210000 - 12.00 C1 INPUT NUMBER 1 C BELOW 0.110000 - 42.00 C 0.110000 TO 0.130000 - 0.00 C 0.130000 TO 0.150000 - 0.00 C 0.150000 TO 0.170000 - 12.00 C 0.170000 TO 0.190000 - 0.00 C 0.190000 TO 0.210000 - 12.00 C ABOVE 0.210000 - 0.00 C1 INPUT NUMBER 2 C BELOW 0.110000 - 42.00 C 0.110000 TO 0.130000 - 0.00 C 0.130000 TO 0.150000 - 0.00 C 0.150000 TO 0.170000 - 0.00 C 0.170000 TO 0.190000 - 0.00 C 0.190000 TO 0.210000 - 12.00 C ABOVE 0.210000 - 12.00 C