diff --git a/Buildings/Examples/Tutorial/SpaceCooling/System2.mo b/Buildings/Examples/Tutorial/SpaceCooling/System2.mo
index 918b4c9f7d8..391c7315a7b 100644
--- a/Buildings/Examples/Tutorial/SpaceCooling/System2.mo
+++ b/Buildings/Examples/Tutorial/SpaceCooling/System2.mo
@@ -79,8 +79,9 @@ model System2
dp2_nominal=200,
eps=eps) "Heat recovery"
annotation (Placement(transformation(extent={{-110,-36},{-90,-16}})));
- Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi(redeclare package Medium1 =
- MediumW, redeclare package Medium2 = MediumA,
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU cooCoi(
+ redeclare package Medium1 = MediumW,
+ redeclare package Medium2 = MediumA,
m1_flow_nominal=mW_flow_nominal,
m2_flow_nominal=mA_flow_nominal,
dp1_nominal=6000,
@@ -118,8 +119,8 @@ model System2
annotation (Placement(transformation(extent={{-160,40},{-140,60}})));
BoundaryConditions.WeatherData.Bus weaBus
annotation (Placement(transformation(extent={{-120,40},{-100,60}})));
- Buildings.Controls.OBC.CDL.Continuous.Sources.Constant mAir_flow(k=mA_flow_nominal)
- "Fan air flow rate"
+ Buildings.Controls.OBC.CDL.Continuous.Sources.Constant mAir_flow(k=
+ mA_flow_nominal) "Fan air flow rate"
annotation (Placement(transformation(extent={{0,0},{20,20}})));
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant mWat_flow(k=mW_flow_nominal)
"Water flow rate"
@@ -188,11 +189,11 @@ equation
index=-1,
extent={{-6,3},{-6,3}}));
connect(fan.m_flow_in, mAir_flow.y) annotation (Line(
- points={{49.8,-8},{49.8,10},{21,10}},
+ points={{50,-8},{50,10},{22,10}},
color={0,0,127},
smooth=Smooth.None));
connect(mWat_flow.y, souWat.m_flow_in) annotation (Line(
- points={{-59,-104},{-52,-104},{-52,-92},{-40,-92}},
+ points={{-58,-104},{-52,-104},{-52,-92},{-42,-92}},
color={0,0,127},
smooth=Smooth.None));
connect(hex.port_b1, senTemHXOut.port_a) annotation (Line(
@@ -419,8 +420,14 @@ We assign this value using the equation
where Q̇ is the exchanged heat and
lmtd is the logarithmic mean temperature difference.
-The computation of the UA is done using the
-parameter assignment
+The computation of the UA is done
+by setting
+
+
+use_UA_nominal=true
+
+
+and then using the parameter assignment
UA_nominal=-QCoiC_flow_nominal/
@@ -440,9 +447,7 @@ In order to see the coil inlet and outlet temperatures, we set the parameter
show_T = true
-Its default value is false
, as this setting can lead to faster computation
-in large system models in which the flow rate crosses zero, because crossing zero
-triggers the numerical solution for a state-event which can be computationally expensive.
+Its default value is false
.
To use prescribed initial values for the state variables of the cooling coil, we set
diff --git a/Buildings/Examples/Tutorial/SpaceCooling/System3.mo b/Buildings/Examples/Tutorial/SpaceCooling/System3.mo
index 00656c4d8aa..11e7c64a0fd 100644
--- a/Buildings/Examples/Tutorial/SpaceCooling/System3.mo
+++ b/Buildings/Examples/Tutorial/SpaceCooling/System3.mo
@@ -60,8 +60,7 @@ model System3
QCoiC_flow_nominal/(TWRet_nominal-TWSup_nominal)/4200
"Nominal water mass flow rate";
- Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature
- TOut
+ Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut
"Outside temperature"
annotation (Placement(transformation(extent={{-20,40},{0,60}})));
Modelica.Thermal.HeatTransfer.Sources.FixedHeatFlow preHea(Q_flow=
@@ -80,21 +79,22 @@ model System3
dp2_nominal=200,
eps=eps) "Heat recovery"
annotation (Placement(transformation(extent={{-110,-36},{-90,-16}})));
- Buildings.Fluid.HeatExchangers.WetCoilCounterFlow cooCoi(redeclare package Medium1 =
- MediumW, redeclare package Medium2 = MediumA,
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU cooCoi(
+ redeclare package Medium1 = MediumW,
+ redeclare package Medium2 = MediumA,
m1_flow_nominal=mW_flow_nominal,
m2_flow_nominal=mA_flow_nominal,
dp1_nominal=6000,
+ dp2_nominal=200,
UA_nominal=-QCoiC_flow_nominal/
Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
T_a1=THeaRecLvg,
T_b1=TASup_nominal,
T_a2=TWSup_nominal,
T_b2=TWRet_nominal),
- dp2_nominal=200,
show_T=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Cooling coil"
- annotation (Placement(
+ annotation (Placement(
transformation(
extent={{-10,-10},{10,10}},
rotation=180,
@@ -198,7 +198,7 @@ equation
index=-1,
extent={{-6,3},{-6,3}}));
connect(fan.m_flow_in, mAir_flow.y) annotation (Line(
- points={{49.8,-8},{49.8,10},{21,10}},
+ points={{50,-8},{50,10},{22,10}},
color={0,0,127},
smooth=Smooth.None));
connect(hex.port_b1, senTemHXOut.port_a) annotation (Line(
@@ -222,7 +222,7 @@ equation
color={191,0,0},
smooth=Smooth.None));
connect(TRooSetPoi.y, con.reference) annotation (Line(
- points={{-149,-80},{-136,-80},{-136,-94},{-122,-94}},
+ points={{-148,-80},{-136,-80},{-136,-94},{-122,-94}},
color={0,0,127},
smooth=Smooth.None));
connect(vol.heatPort, senTemRoo.port) annotation (Line(
@@ -234,11 +234,11 @@ equation
color={0,0,127},
smooth=Smooth.None));
connect(con.y, mWat_flow.u) annotation (Line(
- points={{-99,-100},{-82,-100}},
+ points={{-98,-100},{-82,-100}},
color={255,0,255},
smooth=Smooth.None));
connect(mWat_flow.y, souWat.m_flow_in) annotation (Line(
- points={{-59,-100},{-50,-100},{-50,-92},{-40,-92}},
+ points={{-58,-100},{-50,-100},{-50,-92},{-42,-92}},
color={0,0,127},
smooth=Smooth.None));
annotation (Documentation(info="
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryRegime.mo b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryRegime.mo
new file mode 100644
index 00000000000..bedffb2e009
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryRegime.mo
@@ -0,0 +1,104 @@
+within Buildings.Fluid.HeatExchangers.BaseClasses;
+model WetCoilDryRegime
+ "Fully dry coil model"
+
+ // - water
+ input Modelica.SIunits.ThermalConductance UAWat
+ "UA for water side";
+ input Modelica.SIunits.MassFlowRate mWat_flow
+ "Mass flow rate for water";
+ input Modelica.SIunits.MassFlowRate mWatNonZer_flow(min=Modelica.Constants.eps)
+ "Mass flow rate for water, bounded away from zero";
+
+ input Modelica.SIunits.SpecificHeatCapacity cpWat
+ "Specific heat capacity of water";
+ input Modelica.SIunits.Temperature TWatIn
+ "Water temperature at inlet";
+ // -- air
+ input Modelica.SIunits.ThermalConductance UAAir
+ "UA for air side";
+ input Modelica.SIunits.MassFlowRate mAir_flow(min=Modelica.Constants.eps)
+ "Mass flow rate of air";
+ input Modelica.SIunits.MassFlowRate mAirNonZer_flow(min=Modelica.Constants.eps)
+ "Mass flow rate for air, bounded away from zero";
+ input Modelica.SIunits.SpecificHeatCapacity cpAir
+ "Specific heat capacity of moist air at constant pressure";
+ input Modelica.SIunits.Temperature TAirIn
+ "Temperature of air at inlet";
+ // -- misc.
+ input Buildings.Fluid.Types.HeatExchangerFlowRegime cfg
+ "The flow regime of the heat exchanger";
+ input Modelica.SIunits.MassFlowRate mAir_flow_nominal
+ "Nominal mass flow rate for air";
+ input Modelica.SIunits.MassFlowRate mWat_flow_nominal
+ "Nominal mass flow rate for water";
+
+ parameter Real delta = 1E-3 "Small value used for smoothing";
+
+ output Modelica.SIunits.HeatFlowRate QTot_flow
+ "Heat transferred from water to air";
+ output Modelica.SIunits.Temperature TWatOut
+ "Temperature of water at outlet";
+ output Modelica.SIunits.Temperature TAirOut
+ "Temperature of air at the outlet";
+ output Real eps(min=0, max=1, unit="1")
+ "Effectiveness for heat exchanger";
+ Modelica.SIunits.ThermalConductance CWat_flow=mWat_flow*cpWat
+ "Capacitance rate of water";
+ Modelica.SIunits.ThermalConductance CAir_flow=mAir_flow*cpAir
+ "Capacitance rate of air";
+ Modelica.SIunits.ThermalConductance CMin_flow_nominal=
+ min(mAir_flow_nominal*cpAir,mWat_flow_nominal*cpWat)
+ "Minimum capacity rate";
+ Modelica.SIunits.ThermalConductance CMax_flow_nominal=
+ max(mAir_flow_nominal*cpAir,mWat_flow_nominal*cpWat)
+ "Maximum capacity rate";
+ Modelica.SIunits.ThermalConductance CMin_flow=
+ Buildings.Utilities.Math.Functions.smoothMin(
+ x1=CAir_flow,x2=CWat_flow,deltaX=1E-3*(CMax_flow_nominal-CMin_flow_nominal))
+ "Minimum capacity rate";
+ Modelica.SIunits.ThermalConductance UA
+ "Overall heat transfer coefficient";
+ output Modelica.SIunits.Temperature TSurAirOut
+ "Surface Temperature at air outlet";
+equation
+ UA = 1/ (1 / UAAir + 1 / UAWat);
+
+ eps=epsilon_C(
+ UA=UA,
+ C1_flow=CWat_flow,
+ C2_flow=CAir_flow,
+ flowRegime=Integer(cfg),
+ CMin_flow_nominal= CMin_flow_nominal,
+ CMax_flow_nominal=CMax_flow_nominal,
+ delta= delta);
+
+ QTot_flow = eps*CMin_flow*(TAirIn-TWatIn);
+ TAirOut=TAirIn-QTot_flow/(mAirNonZer_flow*cpAir);
+ TWatOut=TWatIn+QTot_flow/(mWatNonZer_flow*cpWat);
+
+ (TAirOut-TSurAirOut)*UAAir=(TSurAirOut-TWatIn)*UAWat;
+
+ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={
+ Rectangle(
+ extent={{-100,100},{100,-100}},
+ lineColor={28,108,200},
+ fillColor={255,213,170},
+ fillPattern=FillPattern.Solid)}), Diagram(
+ coordinateSystem(preserveAspectRatio=false)),
+ Documentation(revisions="
+
+- Jan 21, 2021, by Donghun Kim:
First implementation of the fuzzy model.
+See issue 622
+for more information.
+
+", info="
+This model implements the calculation for a 100% dry coil.
+
+See
+
+Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU
+for documentation.
+
+"));
+end WetCoilDryRegime;
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryWetRegime.mo b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryWetRegime.mo
new file mode 100644
index 00000000000..b47dc6444d9
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilDryWetRegime.mo
@@ -0,0 +1,422 @@
+within Buildings.Fluid.HeatExchangers.BaseClasses;
+model WetCoilDryWetRegime
+ "Model implementing the switching algorithm of the TK-fuzzy model for cooling coil application"
+
+ parameter Modelica.SIunits.MassFlowRate mWat_flow_nominal(min=0)
+ "Nominal mass flow rate for water"
+ annotation(Dialog(group = "Nominal condition"));
+ parameter Modelica.SIunits.MassFlowRate mAir_flow_nominal(min=0)
+ "Nominal mass flow rate for air"
+ annotation(Dialog(group = "Nominal condition"));
+
+ input Real Qfac(final unit="1")
+ "a smoothing factor to prevent division-by-zero";
+
+ input Buildings.Fluid.Types.HeatExchangerFlowRegime cfg=
+ Buildings.Fluid.Types.HeatExchangerFlowRegime.CounterFlow
+ "heat exchanger configuration";
+
+ // -- Water
+ Modelica.Blocks.Interfaces.RealInput UAWat(
+ final quantity="ThermalConductance",
+ final unit="W/K")
+ "Product of heat transfer coefficient times area for water side"
+ annotation (Placement(transformation(extent={{-160,100},{-140,120}}),
+ iconTransformation(extent={{-160,100},{-140,120}})));
+ Modelica.Blocks.Interfaces.RealInput mWat_flow(
+ quantity="MassFlowRate",
+ min = 0,
+ final unit="kg/s")
+ "Mass flow rate for water"
+ annotation (Placement(transformation(extent={{-160,80},{-140,100}}),
+ iconTransformation(extent={{-160,80},{-140,100}})));
+ Modelica.Blocks.Interfaces.RealInput cpWat(
+ final quantity="SpecificHeatCapacity",
+ final unit="J/(kg.K)")
+ "Inlet water temperature"
+ annotation (Placement(transformation(extent={{-160,60},{-140,80}}),
+ iconTransformation(extent={{-160,60},{-140,80}})));
+ Modelica.Blocks.Interfaces.RealInput TWatIn(
+ final quantity="ThermodynamicTemperature",
+ final unit="K",
+ min = 200,
+ start = 288.15,
+ nominal = 300,
+ displayUnit="degC")
+ "Inlet water temperature"
+ annotation (Placement(transformation(extent={{-160,40},{-140,60}}),
+ iconTransformation(extent={{-160,40},{-140,60}})));
+ // -- Air
+ Modelica.Blocks.Interfaces.RealInput UAAir(
+ final quantity="ThermalConductance",
+ final unit="W/K")
+ "Product of heat transfer coefficient times area for air side"
+ annotation (Placement(transformation(extent={{-160,-120},{-140,-100}}),
+ iconTransformation(extent={{-160,-120},{-140,-100}})));
+ Modelica.Blocks.Interfaces.RealInput mAir_flow(
+ quantity="MassFlowRate",
+ min = 0,
+ final unit="kg/s")
+ "Mass flow rate for air"
+ annotation (Placement(transformation(extent={{-160,-100},{-140,-80}}),
+ iconTransformation(extent={{-160,-100},{-140,-80}})));
+ Modelica.Blocks.Interfaces.RealInput cpAir(
+ final quantity="SpecificHeatCapacity",
+ final unit="J/(kg.K)")
+ "Inlet specific heat capacity (at constant pressure)"
+ annotation (Placement(
+ transformation(extent={{-160,-80},{-140,-60}}), iconTransformation(
+ extent={{-160,-80},{-140,-60}})));
+ Modelica.Blocks.Interfaces.RealInput TAirIn(
+ final quantity="ThermodynamicTemperature",
+ final unit="K",
+ min = 200,
+ start = 288.15,
+ nominal = 300,
+ displayUnit="degC")
+ "Inlet air temperature"
+ annotation (Placement(transformation(extent={{-160,-60},{-140,-40}}),
+ iconTransformation(extent={{-160,-60},{-140,-40}})));
+ Modelica.Blocks.Interfaces.RealInput hAirIn(
+ final quantity="SpecificEnergy",
+ final unit="J/kg")
+ "Inlet air enthalpy"
+ annotation (
+ Placement(transformation(extent={{-160,-40},{-140,-20}}),
+ iconTransformation(extent={{-160,-40},{-140,-20}})));
+ Modelica.Blocks.Interfaces.RealInput pAir(
+ final quantity="Pressure",
+ final unit="Pa",
+ displayUnit="bar",
+ min=70000,
+ nominal = 1e5)
+ "Inlet air absolute pressure"
+ annotation (Placement(transformation(extent={{-160,-20},{-140,0}}),
+ iconTransformation(extent={{-160,-20},{-140,0}})));
+ Modelica.Blocks.Interfaces.RealInput X_wAirIn(
+ min=0,
+ max=1,
+ unit="1")
+ "Mass fraction of water in inlet air (kg water/kg total air)"
+ annotation (
+ Placement(transformation(extent={{-160,0},{-140,20}}), iconTransformation(
+ extent={{-160,0},{-140,20}})));
+
+ Modelica.Blocks.Interfaces.RealOutput QTot_flow(
+ final quantity="Power",
+ final unit="W")
+ "Total heat transfer from water into air, negative for cooling"
+ annotation (
+ Placement(transformation(extent={{-10,-10},{10,10}},
+ rotation=0,
+ origin={150,-20})));
+ Modelica.Blocks.Interfaces.RealOutput QSen_flow(
+ final quantity="Power",
+ final unit="W")
+ "Sensible heat transfer from water into air, negative for cooling"
+ annotation (
+ Placement(transformation(extent={{-10,-10},{10,10}},
+ rotation=0,
+ origin={150,-60})));
+ Modelica.SIunits.HeatFlowRate QLat_flow "Latent heat transfer rate";
+
+ Modelica.Blocks.Interfaces.RealOutput mCon_flow(
+ quantity="MassFlowRate",
+ final unit="kg/s")
+ "Mass flow of the condensate, negative for dehumidification"
+ annotation (
+ Placement(transformation(extent={{-10,-10},{10,10}},
+ rotation=0,
+ origin={150,-100})));
+ Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilDryRegime fullyDry(
+ final UAWat=UAWat,
+ final mWat_flow=mWat_flow,
+ final cpWat=cpWat,
+ final TWatIn=TWatIn,
+ final UAAir=UAAir,
+ final mAir_flow=mAir_flow,
+ final mWatNonZer_flow=mWatNonZer_flow,
+ final mAirNonZer_flow=mAirNonZer_flow,
+ final cpAir=cpAir,
+ final TAirIn=TAirIn,
+ final cfg=cfg,
+ final mAir_flow_nominal=mAir_flow_nominal,
+ final mWat_flow_nominal=mWat_flow_nominal) "Fully-dry coil model";
+
+ Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilWetRegime fullyWet(
+ final UAWat=UAWat,
+ final mWat_flow=mWat_flow,
+ final cpWat=cpWat,
+ final TWatIn=TWatIn,
+ final UAAir=UAAir,
+ final mAir_flow=mAir_flow,
+ final mWatNonZer_flow=mWatNonZer_flow,
+ final mAirNonZer_flow=mAirNonZer_flow,
+ final cpAir=cpAir,
+ final TAirIn=TAirIn,
+ final cfg=cfg,
+ final mAir_flow_nominal=mAir_flow_nominal,
+ final mWat_flow_nominal=mWat_flow_nominal,
+ final pAir=pAir,
+ final X_wAirIn=X_wAirIn) "Fully-wet coil model";
+
+ Real dryFra(final unit="1", min=0, max=1)
+ "Dry fraction, 0.3 means condensation occurs at 30% heat exchange length from air inlet";
+protected
+ Modelica.SIunits.MassFlowRate mAirNonZer_flow(min=Modelica.Constants.eps)=
+ Buildings.Utilities.Math.Functions.smoothMax(
+ x1=mAir_flow,
+ x2=1E-3 *mAir_flow_nominal,
+ deltaX=0.25E-3*mAir_flow_nominal)
+ "Mass flow rate of air";
+ Modelica.SIunits.MassFlowRate mWatNonZer_flow(min=Modelica.Constants.eps)=
+ Buildings.Utilities.Math.Functions.smoothMax(
+ x1=mWat_flow,
+ x2=1E-3 *mWat_flow_nominal,
+ deltaX=0.25E-3*mWat_flow_nominal)
+ "Mass flow rate of water";
+
+ Modelica.SIunits.Temperature TAirInDewPoi
+ "Dew point temperature of incoming air";
+
+ Buildings.Utilities.Psychrometrics.pW_X pWIn(
+ final X_w=X_wAirIn,
+ final p_in=pAir);
+ Buildings.Utilities.Psychrometrics.TDewPoi_pW TDewIn(
+ final p_w=pWIn.p_w);
+
+ //-- Values for fuzzy logics
+ Real mu_FW(final unit="1", min=0, max=1), mu_FD(unit="1",min=0, max=1)
+ "Membership functions for Fully-Wet and Fully-Dry conditions";
+ Real w_FW(final unit="1", min=0, max=1), w_FD(unit="1",min=0, max=1)
+ "Normalized weight functions for Fully-Wet and Fully-Dry conditions";
+
+equation
+
+ TAirInDewPoi=TDewIn.T;
+
+ mu_FW= Buildings.Utilities.Math.Functions.spliceFunction(
+ pos=0,neg=1,x=fullyWet.TSurAirIn-TAirInDewPoi,
+ deltax=Buildings.Utilities.Math.Functions.smoothMax(abs(fullyDry.TSurAirOut-fullyWet.TSurAirIn), 1e-2,1e-3));
+ //max(abs(fullyDry.TSurAirOut- fullyWet.TSurAirIn),1e-3));
+
+ mu_FD= Buildings.Utilities.Math.Functions.spliceFunction(
+ pos=1,neg=0,x=fullyDry.TSurAirOut-TAirInDewPoi,
+ deltax=Buildings.Utilities.Math.Functions.smoothMax(abs(fullyDry.TSurAirOut-fullyWet.TSurAirIn), 1e-2,1e-3));
+ //max(abs(fullyDry.TSurAirOut- fullyWet.TSurAirIn),1e-3));
+
+ w_FW=mu_FW/(mu_FW+mu_FD);
+ w_FD=mu_FD/(mu_FW+mu_FD);
+
+ QTot_flow= -(w_FW*fullyWet.QTot_flow+w_FD*fullyDry.QTot_flow)*Qfac;
+ QSen_flow= -(w_FW*fullyWet.QSen_flow+w_FD*fullyDry.QTot_flow)*Qfac;
+ dryFra= w_FD;
+
+ QLat_flow=QTot_flow-QSen_flow;
+ mCon_flow=QLat_flow/Buildings.Utilities.Psychrometrics.Constants.h_fg*Qfac;
+ annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-140,-120},
+ {140,120}}), graphics={
+ Rectangle(
+ extent={{-140,120},{140,-120}},
+ lineColor={0,0,0},
+ lineThickness=0.5,
+ pattern=LinePattern.Dot,
+ fillColor={236,236,236},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{20,40},{100,-40}},
+ lineColor={28,108,200},
+ fillColor={170,227,255},
+ fillPattern=FillPattern.Forward),
+ Text(
+ extent={{24,36},{96,2}},
+ textStyle={TextStyle.Bold},
+ pattern=LinePattern.None,
+ textString="WET",
+ lineColor={0,0,0}),
+ Line(
+ points={{20,0},{120,0}},
+ color={28,108,200},
+ thickness=1,
+ pattern=LinePattern.Dash),
+ Ellipse(
+ extent={{72,0},{66,-6}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{82,-4},{76,-10}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{96,0},{88,-8}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{64,-4},{58,-10}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{54,0},{48,-6}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{42,-4},{36,-10}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Ellipse(
+ extent={{32,0},{24,-8}},
+ lineColor={28,108,200},
+ fillColor={170,255,255},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-60,40},{20,-40}},
+ lineColor={28,108,200},
+ fillColor={255,213,170},
+ fillPattern=FillPattern.Forward),
+ Text(
+ extent={{-16,-4},{56,-38}},
+ textStyle={TextStyle.Bold},
+ textString="CALCS",
+ pattern=LinePattern.None),
+ Line(
+ points={{-80,0},{20,0}},
+ color={28,108,200},
+ thickness=1,
+ pattern=LinePattern.Dash),
+ Text(
+ extent={{-56,36},{16,2}},
+ textStyle={TextStyle.Bold},
+ textString="DRY",
+ pattern=LinePattern.None),
+ Text(
+ extent={{-22,60},{58,40}},
+ lineColor={28,108,200},
+ fillColor={170,170,255},
+ fillPattern=FillPattern.Forward,
+ textString="Water",
+ textStyle={TextStyle.Italic}),
+ Text(
+ extent={{-20,-40},{60,-60}},
+ lineColor={28,108,200},
+ fillColor={170,170,255},
+ fillPattern=FillPattern.Forward,
+ textString="Air",
+ textStyle={TextStyle.Italic}),
+ Text(
+ extent={{-116,-104},{-116,-116}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="hA"),
+ Text(
+ extent={{-116,116},{-116,104}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="hA"),
+ Text(
+ extent={{-116,96},{-116,84}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="masFlo"),
+ Text(
+ extent={{-116,76},{-116,64}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="cp"),
+ Text(
+ extent={{-116,56},{-116,44}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="T_in"),
+ Text(
+ extent={{-116,-84},{-116,-96}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="masFlo"),
+ Text(
+ extent={{-116,-64},{-116,-76}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="cp"),
+ Text(
+ extent={{-116,-44},{-116,-56}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="T_in"),
+ Text(
+ extent={{-116,-24},{-116,-36}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="h_in"),
+ Text(
+ extent={{-116,-4},{-116,-16}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="p_in"),
+ Text(
+ extent={{-116,16},{-116,4}},
+ lineColor={28,108,200},
+ horizontalAlignment=TextAlignment.Left,
+ textString="w_in"),
+ Text(
+ extent={{120,-12},{120,-24}},
+ lineColor={28,108,200},
+ textString="QTot_flow"),
+ Text(
+ extent={{104,-94},{104,-106}},
+ lineColor={28,108,200},
+ textString="mCon_flow"),
+ Text(
+ extent={{118,-52},{118,-64}},
+ lineColor={28,108,200},
+ textString="QSen")}), Diagram(
+ coordinateSystem(preserveAspectRatio=false, extent={{-140,-120},{140,120}})),
+ Documentation(revisions="
+
+- Jan 21, 2021, by Donghun Kim:
First implementation of the fuzzy model.
+See issue 622 for more information.
+
+
+", info="
+
+This model implements the switching algorithm for the dry and wet regime.
+
+
+The switching criteria for (counter-flow) cooling coil modes are as follows.
+
+R1: If the coil surface temperature at the air inlet is lower than the dew-point
+temperature at the inlet to the coil, then the cooling coil surface is fully-wet.
+
+R2: If the surface temperature at the air outlet section is higher than
+the dew-point temperature of the air at the inlet, then the cooling coil surface is fully-dry.
+
+At each point of a simulation time step, the fuzzy-modeling approach determines
+the weights for R1 and R2 respectively (namely μFW and μFD)
+from the dew-point and coil surface temperatures.
+
+It calculates total and sensible heat transfer rates according to the weights as follows.
+
+
+Q̇tot=μFD Q̇tot,FD+μFW Qtot,FW
+
+
+Q̇sen=μFD Q̇sen,FD+μFW Qsen,FW
+
+
+The fuzzy-modeling ensures μFW + μFD = 1,
+μFW >=0 and μFD >=0, which means the fuzzy
+model outcomes of Q̇sen and Q̇tot are always convex combinations of heat transfer
+rates for fully-dry and fully-wet modes and therefore are always bounded by them.
+
+
+The modeling approach also results in n-th order differentiable model
+depending on the selection of the underlying membership functions. This cooling
+coil model is once continuously differentiable at the mode switches.
+
+"));
+end WetCoilDryWetRegime;
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilUARated.mo b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilUARated.mo
new file mode 100644
index 00000000000..39b9b57ace2
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilUARated.mo
@@ -0,0 +1,194 @@
+within Buildings.Fluid.HeatExchangers.BaseClasses;
+model WetCoilUARated
+ "Model that calculates the UA-value from cooling coil data at rated conditions."
+
+ replaceable package MediumA=Buildings.Media.Air
+ constrainedby Modelica.Media.Interfaces.PartialMedium
+ "Air-side medium";
+ replaceable package MediumW=Buildings.Media.Water
+ constrainedby Modelica.Media.Interfaces.PartialMedium
+ "Water-side medium";
+
+ parameter Boolean use_Q_flow_nominal = false
+ "Set to true to specify Q_flow_nominal and inlet conditions, or to false to specify UA_nominal"
+ annotation (
+ Evaluate=true,
+ Dialog(group="Nominal thermal performance"));
+ parameter Modelica.SIunits.HeatFlowRate QTot_flow
+ "Nominal heat flow rate (positive for heat transfer from 1 to 2)";
+ parameter Modelica.SIunits.Temperature TAirIn
+ "Air inlet temperature at a rated condition";
+
+ parameter Modelica.SIunits.MassFraction X_wAirIn
+ "Mass fraction of water in inlet air at a rated condition";
+ parameter Modelica.SIunits.Temperature TWatIn
+ "Water inlet temperature at a rated condition";
+
+ parameter Modelica.SIunits.MassFlowRate mAir_flow
+ "Air mass flow rate at a rated condition";
+ parameter Modelica.SIunits.MassFlowRate mWat_flow
+ "Water mass flow rate at a rated condition";
+ parameter Modelica.SIunits.ThermalConductance UA
+ "the overall heat transfer coefficient for a fully dry condition";
+ parameter Real r_nominal(min=0, max=1)
+ "Ratio between air-side and water-side convective heat transfer at nominal condition";
+
+protected
+ constant Modelica.SIunits.SpecificEnthalpy hfg=
+ Buildings.Utilities.Psychrometrics.Constants.h_fg
+ "Enthapy of vaporization of water";
+ constant Modelica.SIunits.SpecificEnthalpy hUnit=1
+ "Physical dimension of specific enthalpy used for a unit conversion";
+ constant Modelica.SIunits.Temperature TUnit=1
+ "Physical dimension of temperature used for a unit conversion";
+ constant Modelica.SIunits.SpecificHeatCapacity cpUnit=1
+ "Physical dimension of specific heat capacity used for a unit conversion";
+ parameter Modelica.SIunits.Temperature TAirOut(fixed=false)
+ "Air outlet temperature at a rated condition";
+ parameter Modelica.SIunits.Temperature TWatOut=
+ TWatIn - QTot_flow / cpWat / mWat_flow
+ "Water outlet temperature at a rated condition";
+ parameter Modelica.SIunits.SpecificEnthalpy hAirIn = MediumA.specificEnthalpy_pTX(
+ p=MediumA.p_default, T=TAirIn, X={X_wAirIn, 1-X_wAirIn})
+ "Enthalpy of incoming moist air at a rated condition";
+ parameter MediumA.ThermodynamicState staAir=MediumA.setState_phX(
+ p=MediumA.p_default, h=hAirIn, X={X_wAirIn, 1-X_wAirIn})
+ "Inlet air thermodynamic state";
+ parameter Modelica.SIunits.SpecificHeatCapacity cpAir=
+ MediumA.specificHeatCapacityCp(staAir)
+ "Isobaric specific heat capacity of air";
+ parameter Modelica.SIunits.SpecificEnthalpy hAirOut=
+ hAirIn + QTot_flow / mAir_flow
+ "Enthalpy of outgoing moist air at a rated condition";
+ parameter Modelica.SIunits.SpecificEnthalpy hWatIn = MediumW.specificEnthalpy_pTX(
+ p=MediumW.p_default, T=TWatIn, X=MediumW.X_default)
+ "Enthalpy of incoming moist air at a rated condition";
+ parameter MediumW.ThermodynamicState staWat=MediumW.setState_phX(
+ p=MediumW.p_default, h=hWatIn, X=MediumW.X_default)
+ "Inlet water thermodynamic state";
+ parameter Modelica.SIunits.SpecificHeatCapacity cpWat=
+ MediumW.specificHeatCapacityCp(staWat)
+ "Isobaric specific heat capacity of water";
+ parameter Modelica.SIunits.SpecificHeatCapacity cpEff(fixed=false, min= 0)
+ "Effective specific heat: change in saturated moist air enthalpy with respect to
+ temperature along the saturation line between inlet and outlet water temperatures";
+ parameter Modelica.SIunits.SpecificEnthalpy LMED(fixed=false)
+ "Log mean enthalpy difference";
+ parameter Modelica.SIunits.MassFlowRate UASta(fixed=false, min=0, start=1/(1/10+1/20))
+ "Overall heat transfer coefficient for enthalpy difference";
+ parameter Modelica.SIunits.ThermalConductance UAAir(min=0,start=10,fixed=false)
+ "Air side convective heat transfer coefficient, including fin resistance";
+ parameter Modelica.SIunits.ThermalConductance UAWat(min=0,start=20,fixed=false)
+ "Water side convective heat transfer coefficient";
+ parameter Boolean isFulDry(fixed=false)
+ "Indicator of the fully-dry coil regime";
+ parameter Boolean isFulWet(fixed=false)
+ "Indicator of the fully-wet coil regime";
+ parameter Modelica.SIunits.AbsolutePressure pSatTWatIn=
+ Buildings.Utilities.Psychrometrics.Functions.saturationPressure(TWatIn)
+ "Saturation pressure of water at the water inlet temperature";
+ parameter Modelica.SIunits.MassFraction X_wSatTWatIn=
+ Buildings.Utilities.Psychrometrics.Functions.X_pSatpphi(
+ pSat=pSatTWatIn, p=MediumA.p_default, phi=1)
+ "Mass fraction of water in saturated moist air at the water inlet temperature";
+ parameter Modelica.SIunits.SpecificEnthalpy hSatTWatIn=
+ Buildings.Media.Air.specificEnthalpy_pTX(
+ p=MediumA.p_default, T=TWatIn, X={X_wSatTWatIn,1-X_wSatTWatIn})
+ "Enthalpy of saturated moist air at the water inlet temperature";
+ parameter Modelica.SIunits.AbsolutePressure pSatTWatOut=
+ Buildings.Utilities.Psychrometrics.Functions.saturationPressure(TWatOut)
+ "Saturation pressure of water at the water oulet temperature";
+ parameter Modelica.SIunits.MassFraction X_wSatTWatOut=
+ Buildings.Utilities.Psychrometrics.Functions.X_pSatpphi(
+ pSat=pSatTWatOut, p=MediumA.p_default, phi=1)
+ "Mass fraction of water in saturated moist air at the water outlet temperature";
+ parameter Modelica.SIunits.SpecificEnthalpy hSatTWatOut=
+ Buildings.Media.Air.specificEnthalpy_pTX(
+ p=MediumA.p_default, T=TWatOut, X={X_wSatTWatOut,1-X_wSatTWatOut})
+ "Enthalpy of saturated moist air at the water oulet temperature";
+initial equation
+ isFulDry = if use_Q_flow_nominal then (X_wSatTWatIn >= X_wAirIn) else true;
+ isFulWet = if use_Q_flow_nominal then (X_wSatTWatOut <= X_wAirIn) else true;
+ assert(
+ not use_Q_flow_nominal or
+ hAirOut >= hSatTWatIn and hAirIn >= hSatTWatOut or
+ hAirOut <= hSatTWatIn and hAirIn <= hSatTWatOut,
+ "In " + getInstanceName() +
+ ": The moist air enthalpy at the coil inlet or outlet is unrealistically low. " +
+ "Check the rated conditions.");
+ assert(
+ isFulDry or isFulWet,
+ "In " + getInstanceName() +
+ ": The nominal conditions correspond to a partially-wet coil regime. " +
+ "The modeling uncertainty under such conditions has not been assessed. " +
+ "Rather specify nominal conditions in fully-dry or fully-wet regime.",
+ level=AssertionLevel.warning);
+ if use_Q_flow_nominal then
+ if isFulDry then
+ TAirOut = TAirIn + QTot_flow / mAir_flow / cpAir;
+ LMED=Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
+ TWatIn,
+ TWatOut,
+ TAirIn,
+ TAirOut) / TUnit * hUnit;
+ QTot_flow=LMED*UASta;
+ cpEff = 0;
+ UA = UASta*cpUnit;
+ else //fully wet
+ // calculation of overall UAsta based on log mean enthalpy difference
+ LMED=Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
+ hSatTWatIn/hUnit*TUnit,
+ hSatTWatOut/hUnit*TUnit,
+ hAirIn/hUnit*TUnit,
+ hAirOut/hUnit*TUnit) / TUnit * hUnit;
+ QTot_flow=LMED*UASta;
+ cpEff= (hSatTWatOut-hSatTWatIn)/(TWatOut-TWatIn);
+ UASta = (UAAir/cpAir)/(1 + (cpEff*UAAir)/(cpAir*UAWat));
+ // Dummy value.
+ TAirOut=MediumA.T_default;
+ end if;
+ else
+ // Dummy values.
+ TAirIn=MediumA.T_default;
+ TAirOut=MediumA.T_default;
+ X_wAirIn=MediumA.X_default[1];
+ TWatIn=MediumA.T_default;
+ TWatOut=MediumA.T_default;
+ hAirIn=MediumA.h_default;
+ hAirOut=MediumA.h_default;
+ LMED=hUnit;
+ -QTot_flow=LMED*UASta;
+ cpEff= 0;
+ end if;
+
+ UAWat = UAAir / r_nominal;
+ UA = 1/ (1/UAAir + 1/UAWat);
+
+ annotation (Icon(coordinateSystem(preserveAspectRatio=false),
+ graphics={
+ Rectangle(
+ extent={{100,-98},{-100,100}},
+ lineColor={0,0,0},
+ fillColor={255,255,255},
+ fillPattern=FillPattern.Solid)}), Diagram(
+ coordinateSystem(preserveAspectRatio=false)),
+ Documentation(revisions="
+
+-
+February 18, 2021 by Donghun Kim:
+First implementation
+
+
+", info="
+
+This model calculates the overall heat transfer coefficient, i.e.,
+UA-value, from cooling coil data at rated conditions.
+
+
+The main limitation of the current implementation is that the rated
+conditions should correspond to a fully-dry or a fully-wet coil regime.
+The modeling uncertainty yielded by partially-wet rated conditions
+has not been assessed yet.
+
+"));
+end WetCoilUARated;
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilWetRegime.mo b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilWetRegime.mo
new file mode 100644
index 00000000000..f8044abf926
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/WetCoilWetRegime.mo
@@ -0,0 +1,265 @@
+within Buildings.Fluid.HeatExchangers.BaseClasses;
+model WetCoilWetRegime
+ "Fully wet coil model using esilon_C.mo function"
+ constant Real cpEff0=2050 "Used for scaling";
+ constant Real cpWat0=4200 "Used for scaling";
+ parameter Real delta = 1E-3 "Small value used for smoothing";
+ constant Modelica.SIunits.SpecificHeatCapacity cpDum=1
+ "Dummy cp to eliminate the warning message of the unit mismatch when using the eps-NTU model for the wet coil";
+ constant Modelica.SIunits.TemperatureDifference dTWat=0.1;
+ parameter Real tau=6*60
+ "Time constant for the state estimation: introduced to avoid the algebraic loop of the wet coil equations";
+
+ // - water
+ input Modelica.SIunits.ThermalConductance UAWat
+ "UA for water side";
+ input Modelica.SIunits.MassFlowRate mWat_flow
+ "Mass flow rate for water";
+ input Modelica.SIunits.MassFlowRate mWatNonZer_flow
+ "None-zero Mass flow rate for water";
+ input Modelica.SIunits.SpecificHeatCapacity cpWat
+ "Specific heat capacity of water";
+ input Modelica.SIunits.Temperature TWatIn
+ "Water temperature at inlet";
+ input Modelica.SIunits.MassFlowRate mWat_flow_nominal;
+ // -- air
+ input Modelica.SIunits.Pressure pAir
+ "Pressure on air-side of coil";
+ input Modelica.SIunits.ThermalConductance UAAir
+ "UA for air side";
+ input Modelica.SIunits.MassFlowRate mAir_flow
+ "Mass flow rate of air";
+ input Modelica.SIunits.MassFlowRate mAirNonZer_flow
+ "None-zero Mass flow rate for water";
+ input Modelica.SIunits.SpecificHeatCapacity cpAir
+ "Specific heat capacity of moist air at constant pressure";
+ input Modelica.SIunits.Temperature TAirIn
+ "Temperature of air at inlet";
+ input Modelica.SIunits.MassFraction X_wAirIn
+ "Mass fraction of water in moist air at inlet";
+ input Buildings.Fluid.Types.HeatExchangerFlowRegime cfg
+ "The configuration of the heat exchanger";
+ input Modelica.SIunits.MassFlowRate mAir_flow_nominal;
+
+ Modelica.SIunits.SpecificEnthalpy hAirIn
+ "Specific enthalpy of air at inlet conditions";
+ Buildings.Utilities.Psychrometrics.hSat_pTSat hSatWatInM(p=pAir,TSat=TWatIn)
+ "Model to calculate saturated specific enthalpy of air at water inlet temperature";
+ Modelica.SIunits.SpecificEnthalpy hSatWatIn
+ "Saturated specific enthalpy of air at water inlet temperature";
+
+ Buildings.Utilities.Psychrometrics.hSat_pTSat hSatWatIn_dT_M(p=pAir,TSat=TWatIn+dTWat)
+ "Model to calculate derivative of saturated specific enthalpy of air at water inlet temperature";
+ Modelica.SIunits.SpecificHeatCapacity dhSatdTWatIn
+ "Deriviative of saturated moist air enthalpy at water inlet temperature";
+ Real NonZerDelWatTem
+ "Regularization water temperature difference betwee inlet and outlet";
+
+
+ Modelica.SIunits.SpecificEnthalpy hAirOut
+ "Specific enthalpy of moist air at the air outlet";
+ Buildings.Utilities.Psychrometrics.hSat_pTSat hSatWatOutM(p=pAir,TSat=TWatOutEst)
+ "Model to calculate saturated specific enthalpy of air at water outlet temperature";
+ Modelica.SIunits.SpecificEnthalpy hSatWatOut
+ "Saturated specific enthalpy of air at water outlet temperature";
+
+ Modelica.SIunits.Temperature TSurEff
+ "Effective surface temperature of the coil to split sensible and latent heat from total heat transfer rate";
+
+ Modelica.SIunits.SpecificEnthalpy hSatSurEff
+ "Enthalpy of saturated moist air at the effective surface temperature";
+
+ Buildings.Utilities.Psychrometrics.hSat_pTSat hSatSurEffM(p=pAir,TSat=TSurEff)
+ "An object to calculate the saturated enthalpy of moist air at the coil surface temperature";
+ Buildings.Utilities.Psychrometrics.hSat_pTSat hSatSurEffMinM(p=pAir,TSat=273.15+1)
+ "An object to calculate a lower bound of the saturated enthalpy of moist
+ air at the coil surface temperature";
+
+ Modelica.SIunits.SpecificHeatCapacity cpEff
+ "Effective specific heat: change in enthalpy with respect to temperature
+ along the saturation line at the local water temperature";
+
+
+ Modelica.SIunits.MassFlowRate UASta
+ "Overall mass transfer coefficient for dry coil";
+
+ Real NTUAirSta(unit="1")
+ "Number of transfer units for air-side only (NTU_a*)";
+
+ Real epsSta(start=0.66, unit="1")
+ "Effectiveness for heat exchanger (e*)";
+
+ Modelica.SIunits.MassFlowRate CStaMin
+ "Min of product of mass flow rates and specific heats; analogous to Cmin";
+
+ Modelica.SIunits.MassFlowRate CStaMin_flow_nominal= min(
+ mAir_flow_nominal,mWat_flow_nominal*cpEff0/cpWat0)
+ "Analogus to CMin_flow_nominal, only for a regularization";
+ Modelica.SIunits.MassFlowRate CStaMax_flow_nominal= max(
+ mAir_flow_nominal,mWat_flow_nominal*cpEff0/cpWat0)
+ "Analogus to CMax_flow_nominal, only for a regularization";
+ Modelica.SIunits.MassFlowRate deltaCStaMin=delta*min(
+ mAir_flow_nominal,mWat_flow_nominal*cpEff0/cpWat0)
+ "Min of product of mass flow rates and specific heats, analogous to Cmin";
+ Modelica.SIunits.Temperature TWatOutEst
+ "State_estimation of Temperature of water at outlet";
+
+ output Modelica.SIunits.HeatFlowRate QTot_flow
+ "Total heat flow from water to air stream";
+ output Modelica.SIunits.HeatFlowRate QSen_flow
+ "Sensible heat flow from water to air stream";
+ output Modelica.SIunits.Temperature TWatOut
+ "Temperature at the water outlet";
+ output Modelica.SIunits.Temperature TSurAirIn
+ "Coil surface temperature at the air inlet";
+ output Modelica.SIunits.Temperature TAirOut
+ "Temperature at the air outlet";
+initial equation
+ TWatOutEst=0.5*(TWatIn+ TAirIn);
+
+equation
+
+ hAirIn=Buildings.Media.Air.specificEnthalpy_pTX(p=pAir,T=TAirIn,X={X_wAirIn,1-X_wAirIn});
+ hSatWatIn=hSatWatInM.hSat;
+ dhSatdTWatIn=(hSatWatIn_dT_M.hSat-hSatWatInM.hSat)/dTWat; // dTWat is a parameter
+ hSatWatOut= hSatWatOutM.hSat;
+ NonZerDelWatTem=Buildings.Utilities.Math.Functions.regNonZeroPower(x=TWatOutEst-TWatIn,n=1,delta=0.1);
+ cpEff = Buildings.Utilities.Math.Functions.smoothMax(
+ (hSatWatOut - hSatWatIn)/NonZerDelWatTem,
+ dhSatdTWatIn,
+ cpEff0*delta);
+
+ CStaMin=Buildings.Utilities.Math.Functions.smoothMin(
+ mAir_flow,
+ mWat_flow*cpWat/cpEff,
+ deltaCStaMin/4);
+
+ UASta = (UAAir/cpAir)/(1 + (cpEff*UAAir)/(cpAir*UAWat));
+
+ epsSta=epsilon_C(
+ UA=UASta*cpDum,
+ C1_flow=mWat_flow*cpWat/cpEff*cpDum,
+ C2_flow=mAir_flow*cpDum,
+ flowRegime=Integer(cfg),
+ CMin_flow_nominal=CStaMin_flow_nominal*cpDum,
+ CMax_flow_nominal=CStaMax_flow_nominal*cpDum,
+ delta=delta);
+
+ QTot_flow = epsSta*CStaMin*(hAirIn - hSatWatIn);
+
+ QTot_flow = mAir_flow*(hAirIn- hAirOut);
+ QTot_flow = mWat_flow*cpWat*(TWatOut-TWatIn);
+
+ NTUAirSta = UAAir/(mAir_flow*cpAir);
+
+ hSatSurEff = Buildings.Utilities.Math.Functions.smoothMax(
+ x1 = hSatSurEffMinM.hSat,
+ x2 = hAirIn +(hAirOut - hAirIn) / (1 - exp(-NTUAirSta)),
+ deltaX = delta*1E4); // NTUAirSta is bounded as long as UAAir>0 due to the regularization of mAir_flow
+
+ hSatSurEffM.hSat=hSatSurEff;
+ TAirOut = TSurEff +(TAirIn - TSurEff)*exp(-NTUAirSta);
+ QSen_flow= Buildings.Utilities.Math.Functions.smoothMin(
+ x1 = mAir_flow*cpAir*(TAirIn-TAirOut),
+ x2 = QTot_flow,
+ deltaX = delta*mWatNonZer_flow*cpWat0*5); // the last term is only for regularization with DTWater=5oC
+
+ (TAirIn-TSurAirIn)*UAAir=(TSurAirIn-TWatOut)*UAWat;
+ der(TWatOutEst)=-1/tau*TWatOutEst+1/tau*TWatOut;
+
+annotation (Icon(graphics={
+ Rectangle(
+ extent={{-100,100},{100,-100}},
+ lineColor={28,108,200},
+ fillColor={170,213,255},
+ fillPattern=FillPattern.Solid)}), Documentation(revisions="
+
+- Jan 21, 2021, by Donghun Kim:
First implementation of the fuzzy model.
+See
+
+issue 622
+for more information.
+
+
+", info="
+
+This model implements the calculation for a 100% wet coil.
+
+
+The equations from Braun (1988) and Mitchell and Braun (2012a and b),
+which are essentially the extension of the ε-NTU approach to
+simultaneous sensible and latent heat transfer, are utilized.
+
+
+The mathematical equations are analogous to that of the sensible heat exchanger.
+However, the key distinction is from that the heat transfer is driven by an enthalpy difference
+not by an temperature difference. This change in the driving potential results in re-defining
+capacitances and heat transfer coefficients accordinlgy.
+
+
+
+The total heat transfer rate is expressed as
+
+
+ Qtot=ε* C*min
+(hair,in-hsat(Twat,in)),
+
+
+where ε*=f(Cr*,NTU*) and f is the same ε-NTU relationships
+(depending on the heat exchanger configuration) for the sensible heat exchanger.
+
+
+hair,in and hsat(Twat,in) are
+the specific enthalpies of the incoming moist air and saturated moist air
+at the water inlet temperature.
+
+
+The capacitances of water and air streams are defined as
+
+C*air=mair and
+C*wat=mwatcp,wat/csat,
+
+
+where csat is an specific heat capacity, which indicates the sensitivity
+of the enthalpy of the staturated moist air w.r.t. the temperature, and is defined
+here as csat=(hsat(Twat,out)-hsat(Twat,in))
+/(Twat,out-Twat,in).
+
+
+The capacitance ratio and minimum capacitance are naturally defined as
+
+ Cr*=min(C*air,C*wat)/max(C*air,C*wat)
+and C*min=min(C*air,C*wat).
+
+
+The number of transfer unit for the wet-coil is defined as NTU*=UA*/C*min, where
+
+
+UA*=1/(1/(UAair/cp,air)+1/(UAwat/csat).
+
+
+References
+
+Braun, James E. 1988.
+"Methodologies for the Design and Control of Central Cooling Plants".
+PhD Thesis. University of Wisconsin - Madison.
+Available
+
+online.
+
+
+Mitchell, John W., and James E. Braun. 2012a.
+Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley.
+
+
+Mitchell, John W., and James E. Braun. 2012b.
+"Supplementary Material Chapter 2: Heat Exchangers for Cooling Applications".
+Excerpt from Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley.
+Available
+
+online.
+
+"));
+end WetCoilWetRegime;
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/determineWaterIndex.mo b/Buildings/Fluid/HeatExchangers/BaseClasses/determineWaterIndex.mo
new file mode 100644
index 00000000000..d5c7afacc98
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/determineWaterIndex.mo
@@ -0,0 +1,49 @@
+within Buildings.Fluid.HeatExchangers.BaseClasses;
+function determineWaterIndex
+ "Determine the index of water in a 2-component medium model"
+ input String[:] substanceNames "Names of substances of media";
+ output Integer idxWat "Index of water";
+protected
+ Boolean found(fixed=false) "Flag, used for error checking";
+ Integer N = size(substanceNames, 1) "Number of substances";
+algorithm
+ found:=false;
+ idxWat := 1;
+ for i in 1:N loop
+ if Modelica.Utilities.Strings.isEqual(
+ string1=substanceNames[i],
+ string2="water",
+ caseSensitive=false) then
+ idxWat := i;
+ found := true;
+ end if;
+ end for;
+ assert(found,
+ "Did not find medium species 'water' in the medium model. " +
+ "Change medium model.");
+ annotation (Documentation(revisions="
+
+-
+April 19, 2017, by Michael Wetter:
+Removed assertion as function is valid also for other values than N==2
.
+
+-
+March 17, 2017, by Michael O'Keefe:
+First implementation. See
+
+issue 622 for more information.
+
+
+", info="
+
+Given an array of strings representing substance names, this function returns
+the integer index of the substance named \"water\" (case-insensitive).
+
+
+
+This function is useful to automate lookup up the index of water within a media
+so as to avoid hard-coding or guessing what the index will be. Typically, this
+function would be run once at initialization time.
+
+"));
+end determineWaterIndex;
diff --git a/Buildings/Fluid/HeatExchangers/BaseClasses/package.order b/Buildings/Fluid/HeatExchangers/BaseClasses/package.order
index 3dfbd5d39be..aced07a5558 100644
--- a/Buildings/Fluid/HeatExchangers/BaseClasses/package.order
+++ b/Buildings/Fluid/HeatExchangers/BaseClasses/package.order
@@ -20,6 +20,11 @@ PipeManifoldFixedResistance
PipeManifoldFlowDistributor
PipeManifoldNoResistance
RayleighNumber
+WetCoilDryRegime
+WetCoilDryWetRegime
+WetCoilUARated
+WetCoilWetRegime
+determineWaterIndex
dynamicViscosityWater
epsilon_C
epsilon_ntuZ
diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mo
new file mode 100644
index 00000000000..4f03b14ab56
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mo
@@ -0,0 +1,85 @@
+within Buildings.Fluid.HeatExchangers.Examples;
+model WetCoilEffectivenessNTUMassFlow
+ "Model that tests the wet coil effectiveness-NTU model with variable mass flow rates"
+ extends Modelica.Icons.Example;
+ extends
+ Buildings.Fluid.HeatExchangers.Examples.BaseClasses.EffectivenessNTUMassFlow(
+ sou_1(nPorts=1),
+ sin_1(nPorts=1),
+ sou_2(nPorts=1),
+ sin_2(nPorts=1));
+
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU hex(
+ redeclare package Medium1 = Medium1,
+ redeclare package Medium2 = Medium2,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal(displayUnit="Pa") = 200,
+ dp1_nominal(displayUnit="Pa") = 3000,
+ UA_nominal=Q_flow_nominal/Buildings.Fluid.HeatExchangers.BaseClasses.lmtd(
+ T_a1_nominal,
+ T_b1_nominal,
+ T_a2_nominal,
+ T_b2_nominal),
+ show_T=true,
+ energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState)
+ "Heat exchanger"
+ annotation (Placement(transformation(extent={{80,20},{100,40}})));
+
+ Sensors.RelativeHumidityTwoPort senRelHum(
+ redeclare package Medium = Medium2,
+ m_flow_nominal=m2_flow_nominal)
+ "Relative humidity sensor"
+ annotation (Placement(transformation(extent={{60,14},{40,34}})));
+
+equation
+ connect(sou_1.ports[1], hex.port_a1) annotation (Line(
+ points={{18,62},{60,62},{60,36},{80,36}},
+ color={0,127,255},
+ smooth=Smooth.None));
+ connect(hex.port_b1, sin_1.ports[1]) annotation (Line(
+ points={{100,36},{108,36},{108,60},{120,60}},
+ color={0,127,255},
+ smooth=Smooth.None));
+ connect(hex.port_a2, sou_2.ports[1]) annotation (Line(
+ points={{100,24},{118,24}},
+ color={0,127,255},
+ smooth=Smooth.None));
+ connect(hex.port_b2, senRelHum.port_a) annotation (Line(
+ points={{80,24},{60,24}},
+ color={0,127,255},
+ smooth=Smooth.None));
+ connect(senRelHum.port_b, sin_2.ports[1]) annotation (Line(
+ points={{40,24},{20,24}},
+ color={0,127,255},
+ smooth=Smooth.None));
+ annotation (
+ experiment(Tolerance=1E-6, StopTime=3600),
+ __Dymola_Commands(
+ file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mos"
+ "Simulate and plot"),
+ Diagram(coordinateSystem(preserveAspectRatio=true,
+ extent={{-100, -100},{200,200}})),
+ Documentation(revisions="
+
+-
+March 17, 2017, by Michael O'Keefe:
+First implementation. See
+
+issue 622 for more information.
+
+
+", info="
+
+This example is similar to
+
+Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowMassFlow
+except that the coil model
+
+Buildings.Fluid.HeatExchangers.WetCoilCounterFlow
+is replaced here by
+
+Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.
+
+"));
+end WetCoilEffectivenessNTUMassFlow;
diff --git a/Buildings/Fluid/HeatExchangers/Examples/package.order b/Buildings/Fluid/HeatExchangers/Examples/package.order
index ea588a6a00b..2ad9a3f6d95 100644
--- a/Buildings/Fluid/HeatExchangers/Examples/package.order
+++ b/Buildings/Fluid/HeatExchangers/Examples/package.order
@@ -14,4 +14,5 @@ WetCoilCounterFlowMassFlow
WetCoilCounterFlowPControl
WetCoilDiscretizedMassFlow
WetCoilDiscretizedPControl
+WetCoilEffectivenessNTUMassFlow
BaseClasses
diff --git a/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mo b/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mo
new file mode 100644
index 00000000000..641a63f48be
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mo
@@ -0,0 +1,305 @@
+within Buildings.Fluid.HeatExchangers.Validation;
+model WetCoilEffectivenessNTU
+ "Model that validates the wet coil effectiveness-NTU model"
+ extends Modelica.Icons.Example;
+
+ package Medium_W = Buildings.Media.Water;
+ package Medium_A = Buildings.Media.Air;
+
+ constant Modelica.SIunits.AbsolutePressure pAtm = 101325
+ "Atmospheric pressure";
+
+ parameter Modelica.SIunits.Temperature T_a1_nominal=
+ Modelica.SIunits.Conversions.from_degF(42)
+ "Inlet water temperature";
+ parameter Modelica.SIunits.Temperature T_a2_nominal=
+ Modelica.SIunits.Conversions.from_degF(80)
+ "Inlet air temperature";
+ parameter Modelica.SIunits.Temperature T_b1_nominal=
+ 273.15+11.0678
+ "Outlet water temperature in fully wet conditions";
+ parameter Modelica.SIunits.Temperature T_b2_nominal=
+ 273.15+13.5805
+ "Outlet air temperature in fully wet conditions";
+ final parameter Modelica.SIunits.HeatFlowRate Q_flow_nominal=
+ m1_flow_nominal * 4186 * (T_a1_nominal - T_b1_nominal);
+ parameter Real X_w_a2_nominal = 0.0173
+ "Inlet water mass fraction in fully wet conditions";
+ parameter Modelica.SIunits.ThermalConductance UA_nominal = 4748
+ "Total thermal conductance at nominal flow, from textbook";
+ parameter Modelica.SIunits.MassFlowRate m1_flow_nominal = 3.78
+ "Nominal mass flow rate of water";
+ parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 2.646
+ "Nominal mass flow rate of air";
+ parameter Types.HeatExchangerConfiguration hexCon=
+ Types.HeatExchangerConfiguration.CounterFlow
+ "Heat exchanger configuration";
+ Buildings.Fluid.Sources.Boundary_pT sinAir(
+ redeclare package Medium = Medium_A,
+ use_p_in=false,
+ nPorts=3)
+ "Air sink"
+ annotation (Placement(transformation(extent={{-180,-72},{-160,-52}})));
+ Sources.MassFlowSource_T souAir(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ T=T_a2_nominal,
+ use_Xi_in=true,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,-70},{120,-50}})));
+ Buildings.Fluid.Sources.Boundary_pT sinWat(
+ redeclare package Medium = Medium_W,
+ nPorts=3)
+ "Sink for water"
+ annotation (Placement(transformation(extent={{50,10},{30,30}})));
+ Buildings.Utilities.Psychrometrics.ToTotalAir conversion
+ annotation (Placement(transformation(extent={{190,-90},{170,-70}})));
+ Sensors.RelativeHumidityTwoPort relHumIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Inlet relative humidity"
+ annotation (Placement(transformation(extent={{40,-70},{20,-50}})));
+ Sensors.TemperatureTwoPort TDryBulIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Inlet dry bulb temperature"
+ annotation (Placement(transformation(extent={{70,-70},{50,-50}})));
+ Modelica.Blocks.Sources.RealExpression pAir(y=pAtm) "Air pressure"
+ annotation (Placement(transformation(extent={{140,-42},{120,-18}})));
+ Buildings.Utilities.Psychrometrics.TWetBul_TDryBulXi wetBulIn(redeclare
+ package Medium = Medium_A) "Computation of wet bulb temperature"
+ annotation (Placement(transformation(extent={{120,-10},{140,10}})));
+ Sensors.MassFractionTwoPort senMasFraIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of entering air"
+ annotation (Placement(transformation(extent={{110,-70},{90,-50}})));
+ Sensors.MassFractionTwoPort senMasFraOut(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of leaving air"
+ annotation (Placement(transformation(extent={{-110,-10},{-130,10}})));
+ Sensors.TemperatureTwoPort TDryBulOut(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Dry bulb temperature of leaving air"
+ annotation (Placement(transformation(extent={{-50,-10},{-70,10}})));
+ Buildings.Utilities.Psychrometrics.TWetBul_TDryBulXi wetBulOut(redeclare
+ package Medium = Medium_A) "Computation of wet bulb temperature"
+ annotation (Placement(transformation(extent={{-40,-90},{-20,-70}})));
+ Modelica.Blocks.Sources.RealExpression pAir1(y=pAtm) "Air pressure"
+ annotation (Placement(transformation(extent={{-100,-112},{-80,-88}})));
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU hexWetNTU(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ UA_nominal=UA_nominal,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ dp1_nominal=0,
+ configuration=hexCon,
+ show_T=true) "Effectiveness-NTU coil model (parameterized with nominal UA)"
+ annotation (Placement(transformation(extent={{-30,4},{-10,24}})));
+ Sources.MassFlowSource_T souWat1(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1)
+ "Source for water"
+ annotation (Placement(transformation(extent={{-180,10},{-160,30}})));
+ WetCoilCounterFlow hexDis(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ allowFlowReversal1=false,
+ allowFlowReversal2=false,
+ dp1_nominal=0,
+ UA_nominal=UA_nominal,
+ show_T=true,
+ nEle=30,
+ energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
+ tau1=0.1,
+ tau2=0.1,
+ tau_m=0.1)
+ "Discretized coil model"
+ annotation (Placement(transformation(extent={{-30,56},{-10,76}})));
+ Sources.MassFlowSource_T souWat(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1) "Source for water"
+ annotation (Placement(transformation(extent={{-180,70},{-160,90}})));
+ Sources.MassFlowSource_T souAir2(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ T=T_a2_nominal,
+ use_Xi_in=true,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,30},{120,50}})));
+ Sensors.MassFractionTwoPort senMasFraOut1(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of leaving air"
+ annotation (Placement(transformation(extent={{-110,50},{-130,70}})));
+ Sensors.TemperatureTwoPort TDryBulOut1(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Dry bulb temperature of leaving air"
+ annotation (Placement(transformation(extent={{-50,50},{-70,70}})));
+ Sensors.RelativeHumidityTwoPort relHumOut_eps(redeclare package Medium =
+ Medium_A, m_flow_nominal=m2_flow_nominal) "Outlet relative humidity"
+ annotation (Placement(transformation(extent={{-80,-10},{-100,10}})));
+ Sensors.RelativeHumidityTwoPort relHumOut_dis(redeclare package Medium =
+ Medium_A, m_flow_nominal=m2_flow_nominal) "Outlet relative humidity"
+ annotation (Placement(transformation(extent={{-80,50},{-100,70}})));
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU hexWetNTU_TX(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ use_Q_flow_nominal=true,
+ Q_flow_nominal=Q_flow_nominal,
+ T_a2_nominal=T_a2_nominal,
+ w_a2_nominal=X_w_a2_nominal/(1 - X_w_a2_nominal),
+ T_a1_nominal=T_a1_nominal,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ dp1_nominal=0,
+ configuration=hexCon,
+ show_T=true)
+ "Effectiveness-NTU coil model (parameterized with nominal T and X)"
+ annotation (Placement(transformation(extent={{-30,-44},{-10,-24}})));
+ Sources.MassFlowSource_T souAir1(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ T=T_a2_nominal,
+ use_Xi_in=true,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,-110},{120,-90}})));
+ Sources.MassFlowSource_T souWat2(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1)
+ "Source for water"
+ annotation (Placement(transformation(extent={{-180,-30},{-160,-10}})));
+ Modelica.Blocks.Sources.CombiTimeTable w_a2(table=[0,0.0035383; 1,0.01765],
+ timeScale=1000)
+ "Absolute humidity of entering air"
+ annotation (Placement(transformation(extent={{196,-34},{176,-14}})));
+equation
+ connect(pAir.y, wetBulIn.p) annotation (Line(points={{119,-30},{112,-30},{112,
+ -8},{119,-8}}, color={0,0,127}));
+ connect(pAir1.y, wetBulOut.p) annotation (Line(points={{-79,-100},{-50,-100},
+ {-50,-88},{-41,-88}},
+ color={0,0,127}));
+ connect(senMasFraOut.port_b, sinAir.ports[1])
+ annotation (Line(points={{-130,0},{-140,0},{-140,-59.3333},{-160,-59.3333}},
+ color={0,127,255}));
+ connect(TDryBulOut.T, wetBulOut.TDryBul)
+ annotation (Line(points={{-60,11},{-60,14},{-44,14},{-44,-72},{-41,-72}},
+ color={0,0,127}));
+ connect(senMasFraOut.X, wetBulOut.Xi[1]) annotation (Line(points={{-120,11},{
+ -120,14},{-134,14},{-134,-80},{-41,-80}}, color={0,0,127}));
+ connect(souAir.ports[1], senMasFraIn.port_a)
+ annotation (Line(points={{120,-60},{110,-60}}, color={0,127,255}));
+ connect(senMasFraIn.port_b, TDryBulIn.port_a)
+ annotation (Line(points={{90,-60},{70,-60}}, color={0,127,255}));
+ connect(senMasFraIn.X, wetBulIn.Xi[1])
+ annotation (Line(points={{100,-49},{100,0},{119,0}}, color={0,0,127}));
+ connect(TDryBulIn.T, wetBulIn.TDryBul)
+ annotation (Line(points={{60,-49},{60,8},{119,8}}, color={0,0,127}));
+ connect(TDryBulIn.port_b, relHumIn.port_a)
+ annotation (Line(points={{50,-60},{40,-60}}, color={0,127,255}));
+ connect(souWat1.ports[1], hexWetNTU.port_a1) annotation (Line(points={{-160,20},
+ {-30,20}}, color={0,127,255}));
+ connect(hexWetNTU.port_b1, sinWat.ports[1]) annotation (Line(points={{-10,20},
+ {16,20},{16,22.6667},{30,22.6667}},
+ color={0,127,255}));
+ connect(souWat.ports[1], hexDis.port_a1) annotation (Line(points={{-160,80},{-40,
+ 80},{-40,72},{-30,72}}, color={0,127,255}));
+ connect(hexDis.port_b1, sinWat.ports[2]) annotation (Line(points={{-10,72},{20,
+ 72},{20,20},{30,20}}, color={0,127,255}));
+ connect(souAir2.ports[1], hexDis.port_a2) annotation (Line(points={{120,40},{
+ 0,40},{0,60},{-10,60}}, color={0,127,255}));
+ connect(hexWetNTU.port_b2, TDryBulOut.port_a) annotation (Line(points={{-30,8},
+ {-40,8},{-40,0},{-50,0}}, color={0,127,255}));
+ connect(hexWetNTU.port_a2, relHumIn.port_b) annotation (Line(points={{-10,8},
+ {10,8},{10,-60},{20,-60}},
+ color={0,127,255}));
+ connect(hexDis.port_b2, TDryBulOut1.port_a)
+ annotation (Line(points={{-30,60},{-50,60}}, color={0,127,255}));
+ connect(senMasFraOut1.port_b, sinAir.ports[2]) annotation (Line(points={{-130,60},
+ {-150,60},{-150,-62},{-160,-62}}, color={0,127,255}));
+ connect(TDryBulOut.port_b, relHumOut_eps.port_a) annotation (Line(points={{
+ -70,0},{-76,0},{-76,0},{-80,0}}, color={0,127,255}));
+ connect(relHumOut_eps.port_b, senMasFraOut.port_a)
+ annotation (Line(points={{-100,0},{-110,0}}, color={0,127,255}));
+ connect(TDryBulOut1.port_b, relHumOut_dis.port_a)
+ annotation (Line(points={{-70,60},{-80,60}}, color={0,127,255}));
+ connect(relHumOut_dis.port_b, senMasFraOut1.port_a)
+ annotation (Line(points={{-100,60},{-110,60}}, color={0,127,255}));
+ connect(hexWetNTU_TX.port_b1, sinWat.ports[3]) annotation (Line(points={{-10,-28},
+ {20,-28},{20,17.3333},{30,17.3333}}, color={0,127,255}));
+ connect(souAir1.ports[1], hexWetNTU_TX.port_a2) annotation (Line(points={{120,
+ -100},{0,-100},{0,-40},{-10,-40}}, color={0,127,255}));
+ connect(sinAir.ports[3], hexWetNTU_TX.port_b2) annotation (Line(points={{-160,
+ -64.6667},{-150,-64.6667},{-150,-64},{-138,-64},{-138,-40},{-30,-40}},
+ color={0,127,255}));
+ connect(souWat2.ports[1], hexWetNTU_TX.port_a1) annotation (Line(points={{-160,
+ -20},{-40,-20},{-40,-28},{-30,-28}}, color={0,127,255}));
+ connect(w_a2.y[1], conversion.XiDry) annotation (Line(points={{175,-24},{172,
+ -24},{172,-50},{196,-50},{196,-80},{191,-80}}, color={0,0,127}));
+ connect(conversion.XiTotalAir, souAir.Xi_in[1]) annotation (Line(points={{169,
+ -80},{158,-80},{158,-64},{142,-64}}, color={0,0,127}));
+ connect(conversion.XiTotalAir, souAir1.Xi_in[1]) annotation (Line(points={{
+ 169,-80},{154,-80},{154,-104},{142,-104}}, color={0,0,127}));
+ connect(conversion.XiTotalAir, souAir2.Xi_in[1]) annotation (Line(points={{
+ 169,-80},{158,-80},{158,36},{142,36}}, color={0,0,127}));
+ annotation (Diagram(coordinateSystem(preserveAspectRatio=true,
+ extent={{-200,-120},{200,120}})),
+ experiment(
+ StopTime=1000,
+ Tolerance=1e-06),
+ __Dymola_Commands(
+ file="Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mos"
+ "Simulate and plot"),
+ Documentation(info="
+
+This model duplicates an example from Mitchell and Braun 2012, example SM-2-1
+(Mitchell and Braun 2012) to validate a single case for the
+
+Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU
+model.
+
+Validation
+
+The example simulates a wet coil with constant air
+and water inlet temperature and mass flow rate, and an increasing air inlet
+humidity which triggers the transition from a fully-dry to a fully-wet regime.
+The reference used for validation is the published experimental data.
+A discretized wet coil model is also simulated for comparison.
+To provide an accurate reference, the latter model is configured with 30 elements.
+Under steady-state modeling assumptions, this creates a large system of
+non-linear equations. To alleviate this effect, dynamics are considered but
+the simulation time is increased to 1000 s to reproduce quasi steady-state
+conditions.
+
+
+Note that the outlet air relative humidity may slightly exceed 100% when using
+the epsilon-NTU model.
+
+References
+
+Mitchell, John W., and James E. Braun. 2012.
+\"Supplementary Material Chapter 2: Heat Exchangers for Cooling Applications\".
+Excerpt from Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley. Available online:
+
+http://bcs.wiley.com/he-bcs/Books?action=index&itemId=0470624574&bcsId=7185
+
+", revisions="
+
+-
+April 19, 2017, by Michael Wetter:
+Revised model to avoid mixing textual equations and connect statements.
+
+-
+March 17, 2017, by Michael O'Keefe:
+First implementation. See
+
+issue 622 for more information.
+
+
+"));
+end WetCoilEffectivenessNTU;
diff --git a/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mo b/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mo
new file mode 100644
index 00000000000..92cd738a20b
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mo
@@ -0,0 +1,296 @@
+within Buildings.Fluid.HeatExchangers.Validation;
+model WetCoilEffectivenessNTUHeating
+ "Model that validates the wet coil effectiveness-NTU model in heating conditions"
+ extends Modelica.Icons.Example;
+
+ package Medium_W = Buildings.Media.Water;
+ package Medium_A = Buildings.Media.Air;
+
+ constant Modelica.SIunits.AbsolutePressure pAtm = 101325
+ "Atmospheric pressure";
+
+ parameter Modelica.SIunits.Temperature T_a1_nominal=50+273.15
+ "Inlet water temperature";
+
+ parameter Modelica.SIunits.Temperature T_b1_nominal=45+273.15
+ "Outlet water temperature";
+
+ parameter Modelica.SIunits.Temperature T_a2_nominal=273.15
+ "Inlet air temperature";
+
+ final parameter Modelica.SIunits.Temperature T_b2_nominal=
+ T_a2_nominal + Q_flow_nominal / m2_flow_nominal / 1010
+ "Outlet air temperature";
+
+ final parameter Modelica.SIunits.ThermalConductance CMin_flow_nominal=
+ min(m1_flow_nominal * 4186, m2_flow_nominal * 1010)
+ "Minimal capacity flow rate at nominal condition";
+
+ final parameter Modelica.SIunits.ThermalConductance CMax_flow_nominal=
+ max(m1_flow_nominal * 4186, m2_flow_nominal * 1010)
+ "Minimal capacity flow rate at nominal condition";
+
+ final parameter Modelica.SIunits.HeatFlowRate Q_flow_nominal=
+ m1_flow_nominal * 4186 * (T_a1_nominal - T_b1_nominal);
+
+ final parameter Real eps_nominal=
+ abs(Q_flow_nominal/((T_a1_nominal - T_a2_nominal) * CMin_flow_nominal))
+ "Nominal effectiveness";
+
+ parameter Modelica.SIunits.ThermalConductance UA_nominal=
+ Buildings.Fluid.HeatExchangers.BaseClasses.ntu_epsilonZ(
+ eps=eps_nominal,
+ Z=CMin_flow_nominal/CMax_flow_nominal,
+ flowRegime=Integer(hexCon)) * CMin_flow_nominal
+ "Total thermal conductance at nominal flow";
+
+ parameter Modelica.SIunits.MassFlowRate m1_flow_nominal = 3.78
+ "Nominal mass flow rate of water";
+ parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 2.646
+ "Nominal mass flow rate of air";
+ parameter Types.HeatExchangerConfiguration hexCon=
+ Types.HeatExchangerConfiguration.CounterFlow
+ "Heat exchanger configuration";
+ Buildings.Fluid.Sources.Boundary_pT sinAir(
+ redeclare package Medium = Medium_A,
+ use_p_in=false,
+ nPorts=3)
+ "Air sink"
+ annotation (Placement(transformation(extent={{-180,-68},{-160,-48}})));
+ Sources.MassFlowSource_T souAir(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ use_T_in=true,
+ T=T_a2_nominal,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,-10},{120,10}})));
+ Buildings.Fluid.Sources.Boundary_pT sinWat(
+ redeclare package Medium = Medium_W,
+ nPorts=3)
+ "Sink for water"
+ annotation (Placement(transformation(extent={{82,30},{62,50}})));
+ Sensors.RelativeHumidityTwoPort relHumIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Inlet relative humidity"
+ annotation (Placement(transformation(extent={{40,-10},{20,10}})));
+ Sensors.TemperatureTwoPort TDryBulIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Inlet dry bulb temperature"
+ annotation (Placement(transformation(extent={{70,-10},{50,10}})));
+ Sensors.MassFractionTwoPort senMasFraIn(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of entering air"
+ annotation (Placement(transformation(extent={{110,-10},{90,10}})));
+ Sensors.MassFractionTwoPort senMasFraOut(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of leaving air"
+ annotation (Placement(transformation(extent={{-110,-10},{-130,10}})));
+ Sensors.TemperatureTwoPort TDryBulOut(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Dry bulb temperature of leaving air"
+ annotation (Placement(transformation(extent={{-50,-10},{-70,10}})));
+ Sources.MassFlowSource_T souWat1(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1)
+ "Source for water"
+ annotation (Placement(transformation(extent={{-180,10},{-160,30}})));
+ DryCoilCounterFlow hexDis(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ allowFlowReversal1=false,
+ allowFlowReversal2=false,
+ dp1_nominal=0,
+ UA_nominal=UA_nominal,
+ show_T=true,
+ nEle=30,
+ energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
+ tau1=0.1,
+ tau2=0.1,
+ tau_m=0.1)
+ "Discretized coil model"
+ annotation (Placement(transformation(extent={{-30,56},{-10,76}})));
+ Sources.MassFlowSource_T souWat(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1) "Source for water"
+ annotation (Placement(transformation(extent={{-180,70},{-160,90}})));
+ Sources.MassFlowSource_T souAir2(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ use_T_in=true,
+ T=T_a2_nominal,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,50},{120,70}})));
+ Sensors.MassFractionTwoPort senMasFraOut1(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Water mass fraction of leaving air"
+ annotation (Placement(transformation(extent={{-110,50},{-130,70}})));
+ Sensors.TemperatureTwoPort TDryBulOut1(redeclare package Medium = Medium_A,
+ m_flow_nominal=m2_flow_nominal) "Dry bulb temperature of leaving air"
+ annotation (Placement(transformation(extent={{-50,50},{-70,70}})));
+ Sensors.RelativeHumidityTwoPort relHumOut_eps(redeclare package Medium =
+ Medium_A, m_flow_nominal=m2_flow_nominal) "Outlet relative humidity"
+ annotation (Placement(transformation(extent={{-80,-10},{-100,10}})));
+ Sensors.RelativeHumidityTwoPort relHumOut_dis(redeclare package Medium =
+ Medium_A, m_flow_nominal=m2_flow_nominal) "Outlet relative humidity"
+ annotation (Placement(transformation(extent={{-80,50},{-100,70}})));
+ Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU hexDryNTU_T(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ Q_flow_nominal=Q_flow_nominal,
+ T_a2_nominal=T_a2_nominal,
+ T_a1_nominal=T_a1_nominal,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ dp1_nominal=0,
+ configuration=hexCon,
+ show_T=true)
+ "Effectiveness-NTU coil model (parameterized with nominal T and X)"
+ annotation (Placement(transformation(extent={{-30,-64},{-10,-44}})));
+ Sources.MassFlowSource_T souAir1(
+ redeclare package Medium = Medium_A,
+ m_flow=m2_flow_nominal,
+ use_T_in=true,
+ T=T_a2_nominal,
+ nPorts=1)
+ "Air source"
+ annotation (Placement(transformation(extent={{140,-70},{120,-50}})));
+ Sources.MassFlowSource_T souWat2(
+ redeclare package Medium = Medium_W,
+ m_flow=m1_flow_nominal,
+ T=T_a1_nominal,
+ nPorts=1)
+ "Source for water"
+ annotation (Placement(transformation(extent={{-180,-30},{-160,-10}})));
+ Controls.OBC.CDL.Continuous.Sources.Ramp T_a2(
+ height=15,
+ duration=1000,
+ offset=273.15) "Air inlet temperature"
+ annotation (Placement(transformation(extent={{190,-10},{170,10}})));
+ Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU hexWetNTU_TX(
+ redeclare package Medium1 = Medium_W,
+ redeclare package Medium2 = Medium_A,
+ use_Q_flow_nominal=true,
+ Q_flow_nominal=Q_flow_nominal,
+ T_a2_nominal=T_a2_nominal,
+ w_a2_nominal=0.001,
+ T_a1_nominal=T_a1_nominal,
+ m1_flow_nominal=m1_flow_nominal,
+ m2_flow_nominal=m2_flow_nominal,
+ dp2_nominal=0,
+ dp1_nominal=0,
+ configuration=hexCon,
+ show_T=true)
+ "Effectiveness-NTU coil model (parameterized with nominal T and X)"
+ annotation (Placement(transformation(extent={{-30,10},{-10,30}})));
+equation
+ connect(senMasFraOut.port_b, sinAir.ports[1])
+ annotation (Line(points={{-130,0},{-140,0},{-140,-55.3333},{-160,-55.3333}},
+ color={0,127,255}));
+ connect(souAir.ports[1], senMasFraIn.port_a)
+ annotation (Line(points={{120,0},{110,0}}, color={0,127,255}));
+ connect(senMasFraIn.port_b, TDryBulIn.port_a)
+ annotation (Line(points={{90,0},{70,0}}, color={0,127,255}));
+ connect(TDryBulIn.port_b, relHumIn.port_a)
+ annotation (Line(points={{50,0},{40,0}}, color={0,127,255}));
+ connect(souWat.ports[1], hexDis.port_a1) annotation (Line(points={{-160,80},{-40,
+ 80},{-40,72},{-30,72}}, color={0,127,255}));
+ connect(hexDis.port_b1, sinWat.ports[1]) annotation (Line(points={{-10,72},{
+ 10,72},{10,42.6667},{62,42.6667}}, color={0,127,255}));
+ connect(souAir2.ports[1], hexDis.port_a2) annotation (Line(points={{120,60},{
+ -10,60}}, color={0,127,255}));
+ connect(hexDis.port_b2, TDryBulOut1.port_a)
+ annotation (Line(points={{-30,60},{-50,60}}, color={0,127,255}));
+ connect(senMasFraOut1.port_b, sinAir.ports[2]) annotation (Line(points={{-130,60},
+ {-150,60},{-150,-58},{-160,-58}}, color={0,127,255}));
+ connect(TDryBulOut.port_b, relHumOut_eps.port_a) annotation (Line(points={{
+ -70,0},{-76,0},{-76,0},{-80,0}}, color={0,127,255}));
+ connect(relHumOut_eps.port_b, senMasFraOut.port_a)
+ annotation (Line(points={{-100,0},{-110,0}}, color={0,127,255}));
+ connect(TDryBulOut1.port_b, relHumOut_dis.port_a)
+ annotation (Line(points={{-70,60},{-80,60}}, color={0,127,255}));
+ connect(relHumOut_dis.port_b, senMasFraOut1.port_a)
+ annotation (Line(points={{-100,60},{-110,60}}, color={0,127,255}));
+ connect(hexDryNTU_T.port_b1, sinWat.ports[2]) annotation (Line(points={{-10,-48},
+ {10,-48},{10,40},{62,40}}, color={0,127,255}));
+ connect(souAir1.ports[1], hexDryNTU_T.port_a2)
+ annotation (Line(points={{120,-60},{-10,-60}}, color={0,127,255}));
+ connect(sinAir.ports[3], hexDryNTU_T.port_b2) annotation (Line(points={{-160,
+ -60.6667},{-138,-60.6667},{-138,-60},{-30,-60}},
+ color={0,127,255}));
+ connect(souWat2.ports[1], hexDryNTU_T.port_a1) annotation (Line(points={{-160,
+ -20},{-40,-20},{-40,-48},{-30,-48}}, color={0,127,255}));
+ connect(T_a2.y, souAir2.T_in) annotation (Line(points={{168,0},{160,0},{160,
+ 64},{142,64}}, color={0,0,127}));
+ connect(T_a2.y, souAir.T_in) annotation (Line(points={{168,0},{160,0},{160,4},
+ {142,4}}, color={0,0,127}));
+ connect(T_a2.y, souAir1.T_in) annotation (Line(points={{168,0},{160,0},{160,
+ -56},{142,-56}}, color={0,0,127}));
+ connect(souWat1.ports[1], hexWetNTU_TX.port_a1) annotation (Line(points={{-160,
+ 20},{-96,20},{-96,26},{-30,26}}, color={0,127,255}));
+ connect(hexWetNTU_TX.port_b1, sinWat.ports[3]) annotation (Line(points={{-10,26},
+ {10,26},{10,37.3333},{62,37.3333}}, color={0,127,255}));
+ connect(relHumIn.port_b, hexWetNTU_TX.port_a2) annotation (Line(points={{20,0},{
+ 4,0},{4,14},{-10,14}}, color={0,127,255}));
+ connect(hexWetNTU_TX.port_b2, TDryBulOut.port_a) annotation (Line(points={{-30,
+ 14},{-40,14},{-40,0},{-50,0}}, color={0,127,255}));
+ annotation (Diagram(coordinateSystem(preserveAspectRatio=true,
+ extent={{-200,-120},{200,120}})),
+ experiment(
+ StopTime=1000,
+ Tolerance=1e-06),
+ __Dymola_Commands(
+ file="Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mos"
+ "Simulate and plot"),
+ Documentation(info="
+
+This model duplicates an example from Mitchell and Braun 2012, example SM-2-1
+(Mitchell and Braun 2012) to validate a single case for the
+
+Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU
+model.
+
+Validation
+
+The example simulates a wet coil with constant air
+and water inlet temperature and mass flow rate, and an increasing air inlet
+humidity which triggers the transition from a fully-dry to a fully-wet regime.
+The reference used for validation is the published experimental data.
+A discretized wet coil model is also simulated for comparison.
+To provide an accurate reference, the latter model is configured with 30 elements.
+Under steady-state modeling assumptions, this creates a large system of
+non-linear equations. To alleviate this effect, dynamics are considered but
+the simulation time is increased to 1000 s to reproduce quasi steady-state
+conditions.
+
+
+Note that the outlet air relative humidity may slightly exceed 100% when using
+the epsilon-NTU model.
+
+References
+
+Mitchell, John W., and James E. Braun. 2012.
+\"Supplementary Material Chapter 2: Heat Exchangers for Cooling Applications\".
+Excerpt from Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley. Available online:
+
+http://bcs.wiley.com/he-bcs/Books?action=index&itemId=0470624574&bcsId=7185
+
+", revisions="
+
+-
+April 19, 2017, by Michael Wetter:
+Revised model to avoid mixing textual equations and connect statements.
+
+-
+March 17, 2017, by Michael O'Keefe:
+First implementation. See
+
+issue 622 for more information.
+
+
+"));
+end WetCoilEffectivenessNTUHeating;
diff --git a/Buildings/Fluid/HeatExchangers/Validation/package.order b/Buildings/Fluid/HeatExchangers/Validation/package.order
index 9e78f225b19..5f44460ae3a 100644
--- a/Buildings/Fluid/HeatExchangers/Validation/package.order
+++ b/Buildings/Fluid/HeatExchangers/Validation/package.order
@@ -6,3 +6,5 @@ PrescribedOutlet
PrescribedOutlet_dynamic
WetCoilDiscretizedInitialization
WetCoilDiscretizedInitializationPerfectGases
+WetCoilEffectivenessNTU
+WetCoilEffectivenessNTUHeating
diff --git a/Buildings/Fluid/HeatExchangers/WetCoilEffectivenessNTU.mo b/Buildings/Fluid/HeatExchangers/WetCoilEffectivenessNTU.mo
new file mode 100644
index 00000000000..ca9289e7635
--- /dev/null
+++ b/Buildings/Fluid/HeatExchangers/WetCoilEffectivenessNTU.mo
@@ -0,0 +1,631 @@
+within Buildings.Fluid.HeatExchangers;
+model WetCoilEffectivenessNTU
+ "Heat exchanger with effectiveness - NTU relation and with moisture condensation"
+ extends Buildings.Fluid.Interfaces.PartialFourPortInterface(
+ redeclare replaceable package Medium2 = Buildings.Media.Air);
+ extends Buildings.Fluid.Interfaces.FourPortFlowResistanceParameters(
+ final computeFlowResistance1=true,
+ final computeFlowResistance2=true);
+
+ import con = Buildings.Fluid.Types.HeatExchangerConfiguration;
+ import flo = Buildings.Fluid.Types.HeatExchangerFlowRegime;
+
+ parameter Buildings.Fluid.Types.HeatExchangerConfiguration configuration=
+ con.CounterFlow
+ "Heat exchanger configuration";
+ parameter Real r_nominal=2/3
+ "Ratio between air-side and water-side convective heat transfer coefficient";
+
+ parameter Boolean use_Q_flow_nominal = false
+ "Set to true to specify Q_flow_nominal and inlet conditions, or to false to specify UA_nominal"
+ annotation (
+ Evaluate=true,
+ Dialog(group="Nominal thermal performance"));
+
+ parameter Modelica.SIunits.HeatFlowRate Q_flow_nominal(
+ fixed=use_Q_flow_nominal)
+ "Nominal heat flow rate (positive for heat transfer from 1 to 2)"
+ annotation (Dialog(
+ group="Nominal thermal performance",
+ enable=use_Q_flow_nominal));
+ parameter Modelica.SIunits.Temperature T_a1_nominal(
+ fixed=use_Q_flow_nominal)
+ "Water inlet temperature at a rated condition"
+ annotation (Dialog(
+ group="Nominal thermal performance",
+ enable=use_Q_flow_nominal));
+ parameter Modelica.SIunits.Temperature T_a2_nominal(
+ fixed=use_Q_flow_nominal)
+ "Air inlet temperature at a rated condition"
+ annotation (Dialog(
+ group="Nominal thermal performance",
+ enable=use_Q_flow_nominal));
+ parameter Modelica.SIunits.MassFraction w_a2_nominal(
+ start=0.01,
+ fixed=use_Q_flow_nominal)
+ "Humidity ratio of inlet air at a rated condition (in kg/kg dry air)"
+ annotation (Dialog(
+ group="Nominal thermal performance",
+ enable=use_Q_flow_nominal));
+
+ parameter Modelica.SIunits.ThermalConductance UA_nominal(
+ fixed=not use_Q_flow_nominal,
+ min=0,
+ start=1/(1/10+1/20))
+ "Thermal conductance at nominal flow, used to compute heat capacity"
+ annotation(Dialog(
+ group="Nominal thermal performance",
+ enable=not use_Q_flow_nominal));
+
+ // Dynamics
+ parameter Modelica.Fluid.Types.Dynamics energyDynamics=
+ Modelica.Fluid.Types.Dynamics.SteadyState
+ "Type of energy balance: dynamic (3 initialization options) or steady state"
+ annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Equations"));
+ parameter Modelica.Fluid.Types.Dynamics massDynamics=energyDynamics
+ "Type of mass balance: dynamic (3 initialization options) or steady state"
+ annotation(Evaluate=true, Dialog(tab = "Dynamics", group="Equations"));
+
+ Modelica.SIunits.HeatFlowRate Q1_flow = -dryWetCalcs.QTot_flow
+ "Heat input into water stream (positive if air is cooled)";
+ Modelica.SIunits.HeatFlowRate Q2_flow = dryWetCalcs.QTot_flow
+ "Total heat input into air stream (negative if air is cooled)";
+ Modelica.SIunits.HeatFlowRate QSen2_flow = dryWetCalcs.QSen_flow
+ "Sensible heat input into air stream (negative if air is cooled)";
+ Modelica.SIunits.HeatFlowRate QLat2_flow=
+ Buildings.Utilities.Psychrometrics.Constants.h_fg * mWat_flow
+ "Latent heat input into air (negative if air is dehumidified)";
+ Real SHR(
+ min=0,
+ max=1,
+ unit="1") = QSen2_flow /
+ noEvent(if (Q2_flow > 1E-6 or Q2_flow < -1E-6) then Q2_flow else 1)
+ "Sensible to total heat ratio";
+ Modelica.SIunits.MassFlowRate mWat_flow = dryWetCalcs.mCon_flow
+ "Water flow rate of condensate removed from the air stream";
+
+ Real dryFra(final unit="1", min=0, max=1) = dryWetCalcs.dryFra
+ "Dry fraction, 0.3 means condensation occurs at 30% heat exchange length from air inlet";
+protected
+ final parameter Modelica.SIunits.MassFraction X_w_a2_nominal=
+ w_a2_nominal / (1+w_a2_nominal)
+ "Water mass fraction of inlet air at a rated condition (in kg/kg total air)";
+
+ parameter Boolean waterSideFlowDependent=true
+ "Set to false to make water-side hA independent of mass flow rate"
+ annotation (Dialog(tab="Heat transfer"));
+ parameter Boolean airSideFlowDependent=true
+ "Set to false to make air-side hA independent of mass flow rate"
+ annotation (Dialog(tab="Heat transfer"));
+ parameter Boolean waterSideTemperatureDependent=false
+ "Set to false to make water-side hA independent of temperature"
+ annotation (Dialog(tab="Heat transfer"));
+ parameter Boolean airSideTemperatureDependent=false
+ "Set to false to make air-side hA independent of temperature"
+ annotation (Dialog(tab="Heat transfer"));
+
+ Real delta=1E-2
+ "Parameter for normalization";
+ Real delta1=1E-1
+ "Parameter for normalization";
+ Real fac1 = Buildings.Utilities.Math.Functions.smoothMin(
+ (1/delta * m1_flow/m1_flow_nominal)^2,1,delta1);
+ Real fac2 = Buildings.Utilities.Math.Functions.smoothMin(
+ (1/delta * m2_flow/m2_flow_nominal)^2,1,delta1);
+ Real Qfac = fac1*fac2;
+
+ Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilUARated UAFroRated(
+ final use_Q_flow_nominal=use_Q_flow_nominal,
+ final QTot_flow=Q_flow_nominal,
+ final UA=UA_nominal,
+ final r_nominal=r_nominal,
+ final TAirIn=T_a2_nominal,
+ final X_wAirIn=X_w_a2_nominal,
+ final TWatIn=T_a1_nominal,
+ final mAir_flow=m2_flow_nominal,
+ final mWat_flow=m1_flow_nominal)
+ "Model that computes UA_nominal";
+
+ Buildings.Fluid.HeatExchangers.HeaterCooler_u heaCoo(
+ redeclare final package Medium = Medium1,
+ final dp_nominal = dp1_nominal,
+ final m_flow_nominal = m1_flow_nominal,
+ final energyDynamics = energyDynamics,
+ final massDynamics = massDynamics,
+ final Q_flow_nominal=-1)
+ "Heat exchange with water stream"
+ annotation (Placement(transformation(extent={{60,50},{80,70}})));
+
+ Buildings.Fluid.Humidifiers.Humidifier_u heaCooHum_u(
+ redeclare final package Medium = Medium2,
+ mWat_flow_nominal = 1,
+ dp_nominal = dp2_nominal,
+ m_flow_nominal = m2_flow_nominal,
+ energyDynamics = energyDynamics,
+ massDynamics = massDynamics)
+ "Heat and moisture exchange with air stream"
+ annotation (Placement(transformation(extent={{-60,-70},{-80,-50}})));
+ Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil hA(
+ final UA_nominal = UA_nominal,
+ final m_flow_nominal_a = m2_flow_nominal,
+ final m_flow_nominal_w = m1_flow_nominal,
+ final waterSideTemperatureDependent = waterSideTemperatureDependent,
+ final waterSideFlowDependent = waterSideFlowDependent,
+ final airSideTemperatureDependent = airSideTemperatureDependent,
+ final airSideFlowDependent = airSideFlowDependent,
+ r_nominal = r_nominal)
+ "Model for convective heat transfer coefficient"
+ annotation (Placement(transformation(extent={{-68,-13},{-50,9}})));
+ Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilDryWetRegime dryWetCalcs(
+ final cfg=flowRegime,
+ final mWat_flow_nominal=m1_flow_nominal,
+ final mAir_flow_nominal=m2_flow_nominal,
+ Qfac=Qfac)
+ "Dry/wet calculations block"
+ annotation (Placement(transformation(extent={{-20,-40},{60,40}})));
+ Modelica.Blocks.Sources.RealExpression cp_a1Exp(final y=
+ Medium1.specificHeatCapacityCp(state_a1_inflow))
+ "Expression for cp of air"
+ annotation (Placement(transformation(extent={{-44,18},{-30,30}})));
+ Modelica.Blocks.Sources.RealExpression XWat_a2Exp(
+ final y = if allowFlowReversal2
+ then
+ fra_a2 * state_a2_inflow.X[nWat] + fra_b2 * state_b2_inflow.X[nWat]
+ else
+ state_a2_inflow.X[nWat])
+ "Expression for XWat"
+ annotation (Placement(transformation(extent={{-44,-2},{-30,10}})));
+ Modelica.Blocks.Sources.RealExpression p_a2Exp(
+ final y = port_a2.p)
+ "Pressure at port a2"
+ annotation (Placement(transformation(extent={{-44,-10},{-30,2}})));
+ Modelica.Blocks.Sources.RealExpression h_a2Exp(
+ final y = if allowFlowReversal2
+ then
+ fra_a2 * Medium2.specificEnthalpy(state_a2_inflow)
+ + fra_b2 * Medium2.specificEnthalpy(state_b2_inflow)
+ else
+ Medium2.specificEnthalpy(state_a2_inflow))
+ "Specific enthalpy at port a2"
+ annotation (Placement(transformation(extent={{-44,-18},{-30,-6}})));
+ Modelica.Blocks.Sources.RealExpression cp_a2Exp(final y=
+ Medium2.specificHeatCapacityCp(state_a2_inflow))
+ "Specific heat capacity at port a2"
+ annotation (Placement(transformation(extent={{-44,-30},{-30,-18}})));
+ Modelica.Blocks.Sources.RealExpression TIn_a1Exp(
+ final y = if allowFlowReversal1
+ then
+ fra_a1 * Medium1.temperature(state_a1_inflow)
+ + fra_b1 * Medium1.temperature(state_b1_inflow)
+ else
+ Medium1.temperature(state_a1_inflow))
+ "Temperature at port a1"
+ annotation (Placement(transformation(extent={{-98,16},{-84,28}})));
+ Modelica.Blocks.Sources.RealExpression TIn_a2Exp(
+ final y = if allowFlowReversal2
+ then
+ fra_a2 * Medium2.temperature(state_a2_inflow)
+ + fra_b2 * Medium2.temperature(state_b2_inflow)
+ else
+ Medium2.temperature(state_a2_inflow))
+ "Temperature at port a2"
+ annotation (Placement(transformation(extent={{-98,-8},{-84,4}})));
+ Modelica.Blocks.Sources.RealExpression m_flow_a1Exp(
+ final y=Buildings.Utilities.Math.Functions.regNonZeroPower(
+ x=port_a1.m_flow,n=1,delta=delta*m1_flow_nominal))
+ "Absolute value of mass flow rate on water side"
+ annotation (Placement(transformation(extent={{-98,30},{-84,42}})));
+ Modelica.Blocks.Sources.RealExpression m_flow_a2Exp(
+ final y=Buildings.Utilities.Math.Functions.regNonZeroPower(
+ x=port_a2.m_flow,n=1,delta=delta*m2_flow_nominal))
+ "Absolute value of mass flow rate on air side"
+ annotation (Placement(transformation(extent={{-98,-36},{-84,-24}})));
+ final parameter Integer nWat=
+ Buildings.Fluid.HeatExchangers.BaseClasses.determineWaterIndex(
+ Medium2.substanceNames)
+ "Index of water";
+ parameter flo flowRegime_nominal(fixed=false)
+ "Heat exchanger flow regime at nominal flow rates";
+ flo flowRegime(fixed=false, start=flowRegime_nominal)
+ "Heat exchanger flow regime";
+
+ Buildings.HeatTransfer.Sources.PrescribedHeatFlow preHea
+ "Prescribed heat flow"
+ annotation (Placement(transformation(extent={{20,-90},{0,-70}})));
+ Real fra_a1(min=0, max=1) = if allowFlowReversal1
+ then Modelica.Fluid.Utilities.regStep(
+ m1_flow,
+ 1,
+ 0,
+ m1_flow_small)
+ else 1
+ "Fraction of incoming state taken from port a2
+ (used to avoid excessive calls to regStep)";
+ Real fra_b1(min=0, max=1) = if allowFlowReversal1
+ then 1-fra_a1
+ else 0
+ "Fraction of incoming state taken from port b2
+ (used to avoid excessive calls to regStep)";
+ Real fra_a2(min=0, max=1) = if allowFlowReversal2
+ then Modelica.Fluid.Utilities.regStep(
+ m2_flow,
+ 1,
+ 0,
+ m2_flow_small)
+ else 1
+ "Fraction of incoming state taken from port a2
+ (used to avoid excessive calls to regStep)";
+ Real fra_b2(min=0, max=1) = if allowFlowReversal2
+ then 1-fra_a2
+ else 0
+ "Fraction of incoming state taken from port b2
+ (used to avoid excessive calls to regStep)";
+
+ Modelica.SIunits.ThermalConductance C1_flow = abs(m1_flow)*
+ ( if allowFlowReversal1 then
+ fra_a1 * Medium1.specificHeatCapacityCp(state_a1_inflow) +
+ fra_b1 * Medium1.specificHeatCapacityCp(state_b1_inflow) else
+ Medium1.specificHeatCapacityCp(state_a1_inflow))
+ "Heat capacity flow rate medium 1";
+ Modelica.SIunits.ThermalConductance C2_flow = abs(m2_flow)*
+ ( if allowFlowReversal2 then
+ fra_a2 * Medium2.specificHeatCapacityCp(state_a2_inflow) +
+ fra_b2 * Medium2.specificHeatCapacityCp(state_b2_inflow) else
+ Medium2.specificHeatCapacityCp(state_a2_inflow))
+ "Heat capacity flow rate medium 2";
+ parameter Modelica.SIunits.SpecificHeatCapacity cp1_nominal(fixed=false)
+ "Specific heat capacity of medium 1 at nominal condition";
+ parameter Modelica.SIunits.SpecificHeatCapacity cp2_nominal(fixed=false)
+ "Specific heat capacity of medium 2 at nominal condition";
+ parameter Modelica.SIunits.ThermalConductance C1_flow_nominal(fixed=false)
+ "Nominal capacity flow rate of Medium 1";
+ parameter Modelica.SIunits.ThermalConductance C2_flow_nominal(fixed=false)
+ "Nominal capacity flow rate of Medium 2";
+ final parameter Medium1.ThermodynamicState sta1_default = Medium1.setState_phX(
+ h=Medium1.h_default,
+ p=Medium1.p_default,
+ X=Medium1.X_default[1:Medium1.nXi]) "Default state for medium 1";
+ final parameter Medium2.ThermodynamicState sta2_default = Medium2.setState_phX(
+ h=Medium2.h_default,
+ p=Medium2.p_default,
+ X=Medium2.X_default[1:Medium2.nXi]) "Default state for medium 2";
+
+initial equation
+ cp1_nominal = Medium1.specificHeatCapacityCp(sta1_default);
+ cp2_nominal = Medium2.specificHeatCapacityCp(sta2_default);
+ C1_flow_nominal = m1_flow_nominal*cp1_nominal;
+ C2_flow_nominal = m2_flow_nominal*cp2_nominal;
+ if (configuration == con.CrossFlowStream1MixedStream2Unmixed) then
+ flowRegime_nominal = if (C1_flow_nominal < C2_flow_nominal)
+ then
+ flo.CrossFlowCMinMixedCMaxUnmixed
+ else
+ flo.CrossFlowCMinUnmixedCMaxMixed;
+ elseif (configuration == con.CrossFlowStream1UnmixedStream2Mixed) then
+ flowRegime_nominal = if (C1_flow_nominal < C2_flow_nominal)
+ then
+ flo.CrossFlowCMinUnmixedCMaxMixed
+ else
+ flo.CrossFlowCMinMixedCMaxUnmixed;
+ elseif (configuration == con.ParallelFlow) then
+ flowRegime_nominal = flo.ParallelFlow;
+ elseif (configuration == con.CounterFlow) then
+ flowRegime_nominal = flo.CounterFlow;
+ elseif (configuration == con.CrossFlowUnmixed) then
+ flowRegime_nominal = flo.CrossFlowUnmixed;
+ else
+ // Invalid flow regime. Assign a value to flowRegime_nominal, and stop with an assert
+ flowRegime_nominal = flo.CrossFlowUnmixed;
+ assert(configuration >= con.ParallelFlow and
+ configuration <= con.CrossFlowStream1UnmixedStream2Mixed,
+ "Invalid heat exchanger configuration.");
+ end if;
+equation
+ // Assign the flow regime for the given heat exchanger configuration and
+ // mass flow rates
+ if (configuration == con.ParallelFlow) then
+ flowRegime = if (C1_flow*C2_flow >= 0)
+ then
+ flo.ParallelFlow
+ else
+ flo.CounterFlow;
+ elseif (configuration == con.CounterFlow) then
+ flowRegime = if (C1_flow*C2_flow >= 0)
+ then
+ flo.CounterFlow
+ else
+ flo.ParallelFlow;
+ elseif (configuration == con.CrossFlowUnmixed) then
+ flowRegime = flo.CrossFlowUnmixed;
+ elseif (configuration == con.CrossFlowStream1MixedStream2Unmixed) then
+ flowRegime = if (C1_flow < C2_flow)
+ then
+ flo.CrossFlowCMinMixedCMaxUnmixed
+ else
+ flo.CrossFlowCMinUnmixedCMaxMixed;
+ else
+ // have ( configuration == con.CrossFlowStream1UnmixedStream2Mixed)
+ flowRegime = if (C1_flow < C2_flow)
+ then
+ flo.CrossFlowCMinUnmixedCMaxMixed
+ else
+ flo.CrossFlowCMinMixedCMaxUnmixed;
+ end if;
+
+ connect(heaCoo.port_b, port_b1) annotation (Line(points={{80,60},{80,60},{100,60}},color={0,127,255},
+ thickness=1));
+ connect(heaCooHum_u.port_b, port_b2) annotation (Line(
+ points={{-80,-60},{-90,-60},{-100,-60}},
+ color={0,127,255},
+ thickness=1));
+ connect(hA.hA_1, dryWetCalcs.UAWat) annotation (Line(points={{-49.1,5.7},{-46,
+ 5.7},{-46,36.6667},{-22.8571,36.6667}}, color={0,0,127}));
+ connect(hA.hA_2, dryWetCalcs.UAAir) annotation (Line(points={{-49.1,-9.7},{
+ -46,-9.7},{-46,-36},{-46,-36.6667},{-22.8571,-36.6667}},
+ color={0,0,127}));
+ connect(cp_a1Exp.y, dryWetCalcs.cpWat) annotation (Line(points={{-29.3,24},{
+ -22.8571,24},{-22.8571,23.3333}},
+ color={0,0,127}));
+ connect(XWat_a2Exp.y, dryWetCalcs.X_wAirIn) annotation (Line(points={{-29.3,4},
+ {-22.8571,4},{-22.8571,3.33333}}, color={0,0,127}));
+ connect(p_a2Exp.y, dryWetCalcs.pAir) annotation (Line(points={{-29.3,-4},{
+ -22.8571,-4},{-22.8571,-3.33333}},
+ color={0,0,127}));
+ connect(h_a2Exp.y, dryWetCalcs.hAirIn) annotation (Line(points={{-29.3,-12},{
+ -22,-12},{-22,-10},{-22.8571,-10}},
+ color={0,0,127}));
+ connect(cp_a2Exp.y, dryWetCalcs.cpAir) annotation (Line(points={{-29.3,-24},{
+ -22.8571,-24},{-22.8571,-23.3333}},
+ color={0,0,127}));
+ connect(TIn_a1Exp.y, hA.T_1) annotation (Line(points={{-83.3,22},{-80,22},{-80,
+ 1.3},{-68.9,1.3}}, color={0,0,127}));
+ connect(TIn_a1Exp.y, dryWetCalcs.TWatIn) annotation (Line(points={{-83.3,22},
+ {-50,22},{-50,16.6667},{-22.8571,16.6667}}, color={0,0,127}));
+ connect(TIn_a2Exp.y, hA.T_2) annotation (Line(points={{-83.3,-2},{-76,-2},{-76,
+ -5.3},{-68.9,-5.3}}, color={0,0,127}));
+ connect(TIn_a2Exp.y, dryWetCalcs.TAirIn) annotation (Line(points={{-83.3,-2},
+ {-76,-2},{-76,-16.6667},{-22.8571,-16.6667}}, color={0,0,127}));
+ connect(m_flow_a1Exp.y, hA.m1_flow) annotation (Line(points={{-83.3,36},{-76,36},
+ {-76,5.7},{-68.9,5.7}}, color={0,0,127}));
+ connect(m_flow_a1Exp.y, dryWetCalcs.mWat_flow) annotation (Line(points={{-83.3,
+ 36},{-50,36},{-50,30},{-22.8571,30}}, color={0,0,127}));
+ connect(port_a1, heaCoo.port_a) annotation (Line(
+ points={{-100,60},{-20,60},{60,60}},
+ color={0,127,255},
+ thickness=1));
+ connect(m_flow_a2Exp.y, hA.m2_flow) annotation (Line(points={{-83.3,-30},{-80,
+ -30},{-80,-9.7},{-68.9,-9.7}},
+ color={0,0,127}));
+ connect(m_flow_a2Exp.y, dryWetCalcs.mAir_flow) annotation (Line(points={{-83.3,
+ -30},{-22.8571,-30}}, color={0,0,127}));
+ connect(port_a2, heaCooHum_u.port_a) annotation (Line(
+ points={{100,-60},{20,-60},{-60,-60}},
+ color={0,127,255},
+ thickness=1));
+ connect(preHea.port, heaCooHum_u.heatPort) annotation (Line(points={{0,-80},{-40,
+ -80},{-40,-66},{-60,-66}}, color={191,0,0}));
+ connect(dryWetCalcs.QTot_flow, heaCoo.u) annotation (Line(points={{62.8571,
+ -6.66667},{80,-6.66667},{80,44},{40,44},{40,66},{58,66}},
+ color={0,0,127}));
+ connect(dryWetCalcs.mCon_flow, heaCooHum_u.u) annotation (Line(points={{62.8571,
+ -33.3333},{70,-33.3333},{70,-54},{-59,-54}}, color={0,0,127}));
+ connect(preHea.Q_flow, dryWetCalcs.QTot_flow) annotation (Line(points={{20,-80},
+ {44,-80},{80,-80},{80,-6.66667},{62.8571,-6.66667}},
+ color={0,0,127}));
+ annotation (
+ defaultComponentName="hexWetNtu",
+ Icon(graphics={
+ Rectangle(
+ extent={{-70,80},{70,-80}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={95,95,95},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{36,80},{40,-80}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,0,0},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-40,80},{-36,-80}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,0,0},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-2,80},{2,-80}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,0,0},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-100,-55},{101,-65}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,127,0},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-98,65},{103,55}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-70,80},{70,-80}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={95,95,95},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-100,-55},{101,-65}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,127,0},
+ fillPattern=FillPattern.Solid),
+ Rectangle(
+ extent={{-98,65},{103,55}},
+ lineColor={0,0,255},
+ pattern=LinePattern.None,
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid),
+ Polygon(
+ points={{46,-62},{44,-72},{50,-76},{58,-72},{56,-62},{50,-50},{46,-62}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier),
+ Polygon(
+ points={{24,-52},{22,-62},{28,-66},{36,-62},{34,-52},{28,-40},{24,-52}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier),
+ Polygon(
+ points={{0,-48},{-2,-58},{4,-62},{12,-58},{10,-48},{4,-36},{0,-48}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier),
+ Polygon(
+ points={{-18,-64},{-20,-74},{-14,-78},{-6,-74},{-8,-64},{-14,-52},{
+ -18,-64}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier),
+ Polygon(
+ points={{-40,-50},{-42,-60},{-36,-64},{-28,-60},{-30,-50},{-36,-38},{
+ -40,-50}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier),
+ Polygon(
+ points={{-58,-62},{-60,-72},{-54,-76},{-46,-72},{-48,-62},{-54,-50},{
+ -58,-62}},
+ lineColor={0,0,255},
+ fillColor={0,0,255},
+ fillPattern=FillPattern.Solid,
+ smooth=Smooth.Bezier)}),
+ Diagram(graphics={Text(
+ extent={{44,84},{86,76}},
+ lineColor={28,108,200},
+ textString="Water Side",
+ textStyle={TextStyle.Italic},
+ horizontalAlignment=TextAlignment.Left),
+ Text(
+ extent={{-42,-80},{0,-88}},
+ lineColor={28,108,200},
+ textStyle={TextStyle.Italic},
+ horizontalAlignment=TextAlignment.Left,
+ textString="Air Side")}),
+ Documentation(info="
+
+This model describes a cooling coil applicable for fully-dry,
+partially-wet, and fully-wet regimes.
+The model is developed for counter flow heat exchangers but is also applicable
+for the cross-flow configuration, although in the latter case it is recommended
+to have more than four tube rows (Elmahdy and Mitalas, 1977 and Braun, 1988).
+The model can also be used for a heat exchanger which acts as both heating coil
+(for some period of time) and cooling coil (for the others).
+However, it is not recommended to use this model for heating coil only or for
+cooling coil with no water condensation because for these situations,
+
+Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU
+computes faster.
+
+Main equations
+
+The coil model consists of two-equation sets, one for the fully-dry mode and
+the other for the fully-wet mode. For the fully-dry mode, the ε-NTU
+approach (Elmahdy and Mitalas, 1977) is used.
+For the fully-wet mode, equations from Braun (1988) and Mitchell and Braun (2012a and b),
+which are essentially the extension of the ε-NTU approach to simultaneous sensible
+and latent heat transfer, are utilized.
+The equation sets are switched depending on the switching criteria described below
+that determines the right mode based on a coil surface temperature and dew-point
+temperature for the air at the inlet of the coil.
+The transition regime between the two modes, which represents the partially-wet and
+partially-dry coil, is approximated by employing a fuzzy modeling approach,
+so-called Takagi-Sugeno fuzzy modeling (Takagi and Sugeno, 1985), which provides a
+continuously differentiable model that can cover all fully-dry, partially-wet,
+and fully-wet regimes.
+
+The switching rules are:
+
+- R1: If the coil surface temperature at the air inlet is lower than the
+dew-point temperature of air at inlet, then the cooling coil surface is fully-wet.
+
+-
+R2: If the coil surface temperature at the air outlet is higher than the
+dew-point temperature of air at inlet, then the cooling coil surface is fully-dry.
+
+-
+R3: If any of the conditions in R1 or R2 is not satisfied, then the cooling coil
+surface is partially wet.
+
+
+
+For more detailed descriptions of the fully-wet coil model and the fuzzy modeling approach,
+see
+
+Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilWetRegime.
+and
+
+Buildings.Fluid.HeatExchangers.BaseClasses.WetCoilDryWetRegime.
+
+Assumptions and limitations
+This model contains the following assumptions and limitations:
+Medium 2 must be air due to the use of various psychrometric functions.
+
+When parameterizing this model with rated conditions (with the parameter
+use_UA_nominal
set to false
), those should
+correspond to a fully-dry or a fully-wet coil regime, because
+the model uncertainty yielded by partially-wet rated conditions
+has not been assessed yet.
+
+The model uses steady-state physics. That is, no dynamics associated
+with water and coil materials are considered.
+The Lewis number, which relates the mass transfer coefficient to the heat transfer
+coefficient, is assumed to be 1.
+The model is not suitable for a cross-flow heat exchanger of which the number
+of passes is less than four.
+Validation
+Validation results can be found in
+
+Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTU.
+
References
+Braun, James E. 1988.
+"Methodologies for the Design and Control of
+Central Cooling Plants".
+PhD Thesis. University of Wisconsin - Madison.
+Available
+
+online.
+
+Mitchell, John W., and James E. Braun. 2012a.
+Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley.
+Mitchell, John W., and James E. Braun. 2012b.
+"Supplementary Material Chapter 2: Heat Exchangers for Cooling Applications".
+Excerpt from Principles of heating, ventilation, and air conditioning in buildings.
+Hoboken, N.J.: Wiley.
+Available
+
+online.
+
+Elmahdy, A.H. and Mitalas, G.P. 1977.
+"A Simple Model for Cooling and Dehumidifying Coils for Use
+In Calculating Energy Requirements for Buildings".
+ASHRAE Transactions. Vol.83. Part 2. pp. 103-117.
+Takagi, T. and Sugeno, M., 1985.
+Fuzzy identification of systems and its applications to modeling and control.
+ IEEE transactions on systems, man, and cybernetics, (1), pp.116-132.
+", revisions="
+
+- Jan 21, 2021, by Donghun Kim:
First implementation of the fuzzy model.
+See issue 622 for more information.
+
+"));
+end WetCoilEffectivenessNTU;
diff --git a/Buildings/Fluid/HeatExchangers/package.order b/Buildings/Fluid/HeatExchangers/package.order
index 7b44a9110bc..6ecb01ef70a 100644
--- a/Buildings/Fluid/HeatExchangers/package.order
+++ b/Buildings/Fluid/HeatExchangers/package.order
@@ -10,6 +10,7 @@ PrescribedOutlet
SensibleCooler_T
WetCoilCounterFlow
WetCoilDiscretized
+WetCoilEffectivenessNTU
ActiveBeams
CoolingTowers
DXCoils
diff --git a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System2Temperatures.png b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System2Temperatures.png
index f79fb609fbb..28f62ac4d9d 100755
Binary files a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System2Temperatures.png and b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System2Temperatures.png differ
diff --git a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3FlowRateClosedLoop.png b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3FlowRateClosedLoop.png
index 7919e98ee6d..5eee7fa390d 100644
Binary files a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3FlowRateClosedLoop.png and b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3FlowRateClosedLoop.png differ
diff --git a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3TemperaturesClosedLoop.png b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3TemperaturesClosedLoop.png
index bed0b17a89b..622a93a6d7b 100644
Binary files a/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3TemperaturesClosedLoop.png and b/Buildings/Resources/Images/Examples/Tutorial/SpaceCooling/System3TemperaturesClosedLoop.png differ
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System2.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System2.txt
index b0021a6b470..a333fce0ee7 100644
--- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System2.txt
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System2.txt
@@ -1,18 +1,18 @@
-last-generated=2019-08-16
+last-generated=2021-03-10
statistics-initialization=
{
- "nonlinear": "0, 0",
+ "nonlinear": "0, 1, 0, 0, 0",
"numerical Jacobians": "0"
}
statistics-simulation=
{
- "linear": "0, 0",
- "nonlinear": "1, 0, 0, 0",
- "number of continuous time states": "24",
+ "linear": "0",
+ "nonlinear": "1, 0, 0, 0, 1, 1",
+ "number of continuous time states": "12",
"numerical Jacobians": "0"
}
-TOut.T=[3.031499938964844e+02, 3.031499938964844e+02]
-vol.T_start=[2.931499938964844e+02, 2.931499938964844e+02]
-vol.T=[2.931499938964844e+02, 2.936397094726562e+02, 2.939967651367188e+02, 2.94301025390625e+02, 2.945603332519531e+02, 2.947813110351562e+02, 2.949696655273438e+02, 2.951301574707031e+02, 2.952669677734375e+02, 2.953835754394531e+02, 2.954829406738281e+02, 2.955676574707031e+02, 2.956398315429688e+02, 2.957013549804688e+02, 2.957538146972656e+02, 2.957984924316406e+02, 2.958365783691406e+02, 2.958690490722656e+02, 2.95896728515625e+02, 2.959203186035156e+02, 2.959404296875e+02, 2.959575500488281e+02, 2.9597216796875e+02, 2.95984619140625e+02, 2.959952087402344e+02, 2.960042419433594e+02, 2.96011962890625e+02, 2.960185241699219e+02, 2.960241394042969e+02, 2.960289001464844e+02, 2.96032958984375e+02, 2.960364379882812e+02, 2.960393981933594e+02, 2.960419006347656e+02, 2.960440673828125e+02, 2.960458679199219e+02, 2.960474243164062e+02, 2.960487670898438e+02, 2.960498962402344e+02, 2.960508728027344e+02, 2.960516967773438e+02, 2.960523986816406e+02, 2.96052978515625e+02, 2.960534973144531e+02, 2.960539245605469e+02, 2.960542907714844e+02, 2.960546264648438e+02, 2.960548706054688e+02, 2.960551147460938e+02, 2.960552978515625e+02, 2.960554809570312e+02, 2.960556335449219e+02, 2.960557250976562e+02, 2.960558471679688e+02, 2.960559387207031e+02, 2.960559997558594e+02, 2.960560607910156e+02, 2.960561218261719e+02, 2.960561828613281e+02, 2.960562133789062e+02, 2.960562438964844e+02, 2.960562744140625e+02, 2.960563049316406e+02, 2.960563354492188e+02, 2.960563354492188e+02, 2.960563659667969e+02, 2.960563659667969e+02, 2.960563659667969e+02, 2.96056396484375e+02, 2.96056396484375e+02, 2.96056396484375e+02, 2.96056396484375e+02, 2.96056396484375e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564270019531e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02, 2.960564575195312e+02]
-cooCoi.sta_b2.T=[2.931499938964844e+02, 2.89864501953125e+02, 2.898730773925781e+02, 2.898804321289062e+02, 2.898866882324219e+02, 2.898920288085938e+02, 2.898966064453125e+02, 2.899005126953125e+02, 2.899038391113281e+02, 2.899066772460938e+02, 2.899090881347656e+02, 2.899111633300781e+02, 2.899129028320312e+02, 2.899143981933594e+02, 2.899156799316406e+02, 2.899167785644531e+02, 2.899176940917969e+02, 2.899184875488281e+02, 2.89919189453125e+02, 2.899197387695312e+02, 2.899202575683594e+02, 2.89920654296875e+02, 2.899210205078125e+02, 2.899213256835938e+02, 2.899215698242188e+02, 2.899218139648438e+02, 2.899219970703125e+02, 2.899221496582031e+02, 2.899222717285156e+02, 2.899223937988281e+02, 2.899225158691406e+02, 2.899225769042969e+02, 2.899226684570312e+02, 2.899227294921875e+02, 2.899227600097656e+02, 2.899228210449219e+02, 2.899228515625e+02, 2.899228820800781e+02, 2.899229125976562e+02, 2.899229431152344e+02, 2.899229736328125e+02, 2.899229736328125e+02, 2.899230041503906e+02, 2.899230041503906e+02, 2.899230041503906e+02, 2.899230346679688e+02, 2.899230346679688e+02, 2.899230346679688e+02, 2.899230346679688e+02, 2.899230346679688e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02, 2.899230651855469e+02]
time=[0e+00, 1.08e+04]
+vol.T_start=[2.931499938964844e+02, 2.931499938964844e+02]
+vol.T=[2.931499938964844e+02, 2.936746826171875e+02, 2.939820251464844e+02, 2.942403869628906e+02, 2.94459716796875e+02, 2.946460571289062e+02, 2.948043518066406e+02, 2.949388427734375e+02, 2.950531616210938e+02, 2.951503295898438e+02, 2.9523291015625e+02, 2.953031005859375e+02, 2.9536279296875e+02, 2.954135437011719e+02, 2.954566955566406e+02, 2.954933776855469e+02, 2.955245666503906e+02, 2.955510864257812e+02, 2.955736389160156e+02, 2.955928344726562e+02, 2.95609130859375e+02, 2.956230163574219e+02, 2.956347961425781e+02, 2.956448364257812e+02, 2.956533813476562e+02, 2.9566064453125e+02, 2.956668090820312e+02, 2.956720581054688e+02, 2.95676513671875e+02, 2.956803283691406e+02, 2.956835632324219e+02, 2.956863098144531e+02, 2.956886291503906e+02, 2.956906127929688e+02, 2.956923217773438e+02, 2.956937561035156e+02, 2.956949768066406e+02, 2.956960144042969e+02, 2.956968994140625e+02, 2.956976318359375e+02, 2.956982727050781e+02, 2.956988220214844e+02, 2.956992797851562e+02, 2.956996765136719e+02, 2.957000122070312e+02, 2.957003173828125e+02, 2.957005615234375e+02, 2.957007446289062e+02, 2.95700927734375e+02, 2.957010803222656e+02, 2.957012023925781e+02, 2.957013244628906e+02, 2.95701416015625e+02, 2.957014770507812e+02, 2.957015380859375e+02, 2.957015991210938e+02, 2.9570166015625e+02, 2.957016906738281e+02, 2.957017211914062e+02, 2.957017517089844e+02, 2.957017822265625e+02, 2.957018127441406e+02, 2.957018127441406e+02, 2.957018432617188e+02, 2.957018432617188e+02, 2.957018737792969e+02, 2.957018737792969e+02, 2.957018737792969e+02, 2.95701904296875e+02, 2.95701904296875e+02, 2.95701904296875e+02, 2.95701904296875e+02, 2.95701904296875e+02, 2.95701904296875e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02, 2.957019348144531e+02]
+TOut.T=[3.031499938964844e+02, 3.031499938964844e+02]
+cooCoi.sta_b2.T=[2.931499938964844e+02, 2.894987487792969e+02, 2.893948059082031e+02, 2.893896179199219e+02, 2.893878784179688e+02, 2.893867797851562e+02, 2.893860778808594e+02, 2.893856506347656e+02, 2.893854064941406e+02, 2.893852844238281e+02, 2.8938525390625e+02, 2.8938525390625e+02, 2.893853149414062e+02, 2.893853759765625e+02, 2.893854675292969e+02, 2.893855285644531e+02, 2.893856201171875e+02, 2.893857116699219e+02, 2.893857727050781e+02, 2.893858337402344e+02, 2.893858947753906e+02, 2.893859558105469e+02, 2.89385986328125e+02, 2.893860473632812e+02, 2.893860778808594e+02, 2.893861083984375e+02, 2.893861389160156e+02, 2.893861389160156e+02, 2.893861694335938e+02, 2.893861999511719e+02, 2.893861999511719e+02, 2.8938623046875e+02, 2.8938623046875e+02, 2.8938623046875e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862609863281e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02, 2.893862915039062e+02]
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System3.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System3.txt
index b34de20b211..13d025e3ba2 100644
--- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System3.txt
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Examples_Tutorial_SpaceCooling_System3.txt
@@ -1,20 +1,20 @@
-last-generated=2019-12-20
+last-generated=2021-03-10
statistics-initialization=
{
"linear": "0, 0",
- "nonlinear": "0, 0, 0",
+ "nonlinear": "0, 1, 0, 0, 0",
"numerical Jacobians": "0"
}
statistics-simulation=
{
- "linear": "0, 0",
- "nonlinear": "1, 0, 0, 0",
- "number of continuous time states": "24",
+ "linear": "0",
+ "nonlinear": "1, 0, 0, 0, 1, 1",
+ "number of continuous time states": "12",
"numerical Jacobians": "0"
}
-cooCoi.sta_a2.T=[2.931499938964844e+02, 2.939740600585938e+02, 2.939687194824219e+02, 2.938246154785156e+02, 2.936032104492188e+02, 2.933628234863281e+02, 2.931128234863281e+02, 2.928571166992188e+02, 2.925980224609375e+02, 2.92317138671875e+02, 2.919302368164062e+02, 2.914390563964844e+02, 2.909124755859375e+02, 2.904523010253906e+02, 2.901116638183594e+02, 2.898766479492188e+02, 2.897008056640625e+02, 2.895181274414062e+02, 2.89267578125e+02, 2.889412536621094e+02, 2.885704650878906e+02, 2.882096557617188e+02, 2.879315490722656e+02, 2.878057556152344e+02, 2.878886413574219e+02, 2.882293090820312e+02, 2.889196472167969e+02, 2.900181274414062e+02, 2.914165344238281e+02, 2.92913818359375e+02, 2.943167724609375e+02, 2.956068725585938e+02, 2.967554321289062e+02, 2.96435302734375e+02, 2.971579284667969e+02, 2.968460388183594e+02, 2.959851989746094e+02, 2.962182922363281e+02, 2.966642456054688e+02, 2.96683837890625e+02, 2.96788330078125e+02, 2.964874572753906e+02, 2.968433227539062e+02, 2.974552917480469e+02, 2.977440490722656e+02, 2.978112487792969e+02, 2.977487487792969e+02, 2.976324462890625e+02, 2.974941101074219e+02, 2.973453979492188e+02, 2.971952819824219e+02, 2.971346130371094e+02, 2.972048645019531e+02, 2.973582153320312e+02, 2.97578125e+02, 2.978346862792969e+02, 2.980923461914062e+02, 2.9780224609375e+02, 2.974970397949219e+02, 2.972588195800781e+02, 2.973114013671875e+02, 2.975160827636719e+02, 2.97807373046875e+02, 2.980652465820312e+02, 2.978377685546875e+02, 2.971133117675781e+02, 2.960098266601562e+02, 2.964172058105469e+02, 2.970088195800781e+02, 2.96608642578125e+02, 2.967178039550781e+02, 2.968576049804688e+02, 2.969032287597656e+02, 2.969197692871094e+02, 2.969190673828125e+02, 2.97021484375e+02, 2.973594360351562e+02, 2.965105285644531e+02, 2.967676086425781e+02, 2.965289611816406e+02, 2.961353454589844e+02, 2.956807861328125e+02, 2.952375793457031e+02, 2.948725280761719e+02, 2.94635986328125e+02, 2.945036010742188e+02, 2.944371032714844e+02, 2.943985290527344e+02, 2.943525390625e+02, 2.942949829101562e+02, 2.942314147949219e+02, 2.941643676757812e+02, 2.940953979492188e+02, 2.940252380371094e+02, 2.939542846679688e+02, 2.938828735351562e+02, 2.938110961914062e+02, 2.937391357421875e+02, 2.936671142578125e+02, 2.935950317382812e+02, 2.935229187011719e+02]
-TOut.T=[2.914500122070312e+02, 2.913385009765625e+02, 2.910647583007812e+02, 2.907200927734375e+02, 2.903956909179688e+02, 2.901300048828125e+02, 2.898659973144531e+02, 2.896019897460938e+02, 2.893380126953125e+02, 2.89004150390625e+02, 2.884479370117188e+02, 2.878096618652344e+02, 2.872500610351562e+02, 2.869119262695312e+02, 2.867525024414062e+02, 2.866704406738281e+02, 2.865716247558594e+02, 2.86362060546875e+02, 2.860019836425781e+02, 2.855647583007812e+02, 2.851369323730469e+02, 2.848055419921875e+02, 2.84671142578125e+02, 2.847913513183594e+02, 2.852047729492188e+02, 2.859500122070312e+02, 2.872088317871094e+02, 2.889144592285156e+02, 2.907325744628906e+02, 2.923289794921875e+02, 2.935801696777344e+02, 2.946938171386719e+02, 2.956173706054688e+02, 2.962911987304688e+02, 2.964541015625e+02, 2.957337341308594e+02, 2.947459106445312e+02, 2.941705322265625e+02, 2.945262451171875e+02, 2.952189331054688e+02, 2.959844055175781e+02, 2.966857299804688e+02, 2.972068786621094e+02, 2.977020874023438e+02, 2.981768493652344e+02, 2.985576171875e+02, 2.987735900878906e+02, 2.989007568359375e+02, 2.990133361816406e+02, 2.991251220703125e+02, 2.9925e+02, 2.993937683105469e+02, 2.99545654296875e+02, 2.996946411132812e+02, 2.998296203613281e+02, 2.999126586914062e+02, 2.999144897460938e+02, 2.99878662109375e+02, 2.998501281738281e+02, 2.99885009765625e+02, 3.0001416015625e+02, 3.001783142089844e+02, 3.003133850097656e+02, 3.001267700195312e+02, 2.985876770019531e+02, 2.964372253417969e+02, 2.946898803710938e+02, 2.943067016601562e+02, 2.951251831054688e+02, 2.964444274902344e+02, 2.976576538085938e+02, 2.981753234863281e+02, 2.982959289550781e+02, 2.982947082519531e+02, 2.980774841308594e+02, 2.975499877929688e+02, 2.9660986328125e+02, 2.953994445800781e+02, 2.94191650390625e+02, 2.932594299316406e+02, 2.926542053222656e+02, 2.921209716796875e+02, 2.917095031738281e+02, 2.914774780273438e+02, 2.91437255859375e+02, 2.914543151855469e+02, 2.914801330566406e+02, 2.914757385253906e+02, 2.914140014648438e+02, 2.913420104980469e+02, 2.912699890136719e+02, 2.91197998046875e+02, 2.911260070800781e+02, 2.910539855957031e+02, 2.909819946289062e+02, 2.909100036621094e+02, 2.908380126953125e+02, 2.907659912109375e+02, 2.906940002441406e+02, 2.906220092773438e+02, 2.905499877929688e+02]
-cooCoi.sta_b2.T=[2.931499938964844e+02, 2.939472351074219e+02, 2.939783630371094e+02, 2.938583068847656e+02, 2.936481018066406e+02, 2.934100341796875e+02, 2.931617126464844e+02, 2.929069519042969e+02, 2.926484069824219e+02, 2.923759765625e+02, 2.920118103027344e+02, 2.915382995605469e+02, 2.910135498046875e+02, 2.905353698730469e+02, 2.901713562011719e+02, 2.899177551269531e+02, 2.89733642578125e+02, 2.895562744140625e+02, 2.893206481933594e+02, 2.890080261230469e+02, 2.886433410644531e+02, 2.882771301269531e+02, 2.87978759765625e+02, 2.878201293945312e+02, 2.878597106933594e+02, 2.881478881835938e+02, 2.887628784179688e+02, 2.897854309082031e+02, 2.911351013183594e+02, 2.926262512207031e+02, 2.940511474609375e+02, 2.953642578125e+02, 2.965423278808594e+02, 2.943297729492188e+02, 2.895846252441406e+02, 2.965929870605469e+02, 2.935411987304688e+02, 2.961192321777344e+02, 2.965715637207031e+02, 2.893576354980469e+02, 2.964923706054688e+02, 2.945772399902344e+02, 2.892663879394531e+02, 2.892762145996094e+02, 2.906957702636719e+02, 2.900926513671875e+02, 2.892872314453125e+02, 2.892779846191406e+02, 2.8927587890625e+02, 2.89273681640625e+02, 2.892713928222656e+02, 2.924416809082031e+02, 2.938199768066406e+02, 2.949693908691406e+02, 2.959010009765625e+02, 2.966378479003906e+02, 2.972066650390625e+02, 2.892805786132812e+02, 2.892760009765625e+02, 2.909532775878906e+02, 2.936824340820312e+02, 2.95168212890625e+02, 2.962622985839844e+02, 2.970316162109375e+02, 2.921206359863281e+02, 2.967705078125e+02, 2.953482971191406e+02, 2.963265686035156e+02, 2.968785705566406e+02, 2.959191589355469e+02, 2.936186218261719e+02, 2.924618530273438e+02, 2.918533325195312e+02, 2.912126159667969e+02, 2.895585021972656e+02, 2.893028869628906e+02, 2.970889282226562e+02, 2.961773376464844e+02, 2.967522583007812e+02, 2.965889587402344e+02, 2.962166137695312e+02, 2.957698669433594e+02, 2.953207702636719e+02, 2.949371032714844e+02, 2.946752624511719e+02, 2.945248718261719e+02, 2.944476318359375e+02, 2.944057006835938e+02, 2.943623352050781e+02, 2.943065490722656e+02, 2.942439880371094e+02, 2.941775207519531e+02, 2.9410888671875e+02, 2.940389099121094e+02, 2.939680786132812e+02, 2.938967590332031e+02, 2.938250427246094e+02, 2.937531127929688e+02, 2.936810913085938e+02, 2.936090087890625e+02, 2.935369262695312e+02]
time=[1.5552e+07, 1.56384e+07]
vol.T_start=[2.931499938964844e+02, 2.931499938964844e+02]
-vol.T=[2.944500122070312e+02, 2.946329650878906e+02, 2.946947021484375e+02, 2.946007385253906e+02, 2.944050903320312e+02, 2.941710205078125e+02, 2.93924560546875e+02, 2.936708984375e+02, 2.934130249023438e+02, 2.931453857421875e+02, 2.928008117675781e+02, 2.923464050292969e+02, 2.918280639648438e+02, 2.913373718261719e+02, 2.909514465332031e+02, 2.906782531738281e+02, 2.904831237792969e+02, 2.9030712890625e+02, 2.90083984375e+02, 2.897853698730469e+02, 2.894288330078125e+02, 2.890606994628906e+02, 2.887466430664062e+02, 2.885594787597656e+02, 2.885598449707031e+02, 2.887994995117188e+02, 2.893478393554688e+02, 2.902944946289062e+02, 2.915878295898438e+02, 2.930602416992188e+02, 2.945011596679688e+02, 2.958353576660156e+02, 2.970401611328125e+02, 2.964714965820312e+02, 2.973341674804688e+02, 2.971241455078125e+02, 2.962951965332031e+02, 2.96730224609375e+02, 2.9719873046875e+02, 2.970500793457031e+02, 2.969893188476562e+02, 2.964378967285156e+02, 2.9675244140625e+02, 2.973935852050781e+02, 2.976358337402344e+02, 2.976246337890625e+02, 2.974925231933594e+02, 2.973153381347656e+02, 2.971141967773438e+02, 2.969003295898438e+02, 2.966815795898438e+02, 2.9656982421875e+02, 2.966196594238281e+02, 2.967741088867188e+02, 2.970152587890625e+02, 2.973150939941406e+02, 2.976365966796875e+02, 2.972828674316406e+02, 2.969085083007812e+02, 2.966021728515625e+02, 2.966357116699219e+02, 2.968505249023438e+02, 2.971808471679688e+02, 2.975495300292969e+02, 2.976499633789062e+02, 2.972825622558594e+02, 2.963400268554688e+02, 2.969449157714844e+02, 2.97479736328125e+02, 2.966496887207031e+02, 2.964828186035156e+02, 2.965281677246094e+02, 2.965549621582031e+02, 2.965759887695312e+02, 2.966294250488281e+02, 2.968893432617188e+02, 2.975468139648438e+02, 2.967882995605469e+02, 2.9741162109375e+02, 2.973463134765625e+02, 2.970056457519531e+02, 2.965707397460938e+02, 2.961195983886719e+02, 2.957212829589844e+02, 2.954356689453125e+02, 2.952659301757812e+02, 2.951763610839844e+02, 2.951292419433594e+02, 2.950871887207031e+02, 2.950334777832031e+02, 2.949720764160156e+02, 2.949062194824219e+02, 2.948378601074219e+02, 2.947680358886719e+02, 2.946973571777344e+02, 2.946261291503906e+02, 2.945545349121094e+02, 2.944826354980469e+02, 2.9441064453125e+02, 2.943385620117188e+02, 2.942664184570312e+02]
+vol.T=[2.944500122070312e+02, 2.946990966796875e+02, 2.94734619140625e+02, 2.946108703613281e+02, 2.943895263671875e+02, 2.94138427734375e+02, 2.938815612792969e+02, 2.936214904785156e+02, 2.933596496582031e+02, 2.930885620117188e+02, 2.927328186035156e+02, 2.922613220214844e+02, 2.917282104492188e+02, 2.9123388671875e+02, 2.90857421875e+02, 2.906004638671875e+02, 2.904215393066406e+02, 2.902552795410156e+02, 2.900317993164062e+02, 2.897252502441406e+02, 2.893590393066406e+02, 2.889852294921875e+02, 2.886747436523438e+02, 2.885034790039062e+02, 2.885325012207031e+02, 2.888129272460938e+02, 2.894165649414062e+02, 2.904346008300781e+02, 2.918007202148438e+02, 2.933279418945312e+02, 2.9479248046875e+02, 2.961285095214844e+02, 2.973206176757812e+02, 2.972233581542969e+02, 2.973105773925781e+02, 2.972719116210938e+02, 2.968710327148438e+02, 2.973543090820312e+02, 2.975884399414062e+02, 2.970808410644531e+02, 2.967577209472656e+02, 2.967899169921875e+02, 2.97095703125e+02, 2.975694274902344e+02, 2.96886962890625e+02, 2.970877075195312e+02, 2.974223937988281e+02, 2.967634582519531e+02, 2.976709594726562e+02, 2.96623779296875e+02, 2.975354919433594e+02, 2.968088073730469e+02, 2.973931274414062e+02, 2.969568786621094e+02, 2.972752380371094e+02, 2.970711975097656e+02, 2.971593322753906e+02, 2.971767578125e+02, 2.970434875488281e+02, 2.972877197265625e+02, 2.969270324707031e+02, 2.973883972167969e+02, 2.9680224609375e+02, 2.974931945800781e+02, 2.967264099121094e+02, 2.972488708496094e+02, 2.969684753417969e+02, 2.973959350585938e+02, 2.965516662597656e+02, 2.972244873046875e+02, 2.966045532226562e+02, 2.971893615722656e+02, 2.974157409667969e+02, 2.967109680175781e+02, 2.974551391601562e+02, 2.971238403320312e+02, 2.966295166015625e+02, 2.966022033691406e+02, 2.973640441894531e+02, 2.973043518066406e+02, 2.969451293945312e+02, 2.964924011230469e+02, 2.960310668945312e+02, 2.956336364746094e+02, 2.953606872558594e+02, 2.952092590332031e+02, 2.9513720703125e+02, 2.951033935546875e+02, 2.950685424804688e+02, 2.95017578125e+02, 2.949570007324219e+02, 2.948911743164062e+02, 2.948226318359375e+02, 2.947525939941406e+02, 2.946816711425781e+02, 2.946102905273438e+02, 2.945385437011719e+02, 2.944665832519531e+02, 2.943945007324219e+02, 2.943223876953125e+02, 2.942502136230469e+02]
+TOut.T=[2.914500122070312e+02, 2.913385009765625e+02, 2.910647583007812e+02, 2.907200927734375e+02, 2.903956909179688e+02, 2.901300048828125e+02, 2.898659973144531e+02, 2.896019897460938e+02, 2.893380126953125e+02, 2.89004150390625e+02, 2.884479370117188e+02, 2.878096618652344e+02, 2.872500610351562e+02, 2.869119262695312e+02, 2.867525024414062e+02, 2.866704406738281e+02, 2.865716247558594e+02, 2.86362060546875e+02, 2.860019836425781e+02, 2.855647583007812e+02, 2.851369323730469e+02, 2.848055419921875e+02, 2.84671142578125e+02, 2.847913513183594e+02, 2.852047729492188e+02, 2.859500122070312e+02, 2.872088317871094e+02, 2.889144592285156e+02, 2.907325744628906e+02, 2.923289794921875e+02, 2.935801696777344e+02, 2.946938171386719e+02, 2.956173706054688e+02, 2.962911987304688e+02, 2.964541015625e+02, 2.957337341308594e+02, 2.947459106445312e+02, 2.941705322265625e+02, 2.945262451171875e+02, 2.952189331054688e+02, 2.959844055175781e+02, 2.966857299804688e+02, 2.972068786621094e+02, 2.977020874023438e+02, 2.981768493652344e+02, 2.985576171875e+02, 2.987735900878906e+02, 2.989007568359375e+02, 2.990133361816406e+02, 2.991251220703125e+02, 2.9925e+02, 2.993937683105469e+02, 2.99545654296875e+02, 2.996946411132812e+02, 2.998296203613281e+02, 2.999126586914062e+02, 2.999144897460938e+02, 2.99878662109375e+02, 2.998501281738281e+02, 2.99885009765625e+02, 3.0001416015625e+02, 3.001783142089844e+02, 3.003133850097656e+02, 3.001267700195312e+02, 2.985876770019531e+02, 2.964372253417969e+02, 2.946898803710938e+02, 2.943067016601562e+02, 2.951251831054688e+02, 2.964444274902344e+02, 2.976576538085938e+02, 2.981753234863281e+02, 2.982959289550781e+02, 2.982947082519531e+02, 2.980774841308594e+02, 2.975499877929688e+02, 2.9660986328125e+02, 2.953994445800781e+02, 2.94191650390625e+02, 2.932594299316406e+02, 2.926542053222656e+02, 2.921209716796875e+02, 2.917095031738281e+02, 2.914774780273438e+02, 2.91437255859375e+02, 2.914543151855469e+02, 2.914801330566406e+02, 2.914757385253906e+02, 2.914140014648438e+02, 2.913420104980469e+02, 2.912699890136719e+02, 2.91197998046875e+02, 2.911260070800781e+02, 2.910539855957031e+02, 2.909819946289062e+02, 2.909100036621094e+02, 2.908380126953125e+02, 2.907659912109375e+02, 2.906940002441406e+02, 2.906220092773438e+02, 2.905499877929688e+02]
+cooCoi.sta_a2.T=[2.931499938964844e+02, 2.940269775390625e+02, 2.940006713867188e+02, 2.938327026367188e+02, 2.935907592773438e+02, 2.933367614746094e+02, 2.930784301757812e+02, 2.928175964355469e+02, 2.925553283691406e+02, 2.922716674804688e+02, 2.918758544921875e+02, 2.913710021972656e+02, 2.908325805664062e+02, 2.903695068359375e+02, 2.900364379882812e+02, 2.89814453125e+02, 2.896515502929688e+02, 2.894766540527344e+02, 2.89225830078125e+02, 2.888931274414062e+02, 2.885146179199219e+02, 2.881492919921875e+02, 2.878740234375e+02, 2.877609558105469e+02, 2.878667297363281e+02, 2.882400512695312e+02, 2.889745788574219e+02, 2.90130126953125e+02, 2.915867919921875e+02, 2.931278991699219e+02, 2.945497741699219e+02, 2.9584130859375e+02, 2.969797668457031e+02, 2.970365905761719e+02, 2.971390075683594e+02, 2.969641723632812e+02, 2.964459838867188e+02, 2.967175598144531e+02, 2.969759826660156e+02, 2.967084655761719e+02, 2.966030578613281e+02, 2.967690734863281e+02, 2.971179504394531e+02, 2.97595947265625e+02, 2.971449584960938e+02, 2.973817138671875e+02, 2.97692626953125e+02, 2.971909790039062e+02, 2.979395141601562e+02, 2.971241760253906e+02, 2.9787841796875e+02, 2.973258056640625e+02, 2.978236389160156e+02, 2.975044555664062e+02, 2.977861022949219e+02, 2.976395874023438e+02, 2.977105712890625e+02, 2.977174072265625e+02, 2.976050415039062e+02, 2.978072509765625e+02, 2.975444641113281e+02, 2.979463806152344e+02, 2.975044860839844e+02, 2.980202026367188e+02, 2.970991821289062e+02, 2.970863647460938e+02, 2.965125122070312e+02, 2.967780151367188e+02, 2.962663879394531e+02, 2.970684509277344e+02, 2.96815185546875e+02, 2.973865661621094e+02, 2.97591796875e+02, 2.970277709960938e+02, 2.975796203613281e+02, 2.972090759277344e+02, 2.966255798339844e+02, 2.963616333007812e+02, 2.967295837402344e+02, 2.96495361328125e+02, 2.960869445800781e+02, 2.956181030273438e+02, 2.95166748046875e+02, 2.948023986816406e+02, 2.945760192871094e+02, 2.94458251953125e+02, 2.944057922363281e+02, 2.943778686523438e+02, 2.94337646484375e+02, 2.942822570800781e+02, 2.942193298339844e+02, 2.9415234375e+02, 2.940832214355469e+02, 2.940128479003906e+02, 2.939417419433594e+02, 2.938702087402344e+02, 2.937983093261719e+02, 2.937262573242188e+02, 2.936542053222656e+02, 2.935820922851562e+02, 2.935099792480469e+02]
+cooCoi.sta_b2.T=[2.931499938964844e+02, 2.940245666503906e+02, 2.940041809082031e+02, 2.938401489257812e+02, 2.935995178222656e+02, 2.933456115722656e+02, 2.930874328613281e+02, 2.928266296386719e+02, 2.925643920898438e+02, 2.922829895019531e+02, 2.918915710449219e+02, 2.913895568847656e+02, 2.908506469726562e+02, 2.903834228515625e+02, 2.900459289550781e+02, 2.8982080078125e+02, 2.896569213867188e+02, 2.894837036132812e+02, 2.892359619140625e+02, 2.889056701660156e+02, 2.885278625488281e+02, 2.881609497070312e+02, 2.878812866210938e+02, 2.877616271972656e+02, 2.878590393066406e+02, 2.882223510742188e+02, 2.889421081542969e+02, 2.900843200683594e+02, 2.915336303710938e+02, 2.93075927734375e+02, 2.945026550292969e+02, 2.957989196777344e+02, 2.969432373046875e+02, 2.969888000488281e+02, 2.970953063964844e+02, 2.96935791015625e+02, 2.964270935058594e+02, 2.967120361328125e+02, 2.96963623046875e+02, 2.96675048828125e+02, 2.965231628417969e+02, 2.966544799804688e+02, 2.970514221191406e+02, 2.975303649902344e+02, 2.89164306640625e+02, 2.972793884277344e+02, 2.895834655761719e+02, 2.966183166503906e+02, 2.936465454101562e+02, 2.916478576660156e+02, 2.977879333496094e+02, 2.891542358398438e+02, 2.977231750488281e+02, 2.891587829589844e+02, 2.976707458496094e+02, 2.891678771972656e+02, 2.97572509765625e+02, 2.891916198730469e+02, 2.974226379394531e+02, 2.8925048828125e+02, 2.972256164550781e+02, 2.893460693359375e+02, 2.967520751953125e+02, 2.896146545410156e+02, 2.963970031738281e+02, 2.97052978515625e+02, 2.964984436035156e+02, 2.967677612304688e+02, 2.948928527832031e+02, 2.894025268554688e+02, 2.927101440429688e+02, 2.973055725097656e+02, 2.896318664550781e+02, 2.963382873535156e+02, 2.975110168457031e+02, 2.892386779785156e+02, 2.959095764160156e+02, 2.9599609375e+02, 2.967297058105469e+02, 2.965076904296875e+02, 2.961025085449219e+02, 2.956344604492188e+02, 2.951813354492188e+02, 2.948129272460938e+02, 2.945818176269531e+02, 2.944610595703125e+02, 2.94406982421875e+02, 2.943788452148438e+02, 2.943393249511719e+02, 2.942843322753906e+02, 2.942215881347656e+02, 2.941546936035156e+02, 2.940856323242188e+02, 2.940153198242188e+02, 2.939442138671875e+02, 2.938726806640625e+02, 2.9380078125e+02, 2.93728759765625e+02, 2.936566772460938e+02, 2.935845947265625e+02, 2.93512451171875e+02]
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_FMI_ExportContainers_Validation_RoomHVAC.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_FMI_ExportContainers_Validation_RoomHVAC.txt
index 57e7fa1a313..e8954345383 100644
--- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_FMI_ExportContainers_Validation_RoomHVAC.txt
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_FMI_ExportContainers_Validation_RoomHVAC.txt
@@ -1,23 +1,23 @@
-last-generated=2019-08-15
+last-generated=2021-04-16
statistics-initialization=
{
"linear": "0, 0",
- "nonlinear": "0, 0, 1, 0, 0",
+ "nonlinear": "0, 1, 1, 0, 0, 0, 0, 0",
"numerical Jacobians": "0"
}
statistics-simulation=
{
- "linear": "0, 0, 0, 0, 0, 0, 0, 0, 0",
- "nonlinear": "0, 0, 1, 0, 0, 0, 1",
- "number of continuous time states": "77",
+ "linear": "0, 0, 0, 0, 0, 0, 0, 0",
+ "nonlinear": "0, 0, 1, 0, 1, 1, 0, 0, 1",
+ "number of continuous time states": "65",
"numerical Jacobians": "0"
}
-rooCon2.vol1.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875366210938e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361938476562e+02, 2.974270629882812e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716857910156e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234985351562e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648803710938e+02, 2.961282348632812e+02, 2.964501647949219e+02, 2.9644873046875e+02, 2.962528076171875e+02, 2.960047607421875e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
-rooCon.vol.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875366210938e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361938476562e+02, 2.974270629882812e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716857910156e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234985351562e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648803710938e+02, 2.961282348632812e+02, 2.964501647949219e+02, 2.9644873046875e+02, 2.962528076171875e+02, 2.960047607421875e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
-rooCon2.vol2.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875366210938e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361938476562e+02, 2.974270629882812e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716857910156e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234985351562e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648803710938e+02, 2.961282348632812e+02, 2.964501647949219e+02, 2.9644873046875e+02, 2.962528076171875e+02, 2.960047607421875e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
-baseCase.vol.T=[2.931499938964844e+02, 2.942142028808594e+02, 2.946536865234375e+02, 2.947817993164062e+02, 2.947169494628906e+02, 2.945599365234375e+02, 2.943588562011719e+02, 2.941319580078125e+02, 2.938898315429688e+02, 2.936315002441406e+02, 2.932923583984375e+02, 2.928414001464844e+02, 2.923250732421875e+02, 2.918355407714844e+02, 2.914502868652344e+02, 2.911774291992188e+02, 2.909824523925781e+02, 2.908064880371094e+02, 2.905833435058594e+02, 2.902846984863281e+02, 2.899283142089844e+02, 2.895602111816406e+02, 2.892462158203125e+02, 2.890590209960938e+02, 2.890592651367188e+02, 2.892986755371094e+02, 2.898467407226562e+02, 2.907928466796875e+02, 2.92085693359375e+02, 2.935577087402344e+02, 2.949983825683594e+02, 2.963325805664062e+02, 2.975373229980469e+02, 2.970646667480469e+02, 2.967315673828125e+02, 2.964523010253906e+02, 2.973439331054688e+02, 2.962338562011719e+02, 2.969736633300781e+02, 2.968063354492188e+02, 2.972406311035156e+02, 2.967908020019531e+02, 2.965916442871094e+02, 2.965492858886719e+02, 2.965690002441406e+02, 2.966230163574219e+02, 2.96725830078125e+02, 2.968800048828125e+02, 2.970817260742188e+02, 2.973235778808594e+02, 2.975993347167969e+02, 2.973530578613281e+02, 2.969805908203125e+02, 2.966577758789062e+02, 2.966401672363281e+02, 2.96861083984375e+02, 2.971901245117188e+02, 2.975610961914062e+02, 2.973510131835938e+02, 2.969573974609375e+02, 2.966289978027344e+02, 2.966880187988281e+02, 2.969766235351562e+02, 2.973547668457031e+02, 2.975572204589844e+02, 2.973112487792969e+02, 2.965382080078125e+02, 2.972823791503906e+02, 2.963356323242188e+02, 2.9752099609375e+02, 2.973450317382812e+02, 2.973788757324219e+02, 2.974558715820312e+02, 2.975421142578125e+02, 2.975902099609375e+02, 2.975274353027344e+02, 2.97253662109375e+02, 2.966646423339844e+02, 2.975175170898438e+02, 2.9761376953125e+02, 2.97368408203125e+02, 2.969896850585938e+02, 2.965716552734375e+02, 2.961928100585938e+02, 2.959186401367188e+02, 2.95755615234375e+02, 2.956699829101562e+02, 2.956251831054688e+02, 2.955845031738281e+02, 2.955315856933594e+02, 2.954706726074219e+02, 2.954050903320312e+02, 2.953368530273438e+02, 2.952671508789062e+02, 2.951965026855469e+02, 2.951253356933594e+02, 2.950537414550781e+02, 2.949818420410156e+02, 2.949098205566406e+02, 2.948377075195312e+02, 2.947655639648438e+02]
time=[1.5552e+07, 1.56384e+07]
-baseCase.vol.Xi[1]=[9.999999776482582e-03, 1.042371708899736e-02, 1.028698217123747e-02, 1.007428113371134e-02, 9.89263691008091e-03, 9.790350683033466e-03, 9.710710495710373e-03, 9.632398374378681e-03, 9.553791955113411e-03, 9.458430111408234e-03, 9.25137847661972e-03, 8.967713452875614e-03, 8.698972873389721e-03, 8.530438877642155e-03, 8.476481772959232e-03, 8.485784754157066e-03, 8.506008423864841e-03, 8.485733531415462e-03, 8.419947698712349e-03, 8.337315171957016e-03, 8.249042555689812e-03, 8.16645473241806e-03, 8.123371750116348e-03, 8.167854510247707e-03, 8.32404475659132e-03, 8.615824393928051e-03, 9.127341210842133e-03, 9.960519149899483e-03, 1.100064814090729e-02, 1.203913707286119e-02, 1.286460645496845e-02, 1.354359928518534e-02, 1.407667901366949e-02, 1.417410746216774e-02, 1.387825608253479e-02, 1.315708644688129e-02, 1.312403939664364e-02, 1.229644194245338e-02, 1.222538575530052e-02, 1.176313124597073e-02, 1.117752213031054e-02, 1.031269412487745e-02, 9.589671157300472e-03, 9.085330180823803e-03, 8.660354651510715e-03, 8.329916745424271e-03, 8.139197714626789e-03, 8.132455870509148e-03, 8.270315825939178e-03, 8.448118343949318e-03, 8.550939150154591e-03, 8.4788603708148e-03, 8.257728070020676e-03, 7.996645756065845e-03, 7.818383164703846e-03, 7.838117890059948e-03, 8.053744211792946e-03, 8.371473290026188e-03, 8.687552064657211e-03, 8.893141523003578e-03, 8.895594626665115e-03, 8.774003945291042e-03, 8.667396381497383e-03, 8.761841803789139e-03, 9.503270499408245e-03, 1.045570336282253e-02, 1.105893310159445e-02, 1.12751042470336e-02, 1.128777675330639e-02, 1.122384145855904e-02, 1.106447912752628e-02, 1.097633596509695e-02, 1.105625461786985e-02, 1.116832345724106e-02, 1.126885879784822e-02, 1.132609881460667e-02, 1.13324848935008e-02, 1.129984483122826e-02, 1.121304929256439e-02, 1.107236929237843e-02, 1.090047508478165e-02, 1.062369626015425e-02, 1.028402708470821e-02, 9.953206405043602e-03, 9.65485256165266e-03, 9.18425340205431e-03, 8.603728376328945e-03, 8.120707236230373e-03, 7.945467717945576e-03, 8.048336021602154e-03, 8.272596634924412e-03, 8.507654070854187e-03, 8.650907315313816e-03, 8.676150813698769e-03, 8.653886616230011e-03, 8.650313131511211e-03, 8.728870190680027e-03, 8.894601836800575e-03, 9.086338803172112e-03, 9.28886141628027e-03, 9.495197795331478e-03]
-rooCon2.vol2.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790200740098953e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.53020790964365e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485689759254456e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166331797838211e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616297505795956e-03, 9.128188714385033e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068399965763e-02, 1.286583486944437e-02, 1.354461442679167e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416439294815e-02, 1.316429488360882e-02, 1.312407851219177e-02, 1.230077259242535e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.1275390163064e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654373861849308e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729013614356518e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
-rooCon.vol.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790200740098953e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.53020790964365e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485689759254456e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166331797838211e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616297505795956e-03, 9.128188714385033e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068399965763e-02, 1.286583486944437e-02, 1.354461442679167e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416439294815e-02, 1.316429488360882e-02, 1.312407851219177e-02, 1.230077259242535e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.1275390163064e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654373861849308e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729013614356518e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
-rooCon2.vol1.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790200740098953e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.53020790964365e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485689759254456e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166331797838211e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616297505795956e-03, 9.128188714385033e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068399965763e-02, 1.286583486944437e-02, 1.354461442679167e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416439294815e-02, 1.316429488360882e-02, 1.312407851219177e-02, 1.230077259242535e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.1275390163064e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654373861849308e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729013614356518e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
+baseCase.vol.T=[2.931499938964844e+02, 2.9425048828125e+02, 2.947109985351562e+02, 2.948216857910156e+02, 2.947297668457031e+02, 2.945500183105469e+02, 2.943324890136719e+02, 2.940941467285156e+02, 2.938443298339844e+02, 2.935798645019531e+02, 2.932278747558594e+02, 2.927585144042969e+02, 2.922265930175781e+02, 2.9173291015625e+02, 2.913568115234375e+02, 2.911001281738281e+02, 2.909212036132812e+02, 2.907548522949219e+02, 2.9053125e+02, 2.902245483398438e+02, 2.898583984375e+02, 2.894846496582031e+02, 2.891742248535156e+02, 2.890029907226562e+02, 2.890319519042969e+02, 2.893121337890625e+02, 2.899154663085938e+02, 2.909330749511719e+02, 2.922985534667969e+02, 2.938252563476562e+02, 2.952896423339844e+02, 2.966256408691406e+02, 2.97083251953125e+02, 2.968477478027344e+02, 2.966668395996094e+02, 2.968707580566406e+02, 2.966915893554688e+02, 2.974781799316406e+02, 2.968406677246094e+02, 2.9699560546875e+02, 2.971546630859375e+02, 2.966342468261719e+02, 2.969553833007812e+02, 2.975954895019531e+02, 2.968025207519531e+02, 2.972565612792969e+02, 2.971547546386719e+02, 2.970012512207031e+02, 2.974020385742188e+02, 2.967763671875e+02, 2.975953979492188e+02, 2.966305847167969e+02, 2.976841125488281e+02, 2.96753173828125e+02, 2.975359497070312e+02, 2.969306030273438e+02, 2.972986755371094e+02, 2.971161193847656e+02, 2.9705615234375e+02, 2.973097534179688e+02, 2.968118286132812e+02, 2.975184936523438e+02, 2.966413879394531e+02, 2.976917114257812e+02, 2.967234802246094e+02, 2.971243591308594e+02, 2.9705029296875e+02, 2.975801696777344e+02, 2.9735693359375e+02, 2.973885803222656e+02, 2.973710327148438e+02, 2.96744384765625e+02, 2.976260375976562e+02, 2.96739501953125e+02, 2.972796936035156e+02, 2.972763977050781e+02, 2.966588439941406e+02, 2.968338928222656e+02, 2.9687060546875e+02, 2.969947204589844e+02, 2.96998291015625e+02, 2.967456970214844e+02, 2.963947448730469e+02, 2.960581359863281e+02, 2.958187561035156e+02, 2.95685791015625e+02, 2.956239318847656e+02, 2.955957336425781e+02, 2.955640258789062e+02, 2.955147705078125e+02, 2.954551086425781e+02, 2.953898315429688e+02, 2.95321533203125e+02, 2.952516479492188e+02, 2.951808166503906e+02, 2.951094970703125e+02, 2.950377502441406e+02, 2.949657897949219e+02, 2.948936767578125e+02, 2.94821533203125e+02, 2.947493591308594e+02]
+rooCon.vol.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875671386719e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361633300781e+02, 2.974270324707031e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716552734375e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234680175781e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648498535156e+02, 2.961282348632812e+02, 2.964501342773438e+02, 2.964486999511719e+02, 2.962528076171875e+02, 2.960047302246094e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
+rooCon2.vol1.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875671386719e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361633300781e+02, 2.974270324707031e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716552734375e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234680175781e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648498535156e+02, 2.961282348632812e+02, 2.964501342773438e+02, 2.964486999511719e+02, 2.962528076171875e+02, 2.960047302246094e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
+rooCon2.vol2.T=[2.931499938964844e+02, 2.941614379882812e+02, 2.946229858398438e+02, 2.947637329101562e+02, 2.947061767578125e+02, 2.945533752441406e+02, 2.94354736328125e+02, 2.941292419433594e+02, 2.93887939453125e+02, 2.936300659179688e+02, 2.932911376953125e+02, 2.928401794433594e+02, 2.923238220214844e+02, 2.918342895507812e+02, 2.914491577148438e+02, 2.911764221191406e+02, 2.909816284179688e+02, 2.908057556152344e+02, 2.905826416015625e+02, 2.90283935546875e+02, 2.899274597167969e+02, 2.89559326171875e+02, 2.892453308105469e+02, 2.890582580566406e+02, 2.890587768554688e+02, 2.892985229492188e+02, 2.898470764160156e+02, 2.907938537597656e+02, 2.920873413085938e+02, 2.935599365234375e+02, 2.950008850097656e+02, 2.963351745605469e+02, 2.975398254394531e+02, 2.970686950683594e+02, 2.967359619140625e+02, 2.964510803222656e+02, 2.973501586914062e+02, 2.962337951660156e+02, 2.969827270507812e+02, 2.96767578125e+02, 2.972510986328125e+02, 2.9680224609375e+02, 2.966003723144531e+02, 2.965549926757812e+02, 2.965749816894531e+02, 2.966329345703125e+02, 2.967414245605469e+02, 2.969012145996094e+02, 2.971078796386719e+02, 2.97353759765625e+02, 2.976327209472656e+02, 2.973072204589844e+02, 2.969391784667969e+02, 2.966236877441406e+02, 2.966581726074219e+02, 2.968983764648438e+02, 2.972385864257812e+02, 2.976152038574219e+02, 2.972875671386719e+02, 2.96901123046875e+02, 2.966054382324219e+02, 2.967227478027344e+02, 2.970361633300781e+02, 2.974270324707031e+02, 2.97626220703125e+02, 2.973722229003906e+02, 2.965950317382812e+02, 2.973240356445312e+02, 2.963128356933594e+02, 2.975716552734375e+02, 2.974058532714844e+02, 2.974440307617188e+02, 2.975234680175781e+02, 2.976116638183594e+02, 2.976541442871094e+02, 2.975975341796875e+02, 2.973223571777344e+02, 2.967292175292969e+02, 2.975648498535156e+02, 2.961282348632812e+02, 2.964501342773438e+02, 2.964486999511719e+02, 2.962528076171875e+02, 2.960047302246094e+02, 2.958076477050781e+02, 2.956900634765625e+02, 2.956312561035156e+02, 2.95602294921875e+02, 2.955708923339844e+02, 2.955234680175781e+02, 2.954657592773438e+02, 2.954020385742188e+02, 2.953349304199219e+02, 2.95265869140625e+02, 2.951956176757812e+02, 2.951246643066406e+02, 2.9505322265625e+02, 2.949814147949219e+02, 2.94909423828125e+02, 2.948373413085938e+02, 2.947651977539062e+02]
+baseCase.vol.Xi[1]=[9.999999776482582e-03, 1.042388938367367e-02, 1.02919926866889e-02, 1.007963623851538e-02, 9.896314702928066e-03, 9.792465716600418e-03, 9.712697938084602e-03, 9.634385816752911e-03, 9.555789642035961e-03, 9.461935609579086e-03, 9.257901459932327e-03, 8.975116536021233e-03, 8.704931475222111e-03, 8.533168584108353e-03, 8.476885035634041e-03, 8.485200814902782e-03, 8.505763486027718e-03, 8.486976847052574e-03, 8.421872742474079e-03, 8.339518681168556e-03, 8.251267485320568e-03, 8.168359287083149e-03, 8.123554289340973e-03, 8.165503852069378e-03, 8.318596519529819e-03, 8.606620132923126e-03, 9.110415354371071e-03, 9.936245158314705e-03, 1.097325887531042e-02, 1.201482396572828e-02, 1.284570619463921e-02, 1.352791860699654e-02, 1.332569029182196e-02, 1.31045188754797e-02, 1.297991536557674e-02, 1.309289410710335e-02, 1.264835149049759e-02, 1.247511710971594e-02, 1.220777072012424e-02, 1.190971303731203e-02, 1.121189165860415e-02, 1.03356447070837e-02, 9.604348801076412e-03, 9.097104892134666e-03, 8.670181035995483e-03, 8.336860686540604e-03, 8.142000995576382e-03, 8.130538277328014e-03, 8.265877142548561e-03, 8.444000966846943e-03, 8.55010561645031e-03, 8.482834324240685e-03, 8.264306932687759e-03, 8.002819493412971e-03, 7.820967584848404e-03, 7.834989577531815e-03, 8.046639151871204e-03, 8.36300291121006e-03, 8.680328726768494e-03, 8.890305645763874e-03, 8.897533640265465e-03, 8.777525275945663e-03, 8.668797090649605e-03, 8.752959780395031e-03, 9.478578343987465e-03, 1.043447572737932e-02, 1.104878541082144e-02, 1.127281412482262e-02, 1.130167581140995e-02, 1.122806128114462e-02, 1.106876693665981e-02, 1.09759159386158e-02, 1.105355657637119e-02, 1.11654894426465e-02, 1.126761082559824e-02, 1.133021339774132e-02, 1.133946608752012e-02, 1.130931917577982e-02, 1.121675875037909e-02, 1.107620447874069e-02, 1.090601086616516e-02, 1.063176337629557e-02, 1.029282622039318e-02, 9.960988536477089e-03, 9.663850069046021e-03, 9.198266081511974e-03, 8.618227206170559e-03, 8.130124770104885e-03, 7.94575922191143e-03, 8.043798618018627e-03, 8.266340009868145e-03, 8.502357639372349e-03, 8.648935705423355e-03, 8.676358498632908e-03, 8.654501289129257e-03, 8.649698458611965e-03, 8.725493215024471e-03, 8.889976888895035e-03, 9.08131618052721e-03, 9.28365346044302e-03, 9.489967487752438e-03]
+rooCon.vol.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790201671421528e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.530208840966225e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485688827931881e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166328072547913e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616296574473381e-03, 9.128189645707607e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068493098021e-02, 1.286583486944437e-02, 1.354461535811424e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416346162558e-02, 1.316429395228624e-02, 1.312407851219177e-02, 1.230077166110277e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.127539109438658e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654374793171883e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729012683033943e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
+rooCon2.vol1.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790201671421528e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.530208840966225e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485688827931881e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166328072547913e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616296574473381e-03, 9.128189645707607e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068493098021e-02, 1.286583486944437e-02, 1.354461535811424e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416346162558e-02, 1.316429395228624e-02, 1.312407851219177e-02, 1.230077166110277e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.127539109438658e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654374793171883e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729012683033943e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
+rooCon2.vol2.Xi[1]=[9.999999776482582e-03, 1.042400579899549e-02, 1.028676796704531e-02, 1.007396262139082e-02, 9.892376139760017e-03, 9.790201671421528e-03, 9.710587561130524e-03, 9.632278233766556e-03, 9.553671814501286e-03, 9.458267129957676e-03, 9.251042269170284e-03, 8.967280387878418e-03, 8.698577992618084e-03, 8.530208840966225e-03, 8.476411923766136e-03, 8.485802449285984e-03, 8.506033569574356e-03, 8.485688827931881e-03, 8.419845253229141e-03, 8.337187580764294e-03, 8.248908445239067e-03, 8.166328072547913e-03, 8.123321458697319e-03, 8.167942054569721e-03, 8.324305526912212e-03, 8.616296574473381e-03, 9.128189645707607e-03, 9.961836971342564e-03, 1.100224535912275e-02, 1.204068493098021e-02, 1.286583486944437e-02, 1.354461535811424e-02, 1.407746132463217e-02, 1.41774071380496e-02, 1.388416346162558e-02, 1.316429395228624e-02, 1.312407851219177e-02, 1.230077166110277e-02, 1.222559995949268e-02, 1.17553249001503e-02, 1.117662992328405e-02, 1.031139679253101e-02, 9.588641114532948e-03, 9.084566496312618e-03, 8.659718558192253e-03, 8.329435251653194e-03, 8.138937875628471e-03, 8.132477290928364e-03, 8.270536549389362e-03, 8.448380045592785e-03, 8.551065810024738e-03, 8.478716015815735e-03, 8.257379755377769e-03, 7.996257394552231e-03, 7.81814381480217e-03, 7.838190533220768e-03, 8.054095320403576e-03, 8.371961303055286e-03, 8.688018657267094e-03, 8.893415331840515e-03, 8.895568549633026e-03, 8.77381581813097e-03, 8.66725854575634e-03, 8.762084878981113e-03, 9.504495188593864e-03, 1.045708637684584e-02, 1.10597675666213e-02, 1.127539109438658e-02, 1.128923613578081e-02, 1.122382376343012e-02, 1.106424350291491e-02, 1.097625121474266e-02, 1.105638034641743e-02, 1.116849202662706e-02, 1.12692192196846e-02, 1.132669486105442e-02, 1.133310236036777e-02, 1.130048558115959e-02, 1.121295336633921e-02, 1.107215601950884e-02, 1.090019289404154e-02, 1.06232576072216e-02, 1.028350833803415e-02, 9.952712804079056e-03, 9.654374793171883e-03, 9.183499962091446e-03, 8.602851070463657e-03, 8.120018988847733e-03, 7.945270277559757e-03, 8.04851483553648e-03, 8.272943086922169e-03, 8.507999591529369e-03, 8.651097305119038e-03, 8.676178753376007e-03, 8.653854019939899e-03, 8.650319650769234e-03, 8.729012683033943e-03, 8.894857950508595e-03, 9.08663310110569e-03, 9.289171546697617e-03, 9.495512582361698e-03]
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilEffectivenessNTUMassFlow.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilEffectivenessNTUMassFlow.txt
new file mode 100644
index 00000000000..e6779cf2c53
--- /dev/null
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilEffectivenessNTUMassFlow.txt
@@ -0,0 +1,18 @@
+last-generated=2021-02-22
+statistics-initialization=
+{
+ "nonlinear": "0, 1",
+ "numerical Jacobians": "0"
+}
+statistics-simulation=
+{
+ "linear": " ",
+ "nonlinear": "1, 1",
+ "number of continuous time states": "2",
+ "numerical Jacobians": "0"
+}
+time=[0e+00, 3.6e+03]
+hex.Q2_flow=[-3.7494560546875e+03, -3.762437744140625e+03, -3.77401953125e+03, -3.7843623046875e+03, -3.7936015625e+03, -3.8018486328125e+03, -3.80921142578125e+03, -3.815789306640625e+03, -3.82166748046875e+03, -3.826925048828125e+03, -3.831625e+03, -3.64524609375e+03, -3.43510498046875e+03, -3.197364990234375e+03, -2.927271484375e+03, -2.61885986328125e+03, -2.264531982421875e+03, -1.854357666015625e+03, -1.374672485351562e+03, -7.855562133789062e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.039116287231445e+02, -1.038280792236328e+02, -1.036799240112305e+02, -1.015594100952148e+02, -9.35758361816406e+01, -2.557593409964934e-12, -1.020483016967774e+02, -1.033460006713867e+02, -1.036785202026367e+02, -1.03827018737793e+02, -1.039108505249023e+02, -1.038740539550781e+02, -1.03827018737793e+02, -1.03764762878418e+02, -1.036785202026367e+02, -1.035513381958008e+02, -1.033460006713867e+02, -1.029638900756836e+02, -1.020483016967773e+02, -9.817852783203125e+01, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00]
+hex.QLat2_flow=[-2.36338427734375e+03, -2.372035400390625e+03, -2.379748291015625e+03, -2.386632080078125e+03, -2.392778076171875e+03, -2.398261474609375e+03, -2.40315478515625e+03, -2.407524658203125e+03, -2.4114287109375e+03, -2.41491943359375e+03, -2.418038818359375e+03, -2.29372021484375e+03, -2.152081787109375e+03, -1.990034301757812e+03, -1.803704711914062e+03, -1.588178344726562e+03, -1.337121948242188e+03, -1.042175048828125e+03, -6.917086791992188e+02, -2.312579040527344e+02, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, 0e+00, 0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -2.547457495854672e-13, -8.407790785948637e-45, 0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00, -0e+00]
+hex.port_a1.m_flow=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 9.009999781847e-02, 8.020000159740448e-02, 7.029999792575836e-02, 6.040000170469283e-02, 5.050000175833702e-02, 4.06000018119812e-02, 3.070000000298023e-02, 2.080000005662441e-02, 1.090000011026859e-02, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03, 1.000000047497451e-03]
+hex.port_a2.m_flow=[1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.400000005960464e-01, 1.120000034570694e-01, 8.399999886751175e-02, 5.60000017285347e-02, 2.800000086426717e-02, -7.140166331002833e-15, -2.800000086426753e-02, -5.60000017285347e-02, -8.399999886751175e-02, -1.120000034570694e-01, -1.400000005960464e-01, -1.260000020265579e-01, -1.120000034570694e-01, -9.799999743700027e-02, -8.399999886751175e-02, -7.000000029802322e-02, -5.60000017285347e-02, -4.199999943375587e-02, -2.800000086426735e-02, -1.400000043213367e-02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00]
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTU.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTU.txt
new file mode 100644
index 00000000000..ee8eb660269
--- /dev/null
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTU.txt
@@ -0,0 +1,28 @@
+last-generated=2021-04-06
+statistics-initialization=
+{
+ "nonlinear": "0, 1, 1",
+ "numerical Jacobians": "0"
+}
+statistics-simulation=
+{
+ "linear": " ",
+ "nonlinear": "1, 1, 1, 1, 1, 1",
+ "number of continuous time states": "131",
+ "numerical Jacobians": "0"
+}
+time=[0e+00, 1e+03]
+hexDis.Q1_flow=[0e+00, 4.4669234375e+04, 4.46723203125e+04, 4.467541015625e+04, 4.46785e+04, 4.46815859375e+04, 4.468467578125e+04, 4.468776171875e+04, 4.469084375e+04, 4.469392578125e+04, 4.46970078125e+04, 4.470008984375e+04, 4.470316796875e+04, 4.470624609375e+04, 4.470932421875e+04, 4.47123984375e+04, 4.471547265625e+04, 4.4718546875e+04, 4.47216171875e+04, 4.47246875e+04, 4.47277578125e+04, 4.47402890625e+04, 4.481947265625e+04, 4.496365625e+04, 4.515536328125e+04, 4.5390171875e+04, 4.56587109375e+04, 4.5957265625e+04, 4.62800859375e+04, 4.6625453125e+04, 4.699074609375e+04, 4.737278515625e+04, 4.7771796875e+04, 4.818511328125e+04, 4.86111171875e+04, 4.90496484375e+04, 4.949291015625e+04, 4.995203515625e+04, 5.041905859375e+04, 5.0891078125e+04, 5.137563671875e+04, 5.186359375e+04, 5.236073046875e+04, 5.286351953125e+04, 5.3371109375e+04, 5.388541796875e+04, 5.440391015625e+04, 5.4930859375e+04, 5.54565078125e+04, 5.598604296875e+04, 5.6526296875e+04, 5.70645625e+04, 5.761116015625e+04, 5.815837890625e+04, 5.870601953125e+04, 5.926384375e+04, 5.982031640625e+04, 6.03763203125e+04, 6.093153125e+04, 6.14856328125e+04, 6.203921484375e+04, 6.259234765625e+04, 6.314473828125e+04, 6.369610546875e+04, 6.4246703125e+04, 6.479653125e+04, 6.534559375e+04, 6.5893890625e+04, 6.64414140625e+04, 6.6988171875e+04, 6.75341484375e+04, 6.80793671875e+04, 6.86238046875e+04, 6.91674765625e+04, 6.97103828125e+04, 7.0252515625e+04, 7.0793875e+04, 7.13344609375e+04, 7.18742734375e+04, 7.24133125e+04, 7.29515859375e+04, 7.34890859375e+04, 7.40258046875e+04, 7.45617578125e+04, 7.50969453125e+04, 7.56313515625e+04, 7.6164984375e+04, 7.66978515625e+04, 7.72299375e+04, 7.77612578125e+04, 7.8291796875e+04, 7.88215703125e+04, 7.93505703125e+04, 7.98787890625e+04, 8.04062421875e+04, 8.0932921875e+04, 8.1458828125e+04, 8.19839609375e+04, 8.25083203125e+04, 8.303190625e+04, 8.35543359375e+04]
+hexWetNTU.Q1_flow=[4.52515390625e+04, 4.525468359375e+04, 4.525782421875e+04, 4.526096484375e+04, 4.526410546875e+04, 4.52672421875e+04, 4.527037890625e+04, 4.5273515625e+04, 4.52766484375e+04, 4.527978515625e+04, 4.52829140625e+04, 4.5286046875e+04, 4.528917578125e+04, 4.529230078125e+04, 4.52954296875e+04, 4.52985546875e+04, 4.530167578125e+04, 4.530480078125e+04, 4.5307921875e+04, 4.531104296875e+04, 4.531416015625e+04, 4.531727734375e+04, 4.532038671875e+04, 4.532303515625e+04, 4.532248046875e+04, 4.531446484375e+04, 4.529840234375e+04, 4.528105859375e+04, 4.52765078125e+04, 4.53036953125e+04, 4.53830859375e+04, 4.553348046875e+04, 4.576959375e+04, 4.610057421875e+04, 4.65294765625e+04, 4.705344140625e+04, 4.766437109375e+04, 4.834994921875e+04, 4.909483203125e+04, 4.98819453125e+04, 5.069384375e+04, 5.1513953125e+04, 5.23277109375e+04, 5.31234609375e+04, 5.389299609375e+04, 5.463182421875e+04, 5.533899609375e+04, 5.6016671875e+04, 5.666937890625e+04, 5.730303515625e+04, 5.79238828125e+04, 5.853736328125e+04, 5.91473203125e+04, 5.975576953125e+04, 6.036340625e+04, 6.097034765625e+04, 6.1576515625e+04, 6.21818984375e+04, 6.27865859375e+04, 6.339024609375e+04, 6.399337109375e+04, 6.45960078125e+04, 6.51980546875e+04, 6.579940625e+04, 6.64001328125e+04, 6.70002109375e+04, 6.7599640625e+04, 6.81983984375e+04, 6.879646875e+04, 6.93939375e+04, 6.99908046875e+04, 7.05869921875e+04, 7.11824921875e+04, 7.1777296875e+04, 7.23713828125e+04, 7.29648046875e+04, 7.35577109375e+04, 7.41499453125e+04, 7.47414921875e+04, 7.533234375e+04, 7.59224921875e+04, 7.6511921875e+04, 7.7100859375e+04, 7.76891640625e+04, 7.8276796875e+04, 7.88637578125e+04, 7.94500234375e+04, 8.003559375e+04, 8.06205703125e+04, 8.12050078125e+04, 8.1788796875e+04, 8.2371921875e+04, 8.29543828125e+04, 8.3536171875e+04, 8.41172734375e+04, 8.469775e+04, 8.527759375e+04, 8.58568359375e+04, 8.64354609375e+04, 8.701346875e+04, 8.7590859375e+04]
+hexWetNTU_TX.Q1_flow=[4.53355859375e+04, 4.533874609375e+04, 4.534190234375e+04, 4.534505859375e+04, 4.534821484375e+04, 4.53513671875e+04, 4.53545234375e+04, 4.5357671875e+04, 4.536082421875e+04, 4.536397265625e+04, 4.536712109375e+04, 4.5370265625e+04, 4.537341015625e+04, 4.53765546875e+04, 4.53796953125e+04, 4.53828359375e+04, 4.53859765625e+04, 4.53891171875e+04, 4.539225390625e+04, 4.5395390625e+04, 4.53985234375e+04, 4.540165625e+04, 4.540477734375e+04, 4.540739453125e+04, 4.540666796875e+04, 4.53983984375e+04, 4.538223828125e+04, 4.536523046875e+04, 4.536165625e+04, 4.539055859375e+04, 4.547237109375e+04, 4.56257890625e+04, 4.5865359375e+04, 4.62000546875e+04, 4.663276171875e+04, 4.716048046875e+04, 4.777500390625e+04, 4.846394921875e+04, 4.92119296875e+04, 5.00018828125e+04, 5.0816375e+04, 5.163887109375e+04, 5.24548515625e+04, 5.3252703125e+04, 5.40242578125e+04, 5.476503515625e+04, 5.547410546875e+04, 5.61536171875e+04, 5.680808984375e+04, 5.74434375e+04, 5.806588671875e+04, 5.8680890625e+04, 5.929231640625e+04, 5.990221484375e+04, 6.05112890625e+04, 6.111966015625e+04, 6.1727265625e+04, 6.233408203125e+04, 6.294019921875e+04, 6.35452890625e+04, 6.414984375e+04, 6.475390625e+04, 6.535737890625e+04, 6.596015625e+04, 6.65623046875e+04, 6.71638046875e+04, 6.776465625e+04, 6.8364828125e+04, 6.89643203125e+04, 6.95632109375e+04, 7.01614921875e+04, 7.075909375e+04, 7.13560078125e+04, 7.195221875e+04, 7.254771875e+04, 7.3142546875e+04, 7.3736859375e+04, 7.43305e+04, 7.49234609375e+04, 7.551571875e+04, 7.6107265625e+04, 7.669809375e+04, 7.72884296875e+04, 7.78781328125e+04, 7.84671640625e+04, 7.9055515625e+04, 7.96431796875e+04, 8.0230140625e+04, 8.0816515625e+04, 8.140234375e+04, 8.1987515625e+04, 8.257203125e+04, 8.31558828125e+04, 8.37390546875e+04, 8.43215390625e+04, 8.49033984375e+04, 8.5484625e+04, 8.60652421875e+04, 8.664525e+04, 8.72246328125e+04, 8.78033984375e+04]
+hexDis.sta_b2.T=[2.931499938964844e+02, 2.830871887207031e+02, 2.830879821777344e+02, 2.830888061523438e+02, 2.830896301269531e+02, 2.830904541015625e+02, 2.830912780761719e+02, 2.830921020507812e+02, 2.830929260253906e+02, 2.8309375e+02, 2.830945739746094e+02, 2.830953979492188e+02, 2.830962219238281e+02, 2.830970458984375e+02, 2.830978698730469e+02, 2.830986938476562e+02, 2.830995178222656e+02, 2.83100341796875e+02, 2.831011657714844e+02, 2.831019897460938e+02, 2.831028137207031e+02, 2.831065063476562e+02, 2.831292724609375e+02, 2.831668701171875e+02, 2.8321337890625e+02, 2.83265869140625e+02, 2.833217163085938e+02, 2.833802490234375e+02, 2.834401245117188e+02, 2.835008544921875e+02, 2.8356201171875e+02, 2.83623291015625e+02, 2.836844787597656e+02, 2.837454528808594e+02, 2.838061218261719e+02, 2.838663330078125e+02, 2.839261169433594e+02, 2.839853210449219e+02, 2.840440979003906e+02, 2.841022644042969e+02, 2.841598815917969e+02, 2.842171020507812e+02, 2.842735290527344e+02, 2.843296203613281e+02, 2.843850402832031e+02, 2.844401550292969e+02, 2.844944763183594e+02, 2.845485534667969e+02, 2.846018981933594e+02, 2.846550598144531e+02, 2.8470751953125e+02, 2.847595825195312e+02, 2.848114318847656e+02, 2.848623657226562e+02, 2.84913330078125e+02, 2.849637451171875e+02, 2.850135498046875e+02, 2.850633850097656e+02, 2.851131896972656e+02, 2.851629638671875e+02, 2.852127075195312e+02, 2.852624816894531e+02, 2.853121948242188e+02, 2.853619079589844e+02, 2.854115905761719e+02, 2.854612426757812e+02, 2.855108947753906e+02, 2.855605163574219e+02, 2.856101379394531e+02, 2.856597290039062e+02, 2.857092895507812e+02, 2.857588195800781e+02, 2.85808349609375e+02, 2.858578491210938e+02, 2.859073486328125e+02, 2.85956787109375e+02, 2.860062561035156e+02, 2.860556640625e+02, 2.861050415039062e+02, 2.861544189453125e+02, 2.862037963867188e+02, 2.862531127929688e+02, 2.863024291992188e+02, 2.863517150878906e+02, 2.864009704589844e+02, 2.864502258300781e+02, 2.864994506835938e+02, 2.865486450195312e+02, 2.865978088378906e+02, 2.8664697265625e+02, 2.866961059570312e+02, 2.867452087402344e+02, 2.867942810058594e+02, 2.868433532714844e+02, 2.868923950195312e+02, 2.8694140625e+02, 2.869903869628906e+02, 2.870393371582031e+02, 2.870882873535156e+02, 2.8713720703125e+02, 2.871860961914062e+02]
+hexWetNTU.sta_b2.T=[2.828675231933594e+02, 2.828683471679688e+02, 2.828692016601562e+02, 2.828700256347656e+02, 2.82870849609375e+02, 2.828716735839844e+02, 2.828725280761719e+02, 2.828733520507812e+02, 2.828741760253906e+02, 2.82875e+02, 2.828758544921875e+02, 2.828766784667969e+02, 2.828775024414062e+02, 2.828783264160156e+02, 2.82879150390625e+02, 2.828799743652344e+02, 2.828808288574219e+02, 2.828816528320312e+02, 2.828824768066406e+02, 2.8288330078125e+02, 2.828841247558594e+02, 2.828849487304688e+02, 2.828857727050781e+02, 2.828867797851562e+02, 2.828889770507812e+02, 2.828939514160156e+02, 2.829019470214844e+02, 2.829103393554688e+02, 2.829310913085938e+02, 2.829620056152344e+02, 2.830042114257812e+02, 2.830580749511719e+02, 2.83123291015625e+02, 2.831989440917969e+02, 2.83283447265625e+02, 2.833749389648438e+02, 2.834713134765625e+02, 2.835703125e+02, 2.836697082519531e+02, 2.837675170898438e+02, 2.838618469238281e+02, 2.839513549804688e+02, 2.84034912109375e+02, 2.841119689941406e+02, 2.841824035644531e+02, 2.842464904785156e+02, 2.843048706054688e+02, 2.843584594726562e+02, 2.844082641601562e+02, 2.844554138183594e+02, 2.845008850097656e+02, 2.845454711914062e+02, 2.845897216796875e+02, 2.846338500976562e+02, 2.84677978515625e+02, 2.847221069335938e+02, 2.847662658691406e+02, 2.848104553222656e+02, 2.848546447753906e+02, 2.848988952636719e+02, 2.849431457519531e+02, 2.849873352050781e+02, 2.850315551757812e+02, 2.850757446289062e+02, 2.851199645996094e+02, 2.851641540527344e+02, 2.852083740234375e+02, 2.852525634765625e+02, 2.852967834472656e+02, 2.853409729003906e+02, 2.853851928710938e+02, 2.854293823242188e+02, 2.854735717773438e+02, 2.855177917480469e+02, 2.8556201171875e+02, 2.856062316894531e+02, 2.856504516601562e+02, 2.856946411132812e+02, 2.857388610839844e+02, 2.857830505371094e+02, 2.858272705078125e+02, 2.858715209960938e+02, 2.859157104492188e+02, 2.859598999023438e+02, 2.860040893554688e+02, 2.860483093261719e+02, 2.860924987792969e+02, 2.8613671875e+02, 2.86180908203125e+02, 2.862250671386719e+02, 2.862692565917969e+02, 2.863134155273438e+02, 2.863576049804688e+02, 2.864017639160156e+02, 2.864459533691406e+02, 2.864901123046875e+02, 2.865342712402344e+02, 2.865784301757812e+02, 2.8662255859375e+02, 2.866666870117188e+02, 2.867108154296875e+02]
+hexWetNTU_TX.sta_b2.T=[2.828360595703125e+02, 2.828368835449219e+02, 2.828377075195312e+02, 2.828385314941406e+02, 2.8283935546875e+02, 2.828402099609375e+02, 2.828410339355469e+02, 2.828418579101562e+02, 2.828426818847656e+02, 2.82843505859375e+02, 2.828443298339844e+02, 2.828451538085938e+02, 2.828460083007812e+02, 2.828468322753906e+02, 2.8284765625e+02, 2.828484802246094e+02, 2.828493041992188e+02, 2.828501281738281e+02, 2.828509521484375e+02, 2.828517761230469e+02, 2.828526000976562e+02, 2.828534240722656e+02, 2.82854248046875e+02, 2.828552551269531e+02, 2.828575439453125e+02, 2.828626098632812e+02, 2.828706359863281e+02, 2.828792419433594e+02, 2.829005737304688e+02, 2.829319458007812e+02, 2.829745788574219e+02, 2.830289306640625e+02, 2.830946350097656e+02, 2.83170654296875e+02, 2.832555236816406e+02, 2.833472900390625e+02, 2.834438781738281e+02, 2.835429992675781e+02, 2.836425170898438e+02, 2.837403259277344e+02, 2.838346862792969e+02, 2.839241333007812e+02, 2.840076293945312e+02, 2.840846557617188e+02, 2.84155029296875e+02, 2.842190551757812e+02, 2.842773742675781e+02, 2.843308715820312e+02, 2.84380615234375e+02, 2.844277038574219e+02, 2.844730834960938e+02, 2.845176086425781e+02, 2.845617370605469e+02, 2.846057739257812e+02, 2.846498107910156e+02, 2.8469384765625e+02, 2.847379150390625e+02, 2.847820129394531e+02, 2.848261108398438e+02, 2.848702697753906e+02, 2.849143981933594e+02, 2.849585266113281e+02, 2.850026245117188e+02, 2.850467529296875e+02, 2.850908508300781e+02, 2.851349792480469e+02, 2.851790771484375e+02, 2.852232055664062e+02, 2.85267333984375e+02, 2.853114624023438e+02, 2.853555603027344e+02, 2.853996887207031e+02, 2.854437866210938e+02, 2.854879150390625e+02, 2.855320434570312e+02, 2.855762023925781e+02, 2.856203002929688e+02, 2.856644287109375e+02, 2.857085571289062e+02, 2.85752685546875e+02, 2.857968139648438e+02, 2.858409729003906e+02, 2.858851013183594e+02, 2.8592919921875e+02, 2.859733276367188e+02, 2.860174560546875e+02, 2.860615844726562e+02, 2.86105712890625e+02, 2.861498413085938e+02, 2.861939392089844e+02, 2.86238037109375e+02, 2.862821350097656e+02, 2.863262329101562e+02, 2.863703308105469e+02, 2.864144287109375e+02, 2.864585266113281e+02, 2.865026245117188e+02, 2.865466918945312e+02, 2.865907592773438e+02, 2.866348266601562e+02, 2.866788940429688e+02]
+relHumOut_dis.phi=[5e-01, 4.801923334598541e-01, 4.981439709663391e-01, 5.166705846786499e-01, 5.351910591125488e-01, 5.537007451057434e-01, 5.721999406814575e-01, 5.906887650489807e-01, 6.091671586036682e-01, 6.276351809501648e-01, 6.460928916931152e-01, 6.645402312278748e-01, 6.829771995544434e-01, 7.014039158821106e-01, 7.198202610015869e-01, 7.382262945175171e-01, 7.566220164299011e-01, 7.75007426738739e-01, 7.933825850486755e-01, 8.117473721504211e-01, 8.301019072532654e-01, 8.481107950210571e-01, 8.628171682357788e-01, 8.745312690734863e-01, 8.841044306755066e-01, 8.92108678817749e-01, 8.989589214324951e-01, 9.048370122909546e-01, 9.099735021591187e-01, 9.145430326461792e-01, 9.186031818389893e-01, 9.2226243019104e-01, 9.255711436271667e-01, 9.285886883735657e-01, 9.313626289367676e-01, 9.339068531990051e-01, 9.362651705741882e-01, 9.384449124336243e-01, 9.405038952827454e-01, 9.424059391021729e-01, 9.441936016082764e-01, 9.459004402160645e-01, 9.474800229072571e-01, 9.490005373954773e-01, 9.504244327545166e-01, 9.518052935600281e-01, 9.530864357948303e-01, 9.543405175209045e-01, 9.555141925811768e-01, 9.566634893417358e-01, 9.577521085739136e-01, 9.587950706481934e-01, 9.598232507705688e-01, 9.607750177383423e-01, 9.617242217063904e-01, 9.626364707946777e-01, 9.635008573532104e-01, 9.643627405166626e-01, 9.652206301689148e-01, 9.660725593566895e-01, 9.669217467308044e-01, 9.677685499191284e-01, 9.686114192008972e-01, 9.694488644599915e-01, 9.702821373939514e-01, 9.711113572120667e-01, 9.719369411468506e-01, 9.727585911750793e-01, 9.735763669013977e-01, 9.743903875350952e-01, 9.752005338668823e-01, 9.760068655014038e-01, 9.768093824386597e-01, 9.776079654693604e-01, 9.784027934074402e-01, 9.791938066482544e-01, 9.79981541633606e-01, 9.807655811309814e-01, 9.815459251403809e-01, 9.823225736618042e-01, 9.830955266952515e-01, 9.838647842407227e-01, 9.84630823135376e-01, 9.853933453559875e-01, 9.861523509025574e-01, 9.869077801704407e-01, 9.876596331596375e-01, 9.884079694747925e-01, 9.891529679298401e-01, 9.898948669433594e-01, 9.906333088874817e-01, 9.913684129714966e-01, 9.921000599861145e-01, 9.928283095359802e-01, 9.935532212257385e-01, 9.942746758460999e-01, 9.949932098388672e-01, 9.957085847854614e-01, 9.964207410812378e-01, 9.971297979354858e-01, 9.978358149528503e-01]
+relHumOut_eps.phi=[5e-01, 4.923496544361115e-01, 5.111603736877441e-01, 5.299617052078247e-01, 5.487524271011353e-01, 5.675325989723206e-01, 5.863022208213806e-01, 6.050612926483154e-01, 6.238097548484802e-01, 6.425477266311646e-01, 6.612751483917236e-01, 6.799920797348022e-01, 6.986984610557556e-01, 7.173944115638733e-01, 7.360798120498657e-01, 7.547547221183777e-01, 7.734191417694092e-01, 7.920730710029602e-01, 8.107165694236755e-01, 8.293495774269104e-01, 8.479721546173096e-01, 8.66584300994873e-01, 8.851858973503113e-01, 9.037690162658691e-01, 9.222763776779175e-01, 9.406030178070068e-01, 9.587114453315735e-01, 9.767316579818726e-01, 9.932551383972168e-01, 1.0078045129776e+00, 1.019919395446777e+00, 1.029143214225769e+00, 1.035207152366638e+00, 1.038049578666687e+00, 1.037810564041138e+00, 1.034801006317139e+00, 1.02947211265564e+00, 1.022364139556885e+00, 1.014065146446228e+00, 1.005165576934814e+00, 9.962204694747925e-01, 9.877168536186218e-01, 9.800413846969604e-01, 9.734735488891602e-01, 9.681720733642578e-01, 9.641795754432678e-01, 9.614337086677551e-01, 9.59787905216217e-01, 9.590367078781128e-01, 9.589421153068542e-01, 9.592779874801636e-01, 9.598467946052551e-01, 9.605141878128052e-01, 9.612064361572266e-01, 9.618991017341614e-01, 9.625874757766724e-01, 9.632709622383118e-01, 9.639500975608826e-01, 9.646246433258057e-01, 9.652925133705139e-01, 9.659573435783386e-01, 9.666194915771484e-01, 9.672772884368896e-01, 9.679293632507324e-01, 9.685770273208618e-01, 9.692202210426331e-01, 9.698590636253357e-01, 9.704934358596802e-01, 9.711233973503113e-01, 9.717491269111633e-01, 9.723706841468811e-01, 9.729878902435303e-01, 9.736007452011108e-01, 9.742092490196228e-01, 9.748134613037109e-01, 9.754135012626648e-01, 9.760095477104187e-01, 9.766014218330383e-01, 9.771890640258789e-01, 9.777725338935852e-01, 9.783518314361572e-01, 9.789268970489502e-01, 9.794983267784119e-01, 9.800657033920288e-01, 9.806290864944458e-01, 9.811884760856628e-01, 9.817437529563904e-01, 9.82295036315918e-01, 9.828425049781799e-01, 9.83386218547821e-01, 9.839260578155518e-01, 9.844620227813721e-01, 9.849940538406372e-01, 9.855221509933472e-01, 9.860464334487915e-01, 9.865675568580627e-01, 9.87084686756134e-01, 9.875978827476501e-01, 9.881073832511902e-01, 9.886130094528198e-01, 9.8911452293396e-01]
+hexDis.SHR=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.9959796667099e-01, 9.964630603790283e-01, 9.911324977874756e-01, 9.842373132705688e-01, 9.761488437652588e-01, 9.67201292514801e-01, 9.576169848442078e-01, 9.475892782211304e-01, 9.372141361236572e-01, 9.266218543052673e-01, 9.15724515914917e-01, 9.047637581825256e-01, 8.937340378761292e-01, 8.826755285263062e-01, 8.717673420906067e-01, 8.607526421546936e-01, 8.497628569602966e-01, 8.388859629631042e-01, 8.282127976417542e-01, 8.174986243247986e-01, 8.069437742233276e-01, 7.965637445449829e-01, 7.863005995750427e-01, 7.761430740356445e-01, 7.66108512878418e-01, 7.562749981880188e-01, 7.467237114906311e-01, 7.369806170463562e-01, 7.27634608745575e-01, 7.182742953300476e-01, 7.091848254203796e-01, 7.001710534095764e-01, 6.913515329360962e-01, 6.827108860015869e-01, 6.741096377372742e-01, 6.657314300537109e-01, 6.575123071670532e-01, 6.494516730308533e-01, 6.41533374786377e-01, 6.337735652923584e-01, 6.261699199676514e-01, 6.187083721160889e-01, 6.113764643669128e-01, 6.041783094406128e-01, 5.971102714538574e-01, 5.901685357093811e-01, 5.833498239517212e-01, 5.766509175300598e-01, 5.700687170028687e-01, 5.636002421379089e-01, 5.572423934936523e-01, 5.509923696517944e-01, 5.448473691940308e-01, 5.388047695159912e-01, 5.328620672225952e-01, 5.27016818523407e-01, 5.212665796279907e-01, 5.156089067459106e-01, 5.100417137145996e-01, 5.045626759529114e-01, 4.991697669029236e-01, 4.938610196113586e-01, 4.886344075202942e-01, 4.834879636764526e-01, 4.784198403358459e-01, 4.734282493591309e-01, 4.685114026069641e-01, 4.636677205562592e-01, 4.588955938816071e-01, 4.541932940483093e-01, 4.495593309402466e-01, 4.449921846389771e-01, 4.404903650283813e-01, 4.360524415969849e-01, 4.316771328449249e-01, 4.273631274700165e-01, 4.231091141700745e-01, 4.189137816429138e-01, 4.147759675979614e-01, 4.106990098953247e-01]
+hexWetNTU.SHR=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000003576278687e+00, 9.989969730377197e-01, 9.966937303543091e-01, 9.925904870033264e-01, 9.86279308795929e-01, 9.775168895721436e-01, 9.66255247592926e-01, 9.526409506797791e-01, 9.369876384735107e-01, 9.197313189506531e-01, 9.013778567314148e-01, 8.824515342712402e-01, 8.634496927261353e-01, 8.448076844215393e-01, 8.268752098083496e-01, 8.099044561386108e-01, 7.940478920936584e-01, 7.793647050857544e-01, 7.658329606056213e-01, 7.533659338951111e-01, 7.418308854103088e-01, 7.310686111450195e-01, 7.209140062332153e-01, 7.112150192260742e-01, 7.018497586250305e-01, 6.927358508110046e-01, 6.838290691375732e-01, 6.751111149787903e-01, 6.665741205215454e-01, 6.582125425338745e-01, 6.500210762023926e-01, 6.419941782951355e-01, 6.341279149055481e-01, 6.264159083366394e-01, 6.188535094261169e-01, 6.11436665058136e-01, 6.041614413261414e-01, 5.97023606300354e-01, 5.900193452835083e-01, 5.831449031829834e-01, 5.763967037200928e-01, 5.697712898254395e-01, 5.632650852203369e-01, 5.568749904632568e-01, 5.505979061126709e-01, 5.444309115409851e-01, 5.383710861206055e-01, 5.324156880378723e-01, 5.265618562698364e-01, 5.208067893981934e-01, 5.151482224464417e-01, 5.095837116241455e-01, 5.041108727455139e-01, 4.987275302410126e-01, 4.9343141913414e-01, 4.882201850414276e-01, 4.830918908119202e-01, 4.780446588993073e-01, 4.730764627456665e-01, 4.681855142116547e-01, 4.633699655532837e-01, 4.586279690265656e-01, 4.539578557014465e-01, 4.493580162525177e-01, 4.448268711566925e-01, 4.403628408908844e-01, 4.35964435338974e-01, 4.316301941871643e-01, 4.273586869239807e-01, 4.231485426425934e-01, 4.189984202384949e-01, 4.149070382118225e-01, 4.108731150627136e-01, 4.068954586982727e-01]
+hexWetNTU.dryFra=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999983310699463e-01, 9.998849034309387e-01, 9.988121390342712e-01, 9.946662783622742e-01, 9.846232533454895e-01, 9.660599231719971e-01, 9.371674060821533e-01, 8.972097635269165e-01, 8.465237617492676e-01, 7.863520383834839e-01, 7.185931801795959e-01, 6.455350518226624e-01, 5.69616436958313e-01, 4.932374656200409e-01, 4.186207950115204e-01, 3.477145135402679e-01, 2.821266353130341e-01, 2.230825573205948e-01, 1.714025735855103e-01, 1.274984627962112e-01, 9.139084815979004e-02, 6.274732202291489e-02, 4.093948751688004e-02, 2.51146350055933e-02, 1.427622325718403e-02, 7.367109879851341e-03, 3.350537735968828e-03, 1.284907339140773e-03, 3.879504220094532e-04, 8.245353092206642e-05, 1.014950339595089e-05, 4.988578439224511e-07, 4.371156325788661e-09, 8.061000326443912e-13, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00]
+hexDis.UA_nominal=[4.748e+03, 4.748e+03]
+hexWetNTU.UA_nominal=[4.748e+03, 4.748e+03]
+hexWetNTU_TX.UA_nominal=[4.77145166015625e+03, 4.77145166015625e+03]
diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTUHeating.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTUHeating.txt
new file mode 100644
index 00000000000..99fc61dfa0f
--- /dev/null
+++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Validation_WetCoilEffectivenessNTUHeating.txt
@@ -0,0 +1,23 @@
+last-generated=2021-04-14
+statistics-initialization=
+{
+ "nonlinear": "1, 1",
+ "numerical Jacobians": "0"
+}
+statistics-simulation=
+{
+ "linear": " ",
+ "nonlinear": "1",
+ "number of continuous time states": "130",
+ "numerical Jacobians": "0"
+}
+time=[0e+00, 1e+03]
+hexDis.Q1_flow=[0e+00, -7.81854140625e+04, -7.795025e+04, -7.7715078125e+04, -7.74799140625e+04, -7.72447421875e+04, -7.70095703125e+04, -7.67743984375e+04, -7.65392265625e+04, -7.63040546875e+04, -7.60688828125e+04, -7.58337109375e+04, -7.5598546875e+04, -7.5363375e+04, -7.5128203125e+04, -7.489303125e+04, -7.4657859375e+04, -7.44226875e+04, -7.4187515625e+04, -7.39523515625e+04, -7.37171796875e+04, -7.34820078125e+04, -7.32468359375e+04, -7.30116640625e+04, -7.27764921875e+04, -7.25413203125e+04, -7.230615625e+04, -7.2070984375e+04, -7.18358125e+04, -7.1600640625e+04, -7.136546875e+04, -7.1130296875e+04, -7.0895125e+04, -7.06599609375e+04, -7.04247890625e+04, -7.01896171875e+04, -6.99544453125e+04, -6.97192734375e+04, -6.94841015625e+04, -6.92489296875e+04, -6.9013765625e+04, -6.877859375e+04, -6.8543421875e+04, -6.830825e+04, -6.8073078125e+04, -6.783790625e+04, -6.7602734375e+04, -6.73675703125e+04, -6.71323984375e+04, -6.68972265625e+04, -6.66620546875e+04, -6.64268828125e+04, -6.61917109375e+04, -6.59565390625e+04, -6.5721375e+04, -6.548619921875e+04, -6.525103125e+04, -6.5015859375e+04, -6.47806875e+04, -6.454551953125e+04, -6.431034765625e+04, -6.407517578125e+04, -6.384000390625e+04, -6.36048359375e+04, -6.33696640625e+04, -6.31344921875e+04, -6.289932421875e+04, -6.266415234375e+04, -6.242898046875e+04, -6.219380859375e+04, -6.1958640625e+04, -6.172346875e+04, -6.1488296875e+04, -6.125312890625e+04, -6.101795703125e+04, -6.078278515625e+04, -6.054761328125e+04, -6.03124453125e+04, -6.00772734375e+04, -5.98421015625e+04, -5.960693359375e+04, -5.937176171875e+04, -5.913658984375e+04, -5.890141796875e+04, -5.866625e+04, -5.8431078125e+04, -5.819590625e+04, -5.796073828125e+04, -5.772556640625e+04, -5.749039453125e+04, -5.725522265625e+04, -5.70200546875e+04, -5.67848828125e+04, -5.65497109375e+04, -5.631454296875e+04, -5.607937109375e+04, -5.584419921875e+04, -5.560902734375e+04, -5.5373859375e+04, -5.51386875e+04, -5.4903515625e+04]
+hexWetNTU_TX.Q1_flow=[-7.934540625e+04, -7.9106171875e+04, -7.8867140625e+04, -7.8628296875e+04, -7.8389625e+04, -7.81511015625e+04, -7.7912703125e+04, -7.76744140625e+04, -7.7436203125e+04, -7.71980625e+04, -7.695996875e+04, -7.672190625e+04, -7.64838671875e+04, -7.62458359375e+04, -7.60078125e+04, -7.57697890625e+04, -7.5531765625e+04, -7.529375e+04, -7.50557265625e+04, -7.4817703125e+04, -7.45796875e+04, -7.43416640625e+04, -7.41036484375e+04, -7.3865625e+04, -7.36276015625e+04, -7.33895859375e+04, -7.31515625e+04, -7.2913546875e+04, -7.26755234375e+04, -7.24375e+04, -7.2199484375e+04, -7.19614609375e+04, -7.17234453125e+04, -7.1485421875e+04, -7.12473984375e+04, -7.10093828125e+04, -7.0771359375e+04, -7.053334375e+04, -7.02953203125e+04, -7.0057296875e+04, -6.981928125e+04, -6.95812578125e+04, -6.93432421875e+04, -6.910521875e+04, -6.88671953125e+04, -6.86291796875e+04, -6.839115625e+04, -6.8153140625e+04, -6.79151171875e+04, -6.76771015625e+04, -6.7439078125e+04, -6.72010546875e+04, -6.69630390625e+04, -6.6725015625e+04, -6.6487e+04, -6.62489765625e+04, -6.6010953125e+04, -6.57729375e+04, -6.55349140625e+04, -6.529689453125e+04, -6.5058875e+04, -6.482085546875e+04, -6.45828359375e+04, -6.43448125e+04, -6.410679296875e+04, -6.38687734375e+04, -6.363075390625e+04, -6.3392734375e+04, -6.31547109375e+04, -6.291669140625e+04, -6.2678671875e+04, -6.244065234375e+04, -6.22026328125e+04, -6.1964609375e+04, -6.172658984375e+04, -6.14885703125e+04, -6.125055078125e+04, -6.101253125e+04, -6.07745078125e+04, -6.053648828125e+04, -6.029846875e+04, -6.006044921875e+04, -5.98224296875e+04, -5.958441015625e+04, -5.934638671875e+04, -5.91083671875e+04, -5.887034765625e+04, -5.8632328125e+04, -5.839430859375e+04, -5.815628515625e+04, -5.7918265625e+04, -5.768024609375e+04, -5.74422265625e+04, -5.720420703125e+04, -5.696618359375e+04, -5.67281640625e+04, -5.649014453125e+04, -5.6252125e+04, -5.601410546875e+04, -5.57760859375e+04, -5.55380625e+04]
+hexDryNTU_T.Q1_flow=[-7.91153984375e+04, -7.88780546875e+04, -7.86407109375e+04, -7.8403359375e+04, -7.8166015625e+04, -7.7928671875e+04, -7.76913203125e+04, -7.74539765625e+04, -7.72166328125e+04, -7.697928125e+04, -7.67419375e+04, -7.650459375e+04, -7.62672421875e+04, -7.60298984375e+04, -7.57925546875e+04, -7.5555203125e+04, -7.5317859375e+04, -7.5080515625e+04, -7.4843171875e+04, -7.46058203125e+04, -7.43684765625e+04, -7.41311328125e+04, -7.389378125e+04, -7.36564375e+04, -7.341909375e+04, -7.31817421875e+04, -7.29443984375e+04, -7.27070546875e+04, -7.2469703125e+04, -7.2232359375e+04, -7.1995015625e+04, -7.17576640625e+04, -7.15203203125e+04, -7.12829765625e+04, -7.10456328125e+04, -7.080828125e+04, -7.05709375e+04, -7.033359375e+04, -7.00962421875e+04, -6.98588984375e+04, -6.96215546875e+04, -6.9384203125e+04, -6.9146859375e+04, -6.8909515625e+04, -6.86721640625e+04, -6.84348203125e+04, -6.81974765625e+04, -6.7960125e+04, -6.772278125e+04, -6.74854375e+04, -6.724809375e+04, -6.70107421875e+04, -6.67733984375e+04, -6.65360546875e+04, -6.6298703125e+04, -6.6061359375e+04, -6.5824015625e+04, -6.55866640625e+04, -6.53493203125e+04, -6.511197265625e+04, -6.487462890625e+04, -6.463728125e+04, -6.43999375e+04, -6.416258984375e+04, -6.39252421875e+04, -6.36878984375e+04, -6.345055078125e+04, -6.3213203125e+04, -6.2975859375e+04, -6.273851171875e+04, -6.25011640625e+04, -6.22638203125e+04, -6.202647265625e+04, -6.178912890625e+04, -6.155178125e+04, -6.131443359375e+04, -6.107708984375e+04, -6.08397421875e+04, -6.060239453125e+04, -6.036505078125e+04, -6.0127703125e+04, -5.9890359375e+04, -5.965301171875e+04, -5.94156640625e+04, -5.91783203125e+04, -5.894097265625e+04, -5.8703625e+04, -5.846628125e+04, -5.822893359375e+04, -5.799158984375e+04, -5.77542421875e+04, -5.751689453125e+04, -5.727955078125e+04, -5.7042203125e+04, -5.680485546875e+04, -5.656751171875e+04, -5.63301640625e+04, -5.60928203125e+04, -5.585547265625e+04, -5.5618125e+04, -5.538078125e+04]
+hexDis.sta_b2.T=[2.931499938964844e+02, 3.023950805664062e+02, 3.024577026367188e+02, 3.025200805664062e+02, 3.025824584960938e+02, 3.026448669433594e+02, 3.02707275390625e+02, 3.027696533203125e+02, 3.028320617675781e+02, 3.028944396972656e+02, 3.029568481445312e+02, 3.030192260742188e+02, 3.030816345214844e+02, 3.0314404296875e+02, 3.032064208984375e+02, 3.032688293457031e+02, 3.033312072753906e+02, 3.033936157226562e+02, 3.034560241699219e+02, 3.035184020996094e+02, 3.03580810546875e+02, 3.036431884765625e+02, 3.037055969238281e+02, 3.037680053710938e+02, 3.038303833007812e+02, 3.038927917480469e+02, 3.039551696777344e+02, 3.04017578125e+02, 3.040799865722656e+02, 3.041423645019531e+02, 3.042047729492188e+02, 3.042671508789062e+02, 3.043295593261719e+02, 3.043919372558594e+02, 3.04454345703125e+02, 3.045167541503906e+02, 3.045791320800781e+02, 3.046415405273438e+02, 3.047039184570312e+02, 3.047663269042969e+02, 3.048287353515625e+02, 3.0489111328125e+02, 3.049535217285156e+02, 3.050158996582031e+02, 3.050783081054688e+02, 3.051407165527344e+02, 3.052030944824219e+02, 3.052655029296875e+02, 3.05327880859375e+02, 3.053902893066406e+02, 3.054526672363281e+02, 3.055150756835938e+02, 3.055774841308594e+02, 3.056398620605469e+02, 3.057022705078125e+02, 3.057646484375e+02, 3.058270568847656e+02, 3.058894653320312e+02, 3.059518432617188e+02, 3.060142517089844e+02, 3.060766296386719e+02, 3.061390380859375e+02, 3.062014465332031e+02, 3.062638244628906e+02, 3.063262329101562e+02, 3.063886108398438e+02, 3.064510192871094e+02, 3.065133972167969e+02, 3.065758056640625e+02, 3.066382141113281e+02, 3.067005920410156e+02, 3.067630004882812e+02, 3.068253784179688e+02, 3.068877868652344e+02, 3.069501953125e+02, 3.070125732421875e+02, 3.070749816894531e+02, 3.071373596191406e+02, 3.071997680664062e+02, 3.072621765136719e+02, 3.073245544433594e+02, 3.07386962890625e+02, 3.074493408203125e+02, 3.075117492675781e+02, 3.075741577148438e+02, 3.076365356445312e+02, 3.076989440917969e+02, 3.077613220214844e+02, 3.0782373046875e+02, 3.078861083984375e+02, 3.079485168457031e+02, 3.080109252929688e+02, 3.080733032226562e+02, 3.081357116699219e+02, 3.081980895996094e+02, 3.08260498046875e+02, 3.083229064941406e+02, 3.083852844238281e+02, 3.084476928710938e+02, 3.085100708007812e+02, 3.085724792480469e+02]
+hexWetNTU_TX.sta_b2.T=[3.027071533203125e+02, 3.027680358886719e+02, 3.028290100097656e+02, 3.028900451660156e+02, 3.029511108398438e+02, 3.030122680664062e+02, 3.030734558105469e+02, 3.031347045898438e+02, 3.031959533691406e+02, 3.032572631835938e+02, 3.033185729980469e+02, 3.033798828125e+02, 3.034411926269531e+02, 3.035025329589844e+02, 3.035638732910156e+02, 3.036252136230469e+02, 3.036865234375e+02, 3.037478637695312e+02, 3.038092041015625e+02, 3.038705444335938e+02, 3.03931884765625e+02, 3.039931945800781e+02, 3.040545349121094e+02, 3.041158752441406e+02, 3.041772155761719e+02, 3.042385559082031e+02, 3.042998657226562e+02, 3.043612060546875e+02, 3.044225463867188e+02, 3.0448388671875e+02, 3.045452270507812e+02, 3.046065673828125e+02, 3.046678771972656e+02, 3.047292175292969e+02, 3.047905578613281e+02, 3.048518981933594e+02, 3.049132385253906e+02, 3.049745483398438e+02, 3.05035888671875e+02, 3.050972290039062e+02, 3.051585693359375e+02, 3.052199096679688e+02, 3.052812194824219e+02, 3.053425598144531e+02, 3.054039001464844e+02, 3.054652404785156e+02, 3.055265808105469e+02, 3.05587890625e+02, 3.056492309570312e+02, 3.057105712890625e+02, 3.057719116210938e+02, 3.05833251953125e+02, 3.058945617675781e+02, 3.059559020996094e+02, 3.060172424316406e+02, 3.060785827636719e+02, 3.061399230957031e+02, 3.062012634277344e+02, 3.062625732421875e+02, 3.063239135742188e+02, 3.0638525390625e+02, 3.064465942382812e+02, 3.065079345703125e+02, 3.065692443847656e+02, 3.066305847167969e+02, 3.066919250488281e+02, 3.067532653808594e+02, 3.068146057128906e+02, 3.068759155273438e+02, 3.06937255859375e+02, 3.069985961914062e+02, 3.070599365234375e+02, 3.071212768554688e+02, 3.071825866699219e+02, 3.072439270019531e+02, 3.073052673339844e+02, 3.073666076660156e+02, 3.074279479980469e+02, 3.074892578125e+02, 3.075505981445312e+02, 3.076119384765625e+02, 3.076732788085938e+02, 3.07734619140625e+02, 3.077959289550781e+02, 3.078572692871094e+02, 3.079186096191406e+02, 3.079799499511719e+02, 3.080412902832031e+02, 3.081026306152344e+02, 3.081639404296875e+02, 3.082252807617188e+02, 3.0828662109375e+02, 3.083479614257812e+02, 3.084093017578125e+02, 3.084706115722656e+02, 3.085319519042969e+02, 3.085932922363281e+02, 3.086546325683594e+02, 3.087159729003906e+02, 3.087772827148438e+02, 3.08838623046875e+02]
+hexDryNTU_T.sta_b2.T=[3.026214904785156e+02, 3.026830749511719e+02, 3.027446594238281e+02, 3.028062438964844e+02, 3.028678283691406e+02, 3.029294128417969e+02, 3.029909973144531e+02, 3.030525817871094e+02, 3.031141662597656e+02, 3.031757507324219e+02, 3.032373352050781e+02, 3.032989196777344e+02, 3.033605041503906e+02, 3.034220886230469e+02, 3.034836730957031e+02, 3.035452575683594e+02, 3.036068420410156e+02, 3.036684265136719e+02, 3.037300109863281e+02, 3.037915954589844e+02, 3.038532104492188e+02, 3.03914794921875e+02, 3.039763793945312e+02, 3.040379638671875e+02, 3.040995483398438e+02, 3.041611328125e+02, 3.042227172851562e+02, 3.042843017578125e+02, 3.043458862304688e+02, 3.04407470703125e+02, 3.044690551757812e+02, 3.045306396484375e+02, 3.045922241210938e+02, 3.0465380859375e+02, 3.047153930664062e+02, 3.047769775390625e+02, 3.048385620117188e+02, 3.04900146484375e+02, 3.049617309570312e+02, 3.050233154296875e+02, 3.050848999023438e+02, 3.05146484375e+02, 3.052080688476562e+02, 3.052696533203125e+02, 3.053312377929688e+02, 3.05392822265625e+02, 3.054544067382812e+02, 3.055159912109375e+02, 3.055775756835938e+02, 3.056391906738281e+02, 3.057007751464844e+02, 3.057623596191406e+02, 3.058239440917969e+02, 3.058855285644531e+02, 3.059471130371094e+02, 3.060086975097656e+02, 3.060702819824219e+02, 3.061318664550781e+02, 3.061934509277344e+02, 3.062550354003906e+02, 3.063166198730469e+02, 3.063782043457031e+02, 3.064397888183594e+02, 3.065013732910156e+02, 3.065629577636719e+02, 3.066245422363281e+02, 3.066861267089844e+02, 3.067477111816406e+02, 3.068092956542969e+02, 3.068708801269531e+02, 3.069324645996094e+02, 3.069940490722656e+02, 3.070556335449219e+02, 3.071172180175781e+02, 3.071788024902344e+02, 3.072403869628906e+02, 3.073019714355469e+02, 3.073635864257812e+02, 3.074251708984375e+02, 3.074867553710938e+02, 3.0754833984375e+02, 3.076099243164062e+02, 3.076715087890625e+02, 3.077330932617188e+02, 3.07794677734375e+02, 3.078562622070312e+02, 3.079178466796875e+02, 3.079794311523438e+02, 3.08041015625e+02, 3.081026000976562e+02, 3.081641845703125e+02, 3.082257690429688e+02, 3.08287353515625e+02, 3.083489379882812e+02, 3.084105224609375e+02, 3.084721069335938e+02, 3.0853369140625e+02, 3.085952758789062e+02, 3.086568603515625e+02, 3.087184448242188e+02, 3.08780029296875e+02]
+hexDis.UA_nominal=[2.5445390625e+03, 2.5445390625e+03]
+hexWetNTU_TX.UA_nominal=[2.54964794921875e+03, 2.54964794921875e+03]
+hexDryNTU_T.UA_nominal=[2.537459228515625e+03, 2.537459228515625e+03]
diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mos
new file mode 100644
index 00000000000..8604ee61fc6
--- /dev/null
+++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilEffectivenessNTUMassFlow.mos
@@ -0,0 +1,15 @@
+simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilEffectivenessNTUMassFlow",
+ stopTime=3600,
+ method="cvode",
+ tolerance=1e-6,
+ resultFile="WetCoilEffectivenessNTUMassFlow");
+createPlot(
+ id=1,
+ position={0, 0, 782, 636},
+ y={"hex.Q2_flow", "hex.QLat2_flow"},
+ grid=true);
+createPlot(
+ id=1,
+ y={"hex.port_a1.m_flow", "hex.port_a2.m_flow"},
+ grid=true,
+ subPlot=2);
diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mos
new file mode 100644
index 00000000000..f6feb385a99
--- /dev/null
+++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTU.mos
@@ -0,0 +1,62 @@
+simulateModel("Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTU",
+ stopTime=1000,
+ method="cvode",
+ tolerance=1e-6,
+ resultFile="WetCoilEffectivenessNTU");
+createPlot(
+ id=1,
+ position={59, 59, 1186, 1286},
+ y={"hexDis.Q1_flow", "hexWetNTU.Q1_flow", "hexWetNTU_TX.Q1_flow"},
+ range = {0, 1000, 1E4, 1E5},
+ autoscale=false,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
+createPlot(
+ id=1,
+ y={"hexDis.sta_b2.T", "hexWetNTU.sta_b2.T", "hexWetNTU_TX.sta_b2.T"},
+ range={0.0, 1000.0, 8.0, 16.0},
+ autoscale=false,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true,
+ subPlot=102);
+createPlot(
+ id=1,
+ subPlot=3,
+ y={"relHumOut_dis.phi", "relHumOut_eps.phi"},
+ range={0.0, 1000.0, 0.4, 1.1},
+ autoscale=false,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
+createPlot(
+ id=2,
+ position={1255, 58, 1140, 1286},
+ y={"hexDis.SHR", "hexWetNTU.SHR"},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
+createPlot(
+ id=2,
+ subPlot=2,
+ y={"hexWetNTU.dryFra"},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
+createPlot(
+ id=2,
+ subPlot=3,
+ y={"hexDis.UA_nominal", "hexWetNTU.UA_nominal", "hexWetNTU_TX.UA_nominal"},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
\ No newline at end of file
diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mos
new file mode 100644
index 00000000000..4a5ce5b8a41
--- /dev/null
+++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Validation/WetCoilEffectivenessNTUHeating.mos
@@ -0,0 +1,34 @@
+simulateModel("Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTUHeating",
+ stopTime=1000,
+ method="cvode",
+ tolerance=1e-6,
+ resultFile="WetCoilEffectivenessNTUHeating");
+createPlot(
+ id=1,
+ position={59, 59, 1186, 1286},
+ y={"hexDis.Q1_flow", "hexWetNTU_TX.Q1_flow", "hexDryNTU_T.Q1_flow"},
+ // range = {0, 1000, -9E4, -5E4},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
+createPlot(
+ id=1,
+ y={"hexDis.sta_b2.T", "hexWetNTU_TX.sta_b2.T", "hexDryNTU_T.sta_b2.T"},
+ // range={0.0, 1000.0, 20.0, 40.0},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true,
+ subPlot=102);
+createPlot(
+ id=2,
+ position={1255, 58, 1140, 1286},
+ y={"hexDis.UA_nominal", "hexWetNTU_TX.UA_nominal", "hexDryNTU_T.UA_nominal"},
+ autoscale=true,
+ autoerase=true,
+ autoreplot=true,
+ grid=true,
+ color=true);
diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilEffectivenessNTUMassFlow.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilEffectivenessNTUMassFlow.mos
new file mode 100644
index 00000000000..304bb5faf26
--- /dev/null
+++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilEffectivenessNTUMassFlow.mos
@@ -0,0 +1,7 @@
+compareVars :=
+ {
+ "hex.Q2_flow",
+ "hex.QLat2_flow",
+ "hex.port_a1.m_flow",
+ "hex.port_a2.m_flow"
+ };
diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTU.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTU.mos
new file mode 100644
index 00000000000..a91a14248cf
--- /dev/null
+++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTU.mos
@@ -0,0 +1,17 @@
+compareVars :=
+ {
+ "hexDis.Q1_flow",
+ "hexWetNTU.Q1_flow",
+ "hexWetNTU_TX.Q1_flow",
+ "hexDis.sta_b2.T",
+ "hexWetNTU.sta_b2.T",
+ "hexWetNTU_TX.sta_b2.T",
+ "relHumOut_dis.phi",
+ "relHumOut_eps.phi",
+ "hexDis.SHR",
+ "hexWetNTU.SHR",
+ "hexWetNTU.dryFra",
+ "hexDis.UA_nominal",
+ "hexWetNTU.UA_nominal",
+ "hexWetNTU_TX.UA_nominal"
+ };
diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTUHeating.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTUHeating.mos
new file mode 100644
index 00000000000..20ac91eee59
--- /dev/null
+++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Validation.WetCoilEffectivenessNTUHeating.mos
@@ -0,0 +1,12 @@
+compareVars :=
+ {
+ "hexDis.Q1_flow",
+ "hexWetNTU_TX.Q1_flow",
+ "hexDryNTU_T.Q1_flow",
+ "hexDis.sta_b2.T",
+ "hexWetNTU_TX.sta_b2.T",
+ "hexDryNTU_T.sta_b2.T",
+ "hexDis.UA_nominal",
+ "hexWetNTU_TX.UA_nominal",
+ "hexDryNTU_T.UA_nominal"
+ };
diff --git a/Buildings/Utilities/Psychrometrics/hSat_pTSat.mo b/Buildings/Utilities/Psychrometrics/hSat_pTSat.mo
new file mode 100644
index 00000000000..968e98a6b55
--- /dev/null
+++ b/Buildings/Utilities/Psychrometrics/hSat_pTSat.mo
@@ -0,0 +1,62 @@
+within Buildings.Utilities.Psychrometrics;
+model hSat_pTSat
+ "Calculate saturation enthalpy given a saturation (dry bulb) temperature"
+ extends Modelica.Blocks.Icons.Block;
+
+ Modelica.Blocks.Interfaces.RealInput p(
+ final quantity="Pressure",
+ final unit="Pa",
+ displayUnit="bar") = 101325
+ "Pressure of the fluid"
+ annotation (Placement(transformation(extent={{-120,30},{-100,50}}),
+ iconTransformation(extent={{-120,30},{-100,50}})));
+ Modelica.Blocks.Interfaces.RealInput TSat(
+ final quantity="ThermodynamicTemperature",
+ final unit="K",
+ min = 0.0,
+ start = 288.15,
+ nominal = 300,
+ displayUnit="degC")
+ "Saturation temperature of the fluid"
+ annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}),
+ iconTransformation(extent={{-120,-50},{-100,-30}})));
+
+ Modelica.Blocks.Interfaces.RealOutput hSat(
+ final quantity="SpecificEnergy",
+ final unit="J/kg")
+ "Dew point temperature of air"
+ annotation (Placement(transformation(extent={{100,-10},{120,10}})));
+
+protected
+ constant Integer watIdx = 1 "Index of water";
+ constant Integer othIdx = 2 "Index of other species";
+ constant Real phiSat(min=0, max=1) = 1 "Saturation relative humidity";
+ Modelica.SIunits.AbsolutePressure pSat
+ "Saturation pressure of water vapor in air at TSat";
+ Real XSat[2]
+ "Mass fractions of water and air in moist air at saturation";
+
+equation
+ pSat = Buildings.Utilities.Psychrometrics.Functions.saturationPressure(TSat);
+ XSat[watIdx] = Buildings.Utilities.Psychrometrics.Functions.X_pSatpphi(
+ pSat=pSat, p=p, phi=phiSat);
+ XSat[othIdx] = 1 - XSat[watIdx];
+ hSat = Buildings.Media.Air.specificEnthalpy_pTX(p=p, T=TSat, X=XSat);
+ annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(
+ coordinateSystem(preserveAspectRatio=false)),
+ Documentation(revisions="
+
+-
+March 17, 2017, by Michael O'Keefe:
+First implementation. See
+
+issue 622 for more information.
+
+
+", info="
+
+Block to compute the enthalpy of saturated
+air given the saturation temperature and fluid pressure.
+
+"));
+end hSat_pTSat;
diff --git a/Buildings/Utilities/Psychrometrics/package.order b/Buildings/Utilities/Psychrometrics/package.order
index c3517dd1877..5f720a29be2 100644
--- a/Buildings/Utilities/Psychrometrics/package.order
+++ b/Buildings/Utilities/Psychrometrics/package.order
@@ -11,6 +11,7 @@ ToDryAir
ToTotalAir
X_pTphi
X_pW
+hSat_pTSat
pW_TDewPoi
pW_X
Functions
diff --git a/Buildings/package.mo b/Buildings/package.mo
index ddf85960cbc..89d2c803a0c 100644
--- a/Buildings/package.mo
+++ b/Buildings/package.mo
@@ -237,6 +237,14 @@ The new media Buildings.Media.Antifreeze.PropyleneGlycolWater
allow
of propylene-glycol water mixtures.
+A new cooling coil model Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU
+has been added. This model is applicable for fully-dry, partially-wet, and fully-wet regimes.
+In contrast to Buildings.Fluid.HeatExchangers.WetCoilCounterFlow
and
+to Buildings.Fluid.HeatExchangers.WetCoilDiscretized
,
+this model uses the epsilon-NTU relationship rather than a spatial discretization of the coil.
+This leads to fewer state variables and generally to a faster simulation.
+
+
New simplified door models for bi-directional air exchange between thermal zones are
implemented in Buildings.Airflow.Multizone
.
@@ -392,6 +400,15 @@ to existing libraries:
Two way valve with the flow characteristic of a butterfly valve.
This is for IBPSA, issue 975. |
+Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU
+ |
+ Cooling coil model applicable for fully-dry, partially-wet, and fully-wet regimes.
+ In contrast to Buildings.Fluid.HeatExchangers.WetCoilCounterFlow and
+ to Buildings.Fluid.HeatExchangers.WetCoilDiscretized ,
+ this model uses the epsilon-NTU relationship rather than a spatial discretization of the coil.
+ This leads to fewer state variables and generally to a faster simulation.
+ This is for issue 622. |
+
@@ -757,8 +774,7 @@ have been improved in a
Buildings.Controls.OBC.CDL.Logical.Sources.SampleTrigger
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse
|
- Removed startTime parameter. Introduced shif"
- + "t parameter.
+ | Removed startTime parameter. Introduced shift parameter.
This is for
issue 2170
and issue 2282.
|