Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses

Base classes for Borehole

Information

This package contains base classes that are used to construct the models in Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXOneUTube InternalHEXOneUTube Internal heat exchanger of a borehole for a single U-tube configuration
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXTwoUTube InternalHEXTwoUTube Internal heat exchanger of a borehole for a double U-tube configuration. In loop 1, fluid 1 streams from a1 to b1 and comes back from a2 to b2. In loop 2: fluid 2 streams from a3 to b3 and comes back from a4 to b4.
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesOneUTube InternalResistancesOneUTube Internal resistance model for single U-tube borehole segments.
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesTwoUTube InternalResistancesTwoUTube Internal resistance model for double U-tube borehole segments.
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialBorehole PartialBorehole Partial model to implement multi-segment boreholes
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX PartialInternalHEX Partial model to implement the internal heat exchanger of a borehole segment
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances PartialInternalResistances Partial model to implement borehole segment internal resistance models
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions Functions Package with functions for evaluation of borehole thermal resistances
Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Examples Examples Example models to test base classes

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXOneUTube Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXOneUTube

Internal heat exchanger of a borehole for a single U-tube configuration

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXOneUTube

Information

Model for the heat transfer between the fluid and within the borehole filling for a single borehole segment. This model computes the dynamic response of the fluid in the tubes, the heat transfer between the fluid and the borehole filling, and the heat storage within the fluid and the borehole filling.

This model computes the different thermal resistances present in a single-U-tube borehole using the method of Bauer et al. (2011) and computing explicitely the fluid-to-ground thermal resistance Rb and the grout-to-grout resistance Ra as defined by Claesson and Hellstrom (2011) using the multipole method.

References

J. Claesson and G. Hellstrom. Multipole method to calculate borehole thermal resistances in a borehole heat exchanger. HVAC&R Research, 17(6): 895-911, 2011.

D. Bauer, W. Heidemann, H. Müller-Steinhagen, and H.-J. G. Diersch. Thermal resistance and capacity models for borehole heat exchangers . International Journal Of Energy Research, 35:312-320, 2011.

Extends from Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX (Partial model to implement the internal heat exchanger of a borehole segment), Buildings.Fluid.Interfaces.FourPortHeatMassExchanger (Model transporting two fluid streams between four ports with storing mass or energy).

Parameters

