Buildings.Fluid.Storage.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.Fluid.Storage.

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

Package Content

Name Description
Buildings.Fluid.Storage.Examples.ExpansionVessel ExpansionVessel Test model for expansion vessel
Buildings.Fluid.Storage.Examples.Stratified Stratified Test model for stratified tank
Buildings.Fluid.Storage.Examples.StratifiedEnhancedInternalHex StratifiedEnhancedInternalHex Example showing the use of StratifiedEnhancedInternalHex

Buildings.Fluid.Storage.Examples.ExpansionVessel Buildings.Fluid.Storage.Examples.ExpansionVessel

Test model for expansion vessel

Buildings.Fluid.Storage.Examples.ExpansionVessel

Information

This model tests a pressure expansion vessel. The medium model that is used in this example changes its density as a function of temperature. To see the effect of the expansion vessel, delete the connecting line between the volume and the expansion vessel and check how much more the pressure increases as the fluid is heated.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model ExpansionVessel "Test model for expansion vessel" extends Modelica.Icons.Example; // package Medium = Modelica.Media.Water.WaterIF97OnePhase_ph "Medium model"; package Medium = Buildings.Media.Water "Medium model"; Buildings.Fluid.Storage.ExpansionVessel expVes( redeclare package Medium = Medium, V_start=1) "Expansion vessel"; Buildings.Fluid.MixingVolumes.MixingVolume vol( redeclare package Medium = Medium, V=1, nPorts=1, m_flow_nominal=0.001, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Volume of water"; Modelica.Blocks.Sources.Pulse pulse( amplitude=20, period=3600, offset=293.15); Buildings.HeatTransfer.Sources.PrescribedTemperature preTem; Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=10000); equation connect(pulse.y, preTem.T); connect(preTem.port, theCon.port_a); connect(theCon.port_b, vol.heatPort); connect(vol.ports[1], expVes.port_a); end ExpansionVessel;

Buildings.Fluid.Storage.Examples.Stratified Buildings.Fluid.Storage.Examples.Stratified

Test model for stratified tank

Buildings.Fluid.Storage.Examples.Stratified

Information

This test model compares two tank models. The only difference between the two tank models is that one uses the third order upwind discretization scheme that reduces numerical diffusion that is induced when connecting volumes in series.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Modelica definition

