modelAdsolair58

Menerga Adsolair type 58 air handling unit

Extends from IDEAS.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), IDEAS.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models).

Information

Validated model of Menerga type 58 air handling unit with a nominal air flow rate of 14200m3/h. This is not a generic model, but a detailed model of a single air handling unit.

Main equations

See references.

Assumption and limitations

Flow reversal is not supported. Dynamics are simplified. The chiller contains hard-coded performance data.

Typical use and important parameters

When using the model a temperature set point and the supply/return pressure set points need to be provided. The unit can either be configured to be always on, or an additional boolean input may be used to control the status of the unit. Parameter per allows setting the type-specific performance data of the unit. Additional pressure drop due to fouling of filters may be specified. Other parameters were calibrated in the validation.

Options

Parameters k1 and alpha were calibrated. An additional heat exchanger may be added by redeclaring hexSupOut. The controller model may be changed by redeclaring adsCon.

Dynamics

The evaporator, condensor and indirect evaporative heat exchanger contain dynamics. Furthermore some temperature sensors contain dynamics and the PI controllers contain a state for the integrator. All these states have a time constant in the order of 1 minute by default.

Validation

This model has been validated using measurement data. See the references for a detailed discussion.

References

For more information and the model validation see

Jorissen, F. and Boydens, W. and Helsen, L. Validated Air Handling Unit Model using Indirect Evaporative Cooling. Journal of Building Performance Simulation (2017).

Parameters

