Buildings.Examples.DualFanDualDuct.ThermalZones

Package with models for the thermal zones

Information

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Examples.DualFanDualDuct.ThermalZones.SupplyBranch SupplyBranch Supply branch of a dual duct system

Buildings.Examples.DualFanDualDuct.ThermalZones.SupplyBranch Buildings.Examples.DualFanDualDuct.ThermalZones.SupplyBranch

Supply branch of a dual duct system

Buildings.Examples.DualFanDualDuct.ThermalZones.SupplyBranch

Parameters

TypeNameDefaultDescription
replaceable package MediumAModelica.Media.Interfaces.Pa...Medium model for air
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
MassFlowRatem_flow_nominal Mass flow rate cold air deck [kg/s]
MassFlowRatemAirHot_flow_nominal0.3*m_flow_nominalMass flow rate hot air deck [kg/s]
MassFlowRatemAirCol_flow_nominalm_flow_nominalMass flow rate cold air deck [kg/s]
VolumeVRoo Room volume [m3]

Connectors

TypeNameDescription
replaceable package MediumAMedium model for air
FluidPort_aport_aHotConnector for hot deck
FluidPort_aport_aColConnector for cold deck
FluidPort_aport_bFluid connector b (positive design flow direction is from port_a1 to port_b1)
ControlBuscontrolBus 
input RealInputTRooMeasured room temperature
output RealOutputp_relColPressure signal of cold deck
output RealOutputp_relHotPressure signal of hot deck
input BooleanInputyFanFan operation, true if fan is running

Modelica definition

model SupplyBranch "Supply branch of a dual duct system" replaceable package MediumA = Modelica.Media.Interfaces.PartialMedium "Medium model for air"; Modelica.Fluid.Interfaces.FluidPort_a port_aHot(redeclare package Medium = MediumA) "Connector for hot deck"; Modelica.Fluid.Interfaces.FluidPort_a port_aCol(redeclare package Medium = MediumA) "Connector for cold deck"; Modelica.Fluid.Interfaces.FluidPort_a port_b(redeclare package Medium = MediumA) "Fluid connector b (positive design flow direction is from port_a1 to port_b1)"; parameter Boolean from_dp=false "= true, use m_flow = f(dp) else dp = f(m_flow)"; parameter Boolean linearizeFlowResistance=false "= true, use linear relation between m_flow and dp for any flow rate"; parameter Modelica.SIunits.MassFlowRate m_flow_nominal "Mass flow rate cold air deck"; parameter Modelica.SIunits.MassFlowRate mAirHot_flow_nominal = 0.3*m_flow_nominal "Mass flow rate hot air deck"; parameter Modelica.SIunits.MassFlowRate mAirCol_flow_nominal = m_flow_nominal "Mass flow rate cold air deck"; parameter Modelica.SIunits.Volume VRoo "Room volume"; Controls.RoomMixingBox con(m_flow_min=VRoo*3*1.2/3600) "Room temperature controller"; VAVReheat.Controls.ControlBus controlBus; Buildings.Fluid.Actuators.Dampers.VAVBoxExponential vavHot( redeclare package Medium = MediumA, m_flow_nominal=mAirHot_flow_nominal, dp_nominal(displayUnit="Pa") = 40, from_dp=from_dp, linearized=linearizeFlowResistance, y_start=0) "VAV damper for hot deck"; Buildings.Fluid.Actuators.Dampers.VAVBoxExponential vavCol( redeclare package Medium = MediumA, m_flow_nominal=mAirCol_flow_nominal, dp_nominal(displayUnit="Pa") = 40, from_dp=from_dp, linearized=linearizeFlowResistance, y_start=0) "VAV damper for cold deck"; Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = MediumA) "Sensor for mass flow rate"; Modelica.Blocks.Math.Gain fraMasFlo(k=1/m_flow_nominal) "Fraction of mass flow rate, relative to nominal flow"; Modelica.Blocks.Math.Gain ACH(k=1/VRoo/1.2*3600) "Air change per hour"; Modelica.Blocks.Interfaces.RealInput TRoo "Measured room temperature"; Buildings.Fluid.FixedResistances.Junction mix( redeclare package Medium = MediumA, m_flow_nominal={mAirCol_flow_nominal,mAirHot_flow_nominal, mAirCol_flow_nominal + mAirHot_flow_nominal}, from_dp=from_dp, linearized=linearizeFlowResistance, dp_nominal=20*{0,0,0}, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Mixer for hot and cold air deck"; Buildings.Fluid.Sensors.RelativePressure senRelPreHot(redeclare package Medium = MediumA) "Relative pressure hot deck (compared to room pressure)"; Buildings.Fluid.Sensors.RelativePressure senRelPreCol(redeclare package Medium = MediumA) "Relative pressure cold deck (compared to room pressure)"; Modelica.Blocks.Interfaces.RealOutput p_relCol "Pressure signal of cold deck"; Modelica.Blocks.Interfaces.RealOutput p_relHot "Pressure signal of hot deck"; Buildings.Fluid.Sensors.TemperatureTwoPort TSup(redeclare package Medium = MediumA, m_flow_nominal=m_flow_nominal) "Supply air temperature"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput yFan "Fan operation, true if fan is running"; equation connect(fraMasFlo.u, senMasFlo.m_flow); connect(ACH.u, senMasFlo.m_flow); connect(con.TRoo, TRoo); connect(vavHot.port_a, port_aHot); connect(vavHot.port_b, mix.port_2); connect(mix.port_1, vavCol.port_b); connect(mix.port_3, senMasFlo.port_a); connect(senMasFlo.m_flow, con.mAir_flow); connect(con.yHot, vavHot.y); connect(con.yCol, vavCol.y); connect(senRelPreHot.port_a, port_aHot); connect(senRelPreCol.port_a, port_aCol); connect(vavCol.port_a, port_aCol); connect(senRelPreHot.port_b, mix.port_3); connect(senRelPreCol.port_b, mix.port_3); connect(senRelPreCol.p_rel, p_relCol); connect(senRelPreHot.p_rel, p_relHot); connect(con.TRooSetHea, controlBus.TRooSetHea); connect(con.TRooSetCoo, controlBus.TRooSetCoo); connect(senMasFlo.port_b, TSup.port_a); connect(TSup.port_b, port_b); connect(con.yFan, yFan); end SupplyBranch;