This function implements the g-function evaluation method introduced by Cimmino and Bernier (see: Cimmino and Bernier (2014), Cimmino (2018), and Prieto and Cimmino (2021)) based on the g-function function concept first introduced by Eskilson (1987). The g-function gives the relation between the variation of the borehole wall temperature at a time t and the heat extraction and injection rates at all times preceding time t as

where Tb is the borehole wall temperature, Tg is the undisturbed ground temperature, Q is the heat injection rate into the ground through the borehole wall per unit borehole length, ks is the soil thermal conductivity and g is the g-function.
The g-function is constructed from the combination of the
combination of the finite line source (FLS) solution (see
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.ThermalResponseFactors.finiteLineSource),
the cylindrical heat source (CHS) solution (see
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.ThermalResponseFactors.cylindricalHeatSource),
and the infinite line source (ILS) solution (see
Buildings.Fluid.Geothermal.Borefields.BaseClasses.HeatTransfer.ThermalResponseFactors.infiniteLineSource).
To obtain the g-function of a bore field, the bore field is
first divided into nClu groups of similarly behaving
boreholes. Each group is represented by a single equivalent
borehole. Each equivalent borehole is then divided into a series of
nSeg segments of equal length, each modeled as a line
source of finite length. The finite line source solution is
superimposed in space to obtain a system of equations that gives
the relation between the heat injection rate at each of the
segments and the borehole wall temperature at each of the segments.
The system is solved to obtain the uniform borehole wall
temperature required at any time to maintain a constant total heat
injection rate (Qtot =
2πksHtot) into the bore field. The
uniform borehole wall temperature is then equal to the finite line
source based g-function.
Since this g-function is based on line sources of heat, rather than cylinders, the g-function is corrected to consider the cylindrical geometry. The correction factor is then the difference between the cylindrical heat source solution and the infinite line source solution, as proposed by Li et al. (2014) as
g(t) = gFLS + (gCHS - gILS)
The calculation of the g-function is separated into two
regions: the short-time region and the long-time region. In the
short-time region, corresponding to times t < 1 hour,
heat interaction between boreholes and axial variations of heat
injection rate are not considered. The g-function is
calculated using only one borehole and one segment. In the
long-time region, corresponding to times t > 1 hour, all
boreholes are represented as series of nSeg line
segments and the g-function is evaluated as described
above.
Cimmino, M. and Bernier, M. 2014. A semi-analytical method to generate g-functions for geothermal bore fields. International Journal of Heat and Mass Transfer 70: 641-650.
Cimmino, M. 2018. Fast calculation of the g-functions of geothermal borehole fields using similarities in the evaluation of the finite line source solution. Journal of Building Performance Simulation 11(6): 655-668.
Eskilson, P. 1987. Thermal analysis of heat extraction boreholes. Ph.D. Thesis. Department of Mathematical Physics. University of Lund. Sweden.
Li, M., Li, P., Chan, V. and Lai, A.C.K. 2014. Full-scale temperature response function (G-function) for heat transfer by borehole heat exchangers (GHEs) from sub-hour to decades. Applied Energy 136: 197-205.
Prieto, C. and Cimmino, M. 2021. Thermal interactions in large irregular fields of geothermal boreholes: the method of equivalent boreholes. Journal of Building Performance Simulation 14(4): 446-460. doi:10.1080/19401493.2021.1968953.
function gFunction extends Modelica.Icons.Function; input Integer nBor "Number of boreholes"; input Modelica.Units.SI.Position cooBor[nBor, 2] "Coordinates of boreholes"; input Modelica.Units.SI.Height hBor "Borehole length"; input Modelica.Units.SI.Height dBor "Borehole buried depth"; input Modelica.Units.SI.Radius rBor "Borehole radius"; input Modelica.Units.SI.ThermalDiffusivity aSoi "Ground thermal diffusivity used in g-function evaluation"; input Integer nSeg "Number of line source segments per borehole"; input Integer nTimSho "Number of time steps in short time region"; input Integer nTimLon "Number of time steps in long time region"; input Real ttsMax "Maximum adimensional time for gfunc calculation"; input Integer nClu "Number of clusters"; input Integer labels[nBor] "Cluster label associated with each data point"; input Integer cluSiz[nClu] "Size of the clusters"; input Real relTol = 0.02 "Relative tolerance on distance between boreholes"; output Modelica.Units.SI.Time tGFun[nTimSho + nTimLon] "Time of g-function evaluation"; output Real g[nTimSho + nTimLon] "g-function"; end gFunction;
Done.