diff --git a/docs/Fervo_Project_Cape-4.md b/docs/Fervo_Project_Cape-4.md index b6d0d5a2..7d84f1b5 100644 --- a/docs/Fervo_Project_Cape-4.md +++ b/docs/Fervo_Project_Cape-4.md @@ -8,7 +8,7 @@ Financial results are calculated using the [SAM Single Owner PPA Economic Model](https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html#sam-single-owner-ppa). -Key case study results include LCOE = $76.5/MWh and CAPEX = $4350/kW. +Key case study results include LCOE = $75.5/MWh and CAPEX = $4300/kW. [Click here](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-4) to interactively explore the case study in the GEOPHIRES web interface. @@ -41,20 +41,20 @@ in source code for the full set of inputs. ### Economic Parameters -| 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. | -| Inflation Rate | 2.3% | US inflation rate as of April 2025 | -| PPA Price | Starting at 9.5 cents/kWh, escalating to 10 cents/kWh by project year 11 | Upper end of ranges given in 2024 NREL ATB (NREL, 2024). Both PPAs 'firm for 10 years at less than $100/MWh' estimate given in a podcast. | -| Well Drilling Cost Correlation & Adjustment Factor | Vertical large baseline correlation + adjustment factor = 0.84 to align with Fervo claimed drilling costs of <$4M/well | Akindipe & Witter, 2025; Latimer, 2025. | -| Reservoir Stimulation Capital Cost Adjustment Factor | 2.66 | Estimated cost of ~$2M per well. Typical range for Nth-of-kind projects may be $0.5–2M. | -| Capital Cost for Power Plant for Electricity Generation | $1900/kW | US DOE, 2021. | -| Discount Rate | 12% | Typical discount rates for high-risk projects may be 12–15% | -| Inflated Bond Interest Rate | 5.6% | Typical debt annual interest rate | -| 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. | -| Exploration Capital Cost | $30M | Estimate significantly higher exploration costs than default correlation in consideration of potential risks associated with second/third/fourth-of-a-kind EGS projects | -| Investment Tax Credit Rate (ITC) | 30% | Same as 400 MWe case study (Fervo_Project_Cape-3) | -| Inflation Rate During Construction (additional indirect capital cost) | 15% | Estimate high indirect capital costs in consideration of potential risks associated with unforeseen engineering challenges or construction delays | +| 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. | +| Inflation Rate | 2.3% | US inflation rate as of April 2025 | +| PPA Price | Starting at 9.5 cents/kWh, escalating to 10 cents/kWh by project year 11 | Upper end of ranges given in 2024 NREL ATB (NREL, 2024). Both PPAs 'firm for 10 years at less than $100/MWh' estimate given in a podcast. | +| Well Drilling Cost Correlation & Adjustment Factor | Vertical large baseline correlation + adjustment factor = 0.8 to align with Fervo claimed drilling costs of <$4M/well | Akindipe & Witter, 2025; Latimer, 2025. | +| Reservoir Stimulation Capital Cost Adjustment Factor | 2.66 | Estimated cost of ~$2M per well. Typical range for Nth-of-kind projects may be $0.5–2M. | +| Capital Cost for Power Plant for Electricity Generation | $1900/kW | US DOE, 2021. | +| Discount Rate | 12% | Typical discount rates for high-risk projects may be 12–15% | +| Inflated Bond Interest Rate | 5.6% | Typical debt annual interest rate | +| 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. | +| Exploration Capital Cost | $30M | Estimate significantly higher exploration costs than default correlation in consideration of potential risks associated with second/third/fourth-of-a-kind EGS projects | +| Investment Tax Credit Rate (ITC) | 30% | Same as 400 MWe case study (Fervo_Project_Cape-3) | +| Inflation Rate During Construction (additional indirect capital cost) | 15% | Estimate high indirect capital costs in consideration of potential risks associated with unforeseen engineering challenges or construction delays | ### Technical & Engineering Parameters @@ -82,19 +82,19 @@ in source code for the complete results. | Metric | Result Value | Reference Value(s) | Reference Source | |------------------------------------|----------------------------------------------------------|--------------------------|---------------------------------------------| -| LCOE | $76.5/MWh | $80/MWh | Horne et al, 2025 | -| Project capital costs: Total CAPEX | $2.67B | | | -| Project capital costs: $/kW | $4350/kW (based on maximum total electricity generation) | $4500/kW, $3000–$6000/kW | Horne et al, 2025; Latimer, 2025. | -| Well Drilling and Completion Cost | $3.96M/well | $<4M/well | Latimer, 2025. | +| LCOE | $75.5/MWh | $80/MWh | Horne et al, 2025 | +| Project capital costs: Total CAPEX | $2.64B | | | +| Project capital costs: $/kW | $4300/kW (based on maximum total electricity generation) | $4500/kW, $3000–$6000/kW | Horne et al, 2025; Latimer, 2025. | +| Well Drilling and Completion Cost | $3.96M/well (including 5% indirect costs) | $<4M/well | Latimer, 2025. | | WACC | 8.3% | 8.3% | Matson, 2024. | -| After-tax IRR | 30.7% | 15–25% | Typical levered returns for energy projects | +| After-tax IRR | 31.5% | 15–25% | Typical levered returns for energy projects | ### Technical & Engineering Results | Metric | Result Value | Reference Value(s) | Reference Source | |-------------------------------------------------|--------------|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Minimum Net Electricity Generation | 503 MW | 500 MW | Fervo Energy, 2025. The 500 MW PPA is interpreted to mean that Cape Station's net electricity generation must never fall below 500 MWe. | -| Maximum Total Electricity Generation | 615 MW | | Actual maximum total generation may be bounded or constrained by modular power plant design not modeled in this case study. For example, a modular design with 50MW units may constrain maximum total generation to 600 MW. | +| Maximum Total Electricity Generation | 614 MW | | Actual maximum total generation may be bounded or constrained by modular power plant design not modeled in this case study. For example, a modular design with 50MW units may constrain maximum total generation to 600 MW. | | Number of times redrilling | 3 | 3–6 | Redrilling expected to be required within 5–10 years of project start | | Average Production Temperature | 199℃ | 204℃, 190.6–198.6℃ (optimal plant operating range) | Trent, 2024; Norbeck et al, 2024. | | Total fracture surface area per production well | 2.787×10⁶ m² | 2.787×10⁶ m² (30 million ft² per well) | Fercho et al, 2025. | diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 660ff1ea..dc716d72 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -1633,6 +1633,7 @@ def __init__(self, model: Model): f'Provide {self.ccexplfixed.Name} to override the default correlation and set your own cost.' ) + # noinspection SpellCheckingInspection self.Cwell = self.OutputParameterDict[self.Cwell.Name] = OutputParameter( Name="Wellfield cost", display_name='Drilling and completion costs', @@ -1640,11 +1641,21 @@ def __init__(self, model: Model): PreferredUnits=CurrencyUnit.MDOLLARS, CurrentUnits=CurrencyUnit.MDOLLARS, - # See TODO re:parameterizing indirect costs at src/geophires_x/Economics.py:652 - # (https://github.com/NREL/GEOPHIRES-X/issues/383) + # TODO https://github.com/NREL/GEOPHIRES-X/issues/383?title=Parameterize+indirect+cost+factor ToolTipText="Includes total drilling and completion cost of all injection and production wells and " "laterals, plus 5% indirect costs." ) + self.drilling_and_completion_costs_per_well = self.OutputParameterDict[ + self.drilling_and_completion_costs_per_well.Name] = OutputParameter( + Name='Drilling and completion costs per well', + UnitType=Units.CURRENCY, + PreferredUnits=CurrencyUnit.MDOLLARS, + CurrentUnits=CurrencyUnit.MDOLLARS, + + # TODO https://github.com/NREL/GEOPHIRES-X/issues/383?title=Parameterize+indirect+cost+factor + ToolTipText='Includes total drilling and completion cost per well, ' + 'including injection and production wells and laterals, plus 5% indirect costs.' + ) self.Coamwell = self.OutputParameterDict[self.Coamwell.Name] = OutputParameter( Name="O&M Wellfield cost", display_name='Wellfield maintenance costs', @@ -2313,7 +2324,9 @@ def Calculate(self, model: Model) -> None: else: self.cost_lateral_section.value = 0.0 # cost of the well field - # 1.05 for 5% indirect costs - see TODO re:parameterizing at src/geophires_x/Economics.py:652 + + # 1.05 for 5% indirect costs + # TODO https://github.com/NREL/GEOPHIRES-X/issues/383?title=Parameterize+indirect+cost+factor self.Cwell.value = 1.05 * ((self.cost_one_production_well.value * model.wellbores.nprod.value) + (self.cost_one_injection_well.value * model.wellbores.ninj.value) + self.cost_lateral_section.value) @@ -2972,6 +2985,7 @@ def calculate_cashflow(self, model: Model) -> None: for i in range(1, model.surfaceplant.plant_lifetime.value + model.surfaceplant.construction_years.value, 1): self.TotalCummRevenue.value[i] = self.TotalCummRevenue.value[i-1] + self.TotalRevenue.value[i] + # noinspection SpellCheckingInspection def _calculate_derived_outputs(self, model: Model) -> None: """ Subclasses should call _calculate_derived_outputs at the end of their Calculate methods to populate output @@ -2988,5 +3002,11 @@ def _calculate_derived_outputs(self, model: Model) -> None: self.real_discount_rate.value = self.discountrate.quantity().to(convertible_unit( self.real_discount_rate.CurrentUnits)).magnitude + if hasattr(self, 'Cwell') and hasattr(model.wellbores, 'nprod') and hasattr(model.wellbores, 'ninj'): + self.drilling_and_completion_costs_per_well.value = ( + self.Cwell.value / + (model.wellbores.nprod.value + model.wellbores.ninj.value) + ) + def __str__(self): return "Economics" diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 4b93b98d..eedff5a8 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -38,10 +38,10 @@ project_vir_parameter, project_payback_period_parameter, ) -from geophires_x.GeoPHIRESUtils import is_float, is_int +from geophires_x.GeoPHIRESUtils import is_float, is_int, sig_figs from geophires_x.OptionList import EconomicModel, EndUseOptions from geophires_x.Parameter import Parameter, OutputParameter, floatParameter -from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units, PercentUnit +from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units @dataclass @@ -162,7 +162,7 @@ def calculate_sam_economics(model: Model) -> SamEconomicsCalculations: cash_flow = _calculate_sam_economics_cash_flow(model, single_owner) def sf(_v: float, num_sig_figs: int = 5) -> float: - return _sig_figs(_v, num_sig_figs) + return sig_figs(_v, num_sig_figs) sam_economics: SamEconomicsCalculations = SamEconomicsCalculations(sam_cash_flow_profile=cash_flow) sam_economics.lcoe_nominal.value = sf(single_owner.Outputs.lcoe_nom) @@ -435,21 +435,3 @@ def _ppa_pricing_model( def _get_max_total_generation_kW(model: Model) -> float: return np.max(model.surfaceplant.ElectricityProduced.quantity().to(convertible_unit('kW')).magnitude) - - -def _sig_figs(val: float | list | tuple, num_sig_figs: int) -> float: - """ - TODO move to utilities, probably - """ - - if val is None: - return None - - if isinstance(val, list) or isinstance(val, tuple): - return [_sig_figs(v, num_sig_figs) for v in val] - - try: - return float('%s' % float(f'%.{num_sig_figs}g' % val)) # pylint: disable=consider-using-f-string - except TypeError: - # TODO warn - return val diff --git a/src/geophires_x/GeoPHIRESUtils.py b/src/geophires_x/GeoPHIRESUtils.py index e8328d8a..1a7594aa 100644 --- a/src/geophires_x/GeoPHIRESUtils.py +++ b/src/geophires_x/GeoPHIRESUtils.py @@ -642,3 +642,16 @@ def is_float(o: Any) -> bool: else: return True + +def sig_figs(val: float | list | tuple, num_sig_figs: int) -> float: + if val is None: + return None + + if isinstance(val, list) or isinstance(val, tuple): + return [sig_figs(v, num_sig_figs) for v in val] + + try: + return float('%s' % float(f'%.{num_sig_figs}g' % val)) # pylint: disable=consider-using-f-string + except TypeError: + # TODO warn + return val diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index ac9f7a2c..6ae0fb7a 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -458,7 +458,8 @@ def PrintOutputs(self, model: Model): f.write(f' Drilling and completion costs per production well: {econ.cost_one_production_well.value:10.2f} ' + econ.cost_one_production_well.CurrentUnits.value + NL) f.write(f' Drilling and completion costs per injection well: {econ.cost_one_injection_well.value:10.2f} ' + econ.cost_one_injection_well.CurrentUnits.value + NL) else: - f.write(f' Drilling and completion costs per well: {model.economics.Cwell.value/(model.wellbores.nprod.value+model.wellbores.ninj.value):10.2f} ' + model.economics.Cwell.CurrentUnits.value + NL) + cpw_label = Outputs._field_label(econ.drilling_and_completion_costs_per_well.display_name, 47) + f.write(f' {cpw_label}{econ.drilling_and_completion_costs_per_well.value:10.2f} {econ.Cwell.CurrentUnits.value}\n') f.write(f' {econ.Cstim.display_name}: {econ.Cstim.value:10.2f} {econ.Cstim.CurrentUnits.value}\n') f.write(f' Surface power plant costs: {model.economics.Cplant.value:10.2f} ' + model.economics.Cplant.CurrentUnits.value + NL) if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: diff --git a/src/geophires_x/WellBores.py b/src/geophires_x/WellBores.py index d4f6e51d..ec25bf92 100644 --- a/src/geophires_x/WellBores.py +++ b/src/geophires_x/WellBores.py @@ -1035,14 +1035,24 @@ def __init__(self, model: Model): ErrMessage="assume default for Non-vertical Wellbore Diameter (0.156 m)", ToolTipText="Non-vertical Wellbore Diameter" ) + + max_allowed_total_wells = max(self.nprod.AllowableRange) + max(self.ninj.AllowableRange) + max_allowed_laterals_per_well_when_max_wells = 3 + """Arbitrary upper limit, could be increased in future if needed""" + + # noinspection SpellCheckingInspection self.numnonverticalsections = self.ParameterDict[self.numnonverticalsections.Name] = intParameter( "Number of Multilateral Sections", DefaultValue=0, - AllowableRange=list(range(0, 101, 1)), + AllowableRange=list(range(0, max_allowed_total_wells * max_allowed_laterals_per_well_when_max_wells, 1)), UnitType=Units.NONE, ErrMessage="assume default for Number of Nonvertical Wellbore Sections (0)", - ToolTipText="Number of Nonvertical Wellbore Sections" + ToolTipText='Number of Nonvertical Wellbore Sections, aka laterals or horizontals. ' + 'Note that this is the total number of sections for the entire project and not the number of ' + 'sections per well. For example, a project with 2 injectors and 2 producers with 3 laterals ' + 'per well should set Number of Multilateral Sections = 2 * 2 * 3 = 12.' ) + self.NonverticalsCased = self.ParameterDict[self.NonverticalsCased.Name] = boolParameter( "Multilaterals Cased", DefaultValue=False, diff --git a/src/geophires_x_schema_generator/geophires-request.json b/src/geophires_x_schema_generator/geophires-request.json index 34ebf881..a7e62abd 100644 --- a/src/geophires_x_schema_generator/geophires-request.json +++ b/src/geophires_x_schema_generator/geophires-request.json @@ -947,13 +947,13 @@ "maximum": 100.0 }, "Number of Multilateral Sections": { - "description": "Number of Nonvertical Wellbore Sections", + "description": "Number of Nonvertical Wellbore Sections, aka laterals or horizontals. Note that this is the total number of sections for the entire project and not the number of sections per well. For example, a project with 2 injectors and 2 producers with 3 laterals per well should set Number of Multilateral Sections = 2 * 2 * 3 = 12.", "type": "integer", "units": null, "category": "Well Bores", "default": 0, "minimum": 0, - "maximum": 100 + "maximum": 1199 }, "Multilaterals Cased": { "description": "If set to True, casing & cementing are assumed to comprise 50% of drilling costs (doubling cost compared to uncased).", diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 5294e9b9..8fadbe38 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -333,7 +333,11 @@ "description": "Wellfield cost. Includes total drilling and completion cost of all injection and production wells and laterals, plus 5% indirect costs.", "units": "MUSD" }, - "Drilling and completion costs per well": {}, + "Drilling and completion costs per well": { + "type": "number", + "description": "Includes total drilling and completion cost per well, including injection and production wells and laterals, plus 5% indirect costs.", + "units": "MUSD" + }, "Drilling and completion costs per production well": {}, "Drilling and completion costs per injection well": {}, "Drilling and completion costs per vertical production well": {}, diff --git a/tests/examples/Fervo_Project_Cape-4.out b/tests/examples/Fervo_Project_Cape-4.out index dcdb16f0..860f26f8 100644 --- a/tests/examples/Fervo_Project_Cape-4.out +++ b/tests/examples/Fervo_Project_Cape-4.out @@ -4,17 +4,17 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.9.18 - Simulation Date: 2025-06-18 - Simulation Time: 13:23 - Calculation Time: 1.554 sec + GEOPHIRES Version: 3.9.19 + Simulation Date: 2025-06-20 + Simulation Time: 11:37 + Calculation Time: 1.572 sec ***SUMMARY OF RESULTS*** End-Use Option: Electricity Average Net Electricity Production: 531.71 MW - Electricity breakeven price: 7.65 cents/kWh - Total CAPEX: 2673.11 MUSD + Electricity breakeven price: 7.55 cents/kWh + Total CAPEX: 2638.68 MUSD Number of production wells: 59 Number of injection wells: 59 Flowrate per production well: 107.0 kg/sec @@ -31,11 +31,11 @@ Simulation Metadata Accrued financing during construction: 15.00 % Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 612.72 MUSD - After-tax IRR: 30.66 % - Project VIR=PI=PIR: 1.57 - Project MOIC: 5.55 - Project Payback Period: 2.01 yr + Project NPV: 639.13 MUSD + After-tax IRR: 31.48 % + Project VIR=PI=PIR: 1.61 + Project MOIC: 5.75 + Project Payback Period: 1.95 yr Estimated Jobs Created: 1298 ***ENGINEERING PARAMETERS*** @@ -97,25 +97,23 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** - Drilling and completion costs: 497.69 MUSD - Drilling and completion costs per vertical production well: 3.96 MUSD - Drilling and completion costs per vertical injection well: 3.96 MUSD - Drilling and completion costs per non-vertical section: 2.08 MUSD + Drilling and completion costs: 467.75 MUSD + Drilling and completion costs per well: 3.96 MUSD Stimulation costs: 236.88 MUSD Surface power plant costs: 1503.42 MUSD Field gathering system costs: 56.45 MUSD Total surface equipment costs: 1559.87 MUSD Exploration costs: 30.00 MUSD - Investment Tax Credit: -697.33 MUSD - Total CAPEX: 2673.11 MUSD + Investment Tax Credit: -688.35 MUSD + Total CAPEX: 2638.68 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 6.50 MUSD/yr + Wellfield maintenance costs: 6.20 MUSD/yr Power plant maintenance costs: 25.42 MUSD/yr Water costs: 24.86 MUSD/yr - Total operating and maintenance costs: 130.24 MUSD/yr + Total operating and maintenance costs: 126.94 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** @@ -225,43 +223,43 @@ PPA price (cents/kWh) 0.0 9.50 9 PPA revenue ($) 0 398,356,471 400,854,971 404,015,457 406,780,894 408,810,043 408,653,832 403,527,928 402,097,301 416,819,877 420,523,180 423,535,733 426,105,735 427,441,971 425,448,518 416,721,913 428,603,740 436,851,817 440,188,887 443,061,909 445,265,887 445,452,800 440,827,914 435,054,417 452,474,970 456,614,321 459,742,311 462,421,669 463,990,994 462,434,870 454,963,130 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,336,555,047 -Total revenue ($) 0 398,356,471 400,854,971 404,015,457 406,780,894 408,810,043 408,653,832 403,527,928 402,097,301 416,819,877 420,523,180 423,535,733 426,105,735 427,441,971 425,448,518 416,721,913 428,603,740 436,851,817 440,188,887 443,061,909 445,265,887 445,452,800 440,827,914 435,054,417 452,474,970 456,614,321 459,742,311 462,421,669 463,990,994 462,434,870 1,791,518,178 +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,319,338,295 +Total revenue ($) 0 398,356,471 400,854,971 404,015,457 406,780,894 408,810,043 408,653,832 403,527,928 402,097,301 416,819,877 420,523,180 423,535,733 426,105,735 427,441,971 425,448,518 416,721,913 428,603,740 436,851,817 440,188,887 443,061,909 445,265,887 445,452,800 440,827,914 435,054,417 452,474,970 456,614,321 459,742,311 462,421,669 463,990,994 462,434,870 1,774,301,426 -Property tax net assessed value ($) 0 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 2,673,110,095 +Property tax net assessed value ($) 0 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 2,638,676,591 OPERATING EXPENSES -O&M fixed expense ($) 0 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 +O&M fixed expense ($) 0 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 130,236,463 +Total operating expenses ($) 0 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 126,942,824 -EBITDA ($) 0 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 +EBITDA ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 OPERATING ACTIVITIES -EBITDA ($) 0 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 +EBITDA ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 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 89,816,499 88,597,952 87,311,166 85,952,321 84,517,380 83,002,082 81,401,927 79,712,164 77,927,774 76,043,459 74,053,621 71,952,353 69,733,414 67,390,214 64,915,795 62,302,808 59,543,495 56,629,659 53,552,649 50,303,327 46,872,042 43,248,605 39,422,256 35,381,631 31,114,732 26,608,886 21,850,712 16,826,081 11,520,070 5,916,923 -Cash flow from operating activities ($) 0 178,303,509 182,020,556 186,467,827 190,592,110 194,056,200 195,415,287 191,889,537 192,148,674 208,655,639 214,243,258 219,245,649 223,916,919 227,472,094 227,821,841 221,569,655 236,064,468 247,071,859 253,322,765 259,272,797 264,726,098 268,344,295 267,342,846 265,395,698 286,856,875 295,263,126 302,896,962 310,334,494 316,928,450 320,678,336 1,655,364,791 +Debt interest payment ($) 0 88,659,533 87,456,683 86,186,473 84,845,131 83,428,674 81,932,896 80,353,353 78,685,357 76,923,953 75,063,910 73,099,704 71,025,503 68,835,147 66,522,131 64,079,586 61,500,259 58,776,489 55,900,188 52,862,814 49,655,347 46,268,262 42,691,501 38,914,441 34,925,865 30,713,929 26,266,125 21,569,243 16,609,337 11,371,675 5,840,705 +Cash flow from operating activities ($) 0 182,754,114 186,455,464 190,886,160 194,992,939 198,438,545 199,778,112 196,231,751 196,469,120 212,953,101 218,516,447 223,493,205 228,137,408 231,664,000 231,983,563 225,699,504 240,160,658 251,132,504 257,345,876 263,256,271 268,667,716 272,241,714 271,193,589 269,197,153 290,606,281 298,957,568 306,533,362 313,909,602 320,438,834 324,120,371 1,641,517,897 INVESTING ACTIVITIES -Total installed cost ($) -2,673,110,095 +Total installed cost ($) -2,638,676,591 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -2,673,110,095 +Purchase of property ($) -2,638,676,591 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 @@ -273,86 +271,86 @@ Reserve capital spending major equipment 1 ($) 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 ($) -2,673,110,095 0 0 0 0 0 0 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,638,676,591 0 0 0 0 0 0 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,069,244,038 -Size of debt ($) 1,603,866,057 +Issuance of equity ($) 1,055,470,636 +Size of debt ($) 1,583,205,954 minus: -Debt principal payment ($) 0 21,759,769 22,978,316 24,265,102 25,623,948 27,058,889 28,574,187 30,174,341 31,864,104 33,648,494 35,532,810 37,522,647 39,623,915 41,842,855 44,186,054 46,660,474 49,273,460 52,032,774 54,946,609 58,023,619 61,272,942 64,704,227 68,327,663 72,154,013 76,194,637 80,461,537 84,967,383 89,725,556 94,750,188 100,056,198 105,659,345 +Debt principal payment ($) 0 21,479,472 22,682,323 23,952,533 25,293,875 26,710,332 28,206,110 29,785,652 31,453,649 33,215,053 35,075,096 37,039,301 39,113,502 41,303,858 43,616,875 46,059,419 48,638,747 51,362,517 54,238,818 57,276,192 60,483,658 63,870,743 67,447,505 71,224,565 75,213,141 79,425,077 83,872,881 88,569,762 93,529,669 98,767,330 104,298,301 equals: -Cash flow from financing activities ($) 2,673,110,095 -21,759,769 -22,978,316 -24,265,102 -25,623,948 -27,058,889 -28,574,187 -30,174,341 -31,864,104 -33,648,494 -35,532,810 -37,522,647 -39,623,915 -41,842,855 -44,186,054 -46,660,474 -49,273,460 -52,032,774 -54,946,609 -58,023,619 -61,272,942 -64,704,227 -68,327,663 -72,154,013 -76,194,637 -80,461,537 -84,967,383 -89,725,556 -94,750,188 -100,056,198 -105,659,345 +Cash flow from financing activities ($) 2,638,676,591 -21,479,472 -22,682,323 -23,952,533 -25,293,875 -26,710,332 -28,206,110 -29,785,652 -31,453,649 -33,215,053 -35,075,096 -37,039,301 -39,113,502 -41,303,858 -43,616,875 -46,059,419 -48,638,747 -51,362,517 -54,238,818 -57,276,192 -60,483,658 -63,870,743 -67,447,505 -71,224,565 -75,213,141 -79,425,077 -83,872,881 -88,569,762 -93,529,669 -98,767,330 -104,298,301 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 178,303,509 182,020,556 186,467,827 190,592,110 194,056,200 195,415,287 191,889,537 192,148,674 208,655,639 214,243,258 219,245,649 223,916,919 227,472,094 227,821,841 221,569,655 236,064,468 247,071,859 253,322,765 259,272,797 264,726,098 268,344,295 267,342,846 265,395,698 286,856,875 295,263,126 302,896,962 310,334,494 316,928,450 320,678,336 1,655,364,791 -Cash flow from investing activities ($) -2,673,110,095 0 0 0 0 0 0 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,673,110,095 -21,759,769 -22,978,316 -24,265,102 -25,623,948 -27,058,889 -28,574,187 -30,174,341 -31,864,104 -33,648,494 -35,532,810 -37,522,647 -39,623,915 -41,842,855 -44,186,054 -46,660,474 -49,273,460 -52,032,774 -54,946,609 -58,023,619 -61,272,942 -64,704,227 -68,327,663 -72,154,013 -76,194,637 -80,461,537 -84,967,383 -89,725,556 -94,750,188 -100,056,198 -105,659,345 -Total pre-tax cash flow ($) 0 156,543,740 159,042,239 162,202,725 164,968,162 166,997,311 166,841,100 161,715,196 160,284,569 175,007,145 178,710,449 181,723,002 184,293,003 185,629,239 183,635,786 174,909,182 186,791,008 195,039,085 198,376,155 201,249,177 203,453,156 203,640,069 199,015,182 193,241,685 210,662,238 214,801,589 217,929,579 220,608,938 222,178,263 220,622,138 1,549,705,446 +Cash flow from operating activities ($) 0 182,754,114 186,455,464 190,886,160 194,992,939 198,438,545 199,778,112 196,231,751 196,469,120 212,953,101 218,516,447 223,493,205 228,137,408 231,664,000 231,983,563 225,699,504 240,160,658 251,132,504 257,345,876 263,256,271 268,667,716 272,241,714 271,193,589 269,197,153 290,606,281 298,957,568 306,533,362 313,909,602 320,438,834 324,120,371 1,641,517,897 +Cash flow from investing activities ($) -2,638,676,591 0 0 0 0 0 0 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,638,676,591 -21,479,472 -22,682,323 -23,952,533 -25,293,875 -26,710,332 -28,206,110 -29,785,652 -31,453,649 -33,215,053 -35,075,096 -37,039,301 -39,113,502 -41,303,858 -43,616,875 -46,059,419 -48,638,747 -51,362,517 -54,238,818 -57,276,192 -60,483,658 -63,870,743 -67,447,505 -71,224,565 -75,213,141 -79,425,077 -83,872,881 -88,569,762 -93,529,669 -98,767,330 -104,298,301 +Total pre-tax cash flow ($) 0 161,274,642 163,773,142 166,933,628 169,699,065 171,728,214 171,572,002 166,446,099 165,015,472 179,738,047 183,441,351 186,453,904 189,023,906 190,360,142 188,366,688 179,640,084 191,521,911 199,769,987 203,107,058 205,980,080 208,184,058 208,370,971 203,746,085 197,972,588 215,393,140 219,532,492 222,660,482 225,339,840 226,909,165 225,353,041 1,537,219,596 Pre-tax Returns: -Issuance of equity ($) 1,069,244,038 -Total pre-tax cash flow ($) 0 156,543,740 159,042,239 162,202,725 164,968,162 166,997,311 166,841,100 161,715,196 160,284,569 175,007,145 178,710,449 181,723,002 184,293,003 185,629,239 183,635,786 174,909,182 186,791,008 195,039,085 198,376,155 201,249,177 203,453,156 203,640,069 199,015,182 193,241,685 210,662,238 214,801,589 217,929,579 220,608,938 222,178,263 220,622,138 1,549,705,446 -Total pre-tax returns ($) -1,069,244,038 156,543,740 159,042,239 162,202,725 164,968,162 166,997,311 166,841,100 161,715,196 160,284,569 175,007,145 178,710,449 181,723,002 184,293,003 185,629,239 183,635,786 174,909,182 186,791,008 195,039,085 198,376,155 201,249,177 203,453,156 203,640,069 199,015,182 193,241,685 210,662,238 214,801,589 217,929,579 220,608,938 222,178,263 220,622,138 1,549,705,446 +Issuance of equity ($) 1,055,470,636 +Total pre-tax cash flow ($) 0 161,274,642 163,773,142 166,933,628 169,699,065 171,728,214 171,572,002 166,446,099 165,015,472 179,738,047 183,441,351 186,453,904 189,023,906 190,360,142 188,366,688 179,640,084 191,521,911 199,769,987 203,107,058 205,980,080 208,184,058 208,370,971 203,746,085 197,972,588 215,393,140 219,532,492 222,660,482 225,339,840 226,909,165 225,353,041 1,537,219,596 +Total pre-tax returns ($) -1,055,470,636 161,274,642 163,773,142 166,933,628 169,699,065 171,728,214 171,572,002 166,446,099 165,015,472 179,738,047 183,441,351 186,453,904 189,023,906 190,360,142 188,366,688 179,640,084 191,521,911 199,769,987 203,107,058 205,980,080 208,184,058 208,370,971 203,746,085 197,972,588 215,393,140 219,532,492 222,660,482 225,339,840 226,909,165 225,353,041 1,537,219,596 After-tax Returns: -Total pre-tax returns ($) -1,069,244,038 156,543,740 159,042,239 162,202,725 164,968,162 166,997,311 166,841,100 161,715,196 160,284,569 175,007,145 178,710,449 181,723,002 184,293,003 185,629,239 183,635,786 174,909,182 186,791,008 195,039,085 198,376,155 201,249,177 203,453,156 203,640,069 199,015,182 193,241,685 210,662,238 214,801,589 217,929,579 220,608,938 222,178,263 220,622,138 1,549,705,446 -Federal ITC total income ($) 0 801,933,028 0 0 0 0 0 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 ($) -1,055,470,636 161,274,642 163,773,142 166,933,628 169,699,065 171,728,214 171,572,002 166,446,099 165,015,472 179,738,047 183,441,351 186,453,904 189,023,906 190,360,142 188,366,688 179,640,084 191,521,911 199,769,987 203,107,058 205,980,080 208,184,058 208,370,971 203,746,085 197,972,588 215,393,140 219,532,492 222,660,482 225,339,840 226,909,165 225,353,041 1,537,219,596 +Federal ITC total income ($) 0 791,602,977 0 0 0 0 0 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 -23,728,934 -13,361,132 -14,229,685 -15,035,157 -15,711,694 -15,977,123 -15,288,545 -15,339,154 -18,562,964 -19,654,226 -20,631,193 -21,543,492 -22,237,818 -22,306,123 -21,085,072 -23,915,909 -26,065,652 -27,286,454 -28,448,495 -29,513,525 -41,313,900 -52,212,058 -51,831,780 -56,023,148 -57,664,889 -59,155,777 -60,608,327 -61,896,126 -62,628,479 -323,292,744 +Federal tax benefit (liability) ($) 0 -24,741,041 -14,513,077 -15,378,392 -16,180,446 -16,853,373 -17,114,990 -16,422,386 -16,468,744 -19,688,065 -20,774,587 -21,746,548 -22,653,560 -23,342,304 -23,404,714 -22,177,438 -25,001,701 -27,144,503 -28,357,974 -29,512,274 -30,569,130 -42,217,969 -52,964,108 -52,574,204 -56,755,407 -58,386,413 -59,865,966 -61,306,545 -62,581,704 -63,300,708 -320,588,445 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 -8,504,994 -4,788,936 -5,100,245 -5,388,945 -5,631,431 -5,726,568 -5,479,765 -5,497,905 -6,653,392 -7,044,526 -7,394,693 -7,721,682 -7,970,544 -7,995,026 -7,557,373 -8,572,010 -9,342,528 -9,780,091 -10,196,593 -10,578,324 -14,807,849 -18,713,999 -18,577,699 -20,079,981 -20,668,419 -21,202,787 -21,723,415 -22,184,992 -22,447,484 -115,875,535 -Total after-tax returns ($) -1,069,244,038 926,242,839 140,892,170 142,872,795 144,544,060 145,654,186 145,137,409 140,946,887 139,447,511 149,790,789 152,011,697 153,697,116 155,027,829 155,420,877 153,334,636 146,266,737 154,303,090 159,630,905 161,309,611 162,604,089 163,361,307 147,518,320 128,089,125 122,832,207 134,559,109 136,468,282 137,571,015 138,277,196 138,097,145 135,546,176 1,110,537,167 +State tax benefit (liability) ($) 0 -8,867,757 -5,201,820 -5,511,968 -5,799,443 -6,040,635 -6,134,405 -5,886,160 -5,902,776 -7,056,654 -7,446,088 -7,794,462 -8,119,556 -8,366,417 -8,388,787 -7,948,902 -8,961,183 -9,729,212 -10,164,148 -10,577,876 -10,956,677 -15,131,889 -18,983,551 -18,843,801 -20,342,440 -20,927,030 -21,457,335 -21,973,672 -22,430,718 -22,688,426 -114,906,253 +Total after-tax returns ($) -1,055,470,636 919,268,822 144,058,245 146,043,268 147,719,176 148,834,206 148,322,607 144,137,553 142,643,952 152,993,328 155,220,676 156,912,895 158,250,790 158,651,421 156,573,187 149,513,744 157,559,027 162,896,272 164,584,935 165,889,929 166,658,251 151,021,113 131,798,425 126,554,583 138,295,294 140,219,049 141,337,181 142,059,623 141,896,743 139,363,906 1,101,724,898 -After-tax cumulative IRR (%) NaN -13.37 -0.17 9.73 16.39 20.77 23.68 25.59 26.91 27.91 28.63 29.15 29.54 29.82 30.03 30.17 30.29 30.38 30.45 30.50 30.54 30.57 30.59 30.60 30.61 30.62 30.63 30.63 30.64 30.64 30.66 -After-tax cumulative NPV ($) -1,069,244,038 -260,834,913 -153,510,246 -58,522,284 25,351,382 99,117,119 163,270,187 217,645,265 264,598,067 308,617,272 347,606,124 382,012,228 412,301,287 438,804,091 461,624,797 480,624,234 498,117,711 513,912,899 527,843,647 540,099,738 550,846,462 559,316,379 565,735,149 571,107,423 576,243,900 580,790,538 584,790,831 588,300,142 591,359,021 593,979,443 612,717,451 +After-tax cumulative IRR (%) NaN -12.90 0.66 10.71 17.41 21.79 24.67 26.57 27.86 28.84 29.54 30.05 30.42 30.69 30.89 31.03 31.14 31.22 31.29 31.34 31.37 31.40 31.42 31.43 31.44 31.45 31.45 31.46 31.46 31.46 31.48 +After-tax cumulative NPV ($) -1,055,470,636 -253,148,316 -143,411,891 -46,316,062 39,400,008 114,776,248 180,337,225 235,943,211 283,972,274 328,932,614 368,744,523 403,870,500 434,789,256 461,842,941 485,145,639 504,566,849 522,429,453 538,547,744 552,761,350 565,265,108 576,228,721 584,899,754 591,504,404 597,039,482 602,318,580 606,990,179 611,099,985 614,705,290 617,848,331 620,542,558 639,131,877 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -1,069,244,038 527,886,368 -259,962,800 -261,142,662 -262,236,834 -263,155,857 -263,516,423 -262,581,041 -262,649,790 -267,029,088 -268,511,483 -269,838,618 -271,077,906 -272,021,093 -272,113,881 -270,455,176 -274,300,650 -277,220,911 -278,879,276 -280,457,820 -281,904,581 -297,934,481 -312,738,788 -312,222,210 -317,915,861 -320,146,039 -322,171,296 -324,144,473 -325,893,849 -326,888,694 655,574,037 +Annual costs ($) -1,055,470,636 520,912,351 -256,796,726 -257,972,189 -259,061,718 -259,975,837 -260,331,224 -259,390,374 -259,453,349 -263,826,549 -265,302,504 -266,622,838 -267,854,945 -268,790,550 -268,875,330 -267,208,169 -271,044,713 -273,955,544 -275,603,952 -277,171,980 -278,607,636 -294,431,687 -309,029,488 -308,499,834 -314,179,676 -316,395,272 -318,405,130 -320,362,047 -322,094,252 -323,070,964 646,761,768 PPA revenue ($) 0 398,356,471 400,854,971 404,015,457 406,780,894 408,810,043 408,653,832 403,527,928 402,097,301 416,819,877 420,523,180 423,535,733 426,105,735 427,441,971 425,448,518 416,721,913 428,603,740 436,851,817 440,188,887 443,061,909 445,265,887 445,452,800 440,827,914 435,054,417 452,474,970 456,614,321 459,742,311 462,421,669 463,990,994 462,434,870 454,963,130 Electricity to grid (kWh) 0.0 4,193,226,013 4,219,526,008 4,227,429,703 4,231,130,578 4,227,174,470 4,200,800,078 4,123,944,075 4,085,524,292 4,210,727,110 4,223,816,595 4,229,858,515 4,231,437,288 4,220,815,353 4,177,617,023 4,069,152,556 4,162,009,516 4,218,752,453 4,227,707,328 4,232,132,093 4,230,152,834 4,209,135,409 4,143,119,490 4,067,069,431 4,207,503,902 4,223,608,553 4,230,238,414 4,232,692,624 4,225,013,608 4,189,101,096 4,100,244,505 -Present value of annual costs ($) 2,166,141,497 +Present value of annual costs ($) 2,139,727,071 Present value of annual energy nominal (kWh) 28,322,755,320 -LCOE Levelized cost of energy nominal (cents/kWh) 7.65 +LCOE Levelized cost of energy nominal (cents/kWh) 7.55 Present value of PPA revenue ($) 2,778,858,948 Present value of annual energy nominal (kWh) 28,322,755,320 LPPA Levelized PPA price nominal (cents/kWh) 9.81 PROJECT STATE INCOME TAXES -EBITDA ($) 0 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 +EBITDA ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 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 89,816,499 88,597,952 87,311,166 85,952,321 84,517,380 83,002,082 81,401,927 79,712,164 77,927,774 76,043,459 74,053,621 71,952,353 69,733,414 67,390,214 64,915,795 62,302,808 59,543,495 56,629,659 53,552,649 50,303,327 46,872,042 43,248,605 39,422,256 35,381,631 31,114,732 26,608,886 21,850,712 16,826,081 11,520,070 5,916,923 -Total state tax depreciation ($) 0 56,803,590 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 56,803,590 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 88,659,533 87,456,683 86,186,473 84,845,131 83,428,674 81,932,896 80,353,353 78,685,357 76,923,953 75,063,910 73,099,704 71,025,503 68,835,147 66,522,131 64,079,586 61,500,259 58,776,489 55,900,188 52,862,814 49,655,347 46,268,262 42,691,501 38,914,441 34,925,865 30,713,929 26,266,125 21,569,243 16,609,337 11,371,675 5,840,705 +Total state tax depreciation ($) 0 56,071,878 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 56,071,878 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 121,499,919 68,413,377 72,860,648 76,984,931 80,449,021 81,808,108 78,282,358 78,541,495 95,048,460 100,636,079 105,638,470 110,309,740 113,864,915 114,214,662 107,962,476 122,457,289 133,464,680 139,715,586 145,665,618 151,118,919 211,540,706 267,342,846 265,395,698 286,856,875 295,263,126 302,896,962 310,334,494 316,928,450 320,678,336 1,655,364,791 +State taxable income ($) 0 126,682,237 74,311,709 78,742,405 82,849,184 86,294,790 87,634,357 84,087,996 84,325,365 100,809,345 106,372,692 111,349,450 115,993,653 119,520,245 119,839,808 113,555,749 128,016,903 138,988,749 145,202,120 151,112,516 156,523,961 216,169,837 271,193,589 269,197,153 290,606,281 298,957,568 306,533,362 313,909,602 320,438,834 324,120,371 1,641,517,897 State income tax rate (frac) 0.0 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 -State tax benefit (liability) ($) 0 -8,504,994 -4,788,936 -5,100,245 -5,388,945 -5,631,431 -5,726,568 -5,479,765 -5,497,905 -6,653,392 -7,044,526 -7,394,693 -7,721,682 -7,970,544 -7,995,026 -7,557,373 -8,572,010 -9,342,528 -9,780,091 -10,196,593 -10,578,324 -14,807,849 -18,713,999 -18,577,699 -20,079,981 -20,668,419 -21,202,787 -21,723,415 -22,184,992 -22,447,484 -115,875,535 +State tax benefit (liability) ($) 0 -8,867,757 -5,201,820 -5,511,968 -5,799,443 -6,040,635 -6,134,405 -5,886,160 -5,902,776 -7,056,654 -7,446,088 -7,794,462 -8,119,556 -8,366,417 -8,388,787 -7,948,902 -8,961,183 -9,729,212 -10,164,148 -10,577,876 -10,956,677 -15,131,889 -18,983,551 -18,843,801 -20,342,440 -20,927,030 -21,457,335 -21,973,672 -22,430,718 -22,688,426 -114,906,253 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 +EBITDA ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 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 -8,504,994 -4,788,936 -5,100,245 -5,388,945 -5,631,431 -5,726,568 -5,479,765 -5,497,905 -6,653,392 -7,044,526 -7,394,693 -7,721,682 -7,970,544 -7,995,026 -7,557,373 -8,572,010 -9,342,528 -9,780,091 -10,196,593 -10,578,324 -14,807,849 -18,713,999 -18,577,699 -20,079,981 -20,668,419 -21,202,787 -21,723,415 -22,184,992 -22,447,484 -115,875,535 +State tax benefit (liability) ($) 0 -8,867,757 -5,201,820 -5,511,968 -5,799,443 -6,040,635 -6,134,405 -5,886,160 -5,902,776 -7,056,654 -7,446,088 -7,794,462 -8,119,556 -8,366,417 -8,388,787 -7,948,902 -8,961,183 -9,729,212 -10,164,148 -10,577,876 -10,956,677 -15,131,889 -18,983,551 -18,843,801 -20,342,440 -20,927,030 -21,457,335 -21,973,672 -22,430,718 -22,688,426 -114,906,253 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 89,816,499 88,597,952 87,311,166 85,952,321 84,517,380 83,002,082 81,401,927 79,712,164 77,927,774 76,043,459 74,053,621 71,952,353 69,733,414 67,390,214 64,915,795 62,302,808 59,543,495 56,629,659 53,552,649 50,303,327 46,872,042 43,248,605 39,422,256 35,381,631 31,114,732 26,608,886 21,850,712 16,826,081 11,520,070 5,916,923 -Total federal tax depreciation ($) 0 56,803,590 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 113,607,179 56,803,590 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 88,659,533 87,456,683 86,186,473 84,845,131 83,428,674 81,932,896 80,353,353 78,685,357 76,923,953 75,063,910 73,099,704 71,025,503 68,835,147 66,522,131 64,079,586 61,500,259 58,776,489 55,900,188 52,862,814 49,655,347 46,268,262 42,691,501 38,914,441 34,925,865 30,713,929 26,266,125 21,569,243 16,609,337 11,371,675 5,840,705 +Total federal tax depreciation ($) 0 56,071,878 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 112,143,755 56,071,878 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 112,994,925 63,624,440 67,760,403 71,595,986 74,817,590 76,081,540 72,802,593 73,043,590 88,395,068 93,591,554 98,243,777 102,588,058 105,894,371 106,219,635 100,405,103 113,885,279 124,122,152 129,935,495 135,469,024 140,540,594 196,732,857 248,628,846 246,817,999 266,776,894 274,594,707 281,694,175 288,611,079 294,743,459 298,230,853 1,539,489,256 +Federal taxable income ($) 0 117,814,480 69,109,890 73,230,437 77,049,741 80,254,155 81,499,952 78,201,836 78,422,590 93,752,691 98,926,604 103,554,989 107,874,097 111,153,828 111,451,021 105,606,846 119,055,720 129,259,537 135,037,972 140,534,640 145,567,284 201,037,948 252,210,038 250,353,352 270,263,841 278,030,538 285,076,027 291,935,930 298,008,116 301,431,945 1,526,611,644 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 -23,728,934 -13,361,132 -14,229,685 -15,035,157 -15,711,694 -15,977,123 -15,288,545 -15,339,154 -18,562,964 -19,654,226 -20,631,193 -21,543,492 -22,237,818 -22,306,123 -21,085,072 -23,915,909 -26,065,652 -27,286,454 -28,448,495 -29,513,525 -41,313,900 -52,212,058 -51,831,780 -56,023,148 -57,664,889 -59,155,777 -60,608,327 -61,896,126 -62,628,479 -323,292,744 +Federal tax benefit (liability) ($) 0 -24,741,041 -14,513,077 -15,378,392 -16,180,446 -16,853,373 -17,114,990 -16,422,386 -16,468,744 -19,688,065 -20,774,587 -21,746,548 -22,653,560 -23,342,304 -23,404,714 -22,177,438 -25,001,701 -27,144,503 -28,357,974 -29,512,274 -30,569,130 -42,217,969 -52,964,108 -52,574,204 -56,755,407 -58,386,413 -59,865,966 -61,306,545 -62,581,704 -63,300,708 -320,588,445 CASH INCENTIVES Federal IBI income ($) 0 @@ -378,30 +376,30 @@ Federal PTC income ($) 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 801,933,028 0 0 0 0 0 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 801,933,028 0 0 0 0 0 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 791,602,977 0 0 0 0 0 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 791,602,977 0 0 0 0 0 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,603,866,057 1,582,106,287 1,559,127,971 1,534,862,869 1,509,238,921 1,482,180,032 1,453,605,845 1,423,431,504 1,391,567,400 1,357,918,906 1,322,386,096 1,284,863,449 1,245,239,534 1,203,396,679 1,159,210,625 1,112,550,151 1,063,276,691 1,011,243,917 956,297,308 898,273,689 837,000,747 772,296,520 703,968,857 631,814,844 555,620,207 475,158,670 390,191,287 300,465,731 205,715,543 105,659,345 0 -Debt interest payment ($) 0 89,816,499 88,597,952 87,311,166 85,952,321 84,517,380 83,002,082 81,401,927 79,712,164 77,927,774 76,043,459 74,053,621 71,952,353 69,733,414 67,390,214 64,915,795 62,302,808 59,543,495 56,629,659 53,552,649 50,303,327 46,872,042 43,248,605 39,422,256 35,381,631 31,114,732 26,608,886 21,850,712 16,826,081 11,520,070 5,916,923 -Debt principal payment ($) 0 21,759,769 22,978,316 24,265,102 25,623,948 27,058,889 28,574,187 30,174,341 31,864,104 33,648,494 35,532,810 37,522,647 39,623,915 41,842,855 44,186,054 46,660,474 49,273,460 52,032,774 54,946,609 58,023,619 61,272,942 64,704,227 68,327,663 72,154,013 76,194,637 80,461,537 84,967,383 89,725,556 94,750,188 100,056,198 105,659,345 -Debt total payment ($) 0 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 +Debt balance ($) 1,583,205,954 1,561,726,482 1,539,044,160 1,515,091,627 1,489,797,752 1,463,087,421 1,434,881,311 1,405,095,659 1,373,642,010 1,340,426,957 1,305,351,861 1,268,312,559 1,229,199,057 1,187,895,198 1,144,278,324 1,098,218,904 1,049,580,157 998,217,641 943,978,823 886,702,631 826,218,973 762,348,230 694,900,725 623,676,160 548,463,019 469,037,943 385,165,062 296,595,300 203,065,631 104,298,301 0 +Debt interest payment ($) 0 88,659,533 87,456,683 86,186,473 84,845,131 83,428,674 81,932,896 80,353,353 78,685,357 76,923,953 75,063,910 73,099,704 71,025,503 68,835,147 66,522,131 64,079,586 61,500,259 58,776,489 55,900,188 52,862,814 49,655,347 46,268,262 42,691,501 38,914,441 34,925,865 30,713,929 26,266,125 21,569,243 16,609,337 11,371,675 5,840,705 +Debt principal payment ($) 0 21,479,472 22,682,323 23,952,533 25,293,875 26,710,332 28,206,110 29,785,652 31,453,649 33,215,053 35,075,096 37,039,301 39,113,502 41,303,858 43,616,875 46,059,419 48,638,747 51,362,517 54,238,818 57,276,192 60,483,658 63,870,743 67,447,505 71,224,565 75,213,141 79,425,077 83,872,881 88,569,762 93,529,669 98,767,330 104,298,301 +Debt total payment ($) 0 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 DSCR (DEBT FRACTION) -EBITDA ($) 0 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 +EBITDA ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 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 268,120,008 270,618,508 273,778,994 276,544,431 278,573,580 278,417,368 273,291,465 271,860,838 286,583,414 290,286,717 293,299,270 295,869,272 297,205,508 295,212,055 286,485,450 298,367,277 306,615,353 309,952,424 312,825,446 315,029,424 315,216,337 310,591,451 304,817,954 322,238,507 326,377,858 329,505,848 332,185,206 333,754,531 332,198,407 1,661,281,714 -Debt total payment ($) 0 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 111,576,269 -DSCR (pre-tax) 0.0 2.40 2.43 2.45 2.48 2.50 2.50 2.45 2.44 2.57 2.60 2.63 2.65 2.66 2.65 2.57 2.67 2.75 2.78 2.80 2.82 2.83 2.78 2.73 2.89 2.93 2.95 2.98 2.99 2.98 14.89 +Cash available for debt service (CAFDS) ($) 0 271,413,648 273,912,147 277,072,633 279,838,070 281,867,219 281,711,008 276,585,104 275,154,477 289,877,053 293,580,357 296,592,910 299,162,911 300,499,147 298,505,694 289,779,090 301,660,916 309,908,993 313,246,063 316,119,085 318,323,064 318,509,977 313,885,090 308,111,593 325,532,146 329,671,497 332,799,487 335,478,846 337,048,171 335,492,046 1,647,358,602 +Debt total payment ($) 0 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 110,139,006 +DSCR (pre-tax) 0.0 2.46 2.49 2.52 2.54 2.56 2.56 2.51 2.50 2.63 2.67 2.69 2.72 2.73 2.71 2.63 2.74 2.81 2.84 2.87 2.89 2.89 2.85 2.80 2.96 2.99 3.02 3.05 3.06 3.05 14.96 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 9bfbb44d..4a27eb24 100644 --- a/tests/examples/Fervo_Project_Cape-4.txt +++ b/tests/examples/Fervo_Project_Cape-4.txt @@ -27,7 +27,7 @@ Capital Cost for Power Plant for Electricity Generation, 1900, -- https://better Exploration Capital Cost, 30, -- Estimate significantly higher exploration costs than default correlation in consideration of potential risks associated with second/third/fourth-of-a-kind EGS projects Well Drilling Cost Correlation, 3, -- VERTICAL_LARGE (2025 NREL Geothermal Drilling Cost Curve Update) -Well Drilling and Completion Capital Cost Adjustment Factor, 0.84, -- Adjust correlation-calculated value of $4.72M/well to $3.96M/well per Tim Latimer on 2025-02-12 Volts podcast: less than $4M/well +Well Drilling and Completion Capital Cost Adjustment Factor, 0.8, -- Adjust correlation-calculated value of $4.72M/well to $3.96M/well per Tim Latimer on 2025-02-12 Volts podcast: less than $4M/well Reservoir Stimulation Capital Cost Adjustment Factor, 2.66, -- Estimated cost of ~$2M per well. Typical range for Nth-of-kind projects may be $0.5–2M. 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/ @@ -74,9 +74,10 @@ 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 Circulation Pump Efficiency, 0.80 -Well Geometry Configuration, 4 -Number of Multilateral Sections, 3 -Nonvertical Length per Multilateral Section, 4700 feet + +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, 4700 feet, -- Deployment of Enhanced Geothermal System Technology Leads to Rapid Cost Reductions and Performance Improvements. p. 3. https://doi.org/10.31223/X5VH8C Multilaterals Cased, True # *** SIMULATION PARAMETERS *** diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index 54eec89d..7d3bc1f0 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -17,11 +17,11 @@ # noinspection PyProtectedMember from geophires_x.EconomicsSam import ( calculate_sam_economics, - _sig_figs, get_sam_cash_flow_profile_tabulated_output, _ppa_pricing_model, _get_fed_and_state_tax_rates, ) +from geophires_x.GeoPHIRESUtils import sig_figs # noinspection PyProtectedMember from geophires_x.EconomicsSamCashFlow import _clean_profile, _is_category_row_label, _is_designator_row_label @@ -459,8 +459,8 @@ def test_is_designator_row_label(self): self.assertTrue(_is_designator_row_label('plus PBI if not available for debt service:')) def test_sig_figs(self): - self.assertListEqual(_sig_figs([1.14, 2.24], 2), [1.1, 2.2]) - self.assertListEqual(_sig_figs((1.14, 2.24), 2), [1.1, 2.2]) + self.assertListEqual(sig_figs([1.14, 2.24], 2), [1.1, 2.2]) + self.assertListEqual(sig_figs((1.14, 2.24), 2), [1.1, 2.2]) def test_get_fed_and_state_tax_rates(self): self.assertEqual(([21], [7]), _get_fed_and_state_tax_rates(0.28)) diff --git a/tests/geophires_x_tests/test_fervo_project_cape_4.py b/tests/geophires_x_tests/test_fervo_project_cape_4.py new file mode 100644 index 00000000..4654c0c4 --- /dev/null +++ b/tests/geophires_x_tests/test_fervo_project_cape_4.py @@ -0,0 +1,234 @@ +import re +from typing import Any + +from base_test_case import BaseTestCase +from geophires_x.GeoPHIRESUtils import sig_figs +from geophires_x.Parameter import HasQuantity +from geophires_x_client import GeophiresInputParameters +from geophires_x_client import GeophiresXClient +from geophires_x_client import GeophiresXResult + + +class FervoProjectCape4TestCase(BaseTestCase): + + 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. + """ + + r = GeophiresXClient().get_geophires_result( + GeophiresInputParameters(from_file_path=self._get_test_file_path('../examples/Fervo_Project_Cape-4.txt')) + ) + + min_net_gen = r.result['SURFACE EQUIPMENT SIMULATION RESULTS']['Minimum Net Electricity Generation']['value'] + self.assertGreater(min_net_gen, 500) + self.assertLess(min_net_gen, 505) + + max_total_gen = r.result['SURFACE EQUIPMENT SIMULATION RESULTS']['Maximum Total Electricity Generation'][ + 'value' + ] + self.assertGreater(max_total_gen, 600) + self.assertLess(max_total_gen, 650) + + lcoe = r.result['SUMMARY OF RESULTS']['Electricity breakeven price']['value'] + self.assertGreater(lcoe, 7.5) + self.assertLess(lcoe, 8.5) + + redrills = r.result['ENGINEERING PARAMETERS']['Number of times redrilling']['value'] + self.assertGreater(redrills, 2) + self.assertLess(redrills, 7) + + well_cost = r.result['CAPITAL COSTS (M$)']['Drilling and completion costs per well']['value'] + self.assertLess(well_cost, 4.0) + self.assertGreater(well_cost, 3.0) + + pumping_power_pct = r.result['SURFACE EQUIPMENT SIMULATION RESULTS'][ + 'Initial pumping power/net installed power' + ]['value'] + self.assertGreater(pumping_power_pct, 13) + self.assertLess(pumping_power_pct, 17) + + def test_case_study_documentation(self): + """ + Parses result values from case study documentation markdown and checks that they match the actual result. + Useful for catching when minor updates are made to the case study which need to be manually synced to the + documentation. + """ + + def _parse_value_unit(raw_string: str) -> dict: + """ + A helper function to parse a string and extract a numerical value and its unit. + It handles various formats like currency, percentages, and scientific notation. + """ + # First, strip any parenthetical notes, e.g., "(based on...)" + clean_str = re.split(r'\(', raw_string)[0].strip() + + # Case 1: LCOE format ($X.X/MWh -> cents/kWh) + match = re.match(r'^\$(\d+\.?\d*)/MWh$', clean_str) + if match: + value_ = float(match.group(1)) + # Convert $/MWh to cents/kWh by dividing by 10 + return {'value': round(value_ / 10, 2), 'unit': 'cents/kWh'} + + # Case 2: Billion dollar format ($X.XB -> MUSD) + match = re.match(r'^\$(\d+\.?\d*)B$', clean_str) + if match: + value_ = float(match.group(1)) + return {'value': value_ * 1000, 'unit': 'MUSD'} + + # Case 3: Million dollar format ($X.XM...) + match = re.match(r'^\$(\d+\.?\d*)M', clean_str) + if match: + value_ = float(match.group(1)) + return {'value': value_, 'unit': 'MUSD'} + + # Case 4: Dollar per kW format ($X/kW -> USD/kW) + match = re.match(r'^\$(\d+\.?\d*)/kW$', clean_str) + if match: + value_ = float(match.group(1)) + return {'value': value_, 'unit': 'USD/kW'} + + # Case 5: Percentage format (X.X%) + match = re.match(r'^(\d+\.?\d*)%$', clean_str) + if match: + value_ = float(match.group(1)) + return {'value': value_, 'unit': '%'} + + # Case 6: Temperature format (X℃ -> degC) + match = re.match(r'^(\d+\.?\d*)℃$', clean_str) + if match: + value_ = float(match.group(1)) + return {'value': value_, 'unit': 'degC'} + + # Case 7: Scientific notation format (X.X×10⁶ Y) # ruff: noqa: RUF003 + match = re.match(r'^(\d+\.?\d*)\s*[×xX]\s*10[⁶6]\s*(.*)$', clean_str) + if match: + base_value = float(match.group(1)) + unit = match.group(2).strip() + return {'value': base_value * 1e6, 'unit': unit} + + # Case 8: Standard number and unit (e.g., "503 MW") + match = re.match(r'^(\d+\.?\d*)\s*([a-zA-Z²³\/]+)$', clean_str) + if match: + value_ = float(match.group(1)) + unit = match.group(2) + return {'value': value_, 'unit': unit} + + # Case 9: Dimensionless integer number (e.g., "3") + match = re.match(r'^(\d+)$', clean_str) + if match: + value_ = int(match.group(1)) + return {'value': value_, 'unit': 'count'} + + # Fallback for any unhandled formats + return {'value': clean_str, 'unit': 'unknown'} + + def parse_markdown_results_structured(markdown_text: str) -> dict: + """ + Parses result values from markdown into a structured dictionary with values and units. + """ + raw_results = {} + table_pattern = re.compile(r'^\s*\|\s*(?!-)([^|]+?)\s*\|\s*([^|]+?)\s*\|', re.MULTILINE) + + try: + results_start_index = markdown_text.index('## Results') + search_area = markdown_text[results_start_index:] + + matches = table_pattern.findall(search_area) + + # Use key_ and value_ to avoid shadowing + for match in matches: + key_ = match[0].strip() + value_ = match[1].strip() + if key_.lower() not in ('metric', 'parameter'): + raw_results[key_] = value_ + except ValueError: + print("Warning: '## Results' section not found.") + return {} + + # Consistency check + special_case_pattern = re.compile(r'LCOE\s*=\s*(\S+)\s*and\s*CAPEX\s*=\s*(\S+)') + special_case_match = special_case_pattern.search(markdown_text) + if special_case_match: + lcoe_text = special_case_match.group(1).rstrip('.,;') + lcoe_table_base = raw_results.get('LCOE', '').split('(')[0].strip() + if lcoe_text != lcoe_table_base: + raise ValueError( + f'LCOE mismatch: Text value ({lcoe_text}) does not match table value ({lcoe_table_base}).' + ) + + # Now, process the raw results into the structured format + structured_results = {} + # Use key_ and value_ to avoid shadowing + for key_, value_ in raw_results.items(): + if key_ in [ + 'After-tax IRR', + 'Average Production Temperature', + 'LCOE', + 'Maximum Total Electricity Generation', + 'Minimum Net Electricity Generation', + 'Number of times redrilling', + 'Project capital costs: Total CAPEX', + 'Project capital costs: $/kW', + 'WACC', + 'Well Drilling and Completion Cost', + ]: + structured_results[key_] = _parse_value_unit(value_) + + return structured_results + + results_in_markdown = parse_markdown_results_structured( + '\n'.join(self._get_test_file_content('../../docs/Fervo_Project_Cape-4.md')) + ) + + self.assertEqual(3.96, results_in_markdown['Well Drilling and Completion Cost']['value']) + self.assertEqual('MUSD', results_in_markdown['Well Drilling and Completion Cost']['unit']) + + class _Q(HasQuantity): + def __init__(self, vu: dict[str, Any]): + self.value = vu['value'] + + # https://stackoverflow.com/questions/2280334/shortest-way-of-creating-an-object-with-arbitrary-attributes-in-python + self.CurrentUnits = type('', (), {})() + + self.CurrentUnits.value = vu['unit'] + + capex_q = _Q(results_in_markdown['Project capital costs: Total CAPEX']).quantity() + markdown_capex_USD_per_kW = ( + capex_q.to('USD').magnitude + / _Q(results_in_markdown['Maximum Total Electricity Generation']).quantity().to('kW').magnitude + ) + self.assertAlmostEqual( + sig_figs(markdown_capex_USD_per_kW, 3), results_in_markdown['Project capital costs: $/kW']['value'] + ) + + field_mapping = { + 'LCOE': 'Electricity breakeven price', + 'Project capital costs: Total CAPEX': 'Total CAPEX', + 'Well Drilling and Completion Cost': 'Drilling and completion costs per well', + } + + ignore_keys = ['Project capital costs: $/kW', 'Total fracture surface area per production well'] + + example_result = GeophiresXResult(self._get_test_file_path('../examples/Fervo_Project_Cape-4.out')) + example_result_values_in_documentation = {} + for key, _ in results_in_markdown.items(): + if key not in ignore_keys: + mapped_key = field_mapping.get(key) if key in field_mapping else key + entry = example_result._get_result_field(mapped_key) + if entry is not None and 'value' in entry: + entry['value'] = sig_figs(entry['value'], 3) + + example_result_values_in_documentation[key] = entry + + for ignore_key in ignore_keys: + if ignore_key in results_in_markdown: + del results_in_markdown[ignore_key] + + self.assertDictAlmostEqual(results_in_markdown, example_result_values_in_documentation, places=3) + + result_capex_USD_per_kW = ( + _Q(example_result._get_result_field('Total CAPEX')).quantity().to('USD').magnitude + / _Q(example_result._get_result_field('Maximum Total Electricity Generation')).quantity().to('kW').magnitude + ) + self.assertAlmostEqual(sig_figs(result_capex_USD_per_kW, 3), sig_figs(markdown_capex_USD_per_kW, 3)) diff --git a/tests/test_geophires_x.py b/tests/test_geophires_x.py index 2d47bffd..ba7e1dc2 100644 --- a/tests/test_geophires_x.py +++ b/tests/test_geophires_x.py @@ -941,42 +941,3 @@ def test_sbt_coaxial_raises_error(self): ) client.get_geophires_result(params) self.assertIn('SBT with coaxial configuration is not implemented', str(e.exception)) - - 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. - """ - - r = GeophiresXClient().get_geophires_result( - GeophiresInputParameters(from_file_path=self._get_test_file_path('examples/Fervo_Project_Cape-4.txt')) - ) - - min_net_gen = r.result['SURFACE EQUIPMENT SIMULATION RESULTS']['Minimum Net Electricity Generation']['value'] - self.assertGreater(min_net_gen, 500) - self.assertLess(min_net_gen, 505) - - max_total_gen = r.result['SURFACE EQUIPMENT SIMULATION RESULTS']['Maximum Total Electricity Generation'][ - 'value' - ] - self.assertGreater(max_total_gen, 600) - self.assertLess(max_total_gen, 650) - - lcoe = r.result['SUMMARY OF RESULTS']['Electricity breakeven price']['value'] - self.assertGreater(lcoe, 7.5) - self.assertLess(lcoe, 8.5) - - redrills = r.result['ENGINEERING PARAMETERS']['Number of times redrilling']['value'] - self.assertGreater(redrills, 2) - self.assertLess(redrills, 7) - - well_cost = r.result['CAPITAL COSTS (M$)']['Drilling and completion costs per vertical production well'][ - 'value' - ] - self.assertLess(well_cost, 4.0) - self.assertGreater(well_cost, 3.0) - - pumping_power_pct = r.result['SURFACE EQUIPMENT SIMULATION RESULTS'][ - 'Initial pumping power/net installed power' - ]['value'] - self.assertGreater(pumping_power_pct, 13) - self.assertLess(pumping_power_pct, 17)