model Stratified "Test model for stratified tank" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; Buildings.Fluid.Storage.Stratified tanSim( redeclare package Medium = Medium, hTan=3, dIns=0.3, nSeg=10, m_flow_nominal=0.1, VTan=3) "Tank"; Modelica.Blocks.Sources.TimeTable TWat(table=[0,273.15 + 40; 3600,273.15 + 40; 3600,273.15 + 20; 7200,273.15 + 20]) "Water temperature"; Buildings.Fluid.Sources.Boundary_pT sou_1( p=300000 + 5000, T=273.15 + 50, redeclare package Medium = Medium, use_T_in=true, nPorts=2); Buildings.Fluid.Sources.Boundary_pT sin_1( redeclare package Medium = Medium, T=273.15 + 20, use_p_in=true, p=300000, nPorts=2); Buildings.Fluid.FixedResistances.PressureDrop res_1( from_dp=true, redeclare package Medium = Medium, dp_nominal=5000, m_flow_nominal=0.1); Buildings.Fluid.Storage.StratifiedEnhanced tanEnh( redeclare package Medium = Medium, hTan=3, dIns=0.3, nSeg=10, m_flow_nominal=0.1, VTan=3) "Tank"; Buildings.Fluid.FixedResistances.PressureDrop res_2( from_dp=true, redeclare package Medium = Medium, dp_nominal=5000, m_flow_nominal=0.1); Buildings.Fluid.Sensors.EnthalpyFlowRate HOut_flow(redeclare package Medium = Medium, m_flow_nominal=0.1) "Enthalpy flow rate"; Buildings.Fluid.Sensors.EnthalpyFlowRate HOut_flow1(redeclare package Medium = Medium, m_flow_nominal=0.1) "Enthalpy flow rate"; Modelica.Blocks.Continuous.Integrator dH "Differenz in enthalpy (should be zero at steady-state)"; Modelica.Blocks.Math.Add add(k2=-1); Modelica.Blocks.Sources.TimeTable P(table=[0,300000; 4200,300000; 4200, 305000; 7200,305000; 7200,310000; 10800,310000; 10800,305000]) "Pressure boundary condition"; Modelica.Blocks.Sources.Sine sine( freqHz=1/86400, amplitude=10, offset=273.15 + 20); Buildings.HeatTransfer.Sources.PrescribedTemperature TBCSid2 "Boundary condition for tank"; Buildings.HeatTransfer.Sources.PrescribedTemperature TBCSid1 "Boundary condition for tank"; Buildings.HeatTransfer.Sources.PrescribedTemperature TBCTop1 "Boundary condition for tank"; Buildings.HeatTransfer.Sources.PrescribedTemperature TBCTop2 "Boundary condition for tank"; equation connect(TWat.y, sou_1.T_in); connect(tanSim.port_b, HOut_flow.port_a); connect(HOut_flow.port_b, res_1.port_a); connect(tanEnh.port_b, HOut_flow1.port_a); connect(HOut_flow1.port_b, res_2.port_a); connect(add.y, dH.u); connect(HOut_flow.H_flow, add.u1); connect(HOut_flow1.H_flow, add.u2); connect(P.y, sin_1.p_in); connect(sine.y, TBCSid1.T); connect(sine.y, TBCTop1.T); connect(sine.y, TBCSid2.T); connect(sine.y, TBCTop2.T); connect(TBCSid2.port, tanEnh.heaPorSid); connect(TBCTop2.port, tanEnh.heaPorTop); connect(sin_1.ports[1], res_1.port_b); connect(sin_1.ports[2], res_2.port_b); connect(sou_1.ports[1], tanSim.port_a); connect(sou_1.ports[2], tanEnh.port_a); connect(TBCSid1.port, tanSim.heaPorSid); connect(TBCTop1.port, tanSim.heaPorTop); end Stratified;

Buildings.Fluid.Storage.Examples.StratifiedEnhancedInternalHex Buildings.Fluid.Storage.Examples.StratifiedEnhancedInternalHex

Example showing the use of StratifiedEnhancedInternalHex

Buildings.Fluid.Storage.Examples.StratifiedEnhancedInternalHex

Information

This model provides an example for the Buildings.Fluid.Storage.StratifiedEnhancedInternalHex model. There are three tanks. In the tank on top, the fluid in the heat exchanger and the metal of the heat exchanger use a steady-state energy balance. In the middle tank, both use a dynamic balance. In the bottom tank, the fluid uses a steady-state heat balance but the metal of the heat exchanger uses a dynamic balance.

Each tank starts at the same water temperature, and there is no water flow through the tank. The glycol that flows through the heat exchanger starts with zero mass flow rate, and is set to its design flow rate at t=300 seconds.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
PressureDifferencedpHex_nominal2500Pressure drop across the heat exchanger at nominal conditions [Pa]
MassFlowRatemHex_flow_nominal0.278Mass flow rate of heat exchanger [kg/s]

Modelica definition

