modelCoolingCoilHumidifyingHeating

Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialCoolingCoilHumidifyingHeating (Partial AHU model ).

Information

This model can represent a typical air handler with a cooling coil, a variable-speed fan, a humidifier and an electric reheater. The heating coil is not included in this model.

The water-side valve can be manipulated to control the outlet temperature on air side, as shown in Buildings.Applications.DataCenters.AHUs.Example.AirHandlingUnitControl.

It's usually undesired to control the outlet air temperature by simultenanously manipulating the water-valve and reheater, because energy waste could happen in this case. For example, under the part-load condition, the water valve might be in its maximum position with the reheater turning on to maintain the outlet air temperature. To avoid that water-valve and reheater control the outlet temperature at the same time, a buit-in reheater on/off controller is implemented. The detailed control logic about the reheater on/off control is shown in Buildings.Applications.DataCenters.ChillerCooled.Controls.Reheat.

The humidfier is an adiabatic spray air washer with a prescribed outlet water vapor mass fraction in kg/kg total air. During the humidification, the enthalpy remains constant. Details can be found in Buildings.Fluid.Humidifiers.SprayAirWasher_X. The humidifer can be turned off when the prescribed mass fraction is smaller than the current state at the outlet, for example, XSet=0.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PartialCoolingCoilHumidifyingHeating)true= true, use homotopy method
Buildings.Fluid.Movers.Data.GenericperFan (from PartialCoolingCoilHumidifyingHeating)Performance data for the fan
RealyValSwiSwitch point for valve signal
RealyValDeaBan0.1Deadband for valve signal
Modelica.Units.SI.TemperatureDifferencedTSwi0Switch point for temperature difference
Modelica.Units.SI.TemperatureDifferencedTDeaBan0.5Deadband for temperature difference
Modelica.Units.SI.TimetWai60Waiting time
Assumptions
BooleanallowFlowReversal1 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Nominal condition
Modelica.Units.SI.MassFlowRatem1_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem2_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem_flow_nominal (from ValveParameters)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpValve_nominal (from ValveParameters)Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint
Modelica.Units.SI.PressureDifferencedp1_nominal (from FourPortFlowResistanceParameters)Pressure difference
Modelica.Units.SI.PressureDifferencedp2_nominal (from FourPortFlowResistanceParameters)Pressure difference
Advanced
Medium1.MassFlowRatem1_flow_small (from PartialFourPortInterface)1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow
Medium2.MassFlowRatem2_flow_small (from PartialFourPortInterface)1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
Cooling coil
Modelica.Units.SI.ThermalConductanceUA_nominal (from AHUParameters)Thermal conductance at nominal flow for sensible heat, used to compute time constant
Realr_nominal (from AHUParameters)2/3Ratio between air-side and water-side convective heat transfer coefficient
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from AHUParameters)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Flow Coefficient
Buildings.Fluid.Types.CvTypesCvData (from ValveParameters)Buildings.Fluid.Types.CvTypes.OpPointSelection of flow coefficient
RealKv (from ValveParameters)Kv (metric) flow coefficient [m3/h/(bar)^(1/2)]
RealCv (from ValveParameters)Cv (US) flow coefficient [USG/min/(psi)^(1/2)]
Modelica.Units.SI.AreaAv (from ValveParameters)Av (metric) flow coefficient
Pressure-flow linearization
RealdeltaM (from ValveParameters)0.02Fraction of nominal flow rate where linearization starts, if y=1
Advanced › Nominal condition
Modelica.Units.SI.DensityrhoStd (from ValveParameters)Inlet density for which valve coefficients are defined
Flow resistance › Medium 1
BooleancomputeFlowResistance1 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp1 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn1 (from FourPortFlowResistanceParameters)2Flow exponent for side 1, n=1 for laminar, n=2 for turbulent
BooleanlinearizeFlowResistance1 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM1 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Flow resistance › Medium 2
BooleancomputeFlowResistance2 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp2 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn2 (from FourPortFlowResistanceParameters)2Flow exponent for side 2, n=1 for laminar, n=2 for turbulent
BooleanlinearizeFlowResistance2 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM2 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Initialization
Medium2.AbsolutePressurep_start (from PartialCoolingCoilHumidifyingHeating)Medium2.p_defaultStart value of pressure
Medium2.TemperatureT_start (from PartialCoolingCoilHumidifyingHeating)Medium2.T_defaultStart value of temperature
Medium2.MassFraction[Medium2.nX]X_start (from PartialCoolingCoilHumidifyingHeating)Medium2.X_defaultStart value of mass fractions m_i/m
Medium2.ExtraProperty[Medium2.nC]C_start (from PartialCoolingCoilHumidifyingHeating)fill(0, Medium2.nC)Start value of trace substances
Medium2.ExtraProperty[Medium2.nC]C_nominal (from PartialCoolingCoilHumidifyingHeating)fill(1E-2, Medium2.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Valve
Reall (from PartialCoolingCoilHumidifyingHeating)0.0001Valve leakage, l=Kv(y=0)/Kv(y=1)
RealR50Rangeability, R=50...100 typically
Realdelta00.01Range of significant deviation from equal percentage law
Dynamics › Valve
Booleanuse_strokeTime (from PartialCoolingCoilHumidifyingHeating)falseSet to true to continuously open and close valve on the water-side
Modelica.Units.SI.TimestrokeTime (from PartialCoolingCoilHumidifyingHeating)120Time needed to open or close valve
Modelica.Blocks.Types.InitinitValve (from PartialCoolingCoilHumidifyingHeating)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
RealyValve_start (from PartialCoolingCoilHumidifyingHeating)1Initial value of output
Fan
Buildings.Fluid.Types.InputTypeinputType (from PartialCoolingCoilHumidifyingHeating)Buildings.Fluid.Types.InputType.ContinuousControl input type
BooleanaddPowerToMedium (from PartialCoolingCoilHumidifyingHeating)trueSet to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations)
Dynamics › Fan
Modelica.Units.SI.TimetauFan (from PartialCoolingCoilHumidifyingHeating)1Time constant at nominal flow (if energyDynamics <> SteadyState)
Booleanuse_riseTime (from PartialCoolingCoilHumidifyingHeating)trueSet to true to continuously change motor speed
Modelica.Units.SI.TimeriseTime (from PartialCoolingCoilHumidifyingHeating)30Time needed to change motor speed between zero and full speed
Modelica.Blocks.Types.InitinitFan (from PartialCoolingCoilHumidifyingHeating)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
RealyFan_start (from PartialCoolingCoilHumidifyingHeating)0Initial value of speed
Dynamics › Electric heater
Modelica.Units.SI.TimetauEleHea10Time constant at nominal flow for electric heater (if energyDynamics <> SteadyState)
Electric heater
Modelica.Units.SI.EfficiencyetaHea1.0Efficiency of electrical heater
Modelica.Units.SI.HeatFlowRateQHeaMax_flowNominal heating capacity of eletric heater,positive
General › Humidifier
Modelica.Units.SI.MassFlowRatemWatMax_flowNominal humidification capacity for humidifier, positive for humidification
Humidifier
Modelica.Units.SI.TemperatureTHum293.15Temperature of water that is added to the fluid stream by the humidifier
Dynamics › Humidifier
Modelica.Units.SI.TimetauHum10Time constant at nominal flow for humidifier(if energyDynamics <> SteadyState)

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialFourPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialFourPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialFourPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialFourPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Blocks.Interfaces.RealInputuVal (from PartialCoolingCoilHumidifyingHeating)Actuator position (0: closed, 1: open) on water side
Modelica.Blocks.Interfaces.RealInputuFan (from PartialCoolingCoilHumidifyingHeating)Continuous input signal for the fan
Modelica.Blocks.Interfaces.RealOutputPFan (from PartialCoolingCoilHumidifyingHeating)Electrical power consumed by the fan
Modelica.Blocks.Interfaces.RealOutputyVal (from PartialCoolingCoilHumidifyingHeating)Actual valve position
Modelica.Blocks.Interfaces.IntegerInputstage (from PartialCoolingCoilHumidifyingHeating)Stage input signal for the pressure head
Modelica.Blocks.Interfaces.RealOutputPHeaPower consumed by electric heater
Modelica.Blocks.Interfaces.RealInputTSetSet point temperature of the fluid that leaves port_b
Modelica.Blocks.Interfaces.RealInputXSet_wSet point for water vapor mass fraction in kg/kg total air of the fluid that leaves port_b

