CONTINUOUS_MODEL HCSIM ABSTRACT " Purpose: This NMF model is to model a simple heat exchanger using NTU-method of analysis. Limits: See above. Reference: ASHRAE HVAC 2 TOOLKIT Pages 4-69 - 4-74 Date: April 10, 1997 rev 1.0 Feb 9, 2001 rev 1.2 Made by: Mika Vuolle Jari Hyttinen Call: UAHX - XITERATE Revision: ver 1.1 The ExpHelp variables are introduced to get model numerically working ver 1.2 CAirMin-mode is introduced and CRatio, NTU, CMin, CMax and effectiviness calculations are revised to improve stability. Furher investigations are needed. History (in reverse order): 011019 LEn Bug in linear relation between massflow and pressure. Coefficient k_lin changed from SQRT(dP0*k) to 1.0/SQRT(dP0*k). " EQUATIONS /* Thermal related */ CapAir := mAir * (cp_air + WAir * cp_vap); CapLiq := mLiq * cp_liq; /************************ BEGIN OF HEATEX ************************/ CMin := MAX(CAirMin * CapAir + (1-CAirMin) * CapLiq, 1E-8); /* MAX(MIN(CapAir,CapLiq),1E-8); */ CMax := CAirMin * CapLiq + (1-CAirMin) * CapAir; /* MAX(CapAir,CapLiq); */ CRatio := IF (CMin/CMax < 1E-3) THEN 1E-3+((CMin/CMax)-1E-3)*1E-6 ELSE CMin / CMax END_IF; NTU := IF (UA/CMin) > 1E6 THEN 1E6 + ((UA/CMin)-1E6)*1E-2 ELSE_IF CMin < SMALL THEN 1E+6 ELSE UA/CMin END_IF; Eta:= NTU**(-0.22); IF LINEARIZE(1) THEN Effectiviness := 1; ELSE_IF ConfigHX < 0.5 THEN ExpHelp1 := -NTU; Effectiviness := IF ExpHelp1 < -5 THEN 1 ELSE 1 - EXP(-NTU) END_IF; ELSE_IF ConfigHX < 1.5 THEN ExpHelp1 := -NTU*(1-CRatio); Effectiviness := IF ABS(CRatio-1) < SMALL THEN NTU / (NTU+1) ELSE_IF ExpHelp1 < -5 THEN 1 ELSE (1 - EXP(-NTU*(1-CRatio)))/ (1 - CRatio*EXP(-NTU*(1-CRatio))) END_IF; ELSE_IF ConfigHX < 2.5 THEN ExpHelp1 := -NTU*(1+CRatio); Effectiviness := IF ExpHelp1 < -5 THEN 1 / (1+CRatio) ELSE (1-EXP(-NTU*(1+CRatio))) / (1+CRatio); END_IF; ELSE_IF ConfigHX < 3.5 THEN ExpHelp1:=-NTU*CRatio*Eta; ExpHelp2:= IF ExpHelp1 < -5 THEN (EXP(-5+(ExpHelp1+5)*1e-32) - 1) / (CRatio*Eta) ELSE_IF ExpHelp1 > -0.01 THEN (EXP(-0.01+(ExpHelp1+0.01)*1e-32) - 1) / (CRatio*Eta) ELSE (EXP(ExpHelp1)-1)/(CRatio*Eta) END_IF; Effectiviness := IF ExpHelp2 < -5 THEN 1 - EXP(-5+(ExpHelp2+5)*1e-32) ELSE_IF ExpHelp2 > -0.01 THEN 1 - EXP(-0.01+(ExpHelp2+0.01)*1e-32) ELSE 1-EXP(ExpHelp2) END_IF; ELSE_IF ConfigHX < 4.5 THEN ExpHelp1:=-NTU; Effectiviness := IF ExpHelp1 < -5 THEN 1/(1/1 + CRatio/1 - 1/NTU) ELSE 1/(1/(1-EXP(-NTU)) + CRatio/(1-EXP(-NTU*CRatio)) - 1/NTU) END_IF; ELSE_IF (ConfigHX < 5.5 AND ABS(CapLiq-CMin) < SMALL) THEN ExpHelp1 := -NTU; ExpHelp2 := IF ExpHelp1 < -5 THEN -CRatio ELSE -CRatio*(1-EXP(-NTU)) END_IF; Effectiviness := IF ExpHelp2 < -5 THEN 1/CRatio ELSE (1-EXP(ExpHelp2))/CRatio END_IF; ELSE_IF (ConfigHX < 6.5 AND ABS(CapAir-CMin) < SMALL) THEN ExpHelp1 := -NTU; ExpHelp2 := IF ExpHelp1 < -5 THEN -CRatio ELSE -CRatio*(1-EXP(-NTU)) END_IF; Effectiviness := IF ExpHelp2 < -5 THEN 1/CRatio ELSE (1-EXP(ExpHelp2))/CRatio END_IF; ELSE ExpHelp1 := -NTU*CRatio; ExpHelp2 := IF ExpHelp1 < -5 THEN -1/CRatio ELSE -(1-EXP(-NTU*CRatio))/CRatio END_IF; Effectiviness := IF ExpHelp2 < -5 THEN 1 ELSE 1-EXP(-(1-EXP(-NTU*CRatio))/CRatio) END_IF; END_IF; QMax:= IF CMin < SMALL THEN SMALL ELSE CMin END_IF * (TempLiqIn-TempAirIn); Q:= Effectiviness * QMax; TempAirOut = Q/CapAir + TempAirIn; TempLiqOut = TempLiqIn - Q/CapLiq ; /************************ END OF HEATEX ************************/ /* Pressure related */ dP:= PAirIn - PAirOut; mAir = IF LINEARIZE(1) THEN dP/k ELSE_IF dP < dP0 THEN k_lin * dP ELSE SQRT(dP/k) END_IF; /* Pollutation related */ /* Mode */ CAirMin := IF Event(G0, CapAir-CapLiq) < 0 THEN 1 ELSE 0 END_IF; LINKS /* type name variables .... */ UniAir AirFlowIn PAirIn, POS_IN mAir, TempAirIn, XAir, WAir; UniAir AirFlowOut PAirOut, POS_OUT mAir, TempAirOut, XAir, WAir; PMT LiqFlowIn PLiq, POS_IN mLiq, TempLiqIn; PMT LiqFlowOut PLiq, POS_OUT mLiq, TempLiqOut; VARIABLES /* type name role def min max description*/ /* Thermal related */ MassFlow mAir IN 2.887 0 BIG "Dry air massflow rate" MassFlow mLiq IN 1.6 0 BIG "Liquid massflow rate" Temp TempAirIn IN 15.6 ABS_ZERO BIG "Inlet temp of air" Temp TempAirOut OUT 34.08 ABS_ZERO BIG "Outlet temp of air" Temp TempLiqIn IN 62.2 ABS_ZERO BIG "Inlet temp of liq" Temp TempLiqOut OUT 54.15 ABS_ZERO BIG "Outlet temp of liq" CapRate CapAir LOC 2919 0 BIG "Capacity rate of air" CapRate CapLiq LOC 6699 0 BIG "Capacity rate of liq" CapRate CMin LOC 2919 0 BIG "Min capacity rate" CapRate CMax LOC 6699 0 BIG "Max capacity rate " Factor CRatio LOC 0.4357 0 1 "Ratio of min to max capacity rate" Factor Eta LOC 1.127 SMALL BIG "Help variable NTU**(-0.22)" Factor NTU LOC .5799 SMALL BIG "Number of transfer units" Factor ExpHelp1 LOC -2 -BIG BIG "Help variable for EXP-function" Factor ExpHelp2 LOC -2 -BIG BIG "Help variable for EXP-function" Factor Effectiviness LOC 0.3936 SMALL 1 "Heat transfer effectiveness" HeatFlux QMax LOC 136014 0 BIG "Max heat transfer possible" HeatFlux Q LOC 53897 0 BIG "Heat transfer" HumRatio WAir IN 0.008 SMALL BIG "Moisture content of air" /* Pressure related */ Pressure PAirIn IN 101300 SMALL BIG "In air pressure" Pressure PAirOut OUT 101240 SMALL BIG "Out air pressure" Pressure dP LOC 60 SMALL BIG "Pressure difference" Pressure PLiq IN 1000 SMALL BIG "Liq pressure" /* Pollutation related */ Fraction_y XAir IN 0 0 BIG "Pollutant fraction" /* MODE */ Generic CAirMin A_S " " Generic G0 A_S " " PARAMETERS /* type name role def min max description */ HeatCapM cp_liq S_P 4187 SMALL BIG "Liquid specific heat" HeatCond UA C_P 1694 0 BIG "Overall heat transfer coefficient" Factor ConfigHX S_P 3 0 6 "Coil configuration 0 independent of configuration 1 counterflow 2 parallel flow 3 cross flow, both streams unmixed 4 cross flow, both streams mixed 5 cross flow, stream 1 unmixed 6 cross flow, stream 2 unmixed" HeatFlux QTotRat S_P 44000 -BIG BIG "Total heat transfer at rating " MassFlow MLiqRat S_P 1.87 SMALL BIG "Liquid mass flow at rating" Temp TLiqRat S_P 48.9 ABS_ZERO BIG "Liquid temp at rating" MassFlow MAirRat S_P 6.8 SMALL BIG "Air mass flow at rating" Temp TAirRat S_P 15.6 ABS_ZERO BIG "Air temp at rating" HumRatio WAirRat S_P .007 SMALL BIG "Humidity ratio at rating" CapRate CapAirRat C_P 6853 SMALL BIG "Air capacity rate at rating" CapRate CapLiqRat C_P 7830 SMALL BIG "Liquid capacity rate at rating " Factor ErrStat C_P 0 0 1 "Error status indicator" /* Pressure related */ Pressure dPRate S_P 60 SMALL BIG "Pressure difference at given rate" Pressure dP0 S_P .1 SMALL BIG "Limit for linear flow" Generic k C_P .5905 SMALL BIG "Powerlaw coefficient" Generic k_lin C_P .243 SMALL BIG "Laminar coefficient" Pressure dPLiq0 S_P 50 SMALL BIG "Limit for on / off mode" PARAMETER_PROCESSING /* Thermal related */ CapAirRat:= mAirRat*(cp_air+ WAirRat*cp_vap); CapLiqRat:= mLiqRat*cp_liq; UA:= UAHX(CapAirRat,TAirRat,CapLiqRat,TLiqRat,qTotRat,ConfigHX,ErrStat); IF ErrStat > 0.5 THEN CALL NMF_ERROR ("UA calculation failed") END_IF; /* Pressure related */ k:= dPRate / (mAirRat)**2 ; /* k_lin:= SQRT(dP0*k) ; */ k_lin:= 1.0/SQRT(dP0*k) ; END_MODEL