C*********************************************************************** ! This component has been assigned Type Number 212. If that number conflicts with ! another user Type number, you will need to change it and recompile the appropriate ! dll. SUBROUTINE TYPE212(TIME,XIN,OUT,T,DTDT,PAR,INFO,ICNTRL,*) !DEC$ATTRIBUTES DLLEXPORT :: TYPE212 C ---------------------------------------------------------------------- C C TYPE 212 : MIXING DAMPERS and MERGE MODEL C C*********************************************************************** DOUBLE PRECISION XIN,OUT REAL PAR REAL K C INTEGER IOSTAT DIMENSION XIN(6),OUT(4),PAR(3) C DIMENSION IOSTAT(6) ! Set the version information for TRNSYS IF (INFO(7).EQ.-2) THEN INFO(12) = 15 RETURN 1 ENDIF P1= XIN(1) P2= XIN(2) P3= XIN(3) T1= XIN(4) T2= XIN(5) C= XIN(6) IF (T1 .LT. -30.) T1=-30. ! added 2/25/94 IF (T1 .GT. 120.) T1=120. IF (T2 .LT. -30.) T2=-30. IF (T2 .GT. 120.) T2=120. K= PAR(1) CL= PAR(2) WF= PAR(3) IF (C.LT.0.) C=0.0 IF (C.GT.1.0) C=1.0 DP=P1-P3 S=1.0 IF (DP.NE.0.) S=SIGN(1.0,DP) R1=WF*K/((1.-CL)*C+CL)**2 + (1.-WF)*K*CL**(2.*C-2.) R2=WF*K/((1.-CL)*(1.-C)+CL)**2 + (1.-WF)*K*CL**(-2.*C) W1=S*SQRT(ABS(DP)/R1) DP=P2-P3 S=1.0 IF (DP.NE.0) S=SIGN(1.0,DP) W2=S*SQRT(ABS(DP)/R2) W3=W1+W2 T3=T1*C+T2*(1.-C) ! changed 2/25/94 IF (C.EQ.1.0.OR.C.LE..03) GOTO 100 C T3=(T1+T2)/2. IF (W3.GT.1.0E-5) THEN IF (W1.LT.0.0) W1=0.0 IF (W2.LT.0.0) W2=0.0 W3=W1+W2 T3=(W1*T1+W2*T2)/W3 ENDIF C ------------------------------------------------------ 100 OUT(1)= W1 OUT(2)= W2 OUT(3)= W3 OUT(4)= T3 C DO 10 I=1,4 C IOSTAT(I)=1 C 10 CONTINUE RETURN 1 END