diff --git a/IBPSA/Fluid/Chillers/BaseClasses/BlackBoxVapourCompressionCycle.mo b/IBPSA/Fluid/Chillers/BaseClasses/BlackBoxVapourCompressionCycle.mo index c3b2fe8a0c..a23c45981b 100644 --- a/IBPSA/Fluid/Chillers/BaseClasses/BlackBoxVapourCompressionCycle.mo +++ b/IBPSA/Fluid/Chillers/BaseClasses/BlackBoxVapourCompressionCycle.mo @@ -178,7 +178,7 @@ equation ", info="

This black-box model represents the refrigerant cycle of a chiller. -Used in IBPSA.Fluid.Chillers.Chiller, +Used in IBPSA.Fluid.Chillers.ModularReversible, this model serves the simulation of a reversible chiller. Thus, data both of chillers and heat pumps can be used to calculate the three relevant values P_el, QCon and diff --git a/IBPSA/Fluid/Chillers/BaseClasses/Carnot.mo b/IBPSA/Fluid/Chillers/BaseClasses/Carnot.mo index ae9e84c866..5e3559d107 100644 --- a/IBPSA/Fluid/Chillers/BaseClasses/Carnot.mo +++ b/IBPSA/Fluid/Chillers/BaseClasses/Carnot.mo @@ -13,11 +13,11 @@ partial model Carnot parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) "Nominal heating flow rate" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal(final max=0) - = -10 "Temperature difference evaporator outlet-inlet" + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal(final max=0)= + -10 "Temperature difference evaporator outlet-inlet" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal(final min=0) - = 10 "Temperature difference condenser outlet-inlet" + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal(final min=0)= + 10 "Temperature difference condenser outlet-inlet" annotation (Dialog(group="Nominal condition")); // Efficiency @@ -52,12 +52,12 @@ partial model Carnot "Pressure difference over evaporator" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference TAppCon_nominal(min=0) = + parameter Modelica.Units.SI.TemperatureDifference TAppCon_nominal(min=0)= if cp1_default < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in condenser" annotation (Dialog(group="Efficiency")); - parameter Modelica.Units.SI.TemperatureDifference TAppEva_nominal(min=0) = + parameter Modelica.Units.SI.TemperatureDifference TAppEva_nominal(min=0)= if cp2_default < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in evaporator" annotation (Dialog(group="Efficiency")); @@ -137,12 +137,12 @@ partial model Carnot x2=TConAct - TEvaAct, deltaX=0.25) "Carnot efficiency"; - Modelica.Units.SI.Temperature TConAct(start=TCon_nominal + TAppCon_nominal) - = Medium1.temperature(staB1) + QCon_flow/QCon_flow_nominal*TAppCon_nominal + Modelica.Units.SI.Temperature TConAct(start=TCon_nominal + TAppCon_nominal)= + Medium1.temperature(staB1) + QCon_flow/QCon_flow_nominal*TAppCon_nominal "Condenser temperature used to compute efficiency, taking into account pinch temperature between fluid and refrigerant"; - Modelica.Units.SI.Temperature TEvaAct(start=TEva_nominal - TAppEva_nominal) - = Medium2.temperature(staB2) - QEva_flow/QEva_flow_nominal*TAppEva_nominal + Modelica.Units.SI.Temperature TEvaAct(start=TEva_nominal - TAppEva_nominal)= + Medium2.temperature(staB2) - QEva_flow/QEva_flow_nominal*TAppEva_nominal "Evaporator temperature used to compute efficiency, taking into account pinch temperature between fluid and refrigerant"; protected diff --git a/IBPSA/Fluid/Chillers/BaseClasses/PartialCarnot_y.mo b/IBPSA/Fluid/Chillers/BaseClasses/PartialCarnot_y.mo index f966c0a5fb..af351e25f6 100644 --- a/IBPSA/Fluid/Chillers/BaseClasses/PartialCarnot_y.mo +++ b/IBPSA/Fluid/Chillers/BaseClasses/PartialCarnot_y.mo @@ -36,9 +36,9 @@ partial model PartialCarnot_y annotation (Placement(transformation(extent={{-140,70},{-100,110}}))); protected - Modelica.Units.SI.HeatFlowRate QCon_flow_internal(start=QCon_flow_nominal) = + Modelica.Units.SI.HeatFlowRate QCon_flow_internal(start=QCon_flow_nominal)= P - QEva_flow_internal "Condenser heat input"; - Modelica.Units.SI.HeatFlowRate QEva_flow_internal(start=QEva_flow_nominal) = + Modelica.Units.SI.HeatFlowRate QEva_flow_internal(start=QEva_flow_nominal)= if COP_is_for_cooling then -COP*P else (1 - COP)*P "Evaporator heat input"; Modelica.Blocks.Sources.RealExpression yEva_flow_in( diff --git a/IBPSA/Fluid/Chillers/Examples/Chiller.mo b/IBPSA/Fluid/Chillers/Examples/Chiller.mo index cb1c6a8177..11b8376277 100644 --- a/IBPSA/Fluid/Chillers/Examples/Chiller.mo +++ b/IBPSA/Fluid/Chillers/Examples/Chiller.mo @@ -28,12 +28,11 @@ model Chiller "Example for the reversible chiller model." offset=278) "Ramp signal for the temperature input of the sink side's ideal mass flow source" annotation (Placement(transformation(extent={{-94,-76},{-74,-56}}))); - IBPSA.Fluid.Chillers.Chiller chi( + IBPSA.Fluid.Chillers.ModularReversible chi( QUse_flow_nominal=5000, y_nominal=1, redeclare model VapourCompressionCycleInertia = IBPSA.Fluid.HeatPumps.BlackBoxData.VapourCompressionInertias.NoInertia, - use_TSet=false, TCon_nominal=323.15, dTCon_nominal=10, @@ -59,12 +58,11 @@ model Chiller "Example for the reversible chiller model." TEva_start=303.15, redeclare model BlackBoxChillerCooling = IBPSA.Fluid.Chillers.BlackBoxData.EuropeanNorm2D (datTab= - IBPSA.Fluid.Chillers.BlackBoxData.EuropeanNorm2DData.EN14511.Vitocal200AWO201 - ()), + IBPSA.Fluid.Chillers.BlackBoxData.EuropeanNorm2DData.EN14511.Vitocal200AWO201()), redeclare model BlackBoxChillerHeating = IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2D (datTab= - IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2DData.EN14511.Vitocal200AWO201 - ())) annotation (Placement(transformation( + IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2DData.EN14511.Vitocal200AWO201())) + annotation (Placement(transformation( extent={{-24,-29},{24,29}}, rotation=90, origin={2,1}))); @@ -179,8 +177,8 @@ equation {66,1},{76,1}}, color={0,127,255})); connect(chi.ySet, booleanToReal.y) annotation (Line(points={{-2.83333,-26.84}, {-3,-26.84},{-3,-45.3}}, color={0,0,127})); - connect(sinkSideMassFlowSource.ports[1], chi.port_a1) annotation (Line(points - ={{-34,-48},{-12.5,-48},{-12.5,-23}}, color={0,127,255})); + connect(sinkSideMassFlowSource.ports[1], chi.port_a1) annotation (Line(points= + {{-34,-48},{-12.5,-48},{-12.5,-23}}, color={0,127,255})); connect(sinkSideFixedBoundary.ports[1], chi.port_b1) annotation (Line(points= {{-76,62},{-50,62},{-50,25},{-12.5,25}}, color={0,127,255})); connect(pumSou.port_b, chi.port_a2) diff --git a/IBPSA/Fluid/Chillers/LargeScaleWaterToWater.mo b/IBPSA/Fluid/Chillers/LargeScaleWaterToWater.mo index 0b553f952c..525c37b799 100644 --- a/IBPSA/Fluid/Chillers/LargeScaleWaterToWater.mo +++ b/IBPSA/Fluid/Chillers/LargeScaleWaterToWater.mo @@ -1,6 +1,6 @@ within IBPSA.Fluid.Chillers; model LargeScaleWaterToWater - extends Chiller( + extends ModularReversible( mCon_flow_nominal=autCalMCon_flow*scaFac, mEva_flow_nominal=autCalMEva_flow*scaFac, tauCon=autCalVCon*rhoCon/autCalMCon_flow, diff --git a/IBPSA/Fluid/Chillers/Chiller.mo b/IBPSA/Fluid/Chillers/ModularReversible.mo similarity index 96% rename from IBPSA/Fluid/Chillers/Chiller.mo rename to IBPSA/Fluid/Chillers/ModularReversible.mo index 58f7eef41f..132cc45b6f 100644 --- a/IBPSA/Fluid/Chillers/Chiller.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible.mo @@ -1,5 +1,5 @@ within IBPSA.Fluid.Chillers; -model Chiller +model ModularReversible "Grey-box model for reversible chillers using a black-box to simulate the refrigeration cycle" extends IBPSA.Fluid.HeatPumps.BaseClasses.PartialReversibleVapourCompressionMachine( @@ -14,7 +14,7 @@ model Chiller replaceable model BlackBoxChillerCooling = IBPSA.Fluid.Chillers.BlackBoxData.BaseClasses.PartialChillerBlackBox constrainedby - IBPSA.Fluid.Chillers.BlackBoxData.BaseClasses.PartialChillerBlackBox( + IBPSA.Fluid.Chillers.BlackBoxData.BaseClasses.PartialChillerBlackBox( final QUse_flow_nominal=QUse_flow_nominal, final TCon_nominal=TCon_nominal, final TEva_nominal=TEva_nominal, @@ -28,7 +28,7 @@ model Chiller replaceable model BlackBoxChillerHeating = IBPSA.Fluid.HeatPumps.BlackBoxData.BaseClasses.NoHeating constrainedby - IBPSA.Fluid.HeatPumps.BlackBoxData.BaseClasses.PartialHeatPumpBlackBox( + IBPSA.Fluid.HeatPumps.BlackBoxData.BaseClasses.PartialHeatPumpBlackBox( final QUse_flow_nominal=0, final scaFac=scaFac, final TCon_nominal=TEva_nominal, @@ -162,4 +162,4 @@ equation IBPSA.Fluid.HeatPumps.BaseClasses.PartialReversibleVapourCompressionMachine for information on the concept.

