Collection of models that illustrate model use and test models
Information
This package contains examples for the use of models that can be found in
Buildings.DHC.Plants.Steam.BaseClasses.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
BoilerPolynomial
|
Example model for the steam boiler with a polynomial efficiency curve |
ControlVolumeEvaporation
|
Example model for heat transfer with the evaporation control volume |
Example model for the steam boiler with a polynomial efficiency curve
Information
This example demonstrates the open loop response of the
steam boiler model. The dynamic boiler includes a control
signal that is first a ramp from 0 to 1,
followed by a step that switches the boiler off and then
on again. The steady boiler is only dependent on the fluid
flow.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
AbsolutePressure | p_nominal | 300000 | Nominal pressure [Pa] |
Temperature | T_nominal | MediumSte.saturationTemperat... | Nominal saturation temperature [K] |
Power | Q_flow_nominal | 50000 | Nominal power [W] |
SpecificEnthalpy | dh_nominal | MediumSte.specificEnthalpy(M... | Nominal change in enthalpy [J/kg] |
MassFlowRate | m_flow_nominal | Q_flow_nominal/dh_nominal/2 | Nominal mass flow rate [kg/s] |
PressureDifference | dp_nominal | 3000 | Pressure drop at m_flow_nominal [Pa] |
Modelica definition
model BoilerPolynomial
extends Modelica.Icons.Example;
package MediumWat =
Buildings.Media.Specialized.Water.TemperatureDependentDensity
;
package MediumSte =
Buildings.Media.Steam
;
parameter Modelica.Units.SI.AbsolutePressure p_nominal = 300000
;
parameter Modelica.Units.SI.Temperature T_nominal=
MediumSte.saturationTemperature(p_nominal)
;
parameter Modelica.Units.SI.Power Q_flow_nominal = 50000 ;
parameter Modelica.Units.SI.SpecificEnthalpy dh_nominal=
MediumSte.specificEnthalpy(
MediumSte.setState_pTX(p=p_nominal, T=T_nominal, X=MediumSte.X_default))
;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=
Q_flow_nominal/dh_nominal/2
;
parameter Modelica.Units.SI.PressureDifference dp_nominal = 3000
;
Modelica.Blocks.Sources.TimeTable y(
table=[0,0; 1200,1; 1200,0; 2000,0; 2000,1; 3600,1])
;
Buildings.Fluid.Sources.Boundary_pT sin(
redeclare package Medium = MediumSte,
p(displayUnit="bar") = 300000,
T=423.15,
nPorts=2)
;
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare package Medium = MediumWat,
p=300000 + dp_nominal,
T=303.15,
nPorts=2)
;
Buildings.HeatTransfer.Sources.FixedTemperature TAmb(T=288.15)
;
Buildings.DHC.Plants.Steam.BaseClasses.BoilerPolynomial boiDyn(
redeclare package MediumSte = MediumSte,
redeclare package MediumWat = MediumWat,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
m_flow_nominal=m_flow_nominal,
Q_flow_nominal=Q_flow_nominal,
fue=
Buildings.Fluid.Data.Fuels.NaturalGasLowerHeatingValue(),
dp_nominal=dp_nominal)
;
Buildings.DHC.Plants.Steam.BaseClasses.BoilerPolynomial boiSte(
redeclare package MediumSte = MediumSte,
redeclare package MediumWat = MediumWat,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
m_flow_nominal=m_flow_nominal,
Q_flow_nominal=Q_flow_nominal,
fue=
Buildings.Fluid.Data.Fuels.NaturalGasLowerHeatingValue(),
dp_nominal=dp_nominal)
;
equation
connect(TAmb.port, boiDyn.heatPort);
connect(y.y, boiDyn.y);
connect(sou.ports[1], boiSte.port_a);
connect(boiDyn.port_a, sou.ports[2]);
connect(boiSte.port_b, sin.ports[1]);
connect(boiDyn.port_b, sin.ports[2]);
end BoilerPolynomial;
Example model for heat transfer with the evaporation control volume
Information
This model demonstrates the use of the control volume with evaporation.
The dynamic volume includes heat conduction to the ambient while the
steady volume heat balance is only dependent on the mass flow rate.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model ControlVolumeEvaporation
extends Modelica.Icons.Example;
package MediumSte =
Buildings.Media.Steam
;
package MediumWat =
Buildings.Media.Specialized.Water.TemperatureDependentDensity
;
parameter Modelica.Units.SI.AbsolutePressure p_start = 1E6 ;
Buildings.DHC.Plants.Steam.BaseClasses.ControlVolumeEvaporation volDyn(
p_start=p_start,
V=1,
redeclare package MediumWat = MediumWat,
redeclare package MediumSte = MediumSte,
m_flow_nominal=0.01,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
allowFlowReversal=true) ;
Buildings.DHC.Plants.Steam.BaseClasses.ControlVolumeEvaporation volSte(
V=1,
redeclare package MediumWat = MediumWat,
redeclare package MediumSte = MediumSte,
m_flow_nominal=0.01,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
p_start=p_start,
allowFlowReversal=true) ;
Modelica.Fluid.Sources.MassFlowSource_T sou(
redeclare package Medium = MediumWat,
use_m_flow_in=true,
T=313.15,
nPorts=1) ;
Modelica.Fluid.Sources.MassFlowSource_T sou1(
redeclare package Medium = MediumWat,
use_m_flow_in=true,
T=313.15,
nPorts=1) ;
Modelica.Fluid.Sources.FixedBoundary bou(
redeclare package Medium = MediumSte,
p=p_start,
nPorts=2) ;
Modelica.Blocks.Sources.Ramp ramp(
duration=1,
offset=1,
height=-2) ;
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heaFlo
;
Modelica.Blocks.Sources.Constant const(k=-1000000) ;
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo
;
equation
connect(sou.ports[1], volDyn.port_a);
connect(preHeaFlo.port,heaFlo. port_a);
connect(preHeaFlo.Q_flow,const. y);
connect(heaFlo.port_b, volDyn.heatPort);
connect(sou1.ports[1], volSte.port_a);
connect(ramp.y, sou.m_flow_in);
connect(ramp.y, sou1.m_flow_in);
connect(volSte.port_b, bou.ports[1]);
connect(volDyn.port_b, bou.ports[2]);
end ControlVolumeEvaporation;