C*********************************************************************** SUBROUTINE TYPE10(TIME,XIN,OUT,T,DTDT,PAR,INFO,ICNTRL,*) C ---------------------------------------------------------------------- C C TYPE 10 : HOT WATER COIL MODEL (CROSSFLOW) C DERIVATIVES CHANGED FOR TRNSYS USE - 6-22-95 C*********************************************************************** DOUBLE PRECISION XIN,OUT REAL PAR,K1,K2,NTU INTEGER INFO C INTEGER IOSTAT C LOGICAL FLO1,FLO2,TEM1,TEM3,FRZDE DIMENSION XIN(8),OUT(4),PAR(5),INFO(15) C DIMENSION IOSTAT(8) C* COMMON /PROPER/ RHOA,RHOW,CPA,CPW C* COMMON /SOSCOM/ RTOLX,ATOLX,XTOL COMMON /SIM/ TIME0,TFINAL,DELT,IWARN C The RHOA,RHOW,CPA,CPW properties @300 K, 1 atm C The units are: C RHOW - kg/m^3 C CPA,CPW - kJ/kg-K DATA RHOW,CPA,CPW /999,1.007,4.179/ P2= XIN(1) W1= XIN(2) T1= XIN(3) T2= XIN(4) P4= XIN(5) W2= XIN(6) T3= XIN(7) T4= XIN(8) UA= PAR(1) K1= PAR(2) K2= PAR(3) VOL= PAR(4) TCON=PAR(5) IF (W1.LT.1.E-5) W1=0. ! added 2/24/94 IF (W2.LT.1.E-5) W2=0. C FLO1=(IOSTAT(2).LT.-1).OR.(IOSTAT(2).EQ.2) C FLO2=(IOSTAT(3).LT.-1).OR.(IOSTAT(3).EQ.2) C TEM1=(IOSTAT(6).LT.-1).OR.(IOSTAT(6).EQ.2) C TEM3=(IOSTAT(7).LT.-1).OR.(IOSTAT(7).EQ.2) C FRZDE=FLO1.AND.FLO2.AND.TEM1.AND.TEM3 S=1. IF (W1.NE.0.) S=SIGN(1.,W1) P1=P2+S*K1*W1**2 S=1. IF (W2.NE.0.) S=SIGN(1.,W2) P3=P4+S*K2*W2**2 C1=CPA*W1 C2=CPW*W2 RATE=0. IF (TCON.GT.0.) RATE=RATE+1./TCON IF (VOL.GT.0.) RATE=RATE+W2/(RHOW*VOL) CMIN=AMIN1(C1,C2) CMAX=AMAX1(C1,C2) IF ((C1.LE.0.).OR.(C2.LE.0.)) GOTO 1000 NTU=UA/CMIN ETA=NTU**0.22 R=CMIN/CMAX E1=0. E2=0. A=R*NTU/ETA IF (A.GT.20.) GOTO 2000 E1=EXP(-A) 2000 A=ETA*(1.-E1)/R IF (A.GT.20.) GOTO 2001 E2=EXP(-A) 2001 EFEC=1.-E2 T2S=T1+EFEC*CMIN*(T3-T1)/C1 T4S=T3-C1*(T2S-T1)/C2 GOTO 3000 1000 T2S=T1 T4S=T3 3000 IF (RATE.LE.0.) GOTO 4000 DT2DT=(T2S-T2)*RATE DT4DT=(T4S-T4)*RATE *BECAUSE DERIVATIVES CALCULATED IN MAIN HVACSIM+ ROUTINE, WE HAVE APPROXIMATED *IT WITH THE CODE BELOW. CLG + NJB * T4 OUT = T4OLD + dT/tau*(Twss - twout) IF(INFO(7).EQ.-1) THEN OUT(1)=T2 OUT(2)=T4 T4OLD=OUT(2) T2OLD=OUT(1) ENDIF IF (INFO(7).EQ.0.0) THEN T4OLD=OUT(2) T2OLD=OUT(1) ENDIF T4=(DELT*T4S + TCON*T4OLD)/(TCON + DELT) T2=(DELT*T2S + TCON*T2OLD)/(TCON + DELT) C IF (ABS(DT2DT).LT.ATOLX) DT2DT=0.0 ! added 2/24/94 C IF (ABS(DT4DT).LT.ATOLX) DT4DT=0.0 C OUT(1)=DT2DT C OUT(2)=DT4DT OUT(1)=T2 OUT(2)=T4 OUT(3)=P1 OUT(4)=P3 C IOSTAT(1)=0 C IF ((ABS(T2S-T2).LE.RTOLX*ABS(T2)+ATOLX).AND.FRZDE) IOSTAT(1)=1 C IOSTAT(2)=0 C IF ((ABS(T4S-T4).LE.RTOLX*ABS(T4)+ATOLX).AND.FRZDE) IOSTAT(2)=1 C IOSTAT(3)=1 C IOSTAT(4)=1 RETURN 1 4000 OUT(1)=T2S OUT(2)=T4S OUT(3)=P1 OUT(4)=P3 C DO 10 I=1,4 C IOSTAT(1)=1 C 10 CONTINUE RETURN 1 END