")); -end Chiller; +end ModularReversible; diff --git a/IBPSA/Fluid/Chillers/ReversibleCarnotWithLosses.mo b/IBPSA/Fluid/Chillers/ReversibleCarnotWithLosses.mo new file mode 100644 index 0000000000..038ffdf5bd --- /dev/null +++ b/IBPSA/Fluid/Chillers/ReversibleCarnotWithLosses.mo @@ -0,0 +1,5 @@ +within IBPSA.Fluid.Chillers; +model ReversibleCarnotWithLosses + "Reversible chiller using carnot approach with losses (frost, heat, inertia)" + extends ModularReversible; +end ReversibleCarnotWithLosses; diff --git a/IBPSA/Fluid/Chillers/package.order b/IBPSA/Fluid/Chillers/package.order index 2417066e38..e82f3e67ee 100644 --- a/IBPSA/Fluid/Chillers/package.order +++ b/IBPSA/Fluid/Chillers/package.order @@ -1,7 +1,8 @@ Carnot_TEva Carnot_y -Chiller LargeScaleWaterToWater +ModularReversible +ReversibleCarnotWithLosses BlackBoxData Examples Validation diff --git a/IBPSA/Fluid/HeatPumps/BaseClasses/BlackBoxVapourCompressionCycle.mo b/IBPSA/Fluid/HeatPumps/BaseClasses/BlackBoxVapourCompressionCycle.mo index 2b5cb90f2d..50391ef9a2 100644 --- a/IBPSA/Fluid/HeatPumps/BaseClasses/BlackBoxVapourCompressionCycle.mo +++ b/IBPSA/Fluid/HeatPumps/BaseClasses/BlackBoxVapourCompressionCycle.mo @@ -189,7 +189,7 @@ equation ", info="

