Collection of models that validate the heat pump models
Information
This package contains models that validate the heat pump models.
The examples plot various outputs, which have been verified against
analytical solutions. These model outputs are stored as reference data to
allow continuous validation whenever models in the library change.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
Carnot_TCon_LimitedCapacity
|
Test model for Carnot_TCon with limited heating capacity |
Carnot_TCon_LowTemperature
|
Test model for Carnot_TCon with low condenser leaving water temperature |
Carnot_TCon_etaPL
|
Test model for the part load efficiency curve with condenser leaving temperature as input signal |
Carnot_TCon_reverseFlow
|
Test model for heat pump based on Carnot efficiency and condenser outlet temperature control signal |
Carnot_y_etaCar
|
Test model for heat pump based on Carnot efficiency with etaCar as parameter |
Carnot_y_etaPL
|
Test model for the part load efficiency curve with compressor speed as input signal |
EquationFitReversible_EnergyPlus
|
Validation with EnergyPlus model |
EquationFitReversible_ScalingFactor
|
Test model for scaling up the reversable heat pump |
ReciprocatingWaterToWater_Dynamic
|
Test model for variable speed reciprocating water to water heat pump |
ReciprocatingWaterToWater_ScalingFactor
|
Test model for variable speed reciprocating water to water heat pump |
ReciprocatingWaterToWater_Static
|
Test model for static, reciprocating water to water heat pump |
ReciprocatingWaterToWater_VariableSpeed
|
Test model for reciprocating water to water heat pump |
ScrollWaterToWater_Dynamic
|
Test model for scroll water to water heat pump |
ScrollWaterToWater_ScalingFactor
|
Test model for scroll water to water heat pump |
ScrollWaterToWater_Static
|
Test model for static scroll water to water heat pump |
ScrollWaterToWater_TemperatureProtection
|
Test model for temperature protection of scroll water to water heat pump |
ScrollWaterToWater_VariableSpeed
|
Test model for scroll water to water heat pump |
Test model for Carnot_TCon with limited heating capacity
Information
This example extends from
Buildings.Fluid.HeatPumps.Examples.Carnot_TCon
but limits the heating capacity.
Extends from Examples.Carnot_TCon (Test model for heat pump based on Carnot efficiency and condenser outlet temperature control signal).
Parameters
Type | Name | Default | Description |
TemperatureDifference | dTEva_nominal | -5 | Temperature difference evaporator inlet-outlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
HeatFlowRate | QCon_flow_nominal | 100E3 | Evaporator heat flow rate [W] |
MassFlowRate | m1_flow_nominal | QCon_flow_nominal/dTCon_nomi... | Nominal mass flow rate at condenser [kg/s] |
Modelica definition
model Carnot_TCon_LimitedCapacity
extends Examples.Carnot_TCon(heaPum(QCon_flow_max=250000));
end Carnot_TCon_LimitedCapacity;
Test model for Carnot_TCon with low condenser leaving water temperature
Information
This example extends from
Buildings.Fluid.HeatPumps.Examples.Carnot_TCon
but decreases the set point for the leaving condenser temperature
to be below its inlet temperature, in which case the model provides no heating.
Towards the end of the simulation, the inlet temperature of the condenser is decreased
to be below the evaporator temperature. In this domain, the model requires cooling
again. While this is not a meaningful operating point for the model, the example
verifies that it robustly simulates this regime.
Extends from Examples.Carnot_TCon (Test model for heat pump based on Carnot efficiency and condenser outlet temperature control signal).
Parameters
Type | Name | Default | Description |
TemperatureDifference | dTEva_nominal | -5 | Temperature difference evaporator inlet-outlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
HeatFlowRate | QCon_flow_nominal | 100E3 | Evaporator heat flow rate [W] |
MassFlowRate | m1_flow_nominal | QCon_flow_nominal/dTCon_nomi... | Nominal mass flow rate at condenser [kg/s] |
Modelica definition
model Carnot_TCon_LowTemperature
extends Examples.Carnot_TCon(TConLvg(height=-32), sou1(use_T_in=true));
Modelica.Blocks.Sources.Ramp TConEnt(
duration=60,
offset=273.15 + 20,
startTime=3000,
height=-19) ;
equation
connect(TConEnt.y, sou1.T_in);
end Carnot_TCon_LowTemperature;
Test model for the part load efficiency curve with condenser leaving temperature as input signal
Information
This example extends from
Buildings.Fluid.HeatPumps.Examples.Carnot_TCon
but has a part load efficiency that varies with the load.
Extends from Examples.Carnot_TCon (Test model for heat pump based on Carnot efficiency and condenser outlet temperature control signal).
Parameters
Type | Name | Default | Description |
TemperatureDifference | dTEva_nominal | -5 | Temperature difference evaporator inlet-outlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
HeatFlowRate | QCon_flow_nominal | 100E3 | Evaporator heat flow rate [W] |
MassFlowRate | m1_flow_nominal | QCon_flow_nominal/dTCon_nomi... | Nominal mass flow rate at condenser [kg/s] |
Modelica definition
model Carnot_TCon_etaPL
extends Examples.Carnot_TCon(
heaPum(a={0.7,0.3}),
TConLvg(height=10, offset=273.15 + 25));
end Carnot_TCon_etaPL;
Test model for heat pump based on Carnot efficiency and condenser outlet temperature control signal
Information
Example that simulates a heat pump whose efficiency is scaled based on the
Carnot cycle.
The heat pump takes as an input the condenser leaving water temperature.
The condenser mass flow rate is computed in such a way that it has
a temperature difference equal to dTCon_nominal
.
This example checks the correct behavior if a mass flow rate attains zero.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
TemperatureDifference | dTEva_nominal | -10 | Temperature difference evaporator inlet-outlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
HeatFlowRate | QCon_flow_nominal | 100E3 | Evaporator heat flow rate [W] |
MassFlowRate | m1_flow_nominal | QCon_flow_nominal/dTCon_nomi... | Nominal mass flow rate at condenser [kg/s] |
Modelica definition
model Carnot_TCon_reverseFlow
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal=-10
;
parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal=10
;
parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal=100E3
;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=QCon_flow_nominal/
dTCon_nominal/4200 ;
Modelica.Blocks.Sources.Constant TConLvg(k=273.15 + 40)
;
final parameter Modelica.Units.SI.SpecificHeatCapacity cp2_default=
Medium2.specificHeatCapacityCp(
Medium2.setState_pTX(
Medium2.p_default,
Medium2.T_default,
Medium2.X_default))
;
Modelica.Blocks.Sources.Ramp mCon_flow(
duration=60,
startTime=1800,
height=-2*m1_flow_nominal,
offset=m1_flow_nominal) ;
Carnot_TCon heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
dTEva_nominal=dTEva_nominal,
dTCon_nominal=dTCon_nominal,
m1_flow_nominal=m1_flow_nominal,
show_T=true,
use_eta_Carnot_nominal=true,
etaCarnot_nominal=0.3,
QCon_flow_nominal=QCon_flow_nominal,
allowFlowReversal1=true,
allowFlowReversal2=true,
dp1_nominal=6000,
dp2_nominal=6000) ;
Sources.MassFlowSource_T sou1(nPorts=1,
redeclare package Medium = Medium1,
use_m_flow_in=true,
T=293.15);
Sources.MassFlowSource_T sou2(nPorts=1,
redeclare package Medium = Medium2,
use_T_in=false,
use_m_flow_in=true,
T=288.15);
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1,
nPorts=1);
Buildings.Fluid.Sources.Boundary_pT sin2(
nPorts=1,
redeclare package Medium = Medium2);
Modelica.Blocks.Math.Gain mEva_flow(k=-1/cp2_default/dTEva_nominal)
;
Modelica.Blocks.Math.Add QEva_flow(k2=-1) ;
equation
connect(sou1.ports[1],heaPum. port_a1);
connect(sou2.ports[1],heaPum. port_a2);
connect(sin2.ports[1],heaPum. port_b2);
connect(QEva_flow.y,mEva_flow. u);
connect(heaPum.port_b1,sin1. ports[1]);
connect(mEva_flow.y, sou2.m_flow_in);
connect(TConLvg.y, heaPum.TSet);
connect(mCon_flow.y, sou1.m_flow_in);
connect(heaPum.QCon_flow, QEva_flow.u1);
connect(QEva_flow.u2, heaPum.P);
end Carnot_TCon_reverseFlow;
Test model for heat pump based on Carnot efficiency with etaCar as parameter
Information
This example extends from
Buildings.Fluid.HeatPumps.Examples.Carnot_y
but uses the parameter etaCar
instead of COP_nominal
.
Extends from Buildings.Fluid.HeatPumps.Examples.Carnot_y (Test model for heat pump based on Carnot efficiency).
Parameters
Type | Name | Default | Description |
Real | COP_nominal | 6 | Nominal COP |
Power | P_nominal | 10E3 | Nominal compressor power (at y=1) [W] |
TemperatureDifference | dTEva_nominal | -10 | Temperature difference evaporator outlet-inlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
MassFlowRate | m2_flow_nominal | -P_nominal*(COP_nominal - 1)... | Nominal mass flow rate at chilled water side [kg/s] |
MassFlowRate | m1_flow_nominal | P_nominal*COP_nominal/cp1_de... | Nominal mass flow rate at condenser water wide [kg/s] |
Modelica definition
Test model for the part load efficiency curve with compressor speed as input signal
Information
This example extends from
Buildings.Fluid.HeatPumps.Examples.Carnot_y
but uses a part load efficiency curve that is different from 1.
Extends from Examples.Carnot_y (Test model for heat pump based on Carnot efficiency).
Parameters
Type | Name | Default | Description |
Real | COP_nominal | 6 | Nominal COP |
Power | P_nominal | 10E3 | Nominal compressor power (at y=1) [W] |
TemperatureDifference | dTEva_nominal | -10 | Temperature difference evaporator outlet-inlet [K] |
TemperatureDifference | dTCon_nominal | 10 | Temperature difference condenser outlet-inlet [K] |
MassFlowRate | m2_flow_nominal | -P_nominal*(COP_nominal - 1)... | Nominal mass flow rate at chilled water side [kg/s] |
MassFlowRate | m1_flow_nominal | P_nominal*COP_nominal/cp1_de... | Nominal mass flow rate at condenser water wide [kg/s] |
Modelica definition
model Carnot_y_etaPL
extends Examples.Carnot_y(heaPum(a={0.7,0.3},
T1_start=303.15,
T2_start=278.15));
end Carnot_y_etaPL;
Validation with EnergyPlus model
Information
This model implements a comparative model validation of
Buildings.Fluid.HeatPumps.EquationFitReversible
against results obtained using EnergyPlus 9.1.
The EnergyPlus results were generated using the example file GSHPSimple-GLHE-ReverseHeatPump.idf
from EnergyPlus, with a nominal cooling capacity of 39890 Watts and
nominal heating capacity of 39040 Watts.
Parameters
Type | Name | Default | Description |
EnergyPlus | perEP | | EnergyPlus heat pump performance |
MassFlowRate | mSou_flow_nominal | perEP.hea.mSou_flow | Source heat exchanger nominal mass flow rate [kg/s] |
MassFlowRate | mLoa_flow_nominal | perEP.hea.mLoa_flow | Load heat exchanger nominal mass flow rate [kg/s] |
Modelica definition
model EquationFitReversible_EnergyPlus
package Medium =
Buildings.Media.Water ;
parameter Data.EquationFitReversible.EnergyPlus perEP
;
parameter Modelica.Units.SI.MassFlowRate mSou_flow_nominal=perEP.hea.mSou_flow
;
parameter Modelica.Units.SI.MassFlowRate mLoa_flow_nominal=perEP.hea.mLoa_flow
;
Buildings.Fluid.HeatPumps.EquationFitReversible heaPum(
redeclare package Medium1 = Medium,
redeclare package Medium2 = Medium,
per=perEP,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState)
;
Sources.MassFlowSource_T loaPum(
redeclare package Medium = Medium,
use_m_flow_in=false,
m_flow=1.89,
T=328.15,
nPorts=1,
use_T_in=true) ;
Sources.MassFlowSource_T souPum(
redeclare package Medium = Medium,
use_m_flow_in=false,
m_flow=1.89,
T=280.65,
nPorts=1,
use_T_in=true) ;
Buildings.Fluid.Sources.Boundary_pT cooVol(
redeclare package Medium = Medium, nPorts=1)
;
Buildings.Fluid.Sources.Boundary_pT heaVol(
redeclare package Medium = Medium, nPorts=1)
;
Modelica.Blocks.Sources.CombiTimeTable datRea(
tableOnFile=true,
fileName=
ModelicaServices.ExternalReferences.loadResource(
"modelica://Buildings//Resources/Data/Fluid/HeatPumps/Validation/EquationFitReversible_EnergyPlus/GSHPSimple-GLHE-ReverseHeatPump.dat"),
verboseRead=false,
tableName="EnergyPlus",
columns=2:8,
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments)
;
Controls.OBC.CDL.Integers.Sources.Constant uMod(k=1)
;
Buildings.Controls.OBC.UnitConversions.From_degC TLoaEnt
;
Buildings.Controls.OBC.UnitConversions.From_degC TSouEnt
;
Buildings.Controls.OBC.UnitConversions.From_degC TSetHea
;
Modelica.Blocks.Sources.RealExpression QSou_flow_EP(y=datRea.y[2])
;
Modelica.Blocks.Sources.RealExpression QLoa_flow_EP(y=-datRea.y[3])
;
Modelica.Blocks.Sources.RealExpression P_EP(y=datRea.y[1])
;
equation
connect(heaPum.port_a1,loaPum. ports[1]);
connect(souPum.ports[1], heaPum.port_a2);
connect(cooVol.ports[1], heaPum.port_b2);
connect(heaPum.port_b1, heaVol.ports[1]);
connect(loaPum.T_in, TLoaEnt.y);
connect(TSouEnt.y, souPum.T_in);
connect(TSetHea.y, heaPum.TSet);
connect(datRea.y[5], TLoaEnt.u);
connect(datRea.y[4],TSetHea. u);
connect(datRea.y[6], TSouEnt.u);
connect(heaPum.uMod, uMod.y);
end EquationFitReversible_EnergyPlus;
Test model for scaling up the reversable heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.EquationFitReversible heat pump model. This
validation case also tests scaling the heat pump model.
The capacity, pressure drop and coefficient of performance
of the scaled heat pump model are compared to the values
of the non-scaled model.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Trane_Axiom_EXW240 | per | | Reverse heat pump performance data |
MassFlowRate | mSou_flow_nominal | per.hea.mSou_flow | Source heat exchanger nominal mass flow rate [kg/s] |
MassFlowRate | mLoa_flow_nominal | per.hea.mLoa_flow | Load heat exchanger nominal mass flow rate [kg/s] |
Real | scaling_factor | 2 | Scaling factor for heat pump capacity |
Modelica definition
model EquationFitReversible_ScalingFactor
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Water ;
parameter Data.EquationFitReversible.Trane_Axiom_EXW240 per
;
parameter Modelica.Units.SI.MassFlowRate mSou_flow_nominal=per.hea.mSou_flow
;
parameter Modelica.Units.SI.MassFlowRate mLoa_flow_nominal=per.hea.mLoa_flow
;
parameter Real scaling_factor=2
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium, nPorts=2)
;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium, nPorts=2)
;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium,
m_flow=mLoa_flow_nominal,
use_m_flow_in=true,
use_T_in=true,
nPorts=1)
;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium,
m_flow=mSou_flow_nominal,
use_m_flow_in=true,
use_T_in=true,
nPorts=1)
;
EquationFitReversible heaPum(
redeclare package Medium1 = Medium,
redeclare package Medium2 = Medium,
per=per,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
EquationFitReversible heaPum1(
redeclare package Medium1 = Medium,
redeclare package Medium2 = Medium,
per=per,
scaling_factor=scaling_factor,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Modelica.Fluid.Sources.MassFlowSource_T loa1(
redeclare package Medium = Medium,
m_flow=mLoa_flow_nominal,
use_m_flow_in=true,
use_T_in=true,
nPorts=1)
;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = Medium,
m_flow=mSou_flow_nominal,
use_m_flow_in=true,
use_T_in=true,
nPorts=1)
;
Modelica.Blocks.Sources.Constant TLoa(k=323.15)
;
Modelica.Blocks.Sources.Constant TSou(k=285.15)
;
Modelica.Blocks.Sources.RealExpression capErr(y=(heaPum1.QLoa_flow -
scaling_factor*heaPum.QLoa_flow))
;
Modelica.Blocks.Sources.RealExpression mLoa(y=mLoa_flow_nominal)
;
Modelica.Blocks.Sources.RealExpression mSou(y=mSou_flow_nominal)
;
Modelica.Blocks.Math.RealToInteger reaToInt
;
Controls.OBC.CDL.Continuous.Sources.Ramp TLoaEntHea(
height=4,
duration(displayUnit="h") = 14400,
offset=50 + 273.15,
startTime=0) ;
Modelica.Blocks.Sources.Pulse uMod(
amplitude=1,
width=70,
period=500,
offset=0,
startTime=0) ;
Modelica.Blocks.Sources.RealExpression mSou1(y=mSou_flow_nominal*
scaling_factor)
;
Modelica.Blocks.Sources.RealExpression mLoa1(y=mLoa_flow_nominal*
scaling_factor)
;
equation
connect(heaPum.port_a2, sou.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b2, sin2.ports[1]);
connect(sin2.ports[2], heaPum1.port_b2);
connect(sou1.ports[1], heaPum1.port_a2);
connect(TSou.y, sou1.T_in);
connect(sou.T_in, sou1.T_in);
connect(TLoa.y, loa1.T_in);
connect(TLoa.y, loa.T_in);
connect(loa1.ports[1], heaPum1.port_a1);
connect(heaPum1.port_b1, sin1.ports[2]);
connect(mLoa.y, loa.m_flow_in);
connect(mSou.y, sou.m_flow_in);
connect(TLoaEntHea.y, heaPum.TSet);
connect(reaToInt.y, heaPum.uMod);
connect(reaToInt.y, heaPum1.uMod);
connect(reaToInt.u, uMod.y);
connect(TLoaEntHea.y, heaPum1.TSet);
connect(sou1.m_flow_in, mSou1.y);
connect(loa1.m_flow_in, mLoa1.y);
end EquationFitReversible_ScalingFactor;
Test model for variable speed reciprocating water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heat pump model. This
validation case also tests the stage input to the heat pump models.
With constant inlet source and load water temperatures, the heat pumps cycle on
and off. The apparent capacity of the dynamic model is compared to the
steady-state model and to the condenser heat transfer rate.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ReciprocatingWaterToWater_Dynamic
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2,
nPorts=2) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1,
nPorts=2) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
show_T=true,
enable_variable_speed=false,
per=
Buildings.Fluid.HeatPumps.Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
enable_temperature_protection=false)
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum1(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
tau1=15,
tau2=15,
enable_variable_speed=false,
per=
Buildings.Fluid.HeatPumps.Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial,
enable_temperature_protection=false)
;
Modelica.Blocks.Sources.Pulse N(width=60, period=500)
;
Modelica.Fluid.Sources.MassFlowSource_T loa1(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15)
;
Modelica.Blocks.Sources.RealExpression appCap(y=heaPum1.port_a1.m_flow*(
heaPum1.port_b1.h_outflow - loa1.ports[1].h_outflow))
;
Modelica.Blocks.Math.RealToInteger realToInteger;
equation
connect(mSou.y, sou.m_flow_in);
connect(heaPum.port_a2, sou.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b2, sin2.ports[1]);
connect(sin2.ports[2], heaPum1.port_b2);
connect(mLoa.y, loa.m_flow_in);
connect(mLoa.y, loa1.m_flow_in);
connect(sou1.ports[1], heaPum1.port_a2);
connect(mSou.y, sou1.m_flow_in);
connect(TSou.y, sou1.T_in);
connect(sou.T_in, sou1.T_in);
connect(TLoa.y, loa1.T_in);
connect(TLoa.y, loa.T_in);
connect(loa1.ports[1], heaPum1.port_a1);
connect(heaPum1.port_b1, sin1.ports[2]);
connect(N.y, realToInteger.u);
connect(realToInteger.y, heaPum.stage);
connect(realToInteger.y, heaPum1.stage);
end ReciprocatingWaterToWater_Dynamic;
Test model for variable speed reciprocating water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heat pump model. This
validation case also tests the stage input to the heat pump models.
With constant inlet source and load water temperatures, the heat pumps cycle on
and off. The capacity of the scaled heat pump model is compared to the
capacity of the non-scaled heat pump model.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Real | scaling_factor | 2.41 | Scaling factor for heat pump capacity |
Modelica definition
model ReciprocatingWaterToWater_ScalingFactor
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
parameter Real scaling_factor = 2.41
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=2) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad*scaling_factor)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource*scaling_factor)
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
enable_variable_speed=false,
per=
Buildings.Fluid.HeatPumps.Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false)
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum1(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
enable_variable_speed=false,
scaling_factor=scaling_factor,
m1_flow_nominal=m1_flow_nominal*scaling_factor,
m2_flow_nominal=m2_flow_nominal*scaling_factor,
per=
Buildings.Fluid.HeatPumps.Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false)
;
Modelica.Blocks.Sources.Pulse N(width=60, period=500)
;
Modelica.Fluid.Sources.MassFlowSource_T loa1(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15)
;
Modelica.Blocks.Sources.RealExpression capErr(y=(heaPum1.QCon_flow -
scaling_factor*heaPum.QCon_flow))
;
Modelica.Blocks.Math.RealToInteger realToInteger;
Modelica.Blocks.Sources.RealExpression mLoa1(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou1(y=flowSource)
;
equation
connect(heaPum.port_a2, sou.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b2, sin2.ports[1]);
connect(sin2.ports[2], heaPum1.port_b2);
connect(mLoa.y, loa1.m_flow_in);
connect(sou1.ports[1], heaPum1.port_a2);
connect(mSou.y, sou1.m_flow_in);
connect(TSou.y, sou1.T_in);
connect(sou.T_in, sou1.T_in);
connect(TLoa.y, loa1.T_in);
connect(TLoa.y, loa.T_in);
connect(loa1.ports[1], heaPum1.port_a1);
connect(heaPum1.port_b1, sin1.ports[2]);
connect(N.y, realToInteger.u);
connect(realToInteger.y, heaPum.stage);
connect(realToInteger.y, heaPum1.stage);
connect(mLoa1.y, loa.m_flow_in);
connect(mSou1.y, sou.m_flow_in);
end ReciprocatingWaterToWater_ScalingFactor;
Test model for static, reciprocating water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heat pump model.
The heat pump power, condenser heat transfer rate and evaporator heat transfer
rate are calculated for given water temperatures and flow rates on the
evaporator and condenser sides.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ReciprocatingWaterToWater_Static
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum(
per=
Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=100,
dp2_nominal=100,
show_T=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
enable_temperature_protection=false)
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Modelica.Blocks.Sources.Ramp yLoa(
height=20,
duration=750,
offset=293.15,
startTime=250) ;
Modelica.Blocks.Sources.Ramp ySou(
height=20,
duration=750,
offset=283.15,
startTime=0) ;
Modelica.Blocks.Sources.Constant isOn(k=1)
;
equation
connect(mSou.y, sou.m_flow_in);
connect(mLoa.y, loa.m_flow_in);
connect(yLoa.y, loa.T_in);
connect(ySou.y, sou.T_in);
connect(isOn.y,heaPum.y);
connect(loa.ports[1], heaPum.port_a1);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a2, sou.ports[1]);
connect(sin2.ports[1], heaPum.port_b2);
end ReciprocatingWaterToWater_Static;
Test model for reciprocating water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heat pump model.
With constant inlet source and load water temperatures, the compressor frequency
is increased linearly to its full load value and then ramped down to zero.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ReciprocatingWaterToWater_VariableSpeed
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ReciprocatingWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
show_T=true,
per=
Buildings.Fluid.HeatPumps.Data.ReciprocatingWaterToWater.Generic(
etaEle=0.696,
PLos=100,
dTSup=9.82,
UACon=2210,
UAEva=1540,
pisDis=0.00162,
cleFac=0.069,
pDro=99290),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false)
;
Modelica.Blocks.Sources.Trapezoid N(
startTime=100,
offset=0.0,
rising=200,
width=200,
falling=200,
period=1000) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15) ;
equation
connect(mSou.y, sou.m_flow_in);
connect(mLoa.y, loa.m_flow_in);
connect(N.y,heaPum.y);
connect(TSou.y, sou.T_in);
connect(TLoa.y, loa.T_in);
connect(sin2.ports[1], heaPum.port_b2);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(sou.ports[1], heaPum.port_a2);
end ReciprocatingWaterToWater_VariableSpeed;
Test model for scroll water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ScrollWaterToWater heat pump model. This
validation case also tests the stage input to the heat pump models.
With constant inlet source and load water temperatures, the heat pumps cycle on
and off. The apparent capacity of the dynamic model is compared to the
steady-state model and to the condenser heat transfer rate.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ScrollWaterToWater_Dynamic
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=2) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
enable_variable_speed=false,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
enable_temperature_protection=false) ;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum1(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial,
tau1=15,
tau2=15,
enable_variable_speed=false,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
enable_temperature_protection=false)
;
Modelica.Blocks.Sources.Pulse N(width=60, period=500)
;
Modelica.Fluid.Sources.MassFlowSource_T loa1(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15)
;
Modelica.Blocks.Sources.RealExpression appCap(y=heaPum1.port_a1.m_flow*(
heaPum1.port_b1.h_outflow - loa1.ports[1].h_outflow))
;
Modelica.Blocks.Math.RealToInteger realToInteger;
equation
connect(mSou.y, sou.m_flow_in);
connect(heaPum.port_a2, sou.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b2, sin2.ports[1]);
connect(sin2.ports[2], heaPum1.port_b2);
connect(mLoa.y, loa.m_flow_in);
connect(mLoa.y, loa1.m_flow_in);
connect(sou1.ports[1], heaPum1.port_a2);
connect(mSou.y, sou1.m_flow_in);
connect(TSou.y, sou1.T_in);
connect(sou.T_in, sou1.T_in);
connect(TLoa.y, loa1.T_in);
connect(TLoa.y, loa.T_in);
connect(loa1.ports[1], heaPum1.port_a1);
connect(heaPum1.port_b1, sin1.ports[2]);
connect(N.y, realToInteger.u);
connect(realToInteger.y, heaPum.stage);
connect(realToInteger.y, heaPum1.stage);
end ScrollWaterToWater_Dynamic;
Test model for scroll water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ScrollWaterToWater heat pump model. This
validation case also tests the stage input to the heat pump models.
With constant inlet source and load water temperatures, the heat pumps cycle on
and off. The capacity of the scaled heat pump model is compared to the
capacity of the non-scaled heat pump model.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Real | scaling_factor | 2.41 | Scaling factor for heat pump capacity |
Modelica definition
model ScrollWaterToWater_ScalingFactor
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
parameter Real scaling_factor = 2.41
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=2) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
enable_variable_speed=false,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false) ;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum1(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
enable_variable_speed=false,
m1_flow_nominal=m1_flow_nominal*scaling_factor,
m2_flow_nominal=m2_flow_nominal*scaling_factor,
scaling_factor=scaling_factor,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false)
;
Modelica.Blocks.Sources.Pulse N(width=60, period=500)
;
Modelica.Fluid.Sources.MassFlowSource_T loa1(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15)
;
Modelica.Blocks.Math.RealToInteger realToInteger;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource*scaling_factor)
;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad*scaling_factor)
;
Modelica.Blocks.Sources.RealExpression mLoa1(
y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou1(
y=flowSource)
;
Modelica.Blocks.Sources.RealExpression capErr(y=(heaPum1.QCon_flow -
scaling_factor*heaPum.QCon_flow))
;
equation
connect(heaPum.port_a2, sou.ports[1]);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a1, loa.ports[1]);
connect(heaPum.port_b2, sin2.ports[1]);
connect(sin2.ports[2], heaPum1.port_b2);
connect(sou1.ports[1], heaPum1.port_a2);
connect(TSou.y, sou1.T_in);
connect(sou.T_in, sou1.T_in);
connect(TLoa.y, loa1.T_in);
connect(TLoa.y, loa.T_in);
connect(loa1.ports[1], heaPum1.port_a1);
connect(heaPum1.port_b1, sin1.ports[2]);
connect(N.y, realToInteger.u);
connect(realToInteger.y, heaPum.stage);
connect(realToInteger.y, heaPum1.stage);
connect(mLoa.y, loa1.m_flow_in);
connect(mSou.y, sou1.m_flow_in);
connect(mSou1.y, sou.m_flow_in);
connect(mLoa1.y, loa.m_flow_in);
end ScrollWaterToWater_ScalingFactor;
Test model for static scroll water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ScrollWaterToWater heat pump model.
The heat pump power, condenser heat transfer rate and evaporator heat transfer
rate are calculated for given water temperatures and flow rates on the
evaporator and condenser sides.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ScrollWaterToWater_Static
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=1) ;
Modelica.Blocks.Sources.Constant isOn(k=1)
;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
show_T=true,
enable_variable_speed=true,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
enable_temperature_protection=false) ;
Modelica.Blocks.Sources.Ramp yLoa(
height=20,
duration=750,
offset=293.15,
startTime=250) ;
Modelica.Blocks.Sources.Ramp ySou(
height=20,
duration=750,
offset=283.15,
startTime=0) ;
equation
connect(mSou.y, sou.m_flow_in);
connect(mLoa.y, loa.m_flow_in);
connect(yLoa.y, loa.T_in);
connect(ySou.y, sou.T_in);
connect(isOn.y,heaPum.y);
connect(sin2.ports[1], heaPum.port_b2);
connect(sou.ports[1], heaPum.port_a2);
connect(sin1.ports[1], heaPum.port_b1);
connect(loa.ports[1], heaPum.port_a1);
end ScrollWaterToWater_Static;
Test model for temperature protection of scroll water to water heat pump
Information
Model that demonstrates the temperature protection implementation of the
Buildings.Fluid.HeatPumps.ScrollWaterToWater heat pump model.
The heat pump is disabled when the evaporator and condenser temperature
requirements are not satisfied.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ScrollWaterToWater_TemperatureProtection
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=1) ;
Modelica.Blocks.Sources.Constant isOn(k=1)
;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
show_T=true,
enable_variable_speed=true,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
TConMax=273.15 + 60,
enable_temperature_protection=true) ;
Modelica.Blocks.Sources.Sine yLoa(
startTime=250,
f=1/600,
amplitude=30,
offset=313.15) ;
Modelica.Blocks.Sources.Cosine ySou(
startTime=0,
amplitude=20,
offset=293.15,
f=1/400) ;
equation
connect(mSou.y, sou.m_flow_in);
connect(mLoa.y, loa.m_flow_in);
connect(yLoa.y, loa.T_in);
connect(ySou.y, sou.T_in);
connect(isOn.y,heaPum.y);
connect(sin2.ports[1], heaPum.port_b2);
connect(sou.ports[1], heaPum.port_a2);
connect(sin1.ports[1], heaPum.port_b1);
connect(loa.ports[1], heaPum.port_a1);
end ScrollWaterToWater_TemperatureProtection;
Test model for scroll water to water heat pump
Information
Model that demonstrates the use of the
Buildings.Fluid.HeatPumps.ScrollWaterToWater heat pump model.
With constant inlet source and load water temperatures, the compressor frequency
is increased linearly to its full load value.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
MassFlowRate | m1_flow_nominal | 0.47 | Nominal mass flow rate on the condenser side [kg/s] |
MassFlowRate | m2_flow_nominal | 0.47 | Nominal mass flow rate on the evaporator side [kg/s] |
MassFlowRate | flowSource | 0.79 | Mass flow rate on the condenser side [kg/s] |
MassFlowRate | flowLoad | 0.47 | Mass flow rate on the evaporator side [kg/s] |
Modelica definition
model ScrollWaterToWater_VariableSpeed
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.47
;
parameter Modelica.Units.SI.MassFlowRate flowSource=0.79
;
parameter Modelica.Units.SI.MassFlowRate flowLoad=0.47
;
Buildings.Fluid.Sources.Boundary_pT sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT sin1(
redeclare package Medium = Medium1, nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T loa(
redeclare package Medium = Medium1,
m_flow=flowLoad,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = Medium2,
m_flow=flowSource,
use_m_flow_in=true,
use_T_in=true,
nPorts=1) ;
Modelica.Blocks.Sources.RealExpression mLoa(y=flowLoad)
;
Modelica.Blocks.Sources.RealExpression mSou(y=flowSource)
;
Buildings.Fluid.HeatPumps.ScrollWaterToWater heaPum(
redeclare package Medium1 = Medium1,
redeclare package Medium2 = Medium2,
m1_flow_nominal=m1_flow_nominal,
m2_flow_nominal=m2_flow_nominal,
dp1_nominal=1000,
dp2_nominal=1000,
redeclare package ref =
Buildings.Media.Refrigerants.R410A,
show_T=true,
datHeaPum(
etaEle=0.696,
PLos=500,
dTSup=10,
UACon=4400,
UAEva=4400,
volRat=2,
V_flow_nominal=0.003,
leaCoe=0.01),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
enable_temperature_protection=false) ;
Modelica.Blocks.Sources.Ramp N(
duration=800,
startTime=100,
height=1.0,
offset=0.0) ;
Modelica.Blocks.Sources.Constant TLoa(k=285.15) ;
Modelica.Blocks.Sources.Constant TSou(k=283.15)
;
equation
connect(mSou.y, sou.m_flow_in);
connect(mLoa.y, loa.m_flow_in);
connect(N.y,heaPum.y);
connect(TSou.y, sou.T_in);
connect(TLoa.y, loa.T_in);
connect(sin2.ports[1], heaPum.port_b2);
connect(loa.ports[1], heaPum.port_a1);
connect(heaPum.port_b1, sin1.ports[1]);
connect(heaPum.port_a2, sou.ports[1]);
end ScrollWaterToWater_VariableSpeed;