model StratifiedEnhancedInternalHex "Example showing the use of StratifiedEnhancedInternalHex" extends Modelica.Icons.Example; package MediumTan = Buildings.Media.Water "Medium in the tank"; package MediumHex = Buildings.Media.Water "Medium in the heat exchanger"; parameter Modelica.SIunits.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; parameter Modelica.SIunits.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; Buildings.Fluid.Sources.Boundary_pT bouWat(redeclare package Medium = MediumTan, nPorts=3) "Boundary condition for water (used to set pressure)"; Sources.Boundary_pT solColSup( redeclare package Medium = MediumHex, nPorts=3, use_p_in=true, T=353.15) "Water from solar collector"; Buildings.Fluid.Sources.Boundary_pT toSolCol( redeclare package Medium = MediumHex, nPorts=3, p(displayUnit="Pa") = 3E5, T=283.15) "Water to solar collector"; Buildings.Fluid.Storage.StratifiedEnhancedInternalHex tanSte( redeclare package Medium = MediumTan, m_flow_nominal=0.001, VTan=0.151416, dIns=0.0762, redeclare package MediumHex = MediumHex, CHex=40, Q_flow_nominal=0.278*4200*20, hTan=1.746, hHex_a=0.995, hHex_b=0.1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, allowFlowReversal=false, allowFlowReversalHex=false, mHex_flow_nominal=mHex_flow_nominal, TTan_nominal=293.15, THex_nominal=323.15, dpHex_nominal=dpHex_nominal) "Tank with heat exchanger configured as steady state"; Sensors.TemperatureTwoPort senTemSte(redeclare package Medium = MediumHex, allowFlowReversal=false, m_flow_nominal=mHex_flow_nominal, tau=0) "Temperature sensor for outlet of steady-state heat exchanger"; Modelica.Blocks.Sources.Step step( height=dpHex_nominal, offset=3E5, startTime=300) "Step input for mass flow rate"; Sensors.TemperatureTwoPort senTemDyn( redeclare package Medium = MediumHex, allowFlowReversal=false, m_flow_nominal=mHex_flow_nominal, tau=0) "Temperature sensor for outlet of dynamic heat exchanger"; Buildings.Fluid.Storage.StratifiedEnhancedInternalHex tanDyn( redeclare package Medium = MediumTan, m_flow_nominal=0.001, VTan=0.151416, dIns=0.0762, redeclare package MediumHex = MediumHex, CHex=40, Q_flow_nominal=0.278*4200*20, hTan=1.746, hHex_a=0.995, hHex_b=0.1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, allowFlowReversal=false, allowFlowReversalHex=false, mHex_flow_nominal=mHex_flow_nominal, energyDynamicsHex=Modelica.Fluid.Types.Dynamics.FixedInitial, TTan_nominal=293.15, THex_nominal=323.15) "Tank with heat exchanger configured as dynamic"; Buildings.Fluid.Storage.StratifiedEnhancedInternalHex tanDynSol( redeclare package Medium = MediumTan, m_flow_nominal=0.001, VTan=0.151416, dIns=0.0762, redeclare package MediumHex = MediumHex, CHex=40, Q_flow_nominal=0.278*4200*20, hTan=1.746, hHex_a=0.995, hHex_b=0.1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, allowFlowReversal=false, allowFlowReversalHex=false, mHex_flow_nominal=mHex_flow_nominal, energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, energyDynamicsHexSolid=Modelica.Fluid.Types.Dynamics.SteadyStateInitial, TTan_nominal=293.15, THex_nominal=323.15) "Tank with heat exchanger configured as steady-state except for metal which is dynamic"; Sensors.TemperatureTwoPort senTemDynSol( redeclare package Medium = MediumHex, allowFlowReversal=false, m_flow_nominal=mHex_flow_nominal, tau=0) "Temperature sensor for outlet of steady state heat exchanger with solid configured dynamic"; equation connect(solColSup.ports[1], tanSte.portHex_a); connect(senTemSte.port_b, toSolCol.ports[1]); connect(senTemSte.port_a, tanSte.portHex_b); connect(senTemDyn.port_a, tanDyn.portHex_b); connect(senTemDyn.port_b, toSolCol.ports[2]); connect(tanDynSol.portHex_b, senTemDynSol.port_a); connect(senTemDynSol.port_b, toSolCol.ports[3]); connect(solColSup.ports[2], tanDyn.portHex_a); connect(solColSup.ports[3], tanDynSol.portHex_a); connect(bouWat.ports[1], tanSte.port_b); connect(bouWat.ports[2], tanDyn.port_b); connect(bouWat.ports[3], tanDynSol.port_b); connect(step.y, solColSup.p_in); end StratifiedEnhancedInternalHex;