Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
3fdbca1
Partially clean up and mark TODOs for HeatkWhProduced output (no beha…
softwareengineerprogrammer Mar 27, 2026
1b67476
WIP - example_SAM-single-owner-PPA-7_heat for CHP
softwareengineerprogrammer Mar 27, 2026
4765379
fix degradation type check
softwareengineerprogrammer Mar 27, 2026
f18b649
handle potential TotalkWhProduced unit conversion in _get_utility_rat…
softwareengineerprogrammer Mar 27, 2026
c869ad5
regenerate example_SAM-single-owner-PPA-7_heat with corrected degrada…
softwareengineerprogrammer Mar 27, 2026
d5744c2
rename to example_SAM-single-owner-PPA-7_chp, update validate_read_pa…
softwareengineerprogrammer Mar 27, 2026
2f7d7f6
support cooling revenue
softwareengineerprogrammer Mar 27, 2026
e47a9c5
WIP - add example_SAM-single-owner-PPA-8_heat
softwareengineerprogrammer Mar 27, 2026
74b1f65
test_direct_use_heat_end_use_supported
softwareengineerprogrammer Mar 28, 2026
5945749
remove redundant statement
softwareengineerprogrammer Mar 28, 2026
9d2dc22
temporarily work around capex_total_per_kw_q calculation when no elec…
softwareengineerprogrammer Mar 28, 2026
6a28410
WIP - wiring up capacity payment revenue sources
softwareengineerprogrammer Mar 28, 2026
78477db
continued WIP on capacity payment revenue source line items in cash f…
softwareengineerprogrammer Mar 28, 2026
a1fc61e
heat price/amount
softwareengineerprogrammer Mar 28, 2026
5352020
regenerate capacity payment examples
softwareengineerprogrammer Mar 28, 2026
23ff8b8
round revenue USD to match SAM convention
softwareengineerprogrammer Mar 29, 2026
9b799b6
use correct HeatkWhProduced output (not HeatProduced)
softwareengineerprogrammer Mar 29, 2026
6d95b27
example_SAM-single-owner-PPA-9_cooling
softwareengineerprogrammer Mar 29, 2026
ded34de
include saved carbon production line item
softwareengineerprogrammer Mar 29, 2026
5d585be
update calculate_cashflow docstring
softwareengineerprogrammer Mar 29, 2026
fefd706
consolidate _get_capacity_payment_parameters and _get_capacity_paymen…
softwareengineerprogrammer Mar 29, 2026
cb3a41d
render USD prices as $
softwareengineerprogrammer Mar 29, 2026
1d304bb
remove addressed FIXME WIPs
softwareengineerprogrammer Mar 29, 2026
797f00c
address backfill_lcoe_nominal FIXME WIP - set LCOE line item to NaN f…
softwareengineerprogrammer Mar 29, 2026
6df5a63
address backfill_lppa_metrics FIXME WIP - set LPPA to NaN for direct-…
softwareengineerprogrammer Mar 29, 2026
bfe567a
EndUseOptions is_cogeneration_end_use_option and has_electricity_comp…
softwareengineerprogrammer Mar 29, 2026
6f149d6
fix backfill_lppa_metrics (error introduced in 6df5a630d9b9f6718075bf…
softwareengineerprogrammer Mar 29, 2026
2f203ed
skip calculating SAM-EM LCOE for non-electricity end-use option; rege…
softwareengineerprogrammer Mar 29, 2026
b263b72
clean up inaccurate PumpingkWh internal name (no behavioral change)
softwareengineerprogrammer Mar 29, 2026
a89c709
chp_percent_cost_allocation_for_electrical_plant derived output param…
softwareengineerprogrammer Mar 30, 2026
bf21060
code cleaup during audit of output correctness for SAM-EM + non-elect…
softwareengineerprogrammer Mar 30, 2026
d98267e
log error if economic model is unrecognized in LCOE/LCOH/LCOC calcula…
softwareengineerprogrammer Mar 30, 2026
3c7a53c
minor code cleanup/formatting in CalculateLCOELCOHLCOC
softwareengineerprogrammer Mar 30, 2026
23cfa71
fix issues in Outputs.py introduced in recent commits
softwareengineerprogrammer Mar 30, 2026
4401592
WIP - LCOH calculation in SAM cash flow profile
softwareengineerprogrammer Mar 30, 2026
994b85c
working-ish impl of LCOH insertion into SAM cash flow profile - WIP o…
softwareengineerprogrammer Mar 30, 2026
460f7dc
set CAPEX_heat_electricity_plant_ratio for end use options
softwareengineerprogrammer Mar 31, 2026
d4c76d4
break out EconomicsSamCalculations.py
softwareengineerprogrammer Mar 31, 2026
bae714d
WIP - Present value of annual heat costs ($) line item
softwareengineerprogrammer Mar 31, 2026
329f28a
WIP - Present value of annual heat provided (kWh) line item
softwareengineerprogrammer Mar 31, 2026
8ade446
regen example_SAM-single-owner-PPA-7/8
softwareengineerprogrammer Mar 31, 2026
62a3728
LCOH line items in MMBTU
softwareengineerprogrammer Mar 31, 2026
2195473
populate case report LCOH
softwareengineerprogrammer Mar 31, 2026
9b2e018
increase test_hip_ra_monte_carlo threshold
softwareengineerprogrammer Apr 1, 2026
c9216a5
remove redundant _get_ret_row_index
softwareengineerprogrammer Apr 1, 2026
3fdb895
minor code reorganization/cleanup
softwareengineerprogrammer Apr 1, 2026
91f678b
WIP - add PV of annual energy (electricity costs), pivoting to using …
softwareengineerprogrammer Apr 1, 2026
c812574
calculate LCOE based on PV of annual energy (electricity only) costs
softwareengineerprogrammer Apr 1, 2026
a2d0b74
minor - rounding
softwareengineerprogrammer Apr 1, 2026
136f5b5
regen non-Fervo SAM-EM examples
softwareengineerprogrammer Apr 1, 2026
251324b
code cleanup
softwareengineerprogrammer Apr 1, 2026
acd8e51
WIP - parameterizing backfill_lcoh_nominal for re-use with LCOC
softwareengineerprogrammer Apr 1, 2026
df5531a
insert_non_electricity_levelized_metrics parameterized & genericized …
softwareengineerprogrammer Apr 1, 2026
631adb3
insert_lcoc_metrics
softwareengineerprogrammer Apr 1, 2026
0548958
insert LCOC metrics in cash flow and include in case report
softwareengineerprogrammer Apr 1, 2026
9e1b451
regen Fervo_Project_Cape-{4,5,6}
softwareengineerprogrammer Apr 1, 2026
f4c1188
Merge pull request #144 from softwareengineerprogrammer/lcoh-lcoc-sam…
softwareengineerprogrammer Apr 1, 2026
e8c5272
add config and credentials to .aiexclude
softwareengineerprogrammer Apr 1, 2026
57f04d2
example14_data-center CHP update (WIP)
softwareengineerprogrammer Apr 1, 2026
a06d8b6
add example14_data-center AC add-on back on to model CAPEX only
softwareengineerprogrammer Apr 2, 2026
154d534
_insert_calculated_levelized_metrics_line_items code cleanup
softwareengineerprogrammer Apr 2, 2026
823f928
resolve dc example FIXME re correct heat price/rate parameter (remove…
softwareengineerprogrammer Apr 2, 2026
64e5dc7
Injection temperature documentation in tooltip text. (Redundant/overl…
softwareengineerprogrammer Apr 2, 2026
9b39280
make SAM-EM capacity payment price vectors consistent with SAM PPA pr…
softwareengineerprogrammer Apr 2, 2026
6890082
tune example14_data-center injection temperature to yield ~300 MWth d…
softwareengineerprogrammer Apr 3, 2026
cee4edd
clean up/document direct-use heat end use option nameplate capacity s…
softwareengineerprogrammer Apr 3, 2026
6df3596
Model absorption chiller cost via CHP Electrical Plant Cost Allocatio…
softwareengineerprogrammer Apr 3, 2026
5619b04
output Allocated CAPEX per kW{e,th} for CHP
softwareengineerprogrammer Apr 3, 2026
bc09a4e
decrease example_SAM-single-owner-PPA-7_chp injection temperature to …
softwareengineerprogrammer Apr 3, 2026
b116bcd
do not support AC, HP, DH power plant types for now. WIP to ensure IN…
softwareengineerprogrammer Apr 3, 2026
1881e6b
SurfacePlant.py mark TODO https://github.com/NatLabRockies/GEOPHIRES-…
softwareengineerprogrammer Apr 3, 2026
13fe524
include pumping in SAM OPEX parameterization. re-enable Absorption Ch…
softwareengineerprogrammer Apr 3, 2026
9e7c5c0
Switch FIXME to TODO in src/geophires_x/EconomicsSam.py re: potential…
softwareengineerprogrammer Apr 3, 2026
b254d01
averageannualpumpingcosts unit conversion handling (no effect on exis…
softwareengineerprogrammer Apr 3, 2026
a1386a6
WIP - adding plus/equals delineators for capacity payment revenue sou…
softwareengineerprogrammer Apr 4, 2026
351eb74
fix line item insertion for multiple capacity payment revenue sources…
softwareengineerprogrammer Apr 4, 2026
2246382
remove electricity from grid and electricity purchase line items for …
softwareengineerprogrammer Apr 4, 2026
d22a9d5
_adjust_electricity_line_items_for_possible_grid_electricity_consumpt…
softwareengineerprogrammer Apr 4, 2026
bf78ae6
fix incorrect _get_row_index type signatures
softwareengineerprogrammer Apr 4, 2026
a37f5b3
remove redundant /yr suffix from cooling provided unit
softwareengineerprogrammer Apr 4, 2026
cd04c5d
fix HeatProducedMax OutputParameterDict key
softwareengineerprogrammer Apr 5, 2026
8e7ac22
regen schema
softwareengineerprogrammer Apr 5, 2026
47d564a
Rename "Add-On Profit revenue" to "Add-On revenue" and update tooltip…
softwareengineerprogrammer Apr 5, 2026
335fff9
blanks instead of 0s for capacity payment revenue sources amount prov…
softwareengineerprogrammer Apr 5, 2026
519eaa6
better CHP electricity/heat allocated capex output field names
softwareengineerprogrammer Apr 5, 2026
17a6c93
regen schema
softwareengineerprogrammer Apr 5, 2026
d0cff47
minor code/comment cleanup
softwareengineerprogrammer Apr 5, 2026
61b7c29
regen example14_data-center
softwareengineerprogrammer Apr 5, 2026
2ba6f9e
require valid CAPEX_heat_electricity_plant_ratio for cogen + surface …
softwareengineerprogrammer Apr 5, 2026
c6106bc
minor code cleanup
softwareengineerprogrammer Apr 7, 2026
783ea75
Total surface equipment costs as derived output
softwareengineerprogrammer Apr 7, 2026
260b072
fix issues with previous 2 commits
softwareengineerprogrammer Apr 7, 2026
86ab6b5
migrate to CAPEX_cost_electricity_plant_musd to properties of new cor…
softwareengineerprogrammer Apr 7, 2026
de4298c
output of which {Electrical, Heat} Plant Cost
softwareengineerprogrammer Apr 7, 2026
7a1dfd5
adjust example14_data-center cost representation, regenerate examples…
softwareengineerprogrammer Apr 7, 2026
e7227d5
document example14_data-center CAPEX-only add-on in description
softwareengineerprogrammer Apr 7, 2026
b32807e
include tranmission pipeline in surface equipment costs
softwareengineerprogrammer Apr 7, 2026
ba9a782
test_example14_chp_output
softwareengineerprogrammer Apr 7, 2026
6c2ce69
minor code clean up - break out 2 plant cost constants, mark TODOs to…
softwareengineerprogrammer Apr 8, 2026
f9c3b71
minor HasQuantity TODO and noinspection
softwareengineerprogrammer Apr 8, 2026
64996fb
HasQuantity.quantity optional as_units arg
softwareengineerprogrammer Apr 8, 2026
4888557
CAPEX_cost_{electrical,heat}_plant quantity(as_units) and formatting
softwareengineerprogrammer Apr 8, 2026
5ca9452
test_chp_fixed_plant_cost_requires_electrical_plant_cost_allocation_r…
softwareengineerprogrammer Apr 8, 2026
7ebfe8a
specify heat price model params (instead of electricity) for heat exa…
softwareengineerprogrammer Apr 8, 2026
bb0a0a1
heating/cooling price model SAM parameters mapping
softwareengineerprogrammer Apr 8, 2026
8349120
WIP - initial draft of SAM-EM end use options doc page
softwareengineerprogrammer Apr 8, 2026
8f3cb94
link to main SAM-EM docs, fix electricity examples header level
softwareengineerprogrammer Apr 8, 2026
3100a49
address Grid Electricity Consumption and Cash Flow Reporting TODO/WIP
softwareengineerprogrammer Apr 8, 2026
a0cd695
Clean up SAM-EM examples list (remove unnecessary sectioning)
softwareengineerprogrammer Apr 8, 2026
f90ed8e
examples cleanup and sync between main doc page and end use page
softwareengineerprogrammer Apr 8, 2026
a10ea7e
explicitly list Absorption Chiller as supported in Limitations section
softwareengineerprogrammer Apr 8, 2026
d5de695
mention heat/cooling revenue cash flow line items
softwareengineerprogrammer Apr 8, 2026
ebf307d
main SAM-EM doc page end-uses section with link to corresponding doc …
softwareengineerprogrammer Apr 8, 2026
20f2e9d
remove example14_data-center FIXME WIP description marker
softwareengineerprogrammer Apr 12, 2026
4acfeab
refine example14 description of heat revenue in relation to Y&E case …
softwareengineerprogrammer Apr 12, 2026
5bd7fa4
Update relevant example descriptions to link to https://softwareengin…
softwareengineerprogrammer Apr 12, 2026
098a18c
example14 description doc link
softwareengineerprogrammer Apr 12, 2026
e200dd7
Document: Lowering injection temperature for cogen topping cycle incr…
softwareengineerprogrammer Apr 12, 2026
6c1af07
remove addressed gitignore TODO
softwareengineerprogrammer Apr 13, 2026
701294c
gitignore example cash flow csvs manually generated and uploaded as g…
softwareengineerprogrammer Apr 13, 2026
699edef
copy edit examples 7 & 9 descriptions
softwareengineerprogrammer Apr 13, 2026
709193b
add example_SAM-single-owner-PPA-7d_chp-bottoming and example_SAM-sin…
softwareengineerprogrammer Apr 13, 2026
80bd29e
short example descriptions (in addition to identifiers) in doc page
softwareengineerprogrammer Apr 13, 2026
22a777a
Bump version: 3.12.1 → 3.13.0
softwareengineerprogrammer Apr 14, 2026
6e166a8
v3.13 CHANGELOG entry
softwareengineerprogrammer Apr 14, 2026
4c22be0
update FIXMEs/WIPs/TODOs
softwareengineerprogrammer Apr 14, 2026
f294752
add SAM-EM CHP/heat/cooling examples to README examples list
softwareengineerprogrammer Apr 14, 2026
d88cc07
remove commented code
softwareengineerprogrammer Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .aiexclude
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
*.env
credentials
config
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 3.12.1
current_version = 3.13.0
commit = True
tag = True

Expand Down
2 changes: 1 addition & 1 deletion .cookiecutterrc
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ default_context:
sphinx_doctest: "no"
sphinx_theme: "sphinx-py3doc-enhanced-theme"
test_matrix_separate_coverage: "no"
version: 3.12.1
version: 3.13.0
version_manager: "bump2version"
website: "https://github.com/NREL"
year_from: "2023"
Expand Down
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ Geothermal_district_heating_system_with_peaking_boilers.png
regenerate-schemas.sh
requirements_2025-08-11.txt

tests/examples/example_SAM-single-owner-PPA-7_chp_cash-flow.csv
tests/examples/example_SAM-single-owner-PPA-8_heat_cash-flow.csv
tests/examples/example_SAM-single-owner-PPA-9_cooling_cash-flow.csv

# C extensions
*.so

Expand Down Expand Up @@ -116,9 +120,6 @@ _site/
/.github/workflows/workflows.7z
tmp.patch

# TODO unignore once favicon is correctly configured
docs/_images/geophires-favicon.png

# Mypy Cache
.mypy_cache/

Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# pre-commit install --install-hooks
# To update the versions:
# pre-commit autoupdate
exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg|src/geophires_x(?!/(GEOPHIRESv3|EconomicsSam|EconomicsSamCashFlow|EconomicsUtils|EconomicsSamPreRevenue|SurfacePlantUtils|NumpyUtils|UPPReservoir)\.py))(/|$)'
exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg|src/geophires_x(?!/(GEOPHIRESv3|EconomicsSam|EconomicsSamCashFlow|EconomicsUtils|EconomicsSamPreRevenue|EconomicsSamCalculations|SurfacePlantUtils|NumpyUtils|UPPReservoir)\.py))(/|$)'
# Note the order is intentional to avoid multiple passes of the hooks
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ Changelog
GEOPHIRES v3 (2023-2026)
------------------------

3.13
^^^^

3.13: `SAM-EM: Support all End-Use Options (Direct-Use Heat and CHP/Cogeneration) and Absorption Chiller Surface Application <https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/143>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/v3.13.0>`__ | `documentation <https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html>`__

3.12
^^^^

Expand Down
32 changes: 30 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ Free software: `MIT license <LICENSE>`__
:alt: Supported implementations
:target: https://pypi.org/project/geophires-x

.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.12.1.svg
.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.13.0.svg
:alt: Commits since latest release
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.12.1...main
:target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.13.0...main

.. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat
:target: https://softwareengineerprogrammer.github.io/GEOPHIRES
Expand Down Expand Up @@ -348,6 +348,34 @@ Example-specific web interface deeplinks are listed in the Link column.
- `example_SAM-single-owner-PPA-6_carbon-revenue.txt <tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue>`__
* - SAM Single Owner PPA: CHP
- `example_SAM-single-owner-PPA-7_chp.txt <tests/examples/example_SAM-single-owner-PPA-7_chp.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-7_chp.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp>`__
* - SAM Single Owner PPA: CHP with Carbon Credits
- `example_SAM-single-owner-PPA-7b_chp-cc.txt <tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc>`__
* - SAM Single Owner PPA: CHP with Surface Plant Capital Cost
- `example_SAM-single-owner-PPA-7c.txt <tests/examples/example_SAM-single-owner-PPA-7c.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-7c.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7c>`__
* - SAM Single Owner PPA: CHP: Bottoming Cycle
- `example_SAM-single-owner-PPA-7d_chp-bottoming.txt <tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-bottoming>`__
* - SAM Single Owner PPA: CHP: Parallel Cycle
- `example_SAM-single-owner-PPA-7e_chp-parallel.txt <tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7e_chp-parallel>`__
* - SAM Single Owner PPA: Direct-Use Heat
- `example_SAM-single-owner-PPA-8_heat.txt <tests/examples/example_SAM-single-owner-PPA-8_heat.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-8_heat.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-8_heat>`__
* - SAM Single Owner PPA: Cooling
- `example_SAM-single-owner-PPA-9_cooling.txt <tests/examples/example_SAM-single-owner-PPA-9_cooling.txt>`__
- `.out <tests/examples/example_SAM-single-owner-PPA-9_cooling.out>`__
- `link <https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling>`__
.. raw:: html

<embed>
Expand Down
86 changes: 86 additions & 0 deletions docs/SAM-EM_End-Uses-and-Surface-Applications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# SAM Economic Models: End Uses and Surface Applications

[SAM Economic Models](SAM-Economic-Models.html) support a variety of geothermal end-use options and surface applications.

See the [Theoretical Basis for GEOPHIRES End-use options documentation](Theoretical-Basis-for-GEOPHIRES.html#enduse-options)
for details on the underlying physical simulation mechanics.

## Electricity

For pure electricity generation configurations, SAM Economic Models calculate standard project finance metrics,
including a nominal Levelized Cost of Electricity (LCOE).

### Examples:

1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA): 50 MWe
1. [example_SAM-single-owner-PPA-6_carbon-revenue](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue): Electricity with Carbon Credits

See [SAM Economic Models documentation](SAM-Economic-Models.html#examples) for additional electricity examples.

## Direct-Use Heat

Direct-use heat configurations evaluate pure thermal energy extraction, reporting financial viability via the nominal
Levelized Cost of Heat (LCOH) in $/MMBTU.
Heat revenue is modeled as capacity payment revenue and included as the `Heat revenue ($)` cash flow line item.

### Grid Electricity Consumption and Cash Flow Reporting

In GEOPHIRES, pure direct-use heat and cooling configurations
typically require parasitic pumping power purchased from the grid. The cost of this grid electricity is calculated
and fully accounted for within GEOPHIRES' baseline OPEX calculations prior to executing the SAM financial engine.

Because these costs are injected directly into the fixed O&M parameters passed to SAM, SAM's native grid-purchase
mechanisms are bypassed. Consequently, the specific cash flow line items for `Electricity from grid (kWh)`
and `Electricity purchase ($)` are intentionally removed from the final SAM cash flow profile report.
This prevents the display of default zero values, which could otherwise mislead analysts into assuming parasitic power
costs were omitted.

### Examples:

1. [example_SAM-single-owner-PPA-8_heat](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-8_heat): Direct-Use Heat

## Cogeneration

Combined Heat and Power (CHP) end-uses simulate both electricity and direct-use heat generation.
The model outputs allocated metrics for both product streams, including `Electricity CAPEX ($/kWe)`, `Heat CAPEX ($/kWth)`, LCOE, and LCOH.

### CHP Cost Allocation Ratio

To separate the levelized costs of electricity and heat, GEOPHIRES utilizes the `CHP Electrical Plant Cost Allocation Ratio`.
When calculating the levelized metrics, the total present value of annual costs includes not only CAPEX, but also OPEX,
taxes, and debt service. By applying a CAPEX-derived allocation ratio to this total present value, the model
mathematically forces the assumption that thermal OPEX and financing burdens scale exactly proportionally to thermal CAPEX.
If the electrical power plant has a high O&M burden and the direct-use heat component has a relatively low O&M burden,
applying the CAPEX ratio to the total PV will artificially inflate the LCOH and artificially lower the LCOE.
Analysts should be aware of this proportional scaling approximation when evaluating granular CHP OPEX profiles.

### Injection Temperature and CHP Topping Cycles

In GEOPHIRES, adjusting the `Injection Temperature` for a Cogeneration Topping Cycle will affect the amount of direct-use heat produced, but it will **not** affect electricity production.

This is the physically correct behavior. In a topping cycle, the geofluid flows sequentially: it first passes through the power plant (which extracts heat to generate electricity and rejects the fluid at a calculated thermodynamic exhaust temperature), and then passes through the direct-use application (which extracts the residual heat down to the user-defined `Injection Temperature`).

Because the power plant sits upstream, its electricity production is governed entirely by the production temperature and its own exhaust temperature. Lowering the `Injection Temperature` simply increases the temperature delta across the downstream direct-use application, yielding more heat without altering the upstream power cycle.

### Examples:

1. [example_SAM-single-owner-PPA-7_chp](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp): Combined Heat and Power (CHP): Cogeneration Topping Cycle
1. [example_SAM-single-owner-PPA-7b_chp-cc](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc): Combined Heat and Power (CHP): Carbon Credits
1. [example_SAM-single-owner-PPA-7c](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7c): Combined Heat and Power (CHP): Carbon Credits with fixed Surface Plant Capital Cost
1. [example_SAM-single-owner-PPA-7d_chp-bottoming](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-bottoming): Combined Heat and Power (CHP): Cogeneration Bottoming Cycle
1. [example_SAM-single-owner-PPA-7e_chp-parallel](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-parallel): Combined Heat and Power (CHP): Cogeneration Parallel Cycle

## Absorption Chiller (Cooling)

Cooling applications via absorption chillers are supported, providing a nominal Levelized Cost of Cooling (LCOC) in
$/MMBTU. Cooling revenue is modeled as capacity payment revenue and included as the `Cooling revenue ($)` cash flow line item.
Like Direct-Use Heat, parasitic electricity requirements are factored into the baseline OPEX prior to
SAM execution.

### Examples:

1. [example_SAM-single-owner-PPA-9_cooling](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling): Cooling (Direct-Use Heat with Absorption Chiller Surface Application)

## Limitations

Heat Pump, District Heating, and Reservoir Thermal Energy Storage (SUTRA) surface applications are not currently supported for SAM Economic Models.
Loading