Skip to content

Commit ce3fd0c

Browse files
Consolidate well drilling cost correlation in SUTRAEconomics
1 parent d91b514 commit ce3fd0c

File tree

3 files changed

+9
-37
lines changed

3 files changed

+9
-37
lines changed

src/geophires_x/Economics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def calculate_cost_of_one_vertical_well(model: Model, depth_m: float, well_corre
9797
if well_correlation is WellDrillingCostCorrelation.SIMPLE:
9898
cost_of_one_well = vertical_drilling_cost_per_m * depth_m * 1E-6
9999
else:
100-
cost_of_one_well = well_correlation.calculate_cost_USD(depth_m)
100+
cost_of_one_well = well_correlation.calculate_cost_MUSD(depth_m)
101101

102102
# account for adjustment factor
103103
cost_of_one_well = well_cost_adjustment_factor * cost_of_one_well
@@ -169,7 +169,7 @@ def calculate_cost_of_non_vertical_section(model: Model, length_m: float, well_c
169169
if model.economics.Nonvertical_drilling_cost_per_m.Provided or well_correlation is WellDrillingCostCorrelation.SIMPLE:
170170
cost_of_non_vertical_section = casing_factor * ((num_nonvertical_sections * nonvertical_drilling_cost_per_m * length_per_section_m)) * 1E-6
171171
else:
172-
cost_per_section = well_correlation.calculate_cost_USD(length_per_section_m)
172+
cost_per_section = well_correlation.calculate_cost_MUSD(length_per_section_m)
173173
cost_of_non_vertical_section = casing_factor * num_nonvertical_sections * cost_per_section
174174

175175
# account for adjustment factor

src/geophires_x/OptionList.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def __init__(self, idx: int, _: str, c2:float, c1:float, c0:float):
8585
self._c1 = c1
8686
self._c0 = c0
8787

88-
def calculate_cost_USD(self, meters) -> float:
88+
def calculate_cost_MUSD(self, meters) -> float:
8989
return (self._c2 * meters ** 2 + self._c1 * meters + self._c0) * 1E-6
9090

9191

src/geophires_x/SUTRAEconomics.py

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -424,48 +424,20 @@ def Calculate(self, model: Model) -> None:
424424

425425
# CAPEX
426426
# Drilling
427+
427428
self.C1well = 0
428429
if self.ccwellfixed.Valid:
429430
self.C1well = self.ccwellfixed.value
430431
self.Cwell.value = self.C1well * (model.wellbores.nprod.value + model.wellbores.ninj.value)
431432
else:
432433
if model.reserv.depth.value > 7000.0 or model.reserv.depth.value < 500:
433-
print("Warning: simple user-specified cost per meter used for drilling depth < 500 or > 7000 m")
434+
print('Warning: simple user-specified cost per meter used for drilling depth < 500 or > 7000 m')
434435
model.logger.warning(
435-
"Warning: simple user-specified cost per meter used for drilling depth < 500 or > 7000 m"
436+
'Warning: simple user-specified cost per meter used for drilling depth < 500 or > 7000 m'
436437
)
437-
if self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL:
438-
self.C1well = (0.30212 * model.reserv.depth.value ** 2 + 584.91124 * model.reserv.depth.value + 751368.47270) * 1E-6
439-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE:
440-
self.C1well = (0.28180 * model.reserv.depth.value ** 2 + 1275.52130 * model.reserv.depth.value + 632315.12640) * 1E-6
441-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL:
442-
self.C1well = (0.28977 * model.reserv.depth.value ** 2 + 882.15067 * model.reserv.depth.value + 680562.50150) * 1E-6
443-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE:
444-
self.C1well = (0.25528 * model.reserv.depth.value ** 2 + 1716.71568 * model.reserv.depth.value + 500866.89110) * 1E-6
445-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_INT1:
446-
self.C1well = (0.13710 * model.reserv.depth.value ** 2 + 129.61033 * model.reserv.depth.value + 1205587.57100) * 1E-6
447-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_INT1:
448-
self.C1well = (0.18927 * model.reserv.depth.value ** 2 + 293.45174 * model.reserv.depth.value + 1326526.31300) * 1E-6
449-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_INT1:
450-
self.C1well = (0.15340 * model.reserv.depth.value ** 2 + 120.31700 * model.reserv.depth.value + 1431801.54400) * 1E-6
451-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_INT1:
452-
self.C1well = (0.19950 * model.reserv.depth.value ** 2 + 296.13011 * model.reserv.depth.value + 1697867.70900) * 1E-6
453-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_INT2:
454-
self.C1well = (0.00804 * model.reserv.depth.value ** 2 + 455.60507 * model.reserv.depth.value + 921007.68680) * 1E-6
455-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_INT2:
456-
self.C1well = (0.00315 * model.reserv.depth.value ** 2 + 782.69676 * model.reserv.depth.value + 983620.25270) * 1E-6
457-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_INT2:
458-
self.C1well = (0.00854 * model.reserv.depth.value ** 2 + 506.08357 * model.reserv.depth.value + 1057330.39000) * 1E-6
459-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_INT2:
460-
self.C1well = (0.00380 * model.reserv.depth.value ** 2 + 838.90249 * model.reserv.depth.value + 1181947.04400) * 1E-6
461-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_IDEAL:
462-
self.C1well = (0.00252 * model.reserv.depth.value ** 2 + 439.44503 * model.reserv.depth.value + 590611.90110) * 1E-6
463-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_IDEAL:
464-
self.C1well = (-0.00240 * model.reserv.depth.value ** 2 + 752.93946 * model.reserv.depth.value + 524337.65380) * 1E-6
465-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_IDEAL:
466-
self.C1well = (0.00719 * model.reserv.depth.value ** 2 + 455.85233 * model.reserv.depth.value + 753377.73080) * 1E-6
467-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_IDEAL:
468-
self.C1well = (0.00376 * model.reserv.depth.value ** 2 + 762.52696 * model.reserv.depth.value + 765103.07690) * 1E-6
438+
439+
if self.wellcorrelation.value == WellDrillingCostCorrelation.SIMPLE:
440+
self.C1well = self.wellcorrelation.value.calculate_cost_MUSD(model.reserv.depth.value)
469441

470442
self.C1well = self.C1well * self.ccwelladjfactor.value
471443
self.Cwell.value = self.C1well * (model.wellbores.nprod.value + model.wellbores.ninj.value)

0 commit comments

Comments
 (0)