This black-box model represents the refrigerant cycle of a heat pump.

-

Used in IBPSA.Fluid.HeatPumps.ModularReversible, this model serves the simulation of a reversible heat pump.

+

Used in IBPSA.Fluid.HeatPumps.HeatPump, this model serves the simulation of a reversible heat pump.

Thus, data both of chillers and heat pumps can be used to calculate the three relevant values PEle, QCon and QEva.

The revSet of the heat pump is used to switch between the black-box data of the chiller and the heat pump.

The user can choose between different types of black-box data or implement a new black-box model by extending from the IBPSA.Fluid.HeatPumps.BlackBoxData.BaseClasses.PartialBlackBox model.

diff --git a/IBPSA/Fluid/HeatPumps/BaseClasses/PartialBlackBoxVapourCompressionCycle.mo b/IBPSA/Fluid/HeatPumps/BaseClasses/PartialBlackBoxVapourCompressionCycle.mo index c8d250d201..04ba541727 100644 --- a/IBPSA/Fluid/HeatPumps/BaseClasses/PartialBlackBoxVapourCompressionCycle.mo +++ b/IBPSA/Fluid/HeatPumps/BaseClasses/PartialBlackBoxVapourCompressionCycle.mo @@ -167,7 +167,7 @@ equation ", info="

