Skip to content

Commit e6030a7

Browse files
Output SAM-EM capex as 'Total CAPEX' instead of 'Total capital costs' to distinguish from BICYCLE model's substraction of ITC from 'Total capital costs'.
1 parent 0baf38f commit e6030a7

File tree

7 files changed

+29
-22
lines changed

7 files changed

+29
-22
lines changed

docs/SAM-Economic-Models.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ The following table describes how GEOPHIRES parameters are transformed into SAM
2020
| `Maximum Total Electricity Generation` | Generation Profile | `Nameplate capacity` | `Singleowner` | `system_capacity` | .. N/A |
2121
| `Utilization Factor` | Generation Profile | `Nominal capacity factor` | `Singleowner` | `user_capacity_factor` | .. N/A |
2222
| `Net Electricity Generation` | AC Degradation | `Annual AC degradation rate` schedule | `Utilityrate5` | `degradation` | Percentage difference of each year's `Net Electricity Generation` from `Maximum Total Electricity Generation` is input as SAM as the degradation rate schedule in order to match SAM's generation profile to GEOPHIRES |
23-
| `Total Capital Cost` + `Investment Tax Credit Value` + (`Inflation Rate During Construction` × `Total Capital Cost`) | Installation Costs | `Total Installed Cost` | `Singleowner` | `total_installed_cost` | ITC, if present, is added to GEOPHIRES total capital cost since SAM handles ITC credits in cash flow analysis. Inflation during construction is treated as an indirect EPC capital cost percentage. |
23+
| `Total CAPEX` × (1 + `Inflation Rate During Construction`) | Installation Costs | `Total Installed Cost` | `Singleowner` | `total_installed_cost` | Inflation during construction is treated as an indirect EPC capital cost percentage. Note that unlike the BICYCLE Economic Model's `Total capital costs`, SAM Economic Model's `Total CAPEX` is the total installed cost and does not subtract ITC value (if present). |
2424
| `Total O&M Cost`, `Inflation Rate` | Operating Costs | `Fixed operating cost`, `Escalation rate` set to `Inflation Rate` × -1 | `Singleowner` | `om_fixed`, `om_fixed_escal` | .. N/A |
2525
| `Plant Lifetime` | Financial Parameters → Analysis Parameters | `Analysis period` | `CustomGeneration`, `Singleowner` | `CustomGeneration.analysis_period`, `Singleowner.term_tenor` | .. N/A |
2626
| `Inflation Rate` | Financial Parameters → Analysis Parameters | `Inflation rate` | `Utilityrate5` | `inflation_rate` | .. N/A |
@@ -56,7 +56,8 @@ The following table describes how GEOPHIRES parameters are transformed into SAM
5656

5757
## Using SAM Economic Models with Existing GEOPHIRES Inputs
5858

59-
In many cases, all you need to do to use SAM Economic Models for your existing GEOPHIRES inputs is to change the `Economic Model` parameter value.
59+
In many cases, all you need to do to use SAM Economic Models for your existing GEOPHIRES inputs is to change the
60+
`Economic Model` parameter value.
6061
For example, if your GEOPHIRES `.txt` file contained the following:
6162

6263
```
@@ -86,7 +87,8 @@ Inflated Equity Interest Rate, .08
8687
Plant Lifetime, 30
8788
```
8889

89-
Change `Economic Model` and replace `Inflated Equity Interest Rate` with a suitable `Discount Rate` and `Inflation Rate`:
90+
Change `Economic Model` and replace `Inflated Equity Interest Rate` with a suitable `Discount Rate` and
91+
`Inflation Rate`:
9092

9193
```
9294
# *** Financial Parameters ***

src/geophires_x/Economics.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,6 +2787,12 @@ def Calculate(self, model: Model) -> None:
27872787
non_calculated_output_placeholder_val = -1
27882788
if self.econmodel.value == EconomicModel.SAM_SINGLE_OWNER_PPA:
27892789
self.sam_economics_calculations = calculate_sam_economics(model)
2790+
2791+
# Distinguish capex from default display name of 'Total capital costs' since SAM Economic Model doesn't
2792+
# subtract ITC from this value.
2793+
self.CCap.display_name = 'Total CAPEX'
2794+
self.CCap.value = self.sam_economics_calculations.capex.quantity().to(self.CCap.CurrentUnits.value).magnitude
2795+
27902796
self.wacc.value = self.sam_economics_calculations.wacc.value
27912797
self.nominal_discount_rate.value = self.sam_economics_calculations.nominal_discount_rate.value
27922798
self.ProjectNPV.value = self.sam_economics_calculations.project_npv.quantity().to(

src/geophires_x/EconomicsSam.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,7 @@ def _get_single_owner_parameters(model: Model) -> dict[str, Any]:
270270

271271
itc = econ.RITCValue.quantity()
272272
total_capex = econ.CCap.quantity() + itc
273-
274-
# 'Inflation Rate During Construction'
275-
construction_additional_cost = econ.inflrateconstruction.value * total_capex
276-
277-
ret['total_installed_cost'] = (total_capex + construction_additional_cost).to('USD').magnitude
273+
ret['total_installed_cost'] = (total_capex * (1 + econ.inflrateconstruction.value)).to('USD').magnitude
278274

279275
opex_musd = econ.Coam.value
280276
ret['om_fixed'] = [opex_musd * 1e6]

src/geophires_x/Outputs.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,10 @@ def PrintOutputs(self, model: Model):
478478
f.write(f' Stimulation costs (for redrilling): {model.economics.Cstim.value:10.2f} ' + model.economics.Cstim.CurrentUnits.value + NL)
479479
if model.economics.RITCValue.value:
480480
f.write(f' {model.economics.RITCValue.display_name}: {-1*model.economics.RITCValue.value:10.2f} {model.economics.RITCValue.CurrentUnits.value}\n')
481-
f.write(f' {model.economics.CCap.display_name}: {model.economics.CCap.value:10.2f} {model.economics.CCap.CurrentUnits.value}\n')
481+
482+
capex_label = Outputs._field_label(econ.CCap.display_name, 50)
483+
f.write(f' {capex_label}{econ.CCap.value:10.2f} {econ.CCap.CurrentUnits.value}\n')
484+
482485
if model.economics.econmodel.value == EconomicModel.FCR:
483486
f.write(f' Annualized capital costs: {(model.economics.CCap.value*(1+model.economics.inflrateconstruction.value)*model.economics.FCR.value):10.2f} ' + model.economics.CCap.CurrentUnits.value + NL)
484487

tests/examples/Fervo_Project_Cape-4.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ Simulation Metadata
66
----------------------
77
GEOPHIRES Version: 3.9.11
88
Simulation Date: 2025-05-27
9-
Simulation Time: 09:32
10-
Calculation Time: 1.055 sec
9+
Simulation Time: 10:11
10+
Calculation Time: 1.040 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -104,7 +104,7 @@ Simulation Metadata
104104
Total surface equipment costs: 1601.68 MUSD
105105
Exploration costs: 30.00 MUSD
106106
Investment Tax Credit: -678.02 MUSD
107-
Total capital costs: 1582.04 MUSD
107+
Total CAPEX: 2373.06 MUSD
108108

109109

110110
***OPERATING AND MAINTENANCE COSTS (M$/yr)***

tests/examples/example_SAM-single-owner-PPA-2.out

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.9.10
8-
Simulation Date: 2025-05-23
9-
Simulation Time: 12:57
10-
Calculation Time: 0.879 sec
7+
GEOPHIRES Version: 3.9.11
8+
Simulation Date: 2025-05-27
9+
Simulation Time: 10:11
10+
Calculation Time: 0.908 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -102,7 +102,7 @@ Simulation Metadata
102102
Total surface equipment costs: 969.26 MUSD
103103
Exploration costs: 30.00 MUSD
104104
Investment Tax Credit: -459.83 MUSD
105-
Total capital costs: 1072.95 MUSD
105+
Total CAPEX: 1609.42 MUSD
106106

107107

108108
***OPERATING AND MAINTENANCE COSTS (M$/yr)***

tests/examples/example_SAM-single-owner-PPA.out

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
Simulation Metadata
66
----------------------
7-
GEOPHIRES Version: 3.9.10
8-
Simulation Date: 2025-05-23
9-
Simulation Time: 12:57
10-
Calculation Time: 1.052 sec
7+
GEOPHIRES Version: 3.9.11
8+
Simulation Date: 2025-05-27
9+
Simulation Time: 10:10
10+
Calculation Time: 1.053 sec
1111

1212
***SUMMARY OF RESULTS***
1313

@@ -104,7 +104,7 @@ Simulation Metadata
104104
Total surface equipment costs: 189.88 MUSD
105105
Exploration costs: 3.89 MUSD
106106
Investment Tax Credit: -75.60 MUSD
107-
Total capital costs: 176.40 MUSD
107+
Total CAPEX: 264.61 MUSD
108108

109109

110110
***OPERATING AND MAINTENANCE COSTS (M$/yr)***

0 commit comments

Comments
 (0)