Components

TypeNameDefaultDescription
Medium1.MassFlowRatem1_flow (from PartialFourPortInterface)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp1 (from PartialFourPortInterface)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium2.MassFlowRatem2_flow (from PartialFourPortInterface)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp2 (from PartialFourPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium1.ThermodynamicStatesta_a1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium1.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow))Medium properties in port_a1
Medium1.ThermodynamicStatesta_b1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium1.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow)Medium properties in port_b1
Medium2.ThermodynamicStatesta_a2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium2.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow))Medium properties in port_a2
Medium2.ThermodynamicStatesta_b2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium2.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow)Medium properties in port_b2
Fluid.HeatExchangers.WetCoilEffectivenessNTUcooCoi (from PartialCoolingCoilHumidifyingHeating)Cooling coil
Buildings.Fluid.Movers.BaseClasses.PartialFlowMachinefan (from PartialCoolingCoilHumidifyingHeating)
Buildings.Fluid.Actuators.BaseClasses.PartialTwoWayValveKvwatVal (from PartialCoolingCoilHumidifyingHeating)
Modelica.Blocks.Sources.RealExpressiondTDifference between inlet temperature and temperature setpoint of the reheater
Buildings.Fluid.Humidifiers.SprayAirWasher_XhumHumidifier
Buildings.Applications.DataCenters.ChillerCooled.Equipment.ElectricHeatereleHeaElectric heater
Buildings.Applications.DataCenters.ChillerCooled.Controls.ReheatheaConReheater on/off controller

Revisions

  • May 14, 2017 by Yangyang Fu:
    First implementation.