modelHumidifier_u

Ideal humidifier or dehumidifier with prescribed water mass flow rate addition or subtraction

Extends from AixLib.Fluid.Interfaces.TwoPortHeatMassExchanger (Partial model transporting one fluid stream with storing mass or energy).

Information

Model for an air humidifier or dehumidifier.

This model adds (or removes) moisture from the air stream. The amount of exchanged moisture is equal to

wat = u ṁwat,nom,

where u is the control input signal and wat,nom is equal to the parameter mWat_flow_nominal. The parameter mWat_flow_nominal can be positive or negative. If wat is positive, then moisture is added to the air stream, otherwise it is removed.

If the heat port heatPort is unconnected, then the enthalpy of the air that flows through the device remains unchanged, e.g., the humidification is adiabatic. To change the enthalpy of the air, add heat flow to the connector heatPort.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from TwoPortHeatMassExchanger)true= true, use homotopy method
Modelica.Units.SI.MassFlowRatemWat_flow_nominalWater mass flow rate at u=1, positive for humidification
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from TwoPortFlowResistanceParameters)Pressure difference
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Flow resistance
BooleancomputeFlowResistance (from TwoPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp (from TwoPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance (from TwoPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from TwoPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics › Nominal condition
Modelica.Units.SI.Timetau (from TwoPortHeatMassExchanger)30Time constant at nominal flow (if energyDynamics <> SteadyState)
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from TwoPortHeatMassExchanger)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization
Medium.AbsolutePressurep_start (from TwoPortHeatMassExchanger)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from TwoPortHeatMassExchanger)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from TwoPortHeatMassExchanger)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from TwoPortHeatMassExchanger)fill(0, Medium.nC)Start value of trace substances

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputuControl input
Modelica.Blocks.Interfaces.RealOutputmWat_flowWater added to the fluid
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPortHeat port for total heat exchange with the control volume

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
AixLib.Fluid.MixingVolumes.MixingVolumevol (from TwoPortHeatMassExchanger)
AixLib.Fluid.FixedResistances.PressureDroppreDro (from TwoPortHeatMassExchanger)Flow resistance

Revisions

  • February 9, 2023, by Michael Wetter:
    Removed access to parameter use_T_in which does not exist in this model.
    This is for #1697.
  • March 7, 2022, by Michael Wetter:
    Removed massDynamics.
    This is for #1542.
  • April 12, 2017, by Michael Wetter:
    Removed parameters use_T_in and T. This removes the optional specification of temperature through the parameter T or the input connector T_in. Exposed the heat port of the control volume to allow adding heat, for example, to use the model as a steam humidifier.
    This is for issue Buildings #704.
  • May 6, 2015, by Michael Wetter:
    Set prescribedHeatFlowRate=true. This is for issue #412.
  • May 29, 2014, by Michael Wetter:
    Removed undesirable annotation Evaluate=true.
  • February 11, 2014 by Michael Wetter:
    Corrected issue #197 which led to twice the amount of latent heat being added to the fluid stream.
  • October 14, 2013 by Michael Wetter:
    Constrained medium to be a subclass of Modelica.Media.Interfaces.PartialCondensingGases, as this base class declares the function enthalpyOfCondensingGas.
  • July 30, 2013 by Michael Wetter:
    Updated model to use new variable mWat_flow in the base class.
  • May 24, 2011, by Michael Wetter:
    Changed base class to allow using the model as a dynamic or a steady-state model.
  • April 14, 2010, by Michael Wetter:
    Converted temperature input to a conditional connector.
  • April 17, 2008, by Michael Wetter:
    First implementation.