Package with examples of base class components for DX cooling coil model
Information
This package contains examples of base class components for DX cooling coil models.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Test model for ApparatusDewPoint
Information
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).
Parameters
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 |
Modelica definition
model ApparatusDewPoint
"Test model for ApparatusDewPoint"
extends Modelica.Icons.Example;
parameter Integer nSta=4
"Number of standard compressor speeds";
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for ApparatusDryPoint
Information
This example illustrates working of ApparatusDryPoint block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.ApparatusDryPoint.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
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 |
Modelica definition
model ApparatusDryPoint
"Test model for ApparatusDryPoint"
extends Modelica.Icons.Example;
parameter Integer nSta=4;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for Condensation block
Information
This example illustrates working of Condensation block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.Condensation.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model Condensation
"Test model for Condensation block"
package Medium =
Buildings.Media.Air;
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";
equation
connect(TDewPoi.y, mWat.TDewPoi);
connect(Q_flow.y, mWat.Q_flow);
connect(shr.y, mWat.SHR);
end Condensation;
Test model for CoolingCapacity
Information
This example illustrates working of cooling capacity function
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.CoolingCapacity.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Stage | sta | | Performance data |
Modelica definition
model CoolingCapacity
"Test model for CoolingCapacity"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(TConIn.y, cooCap.TConIn);
connect(m_flow.y, cooCap.m_flow);
connect(onOff.y, cooCap.stage);
connect(TWetBulIn.y, cooCap.TEvaIn);
end CoolingCapacity;
Test model for DXCooling
Information
This example illustrates working of DXCooling block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DXCooling.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
DXCoil | datCoi | | Coil data |
Modelica definition
model DXCooling
"Test model for DXCooling"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for DryCoil
Information
This example illustrates working of DryCoil block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryCoil.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
DXCoil | datCoi | | Coil data |
Modelica definition
model DryCoil
"Test model for DryCoil"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for DryWetSelector
Information
This example illustrates working of DryWetSelector block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.DryWetSelector.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
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);
equation
connect(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;
Test model for evaporation with zero flow and flow reversal
Information
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).
Parameters
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] |
Modelica definition
model EvaporationFlowReversal
"Test model for evaporation with zero flow and flow reversal"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for evaporation with pulse signal
Information
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).
Parameters
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] |
Modelica definition
model EvaporationPulse
"Test model for evaporation with pulse signal"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for InputPower
Information
This example illustrates working of InputPower block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.InputPower.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
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";
equation
connect(EIR.y, pwr.EIR);
connect(Q_flow.y, pwr.Q_flow);
connect(SHR.y, pwr.SHR);
end InputPower;
Test model for NominalCondition
Information
This example illustrates the calculation of inlet and outlet parameters at the nominal condition.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
Test model for SensibleHeatRatio
Information
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).
Modelica definition
model SensibleHeatRatio
"Test model for SensibleHeatRatio"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Test model for speed select
Information
This example illustrates working of SpeedSelect block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedSelect.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
DXCoil | datCoi | | Coil data |
Modelica definition
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";
equation
connect(sta.y, speSel.stage);
end SpeedSelect;
Test model for SpeedShift block
Information
This example illustrates working of SpeedShift block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.SpeedShift.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Integer | nSta | 4 | Number of standard compressor speeds |
DXCoil | datCoi | | Coil data |
Modelica definition
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;
equation
connect(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;
Test model for UACp
Information
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).
Parameters
Modelica definition
Test model for WetCoil
Information
This example illustrates working of WetCoil block
Buildings.Fluid.HeatExchangers.DXCoils.BaseClasses.WetCoil.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Modelica definition
model WetCoil
"Test model for WetCoil"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air;
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";
equation
connect(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;
Automatically generated Mon Jul 13 14:25:14 2015.