Skip to content

Commit f2e8c31

Browse files
Merge branch 'NREL:main' into main
2 parents 84dcf55 + cb7333a commit f2e8c31

23 files changed

+422
-268
lines changed

src/geophires_x/Economics.py

Lines changed: 80 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -796,14 +796,28 @@ def __init__(self, model: Model):
796796
)
797797
self.wellcorrelation = self.ParameterDict[self.wellcorrelation.Name] = intParameter(
798798
"Well Drilling Cost Correlation",
799-
DefaultValue=WellDrillingCostCorrelation.VERTICAL_SMALL,
800-
AllowableRange=[1, 2, 3, 4, 5],
799+
DefaultValue=WellDrillingCostCorrelation.VERTICAL_LARGE_INT1,
800+
AllowableRange=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
801801
UnitType=Units.NONE,
802-
ErrMessage="assume default well drilling cost correlation (1)",
803-
ToolTipText="Select the built-in horizontal well drilling and completion cost correlation." +
804-
" 1: vertical open-hole, small diameter; 2: deviated liner, small diameter;" +
805-
" 3: vertical open-hole, large diameter; 4: deviated liner, large diameter;" +
806-
" 5: Simple - user specified cost per meter"
802+
ErrMessage="assume default well drilling cost correlation (10)",
803+
ToolTipText="""Select the built-in well drilling and completion cost correlation:
804+
1. vertical small diameter, baseline;
805+
2. deviated small diameter, baseline;
806+
3. vertical large diameter, baseline;
807+
4. deviated large diameter, baseline;
808+
5. Simple;
809+
6. vertical small diameter, intermediate1;
810+
7. vertical small diameter, intermediate2;
811+
8. deviated small diameter, intermediate1;
812+
9. deviated small diameter, intermediate2;
813+
10. vertical large diameter, intermediate1;
814+
11. vertical large diameter, intermediate2;
815+
12. deviated large diameter, intermediate1;
816+
13. deviated large diameter, intermediate2;
817+
14. vertical open-hole, small diameter, ideal;
818+
15. deviated liner, small diameter, ideal;
819+
16. vertical open-hole, large diameter, ideal;
820+
17. deviated liner, large diameter, ideal;"""
807821
)
808822
self.DoAddOnCalculations = self.ParameterDict[self.DoAddOnCalculations.Name] = boolParameter(
809823
"Do AddOn Calculations",
@@ -1645,13 +1659,39 @@ def read_parameters(self, model: Model) -> None:
16451659
if ParameterReadIn.sValue == '1':
16461660
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_SMALL
16471661
elif ParameterReadIn.sValue == '2':
1648-
self.wellcorrelation.value = WellDrillingCostCorrelation.DEVIATED_SMALL
1662+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_SMALL
16491663
elif ParameterReadIn.sValue == '3':
1650-
self.wellcorrelation.value = WellDrillingCostCorrelation.VERTICAL_LARGE
1664+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_LARGE
16511665
elif ParameterReadIn.sValue == '4':
1652-
self.wellcorrelation.value = WellDrillingCostCorrelation.DEVIATED_LARGE
1666+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_LARGE
1667+
elif ParameterReadIn.sValue == '5':
1668+
ParameterToModify.value = WellDrillingCostCorrelation.SIMPLE
1669+
elif ParameterReadIn.sValue == '6':
1670+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_SMALL_INT1
1671+
elif ParameterReadIn.sValue == '7':
1672+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_SMALL_INT2
1673+
elif ParameterReadIn.sValue == '8':
1674+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_SMALL_INT1
1675+
elif ParameterReadIn.sValue == '9':
1676+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_SMALL_INT2
1677+
elif ParameterReadIn.sValue == '10':
1678+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_LARGE_INT1
1679+
elif ParameterReadIn.sValue == '11':
1680+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_LARGE_INT2
1681+
elif ParameterReadIn.sValue == '12':
1682+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_LARGE_INT1
1683+
elif ParameterReadIn.sValue == '13':
1684+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_LARGE_INT2
1685+
elif ParameterReadIn.sValue == '14':
1686+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_SMALL_IDEAL
1687+
elif ParameterReadIn.sValue == '15':
1688+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_SMALL_IDEAL
1689+
elif ParameterReadIn.sValue == '16':
1690+
ParameterToModify.value = WellDrillingCostCorrelation.VERTICAL_LARGE_IDEAL
1691+
elif ParameterReadIn.sValue == '17':
1692+
ParameterToModify.value = WellDrillingCostCorrelation.DEVIATED_LARGE_IDEAL
16531693
else:
1654-
self.wellcorrelation.value = WellDrillingCostCorrelation.SIMPLE
1694+
ParameterToModify.value = WellDrillingCostCorrelation.SIMPLE # Assuming 'SIMPLE' is still a valid option
16551695
elif ParameterToModify.Name == "Reservoir Stimulation Capital Cost Adjustment Factor":
16561696
if self.ccstimfixed.Valid and ParameterToModify.Valid:
16571697
print("Warning: Provided reservoir stimulation cost adjustment factor not considered" +
@@ -2055,18 +2095,37 @@ def Calculate(self, model: Model) -> None:
20552095
'm').magnitude * 1E-6
20562096

20572097
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL:
2058-
self.C1well = ((0.3021 * checkdepth_m ** 2 + 584.9112 * checkdepth_m + 751368.)
2059-
* 1E-6) # well drilling and completion cost in M$/well
2060-
2061-
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL:
2062-
self.C1well = (0.2898 * checkdepth_m ** 2 + 822.1507 * checkdepth_m + 680563.) * 1E-6
2063-
2098+
self.C1well = (0.30212 * checkdepth_m ** 2 + 584.91124 * checkdepth_m + 751368.47270) * 1E-6
20642099
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE:
2065-
self.C1well = (0.2818 * checkdepth_m ** 2 + 1275.5213 * checkdepth_m + 632315.) * 1E-6
2066-
2100+
self.C1well = (0.28180 * checkdepth_m ** 2 + 1275.52130 * checkdepth_m + 632315.12640) * 1E-6
2101+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL:
2102+
self.C1well = (0.28977 * checkdepth_m ** 2 + 882.15067 * checkdepth_m + 680562.50150) * 1E-6
20672103
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE:
2068-
self.C1well = (0.2553 * checkdepth_m ** 2 + 1716.7157 * checkdepth_m + 500867.) * 1E-6
2069-
2104+
self.C1well = (0.25528 * checkdepth_m ** 2 + 1716.71568 * checkdepth_m + 500866.89110) * 1E-6
2105+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_INT1:
2106+
self.C1well = (0.13710 * checkdepth_m ** 2 + 129.61033 * checkdepth_m + 1205587.57100) * 1E-6
2107+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_INT1:
2108+
self.C1well = (0.18927 * checkdepth_m ** 2 + 293.45174 * checkdepth_m + 1326526.31300) * 1E-6
2109+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_INT1:
2110+
self.C1well = (0.15340 * checkdepth_m ** 2 + 120.31700 * checkdepth_m + 1431801.54400) * 1E-6
2111+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_INT1:
2112+
self.C1well = (0.19950 * checkdepth_m ** 2 + 296.13011 * checkdepth_m + 1697867.70900) * 1E-6
2113+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_INT2:
2114+
self.C1well = (0.00804 * checkdepth_m ** 2 + 455.60507 * checkdepth_m + 921007.68680) * 1E-6
2115+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_INT2:
2116+
self.C1well = (0.00315 * checkdepth_m ** 2 + 782.69676 * checkdepth_m + 983620.25270) * 1E-6
2117+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_INT2:
2118+
self.C1well = (0.00854 * checkdepth_m ** 2 + 506.08357 * checkdepth_m + 1057330.39000) * 1E-6
2119+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_INT2:
2120+
self.C1well = (0.00380 * checkdepth_m ** 2 + 838.90249 * checkdepth_m + 1181947.04400) * 1E-6
2121+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_SMALL_IDEAL:
2122+
self.C1well = (0.00252 * checkdepth_m ** 2 + 439.44503 * checkdepth_m + 590611.90110) * 1E-6
2123+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.VERTICAL_LARGE_IDEAL:
2124+
self.C1well = (-0.00240 * checkdepth_m ** 2 + 752.93946 * checkdepth_m + 524337.65380) * 1E-6
2125+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_SMALL_IDEAL:
2126+
self.C1well = (0.00719 * checkdepth_m ** 2 + 455.85233 * checkdepth_m + 753377.73080) * 1E-6
2127+
elif self.wellcorrelation.value == WellDrillingCostCorrelation.DEVIATED_LARGE_IDEAL:
2128+
self.C1well = (0.00376 * checkdepth_m ** 2 + 762.52696 * checkdepth_m + 765103.07690) * 1E-6
20702129
# account for adjustment factor
20712130
self.C1well = self.ccwelladjfactor.value * self.C1well
20722131

src/geophires_x/OptionList.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,29 @@ class ReservoirVolume(str, Enum):
5151

5252

5353
class WellDrillingCostCorrelation(str, Enum):
54-
VERTICAL_SMALL = "vertical open-hole, small diameter"
55-
DEVIATED_SMALL = "deviated liner, small diameter"
56-
VERTICAL_LARGE = "vertical open-hole, large diameter"
57-
DEVIATED_LARGE = "deviated liner, large diameter"
54+
"""Note: order must be retained since input is read as an int"""
55+
56+
VERTICAL_SMALL = "vertical small diameter, baseline"
57+
DEVIATED_SMALL = "deviated small diameter, baseline"
58+
VERTICAL_LARGE = "vertical large diameter, baseline"
59+
DEVIATED_LARGE = "deviated large diameter, baseline"
60+
5861
SIMPLE = "Simple"
5962

63+
VERTICAL_SMALL_INT1 = "vertical small diameter, intermediate1"
64+
VERTICAL_SMALL_INT2 = "vertical small diameter, intermediate2"
65+
DEVIATED_SMALL_INT1 = "deviated small diameter, intermediate1"
66+
DEVIATED_SMALL_INT2 = "deviated small diameter, intermediate2"
67+
VERTICAL_LARGE_INT1 = "vertical large diameter, intermediate1"
68+
VERTICAL_LARGE_INT2 = "vertical large diameter, intermediate2"
69+
DEVIATED_LARGE_INT1 = "deviated large diameter, intermediate1"
70+
DEVIATED_LARGE_INT2 = "deviated large diameter, intermediate2"
71+
VERTICAL_SMALL_IDEAL = "vertical open-hole, small diameter, ideal"
72+
DEVIATED_SMALL_IDEAL = "deviated liner, small diameter, ideal"
73+
VERTICAL_LARGE_IDEAL = "vertical open-hole, large diameter, ideal"
74+
DEVIATED_LARGE_IDEAL = "deviated liner, large diameter, ideal"
75+
76+
6077

6178
class FractureShape(str, Enum):
6279
CIRCULAR_AREA = "Circular fracture with known area"

0 commit comments

Comments
 (0)