TypeNameDefaultDescription
IDEAS.Airflow.AHU.BaseClasses.Adsolair14200per
Booleanuse_onOffSignaltrueSet to true to switch device on/off using external signal
BooleanonOfftrueSet to true if device is on
Modelica.Units.SI.Pressuredp_fouling_top0Nominal pressure drop in top channel due to filter fouling
Modelica.Units.SI.Pressuredp_fouling_bot0Nominal pressure drop in bottom channel due to filter fouling
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from LumpedVolumeDeclarations)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicssubstanceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of independent mass fraction balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicstraceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of trace substance balance: dynamic (3 initialization options) or steady state
Advanced › Dynamics
Modelica.Fluid.Types.DynamicsmassDynamics (from LumpedVolumeDeclarations)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
Initialization
Medium.AbsolutePressurep_start (from LumpedVolumeDeclarations)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from LumpedVolumeDeclarations)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from LumpedVolumeDeclarations)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from LumpedVolumeDeclarations)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from LumpedVolumeDeclarations)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Dynamics
RealmSenFac (from LumpedVolumeDeclarations)1Factor for scaling the sensible thermal mass of the volume
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
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
BooleanallowFlowReversalfalseFlow reversal is not supported
Modelica.Units.SI.MassFlowRatem_flow_smallm1_flow_nominal/50Small mass flow rate for regularization of zero flow
Modelica.Units.SI.Timetau60Thermal time constant of evaporator, condensor and heat recovery unit at nominal flow rate
Realalpha0.5Pressure recovery factor for fixed pressure drop in bottom bypass channel
Realk10.45Flow coefficient for y=1, k1 = pressure drop divided by dynamic pressure
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed

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.BooleanInputon
Modelica.Blocks.Interfaces.RealInputTsetSetpoints of the valves
Modelica.Blocks.Interfaces.RealInputdpSetTop and bottom fan pressure set points
Modelica.Blocks.Interfaces.RealOutputP
Modelica.Blocks.Interfaces.RealOutputTFanSupOutTemperature measured behind supply fan

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
Modelica.Units.SI.EnergyEIEH.E + eva.U + con.U
RealBPFmin(1, max(0, IDEAS.Utilities.Math.Functions.spliceFunction(x = abs(IEH.TOutBot - eva.heatPort.T) - 0.2, pos = (eva.heatPort.T - com.Teva)*IDEAS.Utilities.Math.Functions.inverseXRegularized(x = IEH.TOutBot - com.Teva, delta = 0.1), neg = 1, deltax = 0.1)))Fraction of air that is bypassed in the evaporator
RealX_sat_evapIDEAS.Utilities.Psychrometrics.Functions.X_pSatpphi(pSat = IDEAS.Media.Air.saturationPressure(com.Teva), p = eva.ports[1].p, phi = 1)Water fraction at saturation in evaporator at refrigerant temperature
Realx_outBPF*IEH.port_b2.Xi_outflow[1] + (1 - BPF)*min(X_sat_evap, IEH.port_b2.Xi_outflow[1])Outlet water mass fraction based on BPF
Modelica.Units.SI.MassFlowRatem_condensIEH.port_a2.m_flow*(IEH.port_b2.Xi_outflow[1] - x_out)Water condensation mass flow rate in the evaporator.
IDEAS.Airflow.AHU.BaseClasses.AdsolairControlleradsCon
DummyExchangerhexSupOut
IDEAS.Airflow.AHU.BaseClasses.SimpleCompressorTablecom
Modelica.Blocks.Sources.BooleanExpressiononExpAHU control signal
Modelica.Blocks.Sources.RealExpressionTEvaExpEvaporator outlet temperature
IDEAS.Fluid.HeatExchangers.IndirectEvaporativeHexIEHIndirect evaporative heat exchanger
IDEAS.Fluid.MixingVolumes.MixingVolumeconSimple condensor model for active chiller
IDEAS.Fluid.Movers.FlowControlled_dpfanTopTop fan
IDEAS.Fluid.MixingVolumes.MixingVolumeMoistAirevaSimple evaporator model for active chiller
IDEAS.Fluid.Movers.FlowControlled_dpfanBotBottom fan
Modelica.Blocks.Math.SumsumTotal electrical power consumption
IDEAS.Fluid.Sensors.TemperatureTwoPortTSupInSupply inlet air temperature
Modelica.Blocks.Sources.RealExpressionm_condens_expReal expression for setting water condensation mass flow rate
Modelica.Thermal.HeatTransfer.Components.ThermalConductorconConConductor describing the temperature drop in the condensor
Modelica.Blocks.Sources.RealExpression[2]fan_flow_setFan flow set points
Modelica.Thermal.HeatTransfer.Sources.FixedTemperaturefixedTemperature
IDEAS.Fluid.FixedResistances.PressureDropresTopTop pressure drop component
IDEAS.Fluid.FixedResistances.PressureDropresBotBottom pressure drop component
TwoWayEqualPercentageAddvalBypassBottom
TwoWayEqualPercentageAddvalRecupBot
TwoWayEqualPercentageAddvalBypassTop
TwoWayEqualPercentageAddvalRecupTop
IDEAS.Fluid.Sensors.TemperatureTwoPortsenTemFanSupOutInlet temperature of the heater
Modelica.Blocks.Sources.RealExpressionPPumElectrical power consumption of circulation pump
Modelica.Blocks.Sources.BooleanConstantbooleanConstantOnly valRecupTop has conditional Kv value
Modelica.Blocks.Sources.RealExpressionPUnitRemaing electrical power consumption from unit

Contents

NameDescription
MediumAirAir medium model
DummyExchangerprotectedHeat exchanger that sets absolute pressure for unconnected ports
TwoWayEqualPercentageAddprotectedDamper with possibility for adding fixed pressure drop using boolean input

Revisions

  • October 30, 2024, by Lucas Verleyen and Jelger Jansen:
    Updates according to IBPSA.
    See #1383 (and IBPSA, #1926, IBPSA, #1704, Buildings, #3845, and Buildings, #2668).
  • April 26, 2022, by Filip Jorissen:
    Removed experiment annotation for #1254.
  • April 11, 2022, by Filip Jorissen:
    Added dummy heat exchanger implementation for avoiding singularity after MSL4 update.
  • January 26, 2018, by Filip Jorissen:
    Improved adsolair controller performance. See #751, #730, #729, #754.
  • April 27, 2017, by Filip Jorissen:
    Removed thermal resistors at pumps. These are no longer required since movers are regularised such that they dissipate no power at zero flow.
  • April 27, 2017, by Filip Jorissen:
    Made compressor model replaceable. See #719.
  • October 11, 2016, by Filip Jorissen:
    First implementation.