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 |
---|---|
BoreField | Geothermal borefield model |
Buildings.Experimental.DHC.Examples.Combined.Generation5.ThermalStorages.BoreField
Geothermal borefield model
Information
This model represents a borefield composed of 350 boreholes, with the following main assumptions.
- The soil is made of sandstone.
- The boreholes are filled with a bentonite grout.
- The boreholes have a height of 300 m and a diameter of 190 mm. They are discretized vertically in five segments.
- A distance of 10 m between each borehole is considered.
- HDPE pipes with a diameter of 40 mm are considered, in a double U-tube parallel configuration.
Extends from Buildings.Fluid.Geothermal.Borefields.TwoUTubes (Borefield model containing double U-tube boreholes).
Parameters
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
Integer | nCel | 5 | Number of cells per aggregation level |
Integer | nSeg | 5 | Number of segments to use in vertical discretization of the boreholes |
Integer | dBor | 10 | Distance between boreholes |
Assumptions | |||
Boolean | allowFlowReversal | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
Advanced | |||
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Boolean | forceGFunCalc | false | Set to true to force the thermal response to be calculated at the start instead of checking whether this has been pre-computed |
Diagnostics | |||
Boolean | show_T | true | = true, if actual temperature at port is computed |
Flow resistance | |||
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate |
Real | deltaM | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Dynamics | |||
Equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Boolean | dynFil | true | Set to false to remove the dynamics of the filling material. |
Initialization | |||
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa] |
Temperature | TFlu_start[nSeg] | TGro_start | Start value of fluid temperature [K] |
Soil | |||
Temperature | TExt0_start | 282.55 | Initial far field temperature [K] |
Temperature | TExt_start[nSeg] | {if z[i] >= z0 then TExt0_st... | Temperature of the undisturbed ground [K] |
Filling material | |||
Temperature | TGro_start[nSeg] | TExt_start | Start value of grout temperature [K] |
Temperature profile | |||
Height | z0 | 10 | Depth below which the temperature gradient starts [m] |
Real | dT_dz | 0.02 | Vertical temperature gradient of the undisturbed soil for h below z0 [K/m] |
Connectors
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
output RealOutput | TBorAve | Average borehole wall temperature in the borefield [K] |
output RealOutput | Q_flow | Rate 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;