Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation

Validation models for GroundHeatTransfer

Information

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

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

Package Content

Name Description
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Analytic_20Years Analytic_20Years Long term validation of ground temperature response model
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Cylindrical Cylindrical Comparison of the Cylindrical with the GroundTemperatureResponse
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.FiniteDifference_1Week FiniteDifference_1Week Short term validation of ground temperature response model
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Measured_SmallScale Measured_SmallScale Long term validation of ground temperature response model using the small scale experiment of Cimmino and Bernier (2015)
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Analytic_20Years Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Analytic_20Years

Long term validation of ground temperature response model

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Analytic_20Years

Information

This validation case applies the asymetrical synthetic load profile developed by Pinel (2003) over a 20 year period by directly injecting the heat at the borehole wall in the ground temperature response model. The difference between the resulting borehole wall temperature and the same temperature precalculated by using a fast Fourier transform is calculated with the add component. The fast Fourier transform calculation was done using the same g-function as was calculated by Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.ThermalResponseFactors.gFunction.

References

Pinel, P. 2003. Amélioration, validation et implantation d’un algorithme de calcul pour évaluer le transfert thermique dans les puits verticaux de systèmes de pompes à chaleur géothermiques, M.A.Sc. Thesis, École Polytechnique de Montréal.

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

Parameters

TypeNameDefaultDescription
TemplateborFieDatborFieDat( conDa...Borefield parameters

Modelica definition

model Analytic_20Years "Long term validation of ground temperature response model" extends Modelica.Icons.Example; parameter Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Template borFieDat(conDat( borCon=Types.BoreholeConfiguration.SingleUTube, nBor=1, cooBor={{0,0}}, mBor_flow_nominal=0.3, dp_nominal=5e4, hBor=100, rBor=0.05, dBor=4, rTub=0.02, kTub=0.5, eTub=0.002, xC=0.05), soiDat( kSoi=1, cSoi=1, dSoi=1e6), filDat( kFil=0, cFil=Modelica.Constants.small, dFil=Modelica.Constants.small, steadyState=true)) "Borefield parameters"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.GroundTemperatureResponse groTemRes( tLoaAgg=3600, nCel=5, borFieDat=borFieDat, forceGFunCalc=true) "Ground temperature response of borehole"; Modelica.Blocks.Sources.CombiTimeTable timTabQ( tableOnFile=true, tableName="tab1", columns={2}, smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments, fileName=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/Data/Fluid/Geothermal/Borefields/HeatTransfer/Validation/Analytic_20Years.txt")) "Table for heat injected, using constant segments"; Modelica.Blocks.Math.Add add( y(unit="K"), k1=-1) "Difference between FFT method and ground temperature response model"; Modelica.Blocks.Sources.CombiTimeTable timTabT( tableOnFile=true, tableName="tab1", columns={3}, smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, fileName=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/Data/Fluid/Geothermal/Borefields/HeatTransfer/Validation/Analytic_20Years.txt"), y(each unit="K", each displayUnit="degC")) "Table for resulting wall temperature using FFT and linearly interpolated"; Modelica.Blocks.Sources.Constant const(k=273.15) "Cosntant ground temperature"; Modelica.Blocks.Math.Add TBorWal(y(unit="K")) "Borewall temperature"; equation connect(TBorWal.u2, const.y); connect(groTemRes.delTBor, TBorWal.u1); connect(add.u1, TBorWal.y); connect(add.u2, timTabT.y[1]); connect(groTemRes.QBor_flow, timTabQ.y[1]); end Analytic_20Years;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Cylindrical Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Cylindrical

Comparison of the Cylindrical with the GroundTemperatureResponse

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Cylindrical

Information

This example demonstrates the use of Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Cylindrical.

After a short delay, a constant heat flow rate is applied to the inner surface of a cylindrical ground layer while the outer surface is kept at a constant temperature.

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

