diff --git a/.editorconfig b/.editorconfig index 586c7367..74879ed0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,3 +18,7 @@ indent_size = 2 [*.tsv] indent_style = tab + +[*.jinja] +trim_trailing_whitespace = false +indent_size = unset diff --git a/.gitignore b/.gitignore index 7ff373e9..d95adb7e 100644 --- a/.gitignore +++ b/.gitignore @@ -96,6 +96,7 @@ output/*/index.html # Sphinx/docs docs/_build +docs/temp.txt docs/reference/geophires-request.json docs/reference/parameters.rst docs/Fervo_Project_Cape-4.md diff --git a/docs/Fervo_Project_Cape-4.md.jinja b/docs/Fervo_Project_Cape-4.md.jinja index c94e8939..42f175be 100644 --- a/docs/Fervo_Project_Cape-4.md.jinja +++ b/docs/Fervo_Project_Cape-4.md.jinja @@ -3,7 +3,7 @@ ## Introduction The GEOPHIRES example `Fervo_Project_Cape-4` is a case study of a 500 MWe EGS project modeled -on Phase II of [Fervo Energy's Cape Station](https://capestation.com/). +on Phases I and II of [Fervo Energy's Cape Station](https://capestation.com/). Key case study results include LCOE = {{ '$' ~ lcoe_usd_per_mwh ~ '/MWh' }} and IRR = {{ irr_pct ~ '%' }}. @@ -20,9 +20,8 @@ engineering estimates. The model assumes the developer is a "fast follower": benefiting from the proof-of-concept established by Cape Station Phase I but operating without access to Fervo’s private supply chain or proprietary optimization data. -**Public Data Reliance:** Inputs utilize exact values for publicly available parameters, such as reservoir -density ([2800 kg/m³](https://doi.org/10.31223/X52X0B)) and geothermal -gradient ([72.23 ℃/km](https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf)). +**Public Data Reliance:** Inputs utilize exact values for publicly available parameters, such as geothermal +gradient and reservoir density. Where data is proprietary, values are inferred from public announcements or extrapolated from standard industry correlations. @@ -54,7 +53,7 @@ The results serve as reference points for what is achievable using current techn as customizable template for modeling other resources. Users can input local geologic data (gradient, rock properties) into this template to evaluate how a Cape Station-style design would perform in different geographies (e.g., Nevada vs. Utah vs. International). -Different plant sizes and performance targets can be modeled by adjusting the number of doublets, fractures per well, +Different plant sizes and performance targets can be modeled by adjusting the number of production wells, fractures per well, and other technical & engineering parameters. The model allows users to stress-test economic assumptions, such as the PPA price or Investment Tax Credit (ITC), to see how policy changes impact the feasibility of replicating this design elsewhere. @@ -63,63 +62,59 @@ how policy changes impact the feasibility of replicating this design elsewhere. The Inputs and Results tables document key assumptions, inputs, and a comparison of results with reference values. -Note that these are not the exhaustive set of inputs and results, which are available in source code and +Note that these are not the exhaustive sets of inputs and results, which are available in source code and the [web interface](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-4). ### Inputs -Exact values were used for publicly available technical and engineering parameters, such as reservoir -density ([2800 kg/m³](https://doi.org/10.31223/X52X0B)). -Some technical parameters were inferred from publicly available data, such as geothermal -gradient ([72.23 ℃/km](https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf)). -Other parameters were extrapolated or speculatively estimated based on plausibility and/or compatibility with known -results, such as number of doublets (well pairs). - See [Fervo_Project_Cape-4.txt](https://github.com/softwareengineerprogrammer/GEOPHIRES/blob/main/tests/examples/Fervo_Project_Cape-4.txt) in source code for the full set of inputs. +#### Reservoir Parameters + +{{ reservoir_parameters_table_md }} + +#### Well Bores Parameters + +{{ well_bores_parameters_table_md }} + +#### Surface Plant Parameters + +{{ surface_plant_parameters_table_md }} + +#### Construction Parameters + +{{ construction_parameters_table_md }} + + #### Economic Parameters -{# @formatter:off #} -| Parameter | Input Value(s) | Source | -|----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Economic Model | SAM Single Owner PPA | The SAM Single Owner PPA economic model is used to calculate financial results including LCOE, NPV, IRR, and pro-forma cash flow analysis. See [GEOPHIRES documentation of SAM Economic Models](https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html) for details on how System Advisor Model financial models are integrated into GEOPHIRES. | -| PPA Price | Starting at {{ starting_ppa_price_cents_per_kwh ~ '¢/kWh' }}, escalating to {{ year_10_ppa_price_cents_per_kwh }}¢/kWh by project year 11. | Aligns with Geysers - Sacramento pricing in 2024b ATB (NREL, 2025). See Sensitivity Analysis for effect of different prices on results. | -| Inflation Rate | 2.7% | US inflation rate as of December 2025 | -| Investment Tax Credit Rate (ITC) | 30% | Geothermal Drilling & Completions Apprenticeship Program ensures compliance with ITC labor requirements (Southern Utah University, 2024). | -| Discount Rate | 12% | Typical discount rates for high-risk projects may be 12–15% | -| Inflated Bond Interest Rate | 8% | Higher than typical debt annual interest rate | -| Inflated Bond Interest Rate During Construction | 10% | Higher interest rate during construction to account for increased risk of default | -| Fraction of Investment in Bonds (percent debt vs. equity) | 60% | Approximate remaining percentage of CAPEX with $1 billion sponsor equity per Matson, 2024. Note that this source says that Fervo ultimately wants to target "15% sponsor equity, 15% bridge loan, and 70% construction to term loans", but this case study does not attempt to model that capital structure. | -| WACC | {{ wacc_pct ~ '%' }} | Fervo's target goal is to eventually achieve a "Solar Standard" WACC of 8.3% (Matson, 2024). | -| Exploration Capital Cost | {{ '$' ~ exploration_cost_musd ~ 'M' }} | Equivalent to 2024b ATB NF-EGS conservative scenario exploration assumption of 5 full-size wells (NREL, 2025), plus $1M for geophysical and field work, plus 15% contingency, plus 12% indirect costs. | -| Well Drilling Cost Correlation & Adjustment Factor | {Vertical large baseline correlation} × {adjustment factor = 0.9} | NREL, 2025; Akindipe & Witter, 2025. Note: Fervo claims lower drilling costs of <$4M/well (Latimer, 2025), which would be equivalent to an adjustment factor of 0.8. | -| Reservoir Stimulation Capital Cost per Well | {{ '$' ~ stim_costs_per_well_musd ~ 'M' }} (all-in cost, including 5% indirect costs and 15% contingency) | The all-in cost is based on a $4M baseline stimulation cost, calibrated from per-stage costs of high-intensity U.S. shale wells (Baytex Energy, 2024; Quantum Proppant Technologies, 2020), which are the closest technological analogue for multi-stage EGS (Gradl, 2018). Costs are also driven by the requirement for high-strength ceramic proppant rather than standard sand, which would crush or chemically degrade (diagenesis) over a 30-year lifecycle at 200℃ (Ko et al., 2023; Shiozawa & McClure, 2014) and the premium for ultra-high-temperature (HT) downhole tools. | -| Capital Cost for Power Plant for Electricity Generation | $1900/kW | US DOE, 2021. | -{# @formatter:on #} +{{ economics_parameters_table_md }} + +### Calibration with Fervo-implemented Field Design -#### Technical & Engineering Parameters +[Designing the Record-Breaking Enhanced Geothermal System at Project Cape](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf) (Singh et al., 2025) +describes reservoir modeling (ResFrac) that informed the Cape Station field implementation. +An equivalent GEOPHIRES simulation was run using the case study's reservoir engineering parameters, with the following modifications to align with Singh et al.'s modeling scenario: + +{{ reservoir_engineering_reference_simulation_params_table_md }} + +The following table compares the average production temperature profile from the "700 ft bench spacing" scenario in Singh et al. with the GEOPHIRES simulation. {# @formatter:off #} -| Parameter | Input Value(s) | Source | -|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Gradient | {{ gradient_1_degc_per_km ~ '℃/km' }} | 200℃ at 8500 ft depth (Fercho et al., 2024), 228.89℃ at 9824 ft (Norbeck et al., 2024). | -| Construction Years | {{ construction_yrs }} | Ground broken in 2023 (Fervo Energy, 2023). Expected to reach full scale production in 2028 (Fervo Energy, 2025). See [GEOPHIRES documentation](SAM-EM_Multiple-Construction-Years.html) for details on how construction years affect CAPEX, IRR, and other calculations. | -| Plant Lifetime | {{ plant_lifetime_yrs }} years | 30-year well life per Geothermal Mythbusting: Water Use and Impacts (Fervo Energy, 2025). | -| Well diameter | 9⅝ inches (OD); 8½ inches (ID) | 9⅝" is the next standard size up from 7", implied by announcement of "increasing casing diameter" (Fervo Energy, 2025). | -| Flow Rate per Production Well | {{ flowrate_kg_per_sec_per_well }} kg/s | Fercho et al, 2025 models reservoir performance using 100 kg/s per well. The maximum flow rate achieved at Cape Station was 107 kg/s (Fervo Energy, 2024). The announced increased casing diameter implies higher flow rates. | -| Number of Doublets | {{ number_of_doublets }} | Each well pair (doublet) is expected to initially produce up to 11 MWe (gross) at a 107 kg/s flow rate. A well pair producing 11 MWe gross with ~10% parasitic loss produces approximately 10 MWe net. | -| Number of Fractures per Well | 200 | The model assumes a "High-Intensity" stimulation design utilizing 25 geometric stages with 8 clusters per stage (Extreme Limited Entry) (Fervo Energy, 2023). | -| Fracture Separation | {{ fracture_separation_m }} m | Based on number of fractures per lateral and lateral length | -| Fracture Geometry | {{ fracture_height_m }} m diameter (Circular) | Approximates ellipsoidal fracture with 228 meter height and 152 meter length | -| Reservoir Volume | {{ reservoir_volume_m3 }} m³ | Calculated from fracture area × fracture separation × number of fractures per well × number of wells | -| Water Loss Rate | 15% | Water loss rate is conservatively estimated to be between 10 and 20%. Other estimates and some simulations may suggest a significantly lower water loss rate than this conservative estimate. See [Geothermal Mythbusting: Water Use and Impacts](https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/) (Fervo Energy, 2025). | -| Maximum Drawdown | {{ maximum_drawdown_pct ~ '%' }} | This value represents the drop in production temperature compared to the initial temperature that is allowed before the wellfield is redrilled. It is tuned to keep minimum net electricity generation over the project lifetime ≥500 MWe. | -| Productivity Index | {{ productivity_index_kg_per_sec_per_bar }} kg/s/bar | NREL ATB conservative scenario. Yields ~10% initial pumping power/net installed power. | -| Injection Temperature | {{ injection_temperature_degc ~ '℃' }} | Calibrated with GEOPHIRES model-calculated reinjection temperature (Beckers & McCabe, 2019). Close to upper bound of Project Red injection temperatures (75–125℉; 23.89–51.67℃) (Norbeck & Latimer, 2023). | -| Ambient Temperature | {{ ambient_temperature_degc ~ '℃' }} | Average annual temperature of Milford, Utah (NCEI). Note that this value affects heat to power conversion efficiency. The effects of hourly and seasonal ambient temperature fluctuations on efficiency and power generation are not modeled in this version of the case study. | +| Fervo-implemented Design Simulation (Fig. 18.) | Case Study Equivalent Simulation | +|---|---| +| | | {# @formatter:on #} +While the initial and final (Year 15) temperatures are consistent, the production curves exhibit distinct profiles due to the different modeling approaches: + +1. Reference Simulation (Left): The Singh et al. (2025) curve reflects a fully coupled numerical simulation (ResFrac) that accounts for complex fracture heterogeneity, inter-well interference, and variable flow paths. The gradual decline starting around Year 3 indicates thermal dispersion, where cold injection fluid mixes with hot reservoir fluid along faster flow paths earlier in the project life. +1. GEOPHIRES Simulation (Right): The GEOPHIRES result utilizes the Gringarten (1975) analytical solution for flow in fractured rock. This model assumes a uniform thermal sweep across an idealized fracture surface. Consequently, it maintains a flat, maximum production temperature for a longer duration until the cold front reaches the production well (thermal breakthrough), resulting in a sharper, later decline. + +Despite these structural differences, the comparison validates the basis for the case study's reservoir engineering parameters, as the aggregate heat extraction and year-15 endpoint align closely with the numerical simulation baseline. + + ## Results See [Fervo_Project_Cape-4.out](https://github.com/softwareengineerprogrammer/GEOPHIRES/blob/main/tests/examples/Fervo_Project_Cape-4.out) @@ -139,10 +134,11 @@ in source code for the complete results. {# @formatter:off #} | Metric | Result Value | Reference Value(s) | Reference Source | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|--------------------------------------------------|------------------| -| Exploration Costs | {{ '$' ~ exploration_cost_musd ~ 'M' }} | {{ '$' ~ drilling_costs_per_well_musd*5 ~ 'M' }} (2024b ATB NF-EGS conservative scenario exploration assumption of 5 full-size wells. Case study result conservatively includes additional costs for geophysical survey, indirect costs, and contingency.) | NREL, 2025. | +| WACC | {{ wacc_pct ~ '%' }} | 8.3% | Fervo's target goal is to eventually achieve a "Solar Standard" WACC of 8.3% (Matson, 2024). | +| Exploration Costs | {{ '$' ~ exploration_cost_musd ~ 'M' }} | {{ '$' ~ drilling_costs_per_well_musd*5 ~ 'M' }} | 2024b ATB NF-EGS conservative scenario exploration assumption of 5 full-size wells (NREL, 2025). Case study result conservatively includes additional costs for geophysical survey, indirect costs, and contingency. | | Well Drilling and Completion Costs | {{ '$' ~ drilling_costs_musd ~ 'M' }} total ({{ '$' ~ drilling_costs_per_well_musd ~ 'M/well' }}) | $<4M/well | Latimer, 2025. | | Stimulation Costs | {{ '$' ~ stim_costs_musd ~ 'M' }} total ({{ '$' ~ stim_costs_per_well_musd ~ 'M/well' }}) | $4.65M/well (based on 46%:54% drilling:stimulation cost ratio) | Yusifov & Enriquez, 2025. | -| Surface Power Plant Costs | {{ '$' ~ surface_power_plant_costs_gusd ~ 'B' }} | Calculated with GEOPHIRES [built-in power plant cost correlation](Theoretical-Basis-for-GEOPHIRES.html#cost-correlations-capital-and-o-m); pricing information not publicly available for Turboden Gen2 ORC units. | Turboden, 2025. | +| Surface Power Plant Costs | {{ '$' ~ surface_power_plant_costs_gusd ~ 'B' }} | | | | Field Gathering System Costs | {{ '$' ~ field_gathering_cost_musd ~ 'M' }} ({{ field_gathering_cost_pct_occ ~ '%' }} of OCC) | 2% of OCC | Matson, 2024. | | Overnight Capital Cost | {{ '$' ~ occ_gusd ~ 'B' }} | | | | Total CAPEX | {{ '$' ~ total_capex_gusd ~ 'B' }} (OCC + interest and inflation during construction) | | | @@ -156,15 +152,21 @@ in source code for the complete results. | Metric | Result Value | Reference Value(s) | Reference Source | |--------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---| | Total fracture surface area per well | {{ total_fracture_surface_area_per_well_mm2 }}×10⁶ m² ({{ total_fracture_surface_area_per_well_mft2 }} million ft²) | Project Red: 2.787×10⁶ m² (30 million ft²) | Greater fracture surface area expected than Project Red (Fercho et al, 2025). | -| Bottom-hole Temperature (BHT) | {{ bht_temp_degc ~ '℃' }} | 200℃ | Fercho et al., 2024. | -| Average Production Temperature | {{ average_production_temperature_degc }} ℃ | 204℃, 190.6–198.6℃ (optimal plant operating range) | Trent, 2024; Norbeck et al, 2024. | +| Reservoir Volume | {{ reservoir_volume_m3 }} m³ | | Calculated from fracture area × fracture separation × number of fractures per well × number of wells | +| Bottom-hole Temperature (BHT) | {{ bht_temp_degc ~ '℃' }} | 200–241℃ | Fercho et al., 2024; Singh et al., 2025. | +| Initial Production Temperature | {{ initial_production_temperature_degc ~ '℃' }} | 196–208℃ | Approximate range of initial production temperatures between shallower and deeper producers (Singh et al., 2025).| +| Average Production Temperature | {{ average_production_temperature_degc ~ '℃' }} | 199–209℃ | Approximate range of thermally conditioned production temperatures between shallower and deeper producers (Singh et al., 2025). | +| Maximum Total Electricity Generation | {{ max_total_generation_mwe }} MW | 600 MW (10 × 60 MWe Gen 2 ORCs) | Actual maximum total (gross) generation will be constrained by the combined nameplate capacity of modular power plants which are not individually modeled in this case study. A total of 8 60 MWe Gen 2 ORCs have been announced for Phase II; 3 from Turboden and 5 from Baker Hughes. This equates to 480 MW gross capacity for Phase II's 400 MW net capacity. An equivalent SOAK 500 MW project would therefore require 10 Gen 2 ORC units (Turboden, 2025; Jacobs, 2025). | | Minimum Net Electricity Generation | {{ min_net_generation_mwe }} MW | 500 MW | The announced upsizing to 500 MWe (Fervo Energy, 2025) is interpreted to mean that Cape Station's net electricity generation does not fall below 500 MWe. | -| Average Net Electricity Generation | {{ avg_net_generation_mwe }} MW | | | +| 2-year Average Net Power Production per Production Well | {{ two_year_avg_net_power_mwe_per_production_well }} MW. (Note that net power decline is not observed until approximately Year 10 due to thermal conditioning of the production wellbores predicted by the Ramey wellbore heat transmission model.) | 7.6–11.5 MW | Figures 4 and 12 (Singh et al., 2025). | +| Injection Pumping Parasitic Load (Average Pumping Power/Average Total Electricity Generation) | {{ parasitic_loss_pct ~ '%' }} | Upper bound: 16.7% total on-site consumption (including injection pumping power) | Procurement of 480 MW of Gen 2 ORC units for 400 MW net capacity in Phase II allows for up to 80 MW on-site consumption (16.7%). | +| Average Net Electricity Generation | {{ avg_net_generation_mwe }} MW | | | | Maximum Net Electricity Generation | {{ max_net_generation_mwe}} MW | | | -| Maximum Total Electricity Generation | {{ max_total_generation_mwe }} MW | Actual maximum total (gross) generation will be constrained by the combined nameplate capacity of modular power plants which are not individually modeled in this case study. Turboden has announced delivery of three 60 MWe ORC units; 10 such units would be required to support maximum total generation between 540 and 600 MWe. | Turboden, 2025. | | Number of times redrilling | {{ number_of_times_redrilling }} | 2–5 | Redrilling expected to be required within 5–10 years of project start | +| Total wells drilled over project lifetime | {{ total_wells_including_redrilling }} | 320 total wells permitted by BLM | BLM, 2024. | {# @formatter:on #} + ### Sensitivity Analysis The following charts show the sensitivity of key metrics to various inputs. @@ -290,10 +292,14 @@ https://pangea.stanford.edu/ERE/pdf/IGAstandard/SGW/2018/Gradl.pdf Horne, R., Genter, A., McClure, M. et al. (2025) Enhanced geothermal systems for clean firm energy generation. Nat. Rev. Clean Technol. 1, 148–160. https://doi.org/10.1038/s44359-024-00019-9 -Jacobs, Trent. (2024, September 16). Fervo and FORGE Report Breakthrough Test Results, Signaling More Progress for +Jacobs, Trent. (2024, September 16). Fervo and FORGE Report Breakthrough Test Results, Signaling More Progress for Enhanced Geothermal. https://jpt.spe.org/fervo-and-forge-report-breakthrough-test-results-signaling-more-progress-for-enhanced-geothermal +Jacobs, Trent. (2025, September 5). Baker Hughes Nabs Award for Next Phase of Fervo Energy's Geothermal Power Plant in +Utah. +https://jpt.spe.org/baker-hughes-nabs-award-for-next-phase-of-fervo-energygeothermal-power-plant-in-utah + Ko, S., Ghassemi, A., & Uddenberg, M. (2023). Selection and Testing of Proppants for EGS. Proceedings, 48th Workshop on Geothermal Reservoir Engineering, Stanford University, Stanford, California. https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2023/Ko.pdf @@ -330,14 +336,32 @@ Oil. https://quantumprot.com/uploads/images/2b8583e8ce8038681a19d5ad1314e204.pdf Shiozawa, S., & McClure, M. (2014). EGS Designs with Horizontal Wells, Multiple Stages, and Proppant. ResFrac. https://www.resfrac.com/wp-content/uploads/2024/07/Shiozawa.pdf +Singh, A., Galban, G., McClure, M. (2025, June 9). +Proceedings of the 2025 Unconventional Resources Technology Conference. +https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf + Southern Utah University. (2024, October 23). Fervo Energy, Southern Utah University, and Elemental Impact Launch Geothermal Drilling & Completions Apprenticeship Program. https://www.suu.edu/news/2024/10/geothermal-energy-joint-campaign.html -Turboden. (2025, October 2). Turboden selected to deliver 180 MW of Fervo’s Gen 2 ORC Power Plants at Cape Station in Utah. https://www.turboden.com/company/media/press/press-releases/4881/turboden-selected-to-deliver-180-mw-of-fervos-gen-2-orc-power-plants-at-cape-station-in-utah +Turboden. (2025, October 2). Turboden selected to deliver 180 MW of Fervo’s Gen 2 ORC Power Plants at Cape Station in +Utah. https://www.turboden.com/company/media/press/press-releases/4881/turboden-selected-to-deliver-180-mw-of-fervos-gen-2-orc-power-plants-at-cape-station-in-utah + +U.S. Department of the Interior Bureau of Land Management. (2024, October). +Finding of No Significant Impact and Decision Record DOI-BLM-UT-C010-2024-0018-EA. +https://eplanning.blm.gov/public_projects/2033002/200625761/20120795/251020775/DOI-BLM-UT-C010-2024-0018-EA_FONSI_DR_%20Fervo%20EA_signed.pdf US DOE. (2021). Combined Heat and Power Technology Fact Sheet Series: Waste Heat to Power. https://betterbuildingssolutioncenter.energy.gov/sites/default/files/attachments/Waste_Heat_to_Power_Fact_Sheet.pdf +Xing, P., England, K., Moore, J., McLennan, J. (2025, February 10). +Analysis of the 2024 Circulation Tests at Utah FORGE and the Response of Fiber Optic Sensing +Data. +https://pangea.stanford.edu/ERE/pdf/IGAstandard/SGW/2025/Xing2.pdf + +Yearsley, E., Kombrink, H. (2024, November 6). +A critical look at Fervo dataset suggests lower output. +https://geoexpro.com/a-critical-look-at-fervo-dataset-suggests-lower-output/ + Yusifov, M., & Enriquez, N. (2025, July). From Core to Code: Powering the Al Revolution with Geothermal Energy. Project InnerSpace. https://projectinnerspace.org/resources/Powering-the-AI-Revolution.pdf diff --git a/docs/_images/fervo_project_cape-4-net-power-production.png b/docs/_images/fervo_project_cape-4-net-power-production.png new file mode 100644 index 00000000..5297f55e Binary files /dev/null and b/docs/_images/fervo_project_cape-4-net-power-production.png differ diff --git a/docs/_images/fervo_project_cape-4-production-temperature.png b/docs/_images/fervo_project_cape-4-production-temperature.png new file mode 100644 index 00000000..4ede93b7 Binary files /dev/null and b/docs/_images/fervo_project_cape-4-production-temperature.png differ diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.png b/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.png index e692f485..1321e0fe 100644 Binary files a/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.png and b/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.png differ diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.svg b/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.svg index c4aa154b..c775743a 100644 --- a/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.svg +++ b/docs/_images/fervo_project_cape-4-sensitivity-analysis-irr.svg @@ -6,7 +6,7 @@ - 2026-01-06T09:23:36.880348 + 2026-01-12T16:10:52.508832 image/svg+xml @@ -38,30 +38,30 @@ z " style="fill: #ffffff"/> - + - + - - + - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - - + + + - + - + + + + + + + + + + + + + + + + + + - + - + @@ -372,8 +392,8 @@ z - - + + @@ -726,8 +746,8 @@ z - - + + @@ -953,8 +973,8 @@ z - - + + @@ -1035,33 +1055,9 @@ z - + - - + @@ -1132,8 +1128,8 @@ z - - + + @@ -1171,7 +1167,7 @@ z - + + - + @@ -1217,8 +1223,8 @@ z - - + + @@ -1330,8 +1336,8 @@ z - - + + @@ -1434,8 +1440,8 @@ z - - + + @@ -1507,19 +1513,19 @@ L 777.635625 97.55355 " style="fill: none; stroke: #aaaaaa; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -1528,10 +1534,10 @@ z - - - - + + + + - - - + - + - - - - + + + + - + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -1709,19 +1744,19 @@ z - - + +" clip-path="url(#paa2f7544c4)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -1729,88 +1764,80 @@ z - - - - + + + + - + - - - - + + + + + - - - - - - - - - + + + + + + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - - + - - + + - + @@ -1896,19 +1902,19 @@ z - - + +" clip-path="url(#paa2f7544c4)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + - + @@ -2040,19 +2071,45 @@ z - - + +" clip-path="url(#paa2f7544c4)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + + + + @@ -2064,78 +2121,88 @@ z - - - - - - - + + + + - + - - - - - - + + + + + + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2152,55 +2219,45 @@ z - - - - - + + + + + - - - - - - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#paa2f7544c4)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - + - + @@ -2210,10 +2267,10 @@ z - - + + - + @@ -2222,36 +2279,36 @@ z - - - - - - + + + + + + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - + @@ -2260,31 +2317,31 @@ z - - - + + + - + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -2298,44 +2355,67 @@ z - - - - + + + + + + + - + - - - - - - + + + + + + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -2348,41 +2428,41 @@ z - - - + + + - + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#paa2f7544c4)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - + + + + - + - + - - - - + + + + - + - + - - + +" clip-path="url(#paa2f7544c4)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2456,117 +2572,103 @@ z - - - - + + + + - + - + - - - - - + + + + + - + - - - + + +" clip-path="url(#paa2f7544c4)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + +" clip-path="url(#paa2f7544c4)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - - - + + + + + - + - - - + + +" clip-path="url(#paa2f7544c4)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - - - - - - - - - - - - - - - - - + + + + + - + - + - + - - - + + - - + + - @@ -2954,16 +3034,16 @@ z - + - + - + diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.png b/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.png index 0af6c506..2e173f19 100644 Binary files a/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.png and b/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.png differ diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.svg b/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.svg index 02fc92d8..86a34a22 100644 --- a/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.svg +++ b/docs/_images/fervo_project_cape-4-sensitivity-analysis-lcoe.svg @@ -6,7 +6,7 @@ - 2026-01-06T09:23:37.855751 + 2026-01-12T16:10:53.209988 image/svg+xml @@ -38,30 +38,30 @@ z " style="fill: #ffffff"/> - + - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1204,7 +1204,7 @@ z - + + - + @@ -1562,49 +1572,39 @@ L 777.635625 97.55355 " style="fill: none; stroke: #aaaaaa; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + - - - + + + - - + @@ -1649,19 +1649,19 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -1669,11 +1669,161 @@ z + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -1848,172 +1983,10 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -2030,12 +2003,44 @@ z - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2045,23 +2050,23 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + + - + @@ -2070,12 +2075,12 @@ z - - - - + + + + - + @@ -2085,33 +2090,33 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + + - + - + @@ -2122,9 +2127,9 @@ z - - - + + + - - + @@ -2186,12 +2159,12 @@ z - - - - + + + + - + @@ -2201,19 +2174,19 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -2226,12 +2199,12 @@ z - - - - + + + + - + @@ -2241,19 +2214,19 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -2268,34 +2241,13 @@ z - - - - - - + + + - + @@ -2305,12 +2257,12 @@ z - - - - + + + + - + @@ -2320,58 +2272,29 @@ z - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#p6e0ea0283e)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - - - - - - - - - - - - - - - - - + + + - + @@ -2432,13 +2355,82 @@ z + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2447,20 +2439,20 @@ z - - - + + +" clip-path="url(#p6e0ea0283e)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -2470,10 +2462,10 @@ z - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + +" clip-path="url(#p6e0ea0283e)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - + + - - - - + @@ -2603,11 +2582,11 @@ z - - - - - + + + + + @@ -2618,24 +2597,24 @@ z - - - + + +" clip-path="url(#p6e0ea0283e)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - + @@ -2644,40 +2623,40 @@ z - - + + - + - - - + + + - - + + - + - - + + - + @@ -2690,13 +2669,13 @@ z - - - - - + + + + + - + @@ -2705,9 +2684,9 @@ z - + - + - - - + + - - + + + @@ -3133,9 +3131,9 @@ z - + - + @@ -3146,7 +3144,7 @@ z - + diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.png b/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.png index 230a0956..bfdb8c0a 100644 Binary files a/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.png and b/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.png differ diff --git a/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.svg b/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.svg index b986bfc0..25f42d33 100644 --- a/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.svg +++ b/docs/_images/fervo_project_cape-4-sensitivity-analysis-project_npv.svg @@ -6,7 +6,7 @@ - 2026-01-06T09:23:38.311060 + 2026-01-12T16:10:54.967504 image/svg+xml @@ -38,30 +38,30 @@ z " style="fill: #ffffff"/> - + - + - - + - + - + - + - + - + - + - + - + - + - + @@ -205,18 +205,18 @@ L 627.224362 97.55355 - + - + - + @@ -1117,7 +1117,7 @@ z - + - + @@ -1222,7 +1222,7 @@ z - + + - + @@ -1560,19 +1570,19 @@ L 777.635625 97.55355 " style="fill: none; stroke: #aaaaaa; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -1582,9 +1592,9 @@ z - - - + + + + + - - - - + + - + - - - - - - - - - - - - - + + + + + + + + + - - + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + + - + - - + + - + - + - + @@ -1892,19 +1931,19 @@ z - - + +" clip-path="url(#paff05a9722)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -1913,42 +1952,10 @@ z - - - + + + - - - - - + + + - + - - - + + + - - - + + + - + - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + + - + - + - + - - - - + @@ -2097,19 +2053,19 @@ z - - + +" clip-path="url(#paff05a9722)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + - - - + + + + + + - - - - - - + + + + - - + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + + - + @@ -2191,9 +2154,9 @@ z - + - + @@ -2206,19 +2169,19 @@ z - - + +" clip-path="url(#paff05a9722)" style="fill: #84d1a8; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - + - + @@ -2231,48 +2194,92 @@ z - - - + + + + + + - - + + - + - - - + + + - - - + + + - + - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> + + + + + - + - + @@ -2289,107 +2296,47 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - + - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#paff05a9722)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - + - + @@ -2399,53 +2346,53 @@ z - - - - + + + + - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + - - + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - - + + + + - + @@ -2454,33 +2401,33 @@ z - - - + + + - - - + + + - + - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -2494,49 +2441,49 @@ z - - - - + + + + - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + - - + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + @@ -2549,43 +2496,43 @@ z - - - + + + - - + + - + - - + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + +" clip-path="url(#paff05a9722)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - + + + + - - - + + + - + - - - - + + + + - - - - - - + + + + + - - + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2664,127 +2649,128 @@ z - - - - + + + + - - + + - + - - - - + + + + - - - + + + - + - - - + + +" clip-path="url(#paff05a9722)" style="fill: #808080; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - - + + +" clip-path="url(#paff05a9722)" style="fill: #b0b0b0; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - - - - - - - + + + + + + + + + + - - - + + +" clip-path="url(#paff05a9722)" style="fill: #4ab67d; stroke: #ffffff; stroke-width: 0.5; stroke-linejoin: miter"/> - - + + - + - - - - + + + + - + - + - - - - + + + + - - - + + + - + - + - + - - - + + - - + + - - + + - + - + diff --git a/docs/_images/singh-et-al-2025_wht-700-ft-bench-spacing.png b/docs/_images/singh-et-al-2025_wht-700-ft-bench-spacing.png new file mode 100644 index 00000000..d027727a Binary files /dev/null and b/docs/_images/singh-et-al-2025_wht-700-ft-bench-spacing.png differ diff --git a/docs/_images/singh_et_al_base_simulation-net-power-production.png b/docs/_images/singh_et_al_base_simulation-net-power-production.png new file mode 100644 index 00000000..fc3b0a61 Binary files /dev/null and b/docs/_images/singh_et_al_base_simulation-net-power-production.png differ diff --git a/docs/_images/singh_et_al_base_simulation-production-temperature.png b/docs/_images/singh_et_al_base_simulation-production-temperature.png new file mode 100644 index 00000000..ffebf637 Binary files /dev/null and b/docs/_images/singh_et_al_base_simulation-production-temperature.png differ diff --git a/docs/generate_fervo_project_cape_4_md.py b/docs/generate_fervo_project_cape_4_md.py deleted file mode 100755 index eee3aad3..00000000 --- a/docs/generate_fervo_project_cape_4_md.py +++ /dev/null @@ -1,233 +0,0 @@ -#!python -""" -Script to generate Fervo_Project_Cape-4.md from its jinja template. -This ensures the markdown documentation stays in sync with actual GEOPHIRES results. -""" - -from __future__ import annotations - -import sys -from pathlib import Path -from typing import Any - -from jinja2 import Environment -from jinja2 import FileSystemLoader -from pint.facets.plain import PlainQuantity - -from geophires_x.GeoPHIRESUtils import sig_figs -from geophires_x_client import GeophiresInputParameters -from geophires_x_client import GeophiresXResult -from geophires_x_client import ImmutableGeophiresInputParameters - -# Add project root to path to import GEOPHIRES modules -project_root = Path(__file__).parent.parent -sys.path.insert(0, str(project_root / 'src')) - - -def get_input_parameter_values(input_params: GeophiresInputParameters, result: GeophiresXResult) -> dict[str, Any]: - print('Extracting input parameter values...') - - def get_input_parameters( - params: GeophiresInputParameters, include_parameter_comments: bool = False, include_line_comments: bool = False - ) -> dict[str, Any]: - comment_idx = 0 - ret: dict[str, Any] = {} - for line in params.as_text().split('\n'): - parts = line.strip().split(', ') # TODO generalize for array-type params - field = parts[0].strip() - if len(parts) >= 2 and not field.startswith('#'): - fieldValue = parts[1].strip() - if include_parameter_comments and len(parts) > 2: - fieldValue += ', ' + (', '.join(parts[2:])).strip() - ret[field] = fieldValue.strip() - - if include_line_comments and field.startswith('#'): - ret[f'_COMMENT-{comment_idx}'] = line.strip() - comment_idx += 1 - - # TODO preserve newlines - - return ret - - params = get_input_parameters(input_params) - r: dict[str, dict[str, Any]] = result.result - - exploration_cost_musd = _q(r['CAPITAL COSTS (M$)']['Exploration costs']).to('MUSD').magnitude - assert exploration_cost_musd == float( - params['Exploration Capital Cost'] - ), 'Exploration cost mismatch between parameters and result' - - return { - 'starting_ppa_price_cents_per_kwh': PlainQuantity(float(params['Starting Electricity Sale Price']), 'USD / kWh') - .to('cents / kWh') - .magnitude, - 'year_10_ppa_price_cents_per_kwh': 10, # TODO read from result cash flow table - 'construction_yrs': params['Construction Years'], - 'exploration_cost_musd': round(sig_figs(exploration_cost_musd, 2)), - 'plant_lifetime_yrs': params['Plant Lifetime'], - 'wacc_pct': sig_figs(r['ECONOMIC PARAMETERS']['WACC']['value'], 3), - 'gradient_1_degc_per_km': params['Gradient 1'], - 'flowrate_kg_per_sec_per_well': round( - _q(r['SUMMARY OF RESULTS']['Flowrate per production well']).to('kg / sec').magnitude - ), - 'injection_temperature_degc': params['Injection Temperature'], - 'fracture_separation_m': sig_figs(float(params['Fracture Separation']), 2), - 'fracture_height_m': params['Fracture Height'], - 'productivity_index_kg_per_sec_per_bar': params['Productivity Index'], - 'number_of_doublets': params['Number of Doublets'], - 'reservoir_volume_m3': f"{r['RESERVOIR PARAMETERS']['Reservoir volume']['value']:,}", - 'ambient_temperature_degc': params['Ambient Temperature'], - 'maximum_drawdown_pct': sig_figs(float(params['Maximum Drawdown']) * 100.0, 2), - } - - -def _q(d: dict[str, Any]) -> PlainQuantity: - return PlainQuantity(d['value'], d['unit']) - - -def get_result_values(result: GeophiresXResult) -> dict[str, Any]: - print('Extracting result values...') - - r: dict[str, dict[str, Any]] = result.result - - total_capex_q: PlainQuantity = _q(r['CAPITAL COSTS (M$)']['Total CAPEX']) - - surf_equip_sim = r['SURFACE EQUIPMENT SIMULATION RESULTS'] - min_net_generation_mwe = surf_equip_sim['Minimum Net Electricity Generation']['value'] - avg_net_generation_mwe = surf_equip_sim['Average Net Electricity Generation']['value'] - max_net_generation_mwe = surf_equip_sim['Maximum Net Electricity Generation']['value'] - - total_fracture_surface_area_per_well_m2 = _total_fracture_surface_area_per_well_m2(result) - - occ_q = _q(r['CAPITAL COSTS (M$)']['Overnight Capital Cost']) - - field_gathering_cost_musd = _q(r['CAPITAL COSTS (M$)']['Field gathering system costs']).to('MUSD').magnitude - field_gathering_cost_pct_occ = field_gathering_cost_musd / occ_q.to('MUSD').magnitude * 100.0 - - return { - # Economic Results - 'lcoe_usd_per_mwh': sig_figs( - _q(r['SUMMARY OF RESULTS']['Electricity breakeven price']).to('USD / MWh').magnitude, 3 - ), - 'irr_pct': sig_figs(r['ECONOMIC PARAMETERS']['After-tax IRR']['value'], 3), - 'npv_musd': sig_figs(r['ECONOMIC PARAMETERS']['Project NPV']['value'], 3), - # Capital Costs - 'drilling_costs_musd': round(sig_figs(_drilling_costs_musd(result), 3)), - 'drilling_costs_per_well_musd': sig_figs(_drilling_costs_per_well_musd(result), 3), - 'stim_costs_musd': round(sig_figs(_stim_costs_musd(result), 3)), - 'stim_costs_per_well_musd': sig_figs(_stim_costs_per_well_musd(result), 3), - 'surface_power_plant_costs_gusd': sig_figs( - _q(r['CAPITAL COSTS (M$)']['Surface power plant costs']).to('GUSD').magnitude, 3 - ), - 'field_gathering_cost_musd': round(sig_figs(field_gathering_cost_musd, 3)), - 'field_gathering_cost_pct_occ': round(sig_figs(field_gathering_cost_pct_occ, 1)), - 'occ_gusd': sig_figs(occ_q.to('GUSD').magnitude, 3), - 'total_capex_gusd': sig_figs(total_capex_q.to('GUSD').magnitude, 3), - 'capex_usd_per_kw': round( - sig_figs((total_capex_q / PlainQuantity(max_net_generation_mwe, 'MW')).to('USD / kW').magnitude, 2) - ), - # Technical & Engineering Results - 'bht_temp_degc': r['RESERVOIR PARAMETERS']['Bottom-hole temperature']['value'], - 'min_net_generation_mwe': round(sig_figs(min_net_generation_mwe, 3)), - 'avg_net_generation_mwe': round(sig_figs(avg_net_generation_mwe, 3)), - 'max_net_generation_mwe': round(sig_figs(max_net_generation_mwe, 3)), - 'max_total_generation_mwe': round( - sig_figs(r['SURFACE EQUIPMENT SIMULATION RESULTS']['Maximum Total Electricity Generation']['value'], 3) - ), - 'number_of_times_redrilling': r['ENGINEERING PARAMETERS']['Number of times redrilling']['value'], - 'average_production_temperature_degc': round( - sig_figs(r['RESERVOIR SIMULATION RESULTS']['Average Production Temperature']['value'], 3) - ), - 'total_fracture_surface_area_per_well_mm2': sig_figs(total_fracture_surface_area_per_well_m2 / 1e6, 2), - 'total_fracture_surface_area_per_well_mft2': round( - sig_figs( - PlainQuantity(total_fracture_surface_area_per_well_m2, 'm ** 2').to('foot ** 2').magnitude * 1e-6, 2 - ) - ), - # TODO port all input and result values here instead of hardcoding them in the template - } - - -def _number_of_wells(result: GeophiresXResult) -> int: - r: dict[str, dict[str, Any]] = result.result - - number_of_wells = ( - r['SUMMARY OF RESULTS']['Number of injection wells']['value'] - + r['SUMMARY OF RESULTS']['Number of production wells']['value'] - ) - - return number_of_wells - - -def _drilling_costs_musd(result: GeophiresXResult) -> float: - r: dict[str, dict[str, Any]] = result.result - - return _q(r['CAPITAL COSTS (M$)']['Drilling and completion costs']).to('MUSD').magnitude - - -def _drilling_costs_per_well_musd(result: GeophiresXResult) -> float: - return _drilling_costs_musd(result) / _number_of_wells(result) - - -def _stim_costs_per_well_musd(result: GeophiresXResult) -> float: - stim_costs_per_well_musd = _stim_costs_musd(result) / _number_of_wells(result) - return stim_costs_per_well_musd - - -def _stim_costs_musd(result: GeophiresXResult) -> float: - r: dict[str, dict[str, Any]] = result.result - - stim_costs_musd = _q(r['CAPITAL COSTS (M$)']['Stimulation costs']).to('MUSD').magnitude - return stim_costs_musd - - -def _stim_costs_per_well_musd(result: GeophiresXResult) -> float: - stim_costs_per_well_musd = _stim_costs_musd(result) / _number_of_wells(result) - return stim_costs_per_well_musd - - -def _total_fracture_surface_area_per_well_m2(result: GeophiresXResult) -> float: - r: dict[str, dict[str, Any]] = result.result - res_params = r['RESERVOIR PARAMETERS'] - return ( - _q(res_params['Fracture area']).to('m ** 2').magnitude - * res_params['Number of fractures']['value'] - / _number_of_wells(result) - ) - - -def main(): - """ - Generate Fervo_Project_Cape-4.md (markdown documentation) from the Jinja template. - """ - - input_params: GeophiresInputParameters = ImmutableGeophiresInputParameters( - from_file_path=project_root / 'tests/examples/Fervo_Project_Cape-4.txt' - ) - result = GeophiresXResult(project_root / 'tests/examples/Fervo_Project_Cape-4.out') - - template_values = get_input_parameter_values(input_params, result) - template_values = {**template_values, **get_result_values(result)} - - # Set up Jinja environment - docs_dir = project_root / 'docs' - env = Environment(loader=FileSystemLoader(docs_dir), autoescape=True) - template = env.get_template('Fervo_Project_Cape-4.md.jinja') - - # Render template - print('Rendering template...') - output = template.render(**template_values) - - # Write output - output_file = docs_dir / 'Fervo_Project_Cape-4.md' - output_file.write_text(output, encoding='utf-8') - - print(f'✓ Generated {output_file}') - print('\nKey results:') - print(f"\tLCOE: ${template_values['lcoe_usd_per_mwh']}/MWh") - print(f"\tIRR: {template_values['irr_pct']}%") - print(f"\tTotal CAPEX: ${template_values['total_capex_gusd']}B") - - -if __name__ == '__main__': - main() diff --git a/docs/templates/layout.html b/docs/templates/layout.html index c8046171..8b157f77 100644 --- a/docs/templates/layout.html +++ b/docs/templates/layout.html @@ -26,6 +26,10 @@ display: none; } + img.no-active:active { + max-width: 100%; + } + /* Show interactive SVG on screen, hide print version */ @media screen { .sensitivity-chart-interactive { diff --git a/docs/watch_docs.py b/docs/watch_docs.py deleted file mode 100755 index 473dfd23..00000000 --- a/docs/watch_docs.py +++ /dev/null @@ -1,86 +0,0 @@ -#!python - -# Automatically rebuilds docs locally when changes are detected. -# Usage, from the project root: -# ./docs/watch_docs.py - -import os -import subprocess -import time - - -def get_file_states(directory): - """ - Returns a dictionary of file paths and their modification times. - """ - states = {} - for root, _, files in os.walk(directory): - for filename in files: - # Ignore hidden files, temporary editor files, and this script itself - # fmt:off - if (filename.startswith('.') or - filename.endswith('~') or filename == os.path.basename(__file__)): # noqa: PTH119 - # fmt:on - continue - - filepath = os.path.join(root, filename) - - # Avoid watching build directories if they are generated inside docs/ - if '_build' in filepath or 'build' in filepath: - continue - - try: - states[filepath] = os.path.getmtime(filepath) # noqa: PTH204 - except OSError: - pass - return states - - -def main(): - # Determine paths relative to this script - script_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.dirname(script_dir) - - # Watch the directory where the script is located (docs/) - watch_dir = script_dir - - command = ['tox', '-e', 'docs'] - poll_interval = 2 # Seconds - - print(f"Watching '{watch_dir}' for changes...") - print(f"Project root determined as: '{project_root}'") - print(f"Command to run: {' '.join(command)}") - print('Press Ctrl+C to stop.') - - # Initial state - last_states = get_file_states(watch_dir) - - try: - while True: - time.sleep(poll_interval) - current_states = get_file_states(watch_dir) - - if current_states != last_states: - print('\n[Change Detected] Running docs build...') - time.sleep(1) - - try: - # Run tox from the project root so it finds tox.ini - subprocess.run(command, cwd=project_root, check=False) # noqa: S603 - except FileNotFoundError: - print("Error: 'tox' command not found. Please ensure tox is installed.") - except Exception as e: - print(f'An error occurred: {e}') - - print(f"\nDocs rebuild complete at {time.strftime('%Y-%m-%d %H:%M:%S')}.") - print(f"\nWaiting for further changes in '{watch_dir}'...") - - # Update state to the current state - last_states = get_file_states(watch_dir) - - except KeyboardInterrupt: - print('\nWatcher stopped.') - - -if __name__ == '__main__': - main() diff --git a/src/geophires_docs/__init__.py b/src/geophires_docs/__init__.py new file mode 100644 index 00000000..e5c8a110 --- /dev/null +++ b/src/geophires_docs/__init__.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from pathlib import Path + +_PROJECT_ROOT = Path(__file__).parent.parent.parent diff --git a/src/geophires_docs/__main__.py b/src/geophires_docs/__main__.py new file mode 100644 index 00000000..7fc177bf --- /dev/null +++ b/src/geophires_docs/__main__.py @@ -0,0 +1,4 @@ +if __name__ == '__main__': + from geophires_docs import generate_fervo_project_cape_4_docs + + generate_fervo_project_cape_4_docs.generate_fervo_project_cape_4_docs() diff --git a/src/geophires_docs/generate_fervo_project_cape_4_docs.py b/src/geophires_docs/generate_fervo_project_cape_4_docs.py new file mode 100644 index 00000000..3e177873 --- /dev/null +++ b/src/geophires_docs/generate_fervo_project_cape_4_docs.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from typing import Any + +from geophires_docs import _PROJECT_ROOT +from geophires_docs import generate_fervo_project_cape_4_md +from geophires_docs.generate_fervo_project_cape_4_graphs import generate_fervo_project_cape_4_graphs +from geophires_x_client import GeophiresInputParameters +from geophires_x_client import GeophiresXClient +from geophires_x_client import GeophiresXResult +from geophires_x_client import ImmutableGeophiresInputParameters + +_SINGH_ET_AL_BASE_SIMULATION_PARAMETERS: dict[str, Any] = { + 'Number of Production Wells': 4, + 'Maximum Drawdown': 1, + 'Plant Lifetime': 15, +} + +# fmt:off +def get_singh_et_al_base_simulation_result(base_input_params: GeophiresInputParameters) \ + -> tuple[GeophiresInputParameters,GeophiresXResult]: + singh_et_al_base_simulation_input_params = ImmutableGeophiresInputParameters( + from_file_path=base_input_params.as_file_path(), + params=_SINGH_ET_AL_BASE_SIMULATION_PARAMETERS, + ) + # fmt:on + + singh_et_al_base_simulation_result = GeophiresXClient().get_geophires_result( + singh_et_al_base_simulation_input_params + ) + + return singh_et_al_base_simulation_input_params, singh_et_al_base_simulation_result + + +def generate_fervo_project_cape_4_docs(): + input_params: GeophiresInputParameters = ImmutableGeophiresInputParameters( + from_file_path=_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.txt' + ) + result = GeophiresXResult(_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.out') + + singh_et_al_base_simulation:tuple[GeophiresInputParameters,GeophiresXResult] = get_singh_et_al_base_simulation_result(input_params) + + generate_fervo_project_cape_4_graphs( + (input_params, result), + singh_et_al_base_simulation, + _PROJECT_ROOT / 'docs/_images' + ) + + generate_fervo_project_cape_4_md.generate_fervo_project_cape_4_md( + input_params, + result, + _SINGH_ET_AL_BASE_SIMULATION_PARAMETERS + ) + + +if __name__ == '__main__': + generate_fervo_project_cape_4_docs() diff --git a/src/geophires_docs/generate_fervo_project_cape_4_graphs.py b/src/geophires_docs/generate_fervo_project_cape_4_graphs.py new file mode 100644 index 00000000..f9e088ca --- /dev/null +++ b/src/geophires_docs/generate_fervo_project_cape_4_graphs.py @@ -0,0 +1,169 @@ +from __future__ import annotations + +from pathlib import Path + +import numpy as np +from matplotlib import pyplot as plt + +from geophires_docs import _PROJECT_ROOT +from geophires_x_client import GeophiresInputParameters +from geophires_x_client import GeophiresXResult +from geophires_x_client import ImmutableGeophiresInputParameters + + +def generate_net_power_graph( + result: GeophiresXResult, output_dir: Path, filename='fervo_project_cape-4-net-power-production.png' +) -> str: + """ + Generate a graph of time vs net power production and save it to the output directory. + + Args: + result: The GEOPHIRES result object + output_dir: Directory to save the graph image + + Returns: + The filename of the generated graph + """ + print('Generating net power production graph...') + + # Extract data from power generation profile + profile = result.power_generation_profile + headers = profile[0] + data = profile[1:] + + # Find the indices for YEAR and NET POWER columns + year_idx = headers.index('YEAR') + net_power_idx = headers.index('NET POWER (MW)') + + # Extract years and net power values + years = np.array([row[year_idx] for row in data]) + net_power = np.array([row[net_power_idx] for row in data]) + + # Create the figure + fig, ax = plt.subplots(figsize=(10, 6)) + + # Plot the data + ax.plot(years, net_power, color='#3399e6', linewidth=2, marker='o', markersize=4) + + # Set labels and title + ax.set_xlabel('Time (Years)', fontsize=12) + ax.set_ylabel('Net Power Production (MW)', fontsize=12) + ax.set_title('Net Power Production Over Project Lifetime', fontsize=14) + + # Set axis limits + ax.set_xlim(years.min(), years.max()) + + # Add grid for better readability + ax.grid(True, linestyle='--', alpha=0.7) + + # Ensure the output directory exists + output_dir.mkdir(parents=True, exist_ok=True) + + # Save the figure + save_path = output_dir / filename + plt.savefig(save_path, dpi=150, bbox_inches='tight') + plt.close(fig) + + print(f'✓ Generated {save_path}') + return filename + + +def generate_production_temperature_graph( + result: GeophiresXResult, output_dir: Path, filename='fervo_project_cape-4-production-temperature.png' +) -> str: + """ + Generate a graph of time vs production temperature and save it to the output directory. + + Args: + result: The GEOPHIRES result object + output_dir: Directory to save the graph image + + Returns: + The filename of the generated graph + """ + print('Generating production temperature graph...') + + # Extract data from power generation profile + profile = result.power_generation_profile + headers = profile[0] + data = profile[1:] + + # Find the indices for YEAR and THERMAL DRAWDOWN columns + year_idx = headers.index('YEAR') + # Look for production temperature column - could be labeled differently + temp_idx = headers.index('GEOFLUID TEMPERATURE (degC)') + + # Extract years and temperature values + years = np.array([row[year_idx] for row in data]) + temperatures_celsius = np.array([row[temp_idx] for row in data]) + + # Convert Celsius to Fahrenheit + temperatures_fahrenheit = temperatures_celsius * 9 / 5 + 32 + + # Create the figure - taller than wide (portrait orientation) + fig, ax = plt.subplots(figsize=(6, 8)) + + # Plot the data - just the curve, no markers + ax.plot(years, temperatures_fahrenheit, color='#e63333', linewidth=2) + + # Set labels and title + ax.set_xlabel('Simulation time (Years)', fontsize=12) + ax.set_ylabel('Wellhead temperature (°F)', fontsize=12) + # ax.set_title('Production Temperature Over Project Lifetime', fontsize=14) + + # Set axis limits + ax.set_xlim(years.min(), years.max()) + ax.set_ylim(200, 450) + + # Set y-axis ticks every 50 degrees, with 400 explicitly labeled but not 200 or 450 + ax.set_yticks([250, 300, 350, 400]) + + # Add grid for better readability + ax.grid(True, linestyle='--', alpha=0.7) + + # Ensure the output directory exists + output_dir.mkdir(parents=True, exist_ok=True) + + # Save the figure + save_path = output_dir / filename + plt.savefig(save_path, dpi=150, bbox_inches='tight') + plt.close(fig) + + print(f'✓ Generated {save_path}') + return filename + + +def generate_fervo_project_cape_4_graphs( + base_case: tuple[GeophiresInputParameters, GeophiresXResult], + singh_et_al_base_simulation: tuple[GeophiresInputParameters, GeophiresXResult], + output_dir: Path, +) -> None: + # base_case_input_params: GeophiresInputParameters = base_case[0] + # result:GeophiresXResult = base_case[1] + + # generate_net_power_graph(result, output_dir) + # generate_production_temperature_graph(result, output_dir) + + singh_et_al_base_simulation_result: GeophiresXResult = singh_et_al_base_simulation[1] + + # generate_net_power_graph( + # singh_et_al_base_simulation_result, output_dir, filename='singh_et_al_base_simulation-net-power-production.png' + # ) + generate_production_temperature_graph( + singh_et_al_base_simulation_result, + output_dir, + filename='singh_et_al_base_simulation-production-temperature.png', + ) + + +if __name__ == '__main__': + docs_dir = _PROJECT_ROOT / 'docs' + images_dir = docs_dir / '_images' + + input_params_: GeophiresInputParameters = ImmutableGeophiresInputParameters( + from_file_path=_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.txt' + ) + + result_ = GeophiresXResult(_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.out') + + generate_fervo_project_cape_4_graphs(input_params_, result_, images_dir) diff --git a/src/geophires_docs/generate_fervo_project_cape_4_md.py b/src/geophires_docs/generate_fervo_project_cape_4_md.py new file mode 100755 index 00000000..b643d77d --- /dev/null +++ b/src/geophires_docs/generate_fervo_project_cape_4_md.py @@ -0,0 +1,468 @@ +#!python +""" +Script to generate Fervo_Project_Cape-4.md from its jinja template. +This ensures the markdown documentation stays in sync with actual GEOPHIRES results. +""" + +from __future__ import annotations + +import json +from typing import Any + +import numpy as np +from jinja2 import Environment +from jinja2 import FileSystemLoader +from pint.facets.plain import PlainQuantity + +from geophires_docs import _PROJECT_ROOT +from geophires_x.GeoPHIRESUtils import is_int +from geophires_x.GeoPHIRESUtils import sig_figs +from geophires_x_client import GeophiresInputParameters +from geophires_x_client import GeophiresXResult +from geophires_x_client import ImmutableGeophiresInputParameters + +# Add project root to path to import GEOPHIRES and docs modules + + +def _get_input_parameters_dict( # TODO consolidate with FervoProjectCape4TestCase._get_input_parameters + _params: GeophiresInputParameters, include_parameter_comments: bool = False, include_line_comments: bool = False +) -> dict[str, Any]: + comment_idx = 0 + ret: dict[str, Any] = {} + for line in _params.as_text().split('\n'): + parts = line.strip().split(', ') # TODO generalize for array-type params + field = parts[0].strip() + if len(parts) >= 2 and not field.startswith('#'): + fieldValue = parts[1].strip() + if include_parameter_comments and len(parts) > 2: + fieldValue += ', ' + (', '.join(parts[2:])).strip() + ret[field] = fieldValue.strip() + + if include_line_comments and field.startswith('#'): + ret[f'_COMMENT-{comment_idx}'] = line.strip() + comment_idx += 1 + + # TODO preserve newlines + + return ret + + +def _get_schema() -> dict[str, Any]: + schema_file = _PROJECT_ROOT / 'src/geophires_x_schema_generator/geophires-request.json' + with open(schema_file, encoding='utf-8') as f: + return json.loads(f.read()) + + +def _get_parameter_schema(param_name: str) -> dict[str, Any]: + return _get_schema()['properties'][param_name] + + +def _get_parameter_schema_type(param_name: str) -> dict[str, Any]: + return _get_parameter_schema(param_name)['type'] + + +def _get_parameter_category(param_name: str) -> str: + return _get_parameter_schema(param_name)['category'] + + +def _get_parameter_units(param_name: str) -> str | None: + unit = _get_schema()['properties'][param_name]['units'] + + if unit == '': + return 'dimensionless' + + return unit + + +def _get_unit_display(parameter_units_from_schema: str) -> str: + if parameter_units_from_schema is None: + return '' + + display_unit_prefix = ( + ' ' + if not (parameter_units_from_schema and any(it in parameter_units_from_schema for it in ['%', 'USD', 'MUSD'])) + else '' + ) + display_unit = parameter_units_from_schema + for replacement in [ + ('kilometer', 'km'), + ('degC', '℃'), + ('meter', 'm'), + ('m**3', 'm³'), + ('m**2', 'm²'), + ('MUSD', 'M'), + ('USD', ''), + ]: + display_unit = display_unit.replace(replacement[0], replacement[1]) + + return f'{display_unit_prefix}{display_unit}' + + +def generate_fpc4_reservoir_parameters_table_md(input_params: GeophiresInputParameters) -> str: + params_to_exclude = [ + 'Maximum Temperature', + 'Reservoir Porosity', + 'Reservoir Volume Option', + ] + + return get_fpc4_category_parameters_table_md( + input_params, + 'Reservoir', + params_to_exclude, + ) + + +def generate_fpc4_well_bores_parameters_table_md(input_params: GeophiresInputParameters) -> str: + return get_fpc4_category_parameters_table_md( + input_params, + 'Well Bores', + parameters_to_exclude=['Number of Multilateral Sections'], + ) + + +def generate_fpc4_surface_plant_parameters_table_md(input_params: GeophiresInputParameters) -> str: + return get_fpc4_category_parameters_table_md( + input_params, + 'Surface Plant', + parameters_to_exclude=['End-Use Option', 'Construction Years'], + ) + + +def generate_fpc4_construction_parameters_table_md(input_params: GeophiresInputParameters) -> str: + input_params_dict = _get_input_parameters_dict( + input_params, include_parameter_comments=True, include_line_comments=True + ) + schedule_param_name = 'Construction CAPEX Schedule' + construction_input_params = {} + for construction_param in ['Construction Years', schedule_param_name]: + construction_input_params[construction_param] = input_params_dict[construction_param] + + # Comment hardcoded here for now because handling of array parameters with comments might be buggy in client or + # web interface... + schedule_param_comment = ( + 'Array of fractions of overnight capital cost expenditure for each year, starting with ' + 'lower costs during initial years for exploration and increasing to higher costs during ' + 'later years as buildout progresses.' + ) + construction_input_params[schedule_param_name] = ( + f'{construction_input_params[schedule_param_name]}' f', -- {schedule_param_comment}' + ) + + return get_fpc4_category_parameters_table_md( + ImmutableGeophiresInputParameters(params=construction_input_params), None + ) + + +def generate_fpc4_economics_parameters_table_md(input_params: GeophiresInputParameters) -> str: + return get_fpc4_category_parameters_table_md( + input_params, + 'Economics', + parameters_to_exclude=[ + 'Ending Electricity Sale Price', + 'Electricity Escalation Start Year', + 'Construction CAPEX Schedule', + 'Time steps per year', + 'Print Output to Console', + ], + ) + + +def get_fpc4_category_parameters_table_md( + input_params: GeophiresInputParameters, category_name: str | None, parameters_to_exclude: list[str] | None = None +) -> str: + if parameters_to_exclude is None: + parameters_to_exclude = [] + + input_params_dict = _get_input_parameters_dict( + input_params, include_parameter_comments=True, include_line_comments=True + ) + + # noinspection MarkdownIncorrectTableFormatting + table_md = """ +| Parameter | Input Value(s) | Comment | +|-------------------|-------------------------------------------|-------------| +""" + + table_entries = [] + for param_name, param_val_comment in input_params_dict.items(): + if param_name.startswith(('#', '_COMMENT-')): + continue + + if param_name in parameters_to_exclude: + continue + + category = _get_parameter_category(param_name) + if category_name is None or category == category_name: + param_val_comment_split = param_val_comment.split( + # ',', + ',' if _get_parameter_schema_type(param_name) != 'array' else ', ', + maxsplit=1, + ) + + param_val = param_val_comment_split[0] + + param_comment = ( + param_val_comment_split[1].replace('-- ', '') if len(param_val_comment_split) > 1 else ' .. N/A ' + ) + param_unit = _get_parameter_units(param_name) + if param_unit == 'dimensionless': + param_unit_display = '%' + param_val = PlainQuantity(float(param_val), 'dimensionless').to('percent').magnitude + elif ' ' in param_val: + param_val_split = param_val.split(' ', maxsplit=1) + param_val = param_val_split[0] + param_unit_display = _get_unit_display(param_val_split[1]) + else: + param_unit_display = _get_unit_display(param_unit) + + param_unit_display_prefix = '$' if param_unit and 'USD' in param_unit else '' + + if is_int(param_val): + param_val = int(param_val) + + param_schema = _get_parameter_schema(param_name) + if param_schema and 'enum_values' in param_schema: + for enum_value in param_schema['enum_values']: + if enum_value['int_value'] == param_val: + enum_display = enum_value['value'] + # param_val = f'{param_val} ({enum_display})' + param_val = enum_display + break + + table_entries.append( + [param_name, f'{param_unit_display_prefix}{param_val}{param_unit_display}', param_comment] + ) + + for table_entry in table_entries: + table_md += f'| {table_entry[0]} | {table_entry[1]} | {table_entry[2]} |\n' + + return table_md.strip() + + +def _q(d: dict[str, Any]) -> PlainQuantity: + return PlainQuantity(d['value'], d['unit']) + + +def get_fpc4_input_parameter_values(input_params: GeophiresInputParameters, result: GeophiresXResult) -> dict[str, Any]: + print('Extracting input parameter values...') + + params = _get_input_parameters_dict(input_params) + r: dict[str, dict[str, Any]] = result.result + + exploration_cost_musd = _q(r['CAPITAL COSTS (M$)']['Exploration costs']).to('MUSD').magnitude + assert exploration_cost_musd == float( + params['Exploration Capital Cost'] + ), 'Exploration cost mismatch between parameters and result' + + return { + 'exploration_cost_musd': round(sig_figs(exploration_cost_musd, 2)), + 'wacc_pct': sig_figs(r['ECONOMIC PARAMETERS']['WACC']['value'], 3), + 'reservoir_volume_m3': f"{r['RESERVOIR PARAMETERS']['Reservoir volume']['value']:,}", + } + + +def get_result_values(result: GeophiresXResult) -> dict[str, Any]: + print('Extracting result values...') + + r: dict[str, dict[str, Any]] = result.result + + total_capex_q: PlainQuantity = _q(r['CAPITAL COSTS (M$)']['Total CAPEX']) + + surf_equip_sim = r['SURFACE EQUIPMENT SIMULATION RESULTS'] + min_net_generation_mwe = surf_equip_sim['Minimum Net Electricity Generation']['value'] + avg_net_generation_mwe = surf_equip_sim['Average Net Electricity Generation']['value'] + max_net_generation_mwe = surf_equip_sim['Maximum Net Electricity Generation']['value'] + max_total_generation_mwe = surf_equip_sim['Maximum Total Electricity Generation']['value'] + parasitic_loss_pct = ( + surf_equip_sim['Average Pumping Power']['value'] + / surf_equip_sim['Average Total Electricity Generation']['value'] + * 100.0 + ) + net_power_idx = result.power_generation_profile[0].index('NET POWER (MW)') + + def n_year_avg_net_power_mwe(years: int) -> float: + return np.average([it[net_power_idx] for it in result.power_generation_profile[1:]][:years]) + + two_year_avg_net_power_mwe = n_year_avg_net_power_mwe(2) + two_year_avg_net_power_mwe_per_production_well = two_year_avg_net_power_mwe / _number_of_production_wells(result) + + total_fracture_surface_area_per_well_m2 = _total_fracture_surface_area_per_well_m2(result) + + occ_q = _q(r['CAPITAL COSTS (M$)']['Overnight Capital Cost']) + + field_gathering_cost_musd = _q(r['CAPITAL COSTS (M$)']['Field gathering system costs']).to('MUSD').magnitude + field_gathering_cost_pct_occ = field_gathering_cost_musd / occ_q.to('MUSD').magnitude * 100.0 + + redrills = r['ENGINEERING PARAMETERS']['Number of times redrilling']['value'] + total_wells_including_redrilling = redrills * _number_of_wells(result) + + return { + # Economic Results + 'lcoe_usd_per_mwh': sig_figs( + _q(r['SUMMARY OF RESULTS']['Electricity breakeven price']).to('USD / MWh').magnitude, 3 + ), + 'irr_pct': sig_figs(r['ECONOMIC PARAMETERS']['After-tax IRR']['value'], 3), + 'npv_musd': sig_figs(r['ECONOMIC PARAMETERS']['Project NPV']['value'], 3), + # Capital Costs + 'drilling_costs_musd': round(sig_figs(_drilling_costs_musd(result), 3)), + 'drilling_costs_per_well_musd': sig_figs(_drilling_costs_per_well_musd(result), 3), + 'stim_costs_musd': round(sig_figs(_stim_costs_musd(result), 3)), + 'stim_costs_per_well_musd': sig_figs(_stim_costs_per_well_musd(result), 3), + 'surface_power_plant_costs_gusd': sig_figs( + _q(r['CAPITAL COSTS (M$)']['Surface power plant costs']).to('GUSD').magnitude, 3 + ), + 'field_gathering_cost_musd': round(sig_figs(field_gathering_cost_musd, 3)), + 'field_gathering_cost_pct_occ': round(sig_figs(field_gathering_cost_pct_occ, 1)), + 'occ_gusd': sig_figs(occ_q.to('GUSD').magnitude, 3), + 'total_capex_gusd': sig_figs(total_capex_q.to('GUSD').magnitude, 3), + 'capex_usd_per_kw': round( + sig_figs((total_capex_q / PlainQuantity(max_net_generation_mwe, 'MW')).to('USD / kW').magnitude, 2) + ), + # Technical & Engineering Results + 'bht_temp_degc': r['RESERVOIR PARAMETERS']['Bottom-hole temperature']['value'], + 'min_net_generation_mwe': round(sig_figs(min_net_generation_mwe, 3)), + 'avg_net_generation_mwe': round(sig_figs(avg_net_generation_mwe, 3)), + 'max_net_generation_mwe': round(sig_figs(max_net_generation_mwe, 3)), + 'max_total_generation_mwe': round(sig_figs(max_total_generation_mwe, 3)), + 'two_year_avg_net_power_mwe_per_production_well': sig_figs(two_year_avg_net_power_mwe_per_production_well, 4), + 'parasitic_loss_pct': sig_figs(parasitic_loss_pct, 3), + 'number_of_times_redrilling': redrills, + 'total_wells_including_redrilling': total_wells_including_redrilling, + 'initial_production_temperature_degc': round( + sig_figs(r['RESERVOIR SIMULATION RESULTS']['Initial Production Temperature']['value'], 3) + ), + 'average_production_temperature_degc': round( + sig_figs(r['RESERVOIR SIMULATION RESULTS']['Average Production Temperature']['value'], 3) + ), + 'total_fracture_surface_area_per_well_mm2': sig_figs(total_fracture_surface_area_per_well_m2 / 1e6, 2), + 'total_fracture_surface_area_per_well_mft2': round( + sig_figs( + PlainQuantity(total_fracture_surface_area_per_well_m2, 'm ** 2').to('foot ** 2').magnitude * 1e-6, 2 + ) + ), + # TODO port all input and result values here instead of hardcoding them in the template + } + + +def _number_of_production_wells(result: GeophiresXResult) -> int: + return result.result['SUMMARY OF RESULTS']['Number of production wells']['value'] + + +def _number_of_wells(result: GeophiresXResult) -> int: + r: dict[str, dict[str, Any]] = result.result + + number_of_wells = r['SUMMARY OF RESULTS']['Number of injection wells']['value'] + _number_of_production_wells( + result + ) + + return number_of_wells + + +def _drilling_costs_musd(result: GeophiresXResult) -> float: + r: dict[str, dict[str, Any]] = result.result + + return _q(r['CAPITAL COSTS (M$)']['Drilling and completion costs']).to('MUSD').magnitude + + +def _drilling_costs_per_well_musd(result: GeophiresXResult) -> float: + return _drilling_costs_musd(result) / _number_of_wells(result) + + +def _stim_costs_per_well_musd(result: GeophiresXResult) -> float: + stim_costs_per_well_musd = _stim_costs_musd(result) / _number_of_wells(result) + return stim_costs_per_well_musd + + +def _stim_costs_musd(result: GeophiresXResult) -> float: + r: dict[str, dict[str, Any]] = result.result + + stim_costs_musd = _q(r['CAPITAL COSTS (M$)']['Stimulation costs']).to('MUSD').magnitude + return stim_costs_musd + + +def _stim_costs_per_well_musd(result: GeophiresXResult) -> float: + stim_costs_per_well_musd = _stim_costs_musd(result) / _number_of_wells(result) + return stim_costs_per_well_musd + + +def _total_fracture_surface_area_per_well_m2(result: GeophiresXResult) -> float: + r: dict[str, dict[str, Any]] = result.result + res_params = r['RESERVOIR PARAMETERS'] + return ( + _q(res_params['Fracture area']).to('m ** 2').magnitude + * res_params['Number of fractures']['value'] + / _number_of_wells(result) + ) + + +def generate_res_eng_reference_sim_params_table_md( + base_case_input_params: GeophiresInputParameters, res_eng_reference_sim_params: dict[str, Any] +) -> str: + return get_fpc4_category_parameters_table_md( + ImmutableGeophiresInputParameters( + # from_file_path=base_case_input_params.as_file_path(), + params=res_eng_reference_sim_params + ), + None, + ) + + +def generate_fervo_project_cape_4_md( + input_params: GeophiresInputParameters, + result: GeophiresXResult, + res_eng_reference_sim_params: dict[str, Any] | None = None, +) -> None: + if res_eng_reference_sim_params is None: + res_eng_reference_sim_params = {} + + # noinspection PyDictCreation + template_values = {**get_fpc4_input_parameter_values(input_params, result), **get_result_values(result)} + + for template_key, md_method in { + 'reservoir_parameters_table_md': generate_fpc4_reservoir_parameters_table_md, + 'surface_plant_parameters_table_md': generate_fpc4_surface_plant_parameters_table_md, + 'well_bores_parameters_table_md': generate_fpc4_well_bores_parameters_table_md, + 'economics_parameters_table_md': generate_fpc4_economics_parameters_table_md, + 'construction_parameters_table_md': generate_fpc4_construction_parameters_table_md, + }.items(): + template_values[template_key] = md_method(input_params) + + template_values['reservoir_engineering_reference_simulation_params_table_md'] = ( + generate_res_eng_reference_sim_params_table_md(input_params, res_eng_reference_sim_params) + ) + + docs_dir = _PROJECT_ROOT / 'docs' + + # Set up Jinja environment + env = Environment(loader=FileSystemLoader(docs_dir), autoescape=True) + template = env.get_template('Fervo_Project_Cape-4.md.jinja') + + # Render template + print('Rendering template...') + output = template.render(**template_values) + + # Write output + output_file = docs_dir / 'Fervo_Project_Cape-4.md' + output_file.write_text(output, encoding='utf-8') + + print(f'✓ Generated {output_file}') + print('\nKey results:') + print(f"\tLCOE: ${template_values['lcoe_usd_per_mwh']}/MWh") + print(f"\tIRR: {template_values['irr_pct']}%") + print(f"\tTotal CAPEX: ${template_values['total_capex_gusd']}B") + + +def main(): + """ + Generate Fervo_Project_Cape-4.md (markdown documentation) from the Jinja template. + """ + + input_params: GeophiresInputParameters = ImmutableGeophiresInputParameters( + from_file_path=_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.txt' + ) + result = GeophiresXResult(_PROJECT_ROOT / 'tests/examples/Fervo_Project_Cape-4.out') + generate_fervo_project_cape_4_md(input_params, result) + + +if __name__ == '__main__': + main() diff --git a/src/geophires_docs/watch_docs.py b/src/geophires_docs/watch_docs.py new file mode 100755 index 00000000..80fbc0ae --- /dev/null +++ b/src/geophires_docs/watch_docs.py @@ -0,0 +1,125 @@ +#!python +# Automatically rebuilds docs locally when changes are detected. +# Usage, from the project root: +# ./src/geophires_docs/watch_docs.py + +import os +import subprocess +import time +from pathlib import Path +from typing import Any + + +def _get_logger(): + # sh = logging.StreamHandler(sys.stdout) + # sh.setLevel(logging.INFO) + # sh.setFormatter(logging.Formatter(fmt='[%(asctime)s][%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')) + # + # ret = logging.getLogger(__name__) + # ret.addHandler(sh) + # return ret + + # noinspection PyMethodMayBeStatic + class _PrintLogger: + def info(self, msg): + print(f'[INFO] {msg}') + + def error(self, msg): + print(f'[ERROR] {msg}') + + return _PrintLogger() + + +_log = _get_logger() + + +def get_file_states(directory) -> dict[str, Any]: + """ + Returns a dictionary of file paths and their modification times. + """ + states = {} + for root, _, files in os.walk(directory): + for filename in files: + # Ignore hidden files, temporary editor files, and this script itself + # fmt:off + if (filename.startswith('.') or + filename.endswith('~') or filename == os.path.basename(__file__)): # noqa: PTH119 + # fmt:on + continue + + filepath = os.path.join(root, filename) + + # Avoid watching build directories if they are generated inside docs/ + if '_build' in filepath or 'build' in filepath: + continue + + try: + states[filepath] = os.path.getmtime(filepath) # noqa: PTH204 + except OSError: + pass + return states + + +def main(): + # Determine paths relative to this script + script_dir = os.path.dirname(os.path.abspath(__file__)) + project_root: str = Path(__file__).parent.parent.parent + + def _say(msg) -> None: + try: + subprocess.run(['say', msg], cwd=project_root, check=False) # noqa: S603,S607 + except subprocess.CalledProcessError: + pass + + # Watch the directory where the script is located (docs/) + watch_dirs = [script_dir, Path(project_root) / 'docs', Path(project_root) / 'tests' / 'examples'] + + command = ['tox', '-e', 'docs'] + poll_interval = 2 # Seconds + + _log.info(f"Watching '{watch_dirs}' for changes...") + _log.info(f"Project root determined as: '{project_root}'") + _log.info(f"Command to run: {' '.join(command)}") + _log.info('Press Ctrl+C to stop.') + + def _get_file_states() -> dict: + states = {} + for watch_dir in watch_dirs: + states = {**states, **get_file_states(watch_dir)} + + return states + + # Initial state + last_states = _get_file_states() + + try: + while True: + time.sleep(poll_interval) + current_states = _get_file_states() + + if current_states != last_states: + _log.info('\n[Change Detected] Running docs build...') + time.sleep(1) + + try: + # Run tox from the project root so it finds tox.ini + subprocess.run(command, cwd=project_root, check=False) # noqa: S603 + except FileNotFoundError: + _log.error("Error: 'tox' command not found. Please ensure tox is installed.") + except Exception as e: + _log.error(f'An error occurred: {e}') + _say('error rebuilding docs') + + _log.info(f"\nDocs rebuild complete at {time.strftime('%Y-%m-%d %H:%M:%S')}.") + _say('docs rebuilt') + _log.info(f"\nWaiting for further changes in '{watch_dirs}'...") + + # Update state to the current state + last_states = _get_file_states() + + except KeyboardInterrupt: + _log.info('\nWatcher stopped.') + + +if __name__ == '__main__': + main() diff --git a/src/geophires_x/Reservoir.py b/src/geophires_x/Reservoir.py index 3eea04ce..639769d3 100644 --- a/src/geophires_x/Reservoir.py +++ b/src/geophires_x/Reservoir.py @@ -284,7 +284,9 @@ def __init__(self, model: Model): PreferredUnits=LengthUnit.METERS, CurrentUnits=LengthUnit.METERS, ErrMessage="assume default fracture width (500 m)", - ToolTipText="Width of each fracture" + ToolTipText="Total horizontal length of each fracture plane (from tip to tip). " + "Note: In some contexts this is called 'Fracture Length'; it refers to the fracture's lateral " + "extent, not its aperture or thickness." ) fracnumb_allowable_range = list(range(1, _MAX_ALLOWED_FRACTURES + 1, 1)) diff --git a/src/geophires_x_client/geophires_x_result.py b/src/geophires_x_client/geophires_x_result.py index 91b14c26..45241636 100644 --- a/src/geophires_x_client/geophires_x_result.py +++ b/src/geophires_x_client/geophires_x_result.py @@ -717,7 +717,7 @@ def _get_unlabeled_string_field( return None @property - def power_generation_profile(self): + def power_generation_profile(self) -> list[list[str | float]]: return self.result['POWER GENERATION PROFILE'] def _get_power_generation_profile(self): diff --git a/src/geophires_x_schema_generator/geophires-request.json b/src/geophires_x_schema_generator/geophires-request.json index 2a83bd35..0a0c354a 100644 --- a/src/geophires_x_schema_generator/geophires-request.json +++ b/src/geophires_x_schema_generator/geophires-request.json @@ -305,7 +305,7 @@ "maximum": 10000 }, "Fracture Width": { - "description": "Width of each fracture", + "description": "Total horizontal length of each fracture plane (from tip to tip). Note: In some contexts this is called 'Fracture Length'; it refers to the fracture's lateral extent, not its aperture or thickness.", "type": "number", "units": "meter", "category": "Reservoir", diff --git a/tests/examples/Fervo_Project_Cape-4.out b/tests/examples/Fervo_Project_Cape-4.out index 96e0e2ed..7a98728e 100644 --- a/tests/examples/Fervo_Project_Cape-4.out +++ b/tests/examples/Fervo_Project_Cape-4.out @@ -4,22 +4,26 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.10.24 - Simulation Date: 2026-01-06 - Simulation Time: 09:20 - Calculation Time: 1.751 sec + GEOPHIRES Version: 3.10.25 + Simulation Date: 2026-01-13 + Simulation Time: 09:55 + Calculation Time: 1.933 sec ***SUMMARY OF RESULTS*** End-Use Option: Electricity - Average Net Electricity Production: 531.95 MW - Electricity breakeven price: 8.29 cents/kWh - Total CAPEX: 2900.28 MUSD - Number of production wells: 52 - Number of injection wells: 52 - Flowrate per production well: 120.0 kg/sec - Well depth: 2.6 kilometer - Geothermal gradient: 72.23 degC/km + Average Net Electricity Production: 514.30 MW + Electricity breakeven price: 7.65 cents/kWh + Total CAPEX: 2841.08 MUSD + Number of production wells: 56 + Number of injection wells: 38 + Flowrate per production well: 106.0 kg/sec + Well depth: 2.7 kilometer + Segment 1 Geothermal gradient: 74 degC/km + Segment 1 Thickness: 2.5 kilometer + Segment 2 Geothermal gradient: 41 degC/km + Segment 2 Thickness: 0.5 kilometer + Segment 3 Geothermal gradient: 39.1 degC/km ***ECONOMIC PARAMETERS*** @@ -27,27 +31,27 @@ Simulation Metadata Economic Model = SAM Single Owner PPA Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % - WACC: 9.49 % + WACC: 9.04 % Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 169.96 MUSD - After-tax IRR: 20.53 % - Project VIR=PI=PIR: 1.24 - Project MOIC: 3.88 - Project Payback Period: 6.31 yr - Estimated Jobs Created: 1248 + Project NPV: 269.51 MUSD + After-tax IRR: 25.43 % + Project VIR=PI=PIR: 1.45 + Project MOIC: 4.71 + Project Payback Period: 5.01 yr + Estimated Jobs Created: 1262 ***ENGINEERING PARAMETERS*** - Number of Production Wells: 52 - Number of Injection Wells: 52 - Well depth: 2.6 kilometer - Water loss rate: 15.0 % + Number of Production Wells: 56 + Number of Injection Wells: 38 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % Pump efficiency: 80.0 % Injection temperature: 56.6 degC Production Wellbore heat transmission calculated with Ramey's model - Average production well temperature drop: 0.4 degC - Flowrate per production well: 120.0 kg/sec + Average production well temperature drop: 0.6 degC + Flowrate per production well: 106.0 kg/sec Injection well casing ID: 8.535 in Production well casing ID: 8.535 in Number of times redrilling: 2 @@ -57,26 +61,31 @@ Simulation Metadata ***RESOURCE CHARACTERISTICS*** Maximum reservoir temperature: 500.0 degC - Number of segments: 1 - Geothermal gradient: 72.23 degC/km + Number of segments: 3 + Segment 1 Geothermal gradient: 74 degC/km + Segment 1 Thickness: 2.5 kilometer + Segment 2 Geothermal gradient: 41 degC/km + Segment 2 Thickness: 0.5 kilometer + Segment 3 Geothermal gradient: 39.1 degC/km ***RESERVOIR PARAMETERS*** Reservoir Model = Multiple Parallel Fractures Model (Gringarten) - Bottom-hole temperature: 200.13 degC - Fracture model = Circular fracture with known diameter - Well separation: fracture diameter: 186.16 meter - Fracture area: 27218.40 m**2 + Bottom-hole temperature: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 135.00 meter + Fracture width: 304.80 meter + Fracture area: 41148.00 m**2 Reservoir volume calculated with fracture separation and number of fractures as input - Number of fractures: 20800 - Fracture separation: 7.32 meter - Reservoir volume: 4141135178 m**3 - Reservoir hydrostatic pressure: 24524.09 kPa - Plant outlet pressure: 6894.76 kPa - Production wellhead pressure: 2240.80 kPa - Productivity Index: 2.49 kg/sec/bar - Injectivity Index: 3.02 kg/sec/bar + Number of fractures: 14100 + Fracture separation: 9.14 meter + Reservoir volume: 5302531259 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2082.43 kPa + Productivity Index: 1.25 kg/sec/bar + Injectivity Index: 1.51 kg/sec/bar Reservoir density: 2800.00 kg/m**3 Reservoir thermal conductivity: 3.05 W/m/K Reservoir heat capacity: 790.00 J/kg/K @@ -84,57 +93,57 @@ Simulation Metadata ***RESERVOIR SIMULATION RESULTS*** - Maximum Production Temperature: 198.5 degC - Average Production Temperature: 198.1 degC - Minimum Production Temperature: 193.8 degC - Initial Production Temperature: 197.2 degC - Average Reservoir Heat Extraction: 3693.44 MW + Maximum Production Temperature: 203.3 degC + Average Production Temperature: 203.1 degC + Minimum Production Temperature: 201.4 degC + Initial Production Temperature: 201.9 degC + Average Reservoir Heat Extraction: 3638.13 MW Production Wellbore Heat Transmission Model = Ramey Model - Average Production Well Temperature Drop: 0.4 degC - Average Injection Well Pump Pressure Drop: -1694.7 kPa - Average Production Well Pump Pressure Drop: 6122.2 kPa + Average Production Well Temperature Drop: 0.6 degC + Average Injection Well Pump Pressure Drop: -2292.0 kPa + Average Production Well Pump Pressure Drop: 9265.1 kPa ***CAPITAL COSTS (M$)*** - Drilling and completion costs: 463.79 MUSD - Drilling and completion costs per well: 4.46 MUSD - Stimulation costs: 502.32 MUSD - Surface power plant costs: 1441.06 MUSD - Field gathering system costs: 44.25 MUSD - Total surface equipment costs: 1485.32 MUSD + Drilling and completion costs: 436.98 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 454.02 MUSD + Surface power plant costs: 1455.02 MUSD + Field gathering system costs: 46.68 MUSD + Total surface equipment costs: 1501.71 MUSD Exploration costs: 30.00 MUSD - Overnight Capital Cost: 2481.42 MUSD - Interest during construction: 115.75 MUSD - Inflation costs during construction: 303.11 MUSD - Total CAPEX: 2900.28 MUSD + Overnight Capital Cost: 2422.71 MUSD + Interest during construction: 122.43 MUSD + Inflation costs during construction: 295.94 MUSD + Total CAPEX: 2841.08 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 6.03 MUSD/yr - Power plant maintenance costs: 24.46 MUSD/yr - Water costs: 24.57 MUSD/yr - Redrilling costs: 64.41 MUSD/yr - Total operating and maintenance costs: 119.47 MUSD/yr + Wellfield maintenance costs: 5.79 MUSD/yr + Power plant maintenance costs: 24.68 MUSD/yr + Water costs: 3.12 MUSD/yr + Redrilling costs: 59.40 MUSD/yr + Total operating and maintenance costs: 92.98 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.18 MW/(kg/s) - Maximum Total Electricity Generation: 588.86 MW - Average Total Electricity Generation: 586.10 MW - Minimum Total Electricity Generation: 554.96 MW - Initial Total Electricity Generation: 579.58 MW - Maximum Net Electricity Generation: 534.79 MW - Average Net Electricity Generation: 531.95 MW - Minimum Net Electricity Generation: 500.02 MW - Initial Net Electricity Generation: 525.36 MW - Average Annual Total Electricity Generation: 4620.92 GWh - Average Annual Net Electricity Generation: 4193.96 GWh - Initial pumping power/net installed power: 10.32 % - Average Pumping Power: 54.15 MW - Heat to Power Conversion Efficiency: 14.40 % + Initial geofluid availability: 0.19 MW/(kg/s) + Maximum Total Electricity Generation: 594.57 MW + Average Total Electricity Generation: 592.72 MW + Minimum Total Electricity Generation: 580.64 MW + Initial Total Electricity Generation: 584.15 MW + Maximum Net Electricity Generation: 516.20 MW + Average Net Electricity Generation: 514.30 MW + Minimum Net Electricity Generation: 501.90 MW + Initial Net Electricity Generation: 505.64 MW + Average Annual Total Electricity Generation: 4673.14 GWh + Average Annual Net Electricity Generation: 4054.82 GWh + Initial pumping power/net installed power: 15.53 % + Average Pumping Power: 78.43 MW + Heat to Power Conversion Efficiency: 14.14 % ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * @@ -142,36 +151,36 @@ Simulation Metadata YEAR THERMAL GEOFLUID PUMP NET FIRST LAW DRAWDOWN TEMPERATURE POWER POWER EFFICIENCY (degC) (MW) (MW) (%) - 1 1.0000 197.20 54.2261 525.3557 14.3136 - 2 1.0042 198.03 54.1922 531.4880 14.3958 - 3 1.0050 198.18 54.1859 532.6275 14.4110 - 4 1.0054 198.26 54.1826 533.2204 14.4189 - 5 1.0057 198.32 54.1805 533.6124 14.4241 - 6 1.0059 198.36 54.1788 533.9042 14.4280 - 7 1.0060 198.38 54.1777 534.1228 14.4309 - 8 1.0061 198.41 54.1764 534.3223 14.4336 - 9 1.0062 198.42 54.1770 534.4132 14.4348 - 10 1.0063 198.43 54.1775 534.4917 14.4358 - 11 1.0031 197.82 54.2813 529.8629 14.3730 - 12 0.9882 194.87 54.7668 507.7593 14.0673 - 13 1.0038 197.96 54.1629 530.9929 14.3896 - 14 1.0048 198.16 54.1460 532.4621 14.4094 - 15 1.0053 198.25 54.1230 533.1576 14.4189 - 16 1.0056 198.30 54.1008 533.6066 14.4251 - 17 1.0058 198.35 54.0849 533.9316 14.4297 - 18 1.0060 198.38 54.0764 534.1681 14.4329 - 19 1.0061 198.41 54.0720 534.4103 14.4362 - 20 1.0061 198.41 54.0743 534.4303 14.4364 - 21 1.0064 198.46 54.0696 534.7806 14.4411 - 22 1.0045 198.08 54.1355 531.9364 14.4025 - 23 0.9942 196.05 54.4754 516.6718 14.1930 - 24 1.0033 197.85 54.0720 530.2817 14.3814 - 25 1.0047 198.12 54.0721 532.2917 14.4081 - 26 1.0052 198.23 54.0722 533.0718 14.4185 - 27 1.0055 198.29 54.0724 533.5423 14.4247 - 28 1.0058 198.34 54.0725 533.8734 14.4291 - 29 1.0059 198.37 54.0727 534.1222 14.4323 - 30 1.0061 198.40 54.0721 534.3613 14.4355 + 1 1.0000 201.86 78.5157 505.6387 14.0135 + 2 1.0049 202.85 78.4819 512.7406 14.1138 + 3 1.0058 203.04 78.4756 514.0612 14.1323 + 4 1.0063 203.13 78.4723 514.7483 14.1419 + 5 1.0066 203.19 78.4702 515.2028 14.1483 + 6 1.0069 203.24 78.4686 515.5383 14.1530 + 7 1.0070 203.28 78.4673 515.8007 14.1566 + 8 1.0072 203.31 78.4663 516.0162 14.1596 + 9 1.0072 203.32 78.4674 516.0947 14.1607 + 10 1.0068 203.22 78.4835 515.3694 14.1504 + 11 1.0029 202.44 78.5926 509.7332 14.0702 + 12 1.0035 202.57 78.4606 510.7748 14.0866 + 13 1.0054 202.95 78.4543 513.4533 14.1241 + 14 1.0061 203.08 78.4428 514.4202 14.1377 + 15 1.0065 203.16 78.4264 515.0019 14.1461 + 16 1.0067 203.22 78.4077 515.4152 14.1521 + 17 1.0069 203.26 78.3905 515.7322 14.1567 + 18 1.0071 203.29 78.3773 515.9873 14.1605 + 19 1.0072 203.32 78.3693 516.1714 14.1631 + 20 1.0072 203.31 78.3693 516.1027 14.1622 + 21 1.0059 203.04 78.4072 514.1694 14.1347 + 22 0.9987 201.59 78.6103 503.6640 13.9843 + 23 1.0047 202.80 78.3611 512.4807 14.1118 + 24 1.0057 203.01 78.3611 514.0213 14.1333 + 25 1.0062 203.12 78.3611 514.7665 14.1437 + 26 1.0066 203.19 78.3612 515.2464 14.1504 + 27 1.0068 203.23 78.3613 515.5957 14.1552 + 28 1.0070 203.27 78.3614 515.8665 14.1590 + 29 1.0072 203.30 78.3615 516.0907 14.1621 + 30 1.0072 203.32 78.3630 516.2033 14.1636 ******************************************************************* @@ -180,36 +189,36 @@ Simulation Metadata YEAR ELECTRICITY HEAT RESERVOIR PERCENTAGE OF PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED (GWh/year) (GWh/year) (10^15 J) (%) - 1 4174.4 29051.5 1210.21 7.95 - 2 4195.4 29125.5 1105.36 15.93 - 3 4201.8 29148.0 1000.42 23.91 - 4 4205.5 29161.3 895.44 31.89 - 5 4208.2 29170.6 790.43 39.88 - 6 4210.2 29177.6 685.39 47.87 - 7 4212.0 29184.0 580.33 55.86 - 8 4212.6 29186.2 475.26 63.85 - 9 4214.7 29193.6 370.16 71.85 - 10 4200.9 29145.7 265.24 79.83 - 11 4110.9 28833.2 161.44 87.72 - 12 4126.6 28884.4 57.45 95.63 - 13 4193.1 29116.5 -47.37 103.60 - 14 4200.9 29143.6 -152.28 111.58 - 15 4205.3 29158.5 -257.25 119.57 - 16 4208.3 29168.5 -362.26 127.55 - 17 4210.5 29176.1 -467.29 135.54 - 18 4212.4 29182.4 -572.35 143.53 - 19 4213.3 29185.8 -677.42 151.52 - 20 4215.1 29191.9 -782.51 159.52 - 21 4209.0 29170.9 -887.53 167.50 - 22 4148.2 28960.2 -991.78 175.43 - 23 4091.5 28760.0 -1095.32 183.31 - 24 4190.4 29104.6 -1200.10 191.28 - 25 4200.0 29138.5 -1305.00 199.25 - 26 4204.7 29155.3 -1409.95 207.24 - 27 4207.8 29166.3 -1514.95 215.22 - 28 4210.1 29174.4 -1619.98 223.21 - 29 4211.9 29180.7 -1725.03 231.20 - 30 4213.3 29185.7 -1830.10 239.19 + 1 4024.1 28577.9 1642.19 5.90 + 2 4048.4 28662.4 1539.01 11.81 + 3 4055.8 28688.1 1435.73 17.73 + 4 4060.2 28703.3 1332.40 23.65 + 5 4063.2 28714.0 1229.03 29.57 + 6 4065.6 28722.1 1125.63 35.50 + 7 4067.5 28728.6 1022.20 41.42 + 8 4068.7 28733.0 918.76 47.35 + 9 4067.2 28728.0 815.34 53.28 + 10 4046.8 28658.1 712.17 59.19 + 11 3996.4 28483.4 609.63 65.07 + 12 4040.1 28632.9 506.56 70.97 + 13 4052.3 28675.2 403.32 76.89 + 14 4058.1 28695.2 300.02 82.81 + 15 4062.0 28708.2 196.67 88.73 + 16 4064.8 28717.6 93.29 94.65 + 17 4067.1 28725.0 -10.12 100.58 + 18 4068.9 28730.9 -113.55 106.51 + 19 4069.5 28733.2 -216.99 112.43 + 20 4063.9 28713.9 -320.36 118.36 + 21 4021.7 28569.4 -423.21 124.25 + 22 4012.9 28536.1 -525.94 130.14 + 23 4047.4 28655.9 -629.10 136.05 + 24 4055.7 28684.9 -732.37 141.97 + 25 4060.4 28701.2 -835.69 147.89 + 26 4063.6 28712.4 -939.06 153.81 + 27 4066.1 28720.9 -1042.45 159.74 + 28 4068.0 28727.6 -1145.87 165.66 + 29 4069.4 28732.6 -1249.31 171.59 + 30 4069.0 28731.3 -1352.74 177.52 *************************** * SAM CASH FLOW PROFILE * @@ -218,67 +227,67 @@ Simulation Metadata Year -4 Year -3 Year -2 Year -1 Year 0 Year 1 Year 2 Year 3 Year 4 Year 5 Year 6 Year 7 Year 8 Year 9 Year 10 Year 11 Year 12 Year 13 Year 14 Year 15 Year 16 Year 17 Year 18 Year 19 Year 20 Year 21 Year 22 Year 23 Year 24 Year 25 Year 26 Year 27 Year 28 Year 29 Year 30 CONSTRUCTION Capital expenditure schedule [construction] (%) 1.40 2.70 13.70 27.40 54.80 -Overnight capital expenditure [construction] ($) -34,739,893 -66,998,365 -339,954,668 -679,909,336 -1,359,818,671 +Overnight capital expenditure [construction] ($) -33,917,947 -65,413,184 -331,911,340 -663,822,680 -1,327,645,359 plus: -Inflation cost [construction] ($) -937,977 -3,666,754 -28,286,500 -76,458,024 -193,759,885 +Inflation cost [construction] ($) -915,785 -3,579,998 -27,617,242 -74,649,027 -189,175,525 equals: -Nominal capital expenditure [construction] ($) -35,677,870 -70,665,119 -368,241,168 -756,367,359 -1,553,578,556 +Nominal capital expenditure [construction] ($) -34,833,732 -68,993,182 -359,528,581 -738,471,706 -1,516,820,885 -Issuance of equity [construction] ($) 14,271,148 28,266,047 147,296,467 302,546,944 621,431,422 -Issuance of debt [construction] ($) 21,406,722 42,399,071 220,944,701 453,820,416 932,147,133 -Debt balance [construction] ($) 21,406,722 65,946,466 293,485,813 776,654,810 1,786,467,424 -Debt interest payment [construction] ($) 0 2,140,672 6,594,647 29,348,581 77,665,481 +Issuance of equity [construction] ($) 12,191,806 24,147,614 125,835,003 258,465,097 530,887,310 +Issuance of debt [construction] ($) 22,641,926 44,845,568 233,693,578 480,006,609 985,933,575 +Debt balance [construction] ($) 22,641,926 69,751,686 310,420,433 821,469,085 1,889,549,569 +Debt interest payment [construction] ($) 0 2,264,193 6,975,169 31,042,043 82,146,909 -Installed cost [construction] ($) -35,677,870 -72,805,791 -374,835,815 -785,715,940 -1,631,244,037 -After-tax net cash flow [construction] ($) -14,271,148 -28,266,047 -147,296,467 -302,546,944 -621,431,422 +Installed cost [construction] ($) -34,833,732 -71,257,374 -366,503,750 -769,513,750 -1,598,967,793 +After-tax net cash flow [construction] ($) -12,191,806 -24,147,614 -125,835,003 -258,465,097 -530,887,310 ENERGY -Electricity to grid (kWh) 0.0 4,175,053,287 4,196,048,942 4,202,445,447 4,206,228,304 4,208,879,003 4,210,861,909 4,212,673,290 4,213,294,803 4,215,411,003 4,201,560,283 4,111,561,888 4,127,313,666 4,193,786,136 4,201,593,759 4,205,975,308 4,208,977,726 4,211,199,738 4,213,047,288 4,214,020,721 4,215,760,090 4,209,660,783 4,148,850,677 4,092,139,300 4,191,081,013 4,200,660,165 4,205,401,615 4,208,503,557 4,210,789,188 4,212,583,291 4,213,972,647 +Electricity to grid (kWh) 0.0 4,024,187,776 4,048,507,637 4,055,919,971 4,060,303,898 4,063,373,616 4,065,709,569 4,067,599,147 4,068,859,708 4,067,370,054 4,046,926,872 3,996,514,514 4,040,199,049 4,052,409,446 4,058,267,321 4,062,117,901 4,064,968,907 4,067,199,592 4,068,987,346 4,069,684,976 4,064,032,399 4,021,809,819 4,012,988,812 4,047,561,777 4,055,870,532 4,060,558,901 4,063,776,840 4,066,200,226 4,068,140,886 4,069,555,940 4,069,151,686 Electricity from grid (kWh) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Electricity to grid net (kWh) 0.0 4,175,053,287 4,196,048,942 4,202,445,447 4,206,228,304 4,208,879,003 4,210,861,909 4,212,673,290 4,213,294,803 4,215,411,003 4,201,560,283 4,111,561,888 4,127,313,666 4,193,786,136 4,201,593,759 4,205,975,308 4,208,977,726 4,211,199,738 4,213,047,288 4,214,020,721 4,215,760,090 4,209,660,783 4,148,850,677 4,092,139,300 4,191,081,013 4,200,660,165 4,205,401,615 4,208,503,557 4,210,789,188 4,212,583,291 4,213,972,647 +Electricity to grid net (kWh) 0.0 4,024,187,776 4,048,507,637 4,055,919,971 4,060,303,898 4,063,373,616 4,065,709,569 4,067,599,147 4,068,859,708 4,067,370,054 4,046,926,872 3,996,514,514 4,040,199,049 4,052,409,446 4,058,267,321 4,062,117,901 4,064,968,907 4,067,199,592 4,068,987,346 4,069,684,976 4,064,032,399 4,021,809,819 4,012,988,812 4,047,561,777 4,055,870,532 4,060,558,901 4,063,776,840 4,066,200,226 4,068,140,886 4,069,555,940 4,069,151,686 REVENUE PPA price (cents/kWh) 0.0 9.50 9.50 9.56 9.61 9.67 9.73 9.79 9.84 9.90 9.96 10.01 10.07 10.13 10.18 10.24 10.30 10.36 10.41 10.47 10.53 10.58 10.64 10.70 10.75 10.81 10.87 10.93 10.98 11.04 11.10 -PPA revenue ($) 0 396,630,062 398,624,650 401,627,711 404,386,789 407,040,688 409,632,646 412,210,081 414,672,474 417,283,535 418,307,342 411,690,692 415,620,486 424,704,722 427,890,308 430,733,931 433,440,526 436,069,733 438,662,484 441,165,829 443,750,907 445,508,401 441,437,712 437,736,141 450,708,852 454,133,370 457,043,047 459,779,014 462,428,869 465,027,070 467,582,405 +PPA revenue ($) 0 382,297,839 384,608,226 387,624,272 390,357,617 392,968,862 395,512,227 398,014,577 400,457,172 402,628,962 402,912,039 400,170,998 406,848,044 410,387,505 413,293,944 416,001,494 418,610,498 421,158,518 423,662,962 426,055,320 427,780,050 425,628,133 426,982,010 432,967,683 436,168,317 438,987,023 441,651,267 444,232,375 446,763,232 449,238,280 451,513,071 Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Capacity payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,450,139,726 -Total revenue ($) 0 396,630,062 398,624,650 401,627,711 404,386,789 407,040,688 409,632,646 412,210,081 414,672,474 417,283,535 418,307,342 411,690,692 415,620,486 424,704,722 427,890,308 430,733,931 433,440,526 436,069,733 438,662,484 441,165,829 443,750,907 445,508,401 441,437,712 437,736,141 450,708,852 454,133,370 457,043,047 459,779,014 462,428,869 465,027,070 1,917,722,131 +Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,420,538,199 +Total revenue ($) 0 382,297,839 384,608,226 387,624,272 390,357,617 392,968,862 395,512,227 398,014,577 400,457,172 402,628,962 402,912,039 400,170,998 406,848,044 410,387,505 413,293,944 416,001,494 418,610,498 421,158,518 423,662,962 426,055,320 427,780,050 425,628,133 426,982,010 432,967,683 436,168,317 438,987,023 441,651,267 444,232,375 446,763,232 449,238,280 1,872,051,270 -Property tax net assessed value ($) 0 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 2,900,279,453 +Property tax net assessed value ($) 0 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 2,841,076,399 OPERATING EXPENSES -O&M fixed expense ($) 0 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 119,474,882 +O&M fixed expense ($) 0 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 92,983,346 O&M production-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O&M capacity-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Fuel expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Electricity purchase ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Property tax expense ($) 0 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 6,380,615 +Property tax expense ($) 0 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 6,250,368 Insurance expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Total operating expenses ($) 0 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 125,855,497 +Total operating expenses ($) 0 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 99,233,715 -EBITDA ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 +EBITDA ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 OPERATING ACTIVITIES -EBITDA ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 +EBITDA ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 plus PBI if not available for debt service: Federal PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Utility PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Other PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Debt interest payment ($) 0 142,917,394 141,655,800 140,293,279 138,821,756 137,232,511 135,516,127 133,662,432 131,660,441 129,498,291 127,163,169 124,641,237 121,917,551 118,975,969 115,799,062 112,368,001 108,662,456 104,660,467 100,338,319 95,670,400 90,629,046 85,184,385 79,304,150 72,953,497 66,094,791 58,687,389 50,687,395 42,047,402 32,716,208 22,638,520 11,754,616 -Cash flow from operating activities ($) 0 127,857,172 131,113,353 135,478,936 139,709,537 143,952,681 148,261,023 152,692,153 157,156,537 161,929,748 165,288,676 161,193,958 167,847,439 179,873,256 186,235,750 192,510,433 198,922,574 205,553,769 212,468,668 219,639,933 227,266,364 234,468,519 236,278,065 238,927,147 258,758,564 269,590,484 280,500,156 291,876,115 303,857,164 316,533,053 1,780,112,019 +Debt interest payment ($) 0 151,163,966 149,829,576 148,388,435 146,832,002 145,151,055 143,335,633 141,374,976 139,257,467 136,970,558 134,500,695 131,833,244 128,952,396 125,841,081 122,480,860 118,851,822 114,932,461 110,699,550 106,128,007 101,190,741 95,858,493 90,099,665 83,880,132 77,163,035 69,908,571 62,073,749 53,612,142 44,473,607 34,603,988 23,944,800 12,432,877 +Cash flow from operating activities ($) 0 131,900,159 135,544,935 140,002,122 144,291,900 148,584,092 152,942,880 157,405,886 161,965,990 166,424,689 169,177,630 169,104,040 178,661,933 185,312,709 191,579,369 197,915,958 204,444,323 211,225,253 218,301,241 225,630,865 232,687,843 236,294,753 243,868,163 256,570,934 267,026,032 277,679,559 288,805,410 300,525,054 312,925,529 326,059,766 1,760,384,679 INVESTING ACTIVITIES -Total installed cost ($) -2,900,279,453 +Total installed cost ($) -2,841,076,399 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -2,900,279,453 +Purchase of property ($) -2,841,076,399 plus: Reserve (increase)/decrease debt service ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserve (increase)/decrease working capital ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -290,87 +299,87 @@ Reserve capital spending major equipment 1 ($) Reserve capital spending major equipment 2 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserve capital spending major equipment 3 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 equals: -Cash flow from investing activities ($) -2,900,279,453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Cash flow from investing activities ($) -2,841,076,399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FINANCING ACTIVITIES -Issuance of equity ($) 1,113,812,029 -Size of debt ($) 1,786,467,424 +Issuance of equity ($) 951,526,830 +Size of debt ($) 1,889,549,569 minus: -Debt principal payment ($) 0 15,769,922 17,031,516 18,394,037 19,865,560 21,454,805 23,171,189 25,024,885 27,026,875 29,189,025 31,524,147 34,046,079 36,769,766 39,711,347 42,888,255 46,319,315 50,024,860 54,026,849 58,348,997 63,016,917 68,058,270 73,502,931 79,383,166 85,733,819 92,592,525 99,999,927 107,999,921 116,639,915 125,971,108 136,048,796 146,932,700 +Debt principal payment ($) 0 16,679,873 18,014,263 19,455,404 21,011,836 22,692,783 24,508,206 26,468,862 28,586,371 30,873,281 33,343,143 36,010,595 38,891,442 42,002,758 45,362,978 48,992,016 52,911,378 57,144,288 61,715,831 66,653,098 71,985,345 77,744,173 83,963,707 90,680,803 97,935,268 105,770,089 114,231,696 123,370,232 133,239,850 143,899,038 155,410,962 equals: -Cash flow from financing activities ($) 2,900,279,453 -15,769,922 -17,031,516 -18,394,037 -19,865,560 -21,454,805 -23,171,189 -25,024,885 -27,026,875 -29,189,025 -31,524,147 -34,046,079 -36,769,766 -39,711,347 -42,888,255 -46,319,315 -50,024,860 -54,026,849 -58,348,997 -63,016,917 -68,058,270 -73,502,931 -79,383,166 -85,733,819 -92,592,525 -99,999,927 -107,999,921 -116,639,915 -125,971,108 -136,048,796 -146,932,700 +Cash flow from financing activities ($) 2,841,076,399 -16,679,873 -18,014,263 -19,455,404 -21,011,836 -22,692,783 -24,508,206 -26,468,862 -28,586,371 -30,873,281 -33,343,143 -36,010,595 -38,891,442 -42,002,758 -45,362,978 -48,992,016 -52,911,378 -57,144,288 -61,715,831 -66,653,098 -71,985,345 -77,744,173 -83,963,707 -90,680,803 -97,935,268 -105,770,089 -114,231,696 -123,370,232 -133,239,850 -143,899,038 -155,410,962 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 127,857,172 131,113,353 135,478,936 139,709,537 143,952,681 148,261,023 152,692,153 157,156,537 161,929,748 165,288,676 161,193,958 167,847,439 179,873,256 186,235,750 192,510,433 198,922,574 205,553,769 212,468,668 219,639,933 227,266,364 234,468,519 236,278,065 238,927,147 258,758,564 269,590,484 280,500,156 291,876,115 303,857,164 316,533,053 1,780,112,019 -Cash flow from investing activities ($) -2,900,279,453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Cash flow from financing activities ($) 2,900,279,453 -15,769,922 -17,031,516 -18,394,037 -19,865,560 -21,454,805 -23,171,189 -25,024,885 -27,026,875 -29,189,025 -31,524,147 -34,046,079 -36,769,766 -39,711,347 -42,888,255 -46,319,315 -50,024,860 -54,026,849 -58,348,997 -63,016,917 -68,058,270 -73,502,931 -79,383,166 -85,733,819 -92,592,525 -99,999,927 -107,999,921 -116,639,915 -125,971,108 -136,048,796 -146,932,700 -Total pre-tax cash flow ($) 0 112,087,250 114,081,837 117,084,899 119,843,976 122,497,876 125,089,834 127,667,269 130,129,662 132,740,722 133,764,529 127,147,879 131,077,673 140,161,909 143,347,496 146,191,118 148,897,713 151,526,920 154,119,671 156,623,016 159,208,094 160,965,588 156,894,899 153,193,328 166,166,039 169,590,558 172,500,235 175,236,201 177,886,056 180,484,257 1,633,179,319 +Cash flow from operating activities ($) 0 131,900,159 135,544,935 140,002,122 144,291,900 148,584,092 152,942,880 157,405,886 161,965,990 166,424,689 169,177,630 169,104,040 178,661,933 185,312,709 191,579,369 197,915,958 204,444,323 211,225,253 218,301,241 225,630,865 232,687,843 236,294,753 243,868,163 256,570,934 267,026,032 277,679,559 288,805,410 300,525,054 312,925,529 326,059,766 1,760,384,679 +Cash flow from investing activities ($) -2,841,076,399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Cash flow from financing activities ($) 2,841,076,399 -16,679,873 -18,014,263 -19,455,404 -21,011,836 -22,692,783 -24,508,206 -26,468,862 -28,586,371 -30,873,281 -33,343,143 -36,010,595 -38,891,442 -42,002,758 -45,362,978 -48,992,016 -52,911,378 -57,144,288 -61,715,831 -66,653,098 -71,985,345 -77,744,173 -83,963,707 -90,680,803 -97,935,268 -105,770,089 -114,231,696 -123,370,232 -133,239,850 -143,899,038 -155,410,962 +Total pre-tax cash flow ($) 0 115,220,286 117,530,673 120,546,719 123,280,064 125,891,309 128,434,674 130,937,024 133,379,619 135,551,409 135,834,486 133,093,445 139,770,491 143,309,952 146,216,391 148,923,941 151,532,945 154,080,965 156,585,409 158,977,767 160,702,497 158,550,580 159,904,457 165,890,130 169,090,764 171,909,470 174,573,714 177,154,822 179,685,679 182,160,727 1,604,973,717 Pre-tax Returns: -Issuance of equity ($) 1,113,812,029 -Total pre-tax cash flow ($) 0 112,087,250 114,081,837 117,084,899 119,843,976 122,497,876 125,089,834 127,667,269 130,129,662 132,740,722 133,764,529 127,147,879 131,077,673 140,161,909 143,347,496 146,191,118 148,897,713 151,526,920 154,119,671 156,623,016 159,208,094 160,965,588 156,894,899 153,193,328 166,166,039 169,590,558 172,500,235 175,236,201 177,886,056 180,484,257 1,633,179,319 -Total pre-tax returns ($) -1,113,812,029 112,087,250 114,081,837 117,084,899 119,843,976 122,497,876 125,089,834 127,667,269 130,129,662 132,740,722 133,764,529 127,147,879 131,077,673 140,161,909 143,347,496 146,191,118 148,897,713 151,526,920 154,119,671 156,623,016 159,208,094 160,965,588 156,894,899 153,193,328 166,166,039 169,590,558 172,500,235 175,236,201 177,886,056 180,484,257 1,633,179,319 +Issuance of equity ($) 951,526,830 +Total pre-tax cash flow ($) 0 115,220,286 117,530,673 120,546,719 123,280,064 125,891,309 128,434,674 130,937,024 133,379,619 135,551,409 135,834,486 133,093,445 139,770,491 143,309,952 146,216,391 148,923,941 151,532,945 154,080,965 156,585,409 158,977,767 160,702,497 158,550,580 159,904,457 165,890,130 169,090,764 171,909,470 174,573,714 177,154,822 179,685,679 182,160,727 1,604,973,717 +Total pre-tax returns ($) -951,526,830 115,220,286 117,530,673 120,546,719 123,280,064 125,891,309 128,434,674 130,937,024 133,379,619 135,551,409 135,834,486 133,093,445 139,770,491 143,309,952 146,216,391 148,923,941 151,532,945 154,080,965 156,585,409 158,977,767 160,702,497 158,550,580 159,904,457 165,890,130 169,090,764 171,909,470 174,573,714 177,154,822 179,685,679 182,160,727 1,604,973,717 After-tax Returns: -Total pre-tax returns ($) -1,113,812,029 112,087,250 114,081,837 117,084,899 119,843,976 122,497,876 125,089,834 127,667,269 130,129,662 132,740,722 133,764,529 127,147,879 131,077,673 140,161,909 143,347,496 146,191,118 148,897,713 151,526,920 154,119,671 156,623,016 159,208,094 160,965,588 156,894,899 153,193,328 166,166,039 169,590,558 172,500,235 175,236,201 177,886,056 180,484,257 1,633,179,319 -Federal ITC total income ($) 0 870,083,836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Total pre-tax returns ($) -951,526,830 115,220,286 117,530,673 120,546,719 123,280,064 125,891,309 128,434,674 130,937,024 133,379,619 135,551,409 135,834,486 133,093,445 139,770,491 143,309,952 146,216,391 148,923,941 151,532,945 154,080,965 156,585,409 158,977,767 160,702,497 158,550,580 159,904,457 165,890,130 169,090,764 171,909,470 174,573,714 177,154,822 179,685,679 182,160,727 1,604,973,717 +Federal ITC total income ($) 0 852,322,920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Federal PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal tax benefit (liability) ($) 0 -13,274,717 -1,573,789 -2,448,848 -3,296,851 -4,147,368 -5,010,954 -5,899,152 -6,794,015 -7,750,781 -8,424,062 -7,603,296 -8,936,953 -11,347,468 -12,622,798 -13,880,527 -15,165,808 -16,494,998 -17,881,055 -19,318,499 -20,847,179 -34,644,429 -47,360,757 -47,891,752 -51,866,860 -54,038,065 -56,224,854 -58,505,108 -60,906,649 -63,447,468 -356,814,554 +Federal tax benefit (liability) ($) 0 -14,337,287 -2,966,423 -3,859,844 -4,719,709 -5,580,057 -6,453,754 -7,348,341 -8,262,392 -9,156,116 -9,707,929 -9,693,178 -11,609,010 -12,942,125 -14,198,245 -15,468,383 -16,776,961 -18,136,165 -19,554,511 -21,023,697 -22,438,233 -35,262,661 -48,882,154 -51,428,361 -53,524,033 -55,659,479 -57,889,600 -60,238,744 -62,724,358 -65,357,050 -352,860,307 State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State tax benefit (liability) ($) 0 -3,013,294 -357,242 -555,876 -748,369 -941,432 -1,137,461 -1,339,078 -1,542,207 -1,759,388 -1,912,219 -1,725,910 -2,028,643 -2,575,818 -2,865,311 -3,150,809 -3,442,562 -3,744,281 -4,058,909 -4,385,202 -4,732,204 -7,864,110 -10,750,652 -10,871,185 -11,773,515 -12,266,367 -12,762,757 -13,280,363 -13,825,501 -14,402,254 -80,995,097 -Total after-tax returns ($) -1,113,812,029 965,883,074 112,150,806 114,080,174 115,798,757 117,409,076 118,941,419 120,429,039 121,793,439 123,230,553 123,428,248 117,818,673 120,112,077 126,238,624 127,859,386 129,159,782 130,289,343 131,287,641 132,179,707 132,919,315 133,628,711 118,457,049 98,783,490 94,430,391 102,525,664 103,286,126 103,512,624 103,450,730 103,153,906 102,634,535 1,195,369,668 +State tax benefit (liability) ($) 0 -3,254,491 -673,363 -876,165 -1,071,350 -1,266,645 -1,464,970 -1,668,036 -1,875,521 -2,078,392 -2,203,651 -2,200,302 -2,635,186 -2,937,797 -3,222,930 -3,511,245 -3,808,285 -4,116,818 -4,438,775 -4,772,273 -5,093,365 -8,004,446 -11,096,001 -11,673,977 -12,149,684 -12,634,420 -13,140,646 -13,673,890 -14,238,112 -14,835,719 -80,097,503 +Total after-tax returns ($) -951,526,830 949,951,427 113,890,886 115,810,709 117,489,005 119,044,607 120,515,950 121,920,646 123,241,707 124,316,901 123,922,907 121,199,965 125,526,295 127,430,030 128,795,216 129,944,314 130,947,699 131,827,983 132,592,124 133,181,797 133,170,899 115,283,473 99,926,301 102,787,792 103,417,047 103,615,571 103,543,467 103,242,187 102,723,210 101,967,958 1,172,015,908 -After-tax net cash flow ($) -14,271,148 -28,266,047 -147,296,467 -302,546,944 -621,431,422 965,883,074 112,150,806 114,080,174 115,798,757 117,409,076 118,941,419 120,429,039 121,793,439 123,230,553 123,428,248 117,818,673 120,112,077 126,238,624 127,859,386 129,159,782 130,289,343 131,287,641 132,179,707 132,919,315 133,628,711 118,457,049 98,783,490 94,430,391 102,525,664 103,286,126 103,512,624 103,450,730 103,153,906 102,634,535 1,195,369,668 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN -8.37 -1.84 3.53 7.63 10.67 12.93 14.62 15.90 16.88 17.63 18.19 18.63 19.00 19.29 19.53 19.72 19.87 19.99 20.10 20.18 20.24 20.28 20.31 20.34 20.37 20.39 20.40 20.41 20.43 20.53 -After-tax cumulative NPV ($) -14,271,148 -38,845,191 -150,176,008 -348,981,040 -703,990,024 -224,276,211 -175,850,991 -133,026,628 -95,234,950 -61,922,585 -32,583,372 -6,757,316 15,949,817 35,923,968 53,317,030 67,751,044 80,544,009 92,233,304 102,526,263 111,565,805 119,493,366 126,438,267 132,517,076 137,831,465 142,476,368 146,056,089 148,651,369 150,808,236 152,844,131 154,627,235 156,180,835 157,530,702 158,700,888 159,713,106 169,962,410 +After-tax net cash flow ($) -12,191,806 -24,147,614 -125,835,003 -258,465,097 -530,887,310 949,951,427 113,890,886 115,810,709 117,489,005 119,044,607 120,515,950 121,920,646 123,241,707 124,316,901 123,922,907 121,199,965 125,526,295 127,430,030 128,795,216 129,944,314 130,947,699 131,827,983 132,592,124 133,181,797 133,170,899 115,283,473 99,926,301 102,787,792 103,417,047 103,615,571 103,543,467 103,242,187 102,723,210 101,967,958 1,172,015,908 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN -0.10 6.42 11.46 15.14 17.79 19.71 21.11 22.14 22.91 23.49 23.91 24.24 24.50 24.70 24.86 24.99 25.08 25.16 25.22 25.27 25.30 25.32 25.34 25.35 25.37 25.38 25.38 25.39 25.39 25.43 +After-tax cumulative NPV ($) -12,191,806 -33,185,350 -128,294,989 -298,133,629 -601,416,917 -129,615,688 -80,439,125 -36,965,139 1,378,162 35,154,575 64,882,176 91,028,108 114,005,255 134,155,490 151,618,258 166,466,515 179,836,141 191,635,757 202,004,052 211,098,501 219,066,120 226,039,604 232,137,380 237,462,264 242,091,253 245,575,071 248,200,375 250,548,131 252,601,727 254,390,518 255,944,581 257,291,727 258,457,027 259,462,671 269,511,736 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -1,113,812,029 569,253,012 -286,473,844 -287,547,537 -288,588,032 -289,631,613 -290,691,228 -291,781,042 -292,879,035 -294,052,982 -294,879,094 -293,872,019 -295,508,409 -298,466,098 -300,030,922 -301,574,149 -303,151,183 -304,782,092 -306,482,777 -308,246,514 -310,122,196 -327,051,352 -342,654,222 -343,305,750 -348,183,188 -350,847,244 -353,530,424 -356,328,284 -359,274,963 -362,392,535 727,787,263 -PPA revenue ($) 0 396,630,062 398,624,650 401,627,711 404,386,789 407,040,688 409,632,646 412,210,081 414,672,474 417,283,535 418,307,342 411,690,692 415,620,486 424,704,722 427,890,308 430,733,931 433,440,526 436,069,733 438,662,484 441,165,829 443,750,907 445,508,401 441,437,712 437,736,141 450,708,852 454,133,370 457,043,047 459,779,014 462,428,869 465,027,070 467,582,405 -Electricity to grid (kWh) 0.0 4,175,053,287 4,196,048,942 4,202,445,447 4,206,228,304 4,208,879,003 4,210,861,909 4,212,673,290 4,213,294,803 4,215,411,003 4,201,560,283 4,111,561,888 4,127,313,666 4,193,786,136 4,201,593,759 4,205,975,308 4,208,977,726 4,211,199,738 4,213,047,288 4,214,020,721 4,215,760,090 4,209,660,783 4,148,850,677 4,092,139,300 4,191,081,013 4,200,660,165 4,205,401,615 4,208,503,557 4,210,789,188 4,212,583,291 4,213,972,647 +Annual costs ($) -951,526,830 567,653,588 -270,717,339 -271,813,562 -272,868,612 -273,924,255 -274,996,277 -276,093,931 -277,215,466 -278,312,061 -278,989,132 -278,971,033 -281,321,750 -282,957,475 -284,498,728 -286,057,181 -287,662,799 -289,330,535 -291,070,839 -292,873,523 -294,609,152 -310,344,660 -327,055,708 -330,179,891 -332,751,270 -335,371,452 -338,107,800 -340,990,187 -344,040,022 -347,270,322 720,502,837 +PPA revenue ($) 0 382,297,839 384,608,226 387,624,272 390,357,617 392,968,862 395,512,227 398,014,577 400,457,172 402,628,962 402,912,039 400,170,998 406,848,044 410,387,505 413,293,944 416,001,494 418,610,498 421,158,518 423,662,962 426,055,320 427,780,050 425,628,133 426,982,010 432,967,683 436,168,317 438,987,023 441,651,267 444,232,375 446,763,232 449,238,280 451,513,071 +Electricity to grid (kWh) 0.0 4,024,187,776 4,048,507,637 4,055,919,971 4,060,303,898 4,063,373,616 4,065,709,569 4,067,599,147 4,068,859,708 4,067,370,054 4,046,926,872 3,996,514,514 4,040,199,049 4,052,409,446 4,058,267,321 4,062,117,901 4,064,968,907 4,067,199,592 4,068,987,346 4,069,684,976 4,064,032,399 4,021,809,819 4,012,988,812 4,047,561,777 4,055,870,532 4,060,558,901 4,063,776,840 4,066,200,226 4,068,140,886 4,069,555,940 4,069,151,686 -Present value of annual costs ($) 2,280,625,999 -Present value of annual energy nominal (kWh) 27,506,089,921 -LCOE Levelized cost of energy nominal (cents/kWh) 8.29 +Present value of annual costs ($) 2,031,413,982 +Present value of annual energy nominal (kWh) 26,564,482,989 +LCOE Levelized cost of energy nominal (cents/kWh) 7.65 -Present value of PPA revenue ($) 2,696,638,645 -Present value of annual energy nominal (kWh) 27,506,089,921 +Present value of PPA revenue ($) 2,604,418,799 +Present value of annual energy nominal (kWh) 26,564,482,989 LPPA Levelized PPA price nominal (cents/kWh) 9.80 PROJECT STATE INCOME TAXES -EBITDA ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 +EBITDA ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 State taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State taxable IBI income ($) 0 State taxable CBI income ($) 0 minus: -Debt interest payment ($) 0 142,917,394 141,655,800 140,293,279 138,821,756 137,232,511 135,516,127 133,662,432 131,660,441 129,498,291 127,163,169 124,641,237 121,917,551 118,975,969 115,799,062 112,368,001 108,662,456 104,660,467 100,338,319 95,670,400 90,629,046 85,184,385 79,304,150 72,953,497 66,094,791 58,687,389 50,687,395 42,047,402 32,716,208 22,638,520 11,754,616 -Total state tax depreciation ($) 0 61,630,938 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 61,630,938 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 151,163,966 149,829,576 148,388,435 146,832,002 145,151,055 143,335,633 141,374,976 139,257,467 136,970,558 134,500,695 131,833,244 128,952,396 125,841,081 122,480,860 118,851,822 114,932,461 110,699,550 106,128,007 101,190,741 95,858,493 90,099,665 83,880,132 77,163,035 69,908,571 62,073,749 53,612,142 44,473,607 34,603,988 23,944,800 12,432,877 +Total state tax depreciation ($) 0 60,372,873 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 60,372,873 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 66,226,233 7,851,476 12,217,059 16,447,660 20,690,804 24,999,146 29,430,277 33,894,660 38,667,871 42,026,800 37,932,082 44,585,562 56,611,379 62,973,873 69,248,557 75,660,697 82,291,892 89,206,791 96,378,056 104,004,487 172,837,581 236,278,065 238,927,147 258,758,564 269,590,484 280,500,156 291,876,115 303,857,164 316,533,053 1,780,112,019 +State taxable income ($) 0 71,527,285 14,799,188 19,256,375 23,546,153 27,838,345 32,197,133 36,660,139 41,220,244 45,678,942 48,431,883 48,358,293 57,916,186 64,566,962 70,833,622 77,170,211 83,698,576 90,479,506 97,555,494 104,885,118 111,942,096 175,921,880 243,868,163 256,570,934 267,026,032 277,679,559 288,805,410 300,525,054 312,925,529 326,059,766 1,760,384,679 State income tax rate (frac) 0.0 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 -State tax benefit (liability) ($) 0 -3,013,294 -357,242 -555,876 -748,369 -941,432 -1,137,461 -1,339,078 -1,542,207 -1,759,388 -1,912,219 -1,725,910 -2,028,643 -2,575,818 -2,865,311 -3,150,809 -3,442,562 -3,744,281 -4,058,909 -4,385,202 -4,732,204 -7,864,110 -10,750,652 -10,871,185 -11,773,515 -12,266,367 -12,762,757 -13,280,363 -13,825,501 -14,402,254 -80,995,097 +State tax benefit (liability) ($) 0 -3,254,491 -673,363 -876,165 -1,071,350 -1,266,645 -1,464,970 -1,668,036 -1,875,521 -2,078,392 -2,203,651 -2,200,302 -2,635,186 -2,937,797 -3,222,930 -3,511,245 -3,808,285 -4,116,818 -4,438,775 -4,772,273 -5,093,365 -8,004,446 -11,096,001 -11,673,977 -12,149,684 -12,634,420 -13,140,646 -13,673,890 -14,238,112 -14,835,719 -80,097,503 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 +EBITDA ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State tax benefit (liability) ($) 0 -3,013,294 -357,242 -555,876 -748,369 -941,432 -1,137,461 -1,339,078 -1,542,207 -1,759,388 -1,912,219 -1,725,910 -2,028,643 -2,575,818 -2,865,311 -3,150,809 -3,442,562 -3,744,281 -4,058,909 -4,385,202 -4,732,204 -7,864,110 -10,750,652 -10,871,185 -11,773,515 -12,266,367 -12,762,757 -13,280,363 -13,825,501 -14,402,254 -80,995,097 +State tax benefit (liability) ($) 0 -3,254,491 -673,363 -876,165 -1,071,350 -1,266,645 -1,464,970 -1,668,036 -1,875,521 -2,078,392 -2,203,651 -2,200,302 -2,635,186 -2,937,797 -3,222,930 -3,511,245 -3,808,285 -4,116,818 -4,438,775 -4,772,273 -5,093,365 -8,004,446 -11,096,001 -11,673,977 -12,149,684 -12,634,420 -13,140,646 -13,673,890 -14,238,112 -14,835,719 -80,097,503 State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Federal taxable IBI income ($) 0 Federal taxable CBI income ($) 0 Federal taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 minus: -Debt interest payment ($) 0 142,917,394 141,655,800 140,293,279 138,821,756 137,232,511 135,516,127 133,662,432 131,660,441 129,498,291 127,163,169 124,641,237 121,917,551 118,975,969 115,799,062 112,368,001 108,662,456 104,660,467 100,338,319 95,670,400 90,629,046 85,184,385 79,304,150 72,953,497 66,094,791 58,687,389 50,687,395 42,047,402 32,716,208 22,638,520 11,754,616 -Total federal tax depreciation ($) 0 61,630,938 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 123,261,877 61,630,938 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 151,163,966 149,829,576 148,388,435 146,832,002 145,151,055 143,335,633 141,374,976 139,257,467 136,970,558 134,500,695 131,833,244 128,952,396 125,841,081 122,480,860 118,851,822 114,932,461 110,699,550 106,128,007 101,190,741 95,858,493 90,099,665 83,880,132 77,163,035 69,908,571 62,073,749 53,612,142 44,473,607 34,603,988 23,944,800 12,432,877 +Total federal tax depreciation ($) 0 60,372,873 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 120,745,747 60,372,873 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 63,212,940 7,494,234 11,661,183 15,699,291 19,749,372 23,861,685 28,091,199 32,352,453 36,908,483 40,114,580 36,206,172 42,556,919 54,035,562 60,108,562 66,097,747 72,218,135 78,547,611 85,147,882 91,992,855 99,272,283 164,973,471 225,527,413 228,055,962 246,985,050 257,324,117 267,737,399 278,595,752 290,031,663 302,130,799 1,699,116,922 +Federal taxable income ($) 0 68,272,794 14,125,825 18,380,210 22,474,803 26,571,701 30,732,163 34,992,102 39,344,722 43,600,551 46,228,232 46,157,991 55,281,000 61,629,165 67,610,692 73,658,966 79,890,291 86,362,688 93,116,719 100,112,845 106,848,730 167,917,434 232,772,162 244,896,956 254,876,347 265,045,139 275,664,764 286,851,164 298,687,418 311,224,046 1,680,287,176 Federal income tax rate (frac) 0.0 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 -Federal tax benefit (liability) ($) 0 -13,274,717 -1,573,789 -2,448,848 -3,296,851 -4,147,368 -5,010,954 -5,899,152 -6,794,015 -7,750,781 -8,424,062 -7,603,296 -8,936,953 -11,347,468 -12,622,798 -13,880,527 -15,165,808 -16,494,998 -17,881,055 -19,318,499 -20,847,179 -34,644,429 -47,360,757 -47,891,752 -51,866,860 -54,038,065 -56,224,854 -58,505,108 -60,906,649 -63,447,468 -356,814,554 +Federal tax benefit (liability) ($) 0 -14,337,287 -2,966,423 -3,859,844 -4,719,709 -5,580,057 -6,453,754 -7,348,341 -8,262,392 -9,156,116 -9,707,929 -9,693,178 -11,609,010 -12,942,125 -14,198,245 -15,468,383 -16,776,961 -18,136,165 -19,554,511 -21,023,697 -22,438,233 -35,262,661 -48,882,154 -51,428,361 -53,524,033 -55,659,479 -57,889,600 -60,238,744 -62,724,358 -65,357,050 -352,860,307 CASH INCENTIVES Federal IBI income ($) 0 @@ -396,30 +405,30 @@ Federal PTC income ($) State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Federal ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal ITC percent income ($) 0 870,083,836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal ITC total income ($) 0 870,083,836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal ITC percent income ($) 0 852,322,920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal ITC total income ($) 0 852,322,920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State ITC percent income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DEBT REPAYMENT -Debt balance ($) 1,786,467,424 1,770,697,502 1,753,665,986 1,735,271,949 1,715,406,389 1,693,951,584 1,670,780,394 1,645,755,510 1,618,728,634 1,589,539,609 1,558,015,461 1,523,969,382 1,487,199,617 1,447,488,270 1,404,600,015 1,358,280,700 1,308,255,840 1,254,228,991 1,195,879,995 1,132,863,078 1,064,804,808 991,301,877 911,918,711 826,184,891 733,592,367 633,592,440 525,592,519 408,952,604 282,981,497 146,932,700 0 -Debt interest payment ($) 0 142,917,394 141,655,800 140,293,279 138,821,756 137,232,511 135,516,127 133,662,432 131,660,441 129,498,291 127,163,169 124,641,237 121,917,551 118,975,969 115,799,062 112,368,001 108,662,456 104,660,467 100,338,319 95,670,400 90,629,046 85,184,385 79,304,150 72,953,497 66,094,791 58,687,389 50,687,395 42,047,402 32,716,208 22,638,520 11,754,616 -Debt principal payment ($) 0 15,769,922 17,031,516 18,394,037 19,865,560 21,454,805 23,171,189 25,024,885 27,026,875 29,189,025 31,524,147 34,046,079 36,769,766 39,711,347 42,888,255 46,319,315 50,024,860 54,026,849 58,348,997 63,016,917 68,058,270 73,502,931 79,383,166 85,733,819 92,592,525 99,999,927 107,999,921 116,639,915 125,971,108 136,048,796 146,932,700 -Debt total payment ($) 0 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 +Debt balance ($) 1,889,549,569 1,872,869,696 1,854,855,433 1,835,400,029 1,814,388,193 1,791,695,410 1,767,187,205 1,740,718,342 1,712,131,971 1,681,258,691 1,647,915,547 1,611,904,953 1,573,013,510 1,531,010,753 1,485,647,775 1,436,655,758 1,383,744,380 1,326,600,092 1,264,884,261 1,198,231,164 1,126,245,818 1,048,501,645 964,537,939 873,857,135 775,921,868 670,151,778 555,920,082 432,549,850 299,310,000 155,410,962 0 +Debt interest payment ($) 0 151,163,966 149,829,576 148,388,435 146,832,002 145,151,055 143,335,633 141,374,976 139,257,467 136,970,558 134,500,695 131,833,244 128,952,396 125,841,081 122,480,860 118,851,822 114,932,461 110,699,550 106,128,007 101,190,741 95,858,493 90,099,665 83,880,132 77,163,035 69,908,571 62,073,749 53,612,142 44,473,607 34,603,988 23,944,800 12,432,877 +Debt principal payment ($) 0 16,679,873 18,014,263 19,455,404 21,011,836 22,692,783 24,508,206 26,468,862 28,586,371 30,873,281 33,343,143 36,010,595 38,891,442 42,002,758 45,362,978 48,992,016 52,911,378 57,144,288 61,715,831 66,653,098 71,985,345 77,744,173 83,963,707 90,680,803 97,935,268 105,770,089 114,231,696 123,370,232 133,239,850 143,899,038 155,410,962 +Debt total payment ($) 0 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 DSCR (DEBT FRACTION) -EBITDA ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 +EBITDA ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 minus: Reserves major equipment 1 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserves major equipment 2 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserves major equipment 3 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserves receivables funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 equals: -Cash available for debt service (CAFDS) ($) 0 270,774,566 272,769,153 275,772,215 278,531,293 281,185,192 283,777,150 286,354,585 288,816,978 291,428,039 292,451,845 285,835,195 289,764,990 298,849,225 302,034,812 304,878,435 307,585,030 310,214,236 312,806,987 315,310,333 317,895,410 319,652,904 315,582,215 311,880,644 324,853,355 328,277,874 331,187,551 333,923,517 336,573,372 339,171,573 1,791,866,635 -Debt total payment ($) 0 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 158,687,316 -DSCR (pre-tax) 0.0 1.71 1.72 1.74 1.76 1.77 1.79 1.80 1.82 1.84 1.84 1.80 1.83 1.88 1.90 1.92 1.94 1.95 1.97 1.99 2.0 2.01 1.99 1.97 2.05 2.07 2.09 2.10 2.12 2.14 11.29 +Cash available for debt service (CAFDS) ($) 0 283,064,124 285,374,511 288,390,557 291,123,902 293,735,148 296,278,512 298,780,862 301,223,458 303,395,247 303,678,325 300,937,284 307,614,330 311,153,790 314,060,229 316,767,780 319,376,783 321,924,803 324,429,248 326,821,606 328,546,336 326,394,419 327,748,295 333,733,969 336,934,602 339,753,308 342,417,552 344,998,660 347,529,517 350,004,566 1,772,817,556 +Debt total payment ($) 0 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 167,843,838 +DSCR (pre-tax) 0.0 1.69 1.70 1.72 1.73 1.75 1.77 1.78 1.79 1.81 1.81 1.79 1.83 1.85 1.87 1.89 1.90 1.92 1.93 1.95 1.96 1.94 1.95 1.99 2.01 2.02 2.04 2.06 2.07 2.09 10.56 RESERVES Reserves working capital funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/examples/Fervo_Project_Cape-4.txt b/tests/examples/Fervo_Project_Cape-4.txt index 8d21a034..e49aefb8 100644 --- a/tests/examples/Fervo_Project_Cape-4.txt +++ b/tests/examples/Fervo_Project_Cape-4.txt @@ -3,87 +3,104 @@ # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* -Economic Model, 5, -- SAM Single Owner PPA +Economic Model, 5, -- The SAM Single Owner PPA economic model is used to calculate financial results including LCOE, NPV, IRR, and pro-forma cash flow analysis. See [GEOPHIRES documentation of SAM Economic Models](https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html) for details on how System Advisor Model financial models are integrated into GEOPHIRES. -Starting Electricity Sale Price, 0.095, -- Upper end of ranges given in https://atb.nrel.gov/electricity/2024/geothermal -Electricity Escalation Rate Per Year, 0.00057, -- calibrated to reach 10 cents/kWh at project year 11 +Starting Electricity Sale Price, 0.095, -- Aligns with Geysers - Sacramento pricing in [2024b ATB](https://atb.nrel.gov/electricity/2024/geothermal) (NREL, 2025). See Sensitivity Analysis for effect of different prices on results. +Electricity Escalation Rate Per Year, 0.00057, -- Calibrated to reach 10¢/kWh at project year 11 Ending Electricity Sale Price, 1, -- Note that this value does not directly determine price at the end of the project life, but rather as a cap as the maximum price to which the starting price can escalate. Electricity Escalation Start Year, 1 -Discount Rate, 0.12 -Fraction of Investment in Bonds, .6, -- Based on fraction of CAPEX with $1 billion in sponsor equity per https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/ -Inflated Bond Interest Rate, .08 +Discount Rate, 0.12, -- Typical discount rates for high-risk projects may be 12–15% +Fraction of Investment in Bonds, .65, -- Approximate debt required to cover CAPEX after $1 billion sponsor equity per [Matson, 2024](https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/). Note that this source says that Fervo ultimately wants to target “15% sponsor equity, 15% bridge loan, and 70% construction to term loans”, but this case study does not attempt to model that capital structure precisely. +Inflated Bond Interest Rate, .08, -- Higher than typical debt annual interest rate Inflated Bond Interest Rate During Construction, 0.1, -- Higher interest rate during construction to account for increased risk of default. Inflation Rate, .027, -- US inflation as of December 2025 -Construction Years, 5, 2023–2028 +Construction Years, 5, -- Ground broken in 2023 (Fervo Energy, 2023). Expected to reach full scale production in 2028 (Fervo Energy, 2025). See [GEOPHIRES documentation](SAM-EM_Multiple-Construction-Years.html) for details on how construction years affect CAPEX, IRR, and other calculations. Construction CAPEX Schedule, 0.014,0.027,0.137,0.274,0.548 -Investment Tax Credit Rate, 0.3 +Investment Tax Credit Rate, 0.3, -- Geothermal Drilling and Completions Apprenticeship Program ensures compliance with ITC labor requirements (Southern Utah University, 2024). Combined Income Tax Rate, .2555, -- Federal Corporate Income Tax Rate of 21% plus Utah Corporate Franchise and Income Tax Rate of 4.55%. (Note: This input uses a simple summation of statutory rates; the effective combined rate calculated in the model may differ due to standard federal-state tax interactions.) Property Tax Rate, 0.0022, -- Utah Inland Port Authority (UIPA) tax differential incentive -Capital Cost for Power Plant for Electricity Generation, 1900, -- https://betterbuildingssolutioncenter.energy.gov/sites/default/files/attachments/Waste_Heat_to_Power_Fact_Sheet.pdf +Capital Cost for Power Plant for Electricity Generation, 1900, -- [US DOE, 2021](https://betterbuildingssolutioncenter.energy.gov/sites/default/files/attachments/Waste_Heat_to_Power_Fact_Sheet.pdf). Pricing information not publicly available for Turboden or Baker Hughes Gen 2 ORC units (Turboden, 2025; Jacobs, 2025). Exploration Capital Cost, 30, -- Equivalent to 2024b ATB NF-EGS conservative scenario exploration assumption of 5 full-size wells (NREL, 2025), plus $1M for geophysical and field work, plus 15% contingency, plus 12% indirect costs. -Well Drilling Cost Correlation, 3, -- VERTICAL_LARGE (2025 NREL Geothermal Drilling Cost Curve Update) -Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- NREL Geothermal 2024b ATB https://atb.nrel.gov/electricity/2024b/geothermal +Well Drilling Cost Correlation, 3, -- 2025 NREL Geothermal Drilling Cost Curve Update (Akindipe and Witter, 2025). +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB ([NREL, 2025](https://atb.nrel.gov/electricity/2024b/geothermal)). Note: Fervo has claimed lower drilling costs equivalent to an adjustment factor of 0.8 (Latimer, 2025); the case study conservatively uses the higher ATB-aligned value. -Reservoir Stimulation Capital Cost per Injection Well, 4 -Reservoir Stimulation Capital Cost per Production Well, 4 +Reservoir Stimulation Capital Cost per Injection Well, 4, -- The baseline stimulation cost is calibrated from costs of high-intensity U.S. shale wells (Baytex Energy, 2024; Quantum Proppant Technologies, 2020), which are the closest technological analogue for multi-stage EGS (Gradl, 2018). Costs are also driven by the requirement for high-strength ceramic proppant rather than standard sand, which would crush or chemically degrade (diagenesis) over a 30-year lifecycle at 200℃ (Ko et al., 2023; Shiozawa & McClure, 2014) and the premium for ultra-high-temperature (HT) downhole tools. Note that all-in costs per well are higher than the baseline cost because they include additional indirect costs and contingency. +Reservoir Stimulation Capital Cost per Production Well, 4, -- See Reservoir Stimulation Capital Cost per Injection Well -Field Gathering System Capital Cost Adjustment Factor, 0.54, -- Gathering costs represent 2% of facilities CAPEX per https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/ +Field Gathering System Capital Cost Adjustment Factor, 0.54, -- Gathering costs represent 2% of facilities CAPEX per [Matson, 2024](https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/). # *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** # ************************************************* End-Use Option, 1, -- Electricity Power Plant Type, 2, -- Supercritical ORC -Plant Lifetime, 30, -- Per https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/ +Plant Lifetime, 30, -- 30-year well life per [Geothermal Mythbusting: Water Use and Impacts](https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/) (Fervo Energy, 2025). -Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) -Reservoir Depth, 2.5908, -- 8500 feet per https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf +Reservoir Model, 1 -Gradient 1, 72.23, -- temperature at 8500 ft: 200 degC (https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf); 228.89 degC @ 9824 ft (https://doi.org/10.31223/X5VH8C) -Number of Segments, 1 +Surface Temperature, 13, -- Surface temperature near Milford, UT (38.4987670, -112.9163432) ([Project InnerSpace, 2025](https://geomap.projectinnerspace.org/test/)). -Reservoir Density, 2800, -- per https://doi.org/10.31223/X52X0B: phyllite + quartzite + diorite + granodiorite +Number of Segments, 3 +Gradient 1, 74, -- Sedimentary overburden. 200℃ at 8500 ft depth (Fercho et al. 2024); 228.89℃ at 9824 ft (Norbeck et al. 2024). +Thickness 1, 2.5 +Gradient 2, 41, -- Crystalline reservoir +Thickness 2, 0.5 +Gradient 3, 39.1, -- Sugarloaf appraisal + +Reservoir Depth, 2.68, -- Extrapolated from surface temperature, gradient, and average production temperature of shallower and deeper producers in Singh et al., 2025. + +Reservoir Density, 2800, -- phyllite + quartzite + diorite + granodiorite ([Norbeck et al., 2023](https://doi.org/10.31223/X52X0B)) Reservoir Heat Capacity, 790 Reservoir Thermal Conductivity, 3.05 Reservoir Porosity, 0.0118 -Productivity Index, 2.494, -- [kg/s/bar] NREL ATB conservative scenario (https://atb.nrel.gov/electricity/2024/geothermal) -Injectivity Index, 3.015, -- [kg/s/bar] NREL ATB conservative scenario (https://atb.nrel.gov/electricity/2024/geothermal) - Reservoir Volume Option, 1, -- FRAC_NUM_SEP: Reservoir volume calculated with fracture separation and number of fractures as input -Number of Fractures per Stimulated Well, 200, -- 25 stages with 8 clusters per stage -Fracture Separation, 7.315 -Fracture Shape, 2, -- CIRCULAR_DIAMETER -Fracture Height, 186.16, -- Approximates ellipsoidal fracture with 228 meter height and 152 meter length -Number of Doublets, 52 - -Production Flow Rate per Well, 120, -- Maximum Fervo-tested flow rate -Production Well Diameter, 8.535, -- Inner diameter for 9-5/8" casing size -Injection Well Diameter, 8.535, -- Inner diameter for 9-5/8" casing size - -Ramey Production Wellbore Model, 1 -Injection Temperature, 53.6, -- GEOPHIRES model-calculated reinjection temperature -Injection Wellbore Temperature Gain, 3 -Ambient Temperature, 11.17, -- https://www.ncei.noaa.gov/access/us-climate-normals/#dataset=normals-annualseasonal&timeframe=30&station=USC00425654 -Surface Temperature, 13, -- Project InnerSpace GeoMap https://geomap.projectinnerspace.org/test/ +Number of Fractures per Stimulated Well, 150, -- The model assumes an Extreme Limited Entry stimulation design (Fervo Energy, 2023) utilizing 12 stages with 15 clusters per stage (derived from Singh et al., 2025) and 81–85% stimulation success rate per 2024b ATB Moderate Scenario (NREL, 2025). +Fracture Separation, 9.14, -- 30 foot cluster spacing per [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf) -Maximum Drawdown, 0.02, -- Drawdown value that prevents minimum net electricity generation from going below 500 MWe -Water Loss Fraction, 0.15, -- Estimated to be between 10 and 20% +Fracture Shape, 4, -- Bench design and fracture geometry Singh et al., 2025 are given in rectangular dimensions. +Fracture Width, 304.8, -- Matches intra-bench well spacing of 500 ft (corresponding to fracture length of 1000 ft) (Singh. et al., 2025) +Fracture Height, 135, -- Actual fracture geometry is irregular and heterogeneous; this height complies with the minimum height required by the implemented bench design (200 ft; 60.96 meters) and yields an effective fracture surface area consistent with simulation results in Singh. et al., 2025. + +Water Loss Fraction, 0.01, -- "Long-term modeling, calibrated to early field data, predicts circulation recapture rates exceeding 99%" ([Geothermal Mythbusting: Water Use and Impacts](https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/); Fervo Energy, 2025). Modeling in Singh et al., 2025 predicts fluid loss of 0.36% to 0.49%. +Water Cost Adjustment Factor, 2, -- Local scarcity may increase procurement costs + +Ambient Temperature, 11.17, -- Average annual temperature of Milford, Utah ([NCEI](https://www.ncei.noaa.gov/access/us-climate-normals/#dataset=normals-annualseasonal&timeframe=30&station=USC00425654)). Note that this value affects heat to power conversion efficiency. The effects of hourly and seasonal ambient temperature fluctuations on efficiency and power generation are not modeled in this version of the case study. Utilization Factor, .9 -Plant Outlet Pressure, 1000 psi, -- https://doi.org/10.31223/X5VH8C -Production Wellhead Pressure, 325 psi, -- https://doi.org/10.31223/X5VH8C +Plant Outlet Pressure, 2000 psi, -- McClure, 2024; Singh et al., 2025. Circulation Pump Efficiency, 0.80 -Well Geometry Configuration, 4, -- L -Number of Multilateral Sections, 0, -- This parameter is set to 0 because, for this case study, the cost of horizontal drilling (which would otherwise account for approximately 118 multilateral sections) is included within the 'vertical drilling cost.' This approach allows us to more directly convey the overall well drilling and completion cost, which is under $4 million. -Nonvertical Length per Multilateral Section, 4800 feet, -- Fervo presentation at Payne Institute, Dec 2, 2025 -Multilaterals Cased, True +# *** Well Bores Parameters *** + +Number of Production Wells, 56, -- Number of production wells required to produce net generation greater than 500 MW (PPA minimum) and total generation less than 600 MW (Gen 2 ORCs gross capacity). +Number of Injection Wells per Production Well, 0.666, -- 5-well benches with 3:2 production:injection ratio (Singh et al., 2025) + +# Well Geometry Configuration, 4, -- L +Number of Multilateral Sections, 0, -- This parameter is set to 0 because, for this case study, the cost of horizontal drilling is included within the 'vertical drilling cost.' This approach allows us to more directly convey the overall well drilling and completion cost. +Nonvertical Length per Multilateral Section, 4700 feet, -- [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf). +# Multilaterals Cased, True + +Production Flow Rate per Well, 106, -- Cape Station pilot testing reported a sustained flow rate of 95–100 kg/s and maximum flow rate of 107 kg/s (Fervo Energy, 2024). Modeling by Singh et al. suggests initial flow rates of 120–130 kg/sec (Singh et al., 2025). The ATB Advanced Scenario models sustained flow rates of 110 kg/s (NREL, 2024). +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size, the next standard casing size up from 7 inches, implied by announcement of “increasing casing diameter” (Fervo Energy, 2025). +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 300 psi, -- [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf) + +Productivity Index, 1.247, -- 50% of ATB Conservative Scenario (NREL, 2025) per analyses that suggest lower productivity (Xing et al., 2025; Yearsley and Kombrink, 2024). +Injectivity Index, 1.5075, -- See Productivity Index + +Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature (Beckers and McCabe, 2019). Close to upper bound of Project Red injection temperatures (75–125℉; 23.89–51.67℃) (Norbeck and Latimer, 2023). +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Wellbore Temperature Gain, 3 + + +Maximum Drawdown, 0.003, -- This value represents the drop in production temperature compared to the initial temperature that is allowed before the wellfield is redrilled. It is tuned to keep minimum net electricity generation over the project lifetime ≥500 MWe. # *** SIMULATION PARAMETERS *** # ***************************** diff --git a/tests/examples/Fervo_Project_Cape-5.out b/tests/examples/Fervo_Project_Cape-5.out index 8bb2ef11..af2bad3e 100644 --- a/tests/examples/Fervo_Project_Cape-5.out +++ b/tests/examples/Fervo_Project_Cape-5.out @@ -4,22 +4,22 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.10.24 - Simulation Date: 2026-01-06 - Simulation Time: 09:20 - Calculation Time: 1.803 sec + GEOPHIRES Version: 3.10.25 + Simulation Date: 2026-01-12 + Simulation Time: 16:07 + Calculation Time: 1.943 sec ***SUMMARY OF RESULTS*** End-Use Option: Electricity - Average Net Electricity Production: 112.53 MW - Electricity breakeven price: 8.43 cents/kWh - Total CAPEX: 598.76 MUSD - Number of production wells: 11 - Number of injection wells: 11 - Flowrate per production well: 120.0 kg/sec - Well depth: 2.6 kilometer - Geothermal gradient: 72.23 degC/km + Average Net Electricity Production: 132.98 MW + Electricity breakeven price: 7.48 cents/kWh + Total CAPEX: 683.48 MUSD + Number of production wells: 13 + Number of injection wells: 9 + Flowrate per production well: 110.0 kg/sec + Well depth: 2.7 kilometer + Geothermal gradient: 74 degC/km ***ECONOMIC PARAMETERS*** @@ -27,27 +27,27 @@ Simulation Metadata Economic Model = SAM Single Owner PPA Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % - WACC: 9.58 % + WACC: 9.13 % Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 54.25 MUSD - After-tax IRR: 22.91 % - Project VIR=PI=PIR: 1.29 - Project MOIC: 3.78 - Project Payback Period: 4.58 yr - Estimated Jobs Created: 264 + Project NPV: 114.56 MUSD + After-tax IRR: 32.09 % + Project VIR=PI=PIR: 1.62 + Project MOIC: 5.14 + Project Payback Period: 3.09 yr + Estimated Jobs Created: 326 ***ENGINEERING PARAMETERS*** - Number of Production Wells: 11 - Number of Injection Wells: 11 - Well depth: 2.6 kilometer - Water loss rate: 15.0 % + Number of Production Wells: 13 + Number of Injection Wells: 9 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % Pump efficiency: 80.0 % Injection temperature: 56.6 degC Production Wellbore heat transmission calculated with Ramey's model - Average production well temperature drop: 0.4 degC - Flowrate per production well: 120.0 kg/sec + Average production well temperature drop: 0.5 degC + Flowrate per production well: 110.0 kg/sec Injection well casing ID: 8.535 in Production well casing ID: 8.535 in Number of times redrilling: 2 @@ -58,25 +58,26 @@ Simulation Metadata Maximum reservoir temperature: 500.0 degC Number of segments: 1 - Geothermal gradient: 72.23 degC/km + Geothermal gradient: 74 degC/km ***RESERVOIR PARAMETERS*** Reservoir Model = Multiple Parallel Fractures Model (Gringarten) - Bottom-hole temperature: 200.13 degC - Fracture model = Circular fracture with known diameter - Well separation: fracture diameter: 186.16 meter - Fracture area: 27218.40 m**2 + Bottom-hole temperature: 211.32 degC + Fracture model = Rectangular + Well separation: fracture height: 135.00 meter + Fracture width: 304.80 meter + Fracture area: 41148.00 m**2 Reservoir volume calculated with fracture separation and number of fractures as input - Number of fractures: 4400 - Fracture separation: 7.32 meter - Reservoir volume: 875852380 m**3 - Reservoir hydrostatic pressure: 24524.09 kPa - Plant outlet pressure: 6894.76 kPa - Production wellhead pressure: 2240.80 kPa - Productivity Index: 2.49 kg/sec/bar - Injectivity Index: 3.02 kg/sec/bar + Number of fractures: 3300 + Fracture separation: 9.14 meter + Reservoir volume: 1240729883 m**3 + Reservoir hydrostatic pressure: 25257.02 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2303.22 kPa + Productivity Index: 1.25 kg/sec/bar + Injectivity Index: 1.51 kg/sec/bar Reservoir density: 2800.00 kg/m**3 Reservoir thermal conductivity: 3.05 W/m/K Reservoir heat capacity: 790.00 J/kg/K @@ -84,57 +85,57 @@ Simulation Metadata ***RESERVOIR SIMULATION RESULTS*** - Maximum Production Temperature: 198.5 degC - Average Production Temperature: 198.1 degC - Minimum Production Temperature: 193.8 degC - Initial Production Temperature: 197.2 degC - Average Reservoir Heat Extraction: 781.30 MW + Maximum Production Temperature: 209.3 degC + Average Production Temperature: 209.0 degC + Minimum Production Temperature: 207.4 degC + Initial Production Temperature: 207.8 degC + Average Reservoir Heat Extraction: 912.82 MW Production Wellbore Heat Transmission Model = Ramey Model - Average Production Well Temperature Drop: 0.4 degC - Average Injection Well Pump Pressure Drop: -1694.7 kPa - Average Production Well Pump Pressure Drop: 6122.2 kPa + Average Production Well Temperature Drop: 0.5 degC + Average Injection Well Pump Pressure Drop: -2115.1 kPa + Average Production Well Pump Pressure Drop: 9781.2 kPa ***CAPITAL COSTS (M$)*** - Drilling and completion costs: 98.11 MUSD - Drilling and completion costs per well: 4.46 MUSD + Drilling and completion costs: 102.27 MUSD + Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 106.26 MUSD - Surface power plant costs: 304.84 MUSD - Field gathering system costs: 9.36 MUSD - Total surface equipment costs: 314.20 MUSD + Surface power plant costs: 375.72 MUSD + Field gathering system costs: 11.22 MUSD + Total surface equipment costs: 386.94 MUSD Exploration costs: 30.00 MUSD - Overnight Capital Cost: 548.57 MUSD - Interest during construction: 8.23 MUSD - Inflation costs during construction: 41.97 MUSD - Total CAPEX: 598.76 MUSD + Overnight Capital Cost: 625.47 MUSD + Interest during construction: 10.16 MUSD + Inflation costs during construction: 47.85 MUSD + Total CAPEX: 683.48 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 1.77 MUSD/yr - Power plant maintenance costs: 6.67 MUSD/yr - Water costs: 5.20 MUSD/yr - Redrilling costs: 13.62 MUSD/yr - Total operating and maintenance costs: 27.26 MUSD/yr + Wellfield maintenance costs: 1.87 MUSD/yr + Power plant maintenance costs: 7.83 MUSD/yr + Water costs: 0.75 MUSD/yr + Redrilling costs: 13.90 MUSD/yr + Total operating and maintenance costs: 24.35 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.18 MW/(kg/s) - Maximum Total Electricity Generation: 124.57 MW - Average Total Electricity Generation: 123.98 MW - Minimum Total Electricity Generation: 117.39 MW - Initial Total Electricity Generation: 122.60 MW - Maximum Net Electricity Generation: 113.13 MW - Average Net Electricity Generation: 112.53 MW - Minimum Net Electricity Generation: 105.77 MW - Initial Net Electricity Generation: 111.13 MW - Average Annual Total Electricity Generation: 977.50 GWh - Average Annual Net Electricity Generation: 887.18 GWh - Initial pumping power/net installed power: 10.32 % - Average Pumping Power: 11.46 MW - Heat to Power Conversion Efficiency: 14.40 % + Initial geofluid availability: 0.20 MW/(kg/s) + Maximum Total Electricity Generation: 153.53 MW + Average Total Electricity Generation: 153.08 MW + Minimum Total Electricity Generation: 150.24 MW + Initial Total Electricity Generation: 151.01 MW + Maximum Net Electricity Generation: 133.45 MW + Average Net Electricity Generation: 132.98 MW + Minimum Net Electricity Generation: 130.07 MW + Initial Net Electricity Generation: 130.89 MW + Average Annual Total Electricity Generation: 1206.88 GWh + Average Annual Net Electricity Generation: 1048.43 GWh + Initial pumping power/net installed power: 15.37 % + Average Pumping Power: 20.10 MW + Heat to Power Conversion Efficiency: 14.57 % ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * @@ -142,36 +143,36 @@ Simulation Metadata YEAR THERMAL GEOFLUID PUMP NET FIRST LAW DRAWDOWN TEMPERATURE POWER POWER EFFICIENCY (degC) (MW) (MW) (%) - 1 1.0000 197.20 11.4709 111.1329 14.3136 - 2 1.0042 198.03 11.4637 112.4301 14.3958 - 3 1.0050 198.18 11.4624 112.6712 14.4110 - 4 1.0054 198.26 11.4617 112.7966 14.4189 - 5 1.0057 198.32 11.4613 112.8796 14.4241 - 6 1.0059 198.36 11.4609 112.9413 14.4280 - 7 1.0060 198.38 11.4607 112.9875 14.4309 - 8 1.0061 198.41 11.4604 113.0297 14.4336 - 9 1.0062 198.42 11.4605 113.0489 14.4348 - 10 1.0063 198.43 11.4606 113.0656 14.4358 - 11 1.0031 197.82 11.4826 112.0864 14.3730 - 12 0.9882 194.87 11.5853 107.4106 14.0673 - 13 1.0038 197.96 11.4575 112.3254 14.3896 - 14 1.0048 198.16 11.4540 112.6362 14.4094 - 15 1.0053 198.25 11.4491 112.7833 14.4189 - 16 1.0056 198.30 11.4444 112.8783 14.4251 - 17 1.0058 198.35 11.4410 112.9471 14.4297 - 18 1.0060 198.38 11.4392 112.9971 14.4329 - 19 1.0061 198.41 11.4383 113.0483 14.4362 - 20 1.0061 198.41 11.4388 113.0526 14.4364 - 21 1.0064 198.46 11.4378 113.1267 14.4411 - 22 1.0045 198.08 11.4517 112.5250 14.4025 - 23 0.9942 196.05 11.5236 109.2960 14.1930 - 24 1.0033 197.85 11.4383 112.1750 14.3814 - 25 1.0047 198.12 11.4383 112.6002 14.4081 - 26 1.0052 198.23 11.4384 112.7652 14.4185 - 27 1.0055 198.29 11.4384 112.8647 14.4247 - 28 1.0058 198.34 11.4384 112.9348 14.4291 - 29 1.0059 198.37 11.4385 112.9874 14.4323 - 30 1.0061 198.40 11.4383 113.0380 14.4355 + 1 1.0000 207.82 20.1186 130.8935 14.4519 + 2 1.0048 208.81 20.1107 132.6198 14.5475 + 3 1.0056 208.99 20.1092 132.9406 14.5652 + 4 1.0061 209.09 20.1085 133.1075 14.5743 + 5 1.0064 209.15 20.1080 133.2179 14.5804 + 6 1.0066 209.20 20.1076 133.2994 14.5849 + 7 1.0068 209.23 20.1073 133.3633 14.5884 + 8 1.0069 209.26 20.1071 133.4126 14.5911 + 9 1.0069 209.26 20.1079 133.4045 14.5906 + 10 1.0058 209.02 20.1162 132.9797 14.5669 + 11 0.9990 207.61 20.1623 130.4797 14.4265 + 12 1.0045 208.76 20.1053 132.5327 14.5430 + 13 1.0055 208.97 20.1034 132.9090 14.5637 + 14 1.0060 209.07 20.1001 133.0934 14.5740 + 15 1.0064 209.14 20.0958 133.2143 14.5809 + 16 1.0066 209.19 20.0913 133.3036 14.5860 + 17 1.0068 209.23 20.0876 133.3732 14.5900 + 18 1.0069 209.26 20.0850 133.4286 14.5931 + 19 1.0069 209.26 20.0841 133.4390 14.5938 + 20 1.0062 209.10 20.0895 133.1496 14.5777 + 21 1.0009 208.00 20.1258 131.1990 14.4684 + 22 1.0042 208.69 20.0823 132.4371 14.5390 + 23 1.0054 208.95 20.0822 132.8882 14.5638 + 24 1.0060 209.06 20.0822 133.0869 14.5746 + 25 1.0063 209.13 20.0823 133.2111 14.5814 + 26 1.0066 209.18 20.0823 133.3000 14.5863 + 27 1.0067 209.22 20.0823 133.3684 14.5900 + 28 1.0069 209.25 20.0823 133.4241 14.5930 + 29 1.0070 209.27 20.0828 133.4454 14.5942 + 30 1.0064 209.16 20.0871 133.2548 14.5835 ******************************************************************* @@ -180,197 +181,197 @@ Simulation Metadata YEAR ELECTRICITY HEAT RESERVOIR PERCENTAGE OF PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED (GWh/year) (GWh/year) (10^15 J) (%) - 1 883.0 6145.5 255.96 7.96 - 2 887.5 6161.2 233.78 15.93 - 3 888.8 6165.9 211.58 23.91 - 4 889.6 6168.7 189.37 31.90 - 5 890.2 6170.7 167.16 39.89 - 6 890.6 6172.2 144.94 47.88 - 7 891.0 6173.5 122.71 55.87 - 8 891.1 6174.0 100.49 63.86 - 9 891.6 6175.6 78.25 71.86 - 10 888.6 6165.4 56.06 79.84 - 11 869.6 6099.3 34.10 87.74 - 12 872.9 6110.2 12.10 95.65 - 13 887.0 6159.3 -10.07 103.62 - 14 888.7 6165.0 -32.26 111.60 - 15 889.6 6168.1 -54.47 119.59 - 16 890.2 6170.3 -76.68 127.58 - 17 890.7 6171.9 -98.90 135.57 - 18 891.1 6173.2 -121.12 143.56 - 19 891.3 6173.9 -143.35 151.55 - 20 891.7 6175.2 -165.58 159.54 - 21 890.4 6170.8 -187.80 167.53 - 22 877.5 6126.2 -209.85 175.46 - 23 865.5 6083.9 -231.75 183.34 - 24 886.4 6156.7 -253.92 191.31 - 25 888.5 6163.9 -276.11 199.29 - 26 889.5 6167.5 -298.31 207.27 - 27 890.1 6169.8 -320.52 215.26 - 28 890.6 6171.5 -342.74 223.25 - 29 891.0 6172.9 -364.96 231.24 - 30 891.3 6173.9 -387.19 239.24 + 1 1041.1 7172.0 398.81 6.08 + 2 1047.0 7192.2 372.92 12.18 + 3 1048.8 7198.4 347.00 18.28 + 4 1049.9 7202.0 321.08 24.39 + 5 1050.6 7204.6 295.14 30.49 + 6 1051.2 7206.5 269.20 36.60 + 7 1051.6 7208.1 243.25 42.72 + 8 1051.9 7208.8 217.29 48.83 + 9 1050.7 7204.8 191.36 54.94 + 10 1040.9 7171.8 165.54 61.02 + 11 1038.3 7162.3 139.75 67.09 + 12 1046.6 7190.7 113.87 73.18 + 13 1048.6 7197.6 87.96 79.29 + 14 1049.8 7201.5 62.03 85.39 + 15 1050.6 7204.2 36.10 91.50 + 16 1051.2 7206.2 10.15 97.61 + 17 1051.7 7207.9 -15.80 103.72 + 18 1052.0 7208.8 -41.75 109.83 + 19 1051.3 7206.4 -67.69 115.94 + 20 1044.0 7181.6 -93.54 122.03 + 21 1036.3 7155.1 -119.30 128.10 + 22 1046.2 7188.8 -145.18 134.19 + 23 1048.5 7196.8 -171.09 140.29 + 24 1049.8 7201.0 -197.01 146.40 + 25 1050.6 7203.8 -222.95 152.50 + 26 1051.2 7205.9 -248.89 158.61 + 27 1051.7 7207.6 -274.84 164.72 + 28 1052.0 7208.8 -300.79 170.84 + 29 1051.6 7207.5 -326.73 176.95 + 30 1046.8 7191.3 -352.62 183.04 *************************** * SAM CASH FLOW PROFILE * *************************** ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Year -2 Year -1 Year 0 Year 1 Year 2 Year 3 Year 4 Year 5 Year 6 Year 7 Year 8 Year 9 Year 10 Year 11 Year 12 Year 13 Year 14 Year 15 Year 16 Year 17 Year 18 Year 19 Year 20 Year 21 Year 22 Year 23 Year 24 Year 25 Year 26 Year 27 Year 28 Year 29 Year 30 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Year -2 Year -1 Year 0 Year 1 Year 2 Year 3 Year 4 Year 5 Year 6 Year 7 Year 8 Year 9 Year 10 Year 11 Year 12 Year 13 Year 14 Year 15 Year 16 Year 17 Year 18 Year 19 Year 20 Year 21 Year 22 Year 23 Year 24 Year 25 Year 26 Year 27 Year 28 Year 29 Year 30 CONSTRUCTION Capital expenditure schedule [construction] (%) 2.0 19.60 78.40 -Overnight capital expenditure [construction] ($) -10,987,092 -107,516,544 -430,066,176 +Overnight capital expenditure [construction] ($) -12,527,358 -122,589,149 -490,356,594 plus: -Inflation cost [construction] ($) -296,651 -5,884,273 -35,784,380 +Inflation cost [construction] ($) -338,239 -6,709,182 -40,800,946 equals: -Nominal capital expenditure [construction] ($) -11,283,744 -113,400,817 -465,850,556 +Nominal capital expenditure [construction] ($) -12,865,597 -129,298,330 -531,157,540 -Issuance of equity [construction] ($) 4,513,497 45,360,327 186,340,223 -Issuance of debt [construction] ($) 6,770,246 68,040,490 279,510,334 -Debt balance [construction] ($) 6,770,246 75,487,761 362,546,871 -Debt interest payment [construction] ($) 0 677,025 7,548,776 +Issuance of equity [construction] ($) 4,502,959 45,254,416 185,905,139 +Issuance of debt [construction] ($) 8,362,638 84,043,915 345,252,401 +Debt balance [construction] ($) 8,362,638 93,242,816 447,819,499 +Debt interest payment [construction] ($) 0 836,264 9,324,282 -Installed cost [construction] ($) -11,283,744 -114,077,842 -473,399,333 -After-tax net cash flow [construction] ($) -4,513,497 -45,360,327 -186,340,223 +Installed cost [construction] ($) -12,865,597 -130,134,594 -540,481,822 +After-tax net cash flow [construction] ($) -4,502,959 -45,254,416 -185,905,139 ENERGY -Electricity to grid (kWh) 0.0 883,184,349 887,625,738 888,978,845 889,779,064 890,339,789 890,759,250 891,142,427 891,273,901 891,721,558 888,791,598 869,753,476 873,085,583 887,147,067 888,798,680 889,725,546 890,360,673 890,830,714 891,221,542 891,427,460 891,795,404 890,505,166 877,641,489 865,644,852 886,574,830 888,601,189 889,604,188 890,260,368 890,743,867 891,123,389 891,417,291 -Electricity from grid (kWh) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Electricity to grid net (kWh) 0.0 883,184,349 887,625,738 888,978,845 889,779,064 890,339,789 890,759,250 891,142,427 891,273,901 891,721,558 888,791,598 869,753,476 873,085,583 887,147,067 888,798,680 889,725,546 890,360,673 890,830,714 891,221,542 891,427,460 891,795,404 890,505,166 877,641,489 865,644,852 886,574,830 888,601,189 889,604,188 890,260,368 890,743,867 891,123,389 891,417,291 +Electricity to grid (kWh) 0.0 1,041,133,640 1,047,043,678 1,048,844,340 1,049,909,207 1,050,654,854 1,051,222,041 1,051,676,696 1,051,895,181 1,050,703,198 1,040,912,672 1,038,306,236 1,046,631,996 1,048,671,657 1,049,841,192 1,050,658,143 1,051,279,286 1,051,775,081 1,052,074,256 1,051,357,025 1,044,017,101 1,036,339,547 1,046,267,081 1,048,576,804 1,049,807,000 1,050,632,717 1,051,247,058 1,051,734,366 1,052,068,187 1,051,675,211 1,046,872,184 +Electricity from grid (kWh) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +Electricity to grid net (kWh) 0.0 1,041,133,640 1,047,043,678 1,048,844,340 1,049,909,207 1,050,654,854 1,051,222,041 1,051,676,696 1,051,895,181 1,050,703,198 1,040,912,672 1,038,306,236 1,046,631,996 1,048,671,657 1,049,841,192 1,050,658,143 1,051,279,286 1,051,775,081 1,052,074,256 1,051,357,025 1,044,017,101 1,036,339,547 1,046,267,081 1,048,576,804 1,049,807,000 1,050,632,717 1,051,247,058 1,051,734,366 1,052,068,187 1,051,675,211 1,046,872,184 REVENUE -PPA price (cents/kWh) 0.0 9.50 9.50 9.56 9.61 9.67 9.73 9.79 9.84 9.90 9.96 10.01 10.07 10.13 10.18 10.24 10.30 10.36 10.41 10.47 10.53 10.58 10.64 10.70 10.75 10.81 10.87 10.93 10.98 11.04 11.10 -PPA revenue ($) 0 83,902,513 84,324,445 84,959,708 85,543,359 86,104,761 86,653,060 87,198,286 87,719,177 88,271,517 88,488,092 87,088,416 87,919,718 89,841,384 90,515,258 91,116,793 91,689,342 92,245,520 92,793,987 93,323,541 93,870,384 94,242,162 93,381,054 92,598,030 95,342,257 96,066,675 96,682,183 97,260,945 97,821,491 98,371,111 98,911,663 -Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Capacity payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 299,380,459 -Total revenue ($) 0 83,902,513 84,324,445 84,959,708 85,543,359 86,104,761 86,653,060 87,198,286 87,719,177 88,271,517 88,488,092 87,088,416 87,919,718 89,841,384 90,515,258 91,116,793 91,689,342 92,245,520 92,793,987 93,323,541 93,870,384 94,242,162 93,381,054 92,598,030 95,342,257 96,066,675 96,682,183 97,260,945 97,821,491 98,371,111 398,292,121 +PPA price (cents/kWh) 0.0 9.50 9.50 9.56 9.61 9.67 9.73 9.79 9.84 9.90 9.96 10.01 10.07 10.13 10.18 10.24 10.30 10.36 10.41 10.47 10.53 10.58 10.64 10.70 10.75 10.81 10.87 10.93 10.98 11.04 11.10 +PPA revenue ($) 0 98,907,696 99,469,149 100,238,054 100,938,271 101,608,831 102,262,880 102,906,565 103,527,524 104,009,110 103,633,266 103,965,603 105,395,842 106,198,979 106,915,827 107,597,900 108,260,741 108,911,310 109,541,972 110,066,567 109,893,240 109,675,814 111,322,817 112,166,261 112,896,245 113,583,903 114,249,530 114,901,980 115,538,128 116,094,427 116,160,938 +Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Capacity payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 341,741,006 +Total revenue ($) 0 98,907,696 99,469,149 100,238,054 100,938,271 101,608,831 102,262,880 102,906,565 103,527,524 104,009,110 103,633,266 103,965,603 105,395,842 106,198,979 106,915,827 107,597,900 108,260,741 108,911,310 109,541,972 110,066,567 109,893,240 109,675,814 111,322,817 112,166,261 112,896,245 113,583,903 114,249,530 114,901,980 115,538,128 116,094,427 457,901,944 -Property tax net assessed value ($) 0 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 598,760,918 +Property tax net assessed value ($) 0 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 683,482,013 OPERATING EXPENSES -O&M fixed expense ($) 0 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 27,261,719 -O&M production-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -O&M capacity-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Fuel expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Electricity purchase ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Property tax expense ($) 0 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 1,317,274 -Insurance expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Total operating expenses ($) 0 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 28,578,993 +O&M fixed expense ($) 0 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 24,350,809 +O&M production-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +O&M capacity-based expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Fuel expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Electricity purchase ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Property tax expense ($) 0 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 1,503,660 +Insurance expense ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Total operating expenses ($) 0 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 25,854,469 -EBITDA ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 +EBITDA ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 OPERATING ACTIVITIES -EBITDA ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 -Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +EBITDA ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 +Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 plus PBI if not available for debt service: -Federal PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Utility PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Other PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Debt interest payment ($) 0 29,003,750 28,747,721 28,471,210 28,172,578 27,850,056 27,501,732 27,125,542 26,719,256 26,280,468 25,806,577 25,294,774 24,742,028 24,145,061 23,500,338 22,804,036 22,052,030 21,239,864 20,362,724 19,415,414 18,392,318 17,287,375 16,094,036 14,805,231 13,413,320 11,910,057 10,286,533 8,533,127 6,639,449 4,594,276 2,385,489 -Cash flow from operating activities ($) 0 26,319,770 26,997,731 27,909,505 28,791,788 29,675,712 30,572,335 31,493,751 32,420,928 33,412,056 34,102,521 33,214,648 34,598,697 37,117,329 38,435,927 39,733,764 41,058,319 42,426,663 43,852,269 45,329,134 46,899,073 48,375,793 48,708,025 49,213,806 53,349,943 55,577,624 57,816,656 60,148,824 62,603,049 65,197,841 367,327,639 +Federal PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Utility PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Other PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 35,825,560 35,509,312 35,167,765 34,798,893 34,400,512 33,970,261 33,505,589 33,003,743 32,461,750 31,876,398 31,244,217 30,561,462 29,824,087 29,027,721 28,167,646 27,238,765 26,235,574 25,152,127 23,982,005 22,718,273 21,353,442 19,879,425 18,287,486 16,568,193 14,711,355 12,705,971 10,540,157 8,201,077 5,674,870 2,946,567 +Cash flow from operating activities ($) 0 37,227,667 38,105,368 39,215,820 40,284,909 41,353,850 42,438,150 43,546,507 44,669,311 45,692,890 45,902,399 46,866,917 48,979,911 50,520,423 52,033,637 53,575,785 55,167,507 56,821,267 58,535,375 60,230,093 61,320,498 62,467,903 65,588,923 68,024,305 70,473,583 73,018,078 75,689,090 78,507,354 81,482,583 84,565,087 429,100,908 INVESTING ACTIVITIES -Total installed cost ($) -598,760,918 +Total installed cost ($) -683,482,013 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -598,760,918 +Purchase of property ($) -683,482,013 plus: -Reserve (increase)/decrease debt service ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve (increase)/decrease working capital ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve (increase)/decrease receivables ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve (increase)/decrease major equipment 1 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve (increase)/decrease major equipment 2 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve (increase)/decrease major equipment 3 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve capital spending major equipment 1 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve capital spending major equipment 2 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserve capital spending major equipment 3 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease debt service ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease working capital ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease receivables ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease major equipment 1 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease major equipment 2 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve (increase)/decrease major equipment 3 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve capital spending major equipment 1 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve capital spending major equipment 2 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserve capital spending major equipment 3 ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 equals: -Cash flow from investing activities ($) -598,760,918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Cash flow from investing activities ($) -683,482,013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FINANCING ACTIVITIES -Issuance of equity ($) 236,214,047 -Size of debt ($) 362,546,871 +Issuance of equity ($) 235,662,514 +Size of debt ($) 447,819,499 minus: -Debt principal payment ($) 0 3,200,358 3,456,387 3,732,898 4,031,530 4,354,052 4,702,376 5,078,566 5,484,852 5,923,640 6,397,531 6,909,334 7,462,080 8,059,047 8,703,771 9,400,072 10,152,078 10,964,244 11,841,384 12,788,694 13,811,790 14,916,733 16,110,072 17,398,878 18,790,788 20,294,051 21,917,575 23,670,981 25,564,659 27,609,832 29,818,619 +Debt principal payment ($) 0 3,953,097 4,269,345 4,610,892 4,979,763 5,378,145 5,808,396 6,273,068 6,774,913 7,316,906 7,902,259 8,534,439 9,217,195 9,954,570 10,750,936 11,611,011 12,539,892 13,543,083 14,626,530 15,796,652 17,060,384 18,425,215 19,899,232 21,491,170 23,210,464 25,067,301 27,072,685 29,238,500 31,577,580 34,103,787 36,832,090 equals: -Cash flow from financing activities ($) 598,760,918 -3,200,358 -3,456,387 -3,732,898 -4,031,530 -4,354,052 -4,702,376 -5,078,566 -5,484,852 -5,923,640 -6,397,531 -6,909,334 -7,462,080 -8,059,047 -8,703,771 -9,400,072 -10,152,078 -10,964,244 -11,841,384 -12,788,694 -13,811,790 -14,916,733 -16,110,072 -17,398,878 -18,790,788 -20,294,051 -21,917,575 -23,670,981 -25,564,659 -27,609,832 -29,818,619 +Cash flow from financing activities ($) 683,482,013 -3,953,097 -4,269,345 -4,610,892 -4,979,763 -5,378,145 -5,808,396 -6,273,068 -6,774,913 -7,316,906 -7,902,259 -8,534,439 -9,217,195 -9,954,570 -10,750,936 -11,611,011 -12,539,892 -13,543,083 -14,626,530 -15,796,652 -17,060,384 -18,425,215 -19,899,232 -21,491,170 -23,210,464 -25,067,301 -27,072,685 -29,238,500 -31,577,580 -34,103,787 -36,832,090 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 26,319,770 26,997,731 27,909,505 28,791,788 29,675,712 30,572,335 31,493,751 32,420,928 33,412,056 34,102,521 33,214,648 34,598,697 37,117,329 38,435,927 39,733,764 41,058,319 42,426,663 43,852,269 45,329,134 46,899,073 48,375,793 48,708,025 49,213,806 53,349,943 55,577,624 57,816,656 60,148,824 62,603,049 65,197,841 367,327,639 -Cash flow from investing activities ($) -598,760,918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Cash flow from financing activities ($) 598,760,918 -3,200,358 -3,456,387 -3,732,898 -4,031,530 -4,354,052 -4,702,376 -5,078,566 -5,484,852 -5,923,640 -6,397,531 -6,909,334 -7,462,080 -8,059,047 -8,703,771 -9,400,072 -10,152,078 -10,964,244 -11,841,384 -12,788,694 -13,811,790 -14,916,733 -16,110,072 -17,398,878 -18,790,788 -20,294,051 -21,917,575 -23,670,981 -25,564,659 -27,609,832 -29,818,619 -Total pre-tax cash flow ($) 0 23,119,412 23,541,344 24,176,607 24,760,258 25,321,660 25,869,958 26,415,185 26,936,076 27,488,416 27,704,990 26,305,314 27,136,617 29,058,282 29,732,156 30,333,692 30,906,241 31,462,419 32,010,885 32,540,439 33,087,283 33,459,060 32,597,953 31,814,928 34,559,156 35,283,573 35,899,082 36,477,844 37,038,390 37,588,009 337,509,020 +Cash flow from operating activities ($) 0 37,227,667 38,105,368 39,215,820 40,284,909 41,353,850 42,438,150 43,546,507 44,669,311 45,692,890 45,902,399 46,866,917 48,979,911 50,520,423 52,033,637 53,575,785 55,167,507 56,821,267 58,535,375 60,230,093 61,320,498 62,467,903 65,588,923 68,024,305 70,473,583 73,018,078 75,689,090 78,507,354 81,482,583 84,565,087 429,100,908 +Cash flow from investing activities ($) -683,482,013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Cash flow from financing activities ($) 683,482,013 -3,953,097 -4,269,345 -4,610,892 -4,979,763 -5,378,145 -5,808,396 -6,273,068 -6,774,913 -7,316,906 -7,902,259 -8,534,439 -9,217,195 -9,954,570 -10,750,936 -11,611,011 -12,539,892 -13,543,083 -14,626,530 -15,796,652 -17,060,384 -18,425,215 -19,899,232 -21,491,170 -23,210,464 -25,067,301 -27,072,685 -29,238,500 -31,577,580 -34,103,787 -36,832,090 +Total pre-tax cash flow ($) 0 33,274,570 33,836,023 34,604,928 35,305,145 35,975,705 36,629,754 37,273,439 37,894,398 38,375,984 38,000,140 38,332,478 39,762,716 40,565,853 41,282,701 41,964,775 42,627,615 43,278,184 43,908,846 44,433,441 44,260,114 44,042,688 45,689,692 46,533,135 47,263,119 47,950,777 48,616,404 49,268,854 49,905,002 50,461,301 392,268,818 Pre-tax Returns: -Issuance of equity ($) 236,214,047 -Total pre-tax cash flow ($) 0 23,119,412 23,541,344 24,176,607 24,760,258 25,321,660 25,869,958 26,415,185 26,936,076 27,488,416 27,704,990 26,305,314 27,136,617 29,058,282 29,732,156 30,333,692 30,906,241 31,462,419 32,010,885 32,540,439 33,087,283 33,459,060 32,597,953 31,814,928 34,559,156 35,283,573 35,899,082 36,477,844 37,038,390 37,588,009 337,509,020 -Total pre-tax returns ($) -236,214,047 23,119,412 23,541,344 24,176,607 24,760,258 25,321,660 25,869,958 26,415,185 26,936,076 27,488,416 27,704,990 26,305,314 27,136,617 29,058,282 29,732,156 30,333,692 30,906,241 31,462,419 32,010,885 32,540,439 33,087,283 33,459,060 32,597,953 31,814,928 34,559,156 35,283,573 35,899,082 36,477,844 37,038,390 37,588,009 337,509,020 +Issuance of equity ($) 235,662,514 +Total pre-tax cash flow ($) 0 33,274,570 33,836,023 34,604,928 35,305,145 35,975,705 36,629,754 37,273,439 37,894,398 38,375,984 38,000,140 38,332,478 39,762,716 40,565,853 41,282,701 41,964,775 42,627,615 43,278,184 43,908,846 44,433,441 44,260,114 44,042,688 45,689,692 46,533,135 47,263,119 47,950,777 48,616,404 49,268,854 49,905,002 50,461,301 392,268,818 +Total pre-tax returns ($) -235,662,514 33,274,570 33,836,023 34,604,928 35,305,145 35,975,705 36,629,754 37,273,439 37,894,398 38,375,984 38,000,140 38,332,478 39,762,716 40,565,853 41,282,701 41,964,775 42,627,615 43,278,184 43,908,846 44,433,441 44,260,114 44,042,688 45,689,692 46,533,135 47,263,119 47,950,777 48,616,404 49,268,854 49,905,002 50,461,301 392,268,818 After-tax Returns: -Total pre-tax returns ($) -236,214,047 23,119,412 23,541,344 24,176,607 24,760,258 25,321,660 25,869,958 26,415,185 26,936,076 27,488,416 27,704,990 26,305,314 27,136,617 29,058,282 29,732,156 30,333,692 30,906,241 31,462,419 32,010,885 32,540,439 33,087,283 33,459,060 32,597,953 31,814,928 34,559,156 35,283,573 35,899,082 36,477,844 37,038,390 37,588,009 337,509,020 -Federal ITC total income ($) 0 179,628,275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal tax benefit (liability) ($) 0 -2,725,270 -310,768 -493,529 -670,378 -847,556 -1,027,280 -1,211,973 -1,397,821 -1,596,488 -1,734,888 -1,556,918 -1,834,344 -2,339,191 -2,603,497 -2,863,642 -3,129,143 -3,403,421 -3,689,176 -3,985,206 -4,299,893 -7,146,290 -9,763,280 -9,864,661 -10,693,729 -11,140,257 -11,589,060 -12,056,531 -12,548,468 -13,068,581 -73,628,989 -State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State tax benefit (liability) ($) 0 -618,623 -70,543 -112,029 -152,172 -192,391 -233,187 -275,112 -317,298 -362,395 -393,811 -353,413 -416,387 -530,985 -590,981 -650,032 -710,300 -772,559 -837,424 -904,622 -976,054 -1,622,172 -2,216,215 -2,239,228 -2,427,422 -2,528,782 -2,630,658 -2,736,772 -2,848,439 -2,966,502 -16,713,408 -Total after-tax returns ($) -236,214,047 199,403,794 23,160,033 23,571,049 23,937,707 24,281,712 24,609,491 24,928,100 25,220,957 25,529,533 25,576,291 24,394,983 24,885,886 26,188,106 26,537,678 26,820,017 27,066,798 27,286,439 27,484,285 27,650,611 27,811,336 24,690,599 20,618,458 19,711,039 21,438,004 21,614,534 21,679,364 21,684,541 21,641,483 21,552,926 247,166,624 - -After-tax net cash flow ($) -4,513,497 -45,360,327 -186,340,223 199,403,794 23,160,033 23,571,049 23,937,707 24,281,712 24,609,491 24,928,100 25,220,957 25,529,533 25,576,291 24,394,983 24,885,886 26,188,106 26,537,678 26,820,017 27,066,798 27,286,439 27,484,285 27,650,611 27,811,336 24,690,599 20,618,458 19,711,039 21,438,004 21,614,534 21,679,364 21,684,541 21,641,483 21,552,926 247,166,624 -After-tax cumulative IRR (%) NaN NaN NaN -13.01 -4.37 2.76 8.05 11.87 14.62 16.62 18.09 19.19 20.01 20.61 21.08 21.46 21.75 21.99 22.18 22.33 22.44 22.54 22.62 22.67 22.71 22.74 22.76 22.78 22.80 22.81 22.82 22.83 22.91 -After-tax cumulative NPV ($) -4,513,497 -43,949,030 -184,790,217 -53,761,039 -40,530,263 -28,823,506 -18,487,524 -9,372,454 -1,340,986 5,731,840 11,953,079 17,427,898 22,196,334 26,150,459 29,657,288 32,865,604 35,692,094 38,175,542 40,354,478 42,264,182 43,936,486 45,399,158 46,678,173 47,665,354 48,382,047 48,977,706 49,540,934 50,034,627 50,465,124 50,839,479 51,164,292 51,445,524 54,249,400 +Total pre-tax returns ($) -235,662,514 33,274,570 33,836,023 34,604,928 35,305,145 35,975,705 36,629,754 37,273,439 37,894,398 38,375,984 38,000,140 38,332,478 39,762,716 40,565,853 41,282,701 41,964,775 42,627,615 43,278,184 43,908,846 44,433,441 44,260,114 44,042,688 45,689,692 46,533,135 47,263,119 47,950,777 48,616,404 49,268,854 49,905,002 50,461,301 392,268,818 +Federal ITC total income ($) 0 205,044,604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal tax benefit (liability) ($) 0 -4,550,838 -1,815,507 -2,038,092 -2,252,385 -2,466,649 -2,683,992 -2,906,156 -3,131,217 -3,336,388 -3,378,383 -3,571,716 -3,995,255 -4,304,043 -4,607,359 -4,916,475 -5,235,527 -5,567,015 -5,910,600 -6,250,298 -6,468,864 -9,610,117 -13,146,972 -13,635,132 -14,126,077 -14,636,109 -15,171,500 -15,736,407 -16,332,776 -16,950,649 -86,011,131 +State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State tax benefit (liability) ($) 0 -1,033,017 -412,111 -462,636 -511,280 -559,917 -609,253 -659,683 -710,770 -757,343 -766,876 -810,761 -906,903 -976,996 -1,045,847 -1,116,015 -1,188,438 -1,263,684 -1,341,676 -1,418,786 -1,468,399 -2,181,448 -2,984,296 -3,095,106 -3,206,548 -3,322,323 -3,443,854 -3,572,085 -3,707,458 -3,847,711 -19,524,091 +Total after-tax returns ($) -235,662,514 232,735,319 31,608,406 32,104,200 32,541,480 32,949,139 33,336,510 33,707,600 34,052,411 34,282,253 33,854,881 33,950,000 34,860,559 35,284,814 35,629,495 35,932,285 36,203,649 36,447,484 36,656,570 36,764,358 36,322,851 32,251,123 29,558,424 29,802,897 29,930,494 29,992,346 30,001,051 29,960,362 29,864,769 29,662,940 286,733,595 + +After-tax net cash flow ($) -4,502,959 -45,254,416 -185,905,139 232,735,319 31,608,406 32,104,200 32,541,480 32,949,139 33,336,510 33,707,600 34,052,411 34,282,253 33,854,881 33,950,000 34,860,559 35,284,814 35,629,495 35,932,285 36,203,649 36,447,484 36,656,570 36,764,358 36,322,851 32,251,123 29,558,424 29,802,897 29,930,494 29,992,346 30,001,051 29,960,362 29,864,769 29,662,940 286,733,595 +After-tax cumulative IRR (%) NaN NaN NaN -1.01 8.85 16.07 20.99 24.31 26.56 28.12 29.21 29.99 30.53 30.93 31.23 31.44 31.61 31.73 31.82 31.89 31.94 31.98 32.01 32.03 32.04 32.05 32.06 32.06 32.07 32.07 32.07 32.08 32.09 +After-tax cumulative NPV ($) -4,502,959 -43,846,414 -184,358,753 -31,427,271 -13,370,141 2,574,675 16,625,652 28,994,373 39,873,960 49,437,785 57,837,474 65,189,317 71,501,211 77,004,087 81,916,511 86,239,268 90,034,114 93,361,330 96,275,802 98,826,662 101,057,061 103,001,835 104,672,286 105,961,753 106,989,197 107,889,827 108,676,174 109,361,223 109,956,967 110,474,194 110,922,428 111,309,482 114,562,210 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -236,214,047 115,501,281 -61,164,413 -61,388,659 -61,605,652 -61,823,049 -62,043,569 -62,270,186 -62,498,221 -62,741,984 -62,911,800 -62,693,432 -63,033,832 -63,653,277 -63,977,580 -64,296,776 -64,622,544 -64,959,081 -65,309,702 -65,672,929 -66,059,048 -69,551,563 -72,762,597 -72,886,991 -73,904,253 -74,452,140 -75,002,819 -75,576,404 -76,180,008 -76,818,185 148,254,961 -PPA revenue ($) 0 83,902,513 84,324,445 84,959,708 85,543,359 86,104,761 86,653,060 87,198,286 87,719,177 88,271,517 88,488,092 87,088,416 87,919,718 89,841,384 90,515,258 91,116,793 91,689,342 92,245,520 92,793,987 93,323,541 93,870,384 94,242,162 93,381,054 92,598,030 95,342,257 96,066,675 96,682,183 97,260,945 97,821,491 98,371,111 98,911,663 -Electricity to grid (kWh) 0.0 883,184,349 887,625,738 888,978,845 889,779,064 890,339,789 890,759,250 891,142,427 891,273,901 891,721,558 888,791,598 869,753,476 873,085,583 887,147,067 888,798,680 889,725,546 890,360,673 890,830,714 891,221,542 891,427,460 891,795,404 890,505,166 877,641,489 865,644,852 886,574,830 888,601,189 889,604,188 890,260,368 890,743,867 891,123,389 891,417,291 +Annual costs ($) -235,662,514 133,827,623 -67,860,744 -68,133,854 -68,396,791 -68,659,692 -68,926,370 -69,198,965 -69,475,113 -69,726,857 -69,778,385 -70,015,603 -70,535,283 -70,914,165 -71,286,332 -71,665,616 -72,057,092 -72,463,826 -72,885,402 -73,302,209 -73,570,389 -77,424,691 -81,764,394 -82,363,364 -82,965,751 -83,591,557 -84,248,479 -84,941,617 -85,673,360 -86,431,486 170,572,658 +PPA revenue ($) 0 98,907,696 99,469,149 100,238,054 100,938,271 101,608,831 102,262,880 102,906,565 103,527,524 104,009,110 103,633,266 103,965,603 105,395,842 106,198,979 106,915,827 107,597,900 108,260,741 108,911,310 109,541,972 110,066,567 109,893,240 109,675,814 111,322,817 112,166,261 112,896,245 113,583,903 114,249,530 114,901,980 115,538,128 116,094,427 116,160,938 +Electricity to grid (kWh) 0.0 1,041,133,640 1,047,043,678 1,048,844,340 1,049,909,207 1,050,654,854 1,051,222,041 1,051,676,696 1,051,895,181 1,050,703,198 1,040,912,672 1,038,306,236 1,046,631,996 1,048,671,657 1,049,841,192 1,050,658,143 1,051,279,286 1,051,775,081 1,052,074,256 1,051,357,025 1,044,017,101 1,036,339,547 1,046,267,081 1,048,576,804 1,049,807,000 1,050,632,717 1,051,247,058 1,051,734,366 1,052,068,187 1,051,675,211 1,046,872,184 -Present value of annual costs ($) 490,394,979 -Present value of annual energy nominal (kWh) 5,818,595,945 -LCOE Levelized cost of energy nominal (cents/kWh) 8.43 +Present value of annual costs ($) 513,647,749 +Present value of annual energy nominal (kWh) 6,869,291,348 +LCOE Levelized cost of energy nominal (cents/kWh) 7.48 -Present value of PPA revenue ($) 570,442,790 -Present value of annual energy nominal (kWh) 5,818,595,945 +Present value of PPA revenue ($) 673,473,230 +Present value of annual energy nominal (kWh) 6,869,291,348 LPPA Levelized PPA price nominal (cents/kWh) 9.80 PROJECT STATE INCOME TAXES -EBITDA ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 -State taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +EBITDA ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 +State taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 State taxable IBI income ($) 0 State taxable CBI income ($) 0 minus: -Debt interest payment ($) 0 29,003,750 28,747,721 28,471,210 28,172,578 27,850,056 27,501,732 27,125,542 26,719,256 26,280,468 25,806,577 25,294,774 24,742,028 24,145,061 23,500,338 22,804,036 22,052,030 21,239,864 20,362,724 19,415,414 18,392,318 17,287,375 16,094,036 14,805,231 13,413,320 11,910,057 10,286,533 8,533,127 6,639,449 4,594,276 2,385,489 -Total state tax depreciation ($) 0 12,723,670 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 12,723,670 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 35,825,560 35,509,312 35,167,765 34,798,893 34,400,512 33,970,261 33,505,589 33,003,743 32,461,750 31,876,398 31,244,217 30,561,462 29,824,087 29,027,721 28,167,646 27,238,765 26,235,574 25,152,127 23,982,005 22,718,273 21,353,442 19,879,425 18,287,486 16,568,193 14,711,355 12,705,971 10,540,157 8,201,077 5,674,870 2,946,567 +Total state tax depreciation ($) 0 14,523,993 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 14,523,993 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 13,596,101 1,550,392 2,462,166 3,344,449 4,228,373 5,124,996 6,046,412 6,973,589 7,964,717 8,655,182 7,767,309 9,151,358 11,669,990 12,988,588 14,286,425 15,610,980 16,979,324 18,404,930 19,881,795 21,451,734 35,652,124 48,708,025 49,213,806 53,349,943 55,577,624 57,816,656 60,148,824 62,603,049 65,197,841 367,327,639 +State taxable income ($) 0 22,703,674 9,057,382 10,167,834 11,236,923 12,305,864 13,390,165 14,498,521 15,621,325 16,644,904 16,854,413 17,818,932 19,931,925 21,472,437 22,985,651 24,527,800 26,119,521 27,773,281 29,487,390 31,182,107 32,272,513 47,943,910 65,588,923 68,024,305 70,473,583 73,018,078 75,689,090 78,507,354 81,482,583 84,565,087 429,100,908 -State income tax rate (frac) 0.0 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 -State tax benefit (liability) ($) 0 -618,623 -70,543 -112,029 -152,172 -192,391 -233,187 -275,112 -317,298 -362,395 -393,811 -353,413 -416,387 -530,985 -590,981 -650,032 -710,300 -772,559 -837,424 -904,622 -976,054 -1,622,172 -2,216,215 -2,239,228 -2,427,422 -2,528,782 -2,630,658 -2,736,772 -2,848,439 -2,966,502 -16,713,408 +State income tax rate (frac) 0.0 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 +State tax benefit (liability) ($) 0 -1,033,017 -412,111 -462,636 -511,280 -559,917 -609,253 -659,683 -710,770 -757,343 -766,876 -810,761 -906,903 -976,996 -1,045,847 -1,116,015 -1,188,438 -1,263,684 -1,341,676 -1,418,786 -1,468,399 -2,181,448 -2,984,296 -3,095,106 -3,206,548 -3,322,323 -3,443,854 -3,572,085 -3,707,458 -3,847,711 -19,524,091 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 -Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State tax benefit (liability) ($) 0 -618,623 -70,543 -112,029 -152,172 -192,391 -233,187 -275,112 -317,298 -362,395 -393,811 -353,413 -416,387 -530,985 -590,981 -650,032 -710,300 -772,559 -837,424 -904,622 -976,054 -1,622,172 -2,216,215 -2,239,228 -2,427,422 -2,528,782 -2,630,658 -2,736,772 -2,848,439 -2,966,502 -16,713,408 -State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +EBITDA ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 +Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State tax benefit (liability) ($) 0 -1,033,017 -412,111 -462,636 -511,280 -559,917 -609,253 -659,683 -710,770 -757,343 -766,876 -810,761 -906,903 -976,996 -1,045,847 -1,116,015 -1,188,438 -1,263,684 -1,341,676 -1,418,786 -1,468,399 -2,181,448 -2,984,296 -3,095,106 -3,206,548 -3,322,323 -3,443,854 -3,572,085 -3,707,458 -3,847,711 -19,524,091 +State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Federal taxable IBI income ($) 0 Federal taxable CBI income ($) 0 -Federal taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal taxable PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 minus: -Debt interest payment ($) 0 29,003,750 28,747,721 28,471,210 28,172,578 27,850,056 27,501,732 27,125,542 26,719,256 26,280,468 25,806,577 25,294,774 24,742,028 24,145,061 23,500,338 22,804,036 22,052,030 21,239,864 20,362,724 19,415,414 18,392,318 17,287,375 16,094,036 14,805,231 13,413,320 11,910,057 10,286,533 8,533,127 6,639,449 4,594,276 2,385,489 -Total federal tax depreciation ($) 0 12,723,670 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 25,447,339 12,723,670 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 35,825,560 35,509,312 35,167,765 34,798,893 34,400,512 33,970,261 33,505,589 33,003,743 32,461,750 31,876,398 31,244,217 30,561,462 29,824,087 29,027,721 28,167,646 27,238,765 26,235,574 25,152,127 23,982,005 22,718,273 21,353,442 19,879,425 18,287,486 16,568,193 14,711,355 12,705,971 10,540,157 8,201,077 5,674,870 2,946,567 +Total federal tax depreciation ($) 0 14,523,993 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 29,047,986 14,523,993 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 12,977,478 1,479,849 2,350,137 3,192,276 4,035,982 4,891,808 5,771,301 6,656,290 7,602,322 8,261,371 7,413,896 8,734,971 11,139,005 12,397,607 13,636,392 14,900,680 16,206,765 17,567,506 18,977,173 20,475,680 34,029,952 46,491,810 46,974,578 50,922,521 53,048,842 55,185,999 57,412,053 59,754,610 62,231,340 350,614,231 +Federal taxable income ($) 0 21,670,657 8,645,272 9,705,198 10,725,643 11,745,947 12,780,912 13,838,838 14,910,555 15,887,561 16,087,537 17,008,170 19,025,023 20,495,442 21,939,804 23,411,785 24,931,083 26,509,597 28,145,713 29,763,322 30,804,113 45,762,462 62,604,627 64,929,199 67,267,035 69,695,756 72,245,236 74,935,269 77,775,125 80,717,376 409,576,816 -Federal income tax rate (frac) 0.0 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 -Federal tax benefit (liability) ($) 0 -2,725,270 -310,768 -493,529 -670,378 -847,556 -1,027,280 -1,211,973 -1,397,821 -1,596,488 -1,734,888 -1,556,918 -1,834,344 -2,339,191 -2,603,497 -2,863,642 -3,129,143 -3,403,421 -3,689,176 -3,985,206 -4,299,893 -7,146,290 -9,763,280 -9,864,661 -10,693,729 -11,140,257 -11,589,060 -12,056,531 -12,548,468 -13,068,581 -73,628,989 +Federal income tax rate (frac) 0.0 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 +Federal tax benefit (liability) ($) 0 -4,550,838 -1,815,507 -2,038,092 -2,252,385 -2,466,649 -2,683,992 -2,906,156 -3,131,217 -3,336,388 -3,378,383 -3,571,716 -3,995,255 -4,304,043 -4,607,359 -4,916,475 -5,235,527 -5,567,015 -5,910,600 -6,250,298 -6,468,864 -9,610,117 -13,146,972 -13,635,132 -14,126,077 -14,636,109 -15,171,500 -15,736,407 -16,332,776 -16,950,649 -86,011,131 CASH INCENTIVES Federal IBI income ($) 0 @@ -385,68 +386,68 @@ Utility CBI income ($) 0 Other CBI income ($) 0 Total CBI income ($) 0 -Federal PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Utility PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Other PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Total PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Utility PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Other PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Total PBI income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 TAX CREDITS -Federal PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State PTC income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal ITC percent income ($) 0 179,628,275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Federal ITC total income ($) 0 179,628,275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal ITC percent income ($) 0 205,044,604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Federal ITC total income ($) 0 205,044,604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State ITC percent income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State ITC amount income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State ITC percent income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +State ITC total income ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DEBT REPAYMENT -Debt balance ($) 362,546,871 359,346,513 355,890,126 352,157,228 348,125,698 343,771,646 339,069,269 333,990,703 328,505,851 322,582,211 316,184,680 309,275,346 301,813,266 293,754,219 285,050,449 275,650,376 265,498,298 254,534,054 242,692,671 229,903,976 216,092,186 201,175,453 185,065,381 167,666,504 148,875,716 128,581,665 106,664,091 82,993,110 57,428,451 29,818,619 0 -Debt interest payment ($) 0 29,003,750 28,747,721 28,471,210 28,172,578 27,850,056 27,501,732 27,125,542 26,719,256 26,280,468 25,806,577 25,294,774 24,742,028 24,145,061 23,500,338 22,804,036 22,052,030 21,239,864 20,362,724 19,415,414 18,392,318 17,287,375 16,094,036 14,805,231 13,413,320 11,910,057 10,286,533 8,533,127 6,639,449 4,594,276 2,385,489 -Debt principal payment ($) 0 3,200,358 3,456,387 3,732,898 4,031,530 4,354,052 4,702,376 5,078,566 5,484,852 5,923,640 6,397,531 6,909,334 7,462,080 8,059,047 8,703,771 9,400,072 10,152,078 10,964,244 11,841,384 12,788,694 13,811,790 14,916,733 16,110,072 17,398,878 18,790,788 20,294,051 21,917,575 23,670,981 25,564,659 27,609,832 29,818,619 -Debt total payment ($) 0 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 +Debt balance ($) 447,819,499 443,866,402 439,597,058 434,986,166 430,006,402 424,628,258 418,819,862 412,546,794 405,771,880 398,454,974 390,552,715 382,018,276 372,801,081 362,846,511 352,095,575 340,484,564 327,944,673 314,401,590 299,775,061 283,978,409 266,918,025 248,492,810 228,593,578 207,102,407 183,891,943 158,824,642 131,751,957 102,513,456 70,935,876 36,832,090 0 +Debt interest payment ($) 0 35,825,560 35,509,312 35,167,765 34,798,893 34,400,512 33,970,261 33,505,589 33,003,743 32,461,750 31,876,398 31,244,217 30,561,462 29,824,087 29,027,721 28,167,646 27,238,765 26,235,574 25,152,127 23,982,005 22,718,273 21,353,442 19,879,425 18,287,486 16,568,193 14,711,355 12,705,971 10,540,157 8,201,077 5,674,870 2,946,567 +Debt principal payment ($) 0 3,953,097 4,269,345 4,610,892 4,979,763 5,378,145 5,808,396 6,273,068 6,774,913 7,316,906 7,902,259 8,534,439 9,217,195 9,954,570 10,750,936 11,611,011 12,539,892 13,543,083 14,626,530 15,796,652 17,060,384 18,425,215 19,899,232 21,491,170 23,210,464 25,067,301 27,072,685 29,238,500 31,577,580 34,103,787 36,832,090 +Debt total payment ($) 0 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 DSCR (DEBT FRACTION) -EBITDA ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 +EBITDA ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 minus: -Reserves major equipment 1 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 2 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 3 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves receivables funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 1 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 2 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 3 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves receivables funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 equals: -Cash available for debt service (CAFDS) ($) 0 55,323,520 55,745,452 56,380,715 56,964,366 57,525,768 58,074,066 58,619,293 59,140,184 59,692,524 59,909,098 58,509,422 59,340,725 61,262,390 61,936,264 62,537,800 63,110,349 63,666,527 64,214,993 64,744,547 65,291,391 65,663,168 64,802,061 64,019,036 66,763,264 67,487,681 68,103,190 68,681,952 69,242,498 69,792,117 369,713,128 -Debt total payment ($) 0 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 32,204,108 -DSCR (pre-tax) 0.0 1.72 1.73 1.75 1.77 1.79 1.80 1.82 1.84 1.85 1.86 1.82 1.84 1.90 1.92 1.94 1.96 1.98 1.99 2.01 2.03 2.04 2.01 1.99 2.07 2.10 2.11 2.13 2.15 2.17 11.48 +Cash available for debt service (CAFDS) ($) 0 73,053,227 73,614,680 74,383,584 75,083,802 75,754,362 76,408,411 77,052,095 77,673,055 78,154,640 77,778,796 78,111,134 79,541,373 80,344,510 81,061,358 81,743,431 82,406,272 83,056,840 83,687,502 84,212,098 84,038,771 83,821,345 85,468,348 86,311,792 87,041,776 87,729,434 88,395,061 89,047,510 89,683,659 90,239,957 432,047,475 +Debt total payment ($) 0 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 39,778,657 +DSCR (pre-tax) 0.0 1.84 1.85 1.87 1.89 1.90 1.92 1.94 1.95 1.96 1.96 1.96 2.0 2.02 2.04 2.05 2.07 2.09 2.10 2.12 2.11 2.11 2.15 2.17 2.19 2.21 2.22 2.24 2.25 2.27 10.86 RESERVES -Reserves working capital funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves working capital disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves working capital balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves working capital funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves working capital disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves working capital balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves debt service funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves debt service disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves debt service balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves debt service funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves debt service disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves debt service balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves receivables funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves receivables disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves receivables balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves receivables funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves receivables disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves receivables balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 1 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 1 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 1 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 1 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 1 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 1 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 2 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 2 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 2 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 2 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 2 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 2 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 3 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 3 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves major equipment 3 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 3 funding ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 3 disbursement ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves major equipment 3 balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Reserves total reserves balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Reserves total reserves balance ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Interest on reserves (%/year) 1.75 -Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Interest earned on reserves ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/tests/examples/Fervo_Project_Cape-5.txt b/tests/examples/Fervo_Project_Cape-5.txt index 6ac19620..a0e91af0 100644 --- a/tests/examples/Fervo_Project_Cape-5.txt +++ b/tests/examples/Fervo_Project_Cape-5.txt @@ -3,87 +3,100 @@ # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* -Economic Model, 5, -- SAM Single Owner PPA +Economic Model, 5, -- The SAM Single Owner PPA economic model is used to calculate financial results including LCOE, NPV, IRR, and pro-forma cash flow analysis. See [GEOPHIRES documentation of SAM Economic Models](https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html) for details on how System Advisor Model financial models are integrated into GEOPHIRES. -Starting Electricity Sale Price, 0.095, -- Upper end of ranges given in https://atb.nrel.gov/electricity/2024/geothermal -Electricity Escalation Rate Per Year, 0.00057, -- calibrated to reach 10 cents/kWh at project year 11 +Starting Electricity Sale Price, 0.095, -- Aligns with Geysers - Sacramento pricing in [2024b ATB](https://atb.nrel.gov/electricity/2024/geothermal) (NREL, 2025). See Sensitivity Analysis for effect of different prices on results. +Electricity Escalation Rate Per Year, 0.00057, -- Calibrated to reach 10¢/kWh at project year 11 Ending Electricity Sale Price, 1, -- Note that this value does not directly determine price at the end of the project life, but rather as a cap as the maximum price to which the starting price can escalate. Electricity Escalation Start Year, 1 -Discount Rate, 0.12 -Fraction of Investment in Bonds, .6, -- Based on fraction of CAPEX with $1 billion in sponsor equity per https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/ -Inflated Bond Interest Rate, .08 +Discount Rate, 0.12, -- Typical discount rates for high-risk projects may be 12–15% +Fraction of Investment in Bonds, .65, -- Approximate debt required to cover CAPEX after $1 billion sponsor equity per [Matson, 2024](https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/). Note that this source says that Fervo ultimately wants to target “15% sponsor equity, 15% bridge loan, and 70% construction to term loans”, but this case study does not attempt to model that capital structure precisely. +Inflated Bond Interest Rate, .08, -- Higher than typical debt annual interest rate Inflated Bond Interest Rate During Construction, 0.1, -- Higher interest rate during construction to account for increased risk of default. Inflation Rate, .027, -- US inflation as of December 2025 -Construction Years, 3, 2023–2028 +Construction Years, 3 Construction CAPEX Schedule, 0.014,0.027,0.137,0.274,0.548 -Investment Tax Credit Rate, 0.3 +Investment Tax Credit Rate, 0.3, -- Geothermal Drilling and Completions Apprenticeship Program ensures compliance with ITC labor requirements (Southern Utah University, 2024). Combined Income Tax Rate, .2555, -- Federal Corporate Income Tax Rate of 21% plus Utah Corporate Franchise and Income Tax Rate of 4.55%. (Note: This input uses a simple summation of statutory rates; the effective combined rate calculated in the model may differ due to standard federal-state tax interactions.) Property Tax Rate, 0.0022, -- Utah Inland Port Authority (UIPA) tax differential incentive -Capital Cost for Power Plant for Electricity Generation, 1900, -- https://betterbuildingssolutioncenter.energy.gov/sites/default/files/attachments/Waste_Heat_to_Power_Fact_Sheet.pdf +Capital Cost for Power Plant for Electricity Generation, 1900, -- [US DOE, 2021](https://betterbuildingssolutioncenter.energy.gov/sites/default/files/attachments/Waste_Heat_to_Power_Fact_Sheet.pdf). Pricing information not publicly available for Turboden or Baker Hughes Gen 2 ORC units (Turboden, 2025; Jacobs, 2025). Exploration Capital Cost, 30, -- Equivalent to 2024b ATB NF-EGS conservative scenario exploration assumption of 5 full-size wells (NREL, 2025), plus $1M for geophysical and field work, plus 15% contingency, plus 12% indirect costs. -Well Drilling Cost Correlation, 3, -- VERTICAL_LARGE (2025 NREL Geothermal Drilling Cost Curve Update) -Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- NREL Geothermal 2024b ATB https://atb.nrel.gov/electricity/2024b/geothermal +Well Drilling Cost Correlation, 3, -- 2025 NREL Geothermal Drilling Cost Curve Update (Akindipe and Witter, 2025). +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB ([NREL, 2025](https://atb.nrel.gov/electricity/2024b/geothermal)). Note: Fervo has claimed lower drilling costs equivalent to an adjustment factor of 0.8 (Latimer, 2025); the case study conservatively uses the higher ATB-aligned value. -Reservoir Stimulation Capital Cost per Injection Well, 4 -Reservoir Stimulation Capital Cost per Production Well, 4 +Reservoir Stimulation Capital Cost per Injection Well, 4, -- The baseline stimulation cost is calibrated from costs of high-intensity U.S. shale wells (Baytex Energy, 2024; Quantum Proppant Technologies, 2020), which are the closest technological analogue for multi-stage EGS (Gradl, 2018). Costs are also driven by the requirement for high-strength ceramic proppant rather than standard sand, which would crush or chemically degrade (diagenesis) over a 30-year lifecycle at 200℃ (Ko et al., 2023; Shiozawa & McClure, 2014) and the premium for ultra-high-temperature (HT) downhole tools. Note that all-in costs per well are higher than the baseline cost because they include additional indirect costs and contingency. +Reservoir Stimulation Capital Cost per Production Well, 4, -- See Reservoir Stimulation Capital Cost per Injection Well -Field Gathering System Capital Cost Adjustment Factor, 0.54, -- Gathering costs represent 2% of facilities CAPEX per https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/ +Field Gathering System Capital Cost Adjustment Factor, 0.54, -- Gathering costs represent 2% of facilities CAPEX per [Matson, 2024](https://www.linkedin.com/pulse/fervo-energy-technology-day-2024-entering-geothermal-decade-matson-n4stc/). # *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** # ************************************************* End-Use Option, 1, -- Electricity Power Plant Type, 2, -- Supercritical ORC -Plant Lifetime, 30, -- Per https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/ +Plant Lifetime, 30, -- 30-year well life per [Geothermal Mythbusting: Water Use and Impacts](https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/) (Fervo Energy, 2025). -Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) -Reservoir Depth, 2.5908, -- 8500 feet per https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf +Reservoir Model, 1 + +Surface Temperature, 13, -- Surface temperature near Milford, UT (38.4987670, -112.9163432) ([Project InnerSpace, 2025](https://geomap.projectinnerspace.org/test/)). -Gradient 1, 72.23, -- temperature at 8500 ft: 200 degC (https://pangea.stanford.edu/ERE/db/GeoConf/papers/SGW/2024/Fercho.pdf); 228.89 degC @ 9824 ft (https://doi.org/10.31223/X5VH8C) Number of Segments, 1 +Gradient 1, 74, -- 200℃ at 8500 ft depth (Fercho et al. 2024); 228.89℃ at 9824 ft (Norbeck et al. 2024). + +Reservoir Depth, 2.68, -- Extrapolated from surface temperature, gradient, and average production temperature of shallower and deeper producers in Singh et al., 2025. -Reservoir Density, 2800, -- per https://doi.org/10.31223/X52X0B: phyllite + quartzite + diorite + granodiorite +Reservoir Density, 2800, -- phyllite + quartzite + diorite + granodiorite ([Norbeck et al., 2023](https://doi.org/10.31223/X52X0B)) Reservoir Heat Capacity, 790 Reservoir Thermal Conductivity, 3.05 Reservoir Porosity, 0.0118 -Productivity Index, 2.494, -- [kg/s/bar] NREL ATB conservative scenario (https://atb.nrel.gov/electricity/2024/geothermal) -Injectivity Index, 3.015, -- [kg/s/bar] NREL ATB conservative scenario (https://atb.nrel.gov/electricity/2024/geothermal) - Reservoir Volume Option, 1, -- FRAC_NUM_SEP: Reservoir volume calculated with fracture separation and number of fractures as input -Number of Fractures per Stimulated Well, 200, -- 25 stages with 8 clusters per stage -Fracture Separation, 7.315 -Fracture Shape, 2, -- CIRCULAR_DIAMETER -Fracture Height, 186.16, -- Approximates ellipsoidal fracture with 228 meter height and 152 meter width -Number of Doublets, 11 - -Production Flow Rate per Well, 120, -- Maximum Fervo-tested flow rate -Production Well Diameter, 8.535, -- Inner diameter for 9-5/8" casing size -Injection Well Diameter, 8.535, -- Inner diameter for 9-5/8" casing size - -Ramey Production Wellbore Model, 1 -Injection Temperature, 53.6, -- GEOPHIRES model-calculated reinjection temperature -Injection Wellbore Temperature Gain, 3 -Ambient Temperature, 11.17, -- https://www.ncei.noaa.gov/access/us-climate-normals/#dataset=normals-annualseasonal&timeframe=30&station=USC00425654 -Surface Temperature, 13, -- Project InnerSpace GeoMap https://geomap.projectinnerspace.org/test/ +Number of Fractures per Stimulated Well, 150, -- The model assumes an Extreme Limited Entry stimulation design (Fervo Energy, 2023) utilizing 12 stages with 15 clusters per stage (derived from Singh et al., 2025) and 81–85% stimulation success rate per 2024b ATB Moderate Scenario (NREL, 2025). +Fracture Separation, 9.14, -- 30 foot cluster spacing per [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf) -Maximum Drawdown, 0.02, -- Drawdown value that prevents minimum net electricity generation from going below 100 MWe -Water Loss Fraction, 0.15, -- Estimated to be between 10 and 20% +Fracture Shape, 4, -- Bench design and fracture geometry Singh et al., 2025 are given in rectangular dimensions. +Fracture Width, 304.8, -- Matches intra-bench well spacing of 500 ft (corresponding to fracture length of 1000 ft) (Singh. et al., 2025) +Fracture Height, 135, -- Actual fracture geometry is irregular and heterogeneous; this height complies with the minimum height required by the implemented bench design (200 ft; 60.96 meters) and yields an effective fracture surface area consistent with simulation results in Singh. et al., 2025. + +Water Loss Fraction, 0.01, -- "Long-term modeling, calibrated to early field data, predicts circulation recapture rates exceeding 99%" ([Geothermal Mythbusting: Water Use and Impacts](https://fervoenergy.com/geothermal-mythbusting-water-use-and-impacts/); Fervo Energy, 2025). Modeling in Singh et al., 2025 predicts fluid loss of 0.36% to 0.49%. +Water Cost Adjustment Factor, 2, -- Local scarcity may increase procurement costs + +Ambient Temperature, 11.17, -- Average annual temperature of Milford, Utah ([NCEI](https://www.ncei.noaa.gov/access/us-climate-normals/#dataset=normals-annualseasonal&timeframe=30&station=USC00425654)). Note that this value affects heat to power conversion efficiency. The effects of hourly and seasonal ambient temperature fluctuations on efficiency and power generation are not modeled in this version of the case study. Utilization Factor, .9 -Plant Outlet Pressure, 1000 psi, -- https://doi.org/10.31223/X5VH8C -Production Wellhead Pressure, 325 psi, -- https://doi.org/10.31223/X5VH8C +Plant Outlet Pressure, 2000 psi, -- McClure, 2024; Singh et al., 2025. Circulation Pump Efficiency, 0.80 -Well Geometry Configuration, 4, -- L -Number of Multilateral Sections, 0, -- This parameter is set to 0 because, for this case study, the cost of horizontal drilling (which would otherwise account for approximately 118 multilateral sections) is included within the 'vertical drilling cost.' This approach allows us to more directly convey the overall well drilling and completion cost, which is under $4 million. -Nonvertical Length per Multilateral Section, 4800 feet, -- Fervo presentation at Payne Institute, Dec 2, 2025 -Multilaterals Cased, True +# *** Well Bores Parameters *** + +Number of Production Wells, 13 +Number of Injection Wells per Production Well, 0.666, -- 5-well benches with 3:2 production:injection ratio (Singh et al., 2025) + +# Well Geometry Configuration, 4, -- L +Number of Multilateral Sections, 0, -- This parameter is set to 0 because, for this case study, the cost of horizontal drilling is included within the 'vertical drilling cost.' This approach allows us to more directly convey the overall well drilling and completion cost. +Nonvertical Length per Multilateral Section, 4700 feet, -- [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf). +# Multilaterals Cased, True + +Production Flow Rate per Well, 110, -- Cape Station pilot testing reported a sustained flow rate of 95–100 kg/s and maximum flow rate of 107 kg/s (Fervo Energy, 2024). Modeling by Singh et al. suggests initial flow rates of 120–130 kg/sec (Singh et al., 2025). The ATB Advanced Scenario models sustained flow rates of 110 kg/s (NREL, 2024). +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size, the next standard casing size up from 7 inches, implied by announcement of “increasing casing diameter” (Fervo Energy, 2025). +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 300 psi, -- [Singh et al., 2025](https://www.resfrac.com/wp-content/uploads/2025/06/Singh-2025-Fervo-Project-Cape.pdf) + +Productivity Index, 1.247, -- 50% of ATB Conservative Scenario (NREL, 2025) per analyses that suggest lower productivity (Xing et al., 2025; Yearsley and Kombrink, 2024). +Injectivity Index, 1.5075, -- See Productivity Index + +Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature (Beckers and McCabe, 2019). Close to upper bound of Project Red injection temperatures (75–125℉; 23.89–51.67℃) (Norbeck and Latimer, 2023). +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Wellbore Temperature Gain, 3 + + +Maximum Drawdown, 0.003, -- This value represents the drop in production temperature compared to the initial temperature that is allowed before the wellfield is redrilled. It is tuned to keep minimum net electricity generation over the project lifetime ≥100 MWe. # *** SIMULATION PARAMETERS *** # ***************************** diff --git a/tests/geophires_x_tests/test_fervo_project_cape_4.py b/tests/geophires_x_tests/test_fervo_project_cape_4.py index 620f78f2..47a97501 100644 --- a/tests/geophires_x_tests/test_fervo_project_cape_4.py +++ b/tests/geophires_x_tests/test_fervo_project_cape_4.py @@ -4,6 +4,8 @@ import sys from typing import Any +from pint.facets.plain import PlainQuantity + from base_test_case import BaseTestCase from geophires_x.GeoPHIRESUtils import quantity from geophires_x.GeoPHIRESUtils import sig_figs @@ -11,10 +13,75 @@ from geophires_x_client import GeophiresInputParameters from geophires_x_client import GeophiresXClient from geophires_x_client import GeophiresXResult +from geophires_x_client import ImmutableGeophiresInputParameters class FervoProjectCape4TestCase(BaseTestCase): + def test_internal_consistency(self): + + fpc4_result: GeophiresXResult = GeophiresXResult( + self._get_test_file_path('../examples/Fervo_Project_Cape-4.out') + ) + fpc4_input_params: GeophiresInputParameters = ImmutableGeophiresInputParameters( + from_file_path=self._get_test_file_path('../examples/Fervo_Project_Cape-4.txt') + ) + fpc4_input_params_dict: dict[str, Any] = self._get_input_parameters(fpc4_input_params) + + def _q(dict_val: str) -> PlainQuantity: + spl = dict_val.split(' ') + return quantity(float(spl[0]), spl[1]) + + lateral_length_q = _q(fpc4_input_params_dict['Nonvertical Length per Multilateral Section']) + frac_sep_q = quantity(float(fpc4_input_params_dict['Fracture Separation']), 'meter') + number_of_fracs_per_well = int(fpc4_input_params_dict['Number of Fractures per Stimulated Well']) + + self.assertLess(number_of_fracs_per_well * frac_sep_q, lateral_length_q) + + result_number_of_wells: int = self._number_of_wells(fpc4_result) + number_of_fracs = int(fpc4_result.result['RESERVOIR PARAMETERS']['Number of fractures']['value']) + self.assertEqual(number_of_fracs, result_number_of_wells * number_of_fracs_per_well) + self.assertEqual(result_number_of_wells, int(fpc4_input_params_dict['Number of Doublets']) * 2) + + @staticmethod + def _get_input_parameters( + params: GeophiresInputParameters, include_parameter_comments: bool = False, include_line_comments: bool = False + ) -> dict[str, Any]: + """ + TODO consolidate with docs/generate_fervo_project_cape_4_md.py:30 as a common utility function. + Note doing so is non-trivial because there would need to be a mechanism to ensure parsing exactly matches + GEOPHIRES behavior, which may diverge from the below implementation under some circumstances. + """ + comment_idx = 0 + ret: dict[str, Any] = {} + for line in params.as_text().split('\n'): + parts = line.strip().split(', ') # TODO generalize for array-type params + field = parts[0].strip() + if len(parts) >= 2 and not field.startswith('#'): + fieldValue = parts[1].strip() + if include_parameter_comments and len(parts) > 2: + fieldValue += ', ' + (', '.join(parts[2:])).strip() + ret[field] = fieldValue.strip() + + if include_line_comments and field.startswith('#'): + ret[f'_COMMENT-{comment_idx}'] = line.strip() + comment_idx += 1 + + # TODO preserve newlines + + return ret + + @staticmethod + def _number_of_wells(result: GeophiresXResult) -> int: + r: dict[str, dict[str, Any]] = result.result + + number_of_wells = ( + r['SUMMARY OF RESULTS']['Number of injection wells']['value'] + + r['SUMMARY OF RESULTS']['Number of production wells']['value'] + ) + + return number_of_wells + def test_fervo_project_cape_4_results_against_reference_values(self): """ Asserts that results conform to some of the key reference values claimed in docs/Fervo_Project_Cape-4.md. @@ -41,6 +108,9 @@ def test_fervo_project_cape_4_results_against_reference_values(self): redrills = r.result['ENGINEERING PARAMETERS']['Number of times redrilling']['value'] self.assertGreater(redrills, 1) self.assertLess(redrills, 6) + max_phase_2_permitted_wells = 320 + self.assertLess(self._number_of_wells(r) * redrills, max_phase_2_permitted_wells) + self.assertGreater(self._number_of_wells(r) * redrills, max_phase_2_permitted_wells * 0.9375) well_cost = r.result['CAPITAL COSTS (M$)']['Drilling and completion costs per well']['value'] self.assertLess(well_cost, 5.0) @@ -72,9 +142,8 @@ def test_case_study_documentation(self): """ def generate_documentation_markdown() -> None: - # Generate the markdown from template to ensure it's up to date + # Generate the Markdown from template to ensure it's up to date sys.path.insert(0, self._get_test_file_path('../../docs')) - # noinspection PyUnresolvedReferences from generate_fervo_project_cape_4_md import main as generate_documentation @@ -88,9 +157,11 @@ def generate_documentation_markdown() -> None: inputs_in_markdown = self.parse_markdown_inputs_structured(documentation_file_content) results_in_markdown = self.parse_markdown_results_structured(documentation_file_content) + example_result = GeophiresXResult(self._get_test_file_path('../examples/Fervo_Project_Cape-4.out')) + expected_drilling_cost_MUSD_per_well = 4.46 - number_of_doublets = inputs_in_markdown['Number of Doublets']['value'] - number_of_wells = number_of_doublets * 2 + # number_of_doublets = inputs_in_markdown['Number of Doublets']['value'] + number_of_wells = self._number_of_wells(example_result) self.assertAlmostEqualWithinSigFigs( expected_drilling_cost_MUSD_per_well * number_of_wells, results_in_markdown['Well Drilling and Completion Costs']['value'], @@ -141,7 +212,6 @@ def __init__(self, vu: dict[str, Any]): 'Stimulation Costs', # remapped to 'Stimulation Costs total' ] - example_result = GeophiresXResult(self._get_test_file_path('../examples/Fervo_Project_Cape-4.out')) example_result_values = {} for key, _ in results_in_markdown.items(): if key not in ignore_keys: diff --git a/tests/regenerate-example-result.sh b/tests/regenerate-example-result.sh index ffaebbe3..10ac9edb 100755 --- a/tests/regenerate-example-result.sh +++ b/tests/regenerate-example-result.sh @@ -8,7 +8,7 @@ cd "$(dirname "$0")" # ./tests/regenerate-example-result.sh SUTRAExample1 # See https://github.com/NREL/GEOPHIRES-X/issues/107 -# Note: make sure your virtualenv is activated before running or this script will fail +# Note: make sure your virtualenv is activated and you have run pip install -e . before running or this script will fail # or generate incorrect results. python -mgeophires_x examples/$1.txt examples/$1.out @@ -25,9 +25,9 @@ then python ../docs/generate_fervo_project_cape_4_md.py echo "Regenerating Fervo_Project_Cape-5..." - # TODO synchronize replacement matching with Fervo_Project_Cape-4 values - sed -e 's/Construction Years, 5/Construction Years, 3/' \ - -e 's/Number of Doublets, 52/Number of Doublets, 11/' \ + + sed -e 's/Construction Years,.*/Construction Years, 3/' \ + -e 's/^Number of Production Wells,.*/Number of Production Wells, 13/' \ -e 's/500 MWe/100 MWe/' \ -e 's/Phase II/Phase I/' \ examples/Fervo_Project_Cape-4.txt > examples/Fervo_Project_Cape-5.txt diff --git a/tox.ini b/tox.ini index ea862bc5..320d5c6a 100644 --- a/tox.ini +++ b/tox.ini @@ -62,7 +62,7 @@ deps = -r{toxinidir}/docs/requirements.txt commands = python src/geophires_x_schema_generator/main.py --build-path docs/ - python docs/generate_fervo_project_cape_4_md.py + python src/geophires_docs/__main__.py sphinx-build {posargs:-E} -b html docs dist/docs sphinx-build docs dist/docs python -c "import shutil; shutil.copytree('docs/_images', 'dist/docs/_images', dirs_exist_ok=True)"