In this notebook, we'll take a look at temperature data from the RWTH-1 Borehole, drilled near the main building of the RWTH. Its initial purpose was to provide geothermal energy for space heating the newly built Super-C. Unfotunately, originally predicted production temperatures of 60 °C were not met. The water, pumped from a depth of about 2 km, has a temperature of just 31 °C when reaching the surface.
But the borehole is not cold. Bottom Hole Temperatures (BHTs) of about 78.6 °C at a depth of about 2500 m suggest a normal average geothermal gradient at this location.
In this notebook, we will visualize the average temperature gradient in the borehole. For this, we need at least information about temperatures at the surface and at depth:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_style('whitegrid')
sns.set_context('notebook')
temp = np.array([10.5, 78.6])
depth = np.array([0, 2550])
err = np.array([2, 3])
fig = plt.figure(figsize=[5,8])
plt.fill_betweenx(depth,temp-err,temp+err, color=(.8,.8,.8), label='uncertainty interval')
plt.plot(temp,depth,'-', linewidth=4, color='black', label='mean')
plt.plot(temp-err,depth,'--', color='gray')
plt.plot(temp+err,depth,'--', color='gray')
plt.legend()
plt.ylim(depth)
plt.gca().invert_yaxis()
plt.xlabel('Temperature [°C]')
plt.ylabel('depth [m]')
Text(0, 0.5, 'depth [m]')
With this data, what is the average geothermal gradient?
grad = (temp[1]-temp[0])/(depth[1]-depth[0])*1000
print("The mean geothermal gradient over the borehole is {:.2f} K/km".format(grad))
The mean geothermal gradient over the borehole is 26.71 K/km
This is obviously just an approximation, and the real geothermal gradient over the depth might look different, i.e. not like a straight line.
Reasons for this may be:
Core measurements of the RWTH-1 well yielded an average thermal conductivity of the rocks of 2.99 W m${-1}$ K$^{-1}$ (using the geometric mean). If we neglect possible advective heat transport, we can estimate the specific heat flow in this area by applying Fourier's Law of Heat Conduction:
$$q = -\lambda \nabla T$$As we assess just the vertical specific heat flow, $\nabla T$ becomes $\frac{\partial T}{\partial z}$.
tc = 2.99 # thermal conductivity in W/(mK)
q = -tc * grad
print("The magnitude of the average specific heat flow is {:.2f} mW/m²"
.format(np.abs(q)))
print("Considering heat flow direction, the average specific heat flow is {:.2f} mW/m²"
.format(q))
The magnitude of the average specific heat flow is 79.85 mW/m² Considering heat flow direction, the average specific heat flow is -79.85 mW/m²
If we compare this value to the position on Aachen on a Heat flow map, we see that despite a lot of simplifications, the calculated specific heat flow is still in the right interval.