Skip to content

Commit c255e7e

Browse files
Merge pull request NREL#217 from malcolm-dsider/main
Changing all calculations from lithostatic to hydrostatic pressure basis
2 parents 227a5e9 + b6e7a6e commit c255e7e

32 files changed

+3292
-3194
lines changed

References/JEDI.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* [JEDI.pdf](https://github.com/NREL/GEOPHIRES-X/blob/a7d1ff2e0d47e957c19c3b6dec28fece16905dcb/References/JEDI.pdf)
2+
* [01d-jedi-geothermal-model-rel-gt12-23-16.xlsm](https://github.com/NREL/GEOPHIRES-X/raw/a7d1ff2e0d47e957c19c3b6dec28fece16905dcb/References/01d-jedi-geothermal-model-rel-gt12-23-16.xlsm)

src/geophires_monte_carlo/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/MC_GEOPHIRES_Result.txt
22
/MC_HIP_Result.txt
33
*.png
4+
*.json

src/geophires_x/AGSWellBores.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -773,12 +773,12 @@ def CalculateNonverticalPressureDrop(self, model:Model, time_operation: float, t
773773
# nonvertical wellbore fluid conditions based on current temperature
774774
rhowater = density_water_kg_per_m3(
775775
self.NonverticalProducedTemperature.value[year],
776-
pressure=model.reserv.lithostatic_pressure()
776+
pressure=model.reserv.hydrostatic_pressure()
777777
)
778778

779779
muwater = viscosity_water_Pa_sec(
780780
self.NonverticalProducedTemperature.value[year],
781-
pressure=model.reserv.lithostatic_pressure()
781+
pressure=model.reserv.hydrostatic_pressure()
782782
)
783783
vhoriz = self.q_circulation / rhowater / (math.pi / 4. * self.nonverticalwellborediameter.value ** 2)
784784

@@ -864,10 +864,10 @@ def Calculate(self, model: Model) -> None:
864864

865865
self.alpha_fluid = self.WaterThermalConductivity.value / density_water_kg_per_m3(
866866
self.NonverticalProducedTemperature.value[year],
867-
pressure=model.reserv.lithostatic_pressure()
867+
pressure=model.reserv.hydrostatic_pressure()
868868
) / heat_capacity_water_J_per_kg_per_K(
869869
self.NonverticalProducedTemperature.value[year],
870-
pressure=model.reserv.lithostatic_pressure()
870+
pressure=model.reserv.hydrostatic_pressure()
871871
) * 24.0 * 3600.0
872872
self.time_operation.value += self.al
873873

@@ -881,7 +881,7 @@ def Calculate(self, model: Model) -> None:
881881
self.ProdTempDrop.value = self.tempdropprod.value
882882
model.reserv.cpwater.value = heat_capacity_water_J_per_kg_per_K(
883883
self.NonverticalProducedTemperature.value[0],
884-
pressure=model.reserv.lithostatic_pressure()
884+
pressure=model.reserv.hydrostatic_pressure()
885885
)
886886
if self.rameyoptionprod.value:
887887
self.ProdTempDrop.value = RameyCalc(model.reserv.krock.value,
@@ -904,13 +904,13 @@ def Calculate(self, model: Model) -> None:
904904
if self.productionwellpumping.value:
905905
self.rhowaterinj = density_water_kg_per_m3(
906906
model.reserv.Tsurf.value,
907-
pressure=model.reserv.lithostatic_pressure()
907+
pressure=model.reserv.hydrostatic_pressure()
908908
) * np.linspace(1, 1,
909909
len(self.ProducedTemperature.value))
910910

911911
self.rhowaterprod = density_water_kg_per_m3(
912912
model.reserv.Trock.value,
913-
pressure=model.reserv.lithostatic_pressure()
913+
pressure=model.reserv.hydrostatic_pressure()
914914
) * np.linspace(1, 1, len(self.ProducedTemperature.value))
915915

916916
self.DPProdWell.value, f3, vprod, self.rhowaterprod = WellPressureDrop(model,
@@ -1021,7 +1021,7 @@ def Calculate(self, model: Model) -> None:
10211021

10221022
model.reserv.cpwater.value = heat_capacity_water_J_per_kg_per_K(
10231023
self.Tout[0],
1024-
pressure=model.reserv.lithostatic_pressure(),
1024+
pressure=model.reserv.hydrostatic_pressure(),
10251025
) # Need this for surface plant output calculation
10261026

10271027
# set pumping power to zero for all times, assuming that the thermosphere wil always

src/geophires_x/CylindricalReservoir.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,11 +244,11 @@ def Calculate(self, model: Model) -> None:
244244
) / 1e15 # 10^15 J
245245
self.cpwater.value = heat_capacity_water_J_per_kg_per_K(
246246
model.wellbores.Tinj.value * 0.5 + (self.Trock.value * 0.9 + model.wellbores.Tinj.value * 0.1) * 0.5,
247-
pressure=self.lithostatic_pressure()
247+
pressure=self.hydrostatic_pressure()
248248
)
249249
self.rhowater.value = density_water_kg_per_m3(
250250
model.wellbores.Tinj.value * 0.5 + (self.Trock.value * 0.9 + model.wellbores.Tinj.value * 0.1) * 0.5,
251-
pressure=self.lithostatic_pressure()
251+
pressure=self.hydrostatic_pressure()
252252
)
253253

254254
model.logger.info(f'complete {str(__class__)}: {sys._getframe().f_code.co_name}')

src/geophires_x/Reservoir.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -749,12 +749,12 @@ def Calculate(self, model: Model) -> None:
749749
# calculate reservoir water properties
750750
self.cpwater.value = heat_capacity_water_J_per_kg_per_K(
751751
model.wellbores.Tinj.value * 0.5 + (self.Trock.value * 0.9 + model.wellbores.Tinj.value * 0.1) * 0.5,
752-
pressure=self.lithostatic_pressure()
752+
pressure=self.hydrostatic_pressure()
753753
)
754754

755755
self.rhowater.value = density_water_kg_per_m3(
756756
model.wellbores.Tinj.value * 0.5 + (self.Trock.value * 0.9 + model.wellbores.Tinj.value * 0.1) * 0.5,
757-
pressure=self.lithostatic_pressure()
757+
pressure=self.hydrostatic_pressure()
758758
)
759759

760760
# temperature gain in injection wells
@@ -770,4 +770,8 @@ def lithostatic_pressure(self) -> PlainQuantity:
770770
return quantity(static_pressure_MPa(self.rhorock.quantity().to('kg/m**3').magnitude,
771771
self.depth.quantity().to('m').magnitude), 'MPa')
772772

773+
def hydrostatic_pressure(self) -> PlainQuantity:
774+
return quantity(static_pressure_MPa(1000.0,
775+
self.depth.quantity().to('m').magnitude), 'MPa')
776+
773777

src/geophires_x/WellBores.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,15 @@ def WellPressureDrop(model: Model, Taverage: float, wellflowrate: float, welldia
167167
rhowater = np.array([
168168
density_water_kg_per_m3(
169169
t,
170-
pressure=model.reserv.lithostatic_pressure(),
170+
pressure=model.reserv.hydrostatic_pressure(),
171171
)
172172
for t in Taverage
173173
]) # replace with correlation based on Tprodaverage
174174

175175
muwater = np.array([
176176
viscosity_water_Pa_sec(
177177
t,
178-
pressure=model.reserv.lithostatic_pressure(),
178+
pressure=model.reserv.hydrostatic_pressure(),
179179
)
180180
for t in Taverage
181181
]) # replace with correlation based on Tprodaverage
@@ -231,11 +231,11 @@ def InjectionWellPressureDrop(model: Model, Taverage: float, wellflowrate: float
231231
"""
232232
# start by calculating wellbore fluid conditions [kPa], noting that most temperature drop happens in
233233
# upper section (because surrounding rock temperature is lowest in upper section)
234-
rhowater = (density_water_kg_per_m3(Taverage, pressure=model.reserv.lithostatic_pressure())
234+
rhowater = (density_water_kg_per_m3(Taverage, pressure=model.reserv.hydrostatic_pressure())
235235
* np.linspace(1, 1, len(model.wellbores.ProducedTemperature.value)))
236236

237237
# replace with correlation based on Tinjaverage
238-
muwater = viscosity_water_Pa_sec(Taverage, pressure=model.reserv.lithostatic_pressure()) * np.linspace(1, 1, len(model.wellbores.ProducedTemperature.value))
238+
muwater = viscosity_water_Pa_sec(Taverage, pressure=model.reserv.hydrostatic_pressure()) * np.linspace(1, 1, len(model.wellbores.ProducedTemperature.value))
239239
v = nprod / ninj * wellflowrate * (1.0 + waterloss) / rhowater / (math.pi / 4. * welldiam ** 2)
240240
Rewater = 4. * nprod / ninj * wellflowrate * (1.0 + waterloss) / (
241241
muwater * math.pi * welldiam) # laminar or turbulent flow?

0 commit comments

Comments
 (0)