modelCarnotWithLosses
Extends from Buildings.Fluid.HeatPumps.ModularReversible.Modular (Grey-box model for reversible and non-reversible heat pumps).
Information
Model of a reversible heat pump.
This model extends Buildings.Fluid.HeatPumps.ModularReversible.Modular and selects the constant Carnot effectiveness module for heat pumps ( Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness) and chillers ( Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness) to model a reversible heat pump. For the heating operation, the approach temperatures are fixed at nominal values to avoid nonlinear system of equations.
Furthermore, losses are enabled to model the heat pump with a more realistic behaviour:
- Heat losses to the ambient (can be disabled)
- Refrigerant inertia using a first order delay
- Evaporator frosting assuming an air-sink chiller
For more information on the approach, see Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | use_rev (from PartialReversibleRefrigerantMachine) | true | =true if the chiller or heat pump is reversible |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 | safCtrPar (from PartialReversibleRefrigerantMachine) | ||
| Modelica.Units.SI.Density | rhoCon (from PartialReversibleRefrigerantMachine) | MediumCon.density(staCon_nominal) | Condenser medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpCon (from PartialReversibleRefrigerantMachine) | MediumCon.specificHeatCapacityCp(staCon_nominal) | Condenser medium specific heat capacity |
| Modelica.Units.SI.Density | rhoEva (from PartialReversibleRefrigerantMachine) | MediumEva.density(staEva_nominal) | Evaporator medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpEva (from PartialReversibleRefrigerantMachine) | MediumEva.specificHeatCapacityCp(staEva_nominal) | Evaporator medium specific heat capacity |
| Real | etaCarnot_nominal | 0.3 | Constant Carnot effectiveness |
| Assumptions | |||
| Boolean | allowFlowReversal1 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Boolean | allowFlowReversal2 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.MassFlowRate | m2_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.HeatFlowRate | PEle_nominal (from PartialReversibleRefrigerantMachine) | Nominal electrical power consumption | |
| Modelica.Units.SI.HeatFlowRate | QHea_flow_nominal (from Modular) | Nominal heating capacity | |
| Modelica.Units.SI.Temperature | TConHea_nominal (from Modular) | Nominal temperature of the heated fluid during heating mode | |
| Modelica.Units.SI.Temperature | TEvaHea_nominal (from Modular) | Nominal temperature of the cooled fluid during heating mode | |
| Modelica.Units.SI.TemperatureDifference | TAppCon_nominal | if cpCon < 1500 then 5 else 2 | Temperature difference between refrigerant and working fluid outlet in condenser |
| Modelica.Units.SI.TemperatureDifference | TAppEva_nominal | if cpEva < 1500 then 5 else 2 | Temperature difference between refrigerant and working fluid outlet in evaporator |
| Advanced | |||
| Medium1.MassFlowRate | m1_flow_small (from PartialFourPortInterface) | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Medium2.MassFlowRate | m2_flow_small (from PartialFourPortInterface) | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Boolean | allowDifferentDeviceIdentifiers (from PartialReversibleRefrigerantMachine) | false | if use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde |
| Boolean | calEff (from PartialReversibleRefrigerantMachine) | true | =false to disable efficiency calculation, may speed up the simulation |
| Real | limWarSca (from PartialReversibleRefrigerantMachine) | 0.05 | Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Real | ySet_small (from PartialReversibleRefrigerantMachine) | 0.01 | Threshold for relative speed for the device to be considered on |
| Safety control | |||
| Boolean | use_intSafCtr (from PartialReversibleRefrigerantMachine) | true | =true to enable internal safety control |
| Condenser › Dynamics | |||
| Modelica.Units.SI.Time | tauCon (from PartialReversibleRefrigerantMachine) | 30 | Condenser heat transfer time constant at nominal flow |
| Nominal condition - Pressure losses | |||
| Modelica.Units.SI.TemperatureDifference | dTCon_nominal (from PartialReversibleRefrigerantMachine) | Nominal temperature difference in condenser medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mCon_flow_nominal (from PartialReversibleRefrigerantMachine) | Nominal mass flow rate of the condenser medium | |
| Modelica.Units.SI.PressureDifference | dpCon_nominal (from PartialReversibleRefrigerantMachine) | Pressure drop at nominal mass flow rate | |
| Modelica.Units.SI.TemperatureDifference | dTEva_nominal (from PartialReversibleRefrigerantMachine) | Nominal temperature difference in evaporator medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mEva_flow_nominal (from PartialReversibleRefrigerantMachine) | Nominal mass flow rate of the evaporator medium | |
| Modelica.Units.SI.PressureDifference | dpEva_nominal (from PartialReversibleRefrigerantMachine) | Pressure drop at nominal mass flow rate | |
| Condenser › Flow resistance | |||
| Real | deltaMCon (from PartialReversibleRefrigerantMachine) | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nCon (from PartialReversibleRefrigerantMachine) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Condenser › Heat Losses | |||
| Boolean | use_conCap (from PartialReversibleRefrigerantMachine) | true | =true if using capacitor model for condenser heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CCon (from PartialReversibleRefrigerantMachine) | 0 | Heat capacity of the condenser |
| Modelica.Units.SI.ThermalConductance | GConOut (from PartialReversibleRefrigerantMachine) | 0 | Outer thermal conductance for condenser heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GConIns (from PartialReversibleRefrigerantMachine) | 0 | Inner thermal conductance for condenser heat loss calculations |
| Evaporator › Dynamics | |||
| Modelica.Units.SI.Time | tauEva (from PartialReversibleRefrigerantMachine) | 30 | Evaporator heat transfer time constant at nominal flow |
| Evaporator › Flow resistance | |||
| Real | deltaMEva (from PartialReversibleRefrigerantMachine) | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nEva (from PartialReversibleRefrigerantMachine) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Evaporator › Heat Losses | |||
| Boolean | use_evaCap (from PartialReversibleRefrigerantMachine) | true | =true if using capacitor model for evaporator heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CEva (from PartialReversibleRefrigerantMachine) | 0 | Heat capacity of the evaporator |
| Modelica.Units.SI.ThermalConductance | GEvaOut (from PartialReversibleRefrigerantMachine) | 0 | Outer thermal conductance for evaporator heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GEvaIns (from PartialReversibleRefrigerantMachine) | 0 | Inner thermal conductance for evaporator heat loss calculations |
| Assumptions › Evaporator | |||
| Boolean | allowFlowReversalEva (from PartialReversibleRefrigerantMachine) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Assumptions › Condenser | |||
| Boolean | allowFlowReversalCon (from PartialReversibleRefrigerantMachine) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Initialization › Parameters | |||
| Modelica.Blocks.Types.Init | initType (from PartialReversibleRefrigerantMachine) | Modelica.Blocks.Types.Init.InitialState | Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical) |
| Initialization › Condenser | |||
| Modelica.Media.Interfaces.Types.AbsolutePressure | pCon_start (from PartialReversibleRefrigerantMachine) | MediumCon.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TCon_start (from PartialReversibleRefrigerantMachine) | MediumCon.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TConCap_start (from PartialReversibleRefrigerantMachine) | MediumCon.T_default | Initial temperature of heat capacity of condenser |
| Modelica.Media.Interfaces.Types.MassFraction[MediumCon.nX] | XCon_start (from PartialReversibleRefrigerantMachine) | MediumCon.X_default | Start value of mass fractions m_i/m |
| Initialization › Evaporator | |||
| Modelica.Media.Interfaces.Types.AbsolutePressure | pEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TEvaCap_start (from PartialReversibleRefrigerantMachine) | MediumEva.T_default | Initial temperature of heat capacity at evaporator |
| Modelica.Media.Interfaces.Types.MassFraction[MediumEva.nX] | XEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.X_default | Start value of mass fractions m_i/m |
| Dynamics › Equation | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialReversibleRefrigerantMachine) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models) |
| Advanced › Flow resistance | |||
| Boolean | from_dp (from PartialReversibleRefrigerantMachine) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized (from PartialReversibleRefrigerantMachine) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Nominal condition - Cooling | |||
| Modelica.Units.SI.HeatFlowRate | QCoo_flow_nominal (from Modular) | 0 | Nominal cooling capacity |
| Modelica.Units.SI.Temperature | TConCoo_nominal (from Modular) | Nominal temperature of the cooled fluid during cooling mode | |
| Modelica.Units.SI.Temperature | TEvaCoo_nominal (from Modular) | Nominal temperature of the heated fluid during cooling mode | |
| Refrigerant cycle inertia | |||
| Modelica.Units.SI.Time | refIneTimCon | 300 | Refrigerant cycle inertia time constant for first order delay |
| Integer | nthOrd | 1 | Order of refrigerant cycle interia |
Connectors
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium1.MassFlowRate | m1_flow (from PartialFourPortInterface) | port_a1.m_flow | Mass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp1 (from PartialFourPortInterface) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium2.MassFlowRate | m2_flow (from PartialFourPortInterface) | port_a2.m_flow | Mass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp2 (from PartialFourPortInterface) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium1.ThermodynamicState | sta_a1 (from PartialFourPortInterface) | if allowFlowReversal1 then Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium1.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow)) | Medium properties in port_a1 |
| Medium1.ThermodynamicState | sta_b1 (from PartialFourPortInterface) | if allowFlowReversal1 then Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium1.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow) | Medium properties in port_b1 |
| Medium2.ThermodynamicState | sta_a2 (from PartialFourPortInterface) | if allowFlowReversal2 then Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium2.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow)) | Medium properties in port_a2 |
| Medium2.ThermodynamicState | sta_b2 (from PartialFourPortInterface) | if allowFlowReversal2 then Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium2.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow) | Medium properties in port_b2 |
| PartialModularRefrigerantCycle | refCyc (from PartialReversibleRefrigerantMachine) | ||
| Modelica.Units.SI.HeatFlowRate | Q1_flow (from PartialReversibleRefrigerantMachine) | QCon_flow | Heat transferred into the medium 1 |
| Modelica.Units.SI.HeatFlowRate | Q2_flow (from PartialReversibleRefrigerantMachine) | QEva_flow | Heat transferred into the medium 2 |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | con (from PartialReversibleRefrigerantMachine) | Heat exchanger model for the condenser | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | eva (from PartialReversibleRefrigerantMachine) | Heat exchanger model for the evaporator | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutEva (from PartialReversibleRefrigerantMachine) | Forces heat losses according to ambient temperature | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutCon (from PartialReversibleRefrigerantMachine) | Forces heat losses according to ambient temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Safety | safCtr (from PartialReversibleRefrigerantMachine) | Safety control models | |
| Buildings.Fluid.Sensors.MassFlowRate | mEva_flow (from PartialReversibleRefrigerantMachine) | Mass flow sensor at the evaporator | |
| Buildings.Fluid.Sensors.MassFlowRate | mCon_flow (from PartialReversibleRefrigerantMachine) | Mass flow sensor at the condenser | |
| RefrigerantCycleInertia | refCycIneCon (from PartialReversibleRefrigerantMachine) | Inertia model for condenser side | |
| RefrigerantCycleInertia | refCycIneEva (from PartialReversibleRefrigerantMachine) | Inertia model for evaporator side | |
| Modelica.Blocks.Sources.RealExpression | senTConIn (from PartialReversibleRefrigerantMachine) | Real expression for condenser inlet temperature | |
| Modelica.Blocks.Sources.RealExpression | senTEvaIn (from PartialReversibleRefrigerantMachine) | Real expression for evaporator inlet temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateEfficiency | eff (from PartialReversibleRefrigerantMachine) | Calculate efficiencies of device | |
| Modelica.Blocks.Sources.BooleanConstant | conHea (from Modular) | Locks the device in heating mode if designated to be not reversible | |
| Modelica.Blocks.Logical.Hysteresis | hys (from Modular) | Outputs whether the device is on based on the relative speed |
Revisions
-
May 2, 2024, by Michael Wetter:
Refactored check for device identifiers.
This is for IBPSA, #1576. -
October 2, 2022 by Fabian Wuellhorst:
First implementation (see issue #1576)