Name | Description |
---|---|
ApparatusDewPoint | Test model for ApparatusDewPoint |
ApparatusDryPoint | Test model for ApparatusDryPoint |
Condensation | Test model for Condensation block |
CoolingCapacity | Test model for CoolingCapacity |
DryCoil | Test model for DryCoil |
DryWetSelector | Test model for DryWetSelector |
DXCooling | Test model for DXCooling |
EvaporationFlowReversal | Test model for evaporation with zero flow and flow reversal |
EvaporationPulse | Test model for evaporation with pulse signal |
InputPower | Test model for InputPower |
NominalCondition | Test model for NominalCondition |
SensibleHeatRatio | Test model for SensibleHeatRatio |
SpeedSelect | Test model for speed select |
SpeedShift | Test model for SpeedShift block |
UACp | Test model for UACp |
WetCoil | Test model for WetCoil |
PerformanceCurves | Package with sevral performance curves |
This example illustrates calculation of air properties at apparatus dew point: Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.ApparatusDewPoint.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
Integer | nSta | 4 | Number of standard compressor speeds |
Real | minSpeRat | 0.2 | Minimum speed ratio |
Real | speRatDeaBan | 0.05 | Deadband for minimum speed ratio |
DXCoil | datCoi | Coil data |
model ApparatusDewPoint "Test model for ApparatusDewPoint" extends Modelica.Icons.Example; parameter Integer nSta=4 "Number of standard compressor speeds"; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated; parameter Real minSpeRat(min=0,max=1) = 0.2 "Minimum speed ratio"; parameter Real speRatDeaBan= 0.05 "Deadband for minimum speed ratio";Modelica.Blocks.Sources.Constant p( k=101325) "Pressure"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.ApparatusDewPoint adp( redeclare package Medium = Medium, datCoi=datCoi, variableSpeedCoil=true) "Calculates air properties at apparatus dew point condition"; Modelica.Blocks.Sources.Ramp m_flow( duration=600, height=1.35, startTime=600) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp XEvaIn( duration=600, height=0.004, startTime=1800, offset=0.011) "Inlet air mass fraction"; Modelica.Blocks.Sources.Ramp Q_flow( duration=600, startTime=600, height=-20000) "Cooling rate"; Modelica.Blocks.Sources.TimeTable speRat( offset=0, startTime=0, table=[0.0,0.00; 600,0.25; 1800,0.5; 2700,0.75]) "Speed ratio "; parameter Data.Generic.DXCoil datCoi(nSta=4, sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}) "Coil data"; protected Modelica.Blocks.Logical.Hysteresis deaBan( uLow=minSpeRat - speRatDeaBan/2, uHigh=minSpeRat + speRatDeaBan/2) "Speed ratio deadband"; Modelica.Blocks.Math.BooleanToInteger onSwi( final integerTrue=1, final integerFalse=0) "On/off switch"; public Modelica.Blocks.Sources.Constant hEvaIn(k=Medium.specificEnthalpy( Medium.setState_pTX( p=101325, T=30 + 273.15, X={0.015}))) "Air enthalpy at inlet"; equationconnect(Q_flow.y, adp.Q_flow); connect(p.y, adp.p); connect(m_flow.y, adp.m_flow); connect(XEvaIn.y, adp.XEvaIn); connect(speRat.y, adp.speRat); connect(speRat.y, deaBan.u); connect(deaBan.y, onSwi.u); connect(onSwi.y, adp.stage); connect(hEvaIn.y, adp.hEvaIn); end ApparatusDewPoint;
This example illustrates working of ApparatusDryPoint block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.ApparatusDryPoint.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
Integer | nSta | 4 | |
Real | minSpeRat | 0.2 | Minimum speed ratio |
Real | speRatDeaBan | 0.05 | Deadband for minimum speed ratio |
DXCoil | datCoi | Coil data |
model ApparatusDryPoint "Test model for ApparatusDryPoint" extends Modelica.Icons.Example; parameter Integer nSta=4; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated; parameter Real minSpeRat(min=0,max=1) = 0.2 "Minimum speed ratio"; parameter Real speRatDeaBan= 0.05 "Deadband for minimum speed ratio";Modelica.Blocks.Sources.Constant p( k=101325) "Pressure"; Modelica.Blocks.Sources.Constant hEvaIn(k=Medium.specificEnthalpy( Medium.setState_pTX( p=101325, T=30 + 273.15, X={0.015}))) "Air enthalpy at inlet"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.ApparatusDryPoint appDryPt( redeclare package Medium = Medium, datCoi=datCoi, variableSpeedCoil=true) "Dry point condition"; Modelica.Blocks.Sources.Ramp m_flow( duration=600, height=1.35, startTime=900) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp Q_flow( duration=600, height=-20000, offset=-2, startTime=900) "Heat extracted from air"; Modelica.Blocks.Sources.TimeTable speRat( table=[0.0,0.0; 900,0.25; 1800,0.50; 2700,0.75], offset=0.25, startTime=900) "Speed ratio "; parameter Data.Generic.DXCoil datCoi( nSta=4, sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}) "Coil data"; protected Modelica.Blocks.Logical.Hysteresis deaBan( uLow=minSpeRat - speRatDeaBan/2, uHigh=minSpeRat + speRatDeaBan/2) "Speed ratio deadband"; Modelica.Blocks.Math.BooleanToInteger onSwi( final integerTrue=1, final integerFalse=0) "On/off switch"; public Modelica.Blocks.Sources.Ramp XEvaIn( duration=600, height=0.004, startTime=1800, offset=0.011) "Inlet air mass fraction"; equationconnect(p.y, appDryPt.p); connect(hEvaIn.y, appDryPt.hEvaIn); connect(m_flow.y, appDryPt.m_flow); connect(Q_flow.y, appDryPt.Q_flow); connect(speRat.y, appDryPt.speRat); connect(speRat.y,deaBan. u); connect(deaBan.y,onSwi. u); connect(onSwi.y, appDryPt.stage); connect(XEvaIn.y, appDryPt.XEvaIn); end ApparatusDryPoint;
This example illustrates working of Condensation block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Condensation.
Extends from Modelica.Icons.Example (Icon for runnable examples).model Condensation "Test model for Condensation block" package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated; extends Modelica.Icons.Example;Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Condensation mWat( redeclare package Medium = Medium) "Calculates rate of condensation"; Modelica.Blocks.Sources.Ramp Q_flow( height=-20000, startTime=600, offset=0, duration=2400) "Heat flow"; Modelica.Blocks.Sources.Ramp TDewPoi( each startTime=600, height=20, offset=5.4, each duration=1200) "Apparatus dew point temperature"; Modelica.Blocks.Sources.Ramp shr( startTime=1800, height=1, offset=0, duration=1200) "Sensible heat ratio"; equationconnect(TDewPoi.y, mWat.TDewPoi); connect(Q_flow.y, mWat.Q_flow); connect(shr.y, mWat.SHR); end Condensation;
This example illustrates working of cooling capacity function Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.CoolingCapacity.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
Stage | sta | Performance data |
model CoolingCapacity "Test model for CoolingCapacity" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.CoolingCapacity cooCap( sta={sta}, m_flow_small=0.0001*sta.nomVal.m_flow_nominal, nSta=1) "Cooling capacity calculation"; Modelica.Blocks.Sources.Ramp m_flow( duration=2400, startTime=600, height=sta.nomVal.m_flow_nominal, offset=0) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp TWetBulIn( duration=2400, startTime=600, height=10, offset=273.15 + 19.4) "Air wet bulb temperature entering the coil"; Modelica.Blocks.Sources.IntegerStep onOff(startTime=600) "Compressor on-off signal"; Modelica.Blocks.Sources.Ramp TConIn( duration=2400, startTime=600, height=5, offset=273.15 + 30) "Condenser inlet temperature (Outside drybulb temperature)"; parameter Data.Generic.BaseClasses.Stage sta( nomVal( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III(), spe=188.49555921539) "Performance data"; equationconnect(TConIn.y, cooCap.TConIn); connect(m_flow.y, cooCap.m_flow); connect(onOff.y, cooCap.stage); connect(TWetBulIn.y, cooCap.TEvaIn); end CoolingCapacity;
This example illustrates working of DryCoil block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryCoil.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
DXCoil | datCoi | Coil data |
model DryCoil "Test model for DryCoil" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Modelica.Blocks.Sources.Constant p( k=101325); Modelica.Blocks.Sources.Constant TConIn( k=273.15 + 35) "Condenser inlet air temperature"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryCoil dryCoi( redeclare package Medium = Medium, datCoi=datCoi, variableSpeedCoil=true) "Performs calculation for dry coil condition"; Modelica.Blocks.Sources.IntegerStep onOff( startTime=1200) "Compressor on-off signal"; Modelica.Blocks.Sources.Ramp m_flow( startTime=1200, duration=600, height=1.5) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp TEvaIn( duration=600, startTime=2400, height=-4, offset=273.15 + 29) "Dry bulb temperature of air entering the coil"; Modelica.Blocks.Sources.Ramp XEvaIn( duration=600, startTime=2400, height=-0.002, offset=0.006) "Inlet mass-fraction"; Modelica.Blocks.Sources.Ramp hEvaIn( duration=600, startTime=2400, height=-10000, offset=45000) "Specific enthalpy of air entering the coil"; Modelica.Blocks.Sources.TimeTable speRat(table=[0.0,0.0; 900,0.25; 1800,0.50; 2700,0.75]) "Speed ratio "; parameter Data.Generic.DXCoil datCoi(sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}, nSta= 4) "Coil data"; equationconnect(TConIn.y, dryCoi.TConIn); connect(p.y, dryCoi.p); connect(m_flow.y, dryCoi.m_flow); connect(TEvaIn.y, dryCoi.TEvaIn); connect(XEvaIn.y, dryCoi.XEvaIn); connect(hEvaIn.y, dryCoi.hEvaIn); connect(speRat.y, dryCoi.speRat); connect(onOff.y, dryCoi.stage); end DryCoil;
This example illustrates working of DryWetSelector block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryWetSelector.
Extends from Modelica.Icons.Example (Icon for runnable examples).model DryWetSelector "Test model for DryWetSelector" extends Modelica.Icons.Example;Modelica.Blocks.Sources.Ramp XADP( duration=20, startTime=20, height=-0.002, offset=0.006) "Mass fraction at ADP"; Modelica.Blocks.Sources.Ramp XEvaIn( startTime=20, height=0.002, offset=0.004, duration=20) "Inlet mass-fraction"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryWetSelector dryWet "Averages dry and wet coil conditions"; Modelica.Blocks.Sources.Constant TWet(k=283.15); Modelica.Blocks.Sources.Constant mWetWat_flow(k=0.01); Modelica.Blocks.Sources.Constant SHRWet(k=0.5); Modelica.Blocks.Sources.Constant QWet_flow(k=-3000); Modelica.Blocks.Sources.Constant EIRWet(k=0.3); Modelica.Blocks.Sources.Constant TDry(k=293.15); Modelica.Blocks.Sources.Constant QDry_flow(k=-2000); Modelica.Blocks.Sources.Constant EIRDry(k=0.2); equationconnect(XEvaIn.y, dryWet.XEvaIn); connect(XADP.y, dryWet.XADP); connect(mWetWat_flow.y, dryWet.mWetWat_flow); connect(TWet.y, dryWet.TADPWet); connect(SHRWet.y, dryWet.SHRWet); connect(QWet_flow.y, dryWet.QWet_flow); connect(EIRWet.y, dryWet.EIRWet); connect(TDry.y, dryWet.TADPDry); connect(QDry_flow.y, dryWet.QDry_flow); connect(EIRDry.y, dryWet.EIRDry); end DryWetSelector;
This example illustrates working of DXCooling block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DXCooling.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
DXCoil | datCoi | Coil data |
model DXCooling "Test model for DXCooling" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Modelica.Blocks.Sources.Constant p( k=101325) "pressure"; Modelica.Blocks.Sources.Constant TConIn( k=273.15 + 35); Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DXCooling dxCoo( redeclare package Medium = Medium, datCoi=datCoi, variableSpeedCoil=true); Modelica.Blocks.Sources.IntegerStep onOff( startTime=600) "Compressor on-off signal"; Modelica.Blocks.Sources.Ramp m_flow( duration=600, startTime=1200, height=1.05) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp TEvaIn( duration=600, startTime=2400, height=-5, offset=273.15 + 29) "Dry bulb temperature of air entering the coil"; Modelica.Blocks.Sources.Ramp XEvaIn( duration=600, startTime=2400, height=-0.002, offset=0.012) "Inlet mass-fraction"; Modelica.Blocks.Sources.Ramp hEvaIn( duration=600, startTime=2400, offset=60000, height=-10000) "Specific enthalpy of air entering the coil"; Modelica.Blocks.Sources.TimeTable speRat(table=[0.0,0.0; 900,0.25; 1800,0.50; 2700,0.75]) "Speed ratio "; parameter Data.Generic.DXCoil datCoi(sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}, nSta= 4) "Coil data"; equationconnect(TConIn.y, dxCoo.TConIn); connect(p.y, dxCoo.p); connect(m_flow.y, dxCoo.m_flow); connect(TEvaIn.y, dxCoo.TEvaIn); connect(XEvaIn.y, dxCoo.XEvaIn); connect(hEvaIn.y, dxCoo.hEvaIn); connect(speRat.y, dxCoo.speRat); connect(onOff.y, dxCoo.stage); end DXCooling;
This example illustrates the evaporation of water vapor that accumulated on the coil. Input to the model is an air mass flow rate that is first positive, then ramps down to a negative value, and eventually ramps up to zero where it remains for a while.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
NominalValues | nomVal | Nominal values for DX coil | |
MassFraction | XEvaIn_nominal | Buildings.Utilities.Psychrom... | Mass fraction at nominal inlet conditions [1] |
MassFraction | XEvaOut_nominal | XEvaIn_nominal + (1 - nomVal... | Nominal air outlet humidity [1] |
model EvaporationFlowReversal "Test model for evaporation with zero flow and flow reversal" extends Modelica.Icons.Example; package Medium =Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;parameter Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues nomVal( Q_flow_nominal=-5000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=5000/1006/10) "Nominal values for DX coil"; parameter Modelica.SIunits.MassFraction XEvaIn_nominal= Buildings.Utilities.Psychrometrics.Functions.X_pSatpphi( pSat=Medium.saturationPressure(nomVal.TEvaIn_nominal), p=nomVal.p_nominal, phi=nomVal.phiIn_nominal) "Mass fraction at nominal inlet conditions"; parameter Modelica.SIunits.MassFraction XEvaOut_nominal = XEvaIn_nominal + (1-nomVal.SHR_nominal) * nomVal.Q_flow_nominal/nomVal.m_flow_nominal/Medium.enthalpyOfVaporization(293.15) "Nominal air outlet humidity";Evaporation eva(redeclare package Medium = Medium, nomVal=nomVal, m(start=0.55, fixed=true)) "Evaporation model"; Modelica.Blocks.Sources.BooleanConstant offSignal(k=false); Modelica.Blocks.Sources.Constant TWat(k=293.15); Modelica.Blocks.Sources.TimeTable mAir_flow(table=[0,1; 300,1; 900,-1; 1200,-1; 1500,0; 1800,0]) "Air flow rate"; Modelica.Blocks.Sources.Constant TEva(k=nomVal.TEvaIn_nominal) "Inlet Temperature"; Modelica.Blocks.Continuous.Integrator int "Mass of water that evaporates into air stream"; Modelica.Blocks.Sources.Constant mWat_flow(k=0) "Water flow rate added into the medium from the coil model (without reevaporation flow rate)"; Modelica.Blocks.Math.Gain gain(k=nomVal.m_flow_nominal); Modelica.Blocks.Sources.Constant XEvaIn(k=XEvaIn_nominal) "Inlet water vapor mass fraction"; equationconnect(offSignal.y, eva.on); connect(eva.TWat, TWat.y); connect(mWat_flow.y, eva.mWat_flow); connect(mAir_flow.y, gain.u); connect(gain.y, eva.mAir_flow); connect(eva.mTotWat_flow, int.u); connect(XEvaIn.y, eva.XEvaOut); connect(TEva.y, eva.TEvaOut); end EvaporationFlowReversal;
This example illustrates the evaporation of water vapor that accumulated on the coil. Input to the model is a pulse signal that switches the coil on and off. The two instances have a different frequency of the on and off signal to illustrate that the reevaporation of mass is larger if the coil short-cycles.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
NominalValues | nomVal | Nominal values for DX coil | |
MassFraction | XEvaIn_nominal | Buildings.Utilities.Psychrom... | Mass fraction at nominal inlet conditions [1] |
MassFraction | XEvaOut_nominal | XEvaIn_nominal + (1 - nomVal... | Nominal air outlet humidity [1] |
model EvaporationPulse "Test model for evaporation with pulse signal" extends Modelica.Icons.Example; package Medium =Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;parameter Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues nomVal( Q_flow_nominal=-5000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=5000/1006/10) "Nominal values for DX coil"; parameter Modelica.SIunits.MassFraction XEvaIn_nominal= Buildings.Utilities.Psychrometrics.Functions.X_pSatpphi( pSat=Medium.saturationPressure(nomVal.TEvaIn_nominal), p=nomVal.p_nominal, phi=nomVal.phiIn_nominal) "Mass fraction at nominal inlet conditions"; parameter Modelica.SIunits.MassFraction XEvaOut_nominal = XEvaIn_nominal + (1-nomVal.SHR_nominal) * nomVal.Q_flow_nominal/nomVal.m_flow_nominal/Medium.enthalpyOfVaporization(293.15) "Nominal air outlet humidity";Modelica.Blocks.Sources.Pulse pulSho(period=30*60) "Control signal for short-cycling coil"; Evaporation evaSho(redeclare package Medium = Medium, nomVal=nomVal) "Evaporation model"; Modelica.Blocks.Math.RealToBoolean realToBoolean; Modelica.Blocks.Sources.Constant TWat(k=293.15); Modelica.Blocks.Sources.Constant mAir_flow(k=nomVal.m_flow_nominal) "Air flow rate"; Modelica.Blocks.Sources.Constant TIn(k=nomVal.TEvaIn_nominal) "Inlet temperature"; Modelica.Blocks.Continuous.Integrator intSho "Mass of water that evaporates into air stream"; Evaporation evaNor(redeclare package Medium = Medium, nomVal=nomVal) "Evaporation model"; Modelica.Blocks.Continuous.Integrator intNor "Mass of water that evaporates into air stream"; Modelica.Blocks.Sources.Pulse pulNor(period=3600) "Control signal for normal-cycling coil"; Modelica.Blocks.Math.RealToBoolean realToBoolean1; Modelica.Blocks.Math.Gain mWat_flow(k=nomVal.Q_flow_nominal*(1 - nomVal.SHR_nominal) /Medium.enthalpyOfVaporization(293.15)) "Water mass flow rate from air to coil surface"; Modelica.Blocks.Math.Gain mWat_flow1(k=nomVal.Q_flow_nominal*(1 - nomVal.SHR_nominal) /Medium.enthalpyOfVaporization(293.15)) "Water mass flow rate from air to coil surface"; Modelica.Blocks.Sources.Constant XEvaIn(k=XEvaIn_nominal) "Inlet water vapor mass fraction"; equationconnect(pulSho.y, realToBoolean.u); connect(realToBoolean.y, evaSho.on); connect(evaSho.TWat, TWat.y); connect(evaSho.mAir_flow, mAir_flow.y); connect(evaNor.TWat, TWat.y); connect(evaNor.mAir_flow, mAir_flow.y); connect(pulNor.y, realToBoolean1.u); connect(realToBoolean1.y, evaNor.on); connect(pulNor.y, mWat_flow1.u); connect(mWat_flow1.y, evaNor.mWat_flow); connect(pulSho.y, mWat_flow.u); connect(mWat_flow.y, evaSho.mWat_flow); connect(XEvaIn.y, evaSho.XEvaOut); connect(XEvaIn.y, evaNor.XEvaOut); connect(evaNor.mTotWat_flow, intNor.u); connect(evaSho.mTotWat_flow, intSho.u); connect(TIn.y, evaSho.TEvaOut); connect(TIn.y, evaNor.TEvaOut); end EvaporationPulse;
This example illustrates working of InputPower block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.InputPower.
Extends from Modelica.Icons.Example (Icon for runnable examples).model InputPower "Test model for InputPower" extends Modelica.Icons.Example;Modelica.Blocks.Sources.Ramp SHR( height=0.5, duration=60, offset=0.5, startTime=0) "Sensible heat ratio"; Modelica.Blocks.Sources.Ramp EIR( height=-0.083, duration=60, offset=0.333, startTime=0) "Energy input ratio"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.InputPower pwr "Calculates electrical power consumed by the unit"; Modelica.Blocks.Sources.Ramp Q_flow( height=-20000, duration=60, startTime=0) "Cooling rate"; equationconnect(EIR.y, pwr.EIR); connect(Q_flow.y, pwr.Q_flow); connect(SHR.y, pwr.SHR); end InputPower;
This example illustrates the calculation of inlet and outlet parameters at the nominal condition.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
NominalCondition | nomCon | Calculates nominal values | |
NominalValues | nomVal | Nominal values |
model NominalCondition "Test model for NominalCondition" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;parameter Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.NominalCondition nomCon(redeclare package Medium = Medium, per=nomVal) "Calculates nominal values"; parameter Data.Generic.BaseClasses.NominalValues nomVal( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5) "Nominal values"; end NominalCondition;
This example illustrates calculation of sensible heat ratio in block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SensibleHeatRatio.
Extends from Modelica.Icons.Example (Icon for runnable examples).model SensibleHeatRatio "Test model for SensibleHeatRatio" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Modelica.Blocks.Sources.Constant p( k=101325) "Pressure"; Modelica.Blocks.Sources.BooleanStep onOff( startTime=600) "Compressor on-off signal"; Modelica.Blocks.Sources.Ramp hEvaIn( duration=600, startTime=2400, offset=60000, height=-10000) "Specific enthalpy of air entering the coil"; Modelica.Blocks.Sources.Ramp TEvaIn( duration=600, startTime=2400, height=-5, offset=273.15 + 29) "Inlet air temperature"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SensibleHeatRatio shr( redeclare package Medium = Medium); Modelica.Blocks.Sources.Constant XADP(k=0.01) "Mass fraction"; Modelica.Blocks.Sources.Constant hADP(k=35000) "Specific enthalpy"; equationconnect(onOff.y, shr.on); connect(hEvaIn.y, shr.hEvaIn); connect(TEvaIn.y, shr.TEvaIn); connect(p.y, shr.p); connect(XADP.y, shr.XADP); connect(hADP.y, shr.hADP); end SensibleHeatRatio;
This example illustrates working of SpeedSelect block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedSelect.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
DXCoil | datCoi | Coil data |
model SpeedSelect "Test model for speed select" extends Modelica.Icons.Example;Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedSelect speSel( nSta=datCoi.nSta, speSet=datCoi.sta.spe) "Normalizes the input speed"; parameter Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.DXCoil datCoi(nSta=4, sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}) "Coil data"; Modelica.Blocks.Sources.IntegerTable sta(table=[0,0; 10,1; 20,2; 30,3; 40,4; 50,0]) "Stage of compressor"; equationconnect(sta.y, speSel.stage); end SpeedSelect;
This example illustrates working of SpeedShift block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedShift.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
Integer | nSta | 4 | Number of standard compressor speeds |
DXCoil | datCoi | Coil data |
model SpeedShift "Test model for SpeedShift block" extends Modelica.Icons.Example; parameter Integer nSta=4 "Number of standard compressor speeds";Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedShift speShi(nSta=nSta, speSet= datCoi.sta.spe, variableSpeedCoil=true); Modelica.Blocks.Sources.Constant u[nSta](k={10,20,30,40}) "Inputs"; Modelica.Blocks.Sources.TimeTable speRat(table=[0.0,0.25; 900,0.50; 1800,0.50; 2700,0.75; 3600,0.75]) "Speed ratio "; parameter Data.Generic.DXCoil datCoi(nSta=4, sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}) "Coil data"; Modelica.Blocks.Logical.GreaterThreshold greaterThreshold(threshold=0.1); Modelica.Blocks.Math.BooleanToInteger booleanToInteger; equationconnect(u.y, speShi.u); connect(speRat.y, speShi.speRat); connect(speRat.y, greaterThreshold.u); connect(greaterThreshold.y, booleanToInteger.u); connect(booleanToInteger.y, speShi.stage); end SpeedShift;
This example illustrates calculation of UA/Cp factor of coil (working of Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.UACp).
Extends from Modelica.Icons.Example (Icon for runnable examples).
Type | Name | Default | Description |
---|---|---|---|
NominalValues | nomVal | Nominal values |
model UACp "Test model for UACp" extends Modelica.Icons.Example; package Medium =Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.UACp uacp( per=nomVal, redeclare package Medium = Medium, homotopyInitialization=true) "Calculates UA/Cp value for the coil"; parameter Data.Generic.BaseClasses.NominalValues nomVal( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5) "Nominal values"; end UACp;
This example illustrates working of WetCoil block Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.WetCoil.
Extends from Modelica.Icons.Example (Icon for runnable examples).model WetCoil "Test model for WetCoil" extends Modelica.Icons.Example; package Medium = Buildings.Media.GasesConstantDensity.MoistAirUnsaturated;Modelica.Blocks.Sources.Constant p( k=101325) "Pressure"; Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.WetCoil wetCoi( redeclare package Medium = Medium, datCoi=datCoi, variableSpeedCoil=true) "Performs calculation for wet coil condition"; Modelica.Blocks.Sources.Constant TConIn( k=273.15 + 35) "Condenser inlet air temperature"; Modelica.Blocks.Sources.IntegerStep onOff( startTime=600) "Compressor on-off signal"; Modelica.Blocks.Sources.Ramp m_flow( duration=600, startTime=1200, height=1.05) "Mass flow rate of air"; Modelica.Blocks.Sources.Ramp XEvaIn( duration=600, startTime=2400, height=-0.002, offset=0.012) "Inlet mass-fraction"; Modelica.Blocks.Sources.Ramp hEvaIn( duration=600, startTime=2400, offset=60000, height=-10000) "Specific enthalpy of air entering the coil"; Modelica.Blocks.Sources.Ramp TEvaIn( duration=600, startTime=2400, height=-5, offset=273.15 + 29) "Inlet air temperature"; Modelica.Blocks.Sources.TimeTable speRat(table=[0.0,0.0; 900,0.25; 1800,0.50; 2700,0.75]) "Speed ratio "; Data.Generic.DXCoil datCoi(nSta=4, sta={ Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=900/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-12000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=0.9), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1200/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-18000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.2), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_I()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=1800/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-21000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.5), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_II()), Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.Stage( spe=2400/60, nomVal= Buildings.Fluid.HeatExchangers.DXCoils.Data.Generic.BaseClasses.NominalValues( Q_flow_nominal=-30000, COP_nominal=3, SHR_nominal=0.8, m_flow_nominal=1.8), perCur= Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Examples.PerformanceCurves.Curve_III())}) "Coil data"; equationconnect(p.y, wetCoi.p); connect(TConIn.y, wetCoi.TConIn); connect(m_flow.y, wetCoi.m_flow); connect(XEvaIn.y, wetCoi.XEvaIn); connect(hEvaIn.y, wetCoi.hEvaIn); connect(TEvaIn.y, wetCoi.TEvaIn); connect(speRat.y, wetCoi.speRat); connect(onOff.y, wetCoi.stage); end WetCoil;