Buildings.Fluid.Geothermal.Borefields.Validation

Validation models for Buildings.Fluid.Geothermal.Borefields

Information

This package contains validation models for the classes in Buildings.Fluid.Geothermal.Borefields.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Fluid.Geothermal.Borefields.Validation.ConstantHeatInjection_100Boreholes ConstantHeatInjection_100Boreholes Long-term temperature response of a borefield of 100 boreholes
Buildings.Fluid.Geothermal.Borefields.Validation.Sandbox Sandbox Validation of BorefieldOneUTube based on the experiment of Beier et al. (2011)
Buildings.Fluid.Geothermal.Borefields.Validation.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.Geothermal.Borefields.Validation

Buildings.Fluid.Geothermal.Borefields.Validation.ConstantHeatInjection_100Boreholes Buildings.Fluid.Geothermal.Borefields.Validation.ConstantHeatInjection_100Boreholes

Long-term temperature response of a borefield of 100 boreholes

Buildings.Fluid.Geothermal.Borefields.Validation.ConstantHeatInjection_100Boreholes

Information

This validation case simulates a borefield of 100 boreholes on a square 10 by 10 grid.

The heat injection rate in the borefield is constant and equal to 2*pi*kSoi*hBor*nBor. In this case, the borehole wall temperature variation corresponds to the g-function of the borefield, as evaluated in Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.ThermalResponseFactors.Validation.GFunction_100boreholes.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
TemperatureT_start273.15Initial temperature of the soil [K]
ConstantHeatInjection_100Boreholes_BorefieldborFieDat Borefield data

Modelica definition

model ConstantHeatInjection_100Boreholes "Long-term temperature response of a borefield of 100 boreholes" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water; parameter Modelica.SIunits.Temperature T_start = 273.15 "Initial temperature of the soil"; Buildings.Fluid.Geothermal.Borefields.OneUTube borHol( redeclare package Medium = Medium, borFieDat= borFieDat, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, TExt0_start=T_start, dT_dz=0, tLoaAgg=3600000) "Borehole"; Buildings.Fluid.Movers.FlowControlled_m_flow pum( redeclare package Medium = Medium, T_start=T_start, addPowerToMedium=false, use_inputFilter=false, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, massDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, nominalValuesDefineDefaultPressureCurve=true, inputType=Buildings.Fluid.Types.InputType.Constant); Buildings.Fluid.Sensors.TemperatureTwoPort TBorFieIn( redeclare package Medium = Medium, T_start=T_start, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, tau=0) "Inlet temperature of the borefield"; Buildings.Fluid.Sensors.TemperatureTwoPort TBorFieOut( redeclare package Medium = Medium, T_start=T_start, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, tau=0) "Outlet temperature of the borefield"; parameter Buildings.Fluid.Geothermal.Borefields.Validation.BaseClasses.ConstantHeatInjection_100Boreholes_Borefield borFieDat "Borefield data"; Buildings.Fluid.Sources.Boundary_ph sin( redeclare package Medium = Medium, nPorts=1) "Sink"; Buildings.Fluid.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.mBorFie_flow_nominal, m_flow(start=borFieDat.conDat.mBorFie_flow_nominal), p_start=100000, Q_flow_nominal=2*Modelica.Constants.pi*borFieDat.soiDat.kSoi*borFieDat.conDat.hBor *borFieDat.conDat.nBor) "Heater"; Modelica.Blocks.Sources.Constant heaRat(k=1) "Constant heat injection rate into the borefield"; equation connect(TBorFieIn.port_b, borHol.port_a); connect(borHol.port_b, TBorFieOut.port_a); connect(pum.port_b, TBorFieIn.port_a); connect(sin.ports[1], TBorFieOut.port_b); connect(hea.port_b, pum.port_a); connect(hea.port_a, TBorFieOut.port_b); connect(hea.u, heaRat.y); end ConstantHeatInjection_100Boreholes;

Buildings.Fluid.Geothermal.Borefields.Validation.Sandbox Buildings.Fluid.Geothermal.Borefields.Validation.Sandbox

Validation of BorefieldOneUTube based on the experiment of Beier et al. (2011)

Buildings.Fluid.Geothermal.Borefields.Validation.Sandbox

Information

This validation case simulates the experiment of Beier et al. (2011). Measured experimental data is taken from the reference.

The experiment consists in the injection of heat at an average rate of 1142 W in a 18 m long borehole over a period 52 h. Dimensions and thermal properties reported by Beier et al. (2011) are used in the model. The authors conducted multiple independent measurements of soil thermal conductivity. The average of reported values (2.88 W/m-K) is used here. Finally, the filling material thermal capacity and density was not reported. Values were chosen from the estimated volumetric heat capacity used by Pasquier and Marcotte (2014).

The construction of the borehole is non-conventional: the borehole is contained within an aluminum pipe that acts as the borehole wall. As this modifies the thermal resistances inside the borehole, the values evaluated by the multipole method are modified to obtain the effective borehole thermal resistance reported by Beier et al. (2011).

References

Beier, R.A., Smith, M.D. and Spitler, J.D. 2011. Reference data sets for vertical borehole ground heat exchanger models and thermal response test analysis. Geothermics 40: 79-85.

Pasquier, P., and Marcotte, D. 2014. Joint use of quasi-3D response model and spectral method to simulate borehole heat exchanger. Geothermics 51: 281-299.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
TemperatureT_start273.15 + 22.09Initial temperature of the sandbox [K]
SandBox_BorefieldborFieDat Borefield data

Modelica definition

model Sandbox "Validation of BorefieldOneUTube based on the experiment of Beier et al. (2011)" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water; parameter Modelica.SIunits.Temperature T_start = 273.15 + 22.09 "Initial temperature of the sandbox"; // mSenFac is set to its numerical value because it is a constant in the borehole model. // mSenFac = 1 + // (1.8e6*Modelica.Constants.pi*(borFieDat.conDat.rTub^2 // -(borFieDat.conDat.rTub-borFieDat.conDat.eTub)^2) // +2.4e6*2*Modelica.Constants.pi*borFieDat.conDat.rBor*0.002/2) // /(4.2e6*Modelica.Constants.pi*(borFieDat.conDat.rTub-borFieDat.conDat.eTub)^2) constant Real mSenFac = 1.59186 "Scaling factor for the borehole capacitances, modified to account for the thermal mass of the pipes and the borehole casing"; Buildings.Fluid.Geothermal.Borefields.OneUTube borHol( redeclare package Medium = Medium, borFieDat= borFieDat, tLoaAgg=60, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, mSenFac=mSenFac, TExt0_start=T_start, dT_dz=0) "Borehole"; Buildings.Fluid.Movers.FlowControlled_m_flow pum( redeclare package Medium = Medium, T_start=T_start, addPowerToMedium=false, use_inputFilter=false, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, massDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, nominalValuesDefineDefaultPressureCurve=true, inputType=Buildings.Fluid.Types.InputType.Constant); Buildings.Fluid.Sensors.TemperatureTwoPort TBorFieIn( redeclare package Medium = Medium, T_start=T_start, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, tau=0) "Inlet temperature of the borefield"; Buildings.Fluid.Sensors.TemperatureTwoPort TBorFieOut( redeclare package Medium = Medium, T_start=T_start, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, tau=0) "Outlet temperature of the borefield"; parameter Buildings.Fluid.Geothermal.Borefields.Validation.BaseClasses.SandBox_Borefield borFieDat "Borefield data"; Buildings.Fluid.Sources.Boundary_ph sin( redeclare package Medium = Medium, nPorts=1) "Sink"; Modelica.Blocks.Sources.CombiTimeTable sandBoxMea( tableOnFile=true, tableName="data", offset={0,0,0}, columns={2,3,4}, fileName=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/Data/Fluid/Geothermal/Borefields/HeatTransfer/Validation/Beier_Smith_Spitler_2011_SandBox.txt")); Buildings.Fluid.HeatExchangers.HeaterCooler_u hea( redeclare package Medium = Medium, dp_nominal=10000, show_T=true, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, T_start=T_start, Q_flow_nominal=1056, m_flow_nominal=borFieDat.conDat.mBorFie_flow_nominal, m_flow(start=borFieDat.conDat.mBorFie_flow_nominal), p_start=100000) "Heater"; equation connect(TBorFieIn.port_b, borHol.port_a); connect(borHol.port_b, TBorFieOut.port_a); connect(pum.port_b, TBorFieIn.port_a); connect(sin.ports[1], TBorFieOut.port_b); connect(hea.port_b, pum.port_a); connect(hea.port_a, TBorFieOut.port_b); connect(sandBoxMea.y[3], hea.u); end Sandbox;