Name | Description |
---|---|
ConstantEffectiveness | Heat and moisture exchanger with constant effectiveness |
Examples | Collection of models that illustrate model use and test models |
HumidifierPrescribed | Ideal electric heater or cooler, no losses, no dynamics |
Model for a heat and moisture exchanger with constant effectiveness.
This model transfers heat and moisture in the amount of
Q = epsS * Q_max, m = epsL * mWat_max,where epsS and epsL are constant effectiveness for the sensible and latent heat transfer, Q_max is the maximum heat that can be transferred and mWat_max is the maximum moisture that can be transferred.
For a sensible heat exchanger, use Buildings.HeatExchangers.ConstantEffectiveness instead of this model.
This model can only be used with medium models that define the integer constant Water which needs to be equal to the index of the water mass fraction in the species vector.
Type | Name | Default | Description |
---|---|---|---|
Real | epsS | 0.8 | Sensible heat exchanger effectiveness |
Real | epsL | 0.8 | Latent heat exchanger effectiveness |
Fluid 1 | |||
replaceable package Medium_1 | PartialMedium | Fluid 1 | |
Fluid 2 | |||
replaceable package Medium_2 | PartialMedium | Fluid 2 | |
Initialization | |||
MassFlowRate | m_flow_1 | Mass flow rate from port_a1 to port_b1 (m_flow_1 > 0 is design flow direction) [kg/s] | |
MassFlowRate | m_flow_2 | Mass flow rate from port_a2 to port_b2 (m_flow_2 > 0 is design flow direction) [kg/s] | |
Pressure | dp_1 | Pressure difference between port_a1 and port_b1 [Pa] | |
Pressure | dp_2 | Pressure difference between port_a2 and port_b2 [Pa] | |
Advanced | |||
Temp | flowDirection_1 | Modelica_Fluid.Types.FlowDir... | Unidirectional (port_a -> port_b) or bidirectional flow component |
Temp | flowDirection_2 | Modelica_Fluid.Types.FlowDir... | Unidirectional (port_a -> port_b) or bidirectional flow component |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a1 | Fluid connector a for medium 1 (positive design flow direction is from port_a1 to port_b1) |
FluidPort_b | port_b1 | Fluid connector b for medium 1 (positive design flow direction is from port_a to port_b) |
FluidPort_a | port_a2 | Fluid connector a for medium 2 (positive design flow direction is from port_a2 to port_b2) |
FluidPort_b | port_b2 | Fluid connector b for medium 2 (positive design flow direction is from port_a to port_b) |
model ConstantEffectiveness "Heat and moisture exchanger with constant effectiveness" extends Fluids.Interfaces.PartialStaticFourPortHeatMassTransfer; extends Buildings.BaseClasses.BaseIcon; parameter Real epsS(min=0, max=1) = 0.8 "Sensible heat exchanger effectiveness"; parameter Real epsL(min=0, max=1) = 0.8 "Latent heat exchanger effectiveness"; Modelica.SIunits.Temperature T_in1 "Inlet temperature of medium 1"; Modelica.SIunits.Temperature T_in2 "Inlet temperature of medium 2"; Medium_1.MassFraction XWat_in1 "Inlet water mass fraction of medium 1"; Medium_2.MassFraction XWat_in2 "Inlet water mass fraction of medium 2"; Modelica.SIunits.ThermalConductance C_flow_1 "Heat capacity flow rate medium 1"; Modelica.SIunits.ThermalConductance C_flow_2 "Heat capacity flow rate medium 2"; Modelica.SIunits.ThermalConductance CMin_flow(min=0) "Minimum heat capacity flow rate"; Modelica.SIunits.HeatFlowRate QMax_flow "Maximum heat flow rate"; Modelica.SIunits.MassFlowRate mWat_flow "Water flow rate from medium 2 to medium 1"; Modelica.SIunits.MassFlowRate mMax_flow "Maximum water flow rate from medium 2 to medium 1"; equation // definitions for effectiveness model if m_flow_1 >= 0 then T_in1 = medium_a1.T; XWat_in1 = medium_a1.Xi[Medium_1.Water]; else T_in1 = medium_b1.T; XWat_in1 = medium_b1.Xi[Medium_1.Water]; end if; if m_flow_2 >= 0 then T_in2 = medium_a2.T; XWat_in2 = medium_a2.Xi[Medium_2.Water]; else T_in2 = medium_b2.T; XWat_in2 = medium_b2.Xi[Medium_2.Water]; end if; C_flow_1 = abs(m_flow_1) * Medium_1.specificHeatCapacityCp(Medium_1.setState_pTX(medium_a1.p, medium_a1.T, medium_a1.X)); C_flow_2 = abs(m_flow_2) * Medium_2.specificHeatCapacityCp(Medium_2.setState_pTX(medium_a2.p, medium_a2.T, medium_a2.X)); CMin_flow = min( C_flow_1, C_flow_2); QMax_flow = CMin_flow * (T_in2 - T_in1); // transferred heat Q_flow_1 = epsS * QMax_flow; 0 = Q_flow_1 + Q_flow_2; // mass exchange mMax_flow = min(abs(m_flow_1), abs(m_flow_2)) * (XWat_in2 - XWat_in1); mWat_flow = epsL * mMax_flow; for i in 1:Medium_1.nXi loop mXi_flow_1[i] = if ( i == Medium_1.Water) then mWat_flow else 0; end for; for i in 1:Medium_2.nXi loop mXi_flow_2[i] = if ( i == Medium_2.Water) then -mWat_flow else 0; end for; // no pressure drop dp_1 = 0; dp_2 = 0; end ConstantEffectiveness;
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 m_flow = u m0_flow. The input signal u and the nominal moisture flow rate added to the air stream m0_flow can be positive or negative. If the product u * m0_flow are positive, then moisture is added to the air stream, otherwise it is removed.
If the connector T_in is left unconnected, the value set by the parameter T is used for temperature of the water that is added to the air stream.
Note that if the mass flow rate tends to zero, the moisture difference over this component tends to infinity for non-zero m_flow, so add proper control when using this component.
This model can only be used with medium models that define the integer constant Water which needs to be equal to the index of the water mass fraction in the species vector.
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
MassFlowRate | m0_flow | Water mass flow rate at u=1, positive for humidification [kg/s] | |
Temperature | T | 293.15 | Temperature of water that is added to the fluid stream (used only if T_in is unconnected) [K] |
Initialization | |||
MassFlowRate | m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) [kg/s] | |
Pressure | dp | Pressure difference between port_a and port_b [Pa] | |
Advanced | |||
Temp | flowDirection | Modelica_Fluid.Types.FlowDir... | Unidirectional (port_a -> port_b) or bidirectional flow component |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | T_in | Temperature of water added to the fluid stream |
input RealInput | u |
model HumidifierPrescribed "Ideal electric heater or cooler, no losses, no dynamics" extends Fluids.Interfaces.PartialStaticTwoPortHeatMassTransfer; extends Buildings.BaseClasses.BaseIcon; parameter Modelica.SIunits.MassFlowRate m0_flow "Water mass flow rate at u=1, positive for humidification"; parameter Modelica.SIunits.Temperature T = 293.15 "Temperature of water that is added to the fluid stream (used only if T_in is unconnected)"; Modelica.Blocks.Interfaces.RealInput T_in( redeclare type SignalType = Modelica.SIunits.Temperature) "Temperature of water added to the fluid stream"; Modelica.Blocks.Interfaces.RealInput u; protected constant Modelica.SIunits.MassFraction[Medium.nXi] XiWat = {1} "Mass fraction of water"; Modelica.SIunits.MassFlowRate mWat_flow "Water flow rate"; equation if cardinality(T_in)==0 then T_in = T; end if; dp = 0; mWat_flow = u * m0_flow; Q_flow = Medium.enthalpyOfLiquid(T_in) * mWat_flow; for i in 1:Medium.nXi loop mXi_flow[i] = if ( i == Medium.Water) then mWat_flow else 0; end for; end HumidifierPrescribed;