TypeNameDefaultDescription
TemplateborFieDat Borefield parameters
replaceable package MediumPartialMediumMedium
LengthhSeg Length of the internal heat exchanger [m]
VolumeVTubSeghSeg*Modelica.Constants.pi*(...Fluid volume in each tube [m3]
replaceable package Medium1PartialMediumMedium 1 in the component
replaceable package Medium2PartialMediumMedium 2 in the component
Nominal condition
MassFlowRatem1_flow_nominal Nominal mass flow rate [kg/s]
MassFlowRatem2_flow_nominal Nominal mass flow rate [kg/s]
PressureDifferencedp1_nominal Pressure difference [Pa]
PressureDifferencedp2_nominal Pressure difference [Pa]
Dynamics
BooleandynFiltrueSet to false to remove the dynamics of the filling material
Nominal condition
Timetau1VTubSeg*rho1_nominal/m1_flow...Time constant at nominal flow [s]
Timetau2VTubSeg*rho2_nominal/m2_flow...Time constant at nominal flow [s]
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state
Initialization
TemperatureTFlu_start Start value of fluid temperature [K]
TemperatureTGro_start Start value of grout temperature [K]
Medium 1
AbsolutePressurep1_startMedium1.p_defaultStart value of pressure [Pa]
TemperatureT1_startTFlu_startStart value of temperature [K]
MassFractionX1_start[Medium1.nX]Medium1.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC1_start[Medium1.nC]fill(0, Medium1.nC)Start value of trace substances
ExtraPropertyC1_nominal[Medium1.nC]fill(1E-2, Medium1.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Medium 2
AbsolutePressurep2_startMedium2.p_defaultStart value of pressure [Pa]
TemperatureT2_startTFlu_startStart value of temperature [K]
MassFractionX2_start[Medium2.nX]Medium2.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC2_start[Medium2.nC]fill(0, Medium2.nC)Start value of trace substances
ExtraPropertyC2_nominal[Medium2.nC]fill(1E-2, Medium2.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Assumptions
BooleanallowFlowReversal1true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Advanced
MassFlowRatem1_flow_small1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem2_flow_small1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
Medium 1
Booleanfrom_dp1false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance1false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM10.1Fraction of nominal flow rate where flow transitions to laminar
Medium 2
Booleanfrom_dp2false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance2false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM20.1Fraction of nominal flow rate where flow transitions to laminar

Connectors

TypeNameDescription
HeatPort_aport_wallThermal connection for borehole wall
replaceable package Medium1Medium 1 in the component
replaceable package Medium2Medium 2 in the component
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)

Modelica definition

model InternalHEXOneUTube "Internal heat exchanger of a borehole for a single U-tube configuration" extends Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX; extends Buildings.Fluid.Interfaces.FourPortHeatMassExchanger( redeclare final package Medium1 = Medium, redeclare final package Medium2 = Medium, T1_start=TFlu_start, T2_start=TFlu_start, final tau1=VTubSeg*rho1_nominal/m1_flow_nominal, final tau2=VTubSeg*rho2_nominal/m2_flow_nominal, redeclare final Buildings.Fluid.MixingVolumes.MixingVolume vol1( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final m_flow_small=m1_flow_small, final V=VTubSeg, final mSenFac=mSenFac), redeclare final Buildings.Fluid.MixingVolumes.MixingVolume vol2( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final m_flow_small=m2_flow_small, final V=VTubSeg, final mSenFac=mSenFac)); protected parameter Real Rgg_val(fixed=false) "Thermal resistance between the two grout zones"; public Modelica.Blocks.Sources.RealExpression RVol1(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m1_flow, m_flow_nominal=m1_flow_nominal)) "Convective and thermal resistance at fluid 1"; Modelica.Blocks.Sources.RealExpression RVol2(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m2_flow, m_flow_nominal=m2_flow_nominal)) "Convective and thermal resistance at fluid 2"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesOneUTube intResUTub( dynFil=dynFil, hSeg=hSeg, energyDynamics=energyDynamics, Rgb_val=Rgb_val, Rgg_val=Rgg_val, RCondGro_val=RCondGro_val, borFieDat=borFieDat, T_start=TGro_start) "Internal resistances for a single U-tube configuration"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv2 "Pipe convective resistance"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv1 "Pipe convective resistance"; initial equation (x, Rgb_val, Rgg_val, RCondGro_val) = Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.internalResistancesOneUTube( hSeg=hSeg, rBor=borFieDat.conDat.rBor, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, sha=borFieDat.conDat.xC, kFil=borFieDat.filDat.kFil, kSoi=borFieDat.soiDat.kSoi, kTub=borFieDat.conDat.kTub, use_Rb=borFieDat.conDat.use_Rb, Rb=borFieDat.conDat.Rb, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow_nominal=m1_flow_nominal, printDebug=false); equation assert(borFieDat.conDat.borCon == Buildings.Fluid.Geothermal.Borefields.Types.BoreholeConfiguration.SingleUTube, "This model should be used for single U-type borefield, not double U-type. Check that the conDat record has been correctly parametrized"); connect(RVol2.y, RConv2.Rc); connect(RVol1.y, RConv1.Rc); connect(vol1.heatPort, RConv1.fluid); connect(RConv1.solid, intResUTub.port_1); connect(RConv2.fluid, vol2.heatPort); connect(RConv2.solid, intResUTub.port_2); connect(intResUTub.port_wall, port_wall); end InternalHEXOneUTube;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXTwoUTube Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXTwoUTube

Internal heat exchanger of a borehole for a double U-tube configuration. In loop 1, fluid 1 streams from a1 to b1 and comes back from a2 to b2. In loop 2: fluid 2 streams from a3 to b3 and comes back from a4 to b4.

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalHEXTwoUTube

Information

Model for the heat transfer between the fluid and within the borehole filling. This model computes the dynamic response of the fluid in the tubes, the heat transfer between the fluid and the borehole filling, and the heat storage within the fluid and the borehole filling.

This model computes the different thermal resistances present in a single-U-tube borehole using the method of Bauer et al. (2011) and computing explicitely the fluid-to-ground thermal resistance Rb and the grout-to-grout resistance Ra as defined by Claesson and Hellstrom (2011) using the multipole method.

References

J. Claesson and G. Hellstrom. Multipole method to calculate borehole thermal resistances in a borehole heat exchanger. HVAC&R Research, 17(6): 895-911, 2011.

D. Bauer, W. Heidemann, H. Müller-Steinhagen, and H.-J. G. Diersch. Thermal resistance and capacity models for borehole heat exchangers . International Journal Of Energy Research, 35:312-320, 2011.

