! This component has been assigned Type Number 201. If that number conflicts with ! another user Type number, you will need to change it and recompile the appropriate ! dll. SUBROUTINE TYPE201(TIME,XIN,OUT,T,DTDT,PAR,INFO,ICNTRL,*) !DEC$ATTRIBUTES DLLEXPORT :: TYPE201 C******************************************************************************* C C WRITTEN IN THE DARK AGES OF TRNSYS HISTORY. C MODIFIED DEC. 1989 BY RUTH URBAN TO ACCEPT ENGLISH UNITS, WHICH REQUIRED C UNTANGLING THE CODE. C MODIFIED 12/92 BY STUART FRYE FOR YAZAKI AROACE WFC-10 TON CHILLER C C******************************************************************************* C APRCH COOLING TOWER APPROACH TO AMBIENT WET BULB TEMPERATURE C BAND TEMPERATURE DEAD BAND FOR PRIMARY SOURCE CONTROLLER C C1,C2,C3 REGRESSION COEFFICIENTS FOR THE COP OF THE CHILLER C B1,B2,B3 REGR. COEFF. FOR THE (ACTUAL/NOMINAL) CAPACITY OF THE CHILLER C -THESE COEFFICIENTS WERE ESTIMATED FOR THE YAZAKI 10-TON C ABSORPTION CHILLER MODEL# WFC-10 FOR A CHILLED WATER OUTLET C TEMPERATURE OF 9 DEGRESS CELCIUS (48.2F) C C CAP NOMINAL CAPACITY OF MODEL CHILLER C CAPY NOMINAL CAPACITY OF ACTUAL CHILLER C CAPMAX RATIO OF MAXIMUM CAPACITY TO NOMINAL CAPACITY (OF MODEL) C CP HEAT CAPACITY OF WATER C FLO NOMINAL FIRING WATER FLOW RATE C FLOW FIRING WATER FLOW RATE C IUNITS FLAG FOR UNITS USED: C 1 - SI C 2 - ENGLISH C LOFLAG FLAG FOR OPERATING CHILLER ON SOLAR SOURCE: C 0 - MEANS SOLAR SOURCE IS BELOW MINIMUM TEMP C 1 - MEANS SOLAR SOURCE IS ABOVE MINIMUM TEMP, AND CHILLER IS C ABLE TO OPERATE ON SOLAR SOURCE. C L1 VALUE OF LOFLAG FROM THE LAST CALL TO UNIT C TAUX AUXILIARY HEAT SUPPLY TEMPERATURE C TCOND CONDENSING WATER INLET TEMPERATURE C TCROSS CROSSOVER TEMPERATURE FOR AUXILIARY C TG STEADY STATE GENERATOR TEMPERATURE, MODELLED AS C BEING EQUAL TO 0.83*(FIRING WATER INLET TEMP)+0.17*(TC) C TGENIN FIRING WATER INLET TEMPERATURE C TGMIN MINIMUM GENERATOR SOLUTION TEMPERATURE FOR OPERATION C OF CHILLER C THMIN \ C THMAX ! MINIMUM AND MAXIMUM FIRING WATER AND CONDENSING WATER C TCMIN ! INLET TEMPERATARES, RESPECTIVELY C TCMAX / C TS STEADY-STATE GENERATOR TEMPERATURE C TTMIN MINIMUM PRIMARY SOURCE TERMPERATURE REQUIRED FOR COOLING C UA ACTUAL GENERATOR HEAT EXCHANGE UA DIVIDED BY C NOMINAL CHILLER CAPACITY C C C C Revision history C ---------------- C C 2002/05/13 - MKu - Declared XIN and OUT as double precision C C REAL FCAPAV,TCOLD,QCOOL,QGEN,T,DTDT,ICNTRL REAL COP,TG,TC REAL AFLAG,QAUX,CAPY,TIMH,TIMC,TTMIN,BAND,TAUX,APRCH,TCROSS REAL THOT,HFLOW,TWB,QLOAD,TAMB,ON,AUXON,FLONOM,FLO,CAP,TCOND REAL TCMAX,THMIN,FLOAD,CAPMAX,FLOW,TGENIN,THMAX,TCMIN REAL TS,TGMIN,TGFIN,TGAVG,CAPAV,QNORM,UA,TIMEOP,TAVOP,FRAC REAL Q1,Q2,CP REAL LBTOKG,KGTOLB,CTOF,BTUTOK,KTOBTU INTEGER IAUX,NP,NI,M,IUNITS,L1,LOFLAG INTEGER INFO(15) REAL PAR(12),TIME,TIME0,TIMEH,STEP,TINIT DOUBLE PRECISION B11,B12,B13,B21,B22,B23,B31,B32,B33 DOUBLE PRECISION C11,C12,C13,C21,C22,C23,C31,C32,C33 DOUBLE PRECISION XIN(10),OUT(15) COMMON/SIM/TIME0,TIMEH,STEP DATA CP/4.19/,CAP/125461./,FLO/8581.1/,TGMIN/68.3/,CAPMAX/1.68 $ /,UA/.056/,THMIN/75./,THMAX/100./,TCMIN/24./,TCMAX/31. $ /,QAUX/0./,LOFLAG/1/,L1/1/ C DATA B11/-837.700835563040/ DATA B12/62.44913355376900/ DATA B13/-1.16511866299418/ DATA B21/20.70003048015300/ DATA B22/-1.54133547349260/ DATA B23/0.02870862046600/ DATA B31/-0.12844864014491/ DATA B32/0.00957923488008/ DATA B33/-0.00017829693221/ DATA C11/-192.27080050634000/ DATA C12/15.75201979788600/ DATA C13/-0.32432571695273/ DATA C21/4.50355981044050/ DATA C22/-0.36800653539933/ DATA C23/0.00759050000133/ DATA C31/-0.02694397549795/ DATA C32/0.00220058319690/ DATA C33/-0.00004537094608/ C DATA CTOF/1.8/,BTUTOK/1.055/,LBTOKG/0.45216/ DATA KGTOLB/2.21161/,KTOBTU/0.947867/ C C DEFINE COEFFICIENT OF PERFORMANCE FUNCTION (CURVEFIT) COP(TG,TC) = C11+C12*TC+C13*TC*TC + & (C21+C22*TC+C23*TC*TC)*TG + & (C31+C32*TC+C33*TC*TC)*TG*TG C DEFINE FUNCTION (CURVE FIT) FOR ACTUAL CAPACITY / RATED CAPACITY FCAPAV(TC,TG)=B11+B12*TC+B13*TC**2 + & (B21+B22*TC+B23*TC**2)*TG + & (B31+B32*TC+B33*TC**2)*TG*TG ! Set the version information for TRNSYS IF (INFO(7).EQ.-2) THEN INFO(12) = 15 RETURN 1 ENDIF C SET UP THE USUAL TRNSYS TYPE STUFF IF (INFO(7) .EQ. -1) THEN INFO(6)=6 INFO(9)=1 ENDIF C GET PARAMETER VALUES, AND DO CONVERSIONS IF NECESSARY: IAUX=IFIX(PAR(1)) C ABORT IF ERROR IN SPECIFYING IAUX IF(IAUX.EQ.0.OR.IABS(IAUX).GT.4)CALL TYPECK(-4,INFO,0,0,0) CAPY=PAR(2) IF(IAUX.GE.0)THEN NP = 7 NI = 4 M=0 TIMH=.0001 TIMC=.0001 ELSE M=3 NP = 10 NI = 6 TIMH=PAR(3) TIMC=PAR(4) IF (TIME .LE. TIME0) THEN TINIT = PAR(5) ELSE IF (INFO(7).EQ.0) THEN TINIT=OUT(6) ELSE IF(INFO(7).GT.0) THEN TINIT=OUT(14) ENDIF ENDIF TTMIN=PAR(M+3) BAND=PAR(M+4) TAUX=PAR(M+5) APRCH=PAR(M+6) TCROSS=PAR(M+7) IF (INFO(4) .EQ. NP+1) THEN NP = NP + 1 IUNITS=PAR(M+8) ELSE IUNITS = 1 ENDIF IF(INFO(7).EQ.-1)CALL TYPECK(1,INFO,NI,NP,0) IF (IUNITS .EQ. 2) THEN IF (IAUX .LE. 0) THEN TIMH = (TIMH - 32.0) / CTOF TIMC = (TIMC - 32.0) / CTOF TINIT = (TINIT - 32.0) / CTOF ENDIF TTMIN = (TTMIN -32.0) / CTOF BAND = BAND / CTOF TAUX = (TAUX - 32.0) / CTOF APRCH = (APRCH - 32.0) / CTOF TCROSS = (TCROSS - 32.0) / CTOF ENDIF IF(TIMH.LE.0.0) TIMH=.133 IF(TIMC.LE.0.0) TIMC=1.05 C GET INPUTS: THOT=XIN(1) HFLOW=XIN(2) TWB=XIN(3) IF (IAUX .GT. 0) THEN QLOAD=XIN(4) ELSE TAMB=XIN(4) ON=XIN(5) AUXON=XIN(6) ENDIF C CONVERT INPUT INFO IF NECESSARY IF (IUNITS .EQ. 2) THEN THOT=(THOT-32.)/CTOF HFLOW=HFLOW*LBTOKG TWB=(TWB-32.)/CTOF IF (IAUX .GT. 0) THEN QLOAD=QLOAD * BTUTOK ELSE TAMB = (TAMB -32.0) / CTOF ENDIF ENDIF C DO INITIAL CALCULATIONS FLONOM=CAPY*FLO/CAP TCOND=TWB+APRCH QAUX=0. AFLAG=0. C C IF TCOND IS GREATER THAN TCMAX, THERE IS NO POINT IN CONTINUING IF (TCOND .GT. TCMAX) GOTO 30 C ADJUST TTMIN IF NECESSARY IF (TTMIN.LT.THMIN) TTMIN=THMIN C CALCULATE STATE OF SOLAR-SOURCE TEMPERATURE CONTROLLER C FIRST GET PREVIOUS STATE OF LOFLAG IF (INFO(7).EQ.-1) THEN L1=1 ELSE L1=IFIX(REAL(OUT(11))) ENDIF IF(INFO(7).GT.8) THEN C STICK VALUE IF MORE THAN 8 ITERATIONS LOFLAG=IFIX(REAL(OUT(11))) ELSE IF( ((THOT.LE.TTMIN+BAND).AND.(L1.EQ.0)) .OR. . (THOT.LE.TTMIN) ) THEN LOFLAG=0 ELSE LOFLAG=1 ENDIF C CALCULATE ON/OFF SIGNAL IF NECESSARY IF((IAUX.EQ.4).AND.(LOFLAG.EQ.0)) THEN ON=0. ELSE IF (IAUX .GT. 0) THEN ON=1. ENDIF C NO POINT IN GOING ANY FARTHER IF THE CHILLER IS IDLE IF(ON.LT.0.5) GO TO 30 IF(IAUX.LT.0) THEN C TEMPERATURE RATE CONTROL: IF(LOFLAG.EQ.0)AUXON=1. FLOAD = CAPMAX FLOW=FLONOM TGENIN=THOT C ADJUST TGENIN AND TCOND IF NECESSARY IF(TGENIN.GT.THMAX)TGENIN=THMAX IF(TCOND.LT.TCMIN)TCOND=TCMIN C FOR IAUX = -3, -2 OR -1: AUXILIARY IF(IAUX .NE. -4) THEN IF(AUXON.GT.0.5.AND.TAUX.GT.THOT)AFLAG=1. IF(IABS(IAUX).EQ.1.OR. . (IAUX.EQ.3.AND.TGENIN.GE.TCROSS)) . QAUX=FLOW*CP*(TAUX-THOT)*AFLAG TGENIN=THOT+(TAUX-THOT)*AFLAG ENDIF C FOR ALL IAUX: C CALCULATE TS TS=0.83*TGENIN+0.17*TCOND IF(ABS(TS-TGMIN).LE..1)TS=TGMIN +.1 C IN TEMPERATURE LEVEL CONTROL MODE, CHILLER STARTUP TRANSIENTS ARE C MODELLED AS A FUNCTION OF GENERATOR SOLUTION TEMPERATURE. TGFIN=TS+(TINIT-TS)*EXP(-STEP/TIMH) TGAVG=TS+(TIMH/STEP)*(TINIT-TS)*(1.-EXP(-STEP/TIMH)) C TAKE CARE OF CASES WHERE 'DIVIDE BY 0' ERRORS MIGHT OCCUR IF(ABS(TS-TINIT).LE.1.) THEN CAPAV=FCAPAV(TCOND,TGAVG) IF(TGAVG.LT.TGMIN)THEN CAPAV=0. QNORM=UA*(TGENIN-TGAVG) ELSE IF (CAPAV .GT. CAPMAX)CAPAV=CAPMAX QNORM = CAPAV/COP(TGAVG,TCOND) ENDIF C AGAIN--ANOTHER CASE IN WHICH 'DIVIDE BY 0' ERRORS MIGHT OCCUR ELSE IF (TINIT.LT.TGMIN .AND.ABS(TS-TGMIN ).LT.1.)THEN CAPAV=0. QNORM=UA*(TGENIN-TGAVG) ELSE IF (TGAVG.GT.TGMIN.AND.TGFIN.GT.TGMIN. . AND.TINIT.GT.TGMIN)THEN CAPAV=FCAPAV(TCOND,TGAVG) IF(CAPAV.GT.CAPMAX) CAPAV=CAPMAX QNORM=CAPAV/COP(TGAVG,TCOND) ELSE IF (TINIT.LT.TGMIN.AND.TGFIN.GT.TGMIN) THEN TIMEOP=STEP+TIMH*ALOG((TS-TGMIN)/(TS-TINIT)) FRAC=TIMEOP/STEP TAVOP=TS+(TIMH/TIMEOP)*(TGMIN-TS)* . (1.-EXP(-TIMEOP/TIMH)) CAPAV=FCAPAV(TCOND,TAVOP) IF(CAPAV.GT.CAPMAX)CAPAV=CAPMAX CAPAV=CAPAV*FRAC Q2=CAPAV/COP(TAVOP,TCOND) Q1=UA*(1.-FRAC)*(TGENIN-TGAVG) QNORM=Q1+Q2 ELSE IF (TINIT.GT.TGMIN .AND. TGFIN.LT.TGMIN) THEN TIMEOP=-TIMH*ALOG((TGMIN-TS)/(TINIT-TS)) TAVOP=TS+(TIMH/TIMEOP)*(TINIT-TGMIN)* . EXP(-TIMEOP/TIMH) FRAC=TIMEOP/STEP CAPAV=FCAPAV(TCOND,TAVOP) IF(CAPAV.GT.CAPMAX)CAPAV=CAPMAX CAPAV=CAPAV*FRAC Q2=CAPAV/COP(TAVOP,TCOND) Q1=UA*(1.-FRAC)*(TGENIN-TGAVG) QNORM=Q1+Q2 ELSE CAPAV=0. QNORM=UA*(TGENIN-TGAVG) ENDIF ELSE C ENERGY RATE CONTROL: FLOAD=QLOAD/CAPY IF (QLOAD.LE.0.) THEN C NO POINT IN CONTINUING IF NO LOAD ON = 0. GOTO 30 ELSE FLOW=FLONOM IF(TGENIN.GT.THMAX)THEN TGENIN=THMAX ELSE TGENIN=THOT ENDIF IF(TCOND.LT.TCMIN)TCOND=TCMIN TS=0.83*TGENIN+0.17*TCOND C IN ENERGY RATE CONTROL, THE CHILLER RESPONDS INSTANTLY. IF (IAUX .NE. 4) THEN IF(LOFLAG.EQ.0.AND.TAUX.GT.THOT)AFLAG=1. IF (((FCAPAV(TCOND,TS)-QLOAD/CAPY ).LE.0) .AND. . (TAUX.GT.THOT)) AFLAG=1. IF(IABS(IAUX).EQ.1.OR. . (IAUX.EQ.3.AND.TGENIN.GE.TCROSS)) . QAUX=FLOW*CP*(TAUX-THOT)*AFLAG TGENIN=THOT+(TAUX-THOT)*AFLAG ENDIF TGAVG=TS TINIT=TS TGFIN=TS IF(TGAVG.LT.TGMIN)THEN CAPAV=0. QNORM=UA*(TGENIN-TGAVG) ELSE CAPAV=FCAPAV(TCOND,TGAVG) IF (CAPAV .GT. CAPMAX) CAPAV=CAPMAX IF (CAPAV .GT. FLOAD) THEN FRAC = FLOAD/CAPMAX CAPAV = CAPAV * FRAC ENDIF QNORM = CAPAV/COP(TGAVG,TCOND) ENDIF ENDIF ENDIF GOTO 1100 C CHILLER IS IDLE--SET QUANTITIES TO 0 30 FLOW=0. TCOLD=THOT IF (IAUX.LT.0)TGFIN=TAMB+(TINIT-TAMB)*EXP(-STEP/TIMC) QCOOL=0. QGEN=0. QAUX=0. GO TO 3000 C FINISH UP (MOST TIMES) 1100 QGEN=QNORM*CAPY QCOOL=CAPAV*CAPY IF((IABS(IAUX).EQ.2.OR. . (IABS(IAUX).EQ.3.AND.THOT.LT.TCROSS)) . .AND.(AFLAG.GE.0.5)) THEN QAUX=QGEN FLOW=0. TCOLD=THOT ELSE TCOLD=THOT-(QGEN-QAUX)/(FLOW*CP) ENDIF C SET OUTPUTS 3000 IF (IUNITS .EQ. 2) THEN TCOLD = TCOLD * CTOF + 32.0 FLOW = FLOW * KGTOLB QCOOL = QCOOL * KTOBTU QGEN = QGEN * KTOBTU QAUX = QAUX * KTOBTU TGFIN = TGFIN * CTOF + 32.0 TINIT = TINIT * CTOF + 32.0 ENDIF OUT(1) = TCOLD OUT(2) = FLOW OUT(3) = QCOOL OUT(4) = QGEN OUT(5) = QAUX OUT(14)=TINIT OUT(6)=TGFIN OUT(11)=FLOAT(LOFLAG) OUT(12)=FLOAT(L1) RETURN 1 END