*Figure 2: a schematic representation of the system.
On the left is the primary circuit of geothermal brine with temperature Tprod,
assumed equal to the aquifer temperature Taq.
The temperature is first lowered by amount ΔT1 in the heat exchanger.
Next, the temperature is lowered by amount ΔT2 in the heat pump to the injection temperature Tinj.
On the right hand side is the district heating network.
The cool water returning from the network at temperature Tdh_out is first heated in the heat exchanger
to Tdh_out + ΔT1, and then by the heatpump to the heat network inlet temperature Tdh_in.
It is assumed that condenser and evaporator temperatures of the heatpump are respectively 3°C lower and higher
than the source and outlet temperature of the heat pump*
On the left is the primary circuit of geothermal brine while on the right is the circuit of the district-heating system.
The model has four elements:
1. A Geothermal system, Tprod is the temperature of the water produced from the reservoir, while Tinj is the temperature of the water pumped back into the aquifer.
2. A District heating system, Tdh_out is the water that comes _from_ the district heating system, while Tdh_in is the water that goes _to_ the district heating system
3. A Heat Exchanger, which transfers heat from the production water of the Geothermal system to the district-heating system.
4. A Heat Pump, which consumes grid electricity to further heat up the district-heating water and cool the geothermal system water.
When modelling the system:
1. The production temperature, Tprod, is assumed equal to the temperature of the reservoir.
2. The district heating return temperature, Tdh_out, is known (set by the user, default: 35°C).
3. The district heating input temperature, Tdh_in, is known (set by the user, default: 70°C).
4. The total difference between the district heating input and district heating return temperature, ΔT.
5. The minimum absolute injection temperature and the maximum temperature difference between reservoir and injection temperature is also specified by the user, and is used as a condition on the final injection temperature.
This leaves the Injection temperature Tinj, as the remaining unknown.
This is calculated using the equation:
Tinj = Tprod - ΔT1 - ΔT2
where:
ΔT1 = Tprod - Tdh_out, must be between 0 -> ΔT (user specified)
ΔT2 = Tdh_in - (Tdh_out + ΔT1)
The final Tinj is then corrected using an absolute and relative injection temperature boundary, ensuring the injection temperature is:
- Always above the absolute minimum injection temperature
- The difference between Tprod - Tinj is never greater than the maximum allowed difference.
### Example 1: Heat pump required
Using the following input:
- Tprod = 60°C
- Tdh_in = 70°C
- Tdh_out = 35°C
- ΔT = Tdh_in - Tdh_out = 35°C
It is clear that the production temperature of the aquifer is not hot enough to fully supply the district-heating system without assistance from the heat pump, as the temperature from the aquifer is 10°C colder than the temperature required by the district heating systm.
This means that the extra heat will be provided by the heatpump.
Transferred from geothermal heating system to district heating system:
ΔT1 = Tprod - Tdh_out, 60°C - 35°C = 25°C.
Heat additionally added by the heat pump to the district heating system:
What happens when the production temperature from the aquifer is hot enough that the heatpump is not required?
- Tprod = 75°C
- Tdh_in = 70°C
- Tdh_out = 35°C
- ΔT = Tdh_in - Tdh_out = 35°C
It is clear that the production temperature of the aquifer is not hot enough to fully supply the district-heating system without assistance from the heat pump, as the temperature from the aquifer is 10°C colder than the temperature required by the district heating systm.
This means that the extra heat will be provided by the heatpump.
Transferred from geothermal heating system to district heating system:
ΔT1 = Tprod - Tdh_out, 75°C - 35°C = 40°C.
40°C < 35°C therefore ΔT1 = 35°C
This means that the heat exchanger is able to provide all the heat necessary to the district heating system.
Heat additionally added by the heat pump to the district heating system:
Changes for docs/changelog.md: 6 added lines, 0 removed lines.
Original line number
Diff line number
Diff line
# Change log
## v1.3.0 (30-1-2026)
- After an issue was flagged with the heat pump module changes were implemented in the core java code, tested using the ThermoGIS Automated workflow and the GA4A projects.
The ThermoGIS Jar has been updated and the documentation on the heatpump greatly expanded.
- The tests on the GA4A scenario XML have been extended to test expected values.
## v1.2.5 (26-1-2026)
A java 17 virtual machine is now automatically installed the first time a pythermogis simulation is run. This uses the [install-jdk](https://pypi.org/project/install-jdk/) python project.
Conflict: This file was modified in the source branch, but removed in the target branch.
Ask someone with write access to resolve it.
# These are the current 2.4 scenario settings, for BaseCase, HP, Stim and HP&Stim
@@ -16,13 +17,17 @@ class UTCBuilder(TestCase):
deftest_ga4a_scenario_xmls_parse_and_run(self):
# The ga4a scenarios no longer work as they are missing necessary input parameters; they were generated by an older version of TG, I corrected them using the gui, producing a new set of configs.