Extends from Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX (Partial model to implement the internal heat exchanger of a borehole segment), Buildings.Fluid.Interfaces.EightPortHeatMassExchanger (Model transporting four fluid streams between eight ports with storing mass or energy).

Parameters

TypeNameDefaultDescription
TemplateborFieDat Borefield parameters
replaceable package MediumPartialMediumMedium
LengthhSeg Length of the internal heat exchanger [m]
VolumeVTubSeghSeg*Modelica.Constants.pi*(...Fluid volume in each tube [m3]
replaceable package Medium1PartialMediumMedium 1 in the component
replaceable package Medium2PartialMediumMedium 2 in the component
replaceable package Medium3PartialMediumMedium 3 in the component
replaceable package Medium4PartialMediumMedium 4 in the component
Nominal condition
MassFlowRatem1_flow_nominal Nominal mass flow rate [kg/s]
MassFlowRatem2_flow_nominal Nominal mass flow rate [kg/s]
MassFlowRatem3_flow_nominal Nominal mass flow rate [kg/s]
MassFlowRatem4_flow_nominal Nominal mass flow rate [kg/s]
Pressuredp1_nominal Pressure [Pa]
Pressuredp2_nominal Pressure [Pa]
Pressuredp3_nominal Pressure [Pa]
Pressuredp4_nominal Pressure [Pa]
Dynamics
BooleandynFiltrueSet to false to remove the dynamics of the filling material
Nominal condition
Timetau1VTubSeg*rho1_nominal/m1_flow...Time constant at nominal flow [s]
Timetau2VTubSeg*rho2_nominal/m2_flow...Time constant at nominal flow [s]
Timetau3VTubSeg*rho3_nominal/m3_flow...Time constant at nominal flow [s]
Timetau4VTubSeg*rho4_nominal/m4_flow...Time constant at nominal flow [s]
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Formulation of energy balance
DynamicsmassDynamicsenergyDynamicsFormulation of mass balance
Initialization
TemperatureTFlu_start Start value of fluid temperature [K]
TemperatureTGro_start Start value of grout temperature [K]
Medium 1
AbsolutePressurep1_startMedium1.p_defaultStart value of pressure [Pa]
TemperatureT1_startTFlu_startStart value of temperature [K]
MassFractionX1_start[Medium1.nX]Medium1.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC1_start[Medium1.nC]fill(0, Medium1.nC)Start value of trace substances
ExtraPropertyC1_nominal[Medium1.nC]fill(1E-2, Medium1.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Medium 2
AbsolutePressurep2_startMedium2.p_defaultStart value of pressure [Pa]
TemperatureT2_startTFlu_startStart value of temperature [K]
MassFractionX2_start[Medium2.nX]Medium2.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC2_start[Medium2.nC]fill(0, Medium2.nC)Start value of trace substances
ExtraPropertyC2_nominal[Medium2.nC]fill(1E-2, Medium2.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Medium 3
AbsolutePressurep3_startMedium3.p_defaultStart value of pressure [Pa]
TemperatureT3_startTFlu_startStart value of temperature [K]
MassFractionX3_start[Medium3.nX]Medium3.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC3_start[Medium3.nC]fill(0, Medium3.nC)Start value of trace substances
ExtraPropertyC3_nominal[Medium3.nC]fill(1E-2, Medium3.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Medium 4
AbsolutePressurep4_startMedium4.p_defaultStart value of pressure [Pa]
TemperatureT4_startTFlu_startStart value of temperature [K]
MassFractionX4_start[Medium4.nX]Medium4.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC4_start[Medium4.nC]fill(0, Medium4.nC)Start value of trace substances
ExtraPropertyC4_nominal[Medium4.nC]fill(1E-2, Medium4.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Assumptions
BooleanallowFlowReversal1true= true to allow flow reversal in medium 1, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal2true= true to allow flow reversal in medium 2, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal3true= true to allow flow reversal in medium 3, false restricts to design direction (port_a -> port_b)
BooleanallowFlowReversal4true= true to allow flow reversal in medium 4, false restricts to design direction (port_a -> port_b)
Advanced
MassFlowRatem1_flow_small1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem2_flow_small1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem3_flow_small1E-4*abs(m3_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem4_flow_small1E-4*abs(m4_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
Medium 1
Booleanfrom_dp1false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance1false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM10.1Fraction of nominal flow rate where flow transitions to laminar
Medium 2
Booleanfrom_dp2false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance2false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM20.1Fraction of nominal flow rate where flow transitions to laminar
Medium 3
Booleanfrom_dp3false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance3false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM30.1Fraction of nominal flow rate where flow transitions to laminar
Medium 4
Booleanfrom_dp4false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance4false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM40.1Fraction of nominal flow rate where flow transitions to laminar

Connectors

TypeNameDescription
HeatPort_aport_wallThermal connection for borehole wall
replaceable package Medium1Medium 1 in the component
replaceable package Medium2Medium 2 in the component
replaceable package Medium3Medium 3 in the component
replaceable package Medium4Medium 4 in the component
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_aport_a3Fluid connector a1 (positive design flow direction is from port_a3 to port_b3)
FluidPort_bport_b3Fluid connector b2 (positive design flow direction is from port_a3 to port_b3)
FluidPort_aport_a4Fluid connector a1 (positive design flow direction is from port_a4 to port_b4)
FluidPort_bport_b4Fluid connector b2 (positive design flow direction is from port_a4 to port_b4)

Modelica definition

model InternalHEXTwoUTube "Internal heat exchanger of a borehole for a double U-tube configuration. In loop 1, fluid 1 streams from a1 to b1 and comes back from a2 to b2. In loop 2: fluid 2 streams from a3 to b3 and comes back from a4 to b4." extends Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX; extends Buildings.Fluid.Interfaces.EightPortHeatMassExchanger( redeclare final package Medium1 = Medium, redeclare final package Medium2 = Medium, redeclare final package Medium3 = Medium, redeclare final package Medium4 = Medium, T1_start=TFlu_start, T2_start=TFlu_start, T3_start=TFlu_start, T4_start=TFlu_start, final tau1=VTubSeg*rho1_nominal/m1_flow_nominal, final tau2=VTubSeg*rho2_nominal/m2_flow_nominal, final tau3=VTubSeg*rho3_nominal/m3_flow_nominal, final tau4=VTubSeg*rho4_nominal/m4_flow_nominal, vol1( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final allowFlowReversal=allowFlowReversal1, final m_flow_small=m1_flow_small, final V=VTubSeg, final mSenFac=mSenFac), vol2( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final m_flow_small=m2_flow_small, final V=VTubSeg, final mSenFac=mSenFac), vol3( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final allowFlowReversal=allowFlowReversal3, final m_flow_small=m3_flow_small, final V=VTubSeg, final mSenFac=mSenFac), vol4( final energyDynamics=energyDynamics, final massDynamics=massDynamics, final prescribedHeatFlowRate=false, final m_flow_small=m4_flow_small, final V=VTubSeg, final mSenFac=mSenFac)); Modelica.Blocks.Sources.RealExpression RVol1(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m1_flow, m_flow_nominal=m1_flow_nominal)) "Convective and thermal resistance at fluid 1"; Modelica.Blocks.Sources.RealExpression RVol2(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m2_flow, m_flow_nominal=m2_flow_nominal)) "Convective and thermal resistance at fluid 2"; Modelica.Blocks.Sources.RealExpression RVol3(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m3_flow, m_flow_nominal=m3_flow_nominal)) "Convective and thermal resistance at fluid 1"; Modelica.Blocks.Sources.RealExpression RVol4(y= Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.convectionResistanceCircularPipe( hSeg=hSeg, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow=m1_flow, m_flow_nominal=m4_flow_nominal)) "Convective and thermal resistance at fluid 1"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesTwoUTube intRes2UTub( hSeg=hSeg, borFieDat=borFieDat, Rgb_val=Rgb_val, Rgg1_val=Rgg1_val, Rgg2_val=Rgg2_val, RCondGro_val=RCondGro_val, dynFil=dynFil, energyDynamics=energyDynamics, T_start=TGro_start) "Internal resistances for a double U-tube configuration"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv1 "Pipe convective resistance"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv2 "Pipe convective resistance"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv3 "Pipe convective resistance"; Modelica.Thermal.HeatTransfer.Components.ConvectiveResistor RConv4 "Pipe convective resistance"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_wall; protected parameter Real Rgg1_val(fixed=false); parameter Real Rgg2_val(fixed=false); initial equation (x,Rgb_val,Rgg1_val,Rgg2_val,RCondGro_val) = Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.Functions.internalResistancesTwoUTube( hSeg=hSeg, rBor=borFieDat.conDat.rBor, rTub=borFieDat.conDat.rTub, eTub=borFieDat.conDat.eTub, sha=borFieDat.conDat.xC, kFil=borFieDat.filDat.kFil, kSoi=borFieDat.soiDat.kSoi, kTub=borFieDat.conDat.kTub, use_Rb=borFieDat.conDat.use_Rb, Rb=borFieDat.conDat.Rb, kMed=kMed, muMed=muMed, cpMed=cpMed, m_flow_nominal=m1_flow_nominal, printDebug=false); equation assert(borFieDat.conDat.borCon == Buildings.Fluid.Geothermal.Borefields.Types.BoreholeConfiguration.DoubleUTubeParallel or borFieDat.conDat.borCon == Buildings.Fluid.Geothermal.Borefields.Types.BoreholeConfiguration.DoubleUTubeSeries, "This model should be used for double U-type borefield, not single U-type. Check that the conDat record has been correctly parametrized"); connect(RVol1.y, RConv1.Rc); connect(RConv1.fluid, vol1.heatPort); connect(RConv1.solid, intRes2UTub.port_1); connect(RConv2.fluid, vol2.heatPort); connect(RConv2.solid, intRes2UTub.port_2); connect(RConv3.fluid, vol3.heatPort); connect(RConv3.solid, intRes2UTub.port_3); connect(RConv4.fluid, vol4.heatPort); connect(RConv4.solid, intRes2UTub.port_4); connect(RVol4.y, RConv4.Rc); connect(RVol3.y, RConv3.Rc); connect(RVol2.y, RConv2.Rc); connect(intRes2UTub.port_wall, port_wall); end InternalHEXTwoUTube;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesOneUTube Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesOneUTube

Internal resistance model for single U-tube borehole segments.

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesOneUTube

Information

This model simulates the internal thermal resistance network of a borehole segment in the case of a single U-tube borehole using the method of Bauer et al. (2011) and computing explicitely the fluid-to-ground thermal resistance Rb and the grout-to-grout resistance Ra as defined by Claesson and Hellstrom (2011) using the multipole method.

References

J. Claesson and G. Hellstrom. Multipole method to calculate borehole thermal resistances in a borehole heat exchanger. HVAC&R Research, 17(6): 895-911, 2011.

D. Bauer, W. Heidemann, H. Müller-Steinhagen, and H.-J. G. Diersch. Thermal resistance and capacity models for borehole heat exchangers . International Journal Of Energy Research, 35:312-320, 2011.

Extends from Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances (Partial model to implement borehole segment internal resistance models).

Parameters

TypeNameDefaultDescription
LengthhSeg Length of the internal heat exchanger [m]
TemperatureT_start Initial temperature of the filling material [K]
TemplateborFieDat Borefield data
ThermalResistanceRgb_val Thermal resistance between grout zone and borehole wall [K/W]
ThermalResistanceRCondGro_val Thermal resistance between: pipe wall to capacity in grout [K/W]
ThermalResistanceRgg_val Thermal resistance between the two grout zones [K/W]
HeatCapacityCo_filborFieDat.filDat.dFil*borFie...Heat capacity of the whole filling material [J/K]
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.

Connectors

TypeNameDescription
HeatPort_aport_1Thermal connection for pipe 1
HeatPort_aport_wallThermal connection for pipe 2
HeatPort_aport_2Thermal connection for borehole wall

Modelica definition

model InternalResistancesOneUTube "Internal resistance model for single U-tube borehole segments." extends Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances; parameter Modelica.SIunits.ThermalResistance Rgg_val "Thermal resistance between the two grout zones"; parameter Modelica.SIunits.HeatCapacity Co_fil=borFieDat.filDat.dFil*borFieDat.filDat.cFil*hSeg*Modelica.Constants.pi *(borFieDat.conDat.rBor^2 - 2*borFieDat.conDat.rTub^2) "Heat capacity of the whole filling material"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg1(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb1(R=Rgb_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil1( C=Co_fil/2, T(start=T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial))) if dynFil "Heat capacity of the filling material"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil2( C=Co_fil/2, T(start=T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial))) if dynFil "Heat capacity of the filling material"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg(R=Rgg_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg2(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb2(R=Rgb_val) "Grout thermal resistance"; equation connect(port_1, Rpg1.port_a); connect(Rpg1.port_b, Rgb1.port_a); connect(Rgb1.port_b, port_wall); connect(capFil1.port, Rgb1.port_a); connect(Rgg.port_a, Rgb1.port_a); connect(port_2, Rpg2.port_b); connect(Rgg.port_b, Rpg2.port_a); connect(Rgb2.port_b, Rpg2.port_a); connect(Rgb2.port_a, port_wall); connect(capFil2.port, Rgg.port_b); end InternalResistancesOneUTube;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesTwoUTube Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesTwoUTube

Internal resistance model for double U-tube borehole segments.

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.InternalResistancesTwoUTube

Information

This model simulates the internal thermal resistance network of a borehole segment in the case of a double U-tube borehole using the method of Bauer et al. (2011) and computing explicitely the fluid-to-ground thermal resistance Rb and the grout-to-grout resistance Ra as defined by Claesson and Hellstrom (2011) using the multipole method.

References

J. Claesson and G. Hellstrom. Multipole method to calculate borehole thermal resistances in a borehole heat exchanger. HVAC&R Research, 17(6): 895-911, 2011.

D. Bauer, W. Heidemann, H. Müller-Steinhagen, and H.-J. G. Diersch. Thermal resistance and capacity models for borehole heat exchangers . International Journal Of Energy Research, 35:312-320, 2011.

Extends from Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances (Partial model to implement borehole segment internal resistance models).

Parameters

TypeNameDefaultDescription
LengthhSeg Length of the internal heat exchanger [m]
TemperatureT_start Initial temperature of the filling material [K]
TemplateborFieDat Borefield data
ThermalResistanceRgb_val Thermal resistance between grout zone and borehole wall [K/W]
ThermalResistanceRCondGro_val Thermal resistance between: pipe wall to capacity in grout [K/W]
ThermalResistanceRgg1_val Thermal resistance between two neightbouring grout capacities, as defined by Bauer et al (2010) [K/W]
ThermalResistanceRgg2_val Thermal resistance between two grout capacities opposite to each other, as defined by Bauer et al (2010) [K/W]
HeatCapacityCo_filborFieDat.filDat.dFil*borFie...Heat capacity of the whole filling material [J/K]
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.

Connectors

TypeNameDescription
HeatPort_aport_1Thermal connection for pipe 1
HeatPort_aport_wallThermal connection for pipe 2
HeatPort_aport_2Thermal connection for borehole wall
HeatPort_aport_3Thermal connection for borehole wall
HeatPort_aport_4Thermal connection for borehole wall

Modelica definition

model InternalResistancesTwoUTube "Internal resistance model for double U-tube borehole segments." extends Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances; parameter Modelica.SIunits.ThermalResistance Rgg1_val "Thermal resistance between two neightbouring grout capacities, as defined by Bauer et al (2010)"; parameter Modelica.SIunits.ThermalResistance Rgg2_val "Thermal resistance between two grout capacities opposite to each other, as defined by Bauer et al (2010)"; parameter Modelica.SIunits.HeatCapacity Co_fil=borFieDat.filDat.dFil*borFieDat.filDat.cFil*hSeg*Modelica.Constants.pi *(borFieDat.conDat.rBor^2 - 4*borFieDat.conDat.rTub^2) "Heat capacity of the whole filling material"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_3 "Thermal connection for borehole wall"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_4 "Thermal connection for borehole wall"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg1(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb1(R=Rgb_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg14(R=Rgg1_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg21(R=Rgg2_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg11(R=Rgg1_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg2(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg12(R=Rgg1_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb2(R=Rgb_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb3(R=Rgb_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgb4(R=Rgb_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg4(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg13(R=Rgg2_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rpg3(R=RCondGro_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.ThermalResistor Rgg22(R=Rgg1_val) "Grout thermal resistance"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil1(T(start= T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial)), C=Co_fil/4) if dynFil "Heat capacity of the filling material"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil2(T(start= T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial)), C=Co_fil/4) if dynFil "Heat capacity of the filling material"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil3(T(start= T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial)), C=Co_fil/4) if dynFil "Heat capacity of the filling material"; Modelica.Thermal.HeatTransfer.Components.HeatCapacitor capFil4(T(start= T_start, fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.FixedInitial)), der_T(fixed=(energyDynamics == Modelica.Fluid.Types.Dynamics.SteadyStateInitial)), C=Co_fil/4) if dynFil "Heat capacity of the filling material"; equation connect(Rpg1.port_a, port_1); connect(Rpg1.port_b, Rgb1.port_a); connect(Rgb1.port_b, port_wall); connect(port_wall, Rgb3.port_b); connect(Rpg3.port_a, port_3); connect(Rpg2.port_a, port_2); connect(Rgb2.port_a, Rpg2.port_b); connect(port_wall, Rgb2.port_b); connect(port_wall, Rgb4.port_b); connect(Rgb4.port_a, Rpg4.port_b); connect(Rpg4.port_a, port_4); connect(Rgg14.port_b, Rpg4.port_b); connect(Rgg13.port_a, Rpg4.port_b); connect(Rgg13.port_b, Rpg3.port_b); connect(Rgg13.port_b, Rgb3.port_a); connect(Rgg13.port_b, Rgg11.port_b); connect(Rgg13.port_b, Rgg12.port_b); connect(Rgb2.port_a, Rgg12.port_a); connect(Rgg21.port_a, Rpg2.port_b); connect(Rpg1.port_b, Rgg11.port_a); connect(Rpg1.port_b, Rgg21.port_b); connect(Rgg14.port_a, Rgb1.port_a); connect(Rgg22.port_a, Rpg4.port_b); connect(Rgg22.port_b, Rpg2.port_b); connect(capFil1.port, Rgb1.port_a); connect(capFil2.port, Rpg2.port_b); connect(capFil3.port, Rpg3.port_b); connect(capFil4.port, Rpg4.port_b); end InternalResistancesTwoUTube;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialBorehole Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialBorehole

Partial model to implement multi-segment boreholes

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialBorehole

Information

Partial model to implement models simulating geothermal U-tube boreholes modeled as several borehole segments, with a uniform borehole wall boundary condition.

Extends from Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model transporting fluid between two ports without storing mass or energy), Buildings.Fluid.Interfaces.TwoPortFlowResistanceParameters (Parameters for flow resistance for models with two ports).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
IntegernSeg10Number of segments to use in vertical discretization of the boreholes
TemplateborFieDat Borefield parameters
Nominal condition
MassFlowRatem_flow_nominal Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal Pressure difference [Pa]
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]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
BooleancomputeFlowResistancedp_nominal > Modelica.Consta...=true, compute flow resistance. Set to false to assume no friction
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
Initialization
TemperatureTGro_start[nSeg] Start value of grout temperature [K]
TemperatureTFlu_start[nSeg]TGro_startStart value of fluid temperature [K]
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
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

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)
replaceable package MediumMedium in the component
HeatPort_aport_wall[nSeg]Thermal connection for borehole wall

Modelica definition

partial model PartialBorehole "Partial model to implement multi-segment boreholes" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; extends Buildings.Fluid.Interfaces.TwoPortFlowResistanceParameters( computeFlowResistance=dp_nominal > Modelica.Constants.eps); replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component"; constant Real mSenFac(min=1)=1 "Factor for scaling the sensible thermal mass of the volume"; parameter Integer nSeg(min=1) = 10 "Number of segments to use in vertical discretization of the boreholes"; parameter Modelica.SIunits.Temperature TGro_start[nSeg] "Start value of grout temperature"; parameter Modelica.SIunits.Temperature TFlu_start[nSeg] = TGro_start "Start value of fluid temperature"; // Assumptions parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial "Type of energy balance: dynamic (3 initialization options) or steady state"; // Initialization parameter Medium.AbsolutePressure p_start = Medium.p_default "Start value of pressure"; parameter Boolean dynFil=true "Set to false to remove the dynamics of the filling material"; parameter Data.Borefield.Template borFieDat "Borefield parameters"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_wall[nSeg] "Thermal connection for borehole wall"; end PartialBorehole;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX

Partial model to implement the internal heat exchanger of a borehole segment

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalHEX

Information

Partial model to implement models simulating the thermal and fluid behaviour of a borehole segment.

The thermodynamic properties of the fluid circulating in the borehole are calculated as protected parameters in this partial model: cp (cpMed), k (kMed) and μ (muMed). Additionally, the following parameters are already declared as protected parameters and thus do not need to be declared in models which extend this partial model:

Parameters

TypeNameDefaultDescription
TemplateborFieDat Borefield parameters
replaceable package MediumModelica.Media.Interfaces.Pa...Medium
LengthhSeg Length of the internal heat exchanger [m]
VolumeVTubSeghSeg*Modelica.Constants.pi*(...Fluid volume in each tube [m3]
Dynamics
BooleandynFiltrueSet to false to remove the dynamics of the filling material
Initialization
TemperatureTFlu_start Start value of fluid temperature [K]
TemperatureTGro_start Start value of grout temperature [K]

Connectors

TypeNameDescription
replaceable package MediumMedium
HeatPort_aport_wallThermal connection for borehole wall

Modelica definition

partial model PartialInternalHEX "Partial model to implement the internal heat exchanger of a borehole segment" parameter Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Template borFieDat "Borefield parameters"; replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium"; constant Real mSenFac=1 "Factor for scaling the sensible thermal mass of the volume"; parameter Boolean dynFil=true "Set to false to remove the dynamics of the filling material"; parameter Modelica.SIunits.Length hSeg "Length of the internal heat exchanger"; parameter Modelica.SIunits.Volume VTubSeg = hSeg*Modelica.Constants.pi*(borFieDat.conDat.rTub-borFieDat.conDat.eTub)^2 "Fluid volume in each tube"; parameter Modelica.SIunits.Temperature TFlu_start "Start value of fluid temperature"; parameter Modelica.SIunits.Temperature TGro_start "Start value of grout temperature"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_wall "Thermal connection for borehole wall"; protected parameter Modelica.SIunits.SpecificHeatCapacity cpMed= Medium.specificHeatCapacityCp(Medium.setState_pTX( Medium.p_default, Medium.T_default, Medium.X_default)) "Specific heat capacity of the fluid"; parameter Modelica.SIunits.ThermalConductivity kMed= Medium.thermalConductivity(Medium.setState_pTX( Medium.p_default, Medium.T_default, Medium.X_default)) "Thermal conductivity of the fluid"; parameter Modelica.SIunits.DynamicViscosity muMed=Medium.dynamicViscosity( Medium.setState_pTX( Medium.p_default, Medium.T_default, Medium.X_default)) "Dynamic viscosity of the fluid"; parameter Real Rgb_val(fixed=false) "Thermal resistance between grout zone and borehole wall"; parameter Real RCondGro_val(fixed=false) "Thermal resistance between: pipe wall to capacity in grout"; parameter Real x(fixed=false) "Capacity location"; initial equation assert(borFieDat.conDat.rBor > borFieDat.conDat.xC + borFieDat.conDat.rTub and 0 < borFieDat.conDat.xC - borFieDat.conDat.rTub, "The borehole geometry is not physical. Check the borefield data record to ensure that the shank spacing is larger than the outer tube radius and that the borehole radius is sufficiently large."); end PartialInternalHEX;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances

Partial model to implement borehole segment internal resistance models

Buildings.Fluid.Geothermal.Borefields.BaseClasses.Boreholes.BaseClasses.PartialInternalResistances

Information

Partial model to implement the inner resistance network of a borehole segment.

The partial model uses a thermal port representing a uniform borehole wall for that segment, and at least two other thermal ports (one for each tube going through the borehole segment).

Parameters

TypeNameDefaultDescription
LengthhSeg Length of the internal heat exchanger [m]
TemperatureT_start Initial temperature of the filling material [K]
TemplateborFieDat Borefield data
ThermalResistanceRgb_val Thermal resistance between grout zone and borehole wall [K/W]
ThermalResistanceRCondGro_val Thermal resistance between: pipe wall to capacity in grout [K/W]
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.

Connectors

TypeNameDescription
HeatPort_aport_1Thermal connection for pipe 1
HeatPort_aport_wallThermal connection for pipe 2
HeatPort_aport_2Thermal connection for borehole wall

Modelica definition

partial model PartialInternalResistances "Partial model to implement borehole segment internal resistance models" parameter Modelica.SIunits.Length hSeg "Length of the internal heat exchanger"; parameter Modelica.SIunits.Temperature T_start "Initial temperature of the filling material"; parameter Data.Borefield.Template borFieDat "Borefield data"; parameter Modelica.SIunits.ThermalResistance Rgb_val "Thermal resistance between grout zone and borehole wall"; parameter Modelica.SIunits.ThermalResistance RCondGro_val "Thermal resistance between: pipe wall to capacity in grout"; parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial "Type of energy balance: dynamic (3 initialization options) or steady state"; parameter Boolean dynFil=true "Set to false to remove the dynamics of the filling material."; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_1 "Thermal connection for pipe 1"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_wall "Thermal connection for pipe 2"; Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_2 "Thermal connection for borehole wall"; end PartialInternalResistances;