This black-box model represents the refrigerant cycle of a vapour - compression machine. Used in IBPSA.Fluid.HeatPumps.ModularReversible and + compression machine. Used in IBPSA.Fluid.HeatPumps.HeatPump and IBPSA.Fluid.Chiller.Chiller, this model serves the simulation of a reversible vapour compression machine. Thus, data both of chillers and heat pumps can be used to calculate the three relevant values diff --git a/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/WAMAK_WaterToWater_150kW.mo b/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/WAMAK_WaterToWater_150kW.mo new file mode 100644 index 0000000000..0234729866 --- /dev/null +++ b/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/WAMAK_WaterToWater_150kW.mo @@ -0,0 +1,31 @@ +within IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2DData.EN14511; +record WAMAK_WaterToWater_150kW "150 kW water to water with R134a" + extends HeatPumpBaseDataDefinition( + tableUppBou=[-5,82; 45,82], + mEva_flow_nominal=24.17/3600*997, + mCon_flow_nominal=13.60/3600*997, + tablePel=[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40; 60,20150,20230,20300,20370, + 20430,20500,20560,20620,20670,20730,20780,20830,20880,20940,20990,21040, + 21090,21140,21190,21250,21300,21360,21410,21470,21530,21600,21660,21730, + 21810,21880,21960,22050,22130,22230,22320,22420; 70,24450,24570,24670, + 24770,24870,24960,25050,25130,25210,25290,25360,25430,25500,25560,25620, + 25680,25730,25790,25840,25890,25940,25990,26040,26090,26140,26190,26240, + 26290,26340,26400,26450,26510,26560,26620,26690,26750; 80,29460,29620, + 29780,29940,30080,30220,30350,30470,30590,30700,30810,30910,31010,31100, + 31190,31270,31350,31420,31490,31560,31620,31680,31740,31790,31850,31900, + 31950,32000,32040,32090,32130,32180,32220,32270,32310,32360], + tableQCon_flow=[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40; 60,58030,59710,61440, + 63220,65040,66920,68860,70850,72900,75020,77190,79440,81750,84120,86570, + 89100,91700,94380,97130,99970,102890,105900,109000,112190,115470,118840, + 122310,125880,129550,133320,137200,141180,145270,149480,153790,158220; + 70,56420,57930,59470,61060,62680,64350,66060,67820,69640,71500,73410, + 75390,77420,79500,81660,83870,86150,88500,90920,93410,95980,98620, + 101350,104150,107030,110000,113060,116200,119430,122760,126190,129710, + 133330,137050,140870,144800; 80,55020,56370,57740,59130,60570,62030, + 63530,65070,66650,68270,69930,71640,73400,75210,77070,78990,80960,82990, + 85080,87230,89450,91740,94090,96520,99010,101590,104240,106970,109780, + 112670,115650,118710,121870,125110,128450,131890], + device_id="WAMAK_WaterToWaterr_150kW"); +end WAMAK_WaterToWater_150kW; diff --git a/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/package.order b/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/package.order index ffcced3aba..013a10f863 100644 --- a/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/package.order +++ b/IBPSA/Fluid/HeatPumps/BlackBoxData/EuropeanNorm2DData/EN14511/package.order @@ -6,3 +6,4 @@ Ochsner_GMSW_15plus StiebelEltron_WPL18 Vaillant_VWL_101 Vitocal200AWO201 +WAMAK_WaterToWater_150kW diff --git a/IBPSA/Fluid/HeatPumps/LargeScaleWaterToWater.mo b/IBPSA/Fluid/HeatPumps/LargeScaleWaterToWater.mo index 7048322265..006fc85a55 100644 --- a/IBPSA/Fluid/HeatPumps/LargeScaleWaterToWater.mo +++ b/IBPSA/Fluid/HeatPumps/LargeScaleWaterToWater.mo @@ -2,6 +2,15 @@ within IBPSA.Fluid.HeatPumps; model LargeScaleWaterToWater "Model with automatic parameter estimation for large scale water-to-water heat pumps" extends ModularReversible( + redeclare model BlackBoxHeatPumpCooling = + IBPSA.Fluid.Chillers.BlackBoxData.BaseClasses.NoCooling, + redeclare model BlackBoxHeatPumpHeating = + IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2D (redeclare + IBPSA.Fluid.HeatPumps.BlackBoxData.Frosting.NoFrosting iceFacCal, + datTab=datTab), + use_rev=false, + redeclare model VapourCompressionCycleInertia = + IBPSA.Fluid.HeatPumps.BlackBoxData.VapourCompressionInertias.NoInertia, mCon_flow_nominal=autCalMCon_flow*scaFac, mEva_flow_nominal=autCalMEva_flow*scaFac, tauCon=autCalVCon*rhoCon/autCalMCon_flow, @@ -12,6 +21,9 @@ model LargeScaleWaterToWater final autCalVCon=max(1E-7*QUse_flow_nominal - 94E-4, autCalVMin), final autCalVEva=max(1E-7*QUse_flow_nominal - 75E-4, autCalVMin)); + parameter BlackBoxData.EuropeanNorm2DData.HeatPumpBaseDataDefinition datTab= + IBPSA.Fluid.HeatPumps.BlackBoxData.EuropeanNorm2DData.EN14511.WAMAK_WaterToWater_150kW() + "Data Table of HP" annotation(choicesAllMatching=true); annotation (Documentation(info="

Model using parameters for a large scale water-to-water heat pump.

Parameters are based on an automatic estimation, see: IBPSA.Fluid.HeatPumps.BaseClasses.LargeScaleWaterToWaterParameters

diff --git a/IBPSA/Fluid/Interfaces/VapourCompressionMachineControlBus.mo b/IBPSA/Fluid/Interfaces/VapourCompressionMachineControlBus.mo index cd93996ea0..6f565a00c7 100644 --- a/IBPSA/Fluid/Interfaces/VapourCompressionMachineControlBus.mo +++ b/IBPSA/Fluid/Interfaces/VapourCompressionMachineControlBus.mo @@ -5,8 +5,8 @@ expandable connector VapourCompressionMachineControlBus annotation (Documentation(info="

Bus connector for a vapour compression machine.

Used in the reversbile modular approaches for chiller and heat pump in -the models -IBPSA.Fluid.Chillers.Chiller and +the models +IBPSA.Fluid.Chillers.ModularReversible and IBPSA.Fluid.HeatPumps.ModularReversible.

", revisions="