Parameters

TypeNameDefaultDescription
TemperatureT_start295.15Initial soil temperature [K]
TemplateborFieDatBuildings.Fluid.Geothermal.B... 

Modelica definition

model Cylindrical "Comparison of the Cylindrical with the GroundTemperatureResponse" extends Modelica.Icons.Example; parameter Modelica.SIunits.Temperature T_start = 295.15 "Initial soil temperature"; parameter Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Template borFieDat= Buildings.Fluid.Geothermal.Borefields.Validation.BaseClasses.SandBox_Borefield(); Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Cylindrical soi( final steadyStateInitial=false, final soiDat=borFieDat.soiDat, final h=1, final r_a=borFieDat.conDat.rBor, final r_b=3, final TInt_start=T_start, final TExt_start=T_start) "Heat conduction in the soil"; Buildings.HeatTransfer.Sources.FixedTemperature preTem(T=T_start) "Prescribed temperature"; Modelica.Blocks.Sources.Step heaFlo( offset=0, startTime=1000, height=1056/18.3) "Heat flow to soil"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo "Prescribed heat flow to soil"; equation connect(soi.port_b, preTem.port); connect(heaFlo.y, preHeaFlo.Q_flow); connect(preHeaFlo.port, soi.port_a); end Cylindrical;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.FiniteDifference_1Week Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.FiniteDifference_1Week

Short term validation of ground temperature response model

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.FiniteDifference_1Week

Information

This example validates the implementation of Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.GroundTemperatureResponse for the evaluation of the borehole wall temperature at a short time scale.

After a short delay, a sinusoidal heat flow rate is applied to borehole heat exchanger. The temperature at the borehole wall evaluated with Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.GroundTemperatureResponse is compared to the temperature obtained with Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Cylindrical

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

Parameters

TypeNameDefaultDescription
TemperatureT_start283.15Initial soil temperature [K]
TemplateborFieDatborFieDat( soiDat( k...Borefield parameters

Modelica definition

model FiniteDifference_1Week "Short term validation of ground temperature response model" extends Modelica.Icons.Example; parameter Modelica.SIunits.Temperature T_start = 283.15 "Initial soil temperature"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Cylindrical soi( final steadyStateInitial=false, final soiDat=borFieDat.soiDat, final h=borFieDat.conDat.hBor, final r_a=borFieDat.conDat.rBor, final r_b=3, final TInt_start=T_start, final TExt_start=T_start, gridFac=1.2, final nSta=50) "Heat conduction in the soil"; Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHeaFlo "Prescribed heat flow to soil for the discretized model"; parameter Buildings.Fluid.Geothermal.Borefields.Data.Borefield.Template borFieDat( soiDat( kSoi=1, cSoi=1, dSoi=1e6), filDat( kFil=0, cFil=Modelica.Constants.small, dFil=Modelica.Constants.small, steadyState=true), conDat( borCon=Types.BoreholeConfiguration.SingleUTube, nBor=1, cooBor={{0,0}}, mBor_flow_nominal=0.3, dp_nominal=5e4, hBor=1e6, rBor=0.05, dBor=4, rTub=0.02, kTub=0.5, eTub=0.002, xC=0.05)) "Borefield parameters"; Modelica.Blocks.Sources.Sine sine( freqHz=1/(24*3600), startTime=21600, amplitude=1e8) "Heat flow signal"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.GroundTemperatureResponse groTemRes( borFieDat=borFieDat, nCel=5, tLoaAgg=30) "Heat conduction in the soil"; Modelica.Blocks.Sources.Constant groTem(k=T_start) "Ground temperature signal"; Buildings.HeatTransfer.Sources.PrescribedTemperature preTem "Ground temperature for discretized model"; Modelica.Blocks.Math.Add deltaT( k2=-1, y(unit="K")) "Temperature difference between borehole with discrete ground and borehole with analytical ground"; Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temSenDis "Borehole wall temperature sensor for the discretized model"; Modelica.Blocks.Math.Add TSoiAna(y(unit="K")) "Ground temperature from ground response model"; equation connect(preHeaFlo.port, soi.port_a); connect(sine.y, preHeaFlo.Q_flow); connect(preTem.port, soi.port_b); connect(preTem.T, groTem.y); connect(temSenDis.T, deltaT.u1); connect(soi.port_a, temSenDis.port); connect(groTemRes.delTBor, TSoiAna.u1); connect(groTem.y, TSoiAna.u2); connect(deltaT.u2, TSoiAna.y); connect(groTemRes.QBor_flow, sine.y); end FiniteDifference_1Week;

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Measured_SmallScale Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Measured_SmallScale

Long term validation of ground temperature response model using the small scale experiment of Cimmino and Bernier (2015)

Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.Measured_SmallScale

Information

This validation case simulates the experiment of Cimmino and Bernier (2015). The experiment consists in the injection of heat at an average rate of 8.67 W in a 0.40 m long borehole over a period of 168 h. Borehole wall tempratures were measured by a series of 22 thermocouples welded to the stainless steel pipe that contains the borehole and acts as the borehole wall.

Since the model is not adapted to the simulation of small scale boreholes, the borehole dimensions are multiplied by a factor 375 to obtain a scaled-up 150.0 m long borehole. The time values of the experimental data are then multiplied by a factor 3752. The predicted borehole wall temperature is compared to the experimental data.

A sharp increase in the rate of change of the borehole wall temperature is observed at t=500 years. This is caused by a sudden change in the rate of heat injected to the fluid at the same moment. The simulated borehole wall temperature is more affected the measured borehole wall temperature since the validation model does not consider the dynamics of the borehole and the fluid, and that heat is directly injected at the borehole wall. In the experiment, the sudden change in heat injection rate was dampened by the circulating fluid, the borehole filling material, and the measurement apparatus.

References

Cimmino, M. and Bernier, M. 2015. Experimental determination of the g-functions of a small-scale geothermal borehole. Geothermics 56: 60-71.

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

Parameters

TypeNameDefaultDescription
RealsizFac375.0Scaling factor of the experiment
SmallScale_BorefieldborFieDat Borefield parameters

Modelica definition

model Measured_SmallScale "Long term validation of ground temperature response model using the small scale experiment of Cimmino and Bernier (2015)" extends Modelica.Icons.Example; parameter Real sizFac=375.0 "Scaling factor of the experiment"; parameter Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.Validation.BaseClasses.SmallScale_Borefield borFieDat "Borefield parameters"; Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.GroundTemperatureResponse groTemRes( nCel=5, borFieDat=borFieDat, forceGFunCalc=true, tLoaAgg=360000) "Ground temperature response of borehole"; Modelica.Blocks.Sources.CombiTimeTable meaDat( tableOnFile=true, timeScale=sizFac^2, fileName=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/Data/Fluid/Geothermal/Borefields/HeatTransfer/Validation/Cimmino_Bernier_2015_SmallScale.txt"), columns={2,3,4,5,6,7,8,9}, tableName="data", offset={0,0,0,273.15,273.15,273.15,273.15,273.15}) "Measurement data"; Modelica.Blocks.Math.Add TBorHol(y(unit="K")) "Borehole temperature"; Modelica.Blocks.Math.Gain scaFac(k=sizFac) "Scaling factor of the experiment"; Modelica.Blocks.Math.Add add(k2=-1) "Difference between experiment data and ground temperature response model"; equation connect(meaDat.y[3], scaFac.u); connect(add.u1, meaDat.y[4]); connect(add.u2, TBorHol.y); connect(TBorHol.u2, meaDat.y[8]); connect(TBorHol.u1, groTemRes.delTBor); connect(groTemRes.QBor_flow, scaFac.y); end Measured_SmallScale;