Buildings.Fluid.Geothermal.ZonedBorefields.Examples
Example models for zoned borefields
Information
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name | Description |
---|---|
![]() |
Description |
Buildings.Fluid.Geothermal.ZonedBorefields.Examples.SeriesConnectedZones
Description
Information
This example shows a borefield of 228 boreholes divided into 2 zones, as configured in Buildings.Fluid.Geothermal.ZonedBorefields.Data.Configuration.Validation.
The total heat flow rate is cyclical, and the flow direction reverses when the heating signal changes from injection and extraction.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
---|---|---|---|
Temperature | T_start | 283.15 | Initial temperature of the soil [K] |
Validation | borFieDat | borFieDat(filDat=filDat, soi... | Borefield data |
Validation | conDat | Borefield configuration data | |
Bentonite | filDat | Borehole filling data | |
SandStone | soiDat | Soil data |
Modelica definition
model SeriesConnectedZones "Description"
extends Modelica.Icons.Example;
package Medium = Buildings.Media.Water;
parameter Modelica.Units.SI.Temperature T_start=283.15
"Initial temperature of the soil";
final parameter Integer nZon(min=1) = borFieDat.conDat.nZon
"Total number of independent bore field zones";
Buildings.Fluid.Geothermal.ZonedBorefields.OneUTube borHol(
redeclare package Medium = Medium,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
borFieDat=borFieDat,
TExt0_start=T_start,
dT_dz=0)
"Borehole";
Movers.Preconfigured.FlowControlled_m_flow pum(
redeclare package Medium = Medium,
T_start=T_start,
allowFlowReversal=true,
addPowerToMedium=false,
use_riseTime=false,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
m_flow_nominal=borFieDat.conDat.mZon_flow_nominal[1],
dp_nominal=60E3) "Circulation pump";
Sensors.TemperatureTwoPort TBorFieIn(
redeclare package Medium = Medium,
T_start=T_start,
m_flow_nominal=borFieDat.conDat.mZon_flow_nominal[1],
tau=0) "Inlet temperature of the borefield";
Sensors.TemperatureTwoPort TBorFieOut(
redeclare package Medium = Medium,
T_start=T_start,
m_flow_nominal=borFieDat.conDat.mZon_flow_nominal[1],
tau=0) "Outlet temperature of the borefield";
parameter Buildings.Fluid.Geothermal.ZonedBorefields.Data.Borefield.Validation
borFieDat(
filDat=filDat,
soiDat=soiDat,
conDat=conDat) "Borefield data";
Sources.Boundary_ph sin(redeclare package Medium = Medium, nPorts=1)
"Sink";
HeatExchangers.HeaterCooler_u hea(
redeclare package Medium = Medium,
dp_nominal=10000,
show_T=true,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
T_start=T_start,
m_flow_nominal=borFieDat.conDat.mZon_flow_nominal[1],
m_flow(start=borFieDat.conDat.mZon_flow_nominal[1]),
p_start=100000,
Q_flow_nominal=2*Modelica.Constants.pi*borFieDat.soiDat.kSoi*borFieDat.conDat.hBor
*borFieDat.conDat.nBor) "Heater";
parameter ZonedBorefields.Data.Configuration.Validation conDat
"Borefield configuration data";
parameter ZonedBorefields.Data.Filling.Bentonite filDat
"Borehole filling data";
parameter ZonedBorefields.Data.Soil.SandStone soiDat
"Soil data";
Modelica.Blocks.Sources.Cosine heaRat(
amplitude=0.75,
f=1/(7*24*3600),
offset=0.5)
"Heating rate signal";
Modelica.Blocks.Logical.GreaterThreshold
sig
"Sign of heating rate signal to determine flow direction";
Modelica.Blocks.Math.BooleanToReal
gai(realTrue=conDat.mZon_flow_nominal[1], realFalse
=-conDat.mZon_flow_nominal[1])
"Gain for fluid mass flow rate";
equation
connect(heaRat.y, hea.u);
connect(hea.port_b, pum.port_a);
connect(pum.port_b, TBorFieIn.port_a);
connect(TBorFieIn.port_b, borHol.port_a[1]);
connect(borHol.port_b[1:end - 1], borHol.port_a[2:end]);
connect(borHol.port_b[end], TBorFieOut.port_a);
connect(TBorFieOut.port_b, hea.port_a);
connect(sin.ports[1], TBorFieOut.port_b);
connect(heaRat.y, sig.u);
connect(gai.y, pum.m_flow_in);
connect(sig.y, gai.u);
end SeriesConnectedZones;