modelBoilerGeneric
Generic performance map based boiler
Extends from AixLib.Fluid.BoilerCHP.BaseClasses.PartialHeatGenerator (Partial model for heat generators).
Information
Overview
The model differs between DesignOperation and OffDesignOperation.
In DesignOperation for nominal conditions the (max) fuel power is estimated. The OffDesignOperation fuel consumption is estimated via firing rate.
During operation, the transferred heat flow is estimated with respect to actual efficiency within a performance map.
Further assumptions are used:
- The quadratic coefficient coeffPresLoss is described by a fit-function from manufacturer data.
- The volume vol.V bases on a fit from manufacturer data.
- G: Thermal conductance is described by a fit 0.0465 * QNom/1000 + 4.9891 from manufacturere data at a temperature difference of 50 K to ambient
- C: Factor C/QNom is in range of 1.2 to 2 for boilers with nominal power between 460 kW and 80 kW (with c of 500J/kgK for steel). Thus, a value of 1.5 is used as default. (see AixLib.Fluid.BoilerCHP.BoilerNoControl)
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from PartialHeatGenerator) | a*(m_flow_nominal/rho_default)^n | Pressure drop at nominal mass flow rate |
| Modelica.Units.SI.HeatFlowRate | Q_flow_nominal | Design thermal capacity | |
| Modelica.Units.SI.Temperature | TSup_nominal | 353.15 | Design supply temperature |
| Modelica.Units.SI.Temperature | TRet_nominal | 333.15 | Design return temperature |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| String | filename | ModelicaServices.ExternalReferences.loadResource("modelica://AixLib/Resources/Data/Fluid/BoilerCHP/BaseClasses/GenericBoiler/Boiler_Generic_Characteristic_Chart.sdf") | Filename for generic boiler curves |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Advanced › Sensor Properties | |||
| Modelica.Units.SI.Time | tau (from PartialHeatGenerator) | 1 | Time constant of the temperature sensors at nominal flow rate |
| Modelica.Blocks.Types.Init | initType (from PartialHeatGenerator) | Modelica.Blocks.Types.Init.InitialState | Type of initialization (InitialState and InitialOutput are identical) |
| Boolean | transferHeat (from PartialHeatGenerator) | false | If true, temperature T converges towards TAmb when no flow |
| Modelica.Units.SI.Temperature | TAmb (from PartialHeatGenerator) | Medium.T_default | Fixed ambient temperature for heat transfer |
| Modelica.Units.SI.Time | tauHeaTra (from PartialHeatGenerator) | 1200 | Time constant for heat transfer, default 20 minutes |
| Initialization | |||
| Modelica.Units.SI.Temperature | T_start (from PartialHeatGenerator) | Medium.T_default | Initial or guess value of output (= state) |
| Modelica.Units.SI.AbsolutePressure | dp_start (from PartialHeatGenerator) | 0 | Guess value of dp = port_a.p - port_b.p |
| Modelica.Units.SI.MassFlowRate | m_flow_start (from PartialHeatGenerator) | 0 | Guess value of m_flow = port_a.m_flow |
| Modelica.Units.SI.AbsolutePressure | p_start (from PartialHeatGenerator) | Medium.p_default | Start value of pressure |
| Advanced › Pressure drop | |||
| Boolean | from_dp (from PartialHeatGenerator) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized (from PartialHeatGenerator) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from PartialHeatGenerator) | 0.3 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | a (from PartialHeatGenerator) | Coefficient of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n. | |
| Real | n (from PartialHeatGenerator) | 2 | Exponent of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n. |
| Modelica.Units.SI.Density | rho_default (from PartialHeatGenerator) | Medium.density_pTX(Medium.p_default, Medium.T_default, Medium.X_default) | Density used for parameterization of pressure curve |
| Dynamics | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialHeatGenerator) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| AixLib.Controls.Interfaces.BoilerControlBus | boiBus | Signal bus for the boiler |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow)) | Medium properties in port_b |
| AixLib.Fluid.Sensors.TemperatureTwoPort | senTRet (from PartialHeatGenerator) | Temperature sensor of cold side of heat generator (return) | |
| AixLib.Fluid.Sensors.TemperatureTwoPort | senTSup (from PartialHeatGenerator) | Temperature sensor of hot side of heat generator (supply) | |
| AixLib.Fluid.Sensors.MassFlowRate | senMasFlo (from PartialHeatGenerator) | Sensor for mass flwo rate | |
| Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow | heater (from PartialHeatGenerator) | Prescribed heat flow | |
| AixLib.Fluid.MixingVolumes.MixingVolume | vol (from PartialHeatGenerator) | Fluid volume | |
| AixLib.Fluid.FixedResistances.PressureDrop | preDro (from PartialHeatGenerator) | Pressure drop | |
| Modelica.Thermal.HeatTransfer.Components.HeatCapacitor | intCap | Boiler thermal capacity (dry weight) | |
| AixLib.Fluid.BoilerCHP.BaseClasses.OffDesignOperation | offDesignOperation | Calculate efficiency in off design operation | |
| Modelica.Thermal.HeatTransfer.Components.ThermalConductor | conToEnv | Thermal resistance of the boiler casing | |
| Modelica.Thermal.HeatTransfer.Sources.FixedTemperature | TEnvFix | Temperature of environment around the boiler to account for heat losses | |
| Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor | heaFloSen | Sensor to measure heatflow of heatlosses | |
| Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor | TSupMea | Measurement of supply/volume temperature | |
| AixLib.Fluid.BoilerCHP.BaseClasses.DesignOperation | designOperation | Calculate design fuel power | |
| Modelica.Blocks.Math.Product | fuePow | Fuel power calculation | |
| Modelica.Blocks.Math.Product | thePow | Thermal power calculation |
Revisions
-
June, 2023 by Moritz Zuschlag; David Jansen
First Implementation (see issue #1147)