Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages

Package of thermal storages models used for district heating and cooling systems

Information

This package contains models of thermal storage systems that are used to build example models of DHC systems.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages.BoreField BoreField Geothermal borefield model

Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages.BoreField Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages.BoreField

Geothermal borefield model

Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages.BoreField

Information

This model represents a borefield composed of 350 boreholes, with the following main assumptions.

Extends from Buildings.Fluid.Geothermal.Borefields.TwoUTubes (Borefield model containing double U-tube boreholes).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
IntegernCel5Number of cells per aggregation level
IntegernSeg5Number of segments to use in vertical discretization of the boreholes
IntegerdBor10Distance between boreholes
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
BooleanforceGFunCalcfalseSet to true to force the thermal response to be calculated at the start instead of checking whether this has been pre-computed
Diagnostics
Booleanshow_Ttrue= true, if actual temperature at port is computed
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
BooleandynFiltrueSet to false to remove the dynamics of the filling material.
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureTFlu_start[nSeg]TGro_startStart value of fluid temperature [K]
Soil
TemperatureTExt0_start282.55Initial far field temperature [K]
TemperatureTExt_start[nSeg]{if z[i] >= z0 then TExt0_st...Temperature of the undisturbed ground [K]
Filling material
TemperatureTGro_start[nSeg]TExt_startStart value of grout temperature [K]
Temperature profile
Heightz010Depth below which the temperature gradient starts [m]
RealdT_dz0.02Vertical temperature gradient of the undisturbed soil for h below z0 [K/m]

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
output RealOutputTBorAveAverage borehole wall temperature in the borefield [K]
output RealOutputQ_flowRate at which heat is extracted from soil [W]

Modelica definition

model BoreField "Geothermal borefield model" extends Buildings.Fluid.Geothermal.Borefields.TwoUTubes( final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final tLoaAgg(displayUnit="h") = 3600, final nSeg=5, TExt0_start=282.55, final z0=10, final dT_dz=0.02, final dynFil=true, borFieDat( final filDat=Buildings.Fluid.Geothermal.Borefields.Data.Filling.Bentonite( kFil=2.0, cFil=3040, dFil=1450), final soiDat=Buildings.Fluid.Geothermal.Borefields.Data.Soil.SandStone( kSoi=2.3, cSoi=1000, dSoi=2600), final conDat= Buildings.Fluid.Geothermal.Borefields.Data.Configuration.Example( borCon=Buildings.Fluid.Geothermal.Borefields.Types.BoreholeConfiguration.DoubleUTubeParallel, dp_nominal=35000, hBor=300, rBor=0.095, nBor=350, cooBor={dBor*{mod(i - 1, 10),floor((i - 1)/10)} for i in 1:350}, dBor=dBor, rTub=0.02, kTub=0.5, eTub=0.0037, xC=0.05)), final show_T=true); parameter Integer dBor = 10 "Distance between boreholes"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput Q_flow(final unit="W") "Rate at which heat is extracted from soil"; equation connect(gaiQ_flow.y, Q_flow); end BoreField;