Skip to content

Commit 3963365

Browse files
Merge pull request #181 from softwareengineerprogrammer/vertical-and-lateral-indirect-costs-2
Include indirect costs in vertical and lateral (non-vertical) section drilling costs [v3.17]
2 parents 4f9b750 + bdd4cf6 commit 3963365

21 files changed

Lines changed: 154 additions & 99 deletions

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 3.16.2
2+
current_version = 3.17.0
33
commit = True
44
tag = True
55

.cookiecutterrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ default_context:
5454
sphinx_doctest: "no"
5555
sphinx_theme: "sphinx-py3doc-enhanced-theme"
5656
test_matrix_separate_coverage: "no"
57-
version: 3.16.2
57+
version: 3.17.0
5858
version_manager: "bump2version"
5959
website: "https://github.com/NREL"
6060
year_from: "2023"

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ Changelog
55
GEOPHIRES v3 (2023-2026)
66
------------------------
77

8+
3.17
9+
^^^^
10+
11+
3.17: `Warn user if ORC is used with production temperature greater than 200 degrees C <https://github.com/NatLabRockies/GEOPHIRES-X/pull/517>`__; `Include indirect costs in vertical and lateral (non-vertical) section drilling costs <https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/181>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/v3.17.0>`__
12+
813
3.16
914
^^^^
1015

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ Free software: `MIT license <LICENSE>`__
5858
:alt: Supported implementations
5959
:target: https://pypi.org/project/geophires-x
6060

61-
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.16.2.svg
61+
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.17.0.svg
6262
:alt: Commits since latest release
63-
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.16.2...main
63+
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.17.0...main
6464

6565
.. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat
6666
:target: https://softwareengineerprogrammer.github.io/GEOPHIRES

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
year = '2025'
1919
author = 'NREL'
2020
copyright = f'{year}, {author}'
21-
version = release = '3.16.2'
21+
version = release = '3.17.0'
2222

2323
pygments_style = 'trac'
2424
templates_path = ['./templates']

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def read(*names, **kwargs):
1313

1414
setup(
1515
name='geophires-x',
16-
version='3.16.2',
16+
version='3.17.0',
1717
license='MIT',
1818
description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.',
1919
long_description='{}\n{}'.format(

src/geophires_x/Economics.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2042,6 +2042,9 @@ def __init__(self, model: Model):
20422042
f'Provide {self.ccexplfixed.Name} to override the default correlation and set your own cost.'
20432043
)
20442044

2045+
wellfield_indirect_costs_default_note = (f'(default: '
2046+
f'{self.wellfield_indirect_capital_cost_percentage.DefaultValue}%)')
2047+
20452048
# noinspection SpellCheckingInspection
20462049
self.Cwell = self.OutputParameterDict[self.Cwell.Name] = OutputParameter(
20472050
Name="Wellfield cost",
@@ -2051,7 +2054,7 @@ def __init__(self, model: Model):
20512054
CurrentUnits=CurrencyUnit.MDOLLARS,
20522055
ToolTipText=f'Includes total drilling and completion cost of all injection and production wells and '
20532056
f'laterals, plus indirect costs '
2054-
f'(default: {self.wellfield_indirect_capital_cost_percentage.DefaultValue}%).'
2057+
f'{wellfield_indirect_costs_default_note}.'
20552058
)
20562059
self.drilling_and_completion_costs_per_well = self.OutputParameterDict[
20572060
self.drilling_and_completion_costs_per_well.Name] = OutputParameter(
@@ -2060,7 +2063,7 @@ def __init__(self, model: Model):
20602063
PreferredUnits=CurrencyUnit.MDOLLARS,
20612064
CurrentUnits=CurrencyUnit.MDOLLARS,
20622065
ToolTipText='Drilling and completion cost per well, including indirect costs '
2063-
f'(default: {self.wellfield_indirect_capital_cost_percentage.DefaultValue}%).'
2066+
f'{wellfield_indirect_costs_default_note}.'
20642067
)
20652068

20662069
# noinspection SpellCheckingInspection
@@ -2514,7 +2517,25 @@ def __init__(self, model: Model):
25142517
Name='Drilling and completion costs per non-vertical section',
25152518
UnitType=Units.CURRENCY,
25162519
PreferredUnits=CurrencyUnit.MDOLLARS,
2517-
CurrentUnits=CurrencyUnit.MDOLLARS
2520+
CurrentUnits=CurrencyUnit.MDOLLARS,
2521+
ToolTipText=f'Drilling and completion costs per non-vertical section (lateral), '
2522+
f'including indirect costs {wellfield_indirect_costs_default_note}.'
2523+
)
2524+
self.cost_per_vertical_production_well = self.OutputParameterDict[self.cost_per_vertical_production_well.Name] = OutputParameter(
2525+
Name="Drilling and completion costs per vertical production well",
2526+
UnitType=Units.CURRENCY,
2527+
PreferredUnits=CurrencyUnit.MDOLLARS,
2528+
CurrentUnits=CurrencyUnit.MDOLLARS,
2529+
ToolTipText=f'Drilling and completion costs per vertical production well section, '
2530+
f'including indirect costs {wellfield_indirect_costs_default_note}.'
2531+
)
2532+
self.cost_per_vertical_injection_well = self.OutputParameterDict[self.cost_per_vertical_injection_well.Name] = OutputParameter(
2533+
Name="Drilling and completion costs per vertical injection well",
2534+
UnitType=Units.CURRENCY,
2535+
PreferredUnits=CurrencyUnit.MDOLLARS,
2536+
CurrentUnits=CurrencyUnit.MDOLLARS,
2537+
ToolTipText=f'Drilling and completion costs per vertical production well section, '
2538+
f'including indirect costs {wellfield_indirect_costs_default_note}.'
25182539
)
25192540
self.cost_to_junction_section = self.OutputParameterDict[self.cost_to_junction_section.Name] = OutputParameter(
25202541
Name="Cost of the entire section of a well from bottom of vertical to junction with laterals",
@@ -4101,7 +4122,11 @@ def _calculate_derived_outputs(self, model: Model) -> None:
41014122
self.cost_per_lateral_section.value = (
41024123
self.cost_lateral_section.quantity().to(self.cost_per_lateral_section.CurrentUnits).magnitude
41034124
/ model.wellbores.numnonverticalsections.value
4104-
)
4125+
) * self._wellfield_indirect_cost_factor
4126+
self.cost_per_vertical_production_well.value = self.cost_one_production_well.quantity().to(
4127+
self.cost_per_vertical_production_well.CurrentUnits).magnitude * self._wellfield_indirect_cost_factor
4128+
self.cost_per_vertical_injection_well.value = self.cost_one_injection_well.quantity().to(
4129+
self.cost_per_vertical_injection_well.CurrentUnits).magnitude * self._wellfield_indirect_cost_factor
41054130

41064131
if hasattr(self, 'discountrate'):
41074132
self.real_discount_rate.value = self.discountrate.quantity().to(convertible_unit(

src/geophires_x/Outputs.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -486,9 +486,15 @@ def PrintOutputs(self, model: Model):
486486
f.write(f' {model.economics.Cwell.display_name}: {model.economics.Cwell.value:10.2f} {model.economics.Cwell.CurrentUnits.value}\n')
487487

488488
if econ.cost_lateral_section.value > 0.0:
489-
f.write(f' Drilling and completion costs per vertical production well: {econ.cost_one_production_well.value:10.2f} {econ.cost_one_production_well.CurrentUnits.value}\n')
490-
f.write(f' Drilling and completion costs per vertical injection well: {econ.cost_one_injection_well.value:10.2f} {econ.cost_one_injection_well.CurrentUnits.value}\n')
491-
f.write(f' {econ.cost_per_lateral_section.Name}: {econ.cost_per_lateral_section.value:10.2f} {econ.cost_lateral_section.CurrentUnits.value}\n')
489+
f.write(f' {econ.cost_per_vertical_production_well.display_name}: '
490+
f'{econ.cost_per_vertical_production_well.value:10.2f} '
491+
f'{econ.cost_per_vertical_production_well.CurrentUnits.value}\n')
492+
f.write(f' {econ.cost_per_vertical_injection_well.display_name}: '
493+
f'{econ.cost_per_vertical_injection_well.value:10.2f} '
494+
f'{econ.cost_per_vertical_injection_well.CurrentUnits.value}\n')
495+
f.write(f' {econ.cost_per_lateral_section.display_name}: '
496+
f'{econ.cost_per_lateral_section.value:10.2f} '
497+
f'{econ.cost_lateral_section.CurrentUnits.value}\n')
492498
elif round(econ.cost_one_production_well.value, 4) != round(econ.cost_one_injection_well.value, 4) \
493499
and model.economics.cost_one_injection_well.value != -1:
494500
f.write(f' {econ.cost_one_production_well.display_name}: {econ.cost_one_production_well.value:10.2f} {econ.cost_one_production_well.CurrentUnits.value}\n')

src/geophires_x/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '3.16.2'
1+
__version__ = '3.17.0'

src/geophires_x_schema_generator/geophires-result.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,11 +435,19 @@
435435
"description": "Cost of One Injection Well",
436436
"units": "MUSD"
437437
},
438-
"Drilling and completion costs per vertical production well": {},
439-
"Drilling and completion costs per vertical injection well": {},
438+
"Drilling and completion costs per vertical production well": {
439+
"type": "number",
440+
"description": "Drilling and completion costs per vertical production well section, including indirect costs (default: 5%).",
441+
"units": "MUSD"
442+
},
443+
"Drilling and completion costs per vertical injection well": {
444+
"type": "number",
445+
"description": "Drilling and completion costs per vertical production well section, including indirect costs (default: 5%).",
446+
"units": "MUSD"
447+
},
440448
"Drilling and completion costs per non-vertical section": {
441449
"type": "number",
442-
"description": "",
450+
"description": "Drilling and completion costs per non-vertical section (lateral), including indirect costs (default: 5%).",
443451
"units": "MUSD"
444452
},
445453
"Drilling and completion costs (for redrilling)": {},

0 commit comments

Comments
 (0)