Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples

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.Experimental.DHC.Plants.Steam.BaseClasses.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.BoilerPolynomial BoilerPolynomial Example model for the steam boiler with a polynomial efficiency curve
Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.ControlVolumeEvaporation ControlVolumeEvaporation Example model for heat transfer with the evaporation control volume

Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.BoilerPolynomial Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.BoilerPolynomial

Example model for the steam boiler with a polynomial efficiency curve

Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.BoilerPolynomial

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

TypeNameDefaultDescription
AbsolutePressurep_nominal300000Nominal pressure [Pa]
TemperatureT_nominalMediumSte.saturationTemperat...Nominal saturation temperature [K]
PowerQ_flow_nominal50000Nominal power [W]
SpecificEnthalpydh_nominalMediumSte.specificEnthalpy(M...Nominal change in enthalpy [J/kg]
MassFlowRatem_flow_nominalQ_flow_nominal/dh_nominal/2Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal3000Pressure drop at m_flow_nominal [Pa]

Modelica definition

model BoilerPolynomial "Example model for the steam boiler with a polynomial efficiency curve" extends Modelica.Icons.Example; // Medium declarations package MediumWat = Buildings.Media.Specialized.Water.TemperatureDependentDensity "Water medium - port_a (inlet)"; package MediumSte = Buildings.Media.Steam "Steam medium - port_b (oulet)"; // Nominal conditions parameter Modelica.Units.SI.AbsolutePressure p_nominal = 300000 "Nominal pressure"; parameter Modelica.Units.SI.Temperature T_nominal= MediumSte.saturationTemperature(p_nominal) "Nominal saturation temperature"; parameter Modelica.Units.SI.Power Q_flow_nominal = 50000 "Nominal power"; parameter Modelica.Units.SI.SpecificEnthalpy dh_nominal= MediumSte.specificEnthalpy( MediumSte.setState_pTX(p=p_nominal, T=T_nominal, X=MediumSte.X_default)) "Nominal change in enthalpy"; parameter Modelica.Units.SI.MassFlowRate m_flow_nominal= Q_flow_nominal/dh_nominal/2 "Nominal mass flow rate"; parameter Modelica.Units.SI.PressureDifference dp_nominal = 3000 "Pressure drop at m_flow_nominal"; Modelica.Blocks.Sources.TimeTable y( table=[0,0; 1200,1; 1200,0; 2000,0; 2000,1; 3600,1]) "Load ratio"; Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = MediumSte, p(displayUnit="bar") = 300000, T=423.15, nPorts=2) "Sink"; Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = MediumWat, p=300000 + dp_nominal, T=303.15, nPorts=2) "Source"; Buildings.HeatTransfer.Sources.FixedTemperature TAmb(T=288.15) "Ambient temperature in boiler room"; Buildings.Experimental.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) "Steam boiler with dynamic balance"; Buildings.Experimental.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) "Steam boiler with steady state balance"; 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;

Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.ControlVolumeEvaporation Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.ControlVolumeEvaporation

Example model for heat transfer with the evaporation control volume

Buildings.Experimental.DHC.Plants.Steam.BaseClasses.Examples.ControlVolumeEvaporation

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

TypeNameDefaultDescription
AbsolutePressurep_start1E6Initial pressure [Pa]

Modelica definition

model ControlVolumeEvaporation "Example model for heat transfer with the evaporation control volume" extends Modelica.Icons.Example; package MediumSte = Buildings.Media.Steam "Steam medium - Medium model for port_b (outlet)"; package MediumWat = Buildings.Media.Specialized.Water.TemperatureDependentDensity "Water medium - Medium model for port_a (inlet)"; parameter Modelica.Units.SI.AbsolutePressure p_start = 1E6 "Initial pressure"; Buildings.Experimental.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) "Dynamic volume"; Buildings.Experimental.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) "Steady volume"; Modelica.Fluid.Sources.MassFlowSource_T sou( redeclare package Medium = MediumWat, use_m_flow_in=true, T=313.15, nPorts=1) "Flow source"; Modelica.Fluid.Sources.MassFlowSource_T sou1( redeclare package Medium = MediumWat, use_m_flow_in=true, T=313.15, nPorts=1) "Flow source"; Modelica.Fluid.Sources.FixedBoundary bou( redeclare package Medium = MediumSte, p=p_start, nPorts=2) "Boundary condition"; Modelica.Blocks.Sources.Ramp ramp( duration=1, offset=1, height=-2) "Ramp"; Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heaFlo "Heat flow sensor"; Modelica.Blocks.Sources.Constant const(k=-1000000) "Heat loss"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo "Prescribed heat flow rate"; 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;