diff --git a/IBPSA/Fluid/Chillers/ModularReversible/Examples/LargeScaleWaterToWater.mo b/IBPSA/Fluid/Chillers/ModularReversible/Examples/LargeScaleWaterToWater.mo index c9e777c4cd..245a42525c 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/Examples/LargeScaleWaterToWater.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/Examples/LargeScaleWaterToWater.mo @@ -10,13 +10,13 @@ model LargeScaleWaterToWater IBPSA.Fluid.Chillers.ModularReversible.Data.TableData2D.EN14511.Carrier30XWP1012_1MW datTab, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 - safCtrParEurNor, + safCtrPar, redeclare package MediumCon = MediumCon, redeclare package MediumEva = MediumEva, QCoo_flow_nominal=-1000000, - TCon_nominal=313.15, + TConCoo_nominal=313.15, dpCon_nominal(displayUnit="Pa") = 6000, - TEva_nominal=278.15, + TEvaCoo_nominal=278.15, dpEva_nominal(displayUnit="Pa") = 6000, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Large scale water to water chiller" @@ -61,19 +61,19 @@ model LargeScaleWaterToWater annotation (Placement(transformation(extent={{52,-40},{72,-20}}))); equation connect(souCon.ports[1], chi.port_a1) annotation (Line( - points={{-40,16},{-20,16},{-20,15},{-5.55112e-16,15}}, + points={{-40,16},{-20,16},{-20,16},{-5.55112e-16,16}}, color={0,127,255}, smooth=Smooth.None)); connect(souEva.ports[1], chi.port_a2) annotation (Line( - points={{40,4},{30,4},{30,5},{20,5}}, + points={{40,4},{30,4},{30,4},{20,4}}, color={0,127,255}, smooth=Smooth.None)); connect(chi.port_b1, sinCon.ports[1]) annotation (Line( - points={{20,15},{30,15},{30,40},{60,40}}, + points={{20,16},{30,16},{30,40},{60,40}}, color={0,127,255}, smooth=Smooth.None)); connect(sinEva.ports[1], chi.port_b2) annotation (Line( - points={{-40,-20},{-10,-20},{-10,5},{-5.55112e-16,5}}, + points={{-40,-20},{-10,-20},{-10,4},{-5.55112e-16,4}}, color={0,127,255}, smooth=Smooth.None)); connect(TConIn.y, souCon.T_in) annotation (Line( @@ -84,8 +84,8 @@ equation points={{73,-30},{80,-30},{80,8},{62,8}}, color={0,0,127}, smooth=Smooth.None)); - connect(ySet.y, chi.ySet) annotation (Line(points={{-39,60},{-16,60},{-16, - 11.6667},{-1.6,11.6667}}, color={0,0,127})); + connect(ySet.y, chi.ySet) annotation (Line(points={{-39,60},{-16,60},{-16,12},{-1.2, + 12}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=3600), __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Fluid/Chillers/ModularReversible/Examples/LargeScaleWaterToWater.mos" "Simulate and plot"), diff --git a/IBPSA/Fluid/Chillers/ModularReversible/Examples/ModularReversible.mo b/IBPSA/Fluid/Chillers/ModularReversible/Examples/ModularReversible.mo index 9a0dfd1889..b76d5c784a 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/Examples/ModularReversible.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/Examples/ModularReversible.mo @@ -18,13 +18,13 @@ model ModularReversible redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar(minOffTime=100, use_opeEnv=false), - TCon_nominal=313.15, + TConCoo_nominal=313.15, dpCon_nominal(displayUnit="Pa") = 6000, use_conCap=false, CCon=0, GConOut=0, GConIns=0, - TEva_nominal=278.15, + TEvaCoo_nominal=278.15, dTEva_nominal=5, dTCon_nominal=5, dpEva_nominal(displayUnit="Pa") = 6000, @@ -89,11 +89,11 @@ model ModularReversible annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation connect(souCon.ports[1], chi.port_a1) annotation (Line( - points={{-40,16},{-20,16},{-20,16},{-5.55112e-16,16}}, + points={{-40,16},{0,16}}, color={0,127,255}, smooth=Smooth.None)); connect(souEva.ports[1], chi.port_a2) annotation (Line( - points={{40,4},{30,4},{30,4},{20,4}}, + points={{40,4},{20,4}}, color={0,127,255}, smooth=Smooth.None)); connect(chi.port_b1, sinCon.ports[1]) annotation (Line( @@ -101,7 +101,7 @@ equation color={0,127,255}, smooth=Smooth.None)); connect(sinEva.ports[1], chi.port_b2) annotation (Line( - points={{-40,-20},{-10,-20},{-10,4},{-5.55112e-16,4}}, + points={{-40,-20},{-10,-20},{-10,4},{0,4}}, color={0,127,255}, smooth=Smooth.None)); connect(TConIn.y, souCon.T_in) annotation (Line( @@ -112,10 +112,10 @@ equation points={{75,-30},{80,-30},{80,8},{62,8}}, color={0,0,127}, smooth=Smooth.None)); - connect(ySet.y, chi.ySet) annotation (Line(points={{-39,60},{-16,60},{-16,12},{-1.2, - 12}}, color={0,0,127})); - connect(chiCoo.y, chi.coo) annotation (Line(points={{-39,-50},{-22,-50},{-22,7.9}, - {-1.1,7.9}}, color={255,0,255})); + connect(ySet.y, chi.ySet) annotation (Line(points={{-39,60},{-16,60},{-16,12},{ + -1.2,12}}, color={0,0,127})); + connect(chiCoo.y, chi.coo) annotation (Line(points={{-39,-50},{-22,-50},{-22, + 7.9},{-1.1,7.9}}, color={255,0,255})); annotation (experiment(Tolerance=1e-6, StopTime=3600), __Dymola_Commands(file="modelica://IBPSA/Resources/Scripts/Dymola/Fluid/Chillers/ModularReversible/Examples/ModularReversible.mos" "Simulate and plot"), diff --git a/IBPSA/Fluid/Chillers/ModularReversible/Examples/ReversibleCarnotWithLosses.mo b/IBPSA/Fluid/Chillers/ModularReversible/Examples/ReversibleCarnotWithLosses.mo index 1bba8ae139..fe89f4619c 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/Examples/ReversibleCarnotWithLosses.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/Examples/ReversibleCarnotWithLosses.mo @@ -16,14 +16,14 @@ model ReversibleCarnotWithLosses use_maxCycRat=false, tabUppHea=[263.15,313.15; 333.15,313.15], tabLowCoo=[263.15,283.15; 333.15,283.15], - use_TUseSidOut=true), - TCon_nominal=313.15, + use_TEvaOutCoo=true), + TConCoo_nominal=313.15, dpCon_nominal(displayUnit="Pa") = 6000, use_conCap=false, CCon=0, GConOut=0, GConIns=0, - TEva_nominal=278.15, + TEvaCoo_nominal=278.15, dTEva_nominal(displayUnit="K") = 10, dTCon_nominal(displayUnit="K") = 5, dpEva_nominal(displayUnit="Pa") = 6000, @@ -33,7 +33,9 @@ model ReversibleCarnotWithLosses GEvaIns=0, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, show_T=true, - QHea_flow_nominal=40000) + QHea_flow_nominal=40000, + TConHea_nominal=293.15, + TEvaHea_nominal=303.15) "Chiller instance with reversbile Carnot approach" annotation (Placement(transformation(extent={{0,0},{20,20}}))); IBPSA.Fluid.Sources.MassFlowSource_T souCon( diff --git a/IBPSA/Fluid/Chillers/ModularReversible/LargeScaleWaterToWater.mo b/IBPSA/Fluid/Chillers/ModularReversible/LargeScaleWaterToWater.mo index 85e4e6c4a3..cf1caefdce 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/LargeScaleWaterToWater.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/LargeScaleWaterToWater.mo @@ -1,7 +1,6 @@ within IBPSA.Fluid.Chillers.ModularReversible; model LargeScaleWaterToWater "Large scale water to water chiller" extends ModularReversible( - final safCtrPar=safCtrParEurNor, dpEva_nominal=datTab.dpEva_nominal*scaFac^2, dpCon_nominal=datTab.dpCon_nominal*scaFac^2, final dTEva_nominal=-QCoo_flow_nominal/cpEva/mEva_flow_nominal, @@ -16,6 +15,14 @@ model LargeScaleWaterToWater "Large scale water to water chiller" final GConOut=0, final CCon=0, final use_conCap=false, + redeclare replaceable + IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar + constrainedby + IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( + final tabUppHea=datTab.tabLowBou, + final tabLowCoo=datTab.tabLowBou, + final use_TEvaOutCoo=datTab.use_TEvaOutForOpeEnv, + final use_TConOutCoo=datTab.use_TConOutForOpeEnv), redeclare model RefrigerantCycleInertia = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia, redeclare model RefrigerantCycleChillerHeating = @@ -31,6 +38,7 @@ model LargeScaleWaterToWater "Large scale water to water chiller" final mEva_flow_nominal=autCalMasEva_flow, final tauCon=autCalVCon*rhoCon/autCalMasCon_flow, final tauEva=autCalVEva*rhoEva/autCalMasEva_flow); + final parameter Real scaFac=refCyc.refCycChiCoo.scaFac "Scaling factor of chiller"; extends IBPSA.Fluid.HeatPumps.ModularReversible.BaseClasses.LargeScaleWaterToWaterDeclarations( final autCalMasCon_flow=max(5E-5*abs(QCoo_flow_nominal) + 0.3161, autCalMMin_flow), @@ -42,19 +50,6 @@ model LargeScaleWaterToWater "Large scale water to water chiller" datTab constrainedby Data.TableData2D.Generic "Data Table of Chiller" annotation (choicesAllMatching=true, Placement(transformation(extent={{42,12},{58,28}}))); - // Upper boundary has no influence as use_rev=false. - // Thus, setting tabUppHea to tabLowBou - replaceable parameter - IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 - safCtrParEurNor constrainedby - IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( - final tabUppHea=datTab.tabLowBou, - final tabLowCoo=datTab.tabLowBou, - final use_TUseSidOut=datTab.use_TEvaOutForOpeEnv, - final use_TAmbSidOut=datTab.use_TConOutForOpeEnv) "Safety control parameters" - annotation (Dialog(enable=use_intSafCtr, group="Safety control"), - choicesAllMatching=true, - Placement(transformation(extent={{72,12},{88,28}}))); annotation (Documentation(info="

diff --git a/IBPSA/Fluid/Chillers/ModularReversible/ModularReversible.mo b/IBPSA/Fluid/Chillers/ModularReversible/ModularReversible.mo index c3d8edb5f2..8e7d264b3c 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/ModularReversible.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/ModularReversible.mo @@ -13,7 +13,6 @@ model ModularReversible final PEle_nominal=refCyc.refCycChiCoo.PEle_nominal, mEva_flow_nominal=-QCoo_flow_nominal/(dTEva_nominal*cpEva), mCon_flow_nominal=(PEle_nominal - QCoo_flow_nominal)/(dTCon_nominal*cpCon), - final scaFac=refCyc.refCycChiCoo.scaFac, use_rev=true, redeclare IBPSA.Fluid.Chillers.ModularReversible.BaseClasses.RefrigerantCycle refCyc( redeclare model RefrigerantCycleChillerCooling = @@ -24,46 +23,47 @@ model ModularReversible annotation(Dialog(group="Nominal condition")); parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal=0 "Nominal heating capacity" - annotation(Dialog(group="Nominal condition", enable=use_rev)); + annotation(Dialog(group="Nominal condition - Heating", enable=use_rev)); replaceable model RefrigerantCycleChillerCooling = IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle - (PEle_nominal=0, - QCooNoSca_flow_nominal=0) + (PEle_nominal=0) constrainedby IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle( final useInChi=true, + final TCon_nominal=TConCoo_nominal, + final TEva_nominal=TEvaCoo_nominal, final QCoo_flow_nominal=QCoo_flow_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final dTCon_nominal=dTCon_nominal, - final dTEva_nominal=dTEva_nominal, - final mCon_flow_nominal=mCon_flow_nominal, - final mEva_flow_nominal=mEva_flow_nominal, final cpCon=cpCon, - final cpEva=cpEva, - final y_nominal=y_nominal) + final cpEva=cpEva) "Refrigerant cycle module for the cooling mode" annotation (choicesAllMatching=true); replaceable model RefrigerantCycleChillerHeating = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.NoHeating + (PEle_nominal=PEle_nominal) constrainedby IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle( final useInHeaPum=false, + final TCon_nominal=TEvaHea_nominal, + final TEva_nominal=TConHea_nominal, final QHea_flow_nominal=QHea_flow_nominal, - final PEle_nominal=refCyc.refCycChiCoo.PEle_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final dTCon_nominal=dTCon_nominal, - final dTEva_nominal=dTEva_nominal, - final mCon_flow_nominal=mCon_flow_nominal, - final mEva_flow_nominal=mEva_flow_nominal, final cpCon=cpCon, - final cpEva=cpEva, - final y_nominal=y_nominal) + final cpEva=cpEva) "Refrigerant cycle module for the heating mode" annotation (Dialog(enable=use_rev),choicesAllMatching=true); + parameter Modelica.Units.SI.Temperature TConCoo_nominal + "Nominal temperature at secondary condenser side in cooling mode" + annotation(Dialog(enable=use_rev, group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TEvaCoo_nominal + "Nominal temperature at secondary evaporator side in cooling mode" + annotation(Dialog(enable=use_rev, group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TConHea_nominal=TConCoo_nominal + "Nominal temperature at secondary condenser side in heating mode" + annotation (Dialog(group="Nominal condition - Heating")); + parameter Modelica.Units.SI.Temperature TEvaHea_nominal=TEvaCoo_nominal + "Nominal temperature at secondary evaporator side in heating mode" + annotation (Dialog(group="Nominal condition - Heating")); Modelica.Blocks.Interfaces.BooleanInput coo if not use_busConOnl and use_rev "=true for cooling, =false for heating" diff --git a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/NoCooling.mo b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/NoCooling.mo index b673154476..6a4358300b 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/NoCooling.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/NoCooling.mo @@ -2,6 +2,8 @@ within IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses; model NoCooling "Placeholder to disable cooling" extends PartialChillerCycle( + TEva_nominal=273.15, + TCon_nominal=273.15, cpEva=4184, cpCon=4184, PEle_nominal=0, @@ -9,14 +11,6 @@ model NoCooling IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, datSou="", - QCooNoSca_flow_nominal=1, - scaFac=0, - mEva_flow_nominal=1, - mCon_flow_nominal=1, - dTEva_nominal=0, - dTCon_nominal=0, - TEva_nominal=273.15, - TCon_nominal=273.15, QCoo_flow_nominal=0); Modelica.Blocks.Sources.Constant const(final k=0) "Zero energy flows" diff --git a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/PartialChillerCycle.mo b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/PartialChillerCycle.mo index 7ae6963fa1..10b292228e 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/PartialChillerCycle.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/BaseClasses/PartialChillerCycle.mo @@ -2,14 +2,10 @@ within IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses; partial model PartialChillerCycle "Partial model of refrigerant cycle used for chiller applications" extends - IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialRefrigerantCycle( - scaFac=QCoo_flow_nominal/QCooNoSca_flow_nominal); + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialRefrigerantCycle; parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal "Nominal cooling capacity" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.HeatFlowRate QCooNoSca_flow_nominal - "Unscaled nominal cooling capacity " - annotation (Dialog(group="Nominal condition")); parameter Boolean useInChi "=false to indicate that this model is used as a heat pump"; equation diff --git a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo index df8faa2722..25cbbd7b1b 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo @@ -3,8 +3,7 @@ model ConstantCarnotEffectiveness "Carnot EER with a constant Carnot effectivene extends IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle( useInChi=true, - PEle_nominal=-QCoo_flow_nominal/EER_nominal/y_nominal, - QCooNoSca_flow_nominal=QCoo_flow_nominal, + PEle_nominal=-QCoo_flow_nominal/EER_nominal, datSou="ConstantCarnotEffectiveness"); extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialCarnot( diff --git a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/TableData2D.mo b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/TableData2D.mo index 42a276f7e8..a41241a5ab 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/TableData2D.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/RefrigerantCycle/TableData2D.mo @@ -4,17 +4,10 @@ model TableData2D extends IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle( final datSou=datTab.devIde, - mEva_flow_nominal=datTab.mEva_flow_nominal*scaFac, - mCon_flow_nominal=datTab.mCon_flow_nominal*scaFac, PEle_nominal=Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( tabIdePEle, TEva_nominal, - TCon_nominal) * scaFac * y_nominal, - QCooNoSca_flow_nominal= - Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( - tabIdeQUse_flow, - TEva_nominal, - TCon_nominal) * y_nominal); + TCon_nominal) * scaFac); extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialTableData2D( final useInRevDev=not useInChi, @@ -22,15 +15,22 @@ model TableData2D final use_TEvaOutForTab=datTab.use_TEvaOutForTab, tabQUse_flow(final table=datTab.tabQEva_flow), tabPEle(final table=datTab.tabPEle), + scaFac=QCoo_flow_nominal/QCooNoSca_flow_nominal, + mEva_flow_nominal=datTab.mEva_flow_nominal*scaFac, + mCon_flow_nominal=datTab.mCon_flow_nominal*scaFac, final valTabQEva_flow = {{-tabQUse_flow.table[j, i] for i in 2:numCol} for j in 2:numRow}, final valTabQCon_flow = valTabQEva_flow .+ valTabPEle, - final mCon_flow_nominal_internal=mCon_flow_nominal, - final mEva_flow_nominal_internal=mEva_flow_nominal, final mCon_flow_max=max(valTabQCon_flow) * scaFac / cpCon / dTMin, final mCon_flow_min=min(valTabQCon_flow) * scaFac / cpCon / dTMax, final mEva_flow_min=min(valTabQEva_flow) * scaFac / cpEva / dTMax, - final mEva_flow_max=max(valTabQEva_flow) * scaFac / cpEva / dTMin, - constScaFac(final k=scaFac)); + final mEva_flow_max=max(valTabQEva_flow) * scaFac / cpEva / dTMin); + parameter Modelica.Units.SI.HeatFlowRate QCooNoSca_flow_nominal= + Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( + tabIdeQUse_flow, + TEva_nominal, + TCon_nominal) + "Unscaled nominal cooling capacity " + annotation (Dialog(group="Nominal condition")); replaceable parameter IBPSA.Fluid.Chillers.ModularReversible.Data.TableData2D.Generic datTab "Data Table of Chiller" annotation (choicesAllMatching=true); diff --git a/IBPSA/Fluid/Chillers/ModularReversible/ReversibleCarnotWithLosses.mo b/IBPSA/Fluid/Chillers/ModularReversible/ReversibleCarnotWithLosses.mo index 094e81d775..a39c37dcab 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/ReversibleCarnotWithLosses.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/ReversibleCarnotWithLosses.mo @@ -2,9 +2,11 @@ within IBPSA.Fluid.Chillers.ModularReversible; model ReversibleCarnotWithLosses "Reversible chiller using Carnot approach with losses (frost, heat, inertia)" extends IBPSA.Fluid.Chillers.ModularReversible.ModularReversible( + QHea_flow_nominal=PEle_nominal*refCyc.refCycChiHea.COP_nominal, redeclare model RefrigerantCycleChillerHeating = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness ( + PEle_nominal=PEle_nominal, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, @@ -33,11 +35,11 @@ model ReversibleCarnotWithLosses parameter Modelica.Units.SI.TemperatureDifference TAppCon_nominal=if cpCon < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in condenser" - annotation(Dialog(group="Nominal condition - Condenser")); + annotation(Dialog(group="Nominal condition")); parameter Modelica.Units.SI.TemperatureDifference TAppEva_nominal=if cpEva < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in evaporator" - annotation(Dialog(group="Nominal condition - Evaporator")); + annotation(Dialog(group="Nominal condition")); parameter Modelica.Units.SI.Time refIneTimCon = 300 "Refrigerant cycle inertia time constant for first order delay" annotation(Dialog(group="Refrigerant cycle inertia")); diff --git a/IBPSA/Fluid/Chillers/ModularReversible/Validation/BaseClasses/PartialModularComparison.mo b/IBPSA/Fluid/Chillers/ModularReversible/Validation/BaseClasses/PartialModularComparison.mo index c33ff86209..5002741896 100644 --- a/IBPSA/Fluid/Chillers/ModularReversible/Validation/BaseClasses/PartialModularComparison.mo +++ b/IBPSA/Fluid/Chillers/ModularReversible/Validation/BaseClasses/PartialModularComparison.mo @@ -13,13 +13,12 @@ partial model PartialModularComparison redeclare final package MediumCon = Medium1, redeclare final package MediumEva = Medium2, QCoo_flow_nominal=-QUse_flow_nominal, - final y_nominal=1, redeclare final model RefrigerantCycleInertia = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia, final use_rev=false, final use_intSafCtr=false, final tauCon=tau1, - final TCon_nominal=TCon_nominal, + final TConCoo_nominal=TCon_nominal, final dTCon_nominal=dTCon_nominal, final dpCon_nominal=dp1_nominal, final use_conCap=false, @@ -27,7 +26,7 @@ partial model PartialModularComparison final GConOut=0, final GConIns=0, final tauEva=tau2, - final TEva_nominal=TEva_nominal, + final TEvaCoo_nominal=TEva_nominal, final dTEva_nominal=dTEva_nominal, final dpEva_nominal=dp2_nominal, final use_evaCap=false, diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/BaseClasses/PartialReversibleRefrigerantMachine.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/BaseClasses/PartialReversibleRefrigerantMachine.mo index 7f48feb267..51a8b5aa67 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/BaseClasses/PartialReversibleRefrigerantMachine.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/BaseClasses/PartialReversibleRefrigerantMachine.mo @@ -22,9 +22,6 @@ partial model PartialReversibleRefrigerantMachine PartialModularRefrigerantCycle(final use_rev=use_rev) "Model of the refrigerant cycle" annotation (Placement(transformation( extent={{-18,-18},{18,18}}, rotation=90))); - parameter Real y_nominal(unit="1", min=0, max=1)=1 - "Nominal relative compressor speed" - annotation (Dialog(group="Nominal condition")); parameter Modelica.Units.SI.HeatFlowRate PEle_nominal "Nominal electrical power consumption" annotation (Dialog(group="Nominal condition")); @@ -43,19 +40,16 @@ partial model PartialReversibleRefrigerantMachine parameter Modelica.Units.SI.Time tauCon=30 "Condenser heat transfer time constant at nominal flow" annotation (Dialog(tab="Condenser", group="Dynamics")); - parameter Modelica.Units.SI.Temperature TCon_nominal - "Nominal temperature of condenser medium" - annotation (Dialog(group="Nominal condition - Condenser")); parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal - "Nominal temperature difference in condenser medium" - annotation (Dialog(group="Nominal condition - Condenser")); + "Nominal temperature difference in condenser medium, used to calculate mass flow rate" + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal "Nominal mass flow rate of the condenser medium" - annotation (Dialog(group="Nominal condition - Condenser")); + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Modelica.Units.SI.PressureDifference dpCon_nominal(displayUnit="Pa") "Pressure drop at nominal mass flow rate" - annotation (Dialog(group="Nominal condition - Condenser")); + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Real deltaMCon=0.1 "Fraction of nominal mass flow rate where transition to turbulent occurs" annotation (Dialog(tab="Condenser", group="Flow resistance")); @@ -92,19 +86,16 @@ partial model PartialReversibleRefrigerantMachine parameter Modelica.Units.SI.Time tauEva=30 "Evaporator heat transfer time constant at nominal flow" annotation (Dialog(tab="Evaporator", group="Dynamics")); - parameter Modelica.Units.SI.Temperature TEva_nominal - "Nominal temperature of evaporator medium" - annotation (Dialog(group="Nominal condition - Evaporator")); parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal - "Nominal temperature difference in evaporator medium" - annotation (Dialog(group="Nominal condition - Evaporator")); + "Nominal temperature difference in evaporator medium, used to calculate mass flow rate" + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal "Nominal mass flow rate of the evaporator medium" - annotation (Dialog(group="Nominal condition - Evaporator")); + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Modelica.Units.SI.PressureDifference dpEva_nominal(displayUnit="Pa") "Pressure drop at nominal mass flow rate" - annotation (Dialog(group="Nominal condition - Evaporator")); + annotation (Dialog(group="Nominal condition - Pressure losses")); parameter Real deltaMEva=0.1 "Fraction of nominal mass flow rate where transition to turbulent occurs" annotation (Dialog(tab="Evaporator", group="Flow resistance")); @@ -381,10 +372,10 @@ partial model PartialReversibleRefrigerantMachine rotation=180, origin={110,30}))); // To avoid using the bus, set the section below to protected -protected // +protected RefrigerantMachineControlBus sigBus "Bus with model outputs and possibly inputs" annotation (Placement(transformation( extent={{-156,-58},{-126,-24}}),iconTransformation(extent={{-108,-52}, @@ -397,13 +388,12 @@ protected use_intSafCtr)); // +protected parameter Boolean use_COP "=true to enable COP output"; parameter Boolean use_EER "=true to enable EER output"; - parameter Real scaFac "Scaling factor"; parameter MediumCon.ThermodynamicState staCon_nominal=MediumCon.setState_pTX( T=MediumCon.T_default, p=MediumCon.p_default, X=MediumCon.X_default) "Nominal state of condenser medium"; diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/LargeScaleWaterToWater_OneRoomRadiator.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/LargeScaleWaterToWater_OneRoomRadiator.mo index 8db847c93c..4716168d5f 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/LargeScaleWaterToWater_OneRoomRadiator.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/LargeScaleWaterToWater_OneRoomRadiator.mo @@ -19,13 +19,13 @@ model LargeScaleWaterToWater_OneRoomRadiator IBPSA.Fluid.HeatPumps.ModularReversible.LargeScaleWaterToWater heaPum( QHea_flow_nominal=Q_flow_nominal, use_intSafCtr=true, - TCon_nominal=TRadSup_nominal, + TConHea_nominal=TRadSup_nominal, dpCon_nominal(displayUnit="Pa"), - TEva_nominal=sou.T, + TEvaHea_nominal=sou.T, dpEva_nominal(displayUnit="Pa"), energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 - safCtrParEurNor, + safCtrPar, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN14511.WAMAK_WaterToWater_220kW datTab) diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ModularReversible_OneRoomRadiator.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ModularReversible_OneRoomRadiator.mo index 671c3eeefd..74836dc266 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ModularReversible_OneRoomRadiator.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ModularReversible_OneRoomRadiator.mo @@ -17,14 +17,16 @@ model ModularReversible_OneRoomRadiator redeclare model RefrigerantCycleInertia = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia, use_intSafCtr=true, - TCon_nominal=TRadSup_nominal, + TConHea_nominal=TRadSup_nominal, + TConCoo_nominal=oneRooRadHeaPumCtr.TRadMinSup, dTCon_nominal=TRadSup_nominal - TRadRet_nominal, dpCon_nominal(displayUnit="Pa") = 2000, use_conCap=true, CCon=3000, GConOut=100, GConIns=1000, - TEva_nominal=sou.T, + TEvaHea_nominal=sou.T, + TEvaCoo_nominal=sou.T, dTEva_nominal=2, dpEva_nominal(displayUnit="Pa") = 200, use_evaCap=false, @@ -40,12 +42,13 @@ model ModularReversible_OneRoomRadiator redeclare model RefrigerantCycleHeatPumpCooling = IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D ( redeclare - IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, - datTab=IBPSA.Fluid.Chillers.ModularReversible.Data.TableData2D.EN14511.Vitocal251A08()), + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting + iceFacCal, datTab= + IBPSA.Fluid.Chillers.ModularReversible.Data.TableData2D.EN14511.Vitocal251A08()), redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar( - use_TUseSidOut=true, - use_TAmbSidOut=false, + use_TConOutHea=true, + use_TEvaOutHea=false, use_antFre=true, TAntFre=275.15), QCoo_flow_nominal=-Q_flow_nominal*0.5) diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleAirToWater2D_OneRoomRadiator.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleAirToWater2D_OneRoomRadiator.mo index d0073fedae..a76c1a0ad1 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleAirToWater2D_OneRoomRadiator.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleAirToWater2D_OneRoomRadiator.mo @@ -18,11 +18,13 @@ model ReversibleAirToWater2D_OneRoomRadiator TCon_start=TRadSup_nominal, QHea_flow_nominal=Q_flow_nominal, use_intSafCtr=true, - TCon_nominal=TRadSup_nominal, dpCon_nominal(displayUnit="Pa") = 2000, - TEva_nominal=sou.T, dpEva_nominal(displayUnit="Pa") = 200, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + TConHea_nominal=rad.TRad_nominal, + TEvaHea_nominal=TAirSouSte.offset, + TConCoo_nominal=oneRooRadHeaPumCtr.TRadMinSup, + TEvaCoo_nominal=TAirSouSte.offset + TAirSouSte.amplitude, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN14511.Vitocal251A08 datTabHea, diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleCarnotWithLosses_OneRoomRadiator.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleCarnotWithLosses_OneRoomRadiator.mo index 58b76d0ae2..1ba048d6d6 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleCarnotWithLosses_OneRoomRadiator.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Examples/ReversibleCarnotWithLosses_OneRoomRadiator.mo @@ -16,18 +16,20 @@ model ReversibleCarnotWithLosses_OneRoomRadiator QHea_flow_nominal=Q_flow_nominal, use_rev=true, use_intSafCtr=true, - TCon_nominal=TRadSup_nominal, + TConHea_nominal=TRadSup_nominal, dTCon_nominal=TRadSup_nominal - TRadRet_nominal, dpCon_nominal(displayUnit="Pa") = 2000, CCon=5000, GConOut=perHeaLos*Q_flow_nominal/(TRadSup_nominal - temAmbBas.k), GConIns=20000, - TEva_nominal=sou.T, + TEvaHea_nominal=sou.T, dTEva_nominal=5, dpEva_nominal(displayUnit="Pa") = 2000, CEva=5000, GEvaOut=perHeaLos*Q_flow_nominal/(temAmbBas.k - sou.T), GEvaIns=20000, + TConCoo_nominal=oneRooRadHeaPumCtr.TRadMinSup, + TEvaCoo_nominal=sou.T, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar, @@ -56,11 +58,12 @@ equation -166},{28,-166},{28,-141},{21.2,-141}}, color={0,0,127})); connect(oneRooRadHeaPumCtr.hea, heaPum.hea) annotation (Line( - points={{-139,-76},{-94,-76},{-94,-166},{28,-166},{28,-151.9},{21.1, + points={{-139.167,-75},{-94,-75},{-94,-166},{28,-166},{28,-151.9},{21.1, -151.9}}, color={255,0,255})); connect(oneRooRadHeaPumCtr.ySet, heaPum.ySet) annotation (Line( - points={{-139,-66},{28,-66},{28,-148},{21.2,-148}}, color={0,0,127})); + points={{-139.167,-66.6667},{28,-66.6667},{28,-148},{21.2,-148}}, + color={0,0,127})); annotation ( __Dymola_Commands(file= "modelica://IBPSA/Resources/Scripts/Dymola/Fluid/HeatPumps/ModularReversible/Examples/ReversibleCarnotWithLosses_OneRoomRadiator.mos" diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/LargeScaleWaterToWater.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/LargeScaleWaterToWater.mo index be61eac63f..f572c2aa31 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/LargeScaleWaterToWater.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/LargeScaleWaterToWater.mo @@ -2,11 +2,12 @@ within IBPSA.Fluid.HeatPumps.ModularReversible; model LargeScaleWaterToWater "Model with automatic parameter estimation for large scale water-to-water heat pumps" extends IBPSA.Fluid.HeatPumps.ModularReversible.ModularReversible( + TEvaCoo_nominal=273.15, + TConCoo_nominal=273.15, redeclare package MediumCon = IBPSA.Media.Water, redeclare package MediumEva = IBPSA.Media.Water, dpEva_nominal=datTab.dpEva_nominal*scaFac^2, dpCon_nominal=datTab.dpCon_nominal*scaFac^2, - final safCtrPar=safCtrParEurNor, final dTEva_nominal=(QHea_flow_nominal - PEle_nominal)/cpEva/ mEva_flow_nominal, final dTCon_nominal=QHea_flow_nominal/cpCon/mCon_flow_nominal, @@ -18,6 +19,14 @@ model LargeScaleWaterToWater final GConOut=0, final CCon=0, final use_conCap=false, + redeclare replaceable + IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar + constrainedby + IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( + final tabUppHea=datTab.tabUppBou, + final tabLowCoo=datTab.tabUppBou, + final use_TConOutHea=datTab.use_TConOutForOpeEnv, + final use_TEvaOutHea=datTab.use_TEvaOutForOpeEnv), redeclare model RefrigerantCycleHeatPumpCooling = IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling, redeclare model RefrigerantCycleHeatPumpHeating = @@ -38,23 +47,11 @@ model LargeScaleWaterToWater final autCalMasEva_flow=max(4E-5*QHea_flow_nominal - 0.3177, autCalMMin_flow), final autCalVCon=max(1E-7*QHea_flow_nominal - 94E-4, autCalVMin), final autCalVEva=max(1E-7*QHea_flow_nominal - 75E-4, autCalVMin)); - + final parameter Real scaFac=refCyc.refCycHeaPumHea.scaFac "Scaling factor of heat pump"; replaceable parameter IBPSA.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericHeatPump datTab "Data table of heat pump" annotation (choicesAllMatching=true, Placement(transformation(extent={{42,12},{58,28}}))); - // Lower boundary has no influence as use_rev=false. - // Thus, setting tabLowBou to tabUppHea - replaceable parameter - IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrParEurNor - constrainedby IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( - final tabUppHea=datTab.tabUppBou, - final tabLowCoo=datTab.tabUppBou, - final use_TUseSidOut=datTab.use_TConOutForOpeEnv, - final use_TAmbSidOut=datTab.use_TEvaOutForOpeEnv) "Safety control parameters" - annotation (Dialog(enable=use_intSafCtr, group="Safety control"), - choicesAllMatching=true, - Placement(transformation(extent={{72,12},{88,28}}))); annotation (Documentation(info="

diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/ModularReversible.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/ModularReversible.mo index 3ef77e7b47..f1f755899c 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/ModularReversible.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/ModularReversible.mo @@ -10,7 +10,6 @@ model ModularReversible final PEle_nominal=refCyc.refCycHeaPumHea.PEle_nominal, mCon_flow_nominal=QHea_flow_nominal/(dTCon_nominal*cpCon), mEva_flow_nominal=(QHea_flow_nominal - PEle_nominal)/(dTEva_nominal*cpEva), - final scaFac=refCyc.refCycHeaPumHea.scaFac, use_rev=true, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.BaseClasses.RefrigerantCycle refCyc( redeclare model RefrigerantCycleHeatPumpHeating = @@ -22,25 +21,19 @@ model ModularReversible annotation (Dialog(group="Nominal condition")); parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal(max=0)=0 "Nominal cooling capacity" - annotation(Dialog(group="Nominal condition", enable=use_rev)); + annotation(Dialog(group="Nominal condition - Cooling", enable=use_rev)); replaceable model RefrigerantCycleHeatPumpHeating = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle - (PEle_nominal=0, - QHeaNoSca_flow_nominal=0) + (PEle_nominal=0) constrainedby IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle( final useInHeaPum=true, final QHea_flow_nominal=QHea_flow_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final dTCon_nominal=dTCon_nominal, - final dTEva_nominal=dTEva_nominal, - final mCon_flow_nominal=mCon_flow_nominal, - final mEva_flow_nominal=mEva_flow_nominal, + final TCon_nominal=TConHea_nominal, + final TEva_nominal=TEvaHea_nominal, final cpCon=cpCon, - final cpEva=cpEva, - final y_nominal=y_nominal) + final cpEva=cpEva) "Refrigerant cycle module for the heating mode" annotation (choicesAllMatching=true); @@ -49,19 +42,25 @@ model ModularReversible constrainedby IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle( final useInChi=false, - final QCoo_flow_nominal=QCoo_flow_nominal, - final PEle_nominal=refCyc.refCycHeaPumHea.PEle_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final dTCon_nominal=dTCon_nominal, - final dTEva_nominal=dTEva_nominal, - final mCon_flow_nominal=mCon_flow_nominal, - final mEva_flow_nominal=mEva_flow_nominal, final cpCon=cpCon, final cpEva=cpEva, - final y_nominal=y_nominal) + final TCon_nominal=TEvaCoo_nominal, + final TEva_nominal=TConCoo_nominal, + QCoo_flow_nominal=QCoo_flow_nominal) "Refrigerant cycle module for the cooling mode" annotation (Dialog(enable=use_rev),choicesAllMatching=true); + parameter Modelica.Units.SI.Temperature TConHea_nominal + "Nominal temperature at secondary condenser side in heating mode" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TEvaHea_nominal + "Nominal temperature at secondary evaporator side in heating mode" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TConCoo_nominal=TConHea_nominal + "Nominal temperature at secondary condenser side in cooling mode" + annotation(Dialog(enable=use_rev, group="Nominal condition - Cooling")); + parameter Modelica.Units.SI.Temperature TEvaCoo_nominal=TEvaHea_nominal + "Nominal temperature at secondary evaporator side in cooling mode" + annotation(Dialog(enable=use_rev, group="Nominal condition - Cooling")); Modelica.Blocks.Sources.BooleanConstant conHea(final k=true) if not use_busConOnl and not use_rev diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/NoHeating.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/NoHeating.mo index f168d0b806..683ba263cf 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/NoHeating.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/NoHeating.mo @@ -2,6 +2,8 @@ within IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses; model NoHeating "Placeholder to disable heating" extends PartialHeatPumpCycle( + TEva_nominal=273.15, + TCon_nominal=273.15, cpEva=4184, cpCon=4184, PEle_nominal=0, @@ -9,14 +11,6 @@ model NoHeating IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, datSou="", - QHeaNoSca_flow_nominal=0, - scaFac=0, - mEva_flow_nominal=0, - mCon_flow_nominal=0, - dTEva_nominal=0, - dTCon_nominal=0, - TEva_nominal=273.15, - TCon_nominal=273.15, QHea_flow_nominal=0); Modelica.Blocks.Sources.Constant constZer(final k=0) "No heating, hence, zero" diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialHeatPumpCycle.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialHeatPumpCycle.mo index f648febaf2..e52cab9aac 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialHeatPumpCycle.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialHeatPumpCycle.mo @@ -1,13 +1,10 @@ within IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses; partial model PartialHeatPumpCycle "Partial model to allow selection of only heat pump options" - extends PartialRefrigerantCycle(scaFac=QHea_flow_nominal/QHeaNoSca_flow_nominal); + extends PartialRefrigerantCycle; parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal "Nominal heating capacity" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.HeatFlowRate QHeaNoSca_flow_nominal - "Unscaled nominal heating capacity " - annotation (Dialog(group="Nominal condition")); parameter Boolean useInHeaPum "=false to indicate that this model is used in a chiller"; Modelica.Blocks.Math.Feedback feeHeaFloEva diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialRefrigerantCycle.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialRefrigerantCycle.mo index 073ebb94ff..ef09d320d8 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialRefrigerantCycle.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialRefrigerantCycle.mo @@ -1,7 +1,6 @@ within IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses; partial model PartialRefrigerantCycle "Partial model of refrigerant cycle" - parameter Modelica.Units.SI.Power PEle_nominal "Nominal electrical power consumption" annotation (Dialog(group="Nominal condition")); @@ -11,23 +10,6 @@ partial model PartialRefrigerantCycle parameter Modelica.Units.SI.Temperature TEva_nominal "Nominal temperature at secondary evaporator side" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal - "Nominal temperature difference at secondary condenser side" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal - "Nominal temperature difference at secondary evaporator side" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal - "Nominal mass flow rate in secondary condenser side" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal - "Nominal mass flow rate in secondary evaporator side" - annotation (Dialog(group="Nominal condition")); - parameter Real y_nominal(unit="1", min=0, max=1)=1 - "Nominal relative compressor speed" - annotation (Dialog(group="Nominal condition")); - parameter Real scaFac - "Scaling factor of heat pump" annotation (Dialog(group="Nominal condition")); parameter String datSou="" "Indicates the data source, used to warn users about different data sources in reversible models"; @@ -85,12 +67,6 @@ partial model PartialRefrigerantCycle protected IBPSA.Utilities.IO.Strings.Constant conStrSou(final k=datSou) "Constant String with data source as output"; -initial algorithm - assert( - y_nominal <= 1 and y_nominal > 0, - "Nominal relative compressor speed needs to be between 0 and 1, but is " + - String(y_nominal) + " in " + getInstanceName(), - AssertionLevel.error); equation connect(conStrSou.y, datSouOut); connect(proRedQEva.y, QEva_flow) annotation (Line(points={{-30,-101},{-30,-108}, diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialTableData2D.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialTableData2D.mo index 87d29f2669..93d4519828 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialTableData2D.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/BaseClasses/PartialTableData2D.mo @@ -1,6 +1,13 @@ within IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses; partial model PartialTableData2D "Partial model with components for TableData2D approach for heat pumps and chillers" + parameter Real scaFac "Scaling factor"; + parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal + "Nominal mass flow rate in secondary condenser side" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal + "Nominal mass flow rate in secondary evaporator side" + annotation (Dialog(group="Nominal condition")); parameter Modelica.Blocks.Types.Smoothness smoothness= Modelica.Blocks.Types.Smoothness.LinearSegments "Smoothness of table interpolation"; @@ -56,7 +63,7 @@ partial model PartialTableData2D extent={{-10,-10},{10,10}}, rotation=-90, origin={40,2}))); - Modelica.Blocks.Sources.Constant constScaFac + Modelica.Blocks.Sources.Constant constScaFac(final k=scaFac) "Calculates correction of table output based on scaling factor" annotation (Placement( transformation(extent={{-10,-10},{10,10}}, rotation=0, @@ -119,10 +126,6 @@ protected smoothness, extrapolation, false) "External table object for nominal electrical power consumption"; - parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal_internal - "Internal nominal condenser mass flow rate"; - parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal_internal - "Internal nominal evaporator mass flow rate"; parameter Modelica.Units.SI.MassFlowRate mEva_flow_min "Minimal evaporator mass flow rate"; parameter Modelica.Units.SI.MassFlowRate mEva_flow_max @@ -132,27 +135,27 @@ protected parameter Modelica.Units.SI.MassFlowRate mCon_flow_max "Maximal evaporator mass flow rate"; initial algorithm - assert(mCon_flow_nominal_internal >= mCon_flow_min, + assert(mCon_flow_nominal >= mCon_flow_min, "In " + getInstanceName() + ": The nominal condenser mass flow rate (" - + String(mCon_flow_nominal_internal) + " kg/s) is smaller than the + + String(mCon_flow_nominal) + " kg/s) is smaller than the minimal value (" + String(mCon_flow_min) + " kg/s) for the table data when assuming a temperature spread between 3 and 10 K, as in EN 14511.", AssertionLevel.warning); - assert(mCon_flow_nominal_internal <= mCon_flow_max, + assert(mCon_flow_nominal <= mCon_flow_max, "In " + getInstanceName() + ": The nominal condenser mass flow rate (" - + String(mCon_flow_nominal_internal) + " kg/s) is bigger than the + + String(mCon_flow_nominal) + " kg/s) is bigger than the maximal value (" + String(mCon_flow_max) + " kg/s) for the table data when assuming a temperature spread between 3 and 10 K, as in EN 14511.", AssertionLevel.warning); - assert(mEva_flow_nominal_internal >= mEva_flow_min, + assert(mEva_flow_nominal >= mEva_flow_min, "In " + getInstanceName() + ": The nominal evaporator mass flow rate (" - + String(mEva_flow_nominal_internal) + " kg/s) is smaller than the + + String(mEva_flow_nominal) + " kg/s) is smaller than the minimal value (" + String(mEva_flow_min) + " kg/s) for the table data when assuming a temperature spread between 3 and 10 K, as in EN 14511.", AssertionLevel.warning); - assert(mEva_flow_nominal_internal <= mEva_flow_max, + assert(mEva_flow_nominal <= mEva_flow_max, "In " + getInstanceName() + ": The nominal evaporator mass flow rate (" - + String(mEva_flow_nominal_internal) + " kg/s) is bigger than the + + String(mEva_flow_nominal) + " kg/s) is bigger than the maximal value (" + String(mEva_flow_max) + " kg/s) for the table data when assuming a temperature spread between 3 and 10 K, as in EN 14511.", AssertionLevel.warning); diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo index 38ca8ece45..f7882954ce 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/ConstantCarnotEffectiveness.mo @@ -3,8 +3,7 @@ model ConstantCarnotEffectiveness "Carnot COP with a constant Carnot effectivene extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle( useInHeaPum=true, - PEle_nominal=QHea_flow_nominal / COP_nominal / y_nominal, - QHeaNoSca_flow_nominal=QHea_flow_nominal, + PEle_nominal=QHea_flow_nominal / COP_nominal, datSou="ConstantCarnotEffectiveness"); extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialCarnot( diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/TableData2D.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/TableData2D.mo index 15d0c95e9a..d9b1eb32b3 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/TableData2D.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/RefrigerantCycle/TableData2D.mo @@ -3,33 +3,32 @@ model TableData2D "Performance data based on condenser outlet and evaporator inl extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle( final datSou=datTab.devIde, - mEva_flow_nominal=datTab.mEva_flow_nominal*scaFac, - mCon_flow_nominal=datTab.mCon_flow_nominal*scaFac, PEle_nominal=Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( tabIdePEle, TCon_nominal, - TEva_nominal) * scaFac * y_nominal, - QHeaNoSca_flow_nominal= - Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( - tabIdeQUse_flow, - TCon_nominal, - TEva_nominal) * y_nominal); + TEva_nominal) * scaFac); extends IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialTableData2D( final useInRevDev=not useInHeaPum, + scaFac=QHea_flow_nominal/QHeaNoSca_flow_nominal, final valTabQEva_flow = valTabQCon_flow .- valTabPEle, final valTabQCon_flow = {{tabQUse_flow.table[j, i] for i in 2:numCol} for j in 2:numRow}, - final mCon_flow_nominal_internal=mCon_flow_nominal, - final mEva_flow_nominal_internal=mEva_flow_nominal, final mCon_flow_max=max(valTabQCon_flow) * scaFac / cpCon / dTMin, final mCon_flow_min=min(valTabQCon_flow) * scaFac / cpCon / dTMax, final mEva_flow_min=min(valTabQEva_flow) * scaFac / cpEva / dTMax, final mEva_flow_max=max(valTabQEva_flow) * scaFac / cpEva / dTMin, + mEva_flow_nominal=datTab.mEva_flow_nominal*scaFac, + mCon_flow_nominal=datTab.mCon_flow_nominal*scaFac, final use_TConOutForTab=datTab.use_TConOutForTab, final use_TEvaOutForTab=datTab.use_TEvaOutForTab, - constScaFac(final k=scaFac), tabQUse_flow(final table=datTab.tabQCon_flow), tabPEle(final table=datTab.tabPEle)); + parameter Modelica.Units.SI.HeatFlowRate QHeaNoSca_flow_nominal=Modelica.Blocks.Tables.Internal.getTable2DValueNoDer2( + tabIdeQUse_flow, + TCon_nominal, + TEva_nominal) + "Unscaled nominal heating capacity " + annotation (Dialog(group="Nominal condition")); replaceable parameter IBPSA.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericHeatPump datTab "Data Table of HP" annotation (choicesAllMatching=true); diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleAirToWaterTableData2D.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleAirToWaterTableData2D.mo index 0715ddbda3..8b54d68603 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleAirToWaterTableData2D.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleAirToWaterTableData2D.mo @@ -11,8 +11,10 @@ model ReversibleAirToWaterTableData2D IBPSA.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( final tabUppHea=datTabHea.tabUppBou, final tabLowCoo=datTabCoo.tabLowBou, - final use_TUseSidOut=datTabHea.use_TConOutForOpeEnv, - final use_TAmbSidOut=datTabCoo.use_TEvaOutForOpeEnv), + final use_TConOutHea=datTabHea.use_TConOutForOpeEnv, + final use_TEvaOutHea=datTabHea.use_TEvaOutForOpeEnv, + final use_TConOutCoo=datTabCoo.use_TConOutForOpeEnv, + final use_TEvaOutCoo=datTabCoo.use_TEvaOutForOpeEnv), dTEva_nominal=(QHea_flow_nominal - PEle_nominal)/cpEva/mEva_flow_nominal, mEva_flow_nominal=datTabHea.mEva_flow_nominal*scaFac, mCon_flow_nominal=datTabHea.mCon_flow_nominal*scaFac, @@ -26,16 +28,31 @@ model ReversibleAirToWaterTableData2D final CCon=0, final use_conCap=false, redeclare model RefrigerantCycleHeatPumpCooling = - IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D ( - redeclare IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, + IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D ( + final PEle_nominal=PEle_nominal, + redeclare + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting + iceFacCal, + final scaFac=scaFac, + final mCon_flow_nominal=mCon_flow_nominal, + final mEva_flow_nominal=mEva_flow_nominal, + final smoothness=smoothness, + final extrapolation=extrapolation, final datTab=datTabCoo), redeclare model RefrigerantCycleHeatPumpHeating = - IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D ( - redeclare IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D ( + redeclare + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting + iceFacCal, + final mCon_flow_nominal=mCon_flow_nominal, + final mEva_flow_nominal=mEva_flow_nominal, + final smoothness=smoothness, + final extrapolation=extrapolation, final datTab=datTabHea), final use_rev=true, redeclare model RefrigerantCycleInertia = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia); + final parameter Real scaFac=refCyc.refCycHeaPumHea.scaFac "Scaling factor of heat pump"; replaceable parameter IBPSA.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericAirToWater datTabHea @@ -48,6 +65,12 @@ model ReversibleAirToWaterTableData2D "Data table of chiller" annotation (choicesAllMatching=true, Placement(transformation(extent={{114,-18},{130,-2}}))); + parameter Modelica.Blocks.Types.Smoothness smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments + "Smoothness of table interpolation" annotation (Dialog(tab="Advanced")); + parameter Modelica.Blocks.Types.Extrapolation extrapolation=Modelica.Blocks.Types.Extrapolation.LastTwoPoints + "Extrapolation of data outside the definition range" + annotation (Dialog(tab="Advanced")); + annotation (Documentation(info="

Reversible air-to-water heat pump based on diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleCarnotWithLosses.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleCarnotWithLosses.mo index daf8711dc5..52dce29556 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleCarnotWithLosses.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/ReversibleCarnotWithLosses.mo @@ -2,9 +2,11 @@ within IBPSA.Fluid.HeatPumps.ModularReversible; model ReversibleCarnotWithLosses "Heat pump using the Carnot approach, but with added reversibility and losses (heat, frost, inertia)" extends IBPSA.Fluid.HeatPumps.ModularReversible.ModularReversible( + QCoo_flow_nominal=-PEle_nominal*refCyc.refCycHeaPumCoo.EER_nominal, redeclare model RefrigerantCycleHeatPumpCooling = IBPSA.Fluid.Chillers.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness ( + PEle_nominal=PEle_nominal, redeclare IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, @@ -19,6 +21,7 @@ model ReversibleCarnotWithLosses IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.FunctionalIcingFactor iceFacCal(redeclare function icingFactor = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.Functions.wetterAfjei1997), + etaCarnot_nominal=etaCarnot_nominal, TAppCon_nominal=TAppCon_nominal, TAppEva_nominal=TAppEva_nominal), @@ -35,11 +38,11 @@ model ReversibleCarnotWithLosses parameter Modelica.Units.SI.TemperatureDifference TAppCon_nominal= if cpCon < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in condenser" - annotation(Dialog(group="Nominal condition - Condenser")); + annotation(Dialog(group="Nominal condition")); parameter Modelica.Units.SI.TemperatureDifference TAppEva_nominal= if cpEva < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in evaporator" - annotation(Dialog(group="Nominal condition - Evaporator")); + annotation(Dialog(group="Nominal condition")); parameter Modelica.Units.SI.Time refIneTimCon = 300 "Refrigerant cycle inertia time constant for first order delay" annotation(Dialog(group="Refrigerant cycle inertia")); diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/UsersGuide.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/UsersGuide.mo index c3c7ab214e..a8568f6639 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/UsersGuide.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/UsersGuide.mo @@ -1,4 +1,4 @@ -within IBPSA.Fluid.HeatPumps.ModularReversible; +within IBPSA.Fluid.HeatPumps.ModularReversible; package UsersGuide "User's Guide for modular reversible heat pump and chiller models" extends Modelica.Icons.Information; @@ -366,7 +366,10 @@ The following tables summarizes the possible options. For chillers, it is the nominal evaporator heat flow rate QCoo_flow_nominal (negative). This nominal heat flow rate is only valid at the - nominal conditions of the + nominal conditions. Whether parameters influence the nominal heat flow rates + depends on the model approach used to estimate the heat flow rate and efficiencies. + Typically, at least nominal source and sink temperatures will influence the + nominal conditions:

- The temperature differences and mass flow rates presuppose each other. - The temperature levels are left without further specification of - inlet or outlet on purpose. Some refrigerant cycle models will - use the inlet, some the outlet to determine the outputs. + Depending on the model in use, this may be in- out outlet.

- For inverter driven devices, the compressor speed influences the + Another example would be inverter driven devices. + Here, the compressor speed influences the refrigerant mass flow rate and compressor efficiencies. - The refrigerant mass flow rate influences the electrical power - consumption and the heat flow rates approximately - Q_flow_nominal linearly. - Thus, setting y_nominal to, e.g. 0.5, doubles - the nominal electrical power consumption to achieve the same - Q_flow_nominal. If the performance data is dependent on the compressor speed, - y_nominal also influences the nominal efficiencies. - Setting y_nominal smaller than one (the default), - can be necessary if the nominal values are not at the maximal - heating or cooling capacities required during operation. + y_nominal influences the nominal efficiencies. + In such cases, specifying additional nominal parameters will + be nessary.

-Other parameters, such as the nominal pressure drops or -advanced model settings will not influence the refrigerant cycle -models. Thus, only the listed nominal conditions are contained -in both the ModularReversible models and the refrigerant cycle models -for heating and cooling. + Using the nominal conditions and the specified heat flow rate, + the nominal electrical power consumption PEle_nominal is calculated. + As reversible devices have typically a four-way-valve and a single + compressor, you have to make sure that the values for PEle_nominal + are similar between heating and cooling. The pre-configured models + already contain assumptions in this regard.

diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/BaseClasses/PartialValidation.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/BaseClasses/PartialValidation.mo index 04f303f871..7759ab420b 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/BaseClasses/PartialValidation.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/BaseClasses/PartialValidation.mo @@ -30,14 +30,13 @@ partial model PartialValidation IBPSA.Fluid.HeatPumps.ModularReversible.ModularReversible heaPum( redeclare final package MediumCon = MediumSin, redeclare final package MediumEva = MediumSou, - QHea_flow_nominal=heaPum.refCyc.refCycHeaPumHea.QHeaNoSca_flow_nominal, final use_intSafCtr=false, - TCon_nominal=303.15, + TConHea_nominal=303.15, dTCon_nominal=5, CCon=0, GConOut=0, GConIns=0, - TEva_nominal=290.15, + TEvaHea_nominal=290.15, dTEva_nominal=5, mEva_flow_nominal=0.8, dpEva_nominal=0, diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/Comparative/BaseClasses/PartialModularComparison.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/Comparative/BaseClasses/PartialModularComparison.mo index 029f3da630..4205319625 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/Comparative/BaseClasses/PartialModularComparison.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/Comparative/BaseClasses/PartialModularComparison.mo @@ -13,13 +13,12 @@ partial model PartialModularComparison redeclare final package MediumCon = Medium1, redeclare final package MediumEva = Medium2, QHea_flow_nominal=QUse_flow_nominal, - final y_nominal=1, redeclare final model RefrigerantCycleInertia = IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia, final use_rev=false, final use_intSafCtr=false, final tauCon=tau1, - final TCon_nominal=TCon_nominal, + final TConHea_nominal=TCon_nominal, final dTCon_nominal=dTCon_nominal, final dpCon_nominal=dp1_nominal, final use_conCap=false, @@ -27,7 +26,7 @@ partial model PartialModularComparison final GConOut=0, final GConIns=0, final tauEva=tau2, - final TEva_nominal=TEva_nominal, + final TEvaHea_nominal=TEva_nominal, final dTEva_nominal=dTEva_nominal, final dpEva_nominal=dp2_nominal, final use_evaCap=false, diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/ConstantCarnotEffectiveness.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/ConstantCarnotEffectiveness.mo index 92d6f4d444..4b98caa1e9 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/ConstantCarnotEffectiveness.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/ConstantCarnotEffectiveness.mo @@ -4,8 +4,8 @@ model ConstantCarnotEffectiveness extends IBPSA.Fluid.HeatPumps.ModularReversible.Validation.BaseClasses.PartialValidation( heaPum( - QHea_flow_nominal=etaCarnot_nominal*PEle_nominal*heaPum.TCon_nominal/(heaPum.TCon_nominal - - heaPum.TEva_nominal), + QHea_flow_nominal=etaCarnot_nominal*PEle_nominal*heaPum.TConHea_nominal/(heaPum.TConHea_nominal + - heaPum.TEvaHea_nominal), mCon_flow_nominal=mCon_flow_nominal, tauCon=VCon*heaPum.rhoCon/mCon_flow_nominal, redeclare model RefrigerantCycleInertia = diff --git a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/TableData2D.mo b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/TableData2D.mo index e87c35efcc..57fec115c2 100644 --- a/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/TableData2D.mo +++ b/IBPSA/Fluid/HeatPumps/ModularReversible/Validation/TableData2D.mo @@ -4,10 +4,12 @@ model TableData2D extends IBPSA.Fluid.HeatPumps.ModularReversible.Validation.BaseClasses.PartialValidation( heaPum( + QHea_flow_nominal=heaPum.refCyc.refCycHeaPumHea.QHeaNoSca_flow_nominal, mCon_flow_nominal=mCon_flow_nominal, tauCon=VCon*heaPum.rhoCon/mCon_flow_nominal, redeclare model RefrigerantCycleInertia = - IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.VariableOrder( + IBPSA.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.VariableOrder + ( refIneFreConst=refIneFreConst, nthOrd=2, initType=Modelica.Blocks.Types.Init.InitialState),