Buildings.Fluid.HeatExchangers.ThermalWheels.Latent.Examples
Collection of models that illustrate model use and test models
Information
This package contains validation models for the classes in Buildings.Fluid.HeatExchangers.ThermalWheels.Latent.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
| Name | Description |
|---|---|
| Space cooling system |
Buildings.Fluid.HeatExchangers.ThermalWheels.Latent.Examples.SpaceCooling
Space cooling system
Information
This block is identical to Buildings.Examples.Tutorial.SpaceCooling.System3, except that the heat recovery device is modelled with Buildings.Fluid.HeatExchangers.ThermalWheels.Latent.BypassDampers.
The major input signals for the heat recovery device are configured as follows:
-
The operating signal uRot changes from
falsetotrueat 6:00 (15552000+6*3600 seconds) and fromtruetofalseat 18:00 (15552000+18*3600 seconds). - The supply air flow rate mAir_flow changes from 0 to 0.646 at around 5:00 and from 0.646 to 0 at around 17:00.
-
The bypass damper positions are controlled to maintain the temperature of the air
leaving the thermal wheel,
senTemHXOut.T, at 298.15 K.
The expected output is:
-
senTemHXOut.Tis less or equal to 298.15 K.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package MediumA | Buildings.Media.Air | Medium for air | |
| replaceable package MediumW | Buildings.Media.Water | Medium for water | |
| Volume | V | 6*10*3 | Room volume [m3] |
| Generic | per | per(mSup_flow_nominal=mA_flo... | Performance record for the enthalpy wheel |
| Temperature | TASup_nominal | 291.15 | Nominal air temperature supplied to room [K] |
| DimensionlessRatio | wASup_nominal | 0.012 | Nominal air humidity ratio supplied to room [kg/kg] assuming 90% relative humidity [1] |
| Temperature | TRooSet | 297.15 | Nominal room air temperature [K] |
| Temperature | TMixSet | 298.15 | Nominal mixed air temperature [K] |
| Temperature | TOut_nominal | 303.15 | Design outlet air temperature [K] |
| Temperature | THeaRecLvg | TOut_nominal - per.epsSen_no... | Air temperature leaving the heat recovery [K] |
| DimensionlessRatio | wHeaRecLvg | 0.0135 | Air humidity ratio leaving the heat recovery [kg/kg] [1] |
| HeatFlowRate | QRooInt_flow | 1000 | Internal heat gains of the room [W] |
| HeatFlowRate | QRooC_flow_nominal | -QRooInt_flow - 10E3/30*(TOu... | Nominal cooling load of the room [W] |
| MassFlowRate | mA_flow_nominal | 1.3*QRooC_flow_nominal/1006/... | Nominal air mass flow rate, increased by factor 1.3 to allow for recovery after temperature setback [kg/s] |
| TemperatureDifference | dTFan | 2 | Estimated temperature raise across fan that needs to be made up by the cooling coil [K] |
| HeatFlowRate | QCoiC_flow_nominal | mA_flow_nominal*(TASup_nomin... | Cooling load of coil, taking into account outside air sensible and latent heat removal [W] |
| Temperature | TWSup_nominal | 285.15 | Water supply temperature [K] |
| Temperature | TWRet_nominal | 289.15 | Water return temperature [K] |
| MassFlowRate | mW_flow_nominal | -QCoiC_flow_nominal/(TWRet_n... | Nominal water mass flow rate [kg/s] |
Connectors
| Type | Name | Description |
|---|---|---|
| replaceable package MediumA | Medium for air | |
| replaceable package MediumW | Medium for water | |
| Bus | weaBus | Weather data bus |
Modelica definition
model SpaceCooling "Space cooling system"
extends Modelica.Icons.Example;
replaceable package MediumA = Buildings.Media.Air "Medium for air";
replaceable package MediumW = Buildings.Media.Water "Medium for water";
parameter Modelica.Units.SI.Volume V=6*10*3 "Room volume";
// Heat recovery effectiveness
parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Generic per(
mSup_flow_nominal=mA_flow_nominal,
mExh_flow_nominal=mA_flow_nominal,
dpSup_nominal=200,
have_varSpe=false)
"Performance record for the enthalpy wheel";
/////////////////////////////////////////////////////////
// Design air conditions
parameter Modelica.Units.SI.Temperature TASup_nominal=291.15
"Nominal air temperature supplied to room";
parameter Modelica.Units.SI.DimensionlessRatio wASup_nominal=0.012
"Nominal air humidity ratio supplied to room [kg/kg] assuming 90% relative humidity";
parameter Modelica.Units.SI.Temperature TRooSet=297.15
"Nominal room air temperature";
parameter Modelica.Units.SI.Temperature TMixSet=298.15
"Nominal mixed air temperature";
parameter Modelica.Units.SI.Temperature TOut_nominal=303.15
"Design outlet air temperature";
parameter Modelica.Units.SI.Temperature THeaRecLvg=
TOut_nominal - per.epsSen_nominal*(TOut_nominal - TRooSet)
"Air temperature leaving the heat recovery";
parameter Modelica.Units.SI.DimensionlessRatio wHeaRecLvg=0.0135
"Air humidity ratio leaving the heat recovery [kg/kg]";
/////////////////////////////////////////////////////////
// Cooling loads and air mass flow rates
parameter Modelica.Units.SI.HeatFlowRate QRooInt_flow=1000
"Internal heat gains of the room";
parameter Modelica.Units.SI.HeatFlowRate QRooC_flow_nominal=
-QRooInt_flow -10E3/30*(TOut_nominal - TRooSet)
"Nominal cooling load of the room";
parameter Modelica.Units.SI.MassFlowRate mA_flow_nominal=
1.3*QRooC_flow_nominal/1006/(TASup_nominal - TRooSet)
"Nominal air mass flow rate, increased by factor 1.3 to allow for recovery after temperature setback";
parameter Modelica.Units.SI.TemperatureDifference dTFan=2
"Estimated temperature raise across fan that needs to be made up by the cooling coil";
parameter Modelica.Units.SI.HeatFlowRate QCoiC_flow_nominal=mA_flow_nominal*(
TASup_nominal - THeaRecLvg - dTFan)*1006 + mA_flow_nominal*(wASup_nominal
- wHeaRecLvg)*2458.3e3
"Cooling load of coil, taking into account outside air sensible and latent heat removal";
/////////////////////////////////////////////////////////
// Water temperatures and mass flow rates
parameter Modelica.Units.SI.Temperature TWSup_nominal=285.15
"Water supply temperature";
parameter Modelica.Units.SI.Temperature TWRet_nominal=289.15
"Water return temperature";
parameter Modelica.Units.SI.MassFlowRate mW_flow_nominal=
-QCoiC_flow_nominal/(TWRet_nominal - TWSup_nominal)/4200
"Nominal water mass flow rate";
Buildings.Fluid.MixingVolumes.MixingVolume vol(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal,
V=V,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
mSenFac=3)
"Indoor room";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(
G=10000/30)
"Thermal conductance with the ambient";
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut
"Outside temperature";
Modelica.Thermal.HeatTransfer.Sources.FixedHeatFlow preHea(
Q_flow=QRooInt_flow)
"Prescribed heat flow";
Buildings.Fluid.Movers.FlowControlled_m_flow fan(
redeclare package Medium = MediumA,
per(etaHydMet=Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.NotProvided,
etaMotMet=Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.NotProvided),
nominalValuesDefineDefaultPressureCurve=true,
m_flow_nominal=mA_flow_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Supply air fan";
Buildings.Fluid.HeatExchangers.ThermalWheels.Latent.BypassDampers whe(
redeclare package Medium = MediumA,
per=per)
"Heat recovery with bypass damper";
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,
use_Q_flow_nominal=true,
Q_flow_nominal=QCoiC_flow_nominal,
T_a1_nominal=TWSup_nominal,
T_a2_nominal=THeaRecLvg,
w_a2_nominal=wHeaRecLvg,
show_T=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Cooling coil";
Buildings.Fluid.Sources.Outside out(
redeclare package Medium = MediumA,
nPorts=2)
"Outdoor";
Buildings.Fluid.Sources.MassFlowSource_T souWat(
nPorts=1,
redeclare package Medium = MediumW,
use_m_flow_in=true,
T=TWSup_nominal)
"Source for water flow rate";
Buildings.Fluid.Sources.Boundary_pT sinWat(
nPorts=1, redeclare package Medium = MediumW)
"Sink for water circuit";
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(
pAtmSou=Buildings.BoundaryConditions.Types.DataSource.Parameter,
TDryBul=TOut_nominal,
filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"),
TDryBulSou=Buildings.BoundaryConditions.Types.DataSource.File)
"Weather data reader";
Buildings.BoundaryConditions.WeatherData.Bus weaBus
"Weather data bus";
Buildings.Controls.OBC.CDL.Reals.Sources.Pulse mAir_flow(
amplitude=-mA_flow_nominal,
width=0.5,
period=87600,
shift=0.24*87600,
offset=mA_flow_nominal)
"Fan air flow rate";
Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Temperature sensor for heat recovery outlet on supply side";
Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Temperature sensor for supply air";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TRooSetPoi(
k=TRooSet)
"Room temperature set point";
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemRoo
"Room temperature sensor";
Buildings.Controls.OBC.CDL.Logical.Sources.Pulse opeSig(
width=0.5,
period=86400,
shift=0.25*86400)
"Operating signal";
Buildings.Controls.Continuous.LimPID conWhe(
u_s(final unit="K", displayUnit="degC"),
u_m(final unit="K", displayUnit="degC"),
k=0.1,
Ti=60)
"Heat recovery controller";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TMixSetPoi(
k=TMixSet)
"Mixed air temperature set point";
Buildings.Fluid.Sensors.TemperatureTwoPort senTemRetAir(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Temperature sensor for return air";
Buildings.Controls.Continuous.LimPID conRoo(
k=0.1,
Ti=60,
yMax=mW_flow_nominal,
reverseActing=false)
"Room controller";
Buildings.Fluid.Sensors.MassFractionTwoPort senMasFraHXIn(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Humidity sensor for heat recovery inlet on supply side";
Buildings.Fluid.Sensors.MassFractionTwoPort senMasFraHXOut(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Humidity sensor for heat recovery outlet on supply side";
equation
connect(theCon.port_b, vol.heatPort);
connect(preHea.port, vol.heatPort);
connect(fan.port_b, vol.ports[1]);
connect(souWat.ports[1], cooCoi.port_a1);
connect(cooCoi.port_b1, sinWat.ports[1]);
connect(weaDat.weaBus, out.weaBus);
connect(weaDat.weaBus, weaBus);
connect(weaBus.TDryBul, TOut.T);
connect(fan.m_flow_in, mAir_flow.y);
connect(senTemHXOut.port_b, cooCoi.port_a2);
connect(cooCoi.port_b2, senTemSupAir.port_a);
connect(senTemSupAir.port_b, fan.port_a);
connect(TOut.port, theCon.port_a);
connect(vol.heatPort, senTemRoo.port);
connect(whe.port_b2, out.ports[1]);
connect(opeSig.y, whe.uRot);
connect(TMixSetPoi.y, conWhe.u_s);
connect(senTemHXOut.T, conWhe.u_m);
connect(conWhe.y, whe.uBypDamPos);
connect(vol.ports[2], senTemRetAir.port_a);
connect(conRoo.u_m, senTemRoo.T);
connect(TRooSetPoi.y, conRoo.u_s);
connect(conRoo.y, souWat.m_flow_in);
connect(whe.port_a2, senTemRetAir.port_b);
connect(senMasFraHXIn.port_a, out.ports[2]);
connect(senMasFraHXIn.port_b, whe.port_a1);
connect(whe.port_b1, senMasFraHXOut.port_a);
connect(senMasFraHXOut.port_b, senTemHXOut.port_a);
end SpaceCooling;