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
Buildings.Fluid.Geothermal.ZonedBorefields.Examples.SeriesConnectedZones SeriesConnectedZones Description

Buildings.Fluid.Geothermal.ZonedBorefields.Examples.SeriesConnectedZones Buildings.Fluid.Geothermal.ZonedBorefields.Examples.SeriesConnectedZones

Description

Buildings.Fluid.Geothermal.ZonedBorefields.Examples.SeriesConnectedZones

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

TypeNameDefaultDescription
TemperatureT_start283.15Initial temperature of the soil [K]
ValidationborFieDatborFieDat(filDat=filDat, soi...Borefield data
ValidationconDat Borefield configuration data
BentonitefilDat Borehole filling data
SandStonesoiDat 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;