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 |
ReciprocatingWaterToWater
|
Test model for reciprocating water to water 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_VariableSpeed
|
Test model for reciprocating water to water heat pump |
ScrollWaterToWater
|
Test model for scroll 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_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.SIunits.TemperatureDifference dTEva_nominal=-10
;
parameter Modelica.SIunits.TemperatureDifference dTCon_nominal=10
;
parameter Modelica.SIunits.HeatFlowRate QCon_flow_nominal = 100E3
;
parameter Modelica.SIunits.MassFlowRate m1_flow_nominal=
QCon_flow_nominal/dTCon_nominal/4200 ;
Modelica.Blocks.Sources.Constant TConLvg(k=273.15 + 40)
;
final parameter Modelica.SIunits.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);
Sources.FixedBoundary sin1(
redeclare package Medium = Medium1,
nPorts=1);
Sources.FixedBoundary 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;
Test model for 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
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.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) ;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.FixedBoundary 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;
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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2,
nPorts=2) ;
Buildings.Fluid.Sources.FixedBoundary 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)) ;
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,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial,
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))
;
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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
parameter Real scaling_factor = 2.41
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.FixedBoundary 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)) ;
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))
;
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 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.
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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.FixedBoundary 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)) ;
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(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.
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
extends Modelica.Icons.Example;
package Medium1 =
Buildings.Media.Water ;
package Medium2 =
Buildings.Media.Water ;
parameter Modelica.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.FixedBoundary 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)) ;
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;
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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.FixedBoundary 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))
;
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))
;
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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
parameter Real scaling_factor = 2.41
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=2) ;
Buildings.Fluid.Sources.FixedBoundary 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))
;
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))
;
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 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.SIunits.MassFlowRate m1_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate m2_flow_nominal = 0.47
;
parameter Modelica.SIunits.MassFlowRate flowSource = 0.79
;
parameter Modelica.SIunits.MassFlowRate flowLoad = 0.47
;
Buildings.Fluid.Sources.FixedBoundary sin2(
redeclare package Medium = Medium2, nPorts=1) ;
Buildings.Fluid.Sources.FixedBoundary 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))
;
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;