modelTwoUTubes

Borefield model containing double U-tube boreholes

Extends from Buildings.Fluid.Geothermal.ZonedBorefields.BaseClasses.PartialStorage (Partial model for borehole thermal energy storage with independent borefield zones).

Information

This model simulates a borehole thermal energy storage system with multiple zones of double U-tube boreholes. Boreholes within the same zone are connected in parallel. The borefield configuration and thermal parameters are defined in the borFieDat record.

Heat transfer to the soil is modeled using only one borehole heat exchanger per zone. The fluid mass flow rate into each borehole is divided to reflect the per-borehole fluid mass flow rate. The borehole model calculates the dynamics within the borehole itself using an axial discretization and a resistance-capacitance network for the internal thermal resistances between the individual pipes and between each pipe and the borehole wall.

The ground thermal response at each borehole segment is evaluated using analytical thermal response factors. Spatial and temporal superposition are used to evaluate the total temperature change at each of the borehole segments.

Parameters

TypeNameDefaultDescription
IntegernPorts (from PartialTwoNPorts)Number of fluid ports on each side
Modelica.Units.SI.TimetLoaAgg (from PartialStorage)3600.0Time resolution of load aggregation
IntegernCel (from PartialStorage)5Number of cells per aggregation level
IntegernSeg (from PartialStorage)10Number of segments to use in vertical discretization of the boreholes
Buildings.Fluid.Geothermal.ZonedBorefields.Data.Borefield.TemplateborFieDat (from PartialStorage)Borefield data record
IntegernZon (from PartialStorage)borFieDat.conDat.nZonTotal number of independent bore field zones
IntegernBorPerZon (from PartialStorage)borFieDat.conDat.nBorPerZonNumber of boreholes per borefield zone
Assumptions
BooleanallowFlowReversal (from PartialTwoNPorts)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRate[nPorts]m_flow_nominal (from PartialTwoNPortsInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifference[nPorts]dp_nominal (from TwoNPortsFlowResistanceParameters)Pressure difference
Advanced
Modelica.Units.SI.MassFlowRate[nPorts]m_flow_small (from PartialTwoNPortsInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoNPortsInterface)false= true, if actual temperature at port is computed
Flow resistance
Boolean[nPorts]computeFlowResistance (from TwoNPortsFlowResistanceParameters)fill(true, nPorts)=true, compute flow resistance. Set to false to assume no friction
Boolean[nPorts]from_dp (from TwoNPortsFlowResistanceParameters)fill(false, nPorts)= true, use m_flow = f(dp) else dp = f(m_flow)
Realn (from TwoNPortsFlowResistanceParameters)2Flow exponent, n=1 for laminar, n=2 for turbulent
Boolean[nPorts]linearizeFlowResistance (from TwoNPortsFlowResistanceParameters)fill(false, nPorts)= true, use linear relation between m_flow and dp for any flow rate
Real[nPorts]deltaM (from TwoNPortsFlowResistanceParameters)fill(0.1, nPorts)Fraction of nominal flow rate where flow transitions to laminar
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialStorage)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization
Medium.AbsolutePressurep_start (from PartialStorage)Medium.p_defaultStart value of pressure
Modelica.Units.SI.Temperature[nSeg]TFlu_start (from PartialStorage)TGro_startStart value of fluid temperature
Initialization › Soil
Modelica.Units.SI.TemperatureTExt0_start (from PartialStorage)283.15Initial far field temperature
Modelica.Units.SI.Temperature[nSeg]TExt_start (from PartialStorage){if z[i] >= z0 then TExt0_start + (z[i] - z0)*dT_dz else TExt0_start for i in 1:nSeg}Temperature of the undisturbed ground
Initialization › Filling material
Modelica.Units.SI.Temperature[nSeg]TGro_start (from PartialStorage)TExt_startStart value of grout temperature
Initialization › Temperature profile
Modelica.Units.SI.Heightz0 (from PartialStorage)10Depth below which the temperature gradient starts
RealdT_dz (from PartialStorage)0.01Vertical temperature gradient of the undisturbed soil for h below z0

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_a[nPorts]port_a (from PartialTwoNPorts)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_b[nPorts]port_b (from PartialTwoNPorts)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealOutput[nZon]TBorAve (from PartialStorage)Average borehole wall temperature in the borefield
Modelica.Blocks.Interfaces.RealOutput[nZon]QBorAve (from PartialStorage)Average (per borehole) heat transfer rate in each zone

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRate[nPorts]m_flow (from PartialTwoNPortsInterface)port_a[:].m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifference[nPorts]dp (from PartialTwoNPortsInterface)port_a[:].p - port_b[:].pPressure difference between port_a and port_b
Medium.ThermodynamicState[nPorts]sta_a (from PartialTwoNPortsInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicState[nPorts]sta_b (from PartialTwoNPortsInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialBorehole[nZon]borHol (from PartialStorage)
Buildings.Fluid.Geothermal.ZonedBorefields.BaseClasses.HeatTransfer.GroundTemperatureResponsegroTemRes (from PartialStorage)Ground thermal response

Revisions

  • February 2024, by Massimo Cimmino:
    First implementation.