From bfd1e1176b92c10e6697a5567cfcb66a031b33fe Mon Sep 17 00:00:00 2001
From: AntoineGautier
+This is a model for a hot water boiler where the efficiency is computed
+based on a polynomial of the firing rate and optionally of the hot water
+temperature.
+This model is based on
+
+Buildings.Fluid.Boilers.BoilerPolynomial.
+The user may refer to the documentation of
+
+Buildings.Fluid.Boilers.UsersGuide
+for the modeling assumptions.
+
+See the documentation of
+
+Buildings.Templates.Components.Interfaces.BoilerHotWater.
+
+This is a model for a hot water boiler where the efficiency is computed
+based on a lookup table indexed by the firing rate and the inlet temperature.
+This model is based on
+
+Buildings.Fluid.Boilers.BoilerTable.
+The user may refer to the documentation of
+
+Buildings.Fluid.Boilers.UsersGuide
+for the modeling assumptions.
+
+See the documentation of
+
+Buildings.Templates.Components.Interfaces.BoilerHotWater.
+
+The design parameters and the efficiency table are specified with an instance of
+
+Buildings.Templates.Components.Data.BoilerHotWater.
+The documentation of this record class provides further details on how to
+properly parameterize the model.
+
This record provides the set of sizing and operating parameters for
@@ -68,5 +64,35 @@ the classes within
Buildings.Templates.Components.Boilers.
+When using the boiler model where the efficiency is based on a lookup table
+(
This record provides the set of sizing and operating parameters for
-the multiple pump model
+the multiple-pump model
Buildings.Templates.Components.Pumps.Multiple.
-A default pump characteristic is provided, which goes through
+A default flow characteristic is provided, which goes through
the design operating point and spans over
0 and twice the design flow rate at maximum speed.
This default characteristic is based on a least squares
polynomial fit of the characteristics from
Buildings.Fluid.Movers.Data.Pumps.Wilo.
+The user may refer to the documentation of
+
+Buildings.Fluid.HydronicConfigurations.UsersGuide.ModelParameters
+for further details.
Note that a default medium density is used to parameterize
the pump characteristic. So models that use this record should
overwrite this default value with the density of the medium
in use, especially in the case of a water/glycol mix.
+In order to modify the default characteristic, one may use either
+of the following methods.
+
+Those various use cases are illustrated in
+
+Buildings.Templates.Components.Validation.PumpMultipleRecord.
+Control points
+
+
+"));
end HotWaterPolynomial;
diff --git a/Buildings/Templates/Components/Boilers/HotWaterTable.mo b/Buildings/Templates/Components/Boilers/HotWaterTable.mo
index f7f00df6122..a7f5065b7ed 100644
--- a/Buildings/Templates/Components/Boilers/HotWaterTable.mo
+++ b/Buildings/Templates/Components/Boilers/HotWaterTable.mo
@@ -1,11 +1,45 @@
within Buildings.Templates.Components.Boilers;
-model HotWaterTable "Hot water boiler"
- extends Buildings.Templates.Components.Interfaces.BoilerHotWater(
+model HotWaterTable "Hot water boiler with efficiency described by a table"
+ extends Buildings.Templates.Components.Interfaces.PartialBoilerHotWater(
final typMod=Buildings.Templates.Components.Types.BoilerHotWaterModel.Table,
redeclare Buildings.Fluid.Boilers.BoilerTable boi(final per=dat.per));
annotation (
defaultComponentName="boi",
Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(
- coordinateSystem(preserveAspectRatio=false)));
+ coordinateSystem(preserveAspectRatio=false)),
+ Documentation(info="
+
+First implementation.
+Control points
+Model parameters
+
+
+"));
end HotWaterTable;
diff --git a/Buildings/Templates/Components/Data/BoilerHotWater.mo b/Buildings/Templates/Components/Data/BoilerHotWater.mo
index 1a646a9b0cc..228aed3520d 100644
--- a/Buildings/Templates/Components/Data/BoilerHotWater.mo
+++ b/Buildings/Templates/Components/Data/BoilerHotWater.mo
@@ -14,8 +14,7 @@ record BoilerHotWater "Data for hot water boilers"
final min=0)
"HW mass flow rate"
annotation(Dialog(group="Nominal condition"));
- parameter Modelica.Units.SI.HeatFlowRate cap_nominal(
- final min=0)
+ parameter Modelica.Units.SI.HeatFlowRate cap_nominal
"Heating capacity"
annotation(Dialog(group="Nominal condition"));
parameter Modelica.Units.SI.PressureDifference dpHeaWat_nominal(
@@ -28,15 +27,13 @@ record BoilerHotWater "Data for hot water boilers"
"HW supply temperature"
annotation(Dialog(group="Nominal condition"));
- /* FIXME: The following yields a final overriding message for fue with Dymola
- when redeclaring per. Open ticket at DS.
- */
- replaceable parameter Buildings.Fluid.Boilers.Data.Generic per
+ replaceable parameter Buildings.Fluid.Boilers.Data.Generic per(fue=fue)
constrainedby Buildings.Fluid.Boilers.Data.Generic(
- fue=fue,
- Q_flow_nominal=cap_nominal,
+ Q_flow_nominal=abs(cap_nominal),
TIn_nominal=THeaWatSup_nominal -
- cap_nominal/Buildings.Utilities.Psychrometrics.Constants.cpWatLiq/mHeaWat_flow_nominal,
+ abs(cap_nominal)/
+ Buildings.Utilities.Psychrometrics.Constants.cpWatLiq/
+ mHeaWat_flow_nominal,
m_flow_nominal=mHeaWat_flow_nominal,
dp_nominal=dpHeaWat_nominal)
"Boiler performance data"
@@ -59,8 +56,7 @@ record BoilerHotWater "Data for hot water boilers"
typMod==Buildings.Templates.Components.Types.BoilerHotWaterModel.Polynomial and
(effCur==Buildings.Fluid.Types.EfficiencyCurves.QuadraticLinear)));
- annotation (Dialog(enable=
- typMod==Buildings.Templates.Components.Types.ModelBoilerHotWater.Table),
+annotation (
defaultComponentName="datBoi", Documentation(info="
+First implementation.
+typMod=Buildings.Templates.Components.Types.BoilerHotWaterModel.Table
),
+the design values declared at the top-level are propagated by default to the
+performance data record per
under the assumption that the nominal
+conditions from the performance data match the design conditions.
+Redeclaring the parameter per
allows assigning a value to the efficiency curve
+without overwriting the default bindings to the design values for the other parameters.
+This is the recommended approach.
+Alternatively, assigning the parameter per
to a local instance of a
+compatible record allows completely overwriting all the parameters inside per
.
+In this case, the consistency between the design parameters and the values from the
+subrecord per
is checked and a warning is issued if the design capacity or
+HW flow rate (resp. pressure drop) is higher (resp. lower) than the value from the
+performance data record.
+This check is performed within
+
+Buildings.Templates.Components.Interfaces.PartialBoilerHotWater.
+The validation model
+
+Buildings.Templates.Components.Validation.BoilerHotWater
+illustrates the different use cases of this record.
+
+
"));
end BoilerHotWater;
diff --git a/Buildings/Templates/Components/Data/PumpMultiple.mo b/Buildings/Templates/Components/Data/PumpMultiple.mo
index c9c21faa047..6825b51a086 100644
--- a/Buildings/Templates/Components/Data/PumpMultiple.mo
+++ b/Buildings/Templates/Components/Data/PumpMultiple.mo
@@ -1,5 +1,5 @@
within Buildings.Templates.Components.Data;
-record PumpMultiple "Record for multiple pumps models"
+record PumpMultiple "Record for multiple-pump models"
extends Modelica.Icons.Record;
parameter Buildings.Templates.Components.Types.Pump typ
@@ -10,56 +10,81 @@ record PumpMultiple "Record for multiple pumps models"
start=1)
"Number of pumps"
annotation (Dialog(group="Configuration", enable=false));
- parameter Modelica.Units.SI.Density rho_default=
- Modelica.Media.Water.ConstantPropertyLiquidWater.d_const
- "Default medium density"
- annotation(Dialog(enable=false));
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal[nPum](
each start=1,
each final min=0)
- "Individual pump nominal mass flow rate"
+ "Mass flow rate - Each pump"
annotation (
- Dialog(group="Pump"));
+ Dialog(group="Nominal condition",
+ enable=typ<>Buildings.Templates.Components.Types.Pump.None));
parameter Modelica.Units.SI.PressureDifference dp_nominal[nPum](
each start=0,
each final min=0)
- "Total pressure rise"
- annotation (Dialog(group="Pump",
+ "Total pressure rise - Each pump"
+ annotation (Dialog(group="Nominal condition",
enable=typ<>Buildings.Templates.Components.Types.Pump.None));
// To avoid missing support for zero-sized record in case of nPum=0 we use max(nPum, 1).
- replaceable parameter Fluid.Movers.Data.Generic per[max(nPum, 1)]
- constrainedby Buildings.Fluid.Movers.Data.Generic(
- pressure(
- V_flow=if typ<>Buildings.Templates.Components.Types.Pump.None then
- {{0, 1, 2} * m_flow_nominal[i] / rho_default for i in 1:nPum}
- else [0],
- dp=if typ<>Buildings.Templates.Components.Types.Pump.None then
- {{1.14, 1, 0.42} * dp_nominal[i] for i in 1:nPum}
- else [0]))
- "Performance data"
- annotation(Dialog(group="Pump",
- enable=typ<>Buildings.Templates.Components.Types.Pump.None));
+ replaceable parameter Fluid.Movers.Data.Generic per[max(nPum, 1)](
+ pressure(
+ V_flow=if typ<>Buildings.Templates.Components.Types.Pump.None then
+ {{0, 1, 2} * m_flow_nominal[i] / rho_default for i in 1:nPum} else [0],
+ dp=if typ<>Buildings.Templates.Components.Types.Pump.None then
+ {{1.14, 1, 0.42} * dp_nominal[i] for i in 1:nPum} else [0]))
+ constrainedby Buildings.Fluid.Movers.Data.Generic
+ "Performance data - Each pump"
+ annotation(Dialog(enable=typ<>Buildings.Templates.Components.Types.Pump.None));
+
+ parameter Modelica.Units.SI.Density rho_default=
+ Modelica.Media.Water.ConstantPropertyLiquidWater.d_const
+ "Default medium density"
+ annotation(Dialog(enable=false));
+
annotation (
defaultComponentName="datPum", Documentation(info="
+First implementation.
+
+
+per
or
+only its component per.pressure
.
+In this case the elements per[i]
may differ one from another.
+This is the recommended approach for unequally sized units
+such as dedicated pumps.per
.
+In this case the elements per[i]
are all equal to the redeclared
+record instance.
+This is the recommended approach for equally sized units
+such as headered pumps.
-A default pump characteristic is provided, which goes through -the design operating point and spans over -0 and twice the design flow rate at maximum speed. -This default characteristic is based on a least squares -polynomial fit of the characteristics from - -Buildings.Fluid.Movers.Data.Pumps.Wilo. -Note that a default medium density is used to parameterize -the pump characteristic. So models that use this record should -overwrite this default value with the density of the medium -in use, especially in the case of a water/glycol mix. +A default flow characteristic is provided and can be overwritten as +described in the documentation of + +Buildings.Templates.Components.Data.PumpMultiple +in the more generic case of multiple units.