|
| 1 | +from typing import ClassVar |
| 2 | + |
1 | 3 | from base_test_case import BaseTestCase
|
2 | 4 | from geophires_x.OptionList import EndUseOptions
|
3 | 5 | from geophires_x.OptionList import PlantType
|
@@ -33,23 +35,33 @@ def test_equality(self):
|
33 | 35 |
|
34 | 36 |
|
35 | 37 | class WellDrillingCostCorrelationTestCase(BaseTestCase):
|
| 38 | + |
36 | 39 | def test_equality(self):
|
37 | 40 | self.assertFalse(WellDrillingCostCorrelation.VERTICAL_SMALL == WellDrillingCostCorrelation.DEVIATED_SMALL)
|
38 | 41 | self.assertTrue(WellDrillingCostCorrelation.VERTICAL_SMALL == WellDrillingCostCorrelation.VERTICAL_SMALL)
|
39 | 42 |
|
40 |
| - def test_baseline_curve_costs(self): |
41 |
| - # Sanity-check calibration with NREL 2025 Cost Curve Update |
42 |
| - # https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2025/Akindipe.pdf?t=1740084555 |
43 |
| - |
44 |
| - self.assertAlmostEqual(5.1, WellDrillingCostCorrelation.VERTICAL_SMALL.calculate_cost_MUSD(3500), delta=0.1) |
45 |
| - self.assertAlmostEqual(13.9, WellDrillingCostCorrelation.VERTICAL_SMALL.calculate_cost_MUSD(6500), delta=0.1) |
46 |
| - self.assertAlmostEqual(15.9, WellDrillingCostCorrelation.VERTICAL_SMALL.calculate_cost_MUSD(7000), delta=0.1) |
47 |
| - |
48 |
| - self.assertAlmostEqual(17.2, WellDrillingCostCorrelation.VERTICAL_LARGE.calculate_cost_MUSD(6500), delta=0.1) |
49 |
| - |
50 |
| - self.assertAlmostEqual(14.9, WellDrillingCostCorrelation.DEVIATED_SMALL.calculate_cost_MUSD(6500), delta=0.1) |
51 |
| - |
52 |
| - self.assertAlmostEqual(18.3, WellDrillingCostCorrelation.DEVIATED_LARGE.calculate_cost_MUSD(6500), delta=0.1) |
| 43 | + COST_CORRELATION_TEST_CASES: ClassVar[list[tuple[WellDrillingCostCorrelation, int, float]]] = [ |
| 44 | + (WellDrillingCostCorrelation.VERTICAL_SMALL, 3500, 5.1), |
| 45 | + (WellDrillingCostCorrelation.VERTICAL_SMALL, 6500, 13.9), |
| 46 | + (WellDrillingCostCorrelation.VERTICAL_SMALL, 7000, 15.9), |
| 47 | + (WellDrillingCostCorrelation.VERTICAL_LARGE, 6500, 17.2), |
| 48 | + (WellDrillingCostCorrelation.DEVIATED_SMALL, 6500, 14.9), |
| 49 | + (WellDrillingCostCorrelation.DEVIATED_LARGE, 6500, 18.3), |
| 50 | + ] |
| 51 | + |
| 52 | + def test_drilling_cost_curve_correlations(self): |
| 53 | + """ |
| 54 | + Check calibration with NREL 2025 Cost Curve Update. |
| 55 | + Values in COST_CORRELATION_TEST_CASES derived from graphs on p. 8 of |
| 56 | + https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2025/Akindipe.pdf?t=1740084555 |
| 57 | + """ |
| 58 | + |
| 59 | + for test_case in WellDrillingCostCorrelationTestCase.COST_CORRELATION_TEST_CASES: |
| 60 | + correlation: WellDrillingCostCorrelation = test_case[0] |
| 61 | + depth_m = test_case[1] |
| 62 | + expected_cost_musd = test_case[2] |
| 63 | + with self.subTest(msg=str(f'{correlation.name}, {depth_m}m')): |
| 64 | + self.assertAlmostEqual(expected_cost_musd, correlation.calculate_cost_MUSD(depth_m), delta=0.1) |
53 | 65 |
|
54 | 66 |
|
55 | 67 | class PlantTypeTestCase(BaseTestCase):
|
|
0 commit comments