From 3fdbca1c347202dc7521c9f784c1755eee420e62 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:33:27 -0700 Subject: [PATCH 001/127] Partially clean up and mark TODOs for HeatkWhProduced output (no behavior/schema change) --- src/geophires_x/Outputs.py | 10 +++++++++- src/geophires_x/SurfacePlant.py | 8 +++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 5a3d24a83..8f8a390e1 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -21,6 +21,7 @@ from geophires_x.OptionList import EndUseOptions, EconomicModel, ReservoirModel, FractureShape, ReservoirVolume, \ PlantType from geophires_x.Parameter import Parameter +from geophires_x.Units import EnergyUnit NL = '\n' @@ -622,7 +623,14 @@ def PrintOutputs(self, model: Model): f.write(f' Average Net Heat Production: {np.average(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Minimum Net Heat Production: {np.min(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Initial Net Heat Production: {model.surfaceplant.HeatProduced.value[0]:10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) - f.write(f' Average Annual Heat Production: {np.average(model.surfaceplant.HeatkWhProduced.value/1E6):10.2f} GWh' + NL) + + avg_annual_heat_production_display_units: EnergyUnit = EnergyUnit.GWH + # TODO the average value should be its own output parameter instead of being calculated here + avg_annual_heat_production_value = np.average(model.surfaceplant.HeatkWhProduced.quantity().to( + # TODO this conversion should occur in ConvertOutputUnits instead + avg_annual_heat_production_display_units + ).magnitude) + f.write(f' Average Annual Heat Production: {avg_annual_heat_production_value:10.2f} {avg_annual_heat_production_display_units.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: f.write(f' Average Annual Heat Pump Electricity Use: {np.average(model.surfaceplant.heat_pump_electricity_kwh_used.value / 1E6):10.2f} ' + 'GWh/year' + NL) diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index f3cb8b6d9..40f213aa6 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -591,9 +591,11 @@ def __init__(self, model: Model): ) self.HeatkWhProduced = self.OutputParameterDict[self.HeatkWhProduced.Name] = OutputParameter( Name="Heat Produced in kWh", - UnitType=Units.POWER, - PreferredUnits=PowerUnit.KW, - CurrentUnits=PowerUnit.KW + # display_name='Average Annual Heat Production', + UnitType=Units.ENERGY, + CurrentUnits=EnergyUnit.KWH, + # PreferredUnits=EnergyUnit.GWH, + PreferredUnits=EnergyUnit.KWH ) self.Availability = self.OutputParameterDict[self.Availability.Name] = OutputParameter( Name="Geofluid Availability", From 1b67476d979996680e99df6184e9056ae1b3b491 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:10:47 -0700 Subject: [PATCH 002/127] WIP - example_SAM-single-owner-PPA-7_heat for CHP --- src/geophires_x/Economics.py | 10 +- src/geophires_x/EconomicsSam.py | 87 ++-- .../example_SAM-single-owner-PPA-7_heat.out | 472 ++++++++++++++++++ .../example_SAM-single-owner-PPA-7_heat.txt | 110 ++++ 4 files changed, 649 insertions(+), 30 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-7_heat.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-7_heat.txt diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 4d7d4793c..48c4f660c 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -215,19 +215,25 @@ def CalculateTotalRevenue(plantlifetime: int, ConstructionYears: int, CAPEX: flo return CashFlow, CummCashFlow -def CalculateRevenue(plantlifetime: int, ConstructionYears: int, Energy, Price): +def CalculateRevenue(plantlifetime: int, ConstructionYears: int, Energy: list[float], Price: list[float]) \ + -> tuple[list[float], list[float]]: """ CalculateRevenue calculates the revenue stream for the project. It is used to calculate the revenue stream for the project. # note this doesn't account for OPEX + :param plantlifetime: The lifetime of the project in years in years (not including construction years) in years :type plantlifetime: int + :param ConstructionYears: The number of years of construction for the project in years :type ConstructionYears: int + :param Energy: The energy production array for the project in kWh :type Energy: list + :param Price: The price model array for the project in $/kWh :type Price: list + :return: CashFlow: The annual cash flow for the project in MUSD and CummCashFlow: The cumulative cash flow for the project in MUSD :rtype: list @@ -3525,7 +3531,7 @@ def calculate_cashflow(self, model: Model) -> None: Calculate cashflow and cumulative cash flow Note that these calculations are irrelevant and ignored for SAM economic models, except for - carbon calculations. + heat and carbon revenue calculations. """ total_duration = model.surfaceplant.plant_lifetime.value + model.surfaceplant.construction_years.value diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 6e5b5696f..b8e72cd6e 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -411,14 +411,15 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> f'{supported_description}.' ) - if model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY: - raise ValueError( - _inv_msg( - model.surfaceplant.enduse_option.Name, - model.surfaceplant.enduse_option.value.value, - f'{EndUseOptions.ELECTRICITY.name} End-Use Option', - ) - ) + # FIXME WIP... + # if model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY: + # raise ValueError( + # _inv_msg( + # model.surfaceplant.enduse_option.Name, + # model.surfaceplant.enduse_option.value.value, + # f'{EndUseOptions.ELECTRICITY.name} End-Use Option', + # ) + # ) gtr: floatParameter = model.economics.GTR if gtr.Provided: @@ -909,11 +910,20 @@ def _get_utility_rate_parameters(m: Model) -> dict[str, Any]: ret['inflation_rate'] = econ.RINFL.quantity().to(convertible_unit('%')).magnitude max_total_kWh_produced = np.max(m.surfaceplant.TotalkWhProduced.value) - degradation_total = [ - (max_total_kWh_produced - it) / max_total_kWh_produced * 100 for it in m.surfaceplant.NetkWhProduced.value - ] - ret['degradation'] = degradation_total + net_kwh_produced_series: list[float] | float | int = ( + m.surfaceplant.NetkWhProduced.quantity().to(convertible_unit('kWh')).magnitude + ) + + if isinstance(net_kwh_produced_series, list): + degradation_total = [ + (max_total_kWh_produced - it) / max_total_kWh_produced * 100 for it in net_kwh_produced_series + ] + ret['degradation'] = degradation_total + else: + # Occurs for non-electricity end-use options + # net_kwh_produced_series = [net_kwh_produced_series] * m.surfaceplant.plant_lifetime.value + pass return ret @@ -1021,24 +1031,45 @@ def _get_capacity_payment_parameters(model: Model) -> dict[str, Any]: econ = model.economics - if econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value: - ret['cp_capacity_payment_type'] = 1 - ret['cp_capacity_payment_amount'] = [0.0] * model.surfaceplant.plant_lifetime.value + has_heat_end_use = model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY - if econ.DoAddOnCalculations.value: - add_on_profit_per_year_usd = np.sum( - model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude - ) - add_on_profit_usd_series = [add_on_profit_per_year_usd] * model.surfaceplant.plant_lifetime.value - for i, add_on_profit_usd in enumerate(add_on_profit_usd_series): - ret['cp_capacity_payment_amount'][i] += add_on_profit_usd + if not (econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_end_use): + return ret - if econ.DoCarbonCalculations.value: - carbon_revenue_usd_series = ( - econ.CarbonRevenue.quantity().to('USD/yr').magnitude[_pre_revenue_years_count(model) :] - ) - for i, carbon_revenue_usd in enumerate(carbon_revenue_usd_series): - ret['cp_capacity_payment_amount'][i] += carbon_revenue_usd + ret['cp_capacity_payment_type'] = 1 + ret['cp_capacity_payment_amount'] = [0.0] * model.surfaceplant.plant_lifetime.value + + if econ.DoAddOnCalculations.value: + add_on_profit_per_year_usd = np.sum( + model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude + ) + add_on_profit_usd_series = [add_on_profit_per_year_usd] * model.surfaceplant.plant_lifetime.value + for i, add_on_profit_usd in enumerate(add_on_profit_usd_series): + ret['cp_capacity_payment_amount'][i] += add_on_profit_usd + + if econ.DoCarbonCalculations.value: + carbon_revenue_usd_series = ( + econ.CarbonRevenue.quantity().to('USD/yr').magnitude[_pre_revenue_years_count(model) :] + ) + for i, carbon_revenue_usd in enumerate(carbon_revenue_usd_series): + ret['cp_capacity_payment_amount'][i] += carbon_revenue_usd + + if has_heat_end_use: + # # FIXME WIP + # heat_revenue_musd_series: list[float] = CalculateRevenue( + # # FIXME WIP unit conversions + # model.surfaceplant.plant_lifetime.value, + # model.surfaceplant.construction_years.value, + # model.surfaceplant.HeatkWhProduced.value, + # econ.HeatPrice.value + # ) + # for i, heat_revenue_musd in enumerate(heat_revenue_musd_series): + # ret['cp_capacity_payment_amount'][i] += heat_revenue_musd + heat_revenue_usd_series = ( + econ.HeatRevenue.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] + ) + for i, heat_revenue_usd in enumerate(heat_revenue_usd_series): + ret['cp_capacity_payment_amount'][i] += heat_revenue_usd return ret diff --git a/tests/examples/example_SAM-single-owner-PPA-7_heat.out b/tests/examples/example_SAM-single-owner-PPA-7_heat.out new file mode 100644 index 000000000..7a5116ff0 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7_heat.out @@ -0,0 +1,472 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-03-27 + Simulation Time: 11:08 + Calculation Time: 1.766 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income + Average Net Electricity Production: 45.52 MW + Average Direct-Use Heat Production: 48.48 MW + Electricity breakeven price: 9.95 cents/kWh + Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU + Total CAPEX: 278.39 MUSD + Total CAPEX ($/kW): 6082 USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 83.52 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 44.79 MUSD + After-tax IRR: 26.64 % + Project VIR=PI=PIR: 1.56 + Project MOIC: 5.85 + Project Payback Period: 3.99 yr + CHP: Percent cost allocation for electrical plant: 88.37 % + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + 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.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + Power plant type: Subcritical ORC + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.4 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 367.18 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -1925.9 kPa + Average Production Well Pump Pressure Drop: 9514.6 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 149.30 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 152.50 MUSD + Overnight Capital Cost: 251.99 MUSD + Inflation costs during construction: 16.14 MUSD + Interest during construction: 10.26 MUSD + Total CAPEX: 278.39 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.11 MUSD/yr + Power plant maintenance costs: 4.08 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 14.82 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + + Initial geofluid availability: 0.19 MW/(kg/s) + Maximum Total Electricity Generation: 53.91 MW + Average Total Electricity Generation: 53.66 MW + Minimum Total Electricity Generation: 52.48 MW + Initial Total Electricity Generation: 52.69 MW + Maximum Net Electricity Generation: 45.78 MW + Average Net Electricity Generation: 45.52 MW + Minimum Net Electricity Generation: 44.31 MW + Initial Net Electricity Generation: 44.54 MW + Average Annual Total Electricity Generation: 423.11 GWh + Average Annual Net Electricity Generation: 358.92 GWh + Initial pumping power/net installed power: 18.30 % + Maximum Net Heat Production: 48.54 MW + Average Net Heat Production: 48.48 MW + Minimum Net Heat Production: 48.19 MW + Initial Net Heat Production: 48.24 MW + Average Annual Heat Production: 382.23 GWh + Average Pumping Power: 8.14 MW + Heat to Power Conversion Efficiency: 14.53 % + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 201.65 8.1512 44.5390 48.2413 14.3403 + 1 1.0052 202.70 8.1476 45.4029 48.4539 14.5061 + 2 1.0062 202.90 8.1469 45.5643 48.4934 14.5369 + 3 1.0067 203.00 8.1466 45.6484 48.5139 14.5529 + 4 1.0070 203.06 8.1463 45.7040 48.5275 14.5635 + 5 1.0073 203.11 8.1462 45.7447 48.5374 14.5713 + 6 1.0074 203.14 8.1463 45.7638 48.5421 14.5749 + 7 1.0066 202.98 8.1488 45.6301 48.5100 14.5492 + 8 1.0008 201.81 8.1651 44.6594 48.2747 14.3616 + 9 1.0048 202.61 8.1453 45.3308 48.4357 14.4926 + 10 1.0060 202.86 8.1444 45.5376 48.4862 14.5321 + 11 1.0066 202.98 8.1429 45.6346 48.5097 14.5508 + 12 1.0070 203.05 8.1409 45.6973 48.5245 14.5629 + 13 1.0072 203.10 8.1389 45.7429 48.5352 14.5719 + 14 1.0074 203.14 8.1373 45.7725 48.5421 14.5777 + 15 1.0070 203.06 8.1377 45.7091 48.5266 14.5656 + 16 1.0032 202.29 8.1481 45.0686 48.3717 14.4422 + 17 1.0041 202.47 8.1350 45.2277 48.4077 14.4743 + 18 1.0058 202.82 8.1348 45.5126 48.4777 14.5286 + 19 1.0065 202.95 8.1348 45.6234 48.5049 14.5497 + 20 1.0069 203.03 8.1348 45.6903 48.5213 14.5624 + 21 1.0072 203.09 8.1348 45.7373 48.5328 14.5713 + 22 1.0074 203.13 8.1348 45.7707 48.5410 14.5777 + 23 1.0072 203.11 8.1357 45.7489 48.5359 14.5734 + 24 1.0048 202.62 8.1429 45.3439 48.4383 14.4954 + 25 1.0027 202.20 8.1348 45.0056 48.3529 14.4319 + 26 1.0055 202.77 8.1348 45.4700 48.4673 14.5205 + 27 1.0063 202.93 8.1348 45.6014 48.4995 14.5455 + 28 1.0068 203.02 8.1349 45.6758 48.5178 14.5596 + 29 1.0071 203.08 8.1349 45.7268 48.5303 14.5693 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 381.5 355.7 2885.25 137.45 7.03 + 2 382.2 358.7 2894.29 127.03 14.07 + 3 382.4 359.6 2897.04 116.60 21.13 + 4 382.5 360.1 2898.67 106.17 28.19 + 5 382.6 360.5 2899.81 95.73 35.25 + 6 382.7 360.8 2900.58 85.29 42.31 + 7 382.6 360.5 2899.80 74.85 49.37 + 8 381.8 356.9 2889.05 64.45 56.41 + 9 381.0 354.0 2879.90 54.08 63.42 + 10 382.1 358.3 2893.20 43.66 70.47 + 11 382.4 359.4 2896.51 33.24 77.52 + 12 382.5 360.0 2898.32 22.80 84.58 + 13 382.6 360.5 2899.56 12.36 91.64 + 14 382.7 360.8 2900.44 1.92 98.70 + 15 382.7 360.8 2900.37 -8.52 105.76 + 16 382.1 358.6 2893.78 -18.94 112.81 + 17 380.8 353.2 2877.52 -29.30 119.82 + 18 382.0 357.9 2891.74 -39.71 126.86 + 19 382.3 359.3 2895.89 -50.13 133.91 + 20 382.5 360.0 2897.94 -60.56 140.97 + 21 382.6 360.4 2899.28 -71.00 148.03 + 22 382.7 360.7 2900.25 -81.44 155.09 + 23 382.7 360.9 2900.61 -91.89 162.15 + 24 382.4 359.6 2896.83 -102.31 169.21 + 25 380.9 353.4 2878.09 -112.68 176.22 + 26 381.8 357.2 2889.56 -123.08 183.25 + 27 382.3 359.1 2895.16 -133.50 190.30 + 28 382.4 359.8 2897.52 -143.93 197.36 + 29 382.6 360.3 2898.99 -154.37 204.42 + 30 382.6 360.7 2900.01 -164.81 211.48 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -18,899,456 -132,296,189 -100,797,097 +plus: +Inflation cost [construction] ($) -510,285 -7,240,438 -8,386,992 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -19,409,741 -139,536,627 -109,184,089 + +Issuance of equity [construction] ($) 19,409,741 41,860,988 32,755,227 +Issuance of debt [construction] ($) 0 97,675,639 76,428,862 +Debt balance [construction] ($) 0 97,675,639 184,360,443 +Debt interest payment [construction] ($) 0 0 10,255,942 + +Installed cost [construction] ($) -19,409,741 -139,536,627 -119,440,031 +After-tax net cash flow [construction] ($) -19,409,741 -41,860,988 -32,755,227 + +ENERGY +Electricity to grid (kWh) 0.0 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 +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 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 + +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 35,290,323 35,451,835 35,705,166 35,958,982 36,172,178 36,426,720 36,640,158 36,853,596 37,109,107 37,322,787 37,536,468 37,750,148 37,963,828 38,177,508 38,391,188 38,648,638 38,862,560 39,076,482 39,290,405 39,504,327 44,981,030 45,223,298 45,465,565 45,707,833 45,950,101 46,192,368 46,434,636 46,676,904 46,919,171 47,161,439 +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 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 +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 139,193,200 +Total revenue ($) 0 44,826,833 45,006,533 45,265,402 45,522,493 45,737,976 45,994,076 46,205,942 46,397,742 46,634,855 46,875,285 47,095,623 47,312,958 47,529,118 47,744,575 47,958,115 48,202,305 48,383,530 48,626,054 48,848,318 49,066,369 54,545,773 54,789,992 55,032,981 55,267,648 55,472,212 55,737,558 55,991,091 56,238,093 56,483,323 195,920,834 + +Property tax net assessed value ($) 0 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 +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 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 +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 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 + +EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 + +OPERATING ACTIVITIES +EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 +Cash flow from operating activities ($) 0 16,485,988 16,802,308 17,207,361 17,620,868 18,003,716 18,438,897 18,842,380 19,239,210 19,695,705 20,170,874 20,642,382 21,128,469 21,632,194 22,155,345 22,698,118 23,294,587 23,852,751 24,498,599 25,152,420 25,832,238 31,805,732 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 + +INVESTING ACTIVITIES +Total installed cost ($) -278,386,399 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -278,386,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 +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 ($) -278,386,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 ($) 94,025,956 +Size of debt ($) 184,360,443 +minus: +Debt principal payment ($) 0 1,951,714 2,088,334 2,234,517 2,390,934 2,558,299 2,737,380 2,928,997 3,134,026 3,353,408 3,588,147 3,839,317 4,108,069 4,395,634 4,703,328 5,032,561 5,384,841 5,761,779 6,165,104 6,596,661 7,058,428 7,552,518 8,081,194 8,646,877 9,252,159 9,899,810 10,592,797 11,334,292 12,127,693 12,976,631 13,884,995 +equals: +Cash flow from financing activities ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 16,485,988 16,802,308 17,207,361 17,620,868 18,003,716 18,438,897 18,842,380 19,239,210 19,695,705 20,170,874 20,642,382 21,128,469 21,632,194 22,155,345 22,698,118 23,294,587 23,852,751 24,498,599 25,152,420 25,832,238 31,805,732 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 +Cash flow from investing activities ($) -278,386,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 ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 +Total pre-tax cash flow ($) 0 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 + +Pre-tax Returns: +Issuance of equity ($) 94,025,956 +Total pre-tax cash flow ($) 0 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 +Total pre-tax returns ($) -94,025,956 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 + +After-tax Returns: +Total pre-tax returns ($) -94,025,956 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 +Federal ITC total income ($) 0 83,515,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 -2,118,759 -996,389 -1,077,580 -1,160,465 -1,237,205 -1,324,435 -1,405,311 -1,484,854 -1,576,356 -1,671,601 -1,766,113 -1,863,547 -1,964,516 -2,069,379 -2,178,175 -2,297,734 -2,409,615 -2,539,072 -2,670,128 -2,806,394 -5,189,525 -6,530,223 -6,692,317 -6,860,681 -7,031,503 -7,223,596 -7,423,044 -7,631,588 -7,850,909 -35,982,538 +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 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 +Total after-tax returns ($) -94,025,956 95,450,487 13,491,410 13,650,658 13,806,049 13,927,372 14,076,442 14,189,073 14,283,275 14,408,115 14,531,680 14,636,053 14,733,838 14,826,109 14,912,899 14,992,947 15,090,438 15,134,386 15,218,066 15,279,526 15,330,379 17,885,693 16,484,883 16,528,983 16,557,069 16,552,035 16,581,684 16,590,494 16,581,615 16,557,739 121,477,884 + +After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 95,450,487 13,491,410 13,650,658 13,806,049 13,927,372 14,076,442 14,189,073 14,283,275 14,408,115 14,531,680 14,636,053 14,733,838 14,826,109 14,912,899 14,992,947 15,090,438 15,134,386 15,218,066 15,279,526 15,330,379 17,885,693 16,484,883 16,528,983 16,557,069 16,552,035 16,581,684 16,590,494 16,581,615 16,557,739 121,477,884 +After-tax cumulative IRR (%) NaN NaN NaN 0.81 7.65 12.83 16.56 19.21 21.11 22.48 23.48 24.22 24.78 25.20 25.52 25.76 25.95 26.09 26.21 26.30 26.36 26.42 26.46 26.50 26.53 26.55 26.56 26.58 26.59 26.60 26.60 26.61 26.64 +After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -17,839,360 -10,132,039 -3,352,327 2,608,941 7,837,113 12,431,052 16,456,904 19,980,151 23,069,977 25,779,260 28,151,583 30,227,822 32,044,175 33,632,526 35,020,826 36,235,639 37,294,853 38,220,809 39,029,071 39,734,099 40,449,206 41,022,217 41,521,716 41,956,710 42,334,771 42,664,041 42,950,455 43,199,325 43,415,377 44,793,431 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,623,654 -31,515,123 -31,614,744 -31,716,444 -31,810,603 -31,917,634 -32,016,869 -32,114,467 -32,226,740 -32,343,605 -32,459,570 -32,579,121 -32,703,009 -32,831,676 -32,965,168 -33,111,867 -33,249,144 -33,407,987 -33,568,792 -33,735,989 -36,660,080 -38,305,109 -38,503,998 -38,710,579 -38,920,177 -39,155,874 -39,400,597 -39,656,478 -39,925,584 64,750,249 +PPA revenue ($) 0 0 0 35,290,323 35,451,835 35,705,166 35,958,982 36,172,178 36,426,720 36,640,158 36,853,596 37,109,107 37,322,787 37,536,468 37,750,148 37,963,828 38,177,508 38,391,188 38,648,638 38,862,560 39,076,482 39,290,405 39,504,327 44,981,030 45,223,298 45,465,565 45,707,833 45,950,101 46,192,368 46,434,636 46,676,904 46,919,171 47,161,439 +Electricity to grid (kWh) 0 0 0 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 + +Present value of annual costs ($) 185,467,094 +Present value of annual energy nominal (kWh) 1,864,437,186 +LCOE Levelized cost of energy nominal (cents/kWh) 9.95 + +Present value of PPA revenue ($) 182,913,165 +Present value of annual energy nominal (kWh) 1,864,437,186 +LPPA Levelized PPA price nominal (cents/kWh) 9.81 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 +Total state tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 10,570,277 4,970,886 5,375,939 5,789,446 6,172,294 6,607,475 7,010,958 7,407,788 7,864,283 8,339,452 8,810,960 9,297,047 9,800,772 10,323,923 10,866,696 11,463,165 12,021,329 12,667,177 13,320,998 14,000,816 25,890,021 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 + +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 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +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 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 +Total federal tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 10,089,330 4,744,711 5,131,334 5,526,026 5,891,455 6,306,835 6,691,959 7,070,733 7,506,458 7,960,007 8,410,061 8,874,031 9,354,837 9,854,184 10,372,262 10,941,591 11,474,359 12,090,821 12,714,893 13,363,779 24,712,025 31,096,300 31,868,178 32,669,909 33,483,347 34,398,076 35,347,831 36,340,895 37,385,279 171,345,417 + +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,118,759 -996,389 -1,077,580 -1,160,465 -1,237,205 -1,324,435 -1,405,311 -1,484,854 -1,576,356 -1,671,601 -1,766,113 -1,863,547 -1,964,516 -2,069,379 -2,178,175 -2,297,734 -2,409,615 -2,539,072 -2,670,128 -2,806,394 -5,189,525 -6,530,223 -6,692,317 -6,860,681 -7,031,503 -7,223,596 -7,423,044 -7,631,588 -7,850,909 -35,982,538 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 83,515,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 83,515,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 ($) 184,360,443 182,408,729 180,320,395 178,085,878 175,694,944 173,136,645 170,399,265 167,470,269 164,336,243 160,982,834 157,394,688 153,555,371 149,447,302 145,051,668 140,348,339 135,315,778 129,930,938 124,169,158 118,004,054 111,407,393 104,348,965 96,796,448 88,715,254 80,068,377 70,816,218 60,916,408 50,323,612 38,989,319 26,861,627 13,884,995 0 +Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 +Debt principal payment ($) 0 1,951,714 2,088,334 2,234,517 2,390,934 2,558,299 2,737,380 2,928,997 3,134,026 3,353,408 3,588,147 3,839,317 4,108,069 4,395,634 4,703,328 5,032,561 5,384,841 5,761,779 6,165,104 6,596,661 7,058,428 7,552,518 8,081,194 8,646,877 9,252,159 9,899,810 10,592,797 11,334,292 12,127,693 12,976,631 13,884,995 +Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +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 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 +DSCR (pre-tax) 0.0 1.98 1.99 2.01 2.03 2.04 2.06 2.07 2.08 2.10 2.12 2.13 2.15 2.16 2.17 2.19 2.21 2.22 2.23 2.25 2.26 2.63 2.65 2.67 2.68 2.69 2.71 2.73 2.75 2.76 12.15 + +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 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 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 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 +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 +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/tests/examples/example_SAM-single-owner-PPA-7_heat.txt b/tests/examples/example_SAM-single-owner-PPA-7_heat.txt new file mode 100644 index 000000000..580f4ba68 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7_heat.txt @@ -0,0 +1,110 @@ +# Example: SAM Single Owner PPA Economic Model: Direct-Use Heat +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +# End-Use Option, 2, -- Direct-Use Heat +End-Use Option, 31, -- -CHP Topping Cycle with electricity as the main product +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From 4765379096547eb29b665c135f4b4f2e1d7513b3 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:14:46 -0700 Subject: [PATCH 003/127] fix degradation type check --- src/geophires_x/EconomicsSam.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index b8e72cd6e..3734f3d72 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -7,7 +7,7 @@ from functools import lru_cache from math import isnan from pathlib import Path -from typing import Any +from typing import Any, Iterable from decimal import Decimal @@ -911,11 +911,11 @@ def _get_utility_rate_parameters(m: Model) -> dict[str, Any]: max_total_kWh_produced = np.max(m.surfaceplant.TotalkWhProduced.value) - net_kwh_produced_series: list[float] | float | int = ( + net_kwh_produced_series: Iterable | float | int = ( m.surfaceplant.NetkWhProduced.quantity().to(convertible_unit('kWh')).magnitude ) - if isinstance(net_kwh_produced_series, list): + if isinstance(net_kwh_produced_series, Iterable): degradation_total = [ (max_total_kWh_produced - it) / max_total_kWh_produced * 100 for it in net_kwh_produced_series ] From f18b649974857b10f09575a431ae4632932c36d0 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:16:00 -0700 Subject: [PATCH 004/127] handle potential TotalkWhProduced unit conversion in _get_utility_rate_parameters --- src/geophires_x/EconomicsSam.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 3734f3d72..b9907d690 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -909,7 +909,7 @@ def _get_utility_rate_parameters(m: Model) -> dict[str, Any]: ret['inflation_rate'] = econ.RINFL.quantity().to(convertible_unit('%')).magnitude - max_total_kWh_produced = np.max(m.surfaceplant.TotalkWhProduced.value) + max_total_kWh_produced = np.max(m.surfaceplant.TotalkWhProduced.quantity().to(convertible_unit('kWh')).magnitude) net_kwh_produced_series: Iterable | float | int = ( m.surfaceplant.NetkWhProduced.quantity().to(convertible_unit('kWh')).magnitude From c869ad530fc78d1a71933f82c6ffb4140d8474ae Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:20:56 -0700 Subject: [PATCH 005/127] regenerate example_SAM-single-owner-PPA-7_heat with corrected degradation --- .../example_SAM-single-owner-PPA-7_heat.out | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_heat.out b/tests/examples/example_SAM-single-owner-PPA-7_heat.out index 7a5116ff0..52f3b9aae 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_heat.out @@ -6,15 +6,15 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-27 - Simulation Time: 11:08 - Calculation Time: 1.766 sec + Simulation Time: 11:17 + Calculation Time: 1.764 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 45.52 MW Average Direct-Use Heat Production: 48.48 MW - Electricity breakeven price: 9.95 cents/kWh + Electricity breakeven price: 10.31 cents/kWh Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU Total CAPEX: 278.39 MUSD Total CAPEX ($/kW): 6082 USD/kW @@ -38,11 +38,11 @@ Simulation Metadata Investment Tax Credit: 83.52 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 44.79 MUSD - After-tax IRR: 26.64 % - Project VIR=PI=PIR: 1.56 - Project MOIC: 5.85 - Project Payback Period: 3.99 yr + Project NPV: 38.30 MUSD + After-tax IRR: 25.39 % + Project VIR=PI=PIR: 1.48 + Project MOIC: 5.02 + Project Payback Period: 4.00 yr CHP: Percent cost allocation for electrical plant: 88.37 % ***ENGINEERING PARAMETERS*** @@ -253,17 +253,17 @@ Installed cost [construction] ($) -19,409,741 -139,536,627 -11 After-tax net cash flow [construction] ($) -19,409,741 -41,860,988 -32,755,227 ENERGY -Electricity to grid (kWh) 0.0 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 +Electricity to grid (kWh) 0.0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 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 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 +Electricity to grid net (kWh) 0.0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 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 35,290,323 35,451,835 35,705,166 35,958,982 36,172,178 36,426,720 36,640,158 36,853,596 37,109,107 37,322,787 37,536,468 37,750,148 37,963,828 38,177,508 38,391,188 38,648,638 38,862,560 39,076,482 39,290,405 39,504,327 44,981,030 45,223,298 45,465,565 45,707,833 45,950,101 46,192,368 46,434,636 46,676,904 46,919,171 47,161,439 +PPA revenue ($) 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 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 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 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 139,193,200 -Total revenue ($) 0 44,826,833 45,006,533 45,265,402 45,522,493 45,737,976 45,994,076 46,205,942 46,397,742 46,634,855 46,875,285 47,095,623 47,312,958 47,529,118 47,744,575 47,958,115 48,202,305 48,383,530 48,626,054 48,848,318 49,066,369 54,545,773 54,789,992 55,032,981 55,267,648 55,472,212 55,737,558 55,991,091 56,238,093 56,483,323 195,920,834 +Total revenue ($) 0 43,332,898 43,632,777 43,929,426 44,189,281 44,433,142 44,665,029 44,843,279 44,674,459 44,568,044 45,232,461 45,552,974 45,822,988 46,073,347 46,311,664 46,515,558 46,481,953 46,102,575 46,822,377 47,177,061 47,456,931 47,711,523 47,952,841 48,171,547 48,233,603 47,732,750 48,373,053 48,788,182 49,082,392 49,343,860 188,781,544 Property tax net assessed value ($) 0 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 @@ -277,10 +277,10 @@ Property tax expense ($) 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 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 -EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 OPERATING ACTIVITIES -EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 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 @@ -288,7 +288,7 @@ State PBI income ($) 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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Cash flow from operating activities ($) 0 16,485,988 16,802,308 17,207,361 17,620,868 18,003,716 18,438,897 18,842,380 19,239,210 19,695,705 20,170,874 20,642,382 21,128,469 21,632,194 22,155,345 22,698,118 23,294,587 23,852,751 24,498,599 25,152,420 25,832,238 31,805,732 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 +Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,656 16,698,883 17,109,850 17,479,717 17,515,927 17,628,893 18,528,049 19,099,733 19,638,498 20,176,422 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 INVESTING ACTIVITIES Total installed cost ($) -278,386,399 @@ -322,45 +322,45 @@ Cash flow from financing activities ($) 278 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 16,485,988 16,802,308 17,207,361 17,620,868 18,003,716 18,438,897 18,842,380 19,239,210 19,695,705 20,170,874 20,642,382 21,128,469 21,632,194 22,155,345 22,698,118 23,294,587 23,852,751 24,498,599 25,152,420 25,832,238 31,805,732 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 +Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,656 16,698,883 17,109,850 17,479,717 17,515,927 17,628,893 18,528,049 19,099,733 19,638,498 20,176,422 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 Cash flow from investing activities ($) -278,386,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 ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 -Total pre-tax cash flow ($) 0 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 +Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 Pre-tax Returns: Issuance of equity ($) 94,025,956 -Total pre-tax cash flow ($) 0 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 -Total pre-tax returns ($) -94,025,956 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 +Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 +Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 After-tax Returns: -Total pre-tax returns ($) -94,025,956 14,534,274 14,713,974 14,972,844 15,229,934 15,445,417 15,701,517 15,913,383 16,105,183 16,342,296 16,582,727 16,803,065 17,020,400 17,236,560 17,452,016 17,665,557 17,909,747 18,090,972 18,333,495 18,555,759 18,773,810 24,253,215 24,497,434 24,740,422 24,975,090 25,179,653 25,445,000 25,698,532 25,945,535 26,190,765 165,628,276 +Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 Federal ITC total income ($) 0 83,515,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 -2,118,759 -996,389 -1,077,580 -1,160,465 -1,237,205 -1,324,435 -1,405,311 -1,484,854 -1,576,356 -1,671,601 -1,766,113 -1,863,547 -1,964,516 -2,069,379 -2,178,175 -2,297,734 -2,409,615 -2,539,072 -2,670,128 -2,806,394 -5,189,525 -6,530,223 -6,692,317 -6,860,681 -7,031,503 -7,223,596 -7,423,044 -7,631,588 -7,850,909 -35,982,538 +Federal tax benefit (liability) ($) 0 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,173 -1,139,431 -1,162,074 -1,342,305 -1,456,897 -1,564,889 -1,672,714 -1,782,159 -1,889,021 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,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 -State tax benefit (liability) ($) 0 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 -Total after-tax returns ($) -94,025,956 95,450,487 13,491,410 13,650,658 13,806,049 13,927,372 14,076,442 14,189,073 14,283,275 14,408,115 14,531,680 14,636,053 14,733,838 14,826,109 14,912,899 14,992,947 15,090,438 15,134,386 15,218,066 15,279,526 15,330,379 17,885,693 16,484,883 16,528,983 16,557,069 16,552,035 16,581,684 16,590,494 16,581,615 16,557,739 121,477,884 +State tax benefit (liability) ($) 0 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 +Total after-tax returns ($) -94,025,956 94,323,978 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,377 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,084 11,253,012 10,716,055 11,028,442 11,159,105 11,185,822 11,174,191 116,094,467 -After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 95,450,487 13,491,410 13,650,658 13,806,049 13,927,372 14,076,442 14,189,073 14,283,275 14,408,115 14,531,680 14,636,053 14,733,838 14,826,109 14,912,899 14,992,947 15,090,438 15,134,386 15,218,066 15,279,526 15,330,379 17,885,693 16,484,883 16,528,983 16,557,069 16,552,035 16,581,684 16,590,494 16,581,615 16,557,739 121,477,884 -After-tax cumulative IRR (%) NaN NaN NaN 0.81 7.65 12.83 16.56 19.21 21.11 22.48 23.48 24.22 24.78 25.20 25.52 25.76 25.95 26.09 26.21 26.30 26.36 26.42 26.46 26.50 26.53 26.55 26.56 26.58 26.59 26.60 26.60 26.61 26.64 -After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -17,839,360 -10,132,039 -3,352,327 2,608,941 7,837,113 12,431,052 16,456,904 19,980,151 23,069,977 25,779,260 28,151,583 30,227,822 32,044,175 33,632,526 35,020,826 36,235,639 37,294,853 38,220,809 39,029,071 39,734,099 40,449,206 41,022,217 41,521,716 41,956,710 42,334,771 42,664,041 42,950,455 43,199,325 43,415,377 44,793,431 +After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 94,323,978 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,377 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,084 11,253,012 10,716,055 11,028,442 11,159,105 11,185,822 11,174,191 116,094,467 +After-tax cumulative IRR (%) NaN NaN NaN 0.17 6.61 11.59 15.23 17.86 19.76 21.14 22.14 22.87 23.44 23.88 24.21 24.47 24.67 24.83 24.95 25.04 25.11 25.17 25.22 25.25 25.28 25.30 25.31 25.32 25.33 25.34 25.34 25.35 25.39 +After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -18,579,595 -11,464,051 -5,184,672 342,514 5,201,336 9,468,208 13,202,522 16,405,235 19,160,842 21,639,167 23,822,943 25,740,860 27,422,729 28,895,999 30,183,574 31,293,956 32,232,795 33,075,996 33,817,595 34,466,811 34,975,874 35,369,678 35,712,823 36,008,467 36,253,231 36,472,227 36,664,875 36,832,760 36,978,566 38,295,550 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,623,654 -31,515,123 -31,614,744 -31,716,444 -31,810,603 -31,917,634 -32,016,869 -32,114,467 -32,226,740 -32,343,605 -32,459,570 -32,579,121 -32,703,009 -32,831,676 -32,965,168 -33,111,867 -33,249,144 -33,407,987 -33,568,792 -33,735,989 -36,660,080 -38,305,109 -38,503,998 -38,710,579 -38,920,177 -39,155,874 -39,400,597 -39,656,478 -39,925,584 64,750,249 -PPA revenue ($) 0 0 0 35,290,323 35,451,835 35,705,166 35,958,982 36,172,178 36,426,720 36,640,158 36,853,596 37,109,107 37,322,787 37,536,468 37,750,148 37,963,828 38,177,508 38,391,188 38,648,638 38,862,560 39,076,482 39,290,405 39,504,327 44,981,030 45,223,298 45,465,565 45,707,833 45,950,101 46,192,368 46,434,636 46,676,904 46,919,171 47,161,439 -Electricity to grid (kWh) 0 0 0 371,477,087 373,177,211 373,602,242 374,027,273 374,027,273 374,452,304 374,452,304 374,452,304 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 374,877,335 375,302,366 375,302,366 375,302,366 375,302,366 375,302,366 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 425,030,992 +Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,991,080 -31,177,255 -31,286,167 -31,388,547 -31,489,686 -31,590,762 -31,681,729 -31,690,634 -31,718,418 -31,939,560 -32,080,163 -32,212,670 -32,344,970 -32,479,259 -32,610,378 -32,688,755 -32,688,155 -32,964,382 -33,157,754 -33,340,156 -34,979,230 -36,623,546 -36,816,463 -36,980,591 -37,016,695 -37,344,611 -37,629,077 -37,896,570 -38,169,668 66,506,122 +PPA revenue ($) 0 0 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 +Electricity to grid (kWh) 0 0 0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 -Present value of annual costs ($) 185,467,094 -Present value of annual energy nominal (kWh) 1,864,437,186 -LCOE Levelized cost of energy nominal (cents/kWh) 9.95 +Present value of annual costs ($) 183,347,724 +Present value of annual energy nominal (kWh) 1,777,787,001 +LCOE Levelized cost of energy nominal (cents/kWh) 10.31 -Present value of PPA revenue ($) 182,913,165 -Present value of annual energy nominal (kWh) 1,864,437,186 -LPPA Levelized PPA price nominal (cents/kWh) 9.81 +Present value of PPA revenue ($) 174,295,914 +Present value of annual energy nominal (kWh) 1,777,787,001 +LPPA Levelized PPA price nominal (cents/kWh) 9.80 PROJECT STATE INCOME TAXES -EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 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 @@ -369,15 +369,15 @@ minus: Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 Total state tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 10,570,277 4,970,886 5,375,939 5,789,446 6,172,294 6,607,475 7,010,958 7,407,788 7,864,283 8,339,452 8,810,960 9,297,047 9,800,772 10,323,923 10,866,696 11,463,165 12,021,329 12,667,177 13,320,998 14,000,816 25,890,021 32,578,627 33,387,300 34,227,249 35,079,463 36,037,796 37,032,824 38,073,227 39,167,396 179,513,271 +State taxable income ($) 0 9,076,343 3,597,130 4,039,963 4,456,234 4,867,461 5,278,428 5,648,295 5,684,505 5,797,471 6,696,627 7,268,311 7,807,076 8,345,000 8,891,012 9,424,139 9,742,813 9,740,374 10,863,500 11,649,742 12,391,378 19,055,771 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 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 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 +State tax benefit (liability) ($) 0 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 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 -480,948 -226,175 -244,605 -263,420 -280,839 -300,640 -318,999 -337,054 -357,825 -379,445 -400,899 -423,016 -445,935 -469,738 -494,435 -521,574 -546,970 -576,357 -606,105 -637,037 -1,177,996 -1,482,328 -1,519,122 -1,557,340 -1,596,116 -1,639,720 -1,684,994 -1,732,332 -1,782,117 -8,167,854 +State tax benefit (liability) ($) 0 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 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 @@ -387,10 +387,10 @@ minus: Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 Total federal tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 10,089,330 4,744,711 5,131,334 5,526,026 5,891,455 6,306,835 6,691,959 7,070,733 7,506,458 7,960,007 8,410,061 8,874,031 9,354,837 9,854,184 10,372,262 10,941,591 11,474,359 12,090,821 12,714,893 13,363,779 24,712,025 31,096,300 31,868,178 32,669,909 33,483,347 34,398,076 35,347,831 36,340,895 37,385,279 171,345,417 +Federal taxable income ($) 0 8,663,369 3,433,461 3,856,144 4,253,476 4,645,991 5,038,260 5,391,298 5,425,860 5,533,687 6,391,930 6,937,603 7,451,854 7,965,303 8,486,471 8,995,340 9,299,515 9,297,187 10,369,211 11,119,679 11,827,570 18,188,734 24,570,239 25,318,939 25,955,912 26,096,031 27,368,656 28,472,654 29,510,779 30,570,661 164,530,965 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,118,759 -996,389 -1,077,580 -1,160,465 -1,237,205 -1,324,435 -1,405,311 -1,484,854 -1,576,356 -1,671,601 -1,766,113 -1,863,547 -1,964,516 -2,069,379 -2,178,175 -2,297,734 -2,409,615 -2,539,072 -2,670,128 -2,806,394 -5,189,525 -6,530,223 -6,692,317 -6,860,681 -7,031,503 -7,223,596 -7,423,044 -7,631,588 -7,850,909 -35,982,538 +Federal tax benefit (liability) ($) 0 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,173 -1,139,431 -1,162,074 -1,342,305 -1,456,897 -1,564,889 -1,672,714 -1,782,159 -1,889,021 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,503 CASH INCENTIVES Federal IBI income ($) 0 @@ -430,16 +430,16 @@ Debt principal payment ($) 0 Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 DSCR (DEBT FRACTION) -EBITDA ($) 0 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 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 29,391,219 29,570,919 29,829,789 30,086,879 30,302,362 30,558,462 30,770,329 30,962,129 31,199,242 31,439,672 31,660,010 31,877,345 32,093,505 32,308,962 32,522,502 32,766,692 32,947,917 33,190,440 33,412,704 33,630,755 39,110,160 39,354,379 39,597,367 39,832,035 40,036,598 40,301,945 40,555,477 40,802,480 41,047,710 180,485,221 +Cash available for debt service (CAFDS) ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 -DSCR (pre-tax) 0.0 1.98 1.99 2.01 2.03 2.04 2.06 2.07 2.08 2.10 2.12 2.13 2.15 2.16 2.17 2.19 2.21 2.22 2.23 2.25 2.26 2.63 2.65 2.67 2.68 2.69 2.71 2.73 2.75 2.76 12.15 +DSCR (pre-tax) 0.0 1.88 1.90 1.92 1.94 1.95 1.97 1.98 1.97 1.96 2.01 2.03 2.05 2.06 2.08 2.09 2.09 2.06 2.11 2.14 2.16 2.17 2.19 2.20 2.21 2.17 2.22 2.24 2.26 2.28 11.67 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 From d5744c234beae45301b82f8d8d20d972d722858c Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:29:28 -0700 Subject: [PATCH 006/127] rename to example_SAM-single-owner-PPA-7_chp, update validate_read_parameters --- src/geophires_x/EconomicsSam.py | 22 +++++++++++-------- ...=> example_SAM-single-owner-PPA-7_chp.out} | 4 ++-- ...=> example_SAM-single-owner-PPA-7_chp.txt} | 0 3 files changed, 15 insertions(+), 11 deletions(-) rename tests/examples/{example_SAM-single-owner-PPA-7_heat.out => example_SAM-single-owner-PPA-7_chp.out} (99%) rename tests/examples/{example_SAM-single-owner-PPA-7_heat.txt => example_SAM-single-owner-PPA-7_chp.txt} (100%) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index b9907d690..2527a774f 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -411,15 +411,19 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> f'{supported_description}.' ) - # FIXME WIP... - # if model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY: - # raise ValueError( - # _inv_msg( - # model.surfaceplant.enduse_option.Name, - # model.surfaceplant.enduse_option.value.value, - # f'{EndUseOptions.ELECTRICITY.name} End-Use Option', - # ) - # ) + if ( + model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY + and not model.surfaceplant.enduse_option.value.name.startswith('COGENERATION') + ): + # FIXME WIP also support Direct-Use heat (requires getting PySAM to work with zero electricity generation) + + raise ValueError( + _inv_msg( + model.surfaceplant.enduse_option.Name, + model.surfaceplant.enduse_option.value.value, + f'{EndUseOptions.ELECTRICITY.value} and Cogeneration End-Use Options', + ) + ) gtr: floatParameter = model.economics.GTR if gtr.Provided: diff --git a/tests/examples/example_SAM-single-owner-PPA-7_heat.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out similarity index 99% rename from tests/examples/example_SAM-single-owner-PPA-7_heat.out rename to tests/examples/example_SAM-single-owner-PPA-7_chp.out index 52f3b9aae..075cac814 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-27 - Simulation Time: 11:17 - Calculation Time: 1.764 sec + Simulation Time: 11:28 + Calculation Time: 1.770 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-7_heat.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt similarity index 100% rename from tests/examples/example_SAM-single-owner-PPA-7_heat.txt rename to tests/examples/example_SAM-single-owner-PPA-7_chp.txt From 2f7d7f6f08c53b82db5b49e8ade553bad4f22df6 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 11:51:18 -0700 Subject: [PATCH 007/127] support cooling revenue --- src/geophires_x/EconomicsSam.py | 40 ++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 2527a774f..c1d87f1e3 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1035,9 +1035,19 @@ def _get_capacity_payment_parameters(model: Model) -> dict[str, Any]: econ = model.economics - has_heat_end_use = model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY - - if not (econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_end_use): + def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: + return isinstance(econ_revenue_output.value, Iterable) and any(it > 0 for it in econ_revenue_output.value) + + has_heat_revenue = _has_revenue_type(econ.HeatRevenue) + has_cooling_revenue = _has_revenue_type(econ.CoolingRevenue) + + if not ( + econ.DoAddOnCalculations.value + or econ.DoCarbonCalculations.value + or has_heat_revenue + or has_cooling_revenue + or has_cooling_revenue + ): return ret ret['cp_capacity_payment_type'] = 1 @@ -1058,23 +1068,17 @@ def _get_capacity_payment_parameters(model: Model) -> dict[str, Any]: for i, carbon_revenue_usd in enumerate(carbon_revenue_usd_series): ret['cp_capacity_payment_amount'][i] += carbon_revenue_usd - if has_heat_end_use: - # # FIXME WIP - # heat_revenue_musd_series: list[float] = CalculateRevenue( - # # FIXME WIP unit conversions - # model.surfaceplant.plant_lifetime.value, - # model.surfaceplant.construction_years.value, - # model.surfaceplant.HeatkWhProduced.value, - # econ.HeatPrice.value - # ) - # for i, heat_revenue_musd in enumerate(heat_revenue_musd_series): - # ret['cp_capacity_payment_amount'][i] += heat_revenue_musd - heat_revenue_usd_series = ( - econ.HeatRevenue.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] - ) - for i, heat_revenue_usd in enumerate(heat_revenue_usd_series): + def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[float]: + return econ_revenue_output.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] + + if has_heat_revenue: + for i, heat_revenue_usd in enumerate(_get_revenue_usd_series(econ.HeatRevenue)): ret['cp_capacity_payment_amount'][i] += heat_revenue_usd + if has_cooling_revenue: + for i, cooling_revenue_usd in enumerate(_get_revenue_usd_series(econ.CoolingRevenue)): + ret['cp_capacity_payment_amount'][i] += cooling_revenue_usd + return ret From e47a9c5435fd7d5b08cfa0193f711b0793100030 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:06:52 -0700 Subject: [PATCH 008/127] WIP - add example_SAM-single-owner-PPA-8_heat --- src/geophires_x/Economics.py | 9 +- src/geophires_x/EconomicsSam.py | 30 +- .../example_SAM-single-owner-PPA-7_chp.txt | 3 +- .../example_SAM-single-owner-PPA-8_heat.out | 455 ++++++++++++++++++ .../example_SAM-single-owner-PPA-8_heat.txt | 109 +++++ 5 files changed, 594 insertions(+), 12 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-8_heat.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-8_heat.txt diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 48c4f660c..8da9441ea 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -491,8 +491,13 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: model.surfaceplant.annual_heating_demand.value * discount_vector) * 1E2 # cents/kWh LCOH = LCOH * 2.931 # $/Million Btu elif econ.econmodel.value == EconomicModel.SAM_SINGLE_OWNER_PPA: - # Designated as nominal (as opposed to real) in parameter tooltip text - LCOE = econ.sam_economics_calculations.lcoe_nominal.quantity().to(convertible_unit(econ.LCOE.CurrentUnits.value)).magnitude + try: + # Designated as nominal (as opposed to real) in parameter tooltip text + LCOE = econ.sam_economics_calculations.lcoe_nominal.quantity().to( + convertible_unit(econ.LCOE.CurrentUnits.value)).magnitude + except ValueError: + # FIXME WIP - indicates heat only end-use/surface application + pass else: # must be BICYCLE # average return on investment (tax and inflation adjusted) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index c1d87f1e3..6ad03e5a8 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -352,7 +352,11 @@ def backfill_lcoe_nominal() -> None: *([None] * (self._pre_revenue_years_count - 1)), ] - backfill_lcoe_nominal() + try: + backfill_lcoe_nominal() + except ZeroDivisionError: + # FIXME WIP - indicates heat only end-use/surface application + pass def backfill_lppa_metrics() -> None: pv_of_ppa_revenue_row_index = _get_row_index_after( @@ -393,7 +397,11 @@ def backfill_lppa_metrics() -> None: *([None] * self._pre_revenue_years_count), ] - backfill_lppa_metrics() + try: + backfill_lppa_metrics() + except ZeroDivisionError: + # FIXME WIP - indicates heat only end-use/surface application + pass return ret @@ -411,10 +419,10 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> f'{supported_description}.' ) - if ( - model.surfaceplant.enduse_option.value != EndUseOptions.ELECTRICITY - and not model.surfaceplant.enduse_option.value.name.startswith('COGENERATION') - ): + if model.surfaceplant.enduse_option.value not in ( + EndUseOptions.ELECTRICITY, + EndUseOptions.HEAT, + ) and not model.surfaceplant.enduse_option.value.name.startswith('COGENERATION'): # FIXME WIP also support Direct-Use heat (requires getting PySAM to work with zero electricity generation) raise ValueError( @@ -438,6 +446,7 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> f'{eir.Name} provided value ({eir.value}) will be ignored. (SAM Economics does not support {eir.Name}.)' ) + # noinspection PyUnresolvedReferences econ: 'Economics' = model.economics econ.construction_capex_schedule.value = _validate_construction_capex_schedule( @@ -927,7 +936,7 @@ def _get_utility_rate_parameters(m: Model) -> dict[str, Any]: else: # Occurs for non-electricity end-use options # net_kwh_produced_series = [net_kwh_produced_series] * m.surfaceplant.plant_lifetime.value - pass + ret['degradation'] = [100.0] * m.surfaceplant.plant_lifetime.value return ret @@ -1153,4 +1162,9 @@ def _get_royalty_rate_schedule(model: Model) -> list[float]: def _get_max_total_generation_kW(model: Model) -> float: - return np.max(model.surfaceplant.ElectricityProduced.quantity().to(convertible_unit('kW')).magnitude) + max_total_kw = np.max(model.surfaceplant.ElectricityProduced.quantity().to(convertible_unit('kW')).magnitude) + + # FIXME TEMP + max_total_kw = max(0.0001, max_total_kw) + + return max_total_kw diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt index 580f4ba68..4d823d247 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt @@ -40,8 +40,7 @@ Field Gathering System Capital Cost Adjustment Factor, 0.35 # *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** # ************************************************* -# End-Use Option, 2, -- Direct-Use Heat -End-Use Option, 31, -- -CHP Topping Cycle with electricity as the main product +End-Use Option, 31, -- CHP Topping Cycle with electricity as the main product Power Plant Type, 1, -- Subcritical ORC Plant Lifetime, 30 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out new file mode 100644 index 000000000..94fb1c157 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -0,0 +1,455 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-03-27 + Simulation Time: 12:05 + Calculation Time: 2.070 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Direct-Use Heat + Average Direct-Use Heat Production: 330.46 MW + Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU + Total CAPEX: 244.33 MUSD + Total CAPEX ($/kW): inf USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 73.30 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 125.22 MUSD + After-tax IRR: 44.50 % + Project VIR=PI=PIR: 2.77 + Project MOIC: 11.34 + Project Payback Period: 3.81 yr + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + 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.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.4 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 367.18 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -1925.9 kPa + Average Production Well Pump Pressure Drop: 9514.6 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 118.47 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 121.67 MUSD + Overnight Capital Cost: 221.17 MUSD + Inflation costs during construction: 14.16 MUSD + Interest during construction: 9.00 MUSD + Total CAPEX: 244.33 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.11 MUSD/yr + Power plant maintenance costs: 3.62 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 14.36 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + + Maximum Net Heat Production: 331.14 MW + Average Net Heat Production: 330.46 MW + Minimum Net Heat Production: 327.18 MW + Initial Net Heat Production: 327.77 MW + Average Annual Heat Production: 2605.38 GWh + Average Pumping Power: 8.14 MW + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET + DRAWDOWN TEMPERATURE POWER HEAT + (deg C) (MW) (MW) + 0 1.0000 201.65 8.1512 327.7689 + 1 1.0052 202.70 8.1476 330.1471 + 2 1.0062 202.90 8.1469 330.5887 + 3 1.0067 203.00 8.1466 330.8183 + 4 1.0070 203.06 8.1463 330.9702 + 5 1.0073 203.11 8.1462 331.0811 + 6 1.0074 203.14 8.1463 331.1337 + 7 1.0066 202.98 8.1488 330.7744 + 8 1.0008 201.81 8.1651 328.1420 + 9 1.0048 202.61 8.1453 329.9427 + 10 1.0060 202.86 8.1444 330.5087 + 11 1.0066 202.98 8.1429 330.7707 + 12 1.0070 203.05 8.1409 330.9369 + 13 1.0072 203.10 8.1389 331.0565 + 14 1.0074 203.14 8.1373 331.1331 + 15 1.0070 203.06 8.1377 330.9604 + 16 1.0032 202.29 8.1481 329.2273 + 17 1.0041 202.47 8.1350 329.6301 + 18 1.0058 202.82 8.1348 330.4135 + 19 1.0065 202.95 8.1348 330.7174 + 20 1.0069 203.03 8.1348 330.9008 + 21 1.0072 203.09 8.1348 331.0298 + 22 1.0074 203.13 8.1348 331.1214 + 23 1.0072 203.11 8.1357 331.0640 + 24 1.0048 202.62 8.1429 329.9719 + 25 1.0027 202.20 8.1348 329.0166 + 26 1.0055 202.77 8.1348 330.2966 + 27 1.0063 202.93 8.1348 330.6574 + 28 1.0068 203.02 8.1349 330.8615 + 29 1.0071 203.08 8.1349 331.0011 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT HEAT RESERVOIR PERCENTAGE OF + PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (10^15 J) (%) + 1 2596.7 2885.2 137.45 7.03 + 2 2604.9 2894.3 127.03 14.07 + 3 2607.3 2897.0 116.60 21.13 + 4 2608.8 2898.7 106.17 28.19 + 5 2609.8 2899.8 95.73 35.25 + 6 2610.5 2900.6 85.29 42.31 + 7 2609.8 2899.8 74.85 49.37 + 8 2600.1 2889.0 64.45 56.41 + 9 2591.9 2879.9 54.08 63.42 + 10 2603.9 2893.2 43.66 70.47 + 11 2606.9 2896.5 33.24 77.52 + 12 2608.5 2898.3 22.80 84.58 + 13 2609.6 2899.6 12.36 91.64 + 14 2610.4 2900.4 1.92 98.70 + 15 2610.3 2900.4 -8.52 105.76 + 16 2604.4 2893.8 -18.94 112.81 + 17 2589.8 2877.5 -29.30 119.82 + 18 2602.6 2891.7 -39.71 126.86 + 19 2606.3 2895.9 -50.13 133.91 + 20 2608.1 2897.9 -60.56 140.97 + 21 2609.4 2899.3 -71.00 148.03 + 22 2610.2 2900.3 -81.44 155.09 + 23 2610.6 2900.6 -91.89 162.15 + 24 2607.2 2896.8 -102.31 169.21 + 25 2590.3 2878.1 -112.68 176.22 + 26 2600.6 2889.6 -123.08 183.25 + 27 2605.6 2895.2 -133.50 190.30 + 28 2607.8 2897.5 -143.93 197.36 + 29 2609.1 2899.0 -154.37 204.42 + 30 2610.0 2900.0 -164.81 211.48 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 +plus: +Inflation cost [construction] ($) -447,866 -6,354,766 -7,361,070 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -17,035,483 -122,468,085 -95,828,361 + +Issuance of equity [construction] ($) 17,035,483 36,740,426 28,748,508 +Issuance of debt [construction] ($) 0 85,727,660 67,079,852 +Debt balance [construction] ($) 0 85,727,660 161,808,916 +Debt interest payment [construction] ($) 0 0 9,001,404 + +Installed cost [construction] ($) -17,035,483 -122,468,085 -104,829,765 +After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 + +ENERGY +Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + +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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +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 122,166,666 +Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 + +Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 +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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 +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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 + +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 + +OPERATING ACTIVITIES +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 + +INVESTING ACTIVITIES +Total installed cost ($) -244,333,333 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -244,333,333 +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 +equals: +Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 82,524,416 +Size of debt ($) 161,808,916 +minus: +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +equals: +Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 + +Pre-tax Returns: +Issuance of equity ($) 82,524,416 +Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 + +After-tax Returns: +Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 + +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 +After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,332 41,560,978 52,872,860 62,698,897 71,225,999 78,583,386 84,936,345 90,492,123 95,322,541 99,518,196 103,160,789 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,667 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,934 122,730,709 123,172,775 123,555,130 123,885,478 125,215,669 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 +PPA 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 0 0 +Electricity to 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 + +Present value of annual costs ($) 197,491,957 +Present value of annual energy nominal (kWh) 0 +LCOE Levelized cost of energy nominal (cents/kWh) 0.0 + +Present value of PPA revenue ($) 0 +Present value of annual energy nominal (kWh) 0 +LPPA Levelized PPA price nominal (cents/kWh) 0.0 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 33,501,056 28,632,328 28,822,579 28,996,490 29,168,970 29,343,568 29,494,166 29,432,083 29,418,827 29,924,073 30,218,990 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 + +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 31,976,758 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,271 28,562,527 28,844,026 29,108,195 29,375,577 29,652,315 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,402 43,297,327 43,437,333 44,264,282 45,005,738 45,720,954 46,463,776 163,854,657 + +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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 + +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 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 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 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 +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 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt new file mode 100644 index 000000000..eabcfaec9 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt @@ -0,0 +1,109 @@ +# Example: SAM Single Owner PPA Economic Model: Direct-Use Heat +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 2, -- Direct-Use Heat +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From 74b1f65fea287a43520c13926212b236805ee4c6 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 07:49:30 -0700 Subject: [PATCH 009/127] test_direct_use_heat_end_use_supported --- tests/geophires_x_tests/test_economics_sam.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index dd78abce5..43898e413 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -304,11 +304,8 @@ def r_0(r): if r_0(r) == name )[1:] - def test_only_electricity_end_use_supported(self): - with self.assertRaises(RuntimeError) as e: - self._get_result({'End-Use Option': 2}) - - self.assertIn('Invalid End-Use Option (Direct-Use Heat)', str(e.exception)) + def test_direct_use_heat_end_use_supported(self): + self.assertIsNotNone(self._get_result({'End-Use Option': 2})) def test_multiple_construction_years(self): construction_years_2: GeophiresXResult = self._get_result( From 59457498164ccdfe75465f1d4303d06dd27d4348 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:06:50 -0700 Subject: [PATCH 010/127] remove redundant statement --- src/geophires_x/EconomicsSam.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 6ad03e5a8..0a614090c 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1051,11 +1051,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: has_cooling_revenue = _has_revenue_type(econ.CoolingRevenue) if not ( - econ.DoAddOnCalculations.value - or econ.DoCarbonCalculations.value - or has_heat_revenue - or has_cooling_revenue - or has_cooling_revenue + econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_revenue or has_cooling_revenue ): return ret From 9d2dc22f0f442d6ba187a4a7c611b49dae932627 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:42:36 -0700 Subject: [PATCH 011/127] temporarily work around capex_total_per_kw_q calculation when no electricity produced --- src/geophires_x/Economics.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 8da9441ea..e9dc5de93 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3641,8 +3641,15 @@ def _calculate_sam_economics(self, model: Model) -> None: np.max(model.surfaceplant.NetElectricityProduced.value), model.surfaceplant.NetElectricityProduced.CurrentUnits ).to('kW') - capex_total_per_kw_q = self.capex_total.quantity().to('USD') / max_net_electricity_generation_kw - self.capex_total_per_kw.value = capex_total_per_kw_q.magnitude + try: + capex_total_per_kw_q = self.capex_total.quantity().to('USD') / max_net_electricity_generation_kw + self.capex_total_per_kw.value = capex_total_per_kw_q.magnitude + except Exception as e: # RuntimeError as re: + # FIXME WIP + if str(e) == 'divide by zero encountered in scalar divide': + self.capex_total_per_kw.value = float('inf') + else: + raise e self.CCap.value = (self.sam_economics_calculations.capex.quantity() .to(self.CCap.CurrentUnits.value).magnitude) From 6a284100483cc81a5717680f98fab9943c5c9603 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:34:10 -0700 Subject: [PATCH 012/127] WIP - wiring up capacity payment revenue sources --- src/geophires_x/EconomicsSam.py | 137 ++++++++++++++++++ tests/geophires_x_tests/test_economics_sam.py | 3 + 2 files changed, 140 insertions(+) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 0a614090c..af9c6809b 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -63,6 +63,18 @@ ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY = 'O&M production-based expense ($)' +@dataclass +class CapacityPaymentRevenueSource: + name: str + amount_provided_label: str | None + amount_provided: list[float] | None + + price_label: str | None + price: list[float] | None + + revenue_usd: list[float] + + @dataclass class SamEconomicsCalculations: _sam_cash_flow_profile_operational_years: list[list[Any]] @@ -103,6 +115,8 @@ class SamEconomicsCalculations: investment_tax_credit: OutputParameter = field(default_factory=investment_tax_credit_output_parameter) + capacity_payment_revenue_sources: list[CapacityPaymentRevenueSource] = field(default_factory=list) + @property def _pre_revenue_years_count(self) -> int: return len( @@ -186,6 +200,8 @@ def _get_row(row_name__: str) -> list[Any]: if self._royalties_rate_schedule is not None: ret = self._insert_royalties_rate_schedule(ret) + ret = self._insert_capacity_payment_line_items(ret) + ret = self._insert_calculated_levelized_metrics_line_items(ret) return ret @@ -210,6 +226,50 @@ def _get_row_index(row_name_: str) -> list[Any]: return ret + # noinspection PyMethodMayBeStatic + def _insert_capacity_payment_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: + if len(self.capacity_payment_revenue_sources) == 0: + return cf_ret + + # FIXME WIP + ret = cf_ret.copy() + + def _get_row_index(row_name_: str) -> list[Any]: + return [it[0] for it in ret].index(row_name_) + + def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any]) -> None: + ret.insert( + _get_row_index(before_row_name), + [row_name, *row_content], + ) + + def _insert_blank_line_before(before_row_name: str) -> None: + _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) + + _insert_blank_line_before('Salvage value ($)') + _insert_blank_line_before('Capacity payment revenue ($)') + + for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: + if capacity_payment_revenue_source.amount_provided_label is not None: + _insert_row_before( + 'REVENUE', + capacity_payment_revenue_source.amount_provided_label, + capacity_payment_revenue_source.amount_provided, + ) + _insert_blank_line_before(capacity_payment_revenue_source.amount_provided_label) + + revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' + _insert_row_before( + 'Capacity payment revenue ($)', revenue_row_name, capacity_payment_revenue_source.revenue_usd + ) + + if capacity_payment_revenue_source.price_label is not None: + _insert_row_before( + revenue_row_name, capacity_payment_revenue_source.price_label, capacity_payment_revenue_source.price + ) + + return ret + # noinspection DuplicatedCode def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: ret = cf_ret.copy() @@ -626,6 +686,9 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: _get_lcoe_nominal_cents_per_kwh(single_owner, sam_economics.sam_cash_flow_profile, model) ) + if _has_capacity_payment_revenue_sources(model): + sam_economics.capacity_payment_revenue_sources = _get_capacity_payment_revenue_sources(model) + return sam_economics @@ -1039,7 +1102,81 @@ def _get_single_owner_parameters(model: Model) -> dict[str, Any]: return ret +def _has_capacity_payment_revenue_sources(model: Model) -> bool: + return len(_get_capacity_payment_revenue_sources(model)) > 0 + + +def _get_capacity_payment_revenue_sources(model: Model) -> list[CapacityPaymentRevenueSource]: + ret: list[CapacityPaymentRevenueSource] = [] + + econ = model.economics + + def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: + return isinstance(econ_revenue_output.value, Iterable) and any(it > 0 for it in econ_revenue_output.value) + + has_heat_revenue = _has_revenue_type(econ.HeatRevenue) + has_cooling_revenue = _has_revenue_type(econ.CoolingRevenue) + # + # if not ( + # econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_revenue or has_cooling_revenue + # ): + # return ret + + # ret['cp_capacity_payment_type'] = 1 + # ret['cp_capacity_payment_amount'] = [0.0] * model.surfaceplant.plant_lifetime.value + + if econ.DoAddOnCalculations.value: + add_on_profit_per_year_usd = np.sum( + model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude + ) + add_on_profit_usd_series = [add_on_profit_per_year_usd] * model.surfaceplant.plant_lifetime.value + add_on_source = CapacityPaymentRevenueSource(name='Add-On Profit', revenue_usd=add_on_profit_usd_series) + ret.append(add_on_source) + + if econ.DoCarbonCalculations.value: + carbon_revenue_usd_series = ( + econ.CarbonRevenue.quantity().to('USD/yr').magnitude[_pre_revenue_years_count(model) :] + ) + carbon_revenue_source = CapacityPaymentRevenueSource( + name='Carbon credits', # TODO/WIP naming re: https://github.com/NatLabRockies/GEOPHIRES-X/issues/476 + revenue_usd=carbon_revenue_usd_series, + price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits})', + price=econ.CarbonPrice.value, + # FIXME WIP amount + ) + ret.append(carbon_revenue_source) + + def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[float]: + return econ_revenue_output.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] + + if has_heat_revenue: + ret.append( + CapacityPaymentRevenueSource( + name='Heat', + revenue_usd=_get_revenue_usd_series(econ.HeatRevenue), + price_label=f'Heat price ({econ.HeatPrice.CurrentUnits})', + price=econ.HeatPrice.value, + # FIXME WIP amount + ) + ) + + if has_cooling_revenue: + ret.append( + CapacityPaymentRevenueSource( + name='Cooling', + revenue_usd=_get_revenue_usd_series(econ.CoolingRevenue), + price_label=f'Cooling price ({econ.HeatPrice.CurrentUnits})', + price=econ.CoolingPrice.value, + # FIXME WIP amount + ) + ) + + return ret + + def _get_capacity_payment_parameters(model: Model) -> dict[str, Any]: + # FIXME WIP TODO consolidate with _get_capacity_payment_revenue_sources + ret = {} econ = model.economics diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index 43898e413..e72b5c2c9 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -305,6 +305,9 @@ def r_0(r): )[1:] def test_direct_use_heat_end_use_supported(self): + # import warnings + # warnings.filterwarnings('error', message='divide by zero', category=RuntimeWarning) + self.assertIsNotNone(self._get_result({'End-Use Option': 2})) def test_multiple_construction_years(self): From 78477db6b6224cac55bcddeb9c93e42b07b09cd2 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:41:47 -0700 Subject: [PATCH 013/127] continued WIP on capacity payment revenue source line items in cash flow - add-on profit works --- src/geophires_x/EconomicsSam.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index af9c6809b..c49dd051c 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -66,14 +66,15 @@ @dataclass class CapacityPaymentRevenueSource: name: str - amount_provided_label: str | None - amount_provided: list[float] | None - - price_label: str | None - price: list[float] | None revenue_usd: list[float] + amount_provided_label: str | None = None + amount_provided: list[float] | None = None + + price_label: str | None = None + price: list[float] | None = None + @dataclass class SamEconomicsCalculations: @@ -254,18 +255,20 @@ def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before( 'REVENUE', capacity_payment_revenue_source.amount_provided_label, - capacity_payment_revenue_source.amount_provided, + [0, *capacity_payment_revenue_source.amount_provided], ) _insert_blank_line_before(capacity_payment_revenue_source.amount_provided_label) revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' _insert_row_before( - 'Capacity payment revenue ($)', revenue_row_name, capacity_payment_revenue_source.revenue_usd + 'Capacity payment revenue ($)', revenue_row_name, [0, *capacity_payment_revenue_source.revenue_usd] ) if capacity_payment_revenue_source.price_label is not None: _insert_row_before( - revenue_row_name, capacity_payment_revenue_source.price_label, capacity_payment_revenue_source.price + revenue_row_name, + capacity_payment_revenue_source.price_label, + [0, *capacity_payment_revenue_source.price], ) return ret From a1fc61ee57cba1df61c2fb1240dce5eabecbb64d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:53:19 -0700 Subject: [PATCH 014/127] heat price/amount --- src/geophires_x/EconomicsSam.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index c49dd051c..5cb2334e9 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -250,25 +250,32 @@ def _insert_blank_line_before(before_row_name: str) -> None: _insert_blank_line_before('Salvage value ($)') _insert_blank_line_before('Capacity payment revenue ($)') + def _for_operational_years(_row: list[Any]) -> list[Any]: + return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] + for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: if capacity_payment_revenue_source.amount_provided_label is not None: _insert_row_before( 'REVENUE', capacity_payment_revenue_source.amount_provided_label, - [0, *capacity_payment_revenue_source.amount_provided], + _for_operational_years(capacity_payment_revenue_source.amount_provided), ) - _insert_blank_line_before(capacity_payment_revenue_source.amount_provided_label) + # _insert_blank_line_before(capacity_payment_revenue_source.amount_provided_label) + _insert_blank_line_before('REVENUE') revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' _insert_row_before( - 'Capacity payment revenue ($)', revenue_row_name, [0, *capacity_payment_revenue_source.revenue_usd] + 'Capacity payment revenue ($)', + revenue_row_name, + _for_operational_years(capacity_payment_revenue_source.revenue_usd), ) if capacity_payment_revenue_source.price_label is not None: _insert_row_before( revenue_row_name, capacity_payment_revenue_source.price_label, - [0, *capacity_payment_revenue_source.price], + capacity_payment_revenue_source.price, + # _for_operational_years(capacity_payment_revenue_source.price), ) return ret @@ -1157,9 +1164,10 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl CapacityPaymentRevenueSource( name='Heat', revenue_usd=_get_revenue_usd_series(econ.HeatRevenue), - price_label=f'Heat price ({econ.HeatPrice.CurrentUnits})', + price_label=f'Heat price ({econ.HeatPrice.CurrentUnits.value})', price=econ.HeatPrice.value, - # FIXME WIP amount + amount_provided_label=f'Heat provided ({model.surfaceplant.HeatProduced.CurrentUnits.value})', + amount_provided=model.surfaceplant.HeatProduced.value, ) ) From 535202091df6a903df281ea144aa23774c6353cc Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:58:14 -0700 Subject: [PATCH 015/127] regenerate capacity payment examples --- src/geophires_x/EconomicsSam.py | 5 +++-- ...example_SAM-single-owner-PPA-6_carbon-revenue.out | 10 +++++++--- .../examples/example_SAM-single-owner-PPA-7_chp.out | 12 +++++++++--- .../examples/example_SAM-single-owner-PPA-8_heat.out | 12 +++++++++--- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 5cb2334e9..47307a5f5 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1150,7 +1150,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: carbon_revenue_source = CapacityPaymentRevenueSource( name='Carbon credits', # TODO/WIP naming re: https://github.com/NatLabRockies/GEOPHIRES-X/issues/476 revenue_usd=carbon_revenue_usd_series, - price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits})', + price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits.value})', price=econ.CarbonPrice.value, # FIXME WIP amount ) @@ -1163,6 +1163,7 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl ret.append( CapacityPaymentRevenueSource( name='Heat', + # FIXME WIP amount/price units are pre-existingly incorrect/out-of-sync revenue_usd=_get_revenue_usd_series(econ.HeatRevenue), price_label=f'Heat price ({econ.HeatPrice.CurrentUnits.value})', price=econ.HeatPrice.value, @@ -1176,7 +1177,7 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl CapacityPaymentRevenueSource( name='Cooling', revenue_usd=_get_revenue_usd_series(econ.CoolingRevenue), - price_label=f'Cooling price ({econ.HeatPrice.CurrentUnits})', + price_label=f'Cooling price ({econ.HeatPrice.CurrentUnits.value})', price=econ.CoolingPrice.value, # FIXME WIP amount ) diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index 2b96ac61e..c4e661af9 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-25 - Simulation Time: 11:37 - Calculation Time: 1.789 sec + Simulation Date: 2026-03-28 + Simulation Time: 09:57 + Calculation Time: 1.786 sec ***SUMMARY OF RESULTS*** @@ -255,7 +255,11 @@ 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 38,389,748 38,636,878 38,944,490 39,221,859 39,486,095 39,740,495 39,950,714 39,874,004 39,849,411 40,462,045 40,789,649 41,075,720 41,345,654 41,605,663 41,837,200 41,872,073 41,619,942 42,280,092 42,636,056 42,930,166 43,203,407 43,465,696 43,709,288 43,823,019 43,468,387 44,064,027 44,470,422 44,776,546 45,055,568 45,320,544 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 + +Carbon price (USD/lb) 0.0 0.0 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 +Carbon credits revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 Capacity payment revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 + 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 137,782,527 Total revenue ($) 0 46,996,452 47,298,986 47,623,489 47,910,848 48,182,064 48,441,210 48,646,503 48,502,830 48,423,260 49,117,863 49,465,877 49,763,342 50,041,149 50,306,865 50,538,126 50,532,051 50,180,392 50,928,716 51,310,009 51,616,658 51,898,104 52,166,316 52,412,047 52,502,175 52,031,918 52,699,374 53,139,941 53,460,437 53,748,453 191,802,162 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 075cac814..a5e2f3514 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-27 - Simulation Time: 11:28 - Calculation Time: 1.770 sec + Simulation Date: 2026-03-28 + Simulation Time: 09:54 + Calculation Time: 1.774 sec ***SUMMARY OF RESULTS*** @@ -257,11 +257,17 @@ Electricity to grid (kWh) 0.0 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 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 +Heat provided (MW) 0 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 + 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 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 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 + +Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 Capacity payment revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 + 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 139,193,200 Total revenue ($) 0 43,332,898 43,632,777 43,929,426 44,189,281 44,433,142 44,665,029 44,843,279 44,674,459 44,568,044 45,232,461 45,552,974 45,822,988 46,073,347 46,311,664 46,515,558 46,481,953 46,102,575 46,822,377 47,177,061 47,456,931 47,711,523 47,952,841 48,171,547 48,233,603 47,732,750 48,373,053 48,788,182 49,082,392 49,343,860 188,781,544 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 94fb1c157..77b07ac7d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-27 - Simulation Time: 12:05 - Calculation Time: 2.070 sec + Simulation Date: 2026-03-28 + Simulation Time: 09:54 + Calculation Time: 1.806 sec ***SUMMARY OF RESULTS*** @@ -240,11 +240,17 @@ Electricity to grid (kWh) 0.0 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 +Heat provided (MW) 0 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 + 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 + +Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 + 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 122,166,666 Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 From 23ff8b8e0ea05de159f9d61aedd86a68a2ddbaa3 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:13:54 -0700 Subject: [PATCH 016/127] round revenue USD to match SAM convention --- src/geophires_x/EconomicsSam.py | 9 ++++++--- tests/examples/example14_data-center.out | 11 +++++++---- tests/examples/example_SAM-single-owner-PPA-3.out | 15 +++++++++------ ...mple_SAM-single-owner-PPA-6_carbon-revenue.out | 6 +++--- .../example_SAM-single-owner-PPA-7_chp.out | 6 +++--- .../example_SAM-single-owner-PPA-8_heat.out | 6 +++--- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 47307a5f5..eb689f047 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1139,7 +1139,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: add_on_profit_per_year_usd = np.sum( model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude ) - add_on_profit_usd_series = [add_on_profit_per_year_usd] * model.surfaceplant.plant_lifetime.value + add_on_profit_usd_series = [round(add_on_profit_per_year_usd)] * model.surfaceplant.plant_lifetime.value add_on_source = CapacityPaymentRevenueSource(name='Add-On Profit', revenue_usd=add_on_profit_usd_series) ret.append(add_on_source) @@ -1149,7 +1149,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: ) carbon_revenue_source = CapacityPaymentRevenueSource( name='Carbon credits', # TODO/WIP naming re: https://github.com/NatLabRockies/GEOPHIRES-X/issues/476 - revenue_usd=carbon_revenue_usd_series, + revenue_usd=[round(it) for it in carbon_revenue_usd_series], price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits.value})', price=econ.CarbonPrice.value, # FIXME WIP amount @@ -1157,7 +1157,10 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: ret.append(carbon_revenue_source) def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[float]: - return econ_revenue_output.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] + return [ + round(it) + for it in econ_revenue_output.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] + ] if has_heat_revenue: ret.append( diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 23c5486de..16e4e5fdc 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.26 - Simulation Date: 2026-03-21 - Simulation Time: 09:40 - Calculation Time: 1.812 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-03-29 + Simulation Time: 07:11 + Calculation Time: 1.794 sec ***SUMMARY OF RESULTS*** @@ -250,7 +250,10 @@ 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 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 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 + +Add-On Profit revenue ($) 0 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 Capacity payment revenue ($) 0 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 + 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 4,107,414,615 Total revenue ($) 0 870,392,227 877,268,826 884,003,578 889,893,776 895,386,486 900,450,518 904,477,860 905,874,327 901,729,609 887,915,445 859,804,459 856,756,018 925,104,543 933,787,961 940,277,149 946,114,617 951,569,867 956,439,430 959,773,682 959,425,180 951,813,801 932,245,306 895,895,544 938,226,399 982,728,739 990,424,915 996,709,943 1,002,450,286 1,007,769,433 5,119,705,320 diff --git a/tests/examples/example_SAM-single-owner-PPA-3.out b/tests/examples/example_SAM-single-owner-PPA-3.out index 87eefbeab..50b80b6eb 100644 --- a/tests/examples/example_SAM-single-owner-PPA-3.out +++ b/tests/examples/example_SAM-single-owner-PPA-3.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:19 - Calculation Time: 1.206 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-03-29 + Simulation Time: 07:11 + Calculation Time: 1.208 sec ***SUMMARY OF RESULTS*** @@ -98,6 +98,7 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 3.89 MUSD Drilling and completion costs: 49.18 MUSD Drilling and completion costs per vertical production well: 3.37 MUSD Drilling and completion costs per vertical injection well: 3.37 MUSD @@ -106,10 +107,9 @@ Simulation Metadata Surface power plant costs: 144.44 MUSD Field gathering system costs: 5.80 MUSD Total surface equipment costs: 150.23 MUSD - Exploration costs: 3.89 MUSD + Total Add-on CAPEX: 50.00 MUSD Overnight Capital Cost: 262.36 MUSD Inflation costs during construction: 13.12 MUSD - Total Add-on CAPEX: 50.00 MUSD Total CAPEX: 275.47 MUSD @@ -225,7 +225,10 @@ REVENUE PPA price (cents/kWh) 0.0 8.0 8.0 8.32 8.64 8.97 9.29 9.61 9.93 10.25 10.58 10.90 11.22 11.54 11.86 12.19 12.51 12.83 13.15 13.47 13.80 PPA revenue ($) 0 36,751,456 36,964,904 38,519,865 40,051,439 41,573,241 43,089,812 44,603,196 46,114,476 47,624,287 49,133,030 50,640,973 52,148,303 53,655,154 55,161,626 56,667,791 58,173,709 59,679,427 61,184,986 62,690,409 64,195,415 Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +Add-On Profit revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 Capacity payment revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 + Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 137,736,712 Total revenue ($) 0 51,751,456 51,964,904 53,519,865 55,051,439 56,573,241 58,089,812 59,603,196 61,114,476 62,624,287 64,133,030 65,640,973 67,148,303 68,655,154 70,161,626 71,667,791 73,173,709 74,679,427 76,184,986 77,690,409 216,932,127 diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index c4e661af9..bdaacd6e3 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-28 - Simulation Time: 09:57 - Calculation Time: 1.786 sec + Simulation Date: 2026-03-29 + Simulation Time: 07:13 + Calculation Time: 1.784 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index a5e2f3514..76203ae63 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-28 - Simulation Time: 09:54 - Calculation Time: 1.774 sec + Simulation Date: 2026-03-29 + Simulation Time: 07:13 + Calculation Time: 1.787 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 77b07ac7d..6ff7663db 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-28 - Simulation Time: 09:54 - Calculation Time: 1.806 sec + Simulation Date: 2026-03-29 + Simulation Time: 07:13 + Calculation Time: 1.789 sec ***SUMMARY OF RESULTS*** From 9b799b6f55eabbe55089a4b919ab0b4472849bbe Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:17:33 -0700 Subject: [PATCH 017/127] use correct HeatkWhProduced output (not HeatProduced) --- src/geophires_x/EconomicsSam.py | 5 +- .../example_SAM-single-owner-PPA-7_chp.out | 6 +- .../example_SAM-single-owner-PPA-8_heat.out | 264 +++++++++--------- 3 files changed, 137 insertions(+), 138 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index eb689f047..5f3545f6c 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1166,12 +1166,11 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl ret.append( CapacityPaymentRevenueSource( name='Heat', - # FIXME WIP amount/price units are pre-existingly incorrect/out-of-sync revenue_usd=_get_revenue_usd_series(econ.HeatRevenue), price_label=f'Heat price ({econ.HeatPrice.CurrentUnits.value})', price=econ.HeatPrice.value, - amount_provided_label=f'Heat provided ({model.surfaceplant.HeatProduced.CurrentUnits.value})', - amount_provided=model.surfaceplant.HeatProduced.value, + amount_provided_label=f'Heat provided ({model.surfaceplant.HeatkWhProduced.CurrentUnits.value})', + amount_provided=model.surfaceplant.HeatkWhProduced.value, ) ) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 76203ae63..dc0ce9083 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:13 - Calculation Time: 1.787 sec + Simulation Time: 07:16 + Calculation Time: 1.891 sec ***SUMMARY OF RESULTS*** @@ -257,7 +257,7 @@ Electricity to grid (kWh) 0.0 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 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 -Heat provided (MW) 0 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.54 48.53 48.53 48.53 48.52 48.52 48.51 48.50 48.49 48.48 48.47 48.46 48.44 48.42 48.40 48.37 48.34 48.31 48.27 48.23 48.19 48.24 48.24 48.32 48.35 48.38 48.39 48.41 48.42 48.43 48.44 48.44 48.45 48.45 48.46 48.46 48.47 48.47 48.47 48.48 48.48 48.48 48.49 48.49 48.49 48.49 48.50 48.50 48.50 48.50 48.50 48.50 48.51 48.51 48.51 48.51 48.51 48.51 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.52 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.53 48.54 48.54 48.54 48.54 48.54 48.54 +Heat provided (kWh) 0 381,460,384 382,187,913 382,409,441 382,540,424 382,631,925 382,694,226 382,631,365 381,765,853 381,029,906 382,099,920 382,366,229 382,512,427 382,611,622 382,682,690 382,677,104 382,146,699 380,838,811 381,982,851 382,316,520 382,481,666 382,589,730 382,667,792 382,696,629 382,392,624 380,884,452 381,807,596 382,258,195 382,447,583 382,566,081 382,647,840 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 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 6ff7663db..d4f368b22 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:13 - Calculation Time: 1.789 sec + Simulation Time: 07:15 + Calculation Time: 1.775 sec ***SUMMARY OF RESULTS*** @@ -215,8 +215,8 @@ Simulation Metadata *************************** * 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] (%) 7.50 52.50 40.0 Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 @@ -236,48 +236,48 @@ Installed cost [construction] ($) -17,035,483 -122,468,085 -104, After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 ENERGY -Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 (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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Heat provided (MW) 0 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 331.10 331.11 331.12 331.12 331.13 331.13 331.13 331.13 331.14 331.13 331.13 331.12 331.11 331.10 331.09 331.06 331.04 331.00 330.96 330.91 330.85 330.77 330.69 330.58 330.46 330.32 330.16 329.97 329.76 329.51 329.23 328.91 328.55 328.14 327.69 327.18 327.77 327.77 328.60 329.02 329.28 329.48 329.63 329.75 329.86 329.94 330.02 330.09 330.15 330.20 330.25 330.30 330.34 330.38 330.41 330.45 330.48 330.51 330.54 330.56 330.59 330.61 330.64 330.66 330.68 330.70 330.72 330.74 330.75 330.77 330.79 330.80 330.82 330.83 330.85 330.86 330.87 330.89 330.90 330.91 330.93 330.94 330.95 330.96 330.97 330.98 330.99 331.00 331.01 331.02 331.03 331.04 331.05 331.06 331.06 331.07 331.08 331.09 331.10 +Heat provided (kWh) 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -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 +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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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 -Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 -Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -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 122,166,666 -Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 +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 122,166,666 +Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 -Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 +Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 OPERATING EXPENSES -O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 -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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 -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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 +O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 +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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 +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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 OPERATING ACTIVITIES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 INVESTING ACTIVITIES Total installed cost ($) -244,333,333 @@ -289,56 +289,56 @@ Total CBI income ($) 0 equals: Purchase of property ($) -244,333,333 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) 82,524,416 Size of debt ($) 161,808,916 minus: -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 equals: -Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 -Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 Pre-tax Returns: Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 -Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 After-tax Returns: -Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 -Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 - -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 -After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,332 41,560,978 52,872,860 62,698,897 71,225,999 78,583,386 84,936,345 90,492,123 95,322,541 99,518,196 103,160,789 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,667 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,934 122,730,709 123,172,775 123,555,130 123,885,478 125,215,669 +Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 + +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 +After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,332 41,560,978 52,872,860 62,698,897 71,225,999 78,583,386 84,936,345 90,492,123 95,322,541 99,518,196 103,160,789 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,667 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,934 122,730,709 123,172,775 123,555,130 123,885,478 125,215,669 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 -PPA 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 0 0 -Electricity to 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 +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 +PPA 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 0 0 +Electricity to 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 Present value of annual costs ($) 197,491,957 Present value of annual energy nominal (kWh) 0 @@ -349,37 +349,37 @@ Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) 0.0 PROJECT STATE INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 33,501,056 28,632,328 28,822,579 28,996,490 29,168,970 29,343,568 29,494,166 29,432,083 29,418,827 29,924,073 30,218,990 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +State taxable income ($) 0 33,501,056 28,632,328 28,822,579 28,996,490 29,168,970 29,343,568 29,494,166 29,432,083 29,418,827 29,924,073 30,218,990 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 31,976,758 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,271 28,562,527 28,844,026 29,108,195 29,375,577 29,652,315 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,402 43,297,327 43,437,333 44,264,282 45,005,738 45,720,954 46,463,776 163,854,657 +Federal taxable income ($) 0 31,976,758 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,271 28,562,527 28,844,026 29,108,195 29,375,577 29,652,315 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,402 43,297,327 43,437,333 44,264,282 45,005,738 45,720,954 46,463,776 163,854,657 -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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 CASH INCENTIVES Federal IBI income ($) 0 @@ -394,68 +394,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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 -Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +Debt balance ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 -DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 +Cash available for debt service (CAFDS) ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ From 6d95b276e4d13bb7398ba66c369e0cd0fc49f036 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:24:21 -0700 Subject: [PATCH 018/127] example_SAM-single-owner-PPA-9_cooling --- src/geophires_x/EconomicsSam.py | 5 +- ...example_SAM-single-owner-PPA-9_cooling.out | 471 ++++++++++++++++++ ...example_SAM-single-owner-PPA-9_cooling.txt | 111 +++++ 3 files changed, 585 insertions(+), 2 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-9_cooling.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-9_cooling.txt diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 5f3545f6c..a2e9d16b4 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1179,9 +1179,10 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl CapacityPaymentRevenueSource( name='Cooling', revenue_usd=_get_revenue_usd_series(econ.CoolingRevenue), - price_label=f'Cooling price ({econ.HeatPrice.CurrentUnits.value})', + price_label=f'Cooling price ({econ.CoolingPrice.CurrentUnits.value})', price=econ.CoolingPrice.value, - # FIXME WIP amount + amount_provided_label=f'Cooling provided ({model.surfaceplant.cooling_kWh_Produced.CurrentUnits.value})', + amount_provided=model.surfaceplant.cooling_kWh_Produced.value, ) ) diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out new file mode 100644 index 000000000..dad613c67 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -0,0 +1,471 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-03-29 + Simulation Time: 07:23 + Calculation Time: 1.776 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Direct-Use Heat + Surface Application: Absorption Chiller + Average Direct-Use Heat Production: 367.18 MW + Average Cooling Production: 237.93 MW + Direct-Use Cooling Breakeven Price (LCOC): 0.00 USD/MMBTU + Total CAPEX: 248.47 MUSD + Total CAPEX ($/kW): inf USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 74.54 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 339.58 MUSD + After-tax IRR: 71.91 % + Project VIR=PI=PIR: 5.72 + Project MOIC: 26.65 + Project Payback Period: 3.57 yr + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + 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.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.4 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 367.18 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -1925.9 kPa + Average Production Well Pump Pressure Drop: 9514.6 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 122.21 MUSD + of which Absorption Chiller Cost: 3.74 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 125.41 MUSD + Overnight Capital Cost: 224.91 MUSD + Inflation costs during construction: 14.40 MUSD + Interest during construction: 9.15 MUSD + Total CAPEX: 248.47 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.11 MUSD/yr + Power plant maintenance costs: 3.62 MUSD/yr + Water costs: 0.16 MUSD/yr + Average Reservoir Pumping Cost: 4.49 MUSD/yr + Absorption Chiller O&M Cost: 0.07 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 18.92 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + + Maximum Net Heat Production: 367.93 MW + Average Net Heat Production: 367.18 MW + Minimum Net Heat Production: 363.53 MW + Initial Net Heat Production: 364.19 MW + Average Annual Heat Production: 2894.87 GWh + Maximum Cooling Production: 238.42 MW + Average Cooling Production: 237.93 MW + Minimum Cooling Production: 235.57 MW + Initial Cooling Production: 235.99 MW + Average Annual Cooling Production: 1875.87 GWh/year + Average Pumping Power: 8.14 MW + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET + DRAWDOWN TEMPERATURE POWER HEAT COOLING + (deg C) (MWe) (MWt) (MWt) + 0 1.0000 201.65 8.1512 364.1877 235.9936 + 1 1.0052 202.70 8.1476 366.8301 237.7059 + 2 1.0062 202.90 8.1469 367.3208 238.0238 + 3 1.0067 203.00 8.1466 367.5759 238.1892 + 4 1.0070 203.06 8.1463 367.7447 238.2986 + 5 1.0073 203.11 8.1462 367.8679 238.3784 + 6 1.0074 203.14 8.1463 367.9263 238.4162 + 7 1.0066 202.98 8.1488 367.5271 238.1575 + 8 1.0008 201.81 8.1651 364.6023 236.2623 + 9 1.0048 202.61 8.1453 366.6030 237.5588 + 10 1.0060 202.86 8.1444 367.2319 237.9663 + 11 1.0066 202.98 8.1429 367.5230 238.1549 + 12 1.0070 203.05 8.1409 367.7077 238.2746 + 13 1.0072 203.10 8.1389 367.8406 238.3607 + 14 1.0074 203.14 8.1373 367.9257 238.4158 + 15 1.0070 203.06 8.1377 367.7338 238.2915 + 16 1.0032 202.29 8.1481 365.8081 237.0437 + 17 1.0041 202.47 8.1350 366.2557 237.3337 + 18 1.0058 202.82 8.1348 367.1261 237.8977 + 19 1.0065 202.95 8.1348 367.4638 238.1166 + 20 1.0069 203.03 8.1348 367.6676 238.2486 + 21 1.0072 203.09 8.1348 367.8109 238.3415 + 22 1.0074 203.13 8.1348 367.9126 238.4074 + 23 1.0072 203.11 8.1357 367.8489 238.3661 + 24 1.0048 202.62 8.1429 366.6355 237.5798 + 25 1.0027 202.20 8.1348 365.5740 236.8920 + 26 1.0055 202.77 8.1348 366.9963 237.8136 + 27 1.0063 202.93 8.1348 367.3971 238.0733 + 28 1.0068 203.02 8.1349 367.6239 238.2203 + 29 1.0071 203.08 8.1349 367.7790 238.3208 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR COOLING HEAT RESERVOIR PERCENTAGE OF + PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (10^15 J) (%) + 1 1869.6 2885.2 137.45 7.03 + 2 1875.5 2894.3 127.03 14.07 + 3 1877.3 2897.0 116.60 21.13 + 4 1878.3 2898.7 106.17 28.19 + 5 1879.1 2899.8 95.73 35.25 + 6 1879.6 2900.6 85.29 42.31 + 7 1879.1 2899.8 74.85 49.37 + 8 1872.1 2889.0 64.45 56.41 + 9 1866.2 2879.9 54.08 63.42 + 10 1874.8 2893.2 43.66 70.47 + 11 1876.9 2896.5 33.24 77.52 + 12 1878.1 2898.3 22.80 84.58 + 13 1878.9 2899.6 12.36 91.64 + 14 1879.5 2900.4 1.92 98.70 + 15 1879.4 2900.4 -8.52 105.76 + 16 1875.2 2893.8 -18.94 112.81 + 17 1864.6 2877.5 -29.30 119.82 + 18 1873.8 2891.7 -39.71 126.86 + 19 1876.5 2895.9 -50.13 133.91 + 20 1877.9 2897.9 -60.56 140.97 + 21 1878.7 2899.3 -71.00 148.03 + 22 1879.4 2900.3 -81.44 155.09 + 23 1879.6 2900.6 -91.89 162.15 + 24 1877.1 2896.8 -102.31 169.21 + 25 1865.0 2878.1 -112.68 176.22 + 26 1872.4 2889.6 -123.08 183.25 + 27 1876.1 2895.2 -133.50 190.30 + 28 1877.6 2897.5 -143.93 197.36 + 29 1878.5 2899.0 -154.37 204.42 + 30 1879.2 2900.0 -164.81 211.48 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -16,868,117 -118,076,819 -89,963,291 +plus: +Inflation cost [construction] ($) -455,439 -6,462,226 -7,485,547 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -17,323,556 -124,539,045 -97,448,838 + +Issuance of equity [construction] ($) 17,323,556 37,361,714 29,234,651 +Issuance of debt [construction] ($) 0 87,177,332 68,214,186 +Debt balance [construction] ($) 0 87,177,332 164,545,138 +Debt interest payment [construction] ($) 0 0 9,153,620 + +Installed cost [construction] ($) -17,323,556 -124,539,045 -106,602,458 +After-tax net cash flow [construction] ($) -17,323,556 -37,361,714 -29,234,651 + +ENERGY +Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + +Cooling provided (kWh/yr) 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 + +REVENUE +PPA price (cents/kWh) 0.0 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 +PPA 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 +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 + +Cooling price (USD/kWh) 0.0 0.0 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 +Cooling revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 +Capacity payment revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 + +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 124,232,530 +Total revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 247,320,422 + +Property tax net assessed value ($) 0 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 +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 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 +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 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 + +EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 + +OPERATING ACTIVITIES +EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +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 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 +Cash flow from operating activities ($) 0 95,970,911 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,287 96,994,864 97,768,823 98,133,480 98,450,468 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,491 101,565,482 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 + +INVESTING ACTIVITIES +Total installed cost ($) -248,465,059 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -248,465,059 +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 +equals: +Cash flow from investing activities ($) -248,465,059 0 0 0 0 0 0 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 ($) 83,919,921 +Size of debt ($) 164,545,138 +minus: +Debt principal payment ($) 0 1,741,941 1,863,877 1,994,349 2,133,953 2,283,330 2,443,163 2,614,184 2,797,177 2,992,979 3,202,488 3,426,662 3,666,528 3,923,185 4,197,808 4,491,655 4,806,071 5,142,496 5,502,470 5,887,643 6,299,778 6,740,763 7,212,616 7,717,499 8,257,724 8,835,765 9,454,269 10,116,067 10,824,192 11,581,886 12,392,618 +equals: +Cash flow from financing activities ($) 248,465,059 -1,741,941 -1,863,877 -1,994,349 -2,133,953 -2,283,330 -2,443,163 -2,614,184 -2,797,177 -2,992,979 -3,202,488 -3,426,662 -3,666,528 -3,923,185 -4,197,808 -4,491,655 -4,806,071 -5,142,496 -5,502,470 -5,887,643 -6,299,778 -6,740,763 -7,212,616 -7,717,499 -8,257,724 -8,835,765 -9,454,269 -10,116,067 -10,824,192 -11,581,886 -12,392,618 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 95,970,911 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,287 96,994,864 97,768,823 98,133,480 98,450,468 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,491 101,565,482 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 +Cash flow from investing activities ($) -248,465,059 0 0 0 0 0 0 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 ($) 248,465,059 -1,741,941 -1,863,877 -1,994,349 -2,133,953 -2,283,330 -2,443,163 -2,614,184 -2,797,177 -2,992,979 -3,202,488 -3,426,662 -3,666,528 -3,923,185 -4,197,808 -4,491,655 -4,806,071 -5,142,496 -5,502,470 -5,887,643 -6,299,778 -6,740,763 -7,212,616 -7,717,499 -8,257,724 -8,835,765 -9,454,269 -10,116,067 -10,824,192 -11,581,886 -12,392,618 +Total pre-tax cash flow ($) 0 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 + +Pre-tax Returns: +Issuance of equity ($) 83,919,921 +Total pre-tax cash flow ($) 0 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 +Total pre-tax returns ($) -83,919,921 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 + +After-tax Returns: +Total pre-tax returns ($) -83,919,921 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 +Federal ITC total income ($) 0 74,539,518 0 0 0 0 0 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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,054 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,749 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,766 -21,326,171 -46,399,113 +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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 +Total after-tax returns ($) -83,919,921 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,704 73,168,500 73,167,661 73,143,995 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,495 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 + +After-tax net cash flow ($) -17,323,556 -37,361,714 -29,234,651 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,704 73,168,500 73,167,661 73,143,995 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,495 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 +After-tax cumulative IRR (%) NaN NaN NaN 33.33 53.09 62.22 66.72 69.05 70.31 71.00 71.39 71.61 71.73 71.81 71.85 71.87 71.89 71.90 71.90 71.90 71.90 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 +After-tax cumulative NPV ($) -17,323,556 -49,805,224 -71,901,597 24,340,252 66,318,730 102,841,965 134,602,345 162,214,176 186,214,713 207,061,362 225,089,075 240,688,971 254,321,014 266,180,725 276,491,246 285,452,147 293,238,427 300,000,794 305,856,676 310,905,484 315,317,138 319,154,568 322,489,127 325,333,602 327,758,450 329,863,167 331,686,307 333,254,365 334,621,881 335,811,061 336,843,432 337,739,141 339,578,656 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -17,323,556 -37,361,714 -29,234,651 24,001,993 -49,363,343 -49,424,173 -49,475,502 -49,524,112 -49,571,505 -49,605,411 -49,538,126 -49,490,800 -49,681,152 -49,770,837 -49,848,799 -49,924,792 -50,001,554 -50,073,100 -50,081,614 -49,994,670 -50,231,632 -50,369,654 -50,492,442 -51,913,481 -53,338,220 -53,466,135 -53,559,559 -53,506,054 -53,777,941 -53,999,168 -54,197,899 -54,399,624 39,068,533 +PPA 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 0 0 +Electricity to 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 + +Present value of annual costs ($) 269,177,011 +Present value of annual energy nominal (kWh) 0 +LCOE Levelized cost of energy nominal (cents/kWh) 0.0 + +Present value of PPA revenue ($) 0 +Present value of annual energy nominal (kWh) 0 +LPPA Levelized PPA price nominal (cents/kWh) 0.0 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +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 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 +Total state tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 90,691,028 85,916,865 86,164,196 86,372,896 86,570,542 86,763,240 86,901,101 86,627,522 86,435,099 87,209,058 87,573,715 87,890,703 88,199,687 88,511,800 88,802,700 88,837,318 88,483,810 89,447,285 90,008,474 90,507,726 96,285,599 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 + +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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 +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 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 +Total federal tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 86,564,587 82,007,648 82,243,725 82,442,930 82,631,582 82,815,512 82,947,101 82,685,969 82,502,302 83,241,046 83,589,111 83,891,676 84,186,601 84,484,513 84,762,177 84,795,220 84,457,797 85,377,434 85,913,088 86,389,625 91,904,604 97,433,941 97,930,372 98,292,946 98,085,299 99,140,477 99,999,048 100,770,312 101,553,196 220,948,156 + +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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,054 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,749 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,766 -21,326,171 -46,399,113 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 74,539,518 0 0 0 0 0 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 74,539,518 0 0 0 0 0 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 ($) 164,545,138 162,803,197 160,939,320 158,944,971 156,811,018 154,527,689 152,084,526 149,470,342 146,673,165 143,680,186 140,477,698 137,051,036 133,384,507 129,461,322 125,263,514 120,771,859 115,965,788 110,823,292 105,320,822 99,433,178 93,133,400 86,392,637 79,180,021 71,462,521 63,204,797 54,369,032 44,914,763 34,798,696 23,974,503 12,392,618 0 +Debt interest payment ($) 0 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 +Debt principal payment ($) 0 1,741,941 1,863,877 1,994,349 2,133,953 2,283,330 2,443,163 2,614,184 2,797,177 2,992,979 3,202,488 3,426,662 3,666,528 3,923,185 4,197,808 4,491,655 4,806,071 5,142,496 5,502,470 5,887,643 6,299,778 6,740,763 7,212,616 7,717,499 8,257,724 8,835,765 9,454,269 10,116,067 10,824,192 11,581,886 12,392,618 +Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +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 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 +DSCR (pre-tax) 0.0 8.11 8.14 8.14 8.15 8.15 8.16 8.15 8.12 8.09 8.13 8.14 8.15 8.15 8.15 8.15 8.13 8.08 8.13 8.14 8.15 8.15 8.15 8.16 8.14 8.08 8.12 8.14 8.15 8.15 17.52 + +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 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 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 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 +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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt new file mode 100644 index 000000000..a3d9576c6 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt @@ -0,0 +1,111 @@ +# Example: SAM Single Owner PPA Economic Model: Cooling +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Cooling Sale Price,0.0655 +Ending Cooling Sale Price,0.0655 +Electricity Rate, .07, -- [$/kWh] +Absorption Chiller Capital Cost, 3.74, -- [$M] +Absorption Chiller O&M Cost, 0.065, -- [$M/year] + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 2, -- Direct-Use Heat +Power Plant Type, 5, -- Absorption Chiller +Absorption Chiller COP, 0.72 + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From ded34de42f4114b458e5b16bf4ce8880524e1612 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:31:46 -0700 Subject: [PATCH 019/127] include saved carbon production line item --- src/geophires_x/EconomicsSam.py | 3 ++- .../example_SAM-single-owner-PPA-6_carbon-revenue.out | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index a2e9d16b4..4625d4838 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1152,7 +1152,8 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: revenue_usd=[round(it) for it in carbon_revenue_usd_series], price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits.value})', price=econ.CarbonPrice.value, - # FIXME WIP amount + amount_provided_label=f'Saved Carbon Production ({econ.CarbonThatWouldHaveBeenProducedAnnually.CurrentUnits.value})', + amount_provided=econ.CarbonThatWouldHaveBeenProducedAnnually.value[_pre_revenue_years_count(model) :], ) ret.append(carbon_revenue_source) diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index bdaacd6e3..8b3f24c9a 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:13 - Calculation Time: 1.784 sec + Simulation Time: 07:31 + Calculation Time: 1.937 sec ***SUMMARY OF RESULTS*** @@ -251,6 +251,8 @@ Electricity to grid (kWh) 0.0 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 404,102,612 406,703,974 407,497,016 407,966,078 408,293,813 408,516,604 408,285,278 405,141,270 402,559,967 406,408,644 407,366,910 407,901,883 408,271,494 408,539,500 408,526,511 406,603,933.0 401,930,875 406,070,808 407,260,064 407,848,815 408,234,029 408,512,178 408,612,585 407,504,360 402,075,545 405,447,434 407,051,915 407,726,696 408,148,995 408,440,373 +Saved Carbon Production (pound) 0 379,490,699 381,933,624 382,678,366 383,118,860 383,426,634 383,635,856 383,418,619 380,466,097 378,042,009 381,656,282 382,556,185 383,058,575 383,405,674 383,657,358 383,645,160 381,839,677 377,451,232 381,339,021 382,455,846 383,008,739 383,370,492 383,631,700 383,725,992 382,685,263 377,587,091 380,753,614 382,260,374 382,894,058 383,290,636 383,564,268 + 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 38,389,748 38,636,878 38,944,490 39,221,859 39,486,095 39,740,495 39,950,714 39,874,004 39,849,411 40,462,045 40,789,649 41,075,720 41,345,654 41,605,663 41,837,200 41,872,073 41,619,942 42,280,092 42,636,056 42,930,166 43,203,407 43,465,696 43,709,288 43,823,019 43,468,387 44,064,027 44,470,422 44,776,546 45,055,568 45,320,544 From 5d585be778e3780b199e31112d8adc1a1cc48e47 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:34:25 -0700 Subject: [PATCH 020/127] update calculate_cashflow docstring --- src/geophires_x/Economics.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index e9dc5de93..b13b427b4 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3535,22 +3535,26 @@ def calculate_cashflow(self, model: Model) -> None: """ Calculate cashflow and cumulative cash flow - Note that these calculations are irrelevant and ignored for SAM economic models, except for - heat and carbon revenue calculations. + Note that for SAM economic models, electricity revenue calculations are irrelevant and ignored. """ total_duration = model.surfaceplant.plant_lifetime.value + model.surfaceplant.construction_years.value + self.ElecRevenue.value = [0.0] * total_duration self.ElecCummRevenue.value = [0.0] * total_duration + self.HeatRevenue.value = [0.0] * total_duration self.HeatCummRevenue.value = [0.0] * total_duration + self.CoolingRevenue.value = [0.0] * total_duration self.CoolingCummRevenue.value = [0.0] * total_duration + self.CarbonRevenue.value = [0.0] * total_duration self.CarbonCummCashFlow.value = [0.0] * total_duration + self.CarbonThatWouldHaveBeenProducedTotal.value = 0.0 + self.TotalRevenue.value = [0.0] * total_duration self.TotalCummRevenue.value = [0.0] * total_duration - self.CarbonThatWouldHaveBeenProducedTotal.value = 0.0 # Based on the style of the project, calculate the revenue & cumulative revenue if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY: From fefd7069eaa96b74736caa81559004612078984c Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:42:47 -0700 Subject: [PATCH 021/127] consolidate _get_capacity_payment_parameters and _get_capacity_payment_revenue_sources --- src/geophires_x/EconomicsSam.py | 44 +++-------------- ..._SAM-single-owner-PPA-6_carbon-revenue.out | 44 ++++++++--------- .../example_SAM-single-owner-PPA-7_chp.out | 46 +++++++++--------- .../example_SAM-single-owner-PPA-8_heat.out | 48 +++++++++---------- ...example_SAM-single-owner-PPA-9_cooling.out | 44 ++++++++--------- 5 files changed, 97 insertions(+), 129 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 4625d4838..389c9f573 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -1191,51 +1191,19 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl def _get_capacity_payment_parameters(model: Model) -> dict[str, Any]: - # FIXME WIP TODO consolidate with _get_capacity_payment_revenue_sources - - ret = {} - - econ = model.economics - - def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: - return isinstance(econ_revenue_output.value, Iterable) and any(it > 0 for it in econ_revenue_output.value) + ret: dict[str, Any] = {} - has_heat_revenue = _has_revenue_type(econ.HeatRevenue) - has_cooling_revenue = _has_revenue_type(econ.CoolingRevenue) + capacity_payment_revenue_sources: list[CapacityPaymentRevenueSource] = _get_capacity_payment_revenue_sources(model) - if not ( - econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_revenue or has_cooling_revenue - ): + if len(capacity_payment_revenue_sources) == 0: return ret ret['cp_capacity_payment_type'] = 1 ret['cp_capacity_payment_amount'] = [0.0] * model.surfaceplant.plant_lifetime.value - if econ.DoAddOnCalculations.value: - add_on_profit_per_year_usd = np.sum( - model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude - ) - add_on_profit_usd_series = [add_on_profit_per_year_usd] * model.surfaceplant.plant_lifetime.value - for i, add_on_profit_usd in enumerate(add_on_profit_usd_series): - ret['cp_capacity_payment_amount'][i] += add_on_profit_usd - - if econ.DoCarbonCalculations.value: - carbon_revenue_usd_series = ( - econ.CarbonRevenue.quantity().to('USD/yr').magnitude[_pre_revenue_years_count(model) :] - ) - for i, carbon_revenue_usd in enumerate(carbon_revenue_usd_series): - ret['cp_capacity_payment_amount'][i] += carbon_revenue_usd - - def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[float]: - return econ_revenue_output.quantity().to('USD/year').magnitude[_pre_revenue_years_count(model) :] - - if has_heat_revenue: - for i, heat_revenue_usd in enumerate(_get_revenue_usd_series(econ.HeatRevenue)): - ret['cp_capacity_payment_amount'][i] += heat_revenue_usd - - if has_cooling_revenue: - for i, cooling_revenue_usd in enumerate(_get_revenue_usd_series(econ.CoolingRevenue)): - ret['cp_capacity_payment_amount'][i] += cooling_revenue_usd + for capacity_payment_revenue_source in capacity_payment_revenue_sources: + for i, revenue_usd in enumerate(capacity_payment_revenue_source.revenue_usd): + ret['cp_capacity_payment_amount'][i] += revenue_usd return ret diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index 8b3f24c9a..9f53d4fe1 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:31 - Calculation Time: 1.937 sec + Simulation Time: 07:40 + Calculation Time: 1.794 sec ***SUMMARY OF RESULTS*** @@ -263,7 +263,7 @@ Carbon credits revenue ($) 0 Capacity payment revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 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 137,782,527 -Total revenue ($) 0 46,996,452 47,298,986 47,623,489 47,910,848 48,182,064 48,441,210 48,646,503 48,502,830 48,423,260 49,117,863 49,465,877 49,763,342 50,041,149 50,306,865 50,538,126 50,532,051 50,180,392 50,928,716 51,310,009 51,616,658 51,898,104 52,166,316 52,412,047 52,502,175 52,031,918 52,699,374 53,139,941 53,460,437 53,748,453 191,802,162 +Total revenue ($) 0 46,996,452 47,298,987 47,623,489 47,910,849 48,182,065 48,441,210 48,646,502 48,502,830 48,423,260 49,117,864 49,465,877 49,763,342 50,041,148 50,306,866 50,538,126 50,532,051 50,180,392 50,928,716 51,310,009 51,616,658 51,898,103 52,166,317 52,412,047 52,502,175 52,031,918 52,699,374 53,139,941 53,460,437 53,748,453 191,802,162 Property tax net assessed value ($) 0 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 275,565,055 @@ -277,10 +277,10 @@ Property tax expense ($) 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 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 15,258,469 -EBITDA ($) 0 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +EBITDA ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 OPERATING ACTIVITIES -EBITDA ($) 0 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +EBITDA ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 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 @@ -288,7 +288,7 @@ State PBI income ($) 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 12,774,441 12,639,206 12,494,504 12,339,673 12,174,004 11,996,738 11,807,063 11,604,111 11,386,953 11,154,593 10,905,969 10,639,940 10,355,290 10,050,714 9,724,817 9,376,108 9,002,989 8,603,752 8,176,569 7,719,482 7,230,400 6,707,082 6,147,131 5,547,984 4,906,897 4,220,933 3,486,952 2,701,592 1,861,258 962,099 -Cash flow from operating activities ($) 0 18,963,543 19,401,312 19,870,517 20,312,707 20,749,592 21,186,004 21,580,971 21,640,250 21,777,838 22,704,802 23,301,440 23,864,933 24,427,390 24,997,683 25,554,840 25,897,475 25,918,934 27,066,495 27,874,971 28,638,707 29,409,235 30,200,766 31,006,448 31,695,722 31,866,553 33,219,972 34,394,521 35,500,376 36,628,727 175,581,595 +Cash flow from operating activities ($) 0 18,963,542 19,401,312 19,870,516 20,312,707 20,749,592 21,186,004 21,580,971 21,640,250 21,777,839 22,704,802 23,301,440 23,864,933 24,427,390 24,997,684 25,554,840 25,897,474 25,918,934 27,066,496 27,874,972 28,638,707 29,409,235 30,200,767 31,006,448 31,695,722 31,866,553 33,219,973 34,394,520 35,500,376 36,628,726 175,581,594 INVESTING ACTIVITIES Total installed cost ($) -275,565,055 @@ -322,29 +322,29 @@ Cash flow from financing activities ($) 275 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 18,963,543 19,401,312 19,870,517 20,312,707 20,749,592 21,186,004 21,580,971 21,640,250 21,777,838 22,704,802 23,301,440 23,864,933 24,427,390 24,997,683 25,554,840 25,897,475 25,918,934 27,066,495 27,874,971 28,638,707 29,409,235 30,200,766 31,006,448 31,695,722 31,866,553 33,219,972 34,394,521 35,500,376 36,628,727 175,581,595 +Cash flow from operating activities ($) 0 18,963,542 19,401,312 19,870,516 20,312,707 20,749,592 21,186,004 21,580,971 21,640,250 21,777,839 22,704,802 23,301,440 23,864,933 24,427,390 24,997,684 25,554,840 25,897,474 25,918,934 27,066,496 27,874,972 28,638,707 29,409,235 30,200,767 31,006,448 31,695,722 31,866,553 33,219,973 34,394,520 35,500,376 36,628,726 175,581,594 Cash flow from investing activities ($) -275,565,055 0 0 0 0 0 0 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 ($) 275,565,055 -1,931,934 -2,067,170 -2,211,871 -2,366,702 -2,532,372 -2,709,638 -2,899,312 -3,102,264 -3,319,423 -3,551,782 -3,800,407 -4,066,435 -4,351,086 -4,655,662 -4,981,558 -5,330,267 -5,703,386 -6,102,623 -6,529,807 -6,986,893 -7,475,976 -7,999,294 -8,559,244 -9,158,391 -9,799,479 -10,485,442 -11,219,423 -12,004,783 -12,845,118 -13,744,276 -Total pre-tax cash flow ($) 0 17,031,609 17,334,142 17,658,645 17,946,004 18,217,220 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,305 20,342,021 20,573,282 20,567,207 20,215,548 20,963,872 21,345,165 21,651,814 21,933,260 22,201,472 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 +Total pre-tax cash flow ($) 0 17,031,608 17,334,143 17,658,645 17,946,005 18,217,221 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,304 20,342,022 20,573,282 20,567,207 20,215,548 20,963,873 21,345,165 21,651,814 21,933,259 22,201,473 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 Pre-tax Returns: Issuance of equity ($) 93,073,037 -Total pre-tax cash flow ($) 0 17,031,609 17,334,142 17,658,645 17,946,004 18,217,220 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,305 20,342,021 20,573,282 20,567,207 20,215,548 20,963,872 21,345,165 21,651,814 21,933,260 22,201,472 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 -Total pre-tax returns ($) -93,073,037 17,031,609 17,334,142 17,658,645 17,946,004 18,217,220 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,305 20,342,021 20,573,282 20,567,207 20,215,548 20,963,872 21,345,165 21,651,814 21,933,260 22,201,472 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 +Total pre-tax cash flow ($) 0 17,031,608 17,334,143 17,658,645 17,946,005 18,217,221 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,304 20,342,022 20,573,282 20,567,207 20,215,548 20,963,873 21,345,165 21,651,814 21,933,259 22,201,473 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 +Total pre-tax returns ($) -93,073,037 17,031,608 17,334,143 17,658,645 17,946,005 18,217,221 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,304 20,342,022 20,573,282 20,567,207 20,215,548 20,963,873 21,345,165 21,651,814 21,933,259 22,201,473 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 After-tax Returns: -Total pre-tax returns ($) -93,073,037 17,031,609 17,334,142 17,658,645 17,946,004 18,217,220 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,305 20,342,021 20,573,282 20,567,207 20,215,548 20,963,872 21,345,165 21,651,814 21,933,260 22,201,472 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 +Total pre-tax returns ($) -93,073,037 17,031,608 17,334,143 17,658,645 17,946,005 18,217,221 18,476,366 18,681,659 18,537,986 18,458,416 19,153,020 19,501,033 19,798,498 20,076,304 20,342,022 20,573,282 20,567,207 20,215,548 20,963,873 21,345,165 21,651,814 21,933,259 22,201,473 22,447,203 22,537,331 22,067,074 22,734,530 23,175,097 23,495,593 23,783,609 161,837,318 Federal ITC total income ($) 0 82,669,516 0 0 0 0 0 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,627,390 -1,541,381 -1,635,431 -1,724,066 -1,811,637 -1,899,114 -1,978,283 -1,990,165 -2,017,744 -2,203,549 -2,323,143 -2,436,092 -2,548,834 -2,663,146 -2,774,825 -2,843,505 -2,847,806 -3,077,829 -3,239,884 -3,392,971 -4,721,177 -6,053,593 -6,215,087 -6,353,249 -6,387,491 -6,658,777 -6,894,210 -7,115,873 -7,342,045 -35,194,453 +Federal tax benefit (liability) ($) 0 -2,627,390 -1,541,381 -1,635,431 -1,724,066 -1,811,637 -1,899,114 -1,978,283 -1,990,165 -2,017,744 -2,203,549 -2,323,142 -2,436,092 -2,548,834 -2,663,146 -2,774,825 -2,843,505 -2,847,806 -3,077,829 -3,239,884 -3,392,971 -4,721,177 -6,053,593 -6,215,087 -6,353,249 -6,387,491 -6,658,777 -6,894,210 -7,115,873 -7,342,045 -35,194,453 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 -596,404 -349,886 -371,235 -391,354 -411,233 -431,089 -449,060 -451,757 -458,018 -500,195 -527,342 -552,981 -578,572 -604,521 -629,871 -645,461 -646,438 -698,652 -735,437 -770,187 -1,071,683 -1,374,135 -1,410,793 -1,442,155 -1,449,928 -1,511,509 -1,564,951 -1,615,267 -1,666,607 -7,988,963 -Total after-tax returns ($) -93,073,037 96,477,331 15,442,875 15,651,980 15,830,584 15,994,351 16,146,163 16,254,315 16,096,063 15,982,654 16,449,276 16,650,549 16,809,426 16,948,899 17,074,355 17,168,585 17,078,241 16,721,304 17,187,392 17,369,844 17,488,656 16,140,400 14,773,745 14,821,323 14,741,926 14,229,655 14,564,244 14,715,937 14,764,453 14,774,957 118,653,903 +Total after-tax returns ($) -93,073,037 96,477,330 15,442,875 15,651,979 15,830,585 15,994,351 16,146,163 16,254,315 16,096,063 15,982,654 16,449,276 16,650,549 16,809,425 16,948,898 17,074,355 17,168,585 17,078,241 16,721,304 17,187,392 17,369,844 17,488,656 16,140,399 14,773,745 14,821,323 14,741,927 14,229,655 14,564,244 14,715,937 14,764,453 14,774,957 118,653,903 -After-tax net cash flow ($) -19,213,030 -41,436,742 -32,423,264 96,477,331 15,442,875 15,651,980 15,830,584 15,994,351 16,146,163 16,254,315 16,096,063 15,982,654 16,449,276 16,650,549 16,809,426 16,948,899 17,074,355 17,168,585 17,078,241 16,721,304 17,187,392 17,369,844 17,488,656 16,140,400 14,773,745 14,821,323 14,741,926 14,229,655 14,564,244 14,715,937 14,764,453 14,774,957 118,653,903 +After-tax net cash flow ($) -19,213,030 -41,436,742 -32,423,264 96,477,330 15,442,875 15,651,979 15,830,585 15,994,351 16,146,163 16,254,315 16,096,063 15,982,654 16,449,276 16,650,549 16,809,425 16,948,898 17,074,355 17,168,585 17,078,241 16,721,304 17,187,392 17,369,844 17,488,656 16,140,399 14,773,745 14,821,323 14,741,927 14,229,655 14,564,244 14,715,937 14,764,453 14,774,957 118,653,903 After-tax cumulative IRR (%) NaN NaN NaN 1.95 9.58 15.18 19.10 21.82 23.73 25.08 26.03 26.72 27.24 27.63 27.92 28.14 28.31 28.44 28.54 28.61 28.66 28.71 28.74 28.77 28.78 28.80 28.81 28.82 28.82 28.83 28.83 28.83 28.85 -After-tax cumulative NPV ($) -19,213,030 -55,237,461 -79,743,877 -16,348,166 -7,526,019 247,667 7,083,101 13,087,194 18,356,599 22,968,420 26,938,827 30,366,314 33,433,112 36,131,960 38,500,684 40,577,100 42,395,665 43,985,422 45,360,257 46,530,536 47,576,317 48,495,153 49,299,438 49,944,765 50,458,297 50,906,191 51,293,497 51,618,514 51,907,722 52,161,774 52,383,371 52,576,160 53,922,179 +After-tax cumulative NPV ($) -19,213,030 -55,237,461 -79,743,877 -16,348,166 -7,526,019 247,665 7,083,101 13,087,193 18,356,598 22,968,420 26,938,826 30,366,313 33,433,111 36,131,959 38,500,683 40,577,099 42,395,664 43,985,421 45,360,256 46,530,535 47,576,316 48,495,152 49,299,437 49,944,764 50,458,296 50,906,190 51,293,496 51,618,513 51,907,721 52,161,773 52,383,370 52,576,159 53,922,178 AFTER-TAX LCOE AND PPA PRICE Annual costs ($) -19,213,030 -41,436,742 -32,423,264 49,480,878 -31,856,111 -31,971,510 -32,080,264 -32,187,714 -32,295,047 -32,392,187 -32,406,767 -32,440,606 -32,668,588 -32,815,328 -32,953,916 -33,092,250 -33,232,511 -33,369,541 -33,453,810 -33,459,088 -33,741,325 -33,940,165 -34,128,002 -35,757,704 -37,392,571 -37,590,725 -37,760,248 -37,802,263 -38,135,130 -38,424,004 -38,695,984 -38,973,496 64,634,268 @@ -360,7 +360,7 @@ Present value of annual energy nominal (kWh) 2,015,542,933 LPPA Levelized PPA price nominal (cents/kWh) 9.80 PROJECT STATE INCOME TAXES -EBITDA ($) 0 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +EBITDA ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 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 @@ -369,13 +369,13 @@ minus: Debt interest payment ($) 0 12,774,441 12,639,206 12,494,504 12,339,673 12,174,004 11,996,738 11,807,063 11,604,111 11,386,953 11,154,593 10,905,969 10,639,940 10,355,290 10,050,714 9,724,817 9,376,108 9,002,989 8,603,752 8,176,569 7,719,482 7,230,400 6,707,082 6,147,131 5,547,984 4,906,897 4,220,933 3,486,952 2,701,592 1,861,258 962,099 Total state tax depreciation ($) 0 5,855,757 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 5,855,757 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 13,107,785 7,689,797 8,159,002 8,601,192 9,038,077 9,474,489 9,869,456 9,928,735 10,066,323 10,993,287 11,589,925 12,153,419 12,715,876 13,286,168 13,843,325 14,185,960 14,207,419 15,354,980 16,163,457 16,927,193 23,553,478 30,200,766 31,006,448 31,695,722 31,866,553 33,219,972 34,394,521 35,500,376 36,628,727 175,581,595 +State taxable income ($) 0 13,107,785 7,689,797 8,159,001 8,601,192 9,038,077 9,474,489 9,869,456 9,928,735 10,066,324 10,993,287 11,589,925 12,153,418 12,715,875 13,286,169 13,843,325 14,185,960 14,207,419 15,354,981 16,163,457 16,927,193 23,553,478 30,200,767 31,006,448 31,695,722 31,866,553 33,219,973 34,394,520 35,500,376 36,628,726 175,581,594 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 -596,404 -349,886 -371,235 -391,354 -411,233 -431,089 -449,060 -451,757 -458,018 -500,195 -527,342 -552,981 -578,572 -604,521 -629,871 -645,461 -646,438 -698,652 -735,437 -770,187 -1,071,683 -1,374,135 -1,410,793 -1,442,155 -1,449,928 -1,511,509 -1,564,951 -1,615,267 -1,666,607 -7,988,963 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +EBITDA ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 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 -596,404 -349,886 -371,235 -391,354 -411,233 -431,089 -449,060 -451,757 -458,018 -500,195 -527,342 -552,981 -578,572 -604,521 -629,871 -645,461 -646,438 -698,652 -735,437 -770,187 -1,071,683 -1,374,135 -1,410,793 -1,442,155 -1,449,928 -1,511,509 -1,564,951 -1,615,267 -1,666,607 -7,988,963 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 @@ -387,10 +387,10 @@ minus: Debt interest payment ($) 0 12,774,441 12,639,206 12,494,504 12,339,673 12,174,004 11,996,738 11,807,063 11,604,111 11,386,953 11,154,593 10,905,969 10,639,940 10,355,290 10,050,714 9,724,817 9,376,108 9,002,989 8,603,752 8,176,569 7,719,482 7,230,400 6,707,082 6,147,131 5,547,984 4,906,897 4,220,933 3,486,952 2,701,592 1,861,258 962,099 Total federal tax depreciation ($) 0 5,855,757 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 11,711,515 5,855,757 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 12,511,381 7,339,911 7,787,767 8,209,838 8,626,845 9,043,400 9,420,396 9,476,978 9,608,306 10,493,092 11,062,584 11,600,438 12,137,303 12,681,648 13,213,454 13,540,499 13,560,982 14,656,329 15,428,019 16,157,005 22,481,795 28,826,631 29,595,654 30,253,567 30,416,625 31,708,464 32,829,570 33,885,109 34,962,120 167,592,632 +Federal taxable income ($) 0 12,511,381 7,339,912 7,787,767 8,209,838 8,626,845 9,043,400 9,420,396 9,476,978 9,608,306 10,493,092 11,062,583 11,600,438 12,137,303 12,681,648 13,213,454 13,540,498 13,560,982 14,656,329 15,428,020 16,157,005 22,481,794 28,826,632 29,595,654 30,253,567 30,416,625 31,708,464 32,829,570 33,885,109 34,962,119 167,592,632 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,627,390 -1,541,381 -1,635,431 -1,724,066 -1,811,637 -1,899,114 -1,978,283 -1,990,165 -2,017,744 -2,203,549 -2,323,143 -2,436,092 -2,548,834 -2,663,146 -2,774,825 -2,843,505 -2,847,806 -3,077,829 -3,239,884 -3,392,971 -4,721,177 -6,053,593 -6,215,087 -6,353,249 -6,387,491 -6,658,777 -6,894,210 -7,115,873 -7,342,045 -35,194,453 +Federal tax benefit (liability) ($) 0 -2,627,390 -1,541,381 -1,635,431 -1,724,066 -1,811,637 -1,899,114 -1,978,283 -1,990,165 -2,017,744 -2,203,549 -2,323,142 -2,436,092 -2,548,834 -2,663,146 -2,774,825 -2,843,505 -2,847,806 -3,077,829 -3,239,884 -3,392,971 -4,721,177 -6,053,593 -6,215,087 -6,353,249 -6,387,491 -6,658,777 -6,894,210 -7,115,873 -7,342,045 -35,194,453 CASH INCENTIVES Federal IBI income ($) 0 @@ -430,14 +430,14 @@ Debt principal payment ($) 0 Debt total payment ($) 0 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 DSCR (DEBT FRACTION) -EBITDA ($) 0 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +EBITDA ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 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 31,737,984 32,040,518 32,365,021 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,791 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,583 34,921,923 35,670,247 36,051,540 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,905 37,881,473 38,201,968 38,489,984 176,543,694 +Cash available for debt service (CAFDS) ($) 0 31,737,984 32,040,518 32,365,020 32,652,380 32,923,596 33,182,742 33,388,034 33,244,361 33,164,792 33,859,395 34,207,408 34,504,873 34,782,680 35,048,397 35,279,657 35,273,582 34,921,924 35,670,248 36,051,541 36,358,190 36,639,635 36,907,848 37,153,579 37,243,706 36,773,450 37,440,906 37,881,472 38,201,968 38,489,984 176,543,694 Debt total payment ($) 0 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 14,706,375 DSCR (pre-tax) 0.0 2.16 2.18 2.20 2.22 2.24 2.26 2.27 2.26 2.26 2.30 2.33 2.35 2.37 2.38 2.40 2.40 2.37 2.43 2.45 2.47 2.49 2.51 2.53 2.53 2.50 2.55 2.58 2.60 2.62 12.0 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index dc0ce9083..1576171db 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:16 - Calculation Time: 1.891 sec + Simulation Time: 07:40 + Calculation Time: 1.773 sec ***SUMMARY OF RESULTS*** @@ -269,7 +269,7 @@ Heat revenue ($) 0 Capacity payment revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 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 139,193,200 -Total revenue ($) 0 43,332,898 43,632,777 43,929,426 44,189,281 44,433,142 44,665,029 44,843,279 44,674,459 44,568,044 45,232,461 45,552,974 45,822,988 46,073,347 46,311,664 46,515,558 46,481,953 46,102,575 46,822,377 47,177,061 47,456,931 47,711,523 47,952,841 48,171,547 48,233,603 47,732,750 48,373,053 48,788,182 49,082,392 49,343,860 188,781,544 +Total revenue ($) 0 43,332,899 43,632,777 43,929,426 44,189,282 44,433,142 44,665,029 44,843,279 44,674,459 44,568,044 45,232,461 45,552,975 45,822,988 46,073,347 46,311,664 46,515,558 46,481,953 46,102,575 46,822,377 47,177,061 47,456,931 47,711,523 47,952,841 48,171,547 48,233,604 47,732,750 48,373,053 48,788,182 49,082,392 49,343,860 188,781,544 Property tax net assessed value ($) 0 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 @@ -283,10 +283,10 @@ Property tax expense ($) 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 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 OPERATING ACTIVITIES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 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 @@ -294,7 +294,7 @@ State PBI income ($) 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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,656 16,698,883 17,109,850 17,479,717 17,515,927 17,628,893 18,528,049 19,099,733 19,638,498 20,176,422 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 +Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,657 16,698,883 17,109,850 17,479,717 17,515,926 17,628,894 18,528,049 19,099,733 19,638,499 20,176,423 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 INVESTING ACTIVITIES Total installed cost ($) -278,386,399 @@ -328,32 +328,32 @@ Cash flow from financing activities ($) 278 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,656 16,698,883 17,109,850 17,479,717 17,515,927 17,628,893 18,528,049 19,099,733 19,638,498 20,176,422 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 +Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,657 16,698,883 17,109,850 17,479,717 17,515,926 17,628,894 18,528,049 19,099,733 19,638,499 20,176,423 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 Cash flow from investing activities ($) -278,386,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 ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 -Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 +Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 Pre-tax Returns: Issuance of equity ($) 94,025,956 -Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 -Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 +Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 +Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 After-tax Returns: -Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,721 14,381,900 14,275,485 14,939,902 15,260,416 15,530,429 15,780,788 16,019,106 16,222,999 16,189,395 15,810,017 16,529,818 16,884,503 17,164,372 17,418,965 17,660,282 17,878,989 17,941,045 17,440,192 18,080,494 18,495,623 18,789,833 19,051,301 158,488,985 +Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 Federal ITC total income ($) 0 83,515,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 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,173 -1,139,431 -1,162,074 -1,342,305 -1,456,897 -1,564,889 -1,672,714 -1,782,159 -1,889,021 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,503 +Federal tax benefit (liability) ($) 0 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,172 -1,139,430 -1,162,074 -1,342,305 -1,456,897 -1,564,890 -1,672,714 -1,782,159 -1,889,022 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,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 State tax benefit (liability) ($) 0 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 -Total after-tax returns ($) -94,025,956 94,323,978 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,377 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,084 11,253,012 10,716,055 11,028,442 11,159,105 11,185,822 11,174,191 116,094,467 +Total after-tax returns ($) -94,025,956 94,323,979 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,378 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,085 11,253,012 10,716,055 11,028,442 11,159,105 11,185,823 11,174,191 116,094,467 -After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 94,323,978 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,377 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,084 11,253,012 10,716,055 11,028,442 11,159,105 11,185,822 11,174,191 116,094,467 +After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 94,323,979 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,378 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,085 11,253,012 10,716,055 11,028,442 11,159,105 11,185,823 11,174,191 116,094,467 After-tax cumulative IRR (%) NaN NaN NaN 0.17 6.61 11.59 15.23 17.86 19.76 21.14 22.14 22.87 23.44 23.88 24.21 24.47 24.67 24.83 24.95 25.04 25.11 25.17 25.22 25.25 25.28 25.30 25.31 25.32 25.33 25.34 25.34 25.35 25.39 -After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -18,579,595 -11,464,051 -5,184,672 342,514 5,201,336 9,468,208 13,202,522 16,405,235 19,160,842 21,639,167 23,822,943 25,740,860 27,422,729 28,895,999 30,183,574 31,293,956 32,232,795 33,075,996 33,817,595 34,466,811 34,975,874 35,369,678 35,712,823 36,008,467 36,253,231 36,472,227 36,664,875 36,832,760 36,978,566 38,295,550 +After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -18,579,594 -11,464,051 -5,184,672 342,514 5,201,336 9,468,208 13,202,523 16,405,236 19,160,843 21,639,167 23,822,944 25,740,860 27,422,730 28,895,999 30,183,575 31,293,957 32,232,796 33,075,997 33,817,595 34,466,811 34,975,875 35,369,678 35,712,824 36,008,468 36,253,231 36,472,228 36,664,876 36,832,761 36,978,567 38,295,551 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,991,080 -31,177,255 -31,286,167 -31,388,547 -31,489,686 -31,590,762 -31,681,729 -31,690,634 -31,718,418 -31,939,560 -32,080,163 -32,212,670 -32,344,970 -32,479,259 -32,610,378 -32,688,755 -32,688,155 -32,964,382 -33,157,754 -33,340,156 -34,979,230 -36,623,546 -36,816,463 -36,980,591 -37,016,695 -37,344,611 -37,629,077 -37,896,570 -38,169,668 66,506,122 +Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,991,080 -31,177,255 -31,286,167 -31,388,547 -31,489,686 -31,590,762 -31,681,729 -31,690,634 -31,718,418 -31,939,560 -32,080,163 -32,212,670 -32,344,970 -32,479,258 -32,610,378 -32,688,755 -32,688,155 -32,964,382 -33,157,754 -33,340,156 -34,979,230 -36,623,546 -36,816,463 -36,980,591 -37,016,695 -37,344,611 -37,629,077 -37,896,570 -38,169,668 66,506,122 PPA revenue ($) 0 0 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 Electricity to grid (kWh) 0 0 0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 @@ -366,7 +366,7 @@ Present value of annual energy nominal (kWh) 1,777,787,001 LPPA Levelized PPA price nominal (cents/kWh) 9.80 PROJECT STATE INCOME TAXES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 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 @@ -375,13 +375,13 @@ minus: Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 Total state tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 9,076,343 3,597,130 4,039,963 4,456,234 4,867,461 5,278,428 5,648,295 5,684,505 5,797,471 6,696,627 7,268,311 7,807,076 8,345,000 8,891,012 9,424,139 9,742,813 9,740,374 10,863,500 11,649,742 12,391,378 19,055,771 25,741,476 26,525,866 27,193,203 27,340,001 28,673,291 29,829,916 30,917,526 32,027,932 172,373,981 +State taxable income ($) 0 9,076,343 3,597,130 4,039,963 4,456,235 4,867,461 5,278,428 5,648,295 5,684,504 5,797,472 6,696,627 7,268,311 7,807,077 8,345,001 8,891,012 9,424,139 9,742,813 9,740,374 10,863,500 11,649,742 12,391,378 19,055,771 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 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 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 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 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 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 @@ -393,10 +393,10 @@ minus: Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 Total federal tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 8,663,369 3,433,461 3,856,144 4,253,476 4,645,991 5,038,260 5,391,298 5,425,860 5,533,687 6,391,930 6,937,603 7,451,854 7,965,303 8,486,471 8,995,340 9,299,515 9,297,187 10,369,211 11,119,679 11,827,570 18,188,734 24,570,239 25,318,939 25,955,912 26,096,031 27,368,656 28,472,654 29,510,779 30,570,661 164,530,965 +Federal taxable income ($) 0 8,663,370 3,433,461 3,856,144 4,253,476 4,645,991 5,038,260 5,391,298 5,425,859 5,533,687 6,391,930 6,937,603 7,451,855 7,965,303 8,486,471 8,995,341 9,299,515 9,297,187 10,369,211 11,119,679 11,827,570 18,188,733 24,570,239 25,318,939 25,955,913 26,096,031 27,368,656 28,472,655 29,510,779 30,570,661 164,530,964 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 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,173 -1,139,431 -1,162,074 -1,342,305 -1,456,897 -1,564,889 -1,672,714 -1,782,159 -1,889,021 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,503 +Federal tax benefit (liability) ($) 0 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,172 -1,139,430 -1,162,074 -1,342,305 -1,456,897 -1,564,890 -1,672,714 -1,782,159 -1,889,022 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,503 CASH INCENTIVES Federal IBI income ($) 0 @@ -436,14 +436,14 @@ Debt principal payment ($) 0 Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 DSCR (DEBT FRACTION) -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 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 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,415 29,407,666 29,238,846 29,132,430 29,796,847 30,117,361 30,387,374 30,637,733 30,876,051 31,079,944 31,046,340 30,666,962 31,386,764 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,137 32,937,439 33,352,568 33,646,779 33,908,246 173,345,930 +Cash available for debt service (CAFDS) ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 DSCR (pre-tax) 0.0 1.88 1.90 1.92 1.94 1.95 1.97 1.98 1.97 1.96 2.01 2.03 2.05 2.06 2.08 2.09 2.09 2.06 2.11 2.14 2.16 2.17 2.19 2.20 2.21 2.17 2.22 2.24 2.26 2.28 11.67 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index d4f368b22..16511b6e2 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:15 - Calculation Time: 1.775 sec + Simulation Time: 07:40 + Calculation Time: 1.824 sec ***SUMMARY OF RESULTS*** @@ -266,10 +266,10 @@ Property tax expense ($) 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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 OPERATING ACTIVITIES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 @@ -277,7 +277,7 @@ State PBI income ($) 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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 INVESTING ACTIVITIES Total installed cost ($) -244,333,333 @@ -311,29 +311,29 @@ Cash flow from financing activities ($) 244,3 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,656 39,553,137 39,727,734 39,878,333 39,816,249 39,802,994 40,308,239 40,603,157 40,879,918 41,160,046 41,449,976 41,737,374 41,898,238 41,863,328 42,537,238 43,009,314 43,460,777 43,924,648 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 Pre-tax Returns: Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 -Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 After-tax Returns: -Total pre-tax returns ($) -82,524,416 36,980,165 37,183,612 37,245,561 37,282,189 37,307,777 37,325,199 37,307,620 37,065,587 36,859,785 37,159,006 37,233,477 37,274,360 37,302,099 37,321,973 37,320,411 37,172,087 36,806,347 37,126,268 37,219,576 37,265,758 37,295,977 37,317,807 37,325,871 37,240,858 36,819,110 37,077,260 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +Federal tax benefit (liability) ($) 0 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 +State tax benefit (liability) ($) 0 -1,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,792 30,150,647 30,133,814 30,108,295 30,053,677 29,826,913 29,624,371 29,799,330 29,801,267 29,774,083 29,732,925 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,357 25,317,092 117,258,638 +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,332 41,560,978 52,872,860 62,698,897 71,225,999 78,583,386 84,936,345 90,492,123 95,322,541 99,518,196 103,160,789 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,667 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,934 122,730,709 123,172,775 123,555,130 123,885,478 125,215,669 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 AFTER-TAX LCOE AND PPA PRICE Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 @@ -349,7 +349,7 @@ Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) 0.0 PROJECT STATE INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 @@ -358,15 +358,15 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 33,501,056 28,632,328 28,822,579 28,996,490 29,168,970 29,343,568 29,494,166 29,432,083 29,418,827 29,924,073 30,218,990 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,036 45,361,265 45,507,945 46,374,313 47,151,114 47,900,424 48,678,654 171,665,434 +State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +State tax benefit (liability) ($) 0 -1,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,302 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +State tax benefit (liability) ($) 0 -1,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 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 @@ -376,10 +376,10 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 31,976,758 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,271 28,562,527 28,844,026 29,108,195 29,375,577 29,652,315 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,402 43,297,327 43,437,333 44,264,282 45,005,738 45,720,954 46,463,776 163,854,657 +Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,860 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +Federal tax benefit (liability) ($) 0 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 CASH INCENTIVES Federal IBI income ($) 0 @@ -419,14 +419,14 @@ Debt principal payment ($) 0 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,075 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Cash available for debt service (CAFDS) ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index dad613c67..2470679e8 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:23 - Calculation Time: 1.776 sec + Simulation Time: 07:40 + Calculation Time: 1.819 sec ***SUMMARY OF RESULTS*** @@ -276,10 +276,10 @@ Property tax expense ($) 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 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 -EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 OPERATING ACTIVITIES -EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 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 @@ -287,7 +287,7 @@ State PBI income ($) 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 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 -Cash flow from operating activities ($) 0 95,970,911 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,287 96,994,864 97,768,823 98,133,480 98,450,468 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,491 101,565,482 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 +Cash flow from operating activities ($) 0 95,970,910 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,286 96,994,865 97,768,823 98,133,480 98,450,469 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,492 101,565,481 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 INVESTING ACTIVITIES Total installed cost ($) -248,465,059 @@ -321,32 +321,32 @@ Cash flow from financing activities ($) 248,4 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 95,970,911 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,287 96,994,864 97,768,823 98,133,480 98,450,468 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,491 101,565,482 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 +Cash flow from operating activities ($) 0 95,970,910 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,286 96,994,865 97,768,823 98,133,480 98,450,469 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,492 101,565,481 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 Cash flow from investing activities ($) -248,465,059 0 0 0 0 0 0 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 ($) 248,465,059 -1,741,941 -1,863,877 -1,994,349 -2,133,953 -2,283,330 -2,443,163 -2,614,184 -2,797,177 -2,992,979 -3,202,488 -3,426,662 -3,666,528 -3,923,185 -4,197,808 -4,491,655 -4,806,071 -5,142,496 -5,502,470 -5,887,643 -6,299,778 -6,740,763 -7,212,616 -7,717,499 -8,257,724 -8,835,765 -9,454,269 -10,116,067 -10,824,192 -11,581,886 -12,392,618 -Total pre-tax cash flow ($) 0 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 +Total pre-tax cash flow ($) 0 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 Pre-tax Returns: Issuance of equity ($) 83,919,921 -Total pre-tax cash flow ($) 0 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 -Total pre-tax returns ($) -83,919,921 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 +Total pre-tax cash flow ($) 0 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 +Total pre-tax returns ($) -83,919,921 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 After-tax Returns: -Total pre-tax returns ($) -83,919,921 94,228,970 94,612,753 94,729,613 94,798,708 94,846,977 94,879,842 94,846,682 94,390,110 94,001,885 94,566,335 94,706,818 94,783,940 94,836,267 94,873,756 94,870,810 94,591,012 93,901,079 94,504,580 94,680,596 94,767,713 94,824,719 94,865,898 94,881,109 94,720,741 93,925,155 94,412,130 94,649,828 94,749,734 94,812,243 219,087,902 +Total pre-tax returns ($) -83,919,921 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 Federal ITC total income ($) 0 74,539,518 0 0 0 0 0 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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,054 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,749 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,766 -21,326,171 -46,399,113 +Federal tax benefit (liability) ($) 0 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,053 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,748 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,765 -21,326,171 -46,399,113 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 -Total after-tax returns ($) -83,919,921 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,704 73,168,500 73,167,661 73,143,995 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,495 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 +Total after-tax returns ($) -83,919,921 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,703 73,168,501 73,167,661 73,143,994 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,494 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 -After-tax net cash flow ($) -17,323,556 -37,361,714 -29,234,651 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,704 73,168,500 73,167,661 73,143,995 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,495 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 +After-tax net cash flow ($) -17,323,556 -37,361,714 -29,234,651 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,703 73,168,501 73,167,661 73,143,994 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,494 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 After-tax cumulative IRR (%) NaN NaN NaN 33.33 53.09 62.22 66.72 69.05 70.31 71.00 71.39 71.61 71.73 71.81 71.85 71.87 71.89 71.90 71.90 71.90 71.90 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 -After-tax cumulative NPV ($) -17,323,556 -49,805,224 -71,901,597 24,340,252 66,318,730 102,841,965 134,602,345 162,214,176 186,214,713 207,061,362 225,089,075 240,688,971 254,321,014 266,180,725 276,491,246 285,452,147 293,238,427 300,000,794 305,856,676 310,905,484 315,317,138 319,154,568 322,489,127 325,333,602 327,758,450 329,863,167 331,686,307 333,254,365 334,621,881 335,811,061 336,843,432 337,739,141 339,578,656 +After-tax cumulative NPV ($) -17,323,556 -49,805,224 -71,901,597 24,340,252 66,318,730 102,841,965 134,602,345 162,214,176 186,214,713 207,061,362 225,089,075 240,688,971 254,321,014 266,180,725 276,491,246 285,452,147 293,238,426 300,000,794 305,856,676 310,905,484 315,317,138 319,154,568 322,489,127 325,333,601 327,758,449 329,863,167 331,686,307 333,254,365 334,621,881 335,811,061 336,843,431 337,739,141 339,578,656 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,323,556 -37,361,714 -29,234,651 24,001,993 -49,363,343 -49,424,173 -49,475,502 -49,524,112 -49,571,505 -49,605,411 -49,538,126 -49,490,800 -49,681,152 -49,770,837 -49,848,799 -49,924,792 -50,001,554 -50,073,100 -50,081,614 -49,994,670 -50,231,632 -50,369,654 -50,492,442 -51,913,481 -53,338,220 -53,466,135 -53,559,559 -53,506,054 -53,777,941 -53,999,168 -54,197,899 -54,399,624 39,068,533 +Annual costs ($) -17,323,556 -37,361,714 -29,234,651 24,001,993 -49,363,343 -49,424,173 -49,475,502 -49,524,112 -49,571,505 -49,605,411 -49,538,125 -49,490,800 -49,681,152 -49,770,837 -49,848,799 -49,924,792 -50,001,554 -50,073,100 -50,081,614 -49,994,670 -50,231,632 -50,369,654 -50,492,443 -51,913,481 -53,338,220 -53,466,135 -53,559,558 -53,506,054 -53,777,941 -53,999,168 -54,197,899 -54,399,624 39,068,534 PPA 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 0 0 Electricity to 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 @@ -359,7 +359,7 @@ Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) 0.0 PROJECT STATE INCOME TAXES -EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 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 @@ -368,13 +368,13 @@ minus: Debt interest payment ($) 0 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 Total state tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 90,691,028 85,916,865 86,164,196 86,372,896 86,570,542 86,763,240 86,901,101 86,627,522 86,435,099 87,209,058 87,573,715 87,890,703 88,199,687 88,511,800 88,802,700 88,837,318 88,483,810 89,447,285 90,008,474 90,507,726 96,285,599 102,078,514 102,598,609 102,978,466 102,760,921 103,866,398 104,765,896 105,573,926 106,394,129 231,480,520 +State taxable income ($) 0 90,691,028 85,916,865 86,164,196 86,372,896 86,570,542 86,763,240 86,901,101 86,627,521 86,435,100 87,209,058 87,573,715 87,890,704 88,199,687 88,511,800 88,802,700 88,837,318 88,483,810 89,447,285 90,008,474 90,507,727 96,285,599 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 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 @@ -386,10 +386,10 @@ minus: Debt interest payment ($) 0 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 Total federal tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 86,564,587 82,007,648 82,243,725 82,442,930 82,631,582 82,815,512 82,947,101 82,685,969 82,502,302 83,241,046 83,589,111 83,891,676 84,186,601 84,484,513 84,762,177 84,795,220 84,457,797 85,377,434 85,913,088 86,389,625 91,904,604 97,433,941 97,930,372 98,292,946 98,085,299 99,140,477 99,999,048 100,770,312 101,553,196 220,948,156 +Federal taxable income ($) 0 86,564,586 82,007,648 82,243,725 82,442,929 82,631,582 82,815,513 82,947,101 82,685,969 82,502,303 83,241,046 83,589,111 83,891,677 84,186,601 84,484,513 84,762,177 84,795,220 84,457,797 85,377,433 85,913,088 86,389,625 91,904,604 97,433,941 97,930,372 98,292,945 98,085,298 99,140,477 99,999,047 100,770,312 101,553,196 220,948,156 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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,054 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,749 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,766 -21,326,171 -46,399,113 +Federal tax benefit (liability) ($) 0 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,053 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,748 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,765 -21,326,171 -46,399,113 CASH INCENTIVES Federal IBI income ($) 0 @@ -429,14 +429,14 @@ Debt principal payment ($) 0 Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 DSCR (DEBT FRACTION) -EBITDA ($) 0 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 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 107,489,070 107,872,854 107,989,714 108,058,809 108,107,078 108,139,943 108,106,783 107,650,211 107,261,986 107,826,436 107,966,919 108,044,041 108,096,368 108,133,857 108,130,911 107,851,113 107,161,180 107,764,681 107,940,696 108,027,814 108,084,820 108,125,998 108,141,210 107,980,842 107,185,256 107,672,231 107,909,929 108,009,835 108,072,344 232,348,003 +Cash available for debt service (CAFDS) ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 DSCR (pre-tax) 0.0 8.11 8.14 8.14 8.15 8.15 8.16 8.15 8.12 8.09 8.13 8.14 8.15 8.15 8.15 8.15 8.13 8.08 8.13 8.14 8.15 8.15 8.15 8.16 8.14 8.08 8.12 8.14 8.15 8.15 17.52 From cb3a41d829151e4e335f161b57cd451794085aa6 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:46:32 -0700 Subject: [PATCH 022/127] render USD prices as $ --- src/geophires_x/EconomicsSam.py | 15 ++++++++------- ...mple_SAM-single-owner-PPA-6_carbon-revenue.out | 6 +++--- .../example_SAM-single-owner-PPA-7_chp.out | 6 +++--- .../example_SAM-single-owner-PPA-8_heat.out | 6 +++--- .../example_SAM-single-owner-PPA-9_cooling.out | 6 +++--- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 389c9f573..2f020c8d9 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -247,8 +247,11 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) + revenue_row_name = 'REVENUE' + capacity_payment_revenue_row_name = 'Capacity payment revenue ($)' + _insert_blank_line_before('Salvage value ($)') - _insert_blank_line_before('Capacity payment revenue ($)') + _insert_blank_line_before(capacity_payment_revenue_row_name) def _for_operational_years(_row: list[Any]) -> list[Any]: return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] @@ -256,16 +259,15 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: if capacity_payment_revenue_source.amount_provided_label is not None: _insert_row_before( - 'REVENUE', + revenue_row_name, capacity_payment_revenue_source.amount_provided_label, _for_operational_years(capacity_payment_revenue_source.amount_provided), ) - # _insert_blank_line_before(capacity_payment_revenue_source.amount_provided_label) - _insert_blank_line_before('REVENUE') + _insert_blank_line_before(revenue_row_name) revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' _insert_row_before( - 'Capacity payment revenue ($)', + capacity_payment_revenue_row_name, revenue_row_name, _for_operational_years(capacity_payment_revenue_source.revenue_usd), ) @@ -273,9 +275,8 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: if capacity_payment_revenue_source.price_label is not None: _insert_row_before( revenue_row_name, - capacity_payment_revenue_source.price_label, + capacity_payment_revenue_source.price_label.replace('USD', '$'), capacity_payment_revenue_source.price, - # _for_operational_years(capacity_payment_revenue_source.price), ) return ret diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index 9f53d4fe1..857af227d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:40 - Calculation Time: 1.794 sec + Simulation Time: 07:45 + Calculation Time: 1.801 sec ***SUMMARY OF RESULTS*** @@ -258,7 +258,7 @@ PPA price (cents/kWh) 0.0 PPA revenue ($) 0 38,389,748 38,636,878 38,944,490 39,221,859 39,486,095 39,740,495 39,950,714 39,874,004 39,849,411 40,462,045 40,789,649 41,075,720 41,345,654 41,605,663 41,837,200 41,872,073 41,619,942 42,280,092 42,636,056 42,930,166 43,203,407 43,465,696 43,709,288 43,823,019 43,468,387 44,064,027 44,470,422 44,776,546 45,055,568 45,320,544 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 -Carbon price (USD/lb) 0.0 0.0 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 +Carbon price ($/lb) 0.0 0.0 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 Carbon credits revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 Capacity payment revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 1576171db..43c50ea76 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:40 - Calculation Time: 1.773 sec + Simulation Time: 07:45 + Calculation Time: 1.772 sec ***SUMMARY OF RESULTS*** @@ -264,7 +264,7 @@ PPA price (cents/kWh) 0.0 PPA revenue ($) 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 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 -Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 Capacity payment revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 16511b6e2..15dceb35c 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:40 - Calculation Time: 1.824 sec + Simulation Time: 07:45 + Calculation Time: 1.781 sec ***SUMMARY OF RESULTS*** @@ -247,7 +247,7 @@ PPA price (cents/kWh) 0.0 PPA 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 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 -Heat price (USD/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 2470679e8..1c92127e0 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:40 - Calculation Time: 1.819 sec + Simulation Time: 07:45 + Calculation Time: 1.776 sec ***SUMMARY OF RESULTS*** @@ -257,7 +257,7 @@ PPA price (cents/kWh) 0.0 PPA 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 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 -Cooling price (USD/kWh) 0.0 0.0 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 +Cooling price ($/kWh) 0.0 0.0 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 Cooling revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 Capacity payment revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 From 1d304bbfd870f381ea7b77b241b93858f6bd0a28 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 07:51:23 -0700 Subject: [PATCH 023/127] remove addressed FIXME WIPs --- src/geophires_x/EconomicsSam.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 2f020c8d9..19f47b1e1 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -232,8 +232,7 @@ def _insert_capacity_payment_line_items(self, cf_ret: list[list[Any]]) -> list[l if len(self.capacity_payment_revenue_sources) == 0: return cf_ret - # FIXME WIP - ret = cf_ret.copy() + ret: list[list[Any]] = cf_ret.copy() def _get_row_index(row_name_: str) -> list[Any]: return [it[0] for it in ret].index(row_name_) @@ -494,13 +493,11 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> EndUseOptions.ELECTRICITY, EndUseOptions.HEAT, ) and not model.surfaceplant.enduse_option.value.name.startswith('COGENERATION'): - # FIXME WIP also support Direct-Use heat (requires getting PySAM to work with zero electricity generation) - raise ValueError( _inv_msg( model.surfaceplant.enduse_option.Name, model.surfaceplant.enduse_option.value.value, - f'{EndUseOptions.ELECTRICITY.value} and Cogeneration End-Use Options', + f'{EndUseOptions.ELECTRICITY.value}, {EndUseOptions.HEAT.value}, ' f'and Cogeneration End-Use Options', ) ) From 797f00ca2762cfbfe67409d968815acaefe22803 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 08:07:42 -0700 Subject: [PATCH 024/127] address backfill_lcoe_nominal FIXME WIP - set LCOE line item to NaN for direct-use heat --- src/geophires_x/EconomicsSam.py | 27 +++++++++++-------- .../example_SAM-single-owner-PPA-7_chp.out | 4 +-- .../example_SAM-single-owner-PPA-8_heat.out | 6 ++--- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 19f47b1e1..b5efa576f 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -409,24 +409,29 @@ def backfill_lcoe_nominal() -> None: lcoe_nominal_backfilled = [] for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): - lcoe_nominal_backfilled.append( - pv_of_annual_costs_backfilled_row_values_usd[_year] - * 100 - / pv_of_electricity_to_grid_backfilled_row_kwh[_year] - ) + entry: float | str = 'NaN' + if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: + entry = ( + pv_of_annual_costs_backfilled_row_values_usd[_year] + * 100 + / pv_of_electricity_to_grid_backfilled_row_kwh[_year] + ) + + lcoe_nominal_backfilled.append(entry) lcoe_nominal_row_name = 'LCOE Levelized cost of energy nominal (cents/kWh)' lcoe_nominal_row_index = _get_row_index(lcoe_nominal_row_name) + + lcoe_nominal_backfilled_entry = lcoe_nominal_backfilled[0] + if isinstance(lcoe_nominal_backfilled_entry, float): + lcoe_nominal_backfilled_entry = round(lcoe_nominal_backfilled_entry, 2) + ret[lcoe_nominal_row_index][1:] = [ - round(lcoe_nominal_backfilled[0], 2), + lcoe_nominal_backfilled_entry, *([None] * (self._pre_revenue_years_count - 1)), ] - try: - backfill_lcoe_nominal() - except ZeroDivisionError: - # FIXME WIP - indicates heat only end-use/surface application - pass + backfill_lcoe_nominal() def backfill_lppa_metrics() -> None: pv_of_ppa_revenue_row_index = _get_row_index_after( diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 43c50ea76..7a984dc44 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:45 - Calculation Time: 1.772 sec + Simulation Time: 07:57 + Calculation Time: 1.767 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 15dceb35c..bb80488c7 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:45 - Calculation Time: 1.781 sec + Simulation Time: 08:06 + Calculation Time: 1.802 sec ***SUMMARY OF RESULTS*** @@ -342,7 +342,7 @@ Electricity to grid (kWh) 0 0 0 Present value of annual costs ($) 197,491,957 Present value of annual energy nominal (kWh) 0 -LCOE Levelized cost of energy nominal (cents/kWh) 0.0 +LCOE Levelized cost of energy nominal (cents/kWh) NaN Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 From 6df5a630d9b9f6718075bfe5e450987ce15fbe1d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 08:11:42 -0700 Subject: [PATCH 025/127] address backfill_lppa_metrics FIXME WIP - set LPPA to NaN for direct-use heat --- src/geophires_x/EconomicsSam.py | 20 +++++++++---------- .../example_SAM-single-owner-PPA-8_heat.out | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index b5efa576f..03c3edca6 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -461,22 +461,22 @@ def backfill_lppa_metrics() -> None: # ] # ret[_get_row_index('PPA price (cents/kWh)')][1:] = ppa_revenue_all_years - # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD - first_year_lppa_cents_per_kwh = ( - first_year_pv_of_ppa_revenue_usd * 100.0 / ret[_get_row_index(pv_of_annual_energy_row_name)][1] - ) + first_year_lppa_cents_per_kwh: float | str = 'NaN' + first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] + + if isinstance(first_year_pv_annual_energy, float) and first_year_pv_annual_energy != 0.0: + # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD + first_year_lppa_cents_per_kwh = round( + first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 + ) lppa_row_name = 'LPPA Levelized PPA price nominal (cents/kWh)' ret[_get_row_index(lppa_row_name)][1:] = [ - round(first_year_lppa_cents_per_kwh, 2), + first_year_lppa_cents_per_kwh, *([None] * self._pre_revenue_years_count), ] - try: - backfill_lppa_metrics() - except ZeroDivisionError: - # FIXME WIP - indicates heat only end-use/surface application - pass + backfill_lppa_metrics() return ret diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index bb80488c7..f64952668 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 08:06 - Calculation Time: 1.802 sec + Simulation Time: 08:11 + Calculation Time: 1.793 sec ***SUMMARY OF RESULTS*** @@ -346,7 +346,7 @@ LCOE Levelized cost of energy nominal (cents/kWh) NaN Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 -LPPA Levelized PPA price nominal (cents/kWh) 0.0 +LPPA Levelized PPA price nominal (cents/kWh) NaN PROJECT STATE INCOME TAXES EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 From bfe567a8fdb9fa88da73cb637c05f335df4f99cb Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 08:21:22 -0700 Subject: [PATCH 026/127] EndUseOptions is_cogeneration_end_use_option and has_electricity_component --- src/geophires_x/OptionList.py | 8 ++++++++ tests/geophires_x_tests/test_options_list.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/geophires_x/OptionList.py b/src/geophires_x/OptionList.py index 77d84f528..bf4f1957f 100644 --- a/src/geophires_x/OptionList.py +++ b/src/geophires_x/OptionList.py @@ -39,6 +39,14 @@ class EndUseOptions(GeophiresInputEnum): COGENERATION_PARALLEL_EXTRA_HEAT = 51, f'Cogeneration Parallel Cycle, {_EXTRA_HEAT_SNIPPET}' COGENERATION_PARALLEL_EXTRA_ELECTRICITY = 52, f'Cogeneration Parallel Cycle, {_EXTRA_ELECTRICITY_SNIPPET}' + @property + def is_cogeneration_end_use_option(self) -> bool: + return self.name.startswith('COGENERATION') + + @property + def has_electricity_component(self) -> bool: + return self == self.ELECTRICITY or self.is_cogeneration_end_use_option + @staticmethod def from_input_string(input_string: str) -> 'EndUseOptions': """ diff --git a/tests/geophires_x_tests/test_options_list.py b/tests/geophires_x_tests/test_options_list.py index 6bfc28d43..3510a1711 100644 --- a/tests/geophires_x_tests/test_options_list.py +++ b/tests/geophires_x_tests/test_options_list.py @@ -34,6 +34,16 @@ def test_equality(self): self.assertEqual(str(EndUseOptions.HEAT), 'EndUseOptions.HEAT') self.assertEqual(str(EndUseOptions.ELECTRICITY), 'EndUseOptions.ELECTRICITY') + def test_is_cogeneration_and_has_electricity_component(self): + self.assertTrue(EndUseOptions.ELECTRICITY.has_electricity_component) + self.assertFalse(EndUseOptions.ELECTRICITY.is_cogeneration_end_use_option) + + self.assertFalse(EndUseOptions.HEAT.has_electricity_component) + self.assertFalse(EndUseOptions.HEAT.is_cogeneration_end_use_option) + + self.assertTrue(EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY.has_electricity_component) + self.assertTrue(EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY.is_cogeneration_end_use_option) + class WellDrillingCostCorrelationTestCase(BaseTestCase): From 6f149d6b59df400fb2b4726b7bba39d0c5d0820a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 08:39:51 -0700 Subject: [PATCH 027/127] fix backfill_lppa_metrics (error introduced in 6df5a630d9b9f6718075bfe5e450987ce15fbe1d). add SurfacePlant NetElectricityProducedMax derived output parameter --- src/geophires_x/Economics.py | 14 ++------------ src/geophires_x/EconomicsSam.py | 4 +++- src/geophires_x/Outputs.py | 15 ++++++++------- src/geophires_x/SurfacePlant.py | 10 ++++++++++ .../geophires-result.json | 6 +++++- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index b13b427b4..9991f4198 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3640,20 +3640,10 @@ def _calculate_sam_economics(self, model: Model) -> None: self.capex_total.value = (self.sam_economics_calculations.capex.quantity() .to(self.capex_total.CurrentUnits.value).magnitude) - # TODO define this as an output of SurfacePlant rather than calculating it on-demand here and elsewhere - max_net_electricity_generation_kw = quantity( - np.max(model.surfaceplant.NetElectricityProduced.value), - model.surfaceplant.NetElectricityProduced.CurrentUnits - ).to('kW') - try: + if model.surfaceplant.enduse_option.value.has_electricity_component: + max_net_electricity_generation_kw = model.surfaceplant.NetElectricityProducedMax.quantity().to('kW') capex_total_per_kw_q = self.capex_total.quantity().to('USD') / max_net_electricity_generation_kw self.capex_total_per_kw.value = capex_total_per_kw_q.magnitude - except Exception as e: # RuntimeError as re: - # FIXME WIP - if str(e) == 'divide by zero encountered in scalar divide': - self.capex_total_per_kw.value = float('inf') - else: - raise e self.CCap.value = (self.sam_economics_calculations.capex.quantity() .to(self.CCap.CurrentUnits.value).magnitude) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 03c3edca6..7e8a656ed 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -464,7 +464,9 @@ def backfill_lppa_metrics() -> None: first_year_lppa_cents_per_kwh: float | str = 'NaN' first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] - if isinstance(first_year_pv_annual_energy, float) and first_year_pv_annual_energy != 0.0: + if ( + isinstance(first_year_pv_annual_energy, int) or isinstance(first_year_pv_annual_energy, float) + ) and first_year_pv_annual_energy != 0.0: # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD first_year_lppa_cents_per_kwh = round( first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 8f8a390e1..8b67e0c09 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -222,7 +222,8 @@ def PrintOutputs(self, model: Model): if is_sam_econ_model: f.write(f' {Outputs._field_label(econ.capex_total.display_name, 50)}{econ.capex_total.value:10.2f} {econ.capex_total.CurrentUnits.value}\n') - f.write(f' {Outputs._field_label(econ.capex_total_per_kw.display_name, 50)}{econ.capex_total_per_kw.value:10.0f} {econ.capex_total_per_kw.CurrentUnits.value}\n') + if model.surfaceplant.enduse_option.value.has_electricity_component: + f.write(f' {Outputs._field_label(econ.capex_total_per_kw.display_name, 50)}{econ.capex_total_per_kw.value:10.0f} {econ.capex_total_per_kw.CurrentUnits.value}\n') f.write(f' Number of production wells: {model.wellbores.nprod.value:10.0f}'+NL) f.write(f' Number of injection wells: {model.wellbores.ninj.value:10.0f}'+NL) @@ -597,17 +598,17 @@ def PrintOutputs(self, model: Model): else: f.write(f' {econ.Coam.display_name}: {econ.Coam.value:10.2f} {econ.Coam.CurrentUnits.value}\n') - f.write(NL) - f.write(NL) - f.write(' ***SURFACE EQUIPMENT SIMULATION RESULTS***\n') - f.write(NL) - if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: # there is an electricity componenent: + f.write('\n\n ***SURFACE EQUIPMENT SIMULATION RESULTS***\n') + + if model.surfaceplant.enduse_option.value.has_electricity_component: + sp = model.surfaceplant + # FIXME switch to CurrentUnits instead of PreferredUnits f.write(f' Initial geofluid availability: {model.surfaceplant.Availability.value[0]:10.2f} ' + model.surfaceplant.Availability.PreferredUnits.value + NL) f.write(f' Maximum Total Electricity Generation: {np.max(model.surfaceplant.ElectricityProduced.value):10.2f} ' + model.surfaceplant.ElectricityProduced.PreferredUnits.value + NL) f.write(f' Average Total Electricity Generation: {np.average(model.surfaceplant.ElectricityProduced.value):10.2f} ' + model.surfaceplant.ElectricityProduced.PreferredUnits.value + NL) f.write(f' Minimum Total Electricity Generation: {np.min(model.surfaceplant.ElectricityProduced.value):10.2f} ' + model.surfaceplant.ElectricityProduced.PreferredUnits.value + NL) f.write(f' Initial Total Electricity Generation: {model.surfaceplant.ElectricityProduced.value[0]:10.2f} ' + model.surfaceplant.ElectricityProduced.PreferredUnits.value + NL) - f.write(f' Maximum Net Electricity Generation: {np.max(model.surfaceplant.NetElectricityProduced.value):10.2f} ' + model.surfaceplant.NetElectricityProduced.PreferredUnits.value + NL) + f.write(f' {sp.NetElectricityProducedMax.display_name}: {sp.NetElectricityProducedMax.value:10.2f} {sp.NetElectricityProducedMax.CurrentUnits.value}\n') f.write(f' Average Net Electricity Generation: {np.average(model.surfaceplant.NetElectricityProduced.value):10.2f} ' + model.surfaceplant.NetElectricityProduced.PreferredUnits.value + NL) f.write(f' Minimum Net Electricity Generation: {np.min(model.surfaceplant.NetElectricityProduced.value):10.2f} ' + model.surfaceplant.NetElectricityProduced.PreferredUnits.value + NL) f.write(f' Initial Net Electricity Generation: {model.surfaceplant.NetElectricityProduced.value[0]:10.2f} ' + model.surfaceplant.NetElectricityProduced.PreferredUnits.value + NL) diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index 40f213aa6..8b6f9b39f 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -550,6 +550,13 @@ def __init__(self, model: Model): PreferredUnits=PowerUnit.MW, CurrentUnits=PowerUnit.MW ) + self.NetElectricityProducedMax = self.OutputParameterDict[self.NetElectricityProducedMax.Name] = OutputParameter( + Name="Maximum Net Electricity Generation", + UnitType=Units.POWER, + PreferredUnits=PowerUnit.MW, + CurrentUnits=PowerUnit.MW + ) + self.TotalkWhProduced = self.OutputParameterDict[self.TotalkWhProduced.Name] = OutputParameter( Name="Total Electricity Generation", UnitType=Units.ENERGY, @@ -752,3 +759,6 @@ def _calculate_derived_outputs(self, model: Model) -> None: self.heat_to_power_conversion_efficiency.value = avg_efficiency self.enduse_option_output.value = self.enduse_option.value.value + + self.NetElectricityProducedMax.value = np.max(self.NetElectricityProduced.quantity()).to( + self.NetElectricityProducedMax.CurrentUnits).magnitude diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 06eeb8662..83fca79e3 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -565,7 +565,11 @@ "Average Total Electricity Generation": {}, "Minimum Total Electricity Generation": {}, "Initial Total Electricity Generation": {}, - "Maximum Net Electricity Generation": {}, + "Maximum Net Electricity Generation": { + "type": "number", + "description": "", + "units": "MW" + }, "Average Net Electricity Generation": {}, "Minimum Net Electricity Generation": {}, "Initial Net Electricity Generation": {}, From 2f203ed56cefb27409c4e183ebd526c971372599 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 08:49:19 -0700 Subject: [PATCH 028/127] skip calculating SAM-EM LCOE for non-electricity end-use option; regenerate SAM-EM examples 8 & 9 without irrelevant total capex per kw output --- src/geophires_x/Economics.py | 6 +++--- tests/examples/example_SAM-single-owner-PPA-8_heat.out | 6 ++---- .../example_SAM-single-owner-PPA-9_cooling.out | 10 ++++------ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 9991f4198..4e35d7b27 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -491,12 +491,12 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: model.surfaceplant.annual_heating_demand.value * discount_vector) * 1E2 # cents/kWh LCOH = LCOH * 2.931 # $/Million Btu elif econ.econmodel.value == EconomicModel.SAM_SINGLE_OWNER_PPA: - try: + if model.surfaceplant.enduse_option.value.has_electricity_component: # Designated as nominal (as opposed to real) in parameter tooltip text LCOE = econ.sam_economics_calculations.lcoe_nominal.quantity().to( convertible_unit(econ.LCOE.CurrentUnits.value)).magnitude - except ValueError: - # FIXME WIP - indicates heat only end-use/surface application + else: + # FIXME WIP calculate LCOH/LCOC as applicable pass else: # must be BICYCLE diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index f64952668..a98eee7d7 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 08:11 - Calculation Time: 1.793 sec + Simulation Time: 08:47 + Calculation Time: 1.812 sec ***SUMMARY OF RESULTS*** @@ -15,7 +15,6 @@ Simulation Metadata Average Direct-Use Heat Production: 330.46 MW Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU Total CAPEX: 244.33 MUSD - Total CAPEX ($/kW): inf USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec @@ -129,7 +128,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Maximum Net Heat Production: 331.14 MW Average Net Heat Production: 330.46 MW Minimum Net Heat Production: 327.18 MW diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 1c92127e0..e6808c658 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-29 - Simulation Time: 07:45 - Calculation Time: 1.776 sec + Simulation Time: 08:47 + Calculation Time: 1.816 sec ***SUMMARY OF RESULTS*** @@ -17,7 +17,6 @@ Simulation Metadata Average Cooling Production: 237.93 MW Direct-Use Cooling Breakeven Price (LCOC): 0.00 USD/MMBTU Total CAPEX: 248.47 MUSD - Total CAPEX ($/kW): inf USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec @@ -134,7 +133,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Maximum Net Heat Production: 367.93 MW Average Net Heat Production: 367.18 MW Minimum Net Heat Production: 363.53 MW @@ -352,11 +350,11 @@ Electricity to grid (kWh) 0 0 0 Present value of annual costs ($) 269,177,011 Present value of annual energy nominal (kWh) 0 -LCOE Levelized cost of energy nominal (cents/kWh) 0.0 +LCOE Levelized cost of energy nominal (cents/kWh) NaN Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 -LPPA Levelized PPA price nominal (cents/kWh) 0.0 +LPPA Levelized PPA price nominal (cents/kWh) NaN PROJECT STATE INCOME TAXES EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 From b263b7243aa7a5cbfc7892837bbdb0e32665bd9e Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 29 Mar 2026 13:58:27 -0700 Subject: [PATCH 029/127] clean up inaccurate PumpingkWh internal name (no behavioral change) --- src/geophires_x/SUTRAOutputs.py | 2 +- src/geophires_x/SurfacePlant.py | 6 +++--- src/geophires_x/SurfacePlantSUTRA.py | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/geophires_x/SUTRAOutputs.py b/src/geophires_x/SUTRAOutputs.py index 071082420..6c6df708a 100644 --- a/src/geophires_x/SUTRAOutputs.py +++ b/src/geophires_x/SUTRAOutputs.py @@ -147,7 +147,7 @@ def PrintOutputs(self, model: Model): f.write(f" Average Annual Auxiliary Heating Production: {np.average(model.surfaceplant.AnnualAuxiliaryHeatProduced.value):10.2f} " + model.surfaceplant.AnnualAuxiliaryHeatProduced.PreferredUnits.value + NL) f.write(f" Average Annual Total Heating Production: {np.average(model.surfaceplant.AnnualTotalHeatProduced.value):10.2f} " + model.surfaceplant.AnnualTotalHeatProduced.PreferredUnits.value + NL) f.write(f" Average Pumping Power: {np.average(model.wellbores.PumpingPower.value):10.2f} {model.wellbores.PumpingPower.CurrentUnits.value}{NL}") - f.write(f" Average Annual Electricity Use for Pumping: {np.average(model.surfaceplant.PumpingkWh.value):10.2f} " + model.surfaceplant.PumpingkWh.PreferredUnits.value + NL) + f.write(f" Average {model.surfaceplant.PumpingkWh.display_name}: {np.average(model.surfaceplant.PumpingkWh.value):10.2f} {model.surfaceplant.PumpingkWh.CurrentUnits.value}\n") f.write(NL) f.write(NL) f.write(' ***CAPITAL COSTS (M$)***\n') diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index 8b6f9b39f..53885b0c0 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -397,8 +397,8 @@ def __init__(self, model: Model): PreferredUnits=EnergyCostUnit.DOLLARSPERKWH, CurrentUnits=EnergyCostUnit.DOLLARSPERKWH, ErrMessage="assume default electricity rate ($0.07/kWh)", - ToolTipText="Price of electricity to calculate pumping costs in direct-use heat only mode or revenue" + - " from electricity sales in CHP mode." + ToolTipText="Price of electricity to calculate pumping costs in direct-use heat only mode or revenue " + "from electricity sales in CHP mode." ) self.heat_price = self.ParameterDict[self.heat_price.Name] = floatParameter( "Heat Rate", @@ -532,7 +532,7 @@ def __init__(self, model: Model): CurrentUnits=EnergyFrequencyUnit.GWPERYEAR ) self.PumpingkWh = self.OutputParameterDict[self.PumpingkWh.Name] = OutputParameter( - Name="annual electricity production", + Name="Annual Electricity Use for Pumping", UnitType=Units.ENERGYFREQUENCY, PreferredUnits=EnergyFrequencyUnit.KWPERYEAR, CurrentUnits=EnergyFrequencyUnit.KWPERYEAR diff --git a/src/geophires_x/SurfacePlantSUTRA.py b/src/geophires_x/SurfacePlantSUTRA.py index 441e2a6d3..38a872fdb 100644 --- a/src/geophires_x/SurfacePlantSUTRA.py +++ b/src/geophires_x/SurfacePlantSUTRA.py @@ -102,6 +102,7 @@ def __init__(self, model: Model): self.PumpingkWh = self.OutputParameterDict[self.PumpingkWh.Name] = OutputParameter( Name="Annual Pumping Electricity Required", + display_name='Annual Electricity Use for Pumping', UnitType=Units.ENERGYFREQUENCY, PreferredUnits=EnergyFrequencyUnit.KWhPERYEAR, CurrentUnits=EnergyFrequencyUnit.KWhPERYEAR From a89c709807297b4c5070c5aee35207594fe8fd7d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:20:43 -0700 Subject: [PATCH 030/127] chp_percent_cost_allocation_for_electrical_plant derived output param, EndUseOptions.has_direct_use_heat_component --- src/geophires_x/Economics.py | 17 +++++++++++ src/geophires_x/OptionList.py | 4 +++ src/geophires_x/Outputs.py | 28 ++++++++----------- .../geophires-result.json | 6 +++- 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 4e35d7b27..4ab49b6c5 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2155,6 +2155,14 @@ def __init__(self, model: Model): 'included in the base Total CAPEX.', ) + self.chp_percent_cost_allocation_for_electrical_plant = self.OutputParameterDict[self.chp_percent_cost_allocation_for_electrical_plant.Name] = OutputParameter( + Name='CHP: Percent cost allocation for electrical plant', + UnitType=Units.PERCENT, + PreferredUnits=PercentUnit.PERCENT, + CurrentUnits=PercentUnit.PERCENT, + ToolTipText=self.CAPEX_heat_electricity_plant_ratio.ToolTipText, + ) + # noinspection SpellCheckingInspection self.Coam = self.OutputParameterDict[self.Coam.Name] = OutputParameter( Name="Total O&M Cost", @@ -2414,6 +2422,7 @@ def __init__(self, model: Model): self.jobs_created = self.OutputParameterDict[self.jobs_created.Name] = OutputParameter( Name="Estimated Jobs Created", UnitType=Units.NONE, + # TODO tooltip text derived from corresponding input parameter ) # Results for the Royalty Holder @@ -3747,6 +3756,14 @@ def _calculate_derived_outputs(self, model: Model) -> None: (model.wellbores.nprod.value + model.wellbores.ninj.value) ) + if all(hasattr(self, it) for it in ['CAPEX_heat_electricity_plant_ratio', + 'chp_percent_cost_allocation_for_electrical_plant']): + self.chp_percent_cost_allocation_for_electrical_plant.value = ( + self.CAPEX_heat_electricity_plant_ratio.quantity() + .to(convertible_unit(self.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits)).magnitude + ) + + @property def has_production_based_royalties(self): return self.royalty_rate.Provided or self.royalty_rate_schedule.Provided diff --git a/src/geophires_x/OptionList.py b/src/geophires_x/OptionList.py index bf4f1957f..6d0dfc6ce 100644 --- a/src/geophires_x/OptionList.py +++ b/src/geophires_x/OptionList.py @@ -47,6 +47,10 @@ def is_cogeneration_end_use_option(self) -> bool: def has_electricity_component(self) -> bool: return self == self.ELECTRICITY or self.is_cogeneration_end_use_option + @property + def has_direct_use_heat_component(self) -> bool: + return self == self.HEAT or self.is_cogeneration_end_use_option + @staticmethod def from_input_string(input_string: str) -> 'EndUseOptions': """ diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 8b67e0c09..93c35375f 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -190,33 +190,33 @@ def PrintOutputs(self, model: Model): f.write(NL) f.write(f' {model.surfaceplant.enduse_option_output.display_name}: ' f'{model.surfaceplant.enduse_option_output.value}\n') + if model.surfaceplant.plant_type.value in [PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, PlantType.DISTRICT_HEATING]: f.write(' Surface Application: ' + str(model.surfaceplant.plant_type.value.value) + NL) + if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: # there is an electricity component f.write(f' Average Net Electricity Production: {np.average(model.surfaceplant.NetElectricityProduced.value):10.2f} ' + model.surfaceplant.NetElectricityProduced.CurrentUnits.value + NL) - if model.surfaceplant.enduse_option.value is not EndUseOptions.ELECTRICITY: + + if model.surfaceplant.enduse_option.value.has_direct_use_heat_component: # there is a direct-use component - f.write(f' Average Direct-Use Heat Production: {np.average(model.surfaceplant.HeatProduced.value):10.2f} '+ model.surfaceplant.HeatProduced.CurrentUnits.value + NL) + f.write(f' Average Direct-Use Heat Production: {np.average(model.surfaceplant.HeatProduced.value):10.2f} {model.surfaceplant.HeatProduced.CurrentUnits.value}\n') + if model.surfaceplant.plant_type.value == PlantType.DISTRICT_HEATING: f.write(f' Annual District Heating Demand: {np.average(model.surfaceplant.annual_heating_demand.value):10.2f} ' + model.surfaceplant.annual_heating_demand.CurrentUnits.value + NL) f.write(f' Average Annual Geothermal Heat Production: {sum(model.surfaceplant.dh_geothermal_heating.value * 24) / model.surfaceplant.plant_lifetime.value / 1e3:10.2f} ' + model.surfaceplant.annual_heating_demand.CurrentUnits.value + NL) f.write(f' Average Annual Peaking Fuel Heat Production: {sum(model.surfaceplant.dh_natural_gas_heating.value * 24) / model.surfaceplant.plant_lifetime.value / 1e3:10.2f} ' + model.surfaceplant.annual_heating_demand.CurrentUnits.value + NL) + if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' Average Cooling Production: {np.average(model.surfaceplant.cooling_produced.value):10.2f} ' + model.surfaceplant.cooling_produced.CurrentUnits.value + NL) - if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY]: + if model.surfaceplant.enduse_option.value.has_electricity_component: f.write(f' {model.economics.LCOE.display_name}: {model.economics.LCOE.value:10.2f} {model.economics.LCOE.CurrentUnits.value}\n') elif model.surfaceplant.enduse_option.value in [EndUseOptions.HEAT] and \ model.surfaceplant.plant_type.value not in [PlantType.ABSORPTION_CHILLER]: f.write(f' {model.economics.LCOH.display_name}: {model.economics.LCOH.value:10.2f} {model.economics.LCOH.CurrentUnits.value}\n') elif model.surfaceplant.enduse_option.value in [EndUseOptions.HEAT] and model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' {model.economics.LCOC.display_name}: {model.economics.LCOC.value:10.2f} {model.economics.LCOC.CurrentUnits.value}\n') - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, - EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: f.write(f' {model.economics.LCOE.display_name}: {model.economics.LCOE.value:10.2f} {model.economics.LCOE.CurrentUnits.value}\n') f.write(f' {model.economics.LCOH.display_name}: {model.economics.LCOH.value:10.2f} {model.economics.LCOH.CurrentUnits.value}\n') @@ -319,13 +319,8 @@ def PrintOutputs(self, model: Model): project_payback_period_label = Outputs._field_label(model.economics.ProjectPaybackPeriod.display_name, 56) f.write(f' {project_payback_period_label}{project_payback_period_display}\n') - if model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, - EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: - f.write(f' CHP: Percent cost allocation for electrical plant: {model.economics.CAPEX_heat_electricity_plant_ratio.value*100.0:10.2f} %\n') + if model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: + f.write(f' {econ.chp_percent_cost_allocation_for_electrical_plant.display_name}: {econ.chp_percent_cost_allocation_for_electrical_plant.value:10.2f} {econ.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits}\n') if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY]: f.write(f' Estimated Jobs Created: {model.economics.jobs_created.value}\n') @@ -351,6 +346,7 @@ def PrintOutputs(self, model: Model): f.write(f' {model.wellbores.redrill.display_name}: {model.wellbores.redrill.value:10.0f}\n') if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: f.write(' Power plant type: ' + str(model.surfaceplant.plant_type.value.value) + NL) + f.write(NL) f.write(NL) f.write(' ***RESOURCE CHARACTERISTICS***\n') diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 83fca79e3..c02a51b57 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -152,7 +152,11 @@ "description": "The time at which cumulative cash flow reaches zero. For projects that never pay back, the calculated value will be \"N/A\". For SAM Economic Models, this is Simple Payback Period (SPB): the time at which cumulative non-discounted cash flow reaches zero, calculated using non-discounted after-tax net cash flow. See https://samrepo.nrelcloud.org/help/mtf_payback.html for important considerations regarding the limitations of this metric.", "units": "yr" }, - "CHP: Percent cost allocation for electrical plant": {}, + "CHP: Percent cost allocation for electrical plant": { + "type": "number", + "description": "CHP Electrical Plant Cost Allocation Ratio (cost electrical plant/total CAPEX)", + "units": "%" + }, "Estimated Jobs Created": { "type": "number", "description": "", From bf21060ede0e559c5d1e3115405ad5351c75e237 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:30:31 -0700 Subject: [PATCH 031/127] code cleaup during audit of output correctness for SAM-EM + non-electricity end-use --- src/geophires_x/Outputs.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 93c35375f..050fbfe28 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -334,18 +334,21 @@ def PrintOutputs(self, model: Model): f.write(f' Water loss rate: {model.reserv.waterloss.value:10.1f} {model.reserv.waterloss.CurrentUnits.value}\n') f.write(f' Pump efficiency: {model.surfaceplant.pump_efficiency.value:10.1f} ' + model.surfaceplant.pump_efficiency.CurrentUnits.value + NL) f.write(f' Injection temperature: {model.wellbores.Tinj.value:10.1f} ' + model.wellbores.Tinj.CurrentUnits.value + NL) + if model.wellbores.rameyoptionprod.value: f.write(' Production Wellbore heat transmission calculated with Ramey\'s model\n') f.write(f' Average production well temperature drop: {np.average(model.wellbores.ProdTempDrop.value):10.1f} ' + model.wellbores.ProdTempDrop.PreferredUnits.value + NL) else: f.write(' User-provided production well temperature drop\n') f.write(f' Constant production well temperature drop: {model.wellbores.tempdropprod.value:10.1f} ' + model.wellbores.tempdropprod.PreferredUnits.value + NL) + f.write(f' Flowrate per production well: {model.wellbores.prodwellflowrate.value:10.1f} ' + model.wellbores.prodwellflowrate.CurrentUnits.value + NL) f.write(f' {model.wellbores.injection_well_casing_inner_diameter.display_name}: {model.wellbores.injection_well_casing_inner_diameter.value:10.3f} {model.wellbores.injection_well_casing_inner_diameter.CurrentUnits.value}\n') f.write(f' {model.wellbores.production_well_casing_inner_diameter.display_name}: {model.wellbores.production_well_casing_inner_diameter.value:10.3f} {model.wellbores.production_well_casing_inner_diameter.CurrentUnits.value}\n') f.write(f' {model.wellbores.redrill.display_name}: {model.wellbores.redrill.value:10.0f}\n') - if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: - f.write(' Power plant type: ' + str(model.surfaceplant.plant_type.value.value) + NL) + + if model.surfaceplant.enduse_option.value.has_electricity_component: + f.write(f' Power plant type: {str(model.surfaceplant.plant_type.value.value)}\n') f.write(NL) f.write(NL) @@ -439,6 +442,7 @@ def PrintOutputs(self, model: Model): f.write(NL) f.write(' ***RESERVOIR SIMULATION RESULTS***\n') f.write(NL) + # FIXME should be using CurrentUnits instead of PreferredUnits f.write(f' Maximum Production Temperature: {np.max(model.wellbores.ProducedTemperature.value):10.1f} ' + model.wellbores.ProducedTemperature.PreferredUnits.value + NL) f.write(f' Average Production Temperature: {np.average(model.wellbores.ProducedTemperature.value):10.1f} ' + model.wellbores.ProducedTemperature.PreferredUnits.value + NL) f.write(f' Minimum Production Temperature: {np.min(model.wellbores.ProducedTemperature.value):10.1f} ' + model.wellbores.ProducedTemperature.PreferredUnits.value + NL) @@ -567,6 +571,7 @@ def PrintOutputs(self, model: Model): f.write(f' {model.economics.Coamwell.display_name}: {model.economics.Coamwell.value:10.2f} {model.economics.Coamwell.CurrentUnits.value}\n') f.write(f' {model.economics.Coamplant.display_name}: {model.economics.Coamplant.value:10.2f} {model.economics.Coamplant.CurrentUnits.value}\n') f.write(f' {model.economics.Coamwater.display_name}: {model.economics.Coamwater.value:10.2f} {model.economics.Coamwater.CurrentUnits.value}\n') + if model.surfaceplant.plant_type.value in [PlantType.INDUSTRIAL, PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, PlantType.DISTRICT_HEATING]: f.write(f' Average Reservoir Pumping Cost: {model.economics.averageannualpumpingcosts.value:10.2f} {model.economics.averageannualpumpingcosts.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: @@ -615,7 +620,8 @@ def PrintOutputs(self, model: Model): ipp_nip = model.wellbores.PumpingPower.value[0] / model.surfaceplant.NetElectricityProduced.value[0] f.write(f' Initial pumping power/net installed power: {(ipp_nip*100):10.2f} %\n') - if model.surfaceplant.enduse_option.value in [EndUseOptions.HEAT, PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: # geothermal heating component: + if model.surfaceplant.enduse_option.value.has_direct_use_heat_component or model.surfaceplant.plant_type.value in [PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP]: + # FIXME should be CurrentUnits instead of PreferredUnits f.write(f' Maximum Net Heat Production: {np.max(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Average Net Heat Production: {np.average(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Minimum Net Heat Production: {np.min(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) @@ -630,7 +636,9 @@ def PrintOutputs(self, model: Model): f.write(f' Average Annual Heat Production: {avg_annual_heat_production_value:10.2f} {avg_annual_heat_production_display_units.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: + # TODO define dedicated output parameter f.write(f' Average Annual Heat Pump Electricity Use: {np.average(model.surfaceplant.heat_pump_electricity_kwh_used.value / 1E6):10.2f} ' + 'GWh/year' + NL) + if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' Maximum Cooling Production: {np.max(model.surfaceplant.cooling_produced.value):10.2f} ' + model.surfaceplant.cooling_produced.PreferredUnits.value + NL) f.write(f' Average Cooling Production: {np.average(model.surfaceplant.cooling_produced.value):10.2f} ' + model.surfaceplant.cooling_produced.PreferredUnits.value + NL) @@ -661,7 +669,7 @@ def PrintOutputs(self, model: Model): f.write(' ************************************************************\n') f.write(' * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE *\n') f.write(' ************************************************************\n') - if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY: # only electricity + if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY: # only electricity f.write(' YEAR THERMAL GEOFLUID PUMP NET FIRST LAW\n') f.write(' DRAWDOWN TEMPERATURE POWER POWER EFFICIENCY\n') f.write(' (' + model.wellbores.ProducedTemperature.CurrentUnits.value+') (' + model.wellbores.PumpingPower.CurrentUnits.value + ') (' + model.surfaceplant.NetElectricityProduced.CurrentUnits.value + ') (%)\n') @@ -744,7 +752,7 @@ def PrintOutputs(self, model: Model): model.surfaceplant.HeatkWhExtracted.value[i]/1E6, model.surfaceplant.RemainingReservoirHeatContent.value[i], (model.reserv.InitialReservoirHeatContent.value-model.surfaceplant.RemainingReservoirHeatContent.value[i])*100/model.reserv.InitialReservoirHeatContent.value)+NL) - elif model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: # absorption chiller + elif model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: # absorption chiller f.write(' YEAR COOLING HEAT RESERVOIR PERCENTAGE OF\n') f.write(' PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED\n') f.write(' (GWh/year) (GWh/year) (10^15 J) (%)\n') @@ -755,7 +763,7 @@ def PrintOutputs(self, model: Model): model.surfaceplant.RemainingReservoirHeatContent.value[i], (model.reserv.InitialReservoirHeatContent.value-model.surfaceplant.RemainingReservoirHeatContent.value[i]) * 100 / model.reserv.InitialReservoirHeatContent.value)+NL) - elif model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: # heat pump + elif model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: # heat pump f.write(' YEAR HEATING RESERVOIR HEAT HEAT PUMP RESERVOIR PERCENTAGE OF\n') f.write(' PROVIDED EXTRACTED ELECTRICITY USE HEAT CONTENT TOTAL HEAT MINED\n') f.write(' (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%)\n') @@ -766,7 +774,7 @@ def PrintOutputs(self, model: Model): model.surfaceplant.RemainingReservoirHeatContent.value[i], (model.reserv.InitialReservoirHeatContent.value-model.surfaceplant.RemainingReservoirHeatContent.value[i]) * 100 / model.reserv.InitialReservoirHeatContent.value)+NL) - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: #co-gen + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: f.write(' YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF\n') f.write(' PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED\n') f.write(' (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%)\n') @@ -778,7 +786,7 @@ def PrintOutputs(self, model: Model): model.surfaceplant.RemainingReservoirHeatContent.value[i], (model.reserv.InitialReservoirHeatContent.value-model.surfaceplant.RemainingReservoirHeatContent.value[i])*100/model.reserv.InitialReservoirHeatContent.value)+NL) - elif model.surfaceplant.plant_type.value in [PlantType.DISTRICT_HEATING]: # district-heating + elif model.surfaceplant.plant_type.value in [PlantType.DISTRICT_HEATING]: # district-heating f.write(' YEAR GEOTHERMAL PEAKING BOILER RESERVOIR HEAT RESERVOIR PERCENTAGE OF\n') f.write(' HEATING PROVIDED HEATING PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED\n') f.write(' (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%)\n') @@ -789,7 +797,7 @@ def PrintOutputs(self, model: Model): model.surfaceplant.HeatkWhExtracted.value[i] / 1E6, model.surfaceplant.RemainingReservoirHeatContent.value[i], (model.reserv.InitialReservoirHeatContent.value-model.surfaceplant.RemainingReservoirHeatContent.value[i]) * 100 / model.reserv.InitialReservoirHeatContent.value)+NL) - elif model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: # only direct-use + elif model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: # only direct-use f.write(' YEAR HEAT HEAT RESERVOIR PERCENTAGE OF\n') f.write(' PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED\n') f.write(' (GWh/year) (GWh/year) (10^15 J) (%)\n') From d98267e145acddc9d4432f531aaae368f903e5db Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:37:14 -0700 Subject: [PATCH 032/127] log error if economic model is unrecognized in LCOE/LCOH/LCOC calculations --- src/geophires_x/Economics.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 4ab49b6c5..1a9efea5f 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -499,7 +499,13 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: # FIXME WIP calculate LCOH/LCOC as applicable pass else: - # must be BICYCLE + if econ.econmodel.value != EconomicModel.BICYCLE: + model.logger.error( + f'Unrecognized economic model: {econ.econmodel.value}. ' + f'Treating as {EconomicModel.BICYCLE.value} for LCOE/LCOH/LCOC calculations.' + ) + # Error is logged instead of raising an exception for backwards compatibility. + # average return on investment (tax and inflation adjusted) i_ave = econ.FIB.value * econ.BIR.value * (1 - econ.CTR.value) + (1 - econ.FIB.value) * econ.EIR.value # capital recovery factor From 3c7a53c65467cdd09bdd12311ac8100ed077659c Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 08:41:39 -0700 Subject: [PATCH 033/127] minor code cleanup/formatting in CalculateLCOELCOHLCOC --- src/geophires_x/Economics.py | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 1a9efea5f..f8a439c31 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -371,6 +371,7 @@ def CalculateLCOELCOHLCOC(econ, model: Model) -> tuple[float, float, float]: :return: LCOE: The levelized cost of electricity and LCOH: The levelized cost of heat and LCOC: The levelized cost of cooling :rtype: tuple[float, float, float] """ + LCOE = LCOH = LCOC = 0.0 CCap_elec = (econ.CCap.value * econ.CAPEX_heat_electricity_plant_ratio.value) Coam_elec = (econ.Coam.value * econ.CAPEX_heat_electricity_plant_ratio.value) @@ -412,12 +413,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: model.surfaceplant.HeatkWhProduced.value) * 1E8 # cents/kWh LCOH = LCOH * 2.931 # $/Million Btu # co-gen - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, - EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: capex_elec_plus_infl, capex_heat_plus_infl = _construction_inflation_cost_elec_heat() LCOE = (econ.FCR.value * capex_elec_plus_infl + Coam_elec) / np.average(model.surfaceplant.NetkWhProduced.value) * 1E8 # cents/kWh LCOH = (econ.FCR.value * capex_heat_plus_infl + Coam_heat + econ.averageannualpumpingcosts.value) / np.average(model.surfaceplant.HeatkWhProduced.value) * 1E8 # cents/kWh @@ -436,6 +432,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: LCOH = (econ.FCR.value * capex_total_plus_infl + econ.Coam.value + econ.averageannualpumpingcosts.value + econ.averageannualngcost.value) / model.surfaceplant.annual_heating_demand.value * 1E2 # cents/kWh LCOH = LCOH * 2.931 # $/Million Btu + elif econ.econmodel.value == EconomicModel.STANDARDIZED_LEVELIZED_COST: discount_vector = 1. / np.power(1 + econ.discountrate.value, np.linspace(0, model.surfaceplant.plant_lifetime.value - 1, @@ -456,12 +453,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: LCOH = LCOH * 2.931 # $/MMBTU # co-gen - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, - EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: capex_elec_plus_infl, capex_heat_plus_infl = _construction_inflation_cost_elec_heat() LCOE = (capex_elec_plus_infl + np.sum(Coam_elec * discount_vector)) / np.sum(model.surfaceplant.NetkWhProduced.value * discount_vector) * 1E8 # cents/kWh @@ -490,6 +482,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: econ.annualngcost.value) * discount_vector)) / np.sum( model.surfaceplant.annual_heating_demand.value * discount_vector) * 1E2 # cents/kWh LCOH = LCOH * 2.931 # $/Million Btu + elif econ.econmodel.value == EconomicModel.SAM_SINGLE_OWNER_PPA: if model.surfaceplant.enduse_option.value.has_electricity_component: # Designated as nominal (as opposed to real) in parameter tooltip text @@ -498,6 +491,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: else: # FIXME WIP calculate LCOH/LCOC as applicable pass + else: if econ.econmodel.value != EconomicModel.BICYCLE: model.logger.error( @@ -530,12 +524,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: LCOH = (NPV_cap + NPV_oandm + NPV_fc + NPV_it + NPV_grt - NPV_itc) / np.sum(model.surfaceplant.HeatkWhProduced.value * inflation_vector * discount_vector) * 1E8 LCOH = LCOH * 2.931 # $/MMBTU # co-gen - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT, - EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY]: + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: capex_elec_plus_infl, capex_heat_plus_infl = _construction_inflation_cost_elec_heat() NPVcap_elec = np.sum(capex_elec_plus_infl * CRF * discount_vector) From 23cfa719a0abb851ac1771064cab39d7136ba9bc Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:13:00 -0700 Subject: [PATCH 034/127] fix issues in Outputs.py introduced in recent commits --- src/geophires_x/Outputs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 050fbfe28..948c18d38 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -209,7 +209,7 @@ def PrintOutputs(self, model: Model): if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' Average Cooling Production: {np.average(model.surfaceplant.cooling_produced.value):10.2f} ' + model.surfaceplant.cooling_produced.CurrentUnits.value + NL) - if model.surfaceplant.enduse_option.value.has_electricity_component: + if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY]: f.write(f' {model.economics.LCOE.display_name}: {model.economics.LCOE.value:10.2f} {model.economics.LCOE.CurrentUnits.value}\n') elif model.surfaceplant.enduse_option.value in [EndUseOptions.HEAT] and \ model.surfaceplant.plant_type.value not in [PlantType.ABSORPTION_CHILLER]: @@ -320,7 +320,7 @@ def PrintOutputs(self, model: Model): f.write(f' {project_payback_period_label}{project_payback_period_display}\n') if model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: - f.write(f' {econ.chp_percent_cost_allocation_for_electrical_plant.display_name}: {econ.chp_percent_cost_allocation_for_electrical_plant.value:10.2f} {econ.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits}\n') + f.write(f' {econ.chp_percent_cost_allocation_for_electrical_plant.display_name}: {econ.chp_percent_cost_allocation_for_electrical_plant.value:10.2f} {econ.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits.value}\n') if model.surfaceplant.enduse_option.value in [EndUseOptions.ELECTRICITY]: f.write(f' Estimated Jobs Created: {model.economics.jobs_created.value}\n') From 440159205b319a9e2af316519154806047a22d1f Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:46:34 -0700 Subject: [PATCH 035/127] WIP - LCOH calculation in SAM cash flow profile --- src/geophires_x/EconomicsSam.py | 92 ++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 7e8a656ed..bf0138fe5 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -286,8 +286,14 @@ def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any] __row_names: list[str] = [it[0] for it in ret] - def _get_row_index(row_name_: str) -> int: - return __row_names.index(row_name_) + def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) -> int: + try: + return __row_names.index(row_name_) + except ValueError as ve: + if raise_exception_if_not_present: + raise ve + else: + return -1 def _get_row_indexes(row_name_: str, after_row_name: str | None = None) -> list[int]: after_criteria_met: bool = True if after_row_name is None else False @@ -433,6 +439,88 @@ def backfill_lcoe_nominal() -> None: backfill_lcoe_nominal() + def backfill_lcoh_nominal() -> None: + # WIP... + + heat_provided_kwh_row_name = 'Heat provided (kWh)' + heat_provided_kwh_row_index = _get_row_index( + heat_provided_kwh_row_name, raise_exception_if_not_present=False + ) + if heat_provided_kwh_row_index == -1: + return # No heat provided row, nothing to do + + heat_provided = cf_ret[heat_provided_kwh_row_index].copy() + heat_provided_backfilled = [0 if it == '' else (int(it) if is_int(it) else it) for it in heat_provided[1:]] + + # TODO/WIP maybe duplicate heat provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror + # electricity convention + # heat_provided_kwh_row_index = _get_row_index_after( + # heat_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title + # ) + + ret[heat_provided_kwh_row_index][1:] = heat_provided_backfilled + + # fill PV of heat provided + heat_provided_backfilled_pv_processed = heat_provided_backfilled.copy() + pv_of_heat_provided_backfilled_kwh = [] + for year_ in range(self._pre_revenue_years_count): + pv_at_year_ = abs( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + heat_provided_backfilled_pv_processed, + ) + ) + ) + + pv_of_heat_provided_backfilled_kwh.append(pv_at_year_) + + heat_provided_at_year = heat_provided_backfilled_pv_processed.pop(0) + heat_provided_backfilled_pv_processed[0] = ( + heat_provided_backfilled_pv_processed[0] + heat_provided_at_year + ) + + # FIXME WIP TODO + # pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' + # for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): + # ret[pv_of_annual_energy_row_index][1:] = [ + # pv_of_electricity_to_grid_backfilled_kwh[0], + # *([''] * (self._pre_revenue_years_count - 1)), + # ] + + # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh + pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh + pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ + 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + ] + + lcoh_nominal_backfilled = [] + for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): + entry: float | str = 'NaN' + if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: + entry = ( + pv_of_annual_costs_backfilled_row_values_usd[_year] + * 100 + / pv_of_heat_provided_backfilled_row_kwh[_year] + ) + + lcoh_nominal_backfilled.append(entry) + + lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/MMBTU)' + # FIXME WIP insert new row instead of backfilling non-existent LCOE row + lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name) + + lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] + if isinstance(lcoh_nominal_backfilled_entry, float): + lcoh_nominal_backfilled_entry = round(lcoh_nominal_backfilled_entry, 2) + + ret[lcoh_nominal_row_index][1:] = [ + lcoh_nominal_backfilled_entry, + *([None] * (self._pre_revenue_years_count - 1)), + ] + + backfill_lcoh_nominal() + def backfill_lppa_metrics() -> None: pv_of_ppa_revenue_row_index = _get_row_index_after( 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title From 994b85c2269e282e233461a0c6bb168187a57b50 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:59:04 -0700 Subject: [PATCH 036/127] working-ish impl of LCOH insertion into SAM cash flow profile - WIP on a number of fronts including ironing out units --- src/geophires_x/EconomicsSam.py | 120 +++++++++++++++++++------------- 1 file changed, 70 insertions(+), 50 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index bf0138fe5..10c6611da 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -439,6 +439,53 @@ def backfill_lcoe_nominal() -> None: backfill_lcoe_nominal() + def backfill_lppa_metrics() -> None: + pv_of_ppa_revenue_row_index = _get_row_index_after( + 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title + ) + first_year_pv_of_ppa_revenue_usd = round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + ret[ppa_revenue_row_index][1:], + ) + ) + ret[pv_of_ppa_revenue_row_index][1:] = [ + first_year_pv_of_ppa_revenue_usd, + *([None] * (self._pre_revenue_years_count - 1)), + ] + + ppa_price_row_index = _get_row_index('PPA price (cents/kWh)') + year_0_ppa_price: float = ret[ppa_price_row_index][self._pre_revenue_years_count] + if year_0_ppa_price != 0.0: + # Shouldn't happen + _log.warning(f'PPA price in Year 0 ({year_0_ppa_price}) is not zero, this is unexpected.') + + # TODO (maybe) + # ppa_revenue_all_years = [ + # *([year_0_ppa_price] * (self._pre_revenue_years_count - 1)), + # *ret[ppa_price_row_index][self._pre_revenue_years_count :], + # ] + # ret[_get_row_index('PPA price (cents/kWh)')][1:] = ppa_revenue_all_years + + first_year_lppa_cents_per_kwh: float | str = 'NaN' + first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] + + if ( + isinstance(first_year_pv_annual_energy, int) or isinstance(first_year_pv_annual_energy, float) + ) and first_year_pv_annual_energy != 0.0: + # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD + first_year_lppa_cents_per_kwh = round( + first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 + ) + + lppa_row_name = 'LPPA Levelized PPA price nominal (cents/kWh)' + ret[_get_row_index(lppa_row_name)][1:] = [ + first_year_lppa_cents_per_kwh, + *([None] * self._pre_revenue_years_count), + ] + + backfill_lppa_metrics() + def backfill_lcoh_nominal() -> None: # WIP... @@ -506,9 +553,29 @@ def backfill_lcoh_nominal() -> None: lcoh_nominal_backfilled.append(entry) - lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/MMBTU)' - # FIXME WIP insert new row instead of backfilling non-existent LCOE row - lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name) + lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit + + # Insert new row if LCOE row does not exist (yet) + lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) + + def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: + if row_content is None: + row_content = ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + + ret.insert( + [it[0] for it in ret].index(before_row_name), + [row_name, *row_content], + ) + + def _insert_blank_line_before(before_row_name: str) -> None: + _insert_row_before( + before_row_name, '', ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + ) + + if lcoh_nominal_row_index == -1: + _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) + _insert_blank_line_before('PROJECT STATE INCOME TAXES') + lcoh_nominal_row_index = [it[0] for it in ret].index(lcoh_nominal_row_name) lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] if isinstance(lcoh_nominal_backfilled_entry, float): @@ -521,53 +588,6 @@ def backfill_lcoh_nominal() -> None: backfill_lcoh_nominal() - def backfill_lppa_metrics() -> None: - pv_of_ppa_revenue_row_index = _get_row_index_after( - 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title - ) - first_year_pv_of_ppa_revenue_usd = round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - ret[ppa_revenue_row_index][1:], - ) - ) - ret[pv_of_ppa_revenue_row_index][1:] = [ - first_year_pv_of_ppa_revenue_usd, - *([None] * (self._pre_revenue_years_count - 1)), - ] - - ppa_price_row_index = _get_row_index('PPA price (cents/kWh)') - year_0_ppa_price: float = ret[ppa_price_row_index][self._pre_revenue_years_count] - if year_0_ppa_price != 0.0: - # Shouldn't happen - _log.warning(f'PPA price in Year 0 ({year_0_ppa_price}) is not zero, this is unexpected.') - - # TODO (maybe) - # ppa_revenue_all_years = [ - # *([year_0_ppa_price] * (self._pre_revenue_years_count - 1)), - # *ret[ppa_price_row_index][self._pre_revenue_years_count :], - # ] - # ret[_get_row_index('PPA price (cents/kWh)')][1:] = ppa_revenue_all_years - - first_year_lppa_cents_per_kwh: float | str = 'NaN' - first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] - - if ( - isinstance(first_year_pv_annual_energy, int) or isinstance(first_year_pv_annual_energy, float) - ) and first_year_pv_annual_energy != 0.0: - # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD - first_year_lppa_cents_per_kwh = round( - first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 - ) - - lppa_row_name = 'LPPA Levelized PPA price nominal (cents/kWh)' - ret[_get_row_index(lppa_row_name)][1:] = [ - first_year_lppa_cents_per_kwh, - *([None] * self._pre_revenue_years_count), - ] - - backfill_lppa_metrics() - return ret @property From 460f7dc1afd874bf9cfc1770991876ce010b0078 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 08:01:28 -0700 Subject: [PATCH 037/127] set CAPEX_heat_electricity_plant_ratio for end use options --- src/geophires_x/Economics.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index f8a439c31..1ccc13551 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2753,6 +2753,16 @@ def _warn(_msg: str) -> None: convertible_unit(self.accrued_financing_during_construction_percentage.CurrentUnits) ).magnitude + if not self.CAPEX_heat_electricity_plant_ratio.Provided: + def _set_ratio(frac: float) -> None: + self.CAPEX_heat_electricity_plant_ratio.value = quantity(frac, 'dimensionless').to( + convertible_unit(self.CAPEX_heat_electricity_plant_ratio.CurrentUnits)).magnitude + + if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY: + _set_ratio(1.0) + elif model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: + _set_ratio(0.0) + model.logger.info(f'complete {__class__!s}: {sys._getframe().f_code.co_name}') def sync_interest_rate(self, model): From d4c76d43024f36666e2fcbd1f13e445b75eec8f4 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 08:10:23 -0700 Subject: [PATCH 038/127] break out EconomicsSamCalculations.py --- src/geophires_x/Economics.py | 3 +- src/geophires_x/EconomicsSam.py | 596 +----------------- src/geophires_x/EconomicsSamCalculations.py | 594 +++++++++++++++++ tests/geophires_x_tests/test_economics_sam.py | 2 +- 4 files changed, 605 insertions(+), 590 deletions(-) create mode 100644 src/geophires_x/EconomicsSamCalculations.py diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 1ccc13551..1e8d87c34 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -9,7 +9,8 @@ import geophires_x.Model as Model from geophires_x import EconomicsSam -from geophires_x.EconomicsSam import calculate_sam_economics, SamEconomicsCalculations +from geophires_x.EconomicsSam import calculate_sam_economics +from geophires_x.EconomicsSamCalculations import SamEconomicsCalculations from geophires_x.EconomicsUtils import BuildPricingModel, wacc_output_parameter, nominal_discount_rate_parameter, \ real_discount_rate_parameter, after_tax_irr_parameter, moic_parameter, project_vir_parameter, \ project_payback_period_parameter, inflation_cost_during_construction_output_parameter, \ diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 10c6611da..6b05fd247 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -3,7 +3,6 @@ import json import logging import os -from dataclasses import dataclass, field from functools import lru_cache from math import isnan from pathlib import Path @@ -29,26 +28,21 @@ from tabulate import tabulate from geophires_x import Model as Model +from geophires_x.EconomicsSamCalculations import ( + SamEconomicsCalculations, + CapacityPaymentRevenueSource, + ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY, + _after_tax_net_cash_flow_all_years, + _net_cash_flow_all_years, +) from geophires_x.EconomicsSamCashFlow import ( _calculate_sam_economics_cash_flow_operational_years, - _SAM_CASH_FLOW_NAN_STR, ) from geophires_x.EconomicsUtils import ( BuildPricingModel, - wacc_output_parameter, - nominal_discount_rate_parameter, - after_tax_irr_parameter, - moic_parameter, - project_vir_parameter, - project_payback_period_parameter, - total_capex_parameter_output_parameter, - royalty_cost_output_parameter, - overnight_capital_cost_output_parameter, _SAM_EM_MOIC_RETURNS_TAX_QUALIFIER, - investment_tax_credit_output_parameter, ) from geophires_x.EconomicsSamPreRevenue import ( - _AFTER_TAX_NET_CASH_FLOW_ROW_NAME, PreRevenueCostsAndCashflow, calculate_pre_revenue_costs_and_cashflow, adjust_phased_schedule_to_new_length, @@ -56,544 +50,10 @@ from geophires_x.GeoPHIRESUtils import is_float, is_int, sig_figs, quantity from geophires_x.OptionList import EconomicModel, EndUseOptions from geophires_x.Parameter import Parameter, OutputParameter, floatParameter, listParameter -from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units +from geophires_x.Units import convertible_unit _log = logging.getLogger(__name__) -ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY = 'O&M production-based expense ($)' - - -@dataclass -class CapacityPaymentRevenueSource: - name: str - - revenue_usd: list[float] - - amount_provided_label: str | None = None - amount_provided: list[float] | None = None - - price_label: str | None = None - price: list[float] | None = None - - -@dataclass -class SamEconomicsCalculations: - _sam_cash_flow_profile_operational_years: list[list[Any]] - """ - Operational cash flow profile from SAM financial engine - """ - - pre_revenue_costs_and_cash_flow: PreRevenueCostsAndCashflow - - lcoe_nominal: OutputParameter = field( - default_factory=lambda: OutputParameter( - UnitType=Units.ENERGYCOST, - CurrentUnits=EnergyCostUnit.CENTSSPERKWH, - ) - ) - - overnight_capital_cost: OutputParameter = field(default_factory=overnight_capital_cost_output_parameter) - - capex: OutputParameter = field(default_factory=total_capex_parameter_output_parameter) - - _royalties_rate_schedule: list[float] | None = None - royalties_opex: OutputParameter = field(default_factory=royalty_cost_output_parameter) - - project_npv: OutputParameter = field( - default_factory=lambda: OutputParameter( - UnitType=Units.CURRENCY, - CurrentUnits=CurrencyUnit.MDOLLARS, - ) - ) - - after_tax_irr: OutputParameter = field(default_factory=after_tax_irr_parameter) - nominal_discount_rate: OutputParameter = field(default_factory=nominal_discount_rate_parameter) - wacc: OutputParameter = field(default_factory=wacc_output_parameter) - moic: OutputParameter = field(default_factory=moic_parameter) - project_vir: OutputParameter = field(default_factory=project_vir_parameter) - - project_payback_period: OutputParameter = field(default_factory=project_payback_period_parameter) - - investment_tax_credit: OutputParameter = field(default_factory=investment_tax_credit_output_parameter) - - capacity_payment_revenue_sources: list[CapacityPaymentRevenueSource] = field(default_factory=list) - - @property - def _pre_revenue_years_count(self) -> int: - return len( - self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile_dict[_AFTER_TAX_NET_CASH_FLOW_ROW_NAME] - ) - - @property - def sam_cash_flow_profile(self) -> list[list[Any]]: - ret: list[list[Any]] = self._sam_cash_flow_profile_operational_years.copy() - col_count = len(self._sam_cash_flow_profile_operational_years[0]) - - # TODO support/insert calendar year line item https://github.com/NREL/GEOPHIRES-X/issues/439 - - pre_revenue_years_to_insert = self._pre_revenue_years_count - 1 - - construction_rows: list[list[Any]] = [ - ['CONSTRUCTION'] + [''] * (len(self._sam_cash_flow_profile_operational_years[0]) - 1) - ] - - for row_index in range(len(self._sam_cash_flow_profile_operational_years)): - pre_revenue_row_content = [''] * pre_revenue_years_to_insert - insert_index = 1 - - if row_index == 0: - for pre_revenue_year in range(pre_revenue_years_to_insert): - negative_year_index: int = self._pre_revenue_years_count - 1 - pre_revenue_year - pre_revenue_row_content[pre_revenue_year] = f'Year -{negative_year_index}' - - for _, row_ in enumerate(self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile): - pre_revenue_row = row_.copy() - pre_revenue_row.extend([''] * (col_count - len(pre_revenue_row))) - construction_rows.append(pre_revenue_row) - - # TODO zero-vectors for non-construction years e.g. Debt principal payment ($) - - adjusted_row = [ret[row_index][0]] + pre_revenue_row_content + ret[row_index][insert_index:] - ret[row_index] = adjusted_row - - construction_rows.append([''] * len(self._sam_cash_flow_profile_operational_years[0])) - for construction_row in reversed(construction_rows): - ret.insert(1, construction_row) - - def _get_row_index(row_name_: str) -> list[Any]: - return [it[0] for it in ret].index(row_name_) - - def _get_row(row_name__: str) -> list[Any]: - for r in ret: - if r[0] == row_name__: - return r[1:] - - raise ValueError(f'Could not find row with name {row_name__}') - - after_tax_cash_flow: list[float] = ( - self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile_dict[_AFTER_TAX_NET_CASH_FLOW_ROW_NAME] - + _get_row('Total after-tax returns ($)')[self._pre_revenue_years_count :] - ) - after_tax_cash_flow = [float(it) for it in after_tax_cash_flow if is_float(it)] - irr_row_name = 'After-tax cumulative IRR (%)' - ret.insert( - _get_row_index(irr_row_name), ['After-tax net cash flow ($)', *[int(it) for it in after_tax_cash_flow]] - ) - - npv_usd = [] - irr_pct = [] - for year in range(len(after_tax_cash_flow)): - npv_usd.append( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - after_tax_cash_flow[: year + 1], - ) - ) - ) - - year_irr = npf.irr(after_tax_cash_flow[: year + 1]) * 100.0 - irr_pct.append(year_irr if not isnan(year_irr) else _SAM_CASH_FLOW_NAN_STR) - - ret[_get_row_index('After-tax cumulative NPV ($)')] = ['After-tax cumulative NPV ($)'] + npv_usd - ret[_get_row_index('After-tax cumulative IRR (%)')] = [irr_row_name] + irr_pct - - if self._royalties_rate_schedule is not None: - ret = self._insert_royalties_rate_schedule(ret) - - ret = self._insert_capacity_payment_line_items(ret) - - ret = self._insert_calculated_levelized_metrics_line_items(ret) - - return ret - - def _insert_royalties_rate_schedule(self, cf_ret: list[list[Any]]) -> list[list[Any]]: - ret = cf_ret.copy() - - def _get_row_index(row_name_: str) -> list[Any]: - return [it[0] for it in ret].index(row_name_) - - ret.insert( - _get_row_index(ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY), - [ - *['Royalty rate (%)'], - *([''] * (self._pre_revenue_years_count)), - *[ - quantity(it, 'dimensionless').to(convertible_unit('percent')).magnitude - for it in self._royalties_rate_schedule - ], - ], - ) - - return ret - - # noinspection PyMethodMayBeStatic - def _insert_capacity_payment_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: - if len(self.capacity_payment_revenue_sources) == 0: - return cf_ret - - ret: list[list[Any]] = cf_ret.copy() - - def _get_row_index(row_name_: str) -> list[Any]: - return [it[0] for it in ret].index(row_name_) - - def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any]) -> None: - ret.insert( - _get_row_index(before_row_name), - [row_name, *row_content], - ) - - def _insert_blank_line_before(before_row_name: str) -> None: - _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) - - revenue_row_name = 'REVENUE' - capacity_payment_revenue_row_name = 'Capacity payment revenue ($)' - - _insert_blank_line_before('Salvage value ($)') - _insert_blank_line_before(capacity_payment_revenue_row_name) - - def _for_operational_years(_row: list[Any]) -> list[Any]: - return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] - - for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: - if capacity_payment_revenue_source.amount_provided_label is not None: - _insert_row_before( - revenue_row_name, - capacity_payment_revenue_source.amount_provided_label, - _for_operational_years(capacity_payment_revenue_source.amount_provided), - ) - _insert_blank_line_before(revenue_row_name) - - revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' - _insert_row_before( - capacity_payment_revenue_row_name, - revenue_row_name, - _for_operational_years(capacity_payment_revenue_source.revenue_usd), - ) - - if capacity_payment_revenue_source.price_label is not None: - _insert_row_before( - revenue_row_name, - capacity_payment_revenue_source.price_label.replace('USD', '$'), - capacity_payment_revenue_source.price, - ) - - return ret - - # noinspection DuplicatedCode - def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: - ret = cf_ret.copy() - - __row_names: list[str] = [it[0] for it in ret] - - def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) -> int: - try: - return __row_names.index(row_name_) - except ValueError as ve: - if raise_exception_if_not_present: - raise ve - else: - return -1 - - def _get_row_indexes(row_name_: str, after_row_name: str | None = None) -> list[int]: - after_criteria_met: bool = True if after_row_name is None else False - indexes = [] - for idx, _row_name_ in enumerate(__row_names): - if _row_name_ == after_row_name: - after_criteria_met = True - - if _row_name_ == row_name_ and after_criteria_met: - indexes.append(idx) - - return indexes - - def _get_row_index_after(row_name_: str, after_row_name: str) -> int: - return _get_row_indexes(row_name_, after_row_name=after_row_name)[0] - - after_tax_lcoe_and_ppa_price_header_row_title = 'AFTER-TAX LCOE AND PPA PRICE' - - # Backfill annual costs - annual_costs_usd_row_name = 'Annual costs ($)' - annual_costs = cf_ret[_get_row_index(annual_costs_usd_row_name)].copy() - after_tax_net_cash_flow_usd = cf_ret[_get_row_index('After-tax net cash flow ($)')] - - annual_costs_backfilled = [ - *after_tax_net_cash_flow_usd[1 : (self._pre_revenue_years_count + 1)], - *annual_costs[(self._pre_revenue_years_count + 1) :], - ] - - ret[_get_row_index(annual_costs_usd_row_name)][1:] = annual_costs_backfilled - - ppa_revenue_row_name = 'PPA revenue ($)' - ppa_revenue_row_index = _get_row_index_after( - ppa_revenue_row_name, after_tax_lcoe_and_ppa_price_header_row_title - ) - year_0_ppa_revenue: float = ret[ppa_revenue_row_index][self._pre_revenue_years_count] - if year_0_ppa_revenue != 0.0: - # Shouldn't happen - _log.warning(f'PPA revenue in Year 0 ({year_0_ppa_revenue}) is not zero, this is unexpected.') - - ret[ppa_revenue_row_index][1 : self._pre_revenue_years_count] = [year_0_ppa_revenue] * ( - self._pre_revenue_years_count - 1 - ) - - electricity_to_grid_kwh_row_name = 'Electricity to grid (kWh)' - electricity_to_grid = cf_ret[_get_row_index(electricity_to_grid_kwh_row_name)].copy() - electricity_to_grid_backfilled = [ - 0 if it == '' else (int(it) if is_int(it) else it) for it in electricity_to_grid[1:] - ] - - electricity_to_grid_kwh_row_index = _get_row_index_after( - electricity_to_grid_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title - ) - ret[electricity_to_grid_kwh_row_index][1:] = electricity_to_grid_backfilled - - pv_of_annual_costs_backfilled_row_name = 'Present value of annual costs ($)' - - # Backfill PV of annual costs - annual_costs_backfilled_pv_processed = annual_costs_backfilled.copy() - pv_of_annual_costs_backfilled = [] - for year in range(self._pre_revenue_years_count): - pv_at_year = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - annual_costs_backfilled_pv_processed, - ) - ) - ) - - pv_of_annual_costs_backfilled.append(pv_at_year) - - cost_at_year = annual_costs_backfilled_pv_processed.pop(0) - annual_costs_backfilled_pv_processed[0] = annual_costs_backfilled_pv_processed[0] + cost_at_year - - pv_of_annual_costs_backfilled_row = [ - *[pv_of_annual_costs_backfilled_row_name], - *pv_of_annual_costs_backfilled, - ] - - pv_of_annual_costs_row_name = 'Present value of annual costs ($)' - pv_of_annual_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) - ret[pv_of_annual_costs_row_index][1:] = [ - pv_of_annual_costs_backfilled[0], - *([''] * (self._pre_revenue_years_count - 1)), - ] - - # Backfill PV of electricity to grid - electricity_to_grid_backfilled_pv_processed = electricity_to_grid_backfilled.copy() - pv_of_electricity_to_grid_backfilled_kwh = [] - for year in range(self._pre_revenue_years_count): - pv_at_year = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - electricity_to_grid_backfilled_pv_processed, - ) - ) - ) - - pv_of_electricity_to_grid_backfilled_kwh.append(pv_at_year) - - electricity_to_grid_at_year = electricity_to_grid_backfilled_pv_processed.pop(0) - electricity_to_grid_backfilled_pv_processed[0] = ( - electricity_to_grid_backfilled_pv_processed[0] + electricity_to_grid_at_year - ) - - pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' - for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): - ret[pv_of_annual_energy_row_index][1:] = [ - pv_of_electricity_to_grid_backfilled_kwh[0], - *([''] * (self._pre_revenue_years_count - 1)), - ] - - def backfill_lcoe_nominal() -> None: - pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh - pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ] - - lcoe_nominal_backfilled = [] - for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): - entry: float | str = 'NaN' - if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: - entry = ( - pv_of_annual_costs_backfilled_row_values_usd[_year] - * 100 - / pv_of_electricity_to_grid_backfilled_row_kwh[_year] - ) - - lcoe_nominal_backfilled.append(entry) - - lcoe_nominal_row_name = 'LCOE Levelized cost of energy nominal (cents/kWh)' - lcoe_nominal_row_index = _get_row_index(lcoe_nominal_row_name) - - lcoe_nominal_backfilled_entry = lcoe_nominal_backfilled[0] - if isinstance(lcoe_nominal_backfilled_entry, float): - lcoe_nominal_backfilled_entry = round(lcoe_nominal_backfilled_entry, 2) - - ret[lcoe_nominal_row_index][1:] = [ - lcoe_nominal_backfilled_entry, - *([None] * (self._pre_revenue_years_count - 1)), - ] - - backfill_lcoe_nominal() - - def backfill_lppa_metrics() -> None: - pv_of_ppa_revenue_row_index = _get_row_index_after( - 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title - ) - first_year_pv_of_ppa_revenue_usd = round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - ret[ppa_revenue_row_index][1:], - ) - ) - ret[pv_of_ppa_revenue_row_index][1:] = [ - first_year_pv_of_ppa_revenue_usd, - *([None] * (self._pre_revenue_years_count - 1)), - ] - - ppa_price_row_index = _get_row_index('PPA price (cents/kWh)') - year_0_ppa_price: float = ret[ppa_price_row_index][self._pre_revenue_years_count] - if year_0_ppa_price != 0.0: - # Shouldn't happen - _log.warning(f'PPA price in Year 0 ({year_0_ppa_price}) is not zero, this is unexpected.') - - # TODO (maybe) - # ppa_revenue_all_years = [ - # *([year_0_ppa_price] * (self._pre_revenue_years_count - 1)), - # *ret[ppa_price_row_index][self._pre_revenue_years_count :], - # ] - # ret[_get_row_index('PPA price (cents/kWh)')][1:] = ppa_revenue_all_years - - first_year_lppa_cents_per_kwh: float | str = 'NaN' - first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] - - if ( - isinstance(first_year_pv_annual_energy, int) or isinstance(first_year_pv_annual_energy, float) - ) and first_year_pv_annual_energy != 0.0: - # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD - first_year_lppa_cents_per_kwh = round( - first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 - ) - - lppa_row_name = 'LPPA Levelized PPA price nominal (cents/kWh)' - ret[_get_row_index(lppa_row_name)][1:] = [ - first_year_lppa_cents_per_kwh, - *([None] * self._pre_revenue_years_count), - ] - - backfill_lppa_metrics() - - def backfill_lcoh_nominal() -> None: - # WIP... - - heat_provided_kwh_row_name = 'Heat provided (kWh)' - heat_provided_kwh_row_index = _get_row_index( - heat_provided_kwh_row_name, raise_exception_if_not_present=False - ) - if heat_provided_kwh_row_index == -1: - return # No heat provided row, nothing to do - - heat_provided = cf_ret[heat_provided_kwh_row_index].copy() - heat_provided_backfilled = [0 if it == '' else (int(it) if is_int(it) else it) for it in heat_provided[1:]] - - # TODO/WIP maybe duplicate heat provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror - # electricity convention - # heat_provided_kwh_row_index = _get_row_index_after( - # heat_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title - # ) - - ret[heat_provided_kwh_row_index][1:] = heat_provided_backfilled - - # fill PV of heat provided - heat_provided_backfilled_pv_processed = heat_provided_backfilled.copy() - pv_of_heat_provided_backfilled_kwh = [] - for year_ in range(self._pre_revenue_years_count): - pv_at_year_ = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - heat_provided_backfilled_pv_processed, - ) - ) - ) - - pv_of_heat_provided_backfilled_kwh.append(pv_at_year_) - - heat_provided_at_year = heat_provided_backfilled_pv_processed.pop(0) - heat_provided_backfilled_pv_processed[0] = ( - heat_provided_backfilled_pv_processed[0] + heat_provided_at_year - ) - - # FIXME WIP TODO - # pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' - # for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): - # ret[pv_of_annual_energy_row_index][1:] = [ - # pv_of_electricity_to_grid_backfilled_kwh[0], - # *([''] * (self._pre_revenue_years_count - 1)), - # ] - - # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh - pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh - pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ] - - lcoh_nominal_backfilled = [] - for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): - entry: float | str = 'NaN' - if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: - entry = ( - pv_of_annual_costs_backfilled_row_values_usd[_year] - * 100 - / pv_of_heat_provided_backfilled_row_kwh[_year] - ) - - lcoh_nominal_backfilled.append(entry) - - lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit - - # Insert new row if LCOE row does not exist (yet) - lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) - - def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: - if row_content is None: - row_content = ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] - - ret.insert( - [it[0] for it in ret].index(before_row_name), - [row_name, *row_content], - ) - - def _insert_blank_line_before(before_row_name: str) -> None: - _insert_row_before( - before_row_name, '', ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] - ) - - if lcoh_nominal_row_index == -1: - _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) - _insert_blank_line_before('PROJECT STATE INCOME TAXES') - lcoh_nominal_row_index = [it[0] for it in ret].index(lcoh_nominal_row_name) - - lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] - if isinstance(lcoh_nominal_backfilled_entry, float): - lcoh_nominal_backfilled_entry = round(lcoh_nominal_backfilled_entry, 2) - - ret[lcoh_nominal_row_index][1:] = [ - lcoh_nominal_backfilled_entry, - *([None] * (self._pre_revenue_years_count - 1)), - ] - - backfill_lcoh_nominal() - - return ret - - @property - def sam_after_tax_net_cash_flow_all_years(self) -> list[float]: - return _after_tax_net_cash_flow_all_years(self.sam_cash_flow_profile, self._pre_revenue_years_count) - def validate_read_parameters(model: Model) -> None: def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> str: @@ -815,46 +275,6 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: return sam_economics -def _after_tax_net_cash_flow_all_years(cash_flow: list[list[Any]], pre_revenue_years_count: int) -> list[float]: - return _net_cash_flow_all_years(cash_flow, pre_revenue_years_count, tax_qualifier='after-tax') - - -def _net_cash_flow_all_years( - cash_flow: list[list[Any]], pre_revenue_years_count: int, tax_qualifier='after-tax' -) -> list[float]: - if tax_qualifier not in ['after-tax', 'pre-tax']: - raise ValueError(f'Invalid tax qualifier: {tax_qualifier}') - - def _get_row(row_name__: str) -> list[Any]: - for r in cash_flow: - if r[0] == row_name__: - return r[1:] - - raise ValueError(f'Could not find row with name {row_name__}') - - def _construction_returns_row(_construction_tax_qualifier: str) -> list[Any]: - returns_row_name = ( - f'Total {_construction_tax_qualifier} returns [construction] ($)' - if tax_qualifier == 'pre-tax' - else f'After-tax net cash flow [construction] ($)' - ) - return _get_row(returns_row_name) - - try: - construction_returns_row = _construction_returns_row(tax_qualifier) - except ValueError as ve: - if tax_qualifier == 'pre-tax': - # TODO log warning - construction_returns_row = _construction_returns_row('after-tax') - else: - raise ve - - return [ - *[float(it) for it in construction_returns_row if is_float(it)], - *[float(it) for it in _get_row(f'Total {tax_qualifier} returns ($)')[pre_revenue_years_count:] if is_float(it)], - ] - - def _get_project_npv_musd(single_owner: Singleowner, cash_flow: list[list[Any]], model: Model) -> float: pre_revenue_costs: PreRevenueCostsAndCashflow = calculate_pre_revenue_costs_and_cashflow(model) pre_revenue_cash_flow = pre_revenue_costs.after_tax_net_cash_flow_usd diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py new file mode 100644 index 000000000..d55318d25 --- /dev/null +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -0,0 +1,594 @@ +from __future__ import annotations + +import logging +from dataclasses import dataclass, field +from math import isnan +from typing import Any + +import numpy_financial as npf + +from geophires_x.EconomicsSamCashFlow import _SAM_CASH_FLOW_NAN_STR +from geophires_x.EconomicsSamPreRevenue import PreRevenueCostsAndCashflow, _AFTER_TAX_NET_CASH_FLOW_ROW_NAME +from geophires_x.EconomicsUtils import overnight_capital_cost_output_parameter, total_capex_parameter_output_parameter, \ + royalty_cost_output_parameter, after_tax_irr_parameter, nominal_discount_rate_parameter, wacc_output_parameter, \ + moic_parameter, project_vir_parameter, project_payback_period_parameter, investment_tax_credit_output_parameter +from geophires_x.GeoPHIRESUtils import is_float, quantity, is_int +from geophires_x.Parameter import OutputParameter +from geophires_x.Units import Units, EnergyCostUnit, CurrencyUnit, convertible_unit + +_log = logging.getLogger(__name__) + + +ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY = 'O&M production-based expense ($)' + + +@dataclass +class SamEconomicsCalculations: + _sam_cash_flow_profile_operational_years: list[list[Any]] + """ + Operational cash flow profile from SAM financial engine + """ + + pre_revenue_costs_and_cash_flow: PreRevenueCostsAndCashflow + + lcoe_nominal: OutputParameter = field( + default_factory=lambda: OutputParameter( + UnitType=Units.ENERGYCOST, + CurrentUnits=EnergyCostUnit.CENTSSPERKWH, + ) + ) + + overnight_capital_cost: OutputParameter = field(default_factory=overnight_capital_cost_output_parameter) + + capex: OutputParameter = field(default_factory=total_capex_parameter_output_parameter) + + _royalties_rate_schedule: list[float] | None = None + royalties_opex: OutputParameter = field(default_factory=royalty_cost_output_parameter) + + project_npv: OutputParameter = field( + default_factory=lambda: OutputParameter( + UnitType=Units.CURRENCY, + CurrentUnits=CurrencyUnit.MDOLLARS, + ) + ) + + after_tax_irr: OutputParameter = field(default_factory=after_tax_irr_parameter) + nominal_discount_rate: OutputParameter = field(default_factory=nominal_discount_rate_parameter) + wacc: OutputParameter = field(default_factory=wacc_output_parameter) + moic: OutputParameter = field(default_factory=moic_parameter) + project_vir: OutputParameter = field(default_factory=project_vir_parameter) + + project_payback_period: OutputParameter = field(default_factory=project_payback_period_parameter) + + investment_tax_credit: OutputParameter = field(default_factory=investment_tax_credit_output_parameter) + + capacity_payment_revenue_sources: list[CapacityPaymentRevenueSource] = field(default_factory=list) + + @property + def _pre_revenue_years_count(self) -> int: + return len( + self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile_dict[_AFTER_TAX_NET_CASH_FLOW_ROW_NAME] + ) + + @property + def sam_cash_flow_profile(self) -> list[list[Any]]: + ret: list[list[Any]] = self._sam_cash_flow_profile_operational_years.copy() + col_count = len(self._sam_cash_flow_profile_operational_years[0]) + + # TODO support/insert calendar year line item https://github.com/NREL/GEOPHIRES-X/issues/439 + + pre_revenue_years_to_insert = self._pre_revenue_years_count - 1 + + construction_rows: list[list[Any]] = [ + ['CONSTRUCTION'] + [''] * (len(self._sam_cash_flow_profile_operational_years[0]) - 1) + ] + + for row_index in range(len(self._sam_cash_flow_profile_operational_years)): + pre_revenue_row_content = [''] * pre_revenue_years_to_insert + insert_index = 1 + + if row_index == 0: + for pre_revenue_year in range(pre_revenue_years_to_insert): + negative_year_index: int = self._pre_revenue_years_count - 1 - pre_revenue_year + pre_revenue_row_content[pre_revenue_year] = f'Year -{negative_year_index}' + + for _, row_ in enumerate(self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile): + pre_revenue_row = row_.copy() + pre_revenue_row.extend([''] * (col_count - len(pre_revenue_row))) + construction_rows.append(pre_revenue_row) + + # TODO zero-vectors for non-construction years e.g. Debt principal payment ($) + + adjusted_row = [ret[row_index][0]] + pre_revenue_row_content + ret[row_index][insert_index:] + ret[row_index] = adjusted_row + + construction_rows.append([''] * len(self._sam_cash_flow_profile_operational_years[0])) + for construction_row in reversed(construction_rows): + ret.insert(1, construction_row) + + def _get_row_index(row_name_: str) -> list[Any]: + return [it[0] for it in ret].index(row_name_) + + def _get_row(row_name__: str) -> list[Any]: + for r in ret: + if r[0] == row_name__: + return r[1:] + + raise ValueError(f'Could not find row with name {row_name__}') + + after_tax_cash_flow: list[float] = ( + self.pre_revenue_costs_and_cash_flow.pre_revenue_cash_flow_profile_dict[_AFTER_TAX_NET_CASH_FLOW_ROW_NAME] + + _get_row('Total after-tax returns ($)')[self._pre_revenue_years_count :] + ) + after_tax_cash_flow = [float(it) for it in after_tax_cash_flow if is_float(it)] + irr_row_name = 'After-tax cumulative IRR (%)' + ret.insert( + _get_row_index(irr_row_name), ['After-tax net cash flow ($)', *[int(it) for it in after_tax_cash_flow]] + ) + + npv_usd = [] + irr_pct = [] + for year in range(len(after_tax_cash_flow)): + npv_usd.append( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + after_tax_cash_flow[: year + 1], + ) + ) + ) + + year_irr = npf.irr(after_tax_cash_flow[: year + 1]) * 100.0 + irr_pct.append(year_irr if not isnan(year_irr) else _SAM_CASH_FLOW_NAN_STR) + + ret[_get_row_index('After-tax cumulative NPV ($)')] = ['After-tax cumulative NPV ($)'] + npv_usd + ret[_get_row_index('After-tax cumulative IRR (%)')] = [irr_row_name] + irr_pct + + if self._royalties_rate_schedule is not None: + ret = self._insert_royalties_rate_schedule(ret) + + ret = self._insert_capacity_payment_line_items(ret) + + ret = self._insert_calculated_levelized_metrics_line_items(ret) + + return ret + + def _insert_royalties_rate_schedule(self, cf_ret: list[list[Any]]) -> list[list[Any]]: + ret = cf_ret.copy() + + def _get_row_index(row_name_: str) -> list[Any]: + return [it[0] for it in ret].index(row_name_) + + ret.insert( + _get_row_index(ROYALTIES_OPEX_CASH_FLOW_LINE_ITEM_KEY), + [ + *['Royalty rate (%)'], + *([''] * (self._pre_revenue_years_count)), + *[ + quantity(it, 'dimensionless').to(convertible_unit('percent')).magnitude + for it in self._royalties_rate_schedule + ], + ], + ) + + return ret + + # noinspection PyMethodMayBeStatic + def _insert_capacity_payment_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: + if len(self.capacity_payment_revenue_sources) == 0: + return cf_ret + + ret: list[list[Any]] = cf_ret.copy() + + def _get_row_index(row_name_: str) -> list[Any]: + return [it[0] for it in ret].index(row_name_) + + def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any]) -> None: + ret.insert( + _get_row_index(before_row_name), + [row_name, *row_content], + ) + + def _insert_blank_line_before(before_row_name: str) -> None: + _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) + + revenue_row_name = 'REVENUE' + capacity_payment_revenue_row_name = 'Capacity payment revenue ($)' + + _insert_blank_line_before('Salvage value ($)') + _insert_blank_line_before(capacity_payment_revenue_row_name) + + def _for_operational_years(_row: list[Any]) -> list[Any]: + return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] + + for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: + if capacity_payment_revenue_source.amount_provided_label is not None: + _insert_row_before( + revenue_row_name, + capacity_payment_revenue_source.amount_provided_label, + _for_operational_years(capacity_payment_revenue_source.amount_provided), + ) + _insert_blank_line_before(revenue_row_name) + + revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' + _insert_row_before( + capacity_payment_revenue_row_name, + revenue_row_name, + _for_operational_years(capacity_payment_revenue_source.revenue_usd), + ) + + if capacity_payment_revenue_source.price_label is not None: + _insert_row_before( + revenue_row_name, + capacity_payment_revenue_source.price_label.replace('USD', '$'), + capacity_payment_revenue_source.price, + ) + + return ret + + # noinspection DuplicatedCode + def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: + ret = cf_ret.copy() + + __row_names: list[str] = [it[0] for it in ret] + + def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) -> int: + try: + return __row_names.index(row_name_) + except ValueError as ve: + if raise_exception_if_not_present: + raise ve + else: + return -1 + + def _get_row_indexes(row_name_: str, after_row_name: str | None = None) -> list[int]: + after_criteria_met: bool = True if after_row_name is None else False + indexes = [] + for idx, _row_name_ in enumerate(__row_names): + if _row_name_ == after_row_name: + after_criteria_met = True + + if _row_name_ == row_name_ and after_criteria_met: + indexes.append(idx) + + return indexes + + def _get_row_index_after(row_name_: str, after_row_name: str) -> int: + return _get_row_indexes(row_name_, after_row_name=after_row_name)[0] + + after_tax_lcoe_and_ppa_price_header_row_title = 'AFTER-TAX LCOE AND PPA PRICE' + + # Backfill annual costs + annual_costs_usd_row_name = 'Annual costs ($)' + annual_costs = cf_ret[_get_row_index(annual_costs_usd_row_name)].copy() + after_tax_net_cash_flow_usd = cf_ret[_get_row_index('After-tax net cash flow ($)')] + + annual_costs_backfilled = [ + *after_tax_net_cash_flow_usd[1 : (self._pre_revenue_years_count + 1)], + *annual_costs[(self._pre_revenue_years_count + 1) :], + ] + + ret[_get_row_index(annual_costs_usd_row_name)][1:] = annual_costs_backfilled + + ppa_revenue_row_name = 'PPA revenue ($)' + ppa_revenue_row_index = _get_row_index_after( + ppa_revenue_row_name, after_tax_lcoe_and_ppa_price_header_row_title + ) + year_0_ppa_revenue: float = ret[ppa_revenue_row_index][self._pre_revenue_years_count] + if year_0_ppa_revenue != 0.0: + # Shouldn't happen + _log.warning(f'PPA revenue in Year 0 ({year_0_ppa_revenue}) is not zero, this is unexpected.') + + ret[ppa_revenue_row_index][1 : self._pre_revenue_years_count] = [year_0_ppa_revenue] * ( + self._pre_revenue_years_count - 1 + ) + + electricity_to_grid_kwh_row_name = 'Electricity to grid (kWh)' + electricity_to_grid = cf_ret[_get_row_index(electricity_to_grid_kwh_row_name)].copy() + electricity_to_grid_backfilled = [ + 0 if it == '' else (int(it) if is_int(it) else it) for it in electricity_to_grid[1:] + ] + + electricity_to_grid_kwh_row_index = _get_row_index_after( + electricity_to_grid_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title + ) + ret[electricity_to_grid_kwh_row_index][1:] = electricity_to_grid_backfilled + + pv_of_annual_costs_backfilled_row_name = 'Present value of annual costs ($)' + + # Backfill PV of annual costs + annual_costs_backfilled_pv_processed = annual_costs_backfilled.copy() + pv_of_annual_costs_backfilled = [] + for year in range(self._pre_revenue_years_count): + pv_at_year = abs( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + annual_costs_backfilled_pv_processed, + ) + ) + ) + + pv_of_annual_costs_backfilled.append(pv_at_year) + + cost_at_year = annual_costs_backfilled_pv_processed.pop(0) + annual_costs_backfilled_pv_processed[0] = annual_costs_backfilled_pv_processed[0] + cost_at_year + + pv_of_annual_costs_backfilled_row = [ + *[pv_of_annual_costs_backfilled_row_name], + *pv_of_annual_costs_backfilled, + ] + + pv_of_annual_costs_row_name = 'Present value of annual costs ($)' + pv_of_annual_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) + ret[pv_of_annual_costs_row_index][1:] = [ + pv_of_annual_costs_backfilled[0], + *([''] * (self._pre_revenue_years_count - 1)), + ] + + # Backfill PV of electricity to grid + electricity_to_grid_backfilled_pv_processed = electricity_to_grid_backfilled.copy() + pv_of_electricity_to_grid_backfilled_kwh = [] + for year in range(self._pre_revenue_years_count): + pv_at_year = abs( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + electricity_to_grid_backfilled_pv_processed, + ) + ) + ) + + pv_of_electricity_to_grid_backfilled_kwh.append(pv_at_year) + + electricity_to_grid_at_year = electricity_to_grid_backfilled_pv_processed.pop(0) + electricity_to_grid_backfilled_pv_processed[0] = ( + electricity_to_grid_backfilled_pv_processed[0] + electricity_to_grid_at_year + ) + + pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' + for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): + ret[pv_of_annual_energy_row_index][1:] = [ + pv_of_electricity_to_grid_backfilled_kwh[0], + *([''] * (self._pre_revenue_years_count - 1)), + ] + + def backfill_lcoe_nominal() -> None: + pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh + pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ + 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + ] + + lcoe_nominal_backfilled = [] + for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): + entry: float | str = 'NaN' + if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: + entry = ( + pv_of_annual_costs_backfilled_row_values_usd[_year] + * 100 + / pv_of_electricity_to_grid_backfilled_row_kwh[_year] + ) + + lcoe_nominal_backfilled.append(entry) + + lcoe_nominal_row_name = 'LCOE Levelized cost of energy nominal (cents/kWh)' + lcoe_nominal_row_index = _get_row_index(lcoe_nominal_row_name) + + lcoe_nominal_backfilled_entry = lcoe_nominal_backfilled[0] + if isinstance(lcoe_nominal_backfilled_entry, float): + lcoe_nominal_backfilled_entry = round(lcoe_nominal_backfilled_entry, 2) + + ret[lcoe_nominal_row_index][1:] = [ + lcoe_nominal_backfilled_entry, + *([None] * (self._pre_revenue_years_count - 1)), + ] + + backfill_lcoe_nominal() + + def backfill_lppa_metrics() -> None: + pv_of_ppa_revenue_row_index = _get_row_index_after( + 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title + ) + first_year_pv_of_ppa_revenue_usd = round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + ret[ppa_revenue_row_index][1:], + ) + ) + ret[pv_of_ppa_revenue_row_index][1:] = [ + first_year_pv_of_ppa_revenue_usd, + *([None] * (self._pre_revenue_years_count - 1)), + ] + + ppa_price_row_index = _get_row_index('PPA price (cents/kWh)') + year_0_ppa_price: float = ret[ppa_price_row_index][self._pre_revenue_years_count] + if year_0_ppa_price != 0.0: + # Shouldn't happen + _log.warning(f'PPA price in Year 0 ({year_0_ppa_price}) is not zero, this is unexpected.') + + # TODO (maybe) + # ppa_revenue_all_years = [ + # *([year_0_ppa_price] * (self._pre_revenue_years_count - 1)), + # *ret[ppa_price_row_index][self._pre_revenue_years_count :], + # ] + # ret[_get_row_index('PPA price (cents/kWh)')][1:] = ppa_revenue_all_years + + first_year_lppa_cents_per_kwh: float | str = 'NaN' + first_year_pv_annual_energy = ret[_get_row_index(pv_of_annual_energy_row_name)][1] + + if ( + isinstance(first_year_pv_annual_energy, int) or isinstance(first_year_pv_annual_energy, float) + ) and first_year_pv_annual_energy != 0.0: + # Note: expected to be same in all pre-revenue years since both price and revenue are zero until COD + first_year_lppa_cents_per_kwh = round( + first_year_pv_of_ppa_revenue_usd * 100.0 / first_year_pv_annual_energy, 2 + ) + + lppa_row_name = 'LPPA Levelized PPA price nominal (cents/kWh)' + ret[_get_row_index(lppa_row_name)][1:] = [ + first_year_lppa_cents_per_kwh, + *([None] * self._pre_revenue_years_count), + ] + + backfill_lppa_metrics() + + def backfill_lcoh_nominal() -> None: + # WIP... + + heat_provided_kwh_row_name = 'Heat provided (kWh)' + heat_provided_kwh_row_index = _get_row_index( + heat_provided_kwh_row_name, raise_exception_if_not_present=False + ) + if heat_provided_kwh_row_index == -1: + return # No heat provided row, nothing to do + + heat_provided = cf_ret[heat_provided_kwh_row_index].copy() + heat_provided_backfilled = [0 if it == '' else (int(it) if is_int(it) else it) for it in heat_provided[1:]] + + # TODO/WIP maybe duplicate heat provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror + # electricity convention + # heat_provided_kwh_row_index = _get_row_index_after( + # heat_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title + # ) + + ret[heat_provided_kwh_row_index][1:] = heat_provided_backfilled + + # fill PV of heat provided + heat_provided_backfilled_pv_processed = heat_provided_backfilled.copy() + pv_of_heat_provided_backfilled_kwh = [] + for year_ in range(self._pre_revenue_years_count): + pv_at_year_ = abs( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + heat_provided_backfilled_pv_processed, + ) + ) + ) + + pv_of_heat_provided_backfilled_kwh.append(pv_at_year_) + + heat_provided_at_year = heat_provided_backfilled_pv_processed.pop(0) + heat_provided_backfilled_pv_processed[0] = ( + heat_provided_backfilled_pv_processed[0] + heat_provided_at_year + ) + + # FIXME WIP TODO + # pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' + # for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): + # ret[pv_of_annual_energy_row_index][1:] = [ + # pv_of_electricity_to_grid_backfilled_kwh[0], + # *([''] * (self._pre_revenue_years_count - 1)), + # ] + + # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh + pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh + pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ + 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + ] + + lcoh_nominal_backfilled = [] + for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): + entry: float | str = 'NaN' + if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: + entry = ( + pv_of_annual_costs_backfilled_row_values_usd[_year] + * 100 + / pv_of_heat_provided_backfilled_row_kwh[_year] + ) + + lcoh_nominal_backfilled.append(entry) + + lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit + + # Insert new row if LCOE row does not exist (yet) + lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) + + def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: + if row_content is None: + row_content = ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + + ret.insert( + [it[0] for it in ret].index(before_row_name), + [row_name, *row_content], + ) + + def _insert_blank_line_before(before_row_name: str) -> None: + _insert_row_before( + before_row_name, '', ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + ) + + if lcoh_nominal_row_index == -1: + _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) + _insert_blank_line_before('PROJECT STATE INCOME TAXES') + lcoh_nominal_row_index = [it[0] for it in ret].index(lcoh_nominal_row_name) + + lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] + if isinstance(lcoh_nominal_backfilled_entry, float): + lcoh_nominal_backfilled_entry = round(lcoh_nominal_backfilled_entry, 2) + + ret[lcoh_nominal_row_index][1:] = [ + lcoh_nominal_backfilled_entry, + *([None] * (self._pre_revenue_years_count - 1)), + ] + + backfill_lcoh_nominal() + + return ret + + @property + def sam_after_tax_net_cash_flow_all_years(self) -> list[float]: + return _after_tax_net_cash_flow_all_years(self.sam_cash_flow_profile, self._pre_revenue_years_count) + + +@dataclass +class CapacityPaymentRevenueSource: + name: str + + revenue_usd: list[float] + + amount_provided_label: str | None = None + amount_provided: list[float] | None = None + + price_label: str | None = None + price: list[float] | None = None + + +def _after_tax_net_cash_flow_all_years(cash_flow: list[list[Any]], pre_revenue_years_count: int) -> list[float]: + return _net_cash_flow_all_years(cash_flow, pre_revenue_years_count, tax_qualifier='after-tax') + + +def _net_cash_flow_all_years( + cash_flow: list[list[Any]], pre_revenue_years_count: int, tax_qualifier='after-tax' +) -> list[float]: + if tax_qualifier not in ['after-tax', 'pre-tax']: + raise ValueError(f'Invalid tax qualifier: {tax_qualifier}') + + def _get_row(row_name__: str) -> list[Any]: + for r in cash_flow: + if r[0] == row_name__: + return r[1:] + + raise ValueError(f'Could not find row with name {row_name__}') + + def _construction_returns_row(_construction_tax_qualifier: str) -> list[Any]: + returns_row_name = ( + f'Total {_construction_tax_qualifier} returns [construction] ($)' + if tax_qualifier == 'pre-tax' + else f'After-tax net cash flow [construction] ($)' + ) + return _get_row(returns_row_name) + + try: + construction_returns_row = _construction_returns_row(tax_qualifier) + except ValueError as ve: + if tax_qualifier == 'pre-tax': + # TODO log warning + construction_returns_row = _construction_returns_row('after-tax') + else: + raise ve + + return [ + *[float(it) for it in construction_returns_row if is_float(it)], + *[float(it) for it in _get_row(f'Total {tax_qualifier} returns ($)')[pre_revenue_years_count:] if is_float(it)], + ] diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index e72b5c2c9..10c432f89 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -25,11 +25,11 @@ get_sam_cash_flow_profile_tabulated_output, _ppa_pricing_model, _get_fed_and_state_tax_rates, - SamEconomicsCalculations, _get_royalty_rate_schedule, _validate_construction_capex_schedule, _calculate_nominal_discount_rate_from_real_and_inflation_pct, ) +from geophires_x.EconomicsSamCalculations import SamEconomicsCalculations from geophires_x.GeoPHIRESUtils import sig_figs, quantity, is_float # noinspection PyProtectedMember From bae714de17b1a5ce236f3b558bd6140f529e2d0f Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 08:55:38 -0700 Subject: [PATCH 039/127] WIP - Present value of annual heat costs ($) line item --- src/geophires_x/EconomicsSam.py | 3 ++ src/geophires_x/EconomicsSamCalculations.py | 55 ++++++++++++++++----- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 6b05fd247..b18e64f91 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -205,6 +205,9 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: sam_economics: SamEconomicsCalculations = SamEconomicsCalculations( _sam_cash_flow_profile_operational_years=cash_flow_operational_years, pre_revenue_costs_and_cash_flow=calculate_pre_revenue_costs_and_cashflow(model), + electricity_plant_frac_of_capex=model.economics.CAPEX_heat_electricity_plant_ratio.quantity() + .to('dimensionless') + .magnitude, ) sam_economics.overnight_capital_cost.value = ( diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index d55318d25..ee7ef776e 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -24,6 +24,7 @@ @dataclass class SamEconomicsCalculations: + _sam_cash_flow_profile_operational_years: list[list[Any]] """ Operational cash flow profile from SAM financial engine @@ -31,6 +32,11 @@ class SamEconomicsCalculations: pre_revenue_costs_and_cash_flow: PreRevenueCostsAndCashflow + electricity_plant_frac_of_capex: float = 1.0 + """ + Derived from model.economics.CAPEX_heat_electricity_plant_ratio + """ + lcoe_nominal: OutputParameter = field( default_factory=lambda: OutputParameter( UnitType=Units.ENERGYCOST, @@ -354,6 +360,7 @@ def _get_row_index_after(row_name_: str, after_row_name: str) -> int: ] def backfill_lcoe_nominal() -> None: + # FIXME WIP TODO adjust according to CAPEX_heat_electricity_plant_ratio pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : @@ -483,30 +490,34 @@ def backfill_lcoh_nominal() -> None: # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh - pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ + pv_of_annual_heat_costs_backfilled_row_values_usd = [it * (1.-self.electricity_plant_frac_of_capex) for it in pv_of_annual_costs_backfilled_row[ 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ] + ]] lcoh_nominal_backfilled = [] - for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): + for _year in range(len(pv_of_annual_heat_costs_backfilled_row_values_usd)): entry: float | str = 'NaN' if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: entry = ( - pv_of_annual_costs_backfilled_row_values_usd[_year] + pv_of_annual_heat_costs_backfilled_row_values_usd[_year] * 100 / pv_of_heat_provided_backfilled_row_kwh[_year] ) lcoh_nominal_backfilled.append(entry) - lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit - - # Insert new row if LCOE row does not exist (yet) - lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) + def _get_ret_row_index(row_name:str, raise_exception_if_not_present:bool=True) -> int: + try: + return [it[0] for it in ret].index(row_name) + except ValueError as ve: + if raise_exception_if_not_present: + raise ve + else: + return -1 def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: if row_content is None: - row_content = ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + row_content = ['' for _it in ret[_get_ret_row_index(before_row_name)]][1:] ret.insert( [it[0] for it in ret].index(before_row_name), @@ -515,13 +526,18 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before( - before_row_name, '', ['' for _it in ret[[it[0] for it in ret].index(before_row_name)]][1:] + before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:] ) + + lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit + # Insert new row if LCOE row does not exist (yet) + lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) + if lcoh_nominal_row_index == -1: _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) _insert_blank_line_before('PROJECT STATE INCOME TAXES') - lcoh_nominal_row_index = [it[0] for it in ret].index(lcoh_nominal_row_name) + lcoh_nominal_row_index = _get_ret_row_index(lcoh_nominal_row_name) lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] if isinstance(lcoh_nominal_backfilled_entry, float): @@ -532,6 +548,23 @@ def _insert_blank_line_before(before_row_name: str) -> None: *([None] * (self._pre_revenue_years_count - 1)), ] + pv_annual_heat_costs_row_name = 'Present value of annual heat costs ($)' + # Insert new row if LCOE row does not exist (yet) + pv_annual_heat_costs_row_index = _get_ret_row_index(pv_annual_heat_costs_row_name, raise_exception_if_not_present=False) + + if pv_annual_heat_costs_row_index == -1: + _insert_row_before(lcoh_nominal_row_name, pv_annual_heat_costs_row_name, None) + pv_annual_heat_costs_row_index = _get_ret_row_index(pv_annual_heat_costs_row_name) + + pv_annual_heat_costs_entry = pv_of_annual_heat_costs_backfilled_row_values_usd[0] + if isinstance(pv_annual_heat_costs_entry, float): + pv_annual_heat_costs_entry = round(pv_annual_heat_costs_entry, 2) + + ret[pv_annual_heat_costs_row_index][1:] = [ + pv_annual_heat_costs_entry, + *([None] * (self._pre_revenue_years_count - 1)), + ] + backfill_lcoh_nominal() return ret From 329f28aaf1926762c4f552b0e539b577259ac170 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 09:08:58 -0700 Subject: [PATCH 040/127] WIP - Present value of annual heat provided (kWh) line item --- .pre-commit-config.yaml | 2 +- src/geophires_x/EconomicsSamCalculations.py | 62 ++++++++++++++++----- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ea79e7443..5dff8e903 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # pre-commit install --install-hooks # To update the versions: # pre-commit autoupdate -exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg|src/geophires_x(?!/(GEOPHIRESv3|EconomicsSam|EconomicsSamCashFlow|EconomicsUtils|EconomicsSamPreRevenue|SurfacePlantUtils|NumpyUtils|UPPReservoir)\.py))(/|$)' +exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg|src/geophires_x(?!/(GEOPHIRESv3|EconomicsSam|EconomicsSamCashFlow|EconomicsUtils|EconomicsSamPreRevenue|EconomicsSamCalculations|SurfacePlantUtils|NumpyUtils|UPPReservoir)\.py))(/|$)' # Note the order is intentional to avoid multiple passes of the hooks repos: - repo: https://github.com/astral-sh/ruff-pre-commit diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index ee7ef776e..ad2b63c0b 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -9,9 +9,18 @@ from geophires_x.EconomicsSamCashFlow import _SAM_CASH_FLOW_NAN_STR from geophires_x.EconomicsSamPreRevenue import PreRevenueCostsAndCashflow, _AFTER_TAX_NET_CASH_FLOW_ROW_NAME -from geophires_x.EconomicsUtils import overnight_capital_cost_output_parameter, total_capex_parameter_output_parameter, \ - royalty_cost_output_parameter, after_tax_irr_parameter, nominal_discount_rate_parameter, wacc_output_parameter, \ - moic_parameter, project_vir_parameter, project_payback_period_parameter, investment_tax_credit_output_parameter +from geophires_x.EconomicsUtils import ( + overnight_capital_cost_output_parameter, + total_capex_parameter_output_parameter, + royalty_cost_output_parameter, + after_tax_irr_parameter, + nominal_discount_rate_parameter, + wacc_output_parameter, + moic_parameter, + project_vir_parameter, + project_payback_period_parameter, + investment_tax_credit_output_parameter, +) from geophires_x.GeoPHIRESUtils import is_float, quantity, is_int from geophires_x.Parameter import OutputParameter from geophires_x.Units import Units, EnergyCostUnit, CurrencyUnit, convertible_unit @@ -490,9 +499,12 @@ def backfill_lcoh_nominal() -> None: # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh - pv_of_annual_heat_costs_backfilled_row_values_usd = [it * (1.-self.electricity_plant_frac_of_capex) for it in pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ]] + pv_of_annual_heat_costs_backfilled_row_values_usd = [ + it * (1.0 - self.electricity_plant_frac_of_capex) + for it in pv_of_annual_costs_backfilled_row[ + 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + ] + ] lcoh_nominal_backfilled = [] for _year in range(len(pv_of_annual_heat_costs_backfilled_row_values_usd)): @@ -500,13 +512,12 @@ def backfill_lcoh_nominal() -> None: if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: entry = ( pv_of_annual_heat_costs_backfilled_row_values_usd[_year] - * 100 / pv_of_heat_provided_backfilled_row_kwh[_year] ) lcoh_nominal_backfilled.append(entry) - def _get_ret_row_index(row_name:str, raise_exception_if_not_present:bool=True) -> int: + def _get_ret_row_index(row_name: str, raise_exception_if_not_present: bool = True) -> int: try: return [it[0] for it in ret].index(row_name) except ValueError as ve: @@ -525,10 +536,7 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An ) def _insert_blank_line_before(before_row_name: str) -> None: - _insert_row_before( - before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:] - ) - + _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit # Insert new row if LCOE row does not exist (yet) @@ -549,8 +557,10 @@ def _insert_blank_line_before(before_row_name: str) -> None: ] pv_annual_heat_costs_row_name = 'Present value of annual heat costs ($)' - # Insert new row if LCOE row does not exist (yet) - pv_annual_heat_costs_row_index = _get_ret_row_index(pv_annual_heat_costs_row_name, raise_exception_if_not_present=False) + # Insert new row if PV of heat costs row does not exist (yet) + pv_annual_heat_costs_row_index = _get_ret_row_index( + pv_annual_heat_costs_row_name, raise_exception_if_not_present=False + ) if pv_annual_heat_costs_row_index == -1: _insert_row_before(lcoh_nominal_row_name, pv_annual_heat_costs_row_name, None) @@ -558,13 +568,35 @@ def _insert_blank_line_before(before_row_name: str) -> None: pv_annual_heat_costs_entry = pv_of_annual_heat_costs_backfilled_row_values_usd[0] if isinstance(pv_annual_heat_costs_entry, float): - pv_annual_heat_costs_entry = round(pv_annual_heat_costs_entry, 2) + pv_annual_heat_costs_entry = int(round(pv_annual_heat_costs_entry, 2)) ret[pv_annual_heat_costs_row_index][1:] = [ pv_annual_heat_costs_entry, *([None] * (self._pre_revenue_years_count - 1)), ] + # === + + pv_of_annual_heat_provided_row_name = 'Present value of annual heat provided (kWh)' # FIXME WIP units + # pv_of_heat_provided_backfilled_row_kwh + # Insert new row if PV of heat provided row does not exist (yet) + pv_of_annual_heat_provided_row_index = _get_ret_row_index( + pv_of_annual_heat_provided_row_name, raise_exception_if_not_present=False + ) + + if pv_of_annual_heat_provided_row_index == -1: + _insert_row_before(lcoh_nominal_row_name, pv_of_annual_heat_provided_row_name, None) + pv_of_annual_heat_provided_row_index = _get_ret_row_index(pv_of_annual_heat_provided_row_name) + + pv_annual_heat_provided_entry = pv_of_heat_provided_backfilled_row_kwh[0] + if isinstance(pv_annual_heat_provided_entry, float): + pv_annual_heat_provided_entry = int(round(pv_annual_heat_provided_entry, 2)) + + ret[pv_of_annual_heat_provided_row_index][1:] = [ + pv_annual_heat_provided_entry, + *([None] * (self._pre_revenue_years_count - 1)), + ] + backfill_lcoh_nominal() return ret From 8ade446c8864c6ed575700fb2439594aeaec9684 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 09:23:17 -0700 Subject: [PATCH 041/127] regen example_SAM-single-owner-PPA-7/8 --- src/geophires_x/EconomicsSamCalculations.py | 3 - .../example_SAM-single-owner-PPA-7_chp.out | 13 +- .../example_SAM-single-owner-PPA-8_heat.out | 356 +++++++++--------- 3 files changed, 188 insertions(+), 184 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index ad2b63c0b..d3e7c716b 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -575,10 +575,7 @@ def _insert_blank_line_before(before_row_name: str) -> None: *([None] * (self._pre_revenue_years_count - 1)), ] - # === - pv_of_annual_heat_provided_row_name = 'Present value of annual heat provided (kWh)' # FIXME WIP units - # pv_of_heat_provided_backfilled_row_kwh # Insert new row if PV of heat provided row does not exist (yet) pv_of_annual_heat_provided_row_index = _get_ret_row_index( pv_of_annual_heat_provided_row_name, raise_exception_if_not_present=False diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 7a984dc44..2bf61e7d1 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 07:57 - Calculation Time: 1.767 sec + Simulation Date: 2026-03-31 + Simulation Time: 09:21 + Calculation Time: 1.771 sec ***SUMMARY OF RESULTS*** @@ -133,7 +133,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 53.91 MW Average Total Electricity Generation: 53.66 MW @@ -257,7 +256,7 @@ Electricity to grid (kWh) 0.0 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 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 -Heat provided (kWh) 0 381,460,384 382,187,913 382,409,441 382,540,424 382,631,925 382,694,226 382,631,365 381,765,853 381,029,906 382,099,920 382,366,229 382,512,427 382,611,622 382,682,690 382,677,104 382,146,699 380,838,811 381,982,851 382,316,520 382,481,666 382,589,730 382,667,792 382,696,629 382,392,624 380,884,452 381,807,596 382,258,195 382,447,583 382,566,081 382,647,840 +Heat provided (kWh) 0 0 0 381,460,384 382,187,913 382,409,441 382,540,424 382,631,925 382,694,226 382,631,365 381,765,853 381,029,906 382,099,920 382,366,229 382,512,427 382,611,622 382,682,690 382,677,104 382,146,699 380,838,811 381,982,851 382,316,520 382,481,666 382,589,730 382,667,792 382,696,629 382,392,624 380,884,452 381,807,596 382,258,195 382,447,583 382,566,081 382,647,840 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 @@ -365,6 +364,10 @@ Present value of PPA revenue ($) 174,295,914 Present value of annual energy nominal (kWh) 1,777,787,001 LPPA Levelized PPA price nominal (cents/kWh) 9.80 +Present value of annual heat costs ($) 21,328,329 +Present value of annual heat provided (kWh) 1,893,894,412 +LCOH Levelized cost of heating nominal ($/kWh) 0.01 + PROJECT STATE INCOME TAXES EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 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 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index a98eee7d7..f9da52775 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 08:47 - Calculation Time: 1.812 sec + Simulation Date: 2026-03-31 + Simulation Time: 09:21 + Calculation Time: 1.780 sec ***SUMMARY OF RESULTS*** @@ -213,130 +213,130 @@ Simulation Metadata *************************** * 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] (%) 7.50 52.50 40.0 -Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 plus: -Inflation cost [construction] ($) -447,866 -6,354,766 -7,361,070 +Inflation cost [construction] ($) -447,866 -6,354,766 -7,361,070 plus: -Royalty supplemental payments [construction] ($) 0 0 0 +Royalty supplemental payments [construction] ($) 0 0 0 equals: -Nominal capital expenditure [construction] ($) -17,035,483 -122,468,085 -95,828,361 +Nominal capital expenditure [construction] ($) -17,035,483 -122,468,085 -95,828,361 -Issuance of equity [construction] ($) 17,035,483 36,740,426 28,748,508 -Issuance of debt [construction] ($) 0 85,727,660 67,079,852 -Debt balance [construction] ($) 0 85,727,660 161,808,916 -Debt interest payment [construction] ($) 0 0 9,001,404 +Issuance of equity [construction] ($) 17,035,483 36,740,426 28,748,508 +Issuance of debt [construction] ($) 0 85,727,660 67,079,852 +Debt balance [construction] ($) 0 85,727,660 161,808,916 +Debt interest payment [construction] ($) 0 0 9,001,404 -Installed cost [construction] ($) -17,035,483 -122,468,085 -104,829,765 -After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 +Installed cost [construction] ($) -17,035,483 -122,468,085 -104,829,765 +After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 ENERGY -Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 (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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Heat provided (kWh) 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 +Heat provided (kWh) 0 0 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -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 +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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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 -Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 -Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -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 122,166,666 -Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 +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 122,166,666 +Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 -Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 +Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 OPERATING EXPENSES -O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 -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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 -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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 +O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 +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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 +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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 OPERATING ACTIVITIES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 INVESTING ACTIVITIES -Total installed cost ($) -244,333,333 -Debt closing costs ($) 0 -Debt up-front fee ($) 0 +Total installed cost ($) -244,333,333 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 minus: -Total IBI income ($) 0 -Total CBI income ($) 0 +Total IBI income ($) 0 +Total CBI income ($) 0 equals: -Purchase of property ($) -244,333,333 +Purchase of property ($) -244,333,333 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) 82,524,416 -Size of debt ($) 161,808,916 +Issuance of equity ($) 82,524,416 +Size of debt ($) 161,808,916 minus: -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 equals: -Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 -Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 Pre-tax Returns: -Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Issuance of equity ($) 82,524,416 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 After-tax Returns: -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 -Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 - -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 -After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 + +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 +After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 -PPA 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 0 0 -Electricity to 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 +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 +PPA 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 0 0 +Electricity to 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 Present value of annual costs ($) 197,491,957 Present value of annual energy nominal (kWh) 0 @@ -346,114 +346,118 @@ Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN +Present value of annual heat costs ($) 197,491,957 +Present value of annual heat provided (kWh) 12,908,305,064 +LCOH Levelized cost of heating nominal ($/kWh) 0.02 + PROJECT STATE INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -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 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 +Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 -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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 CASH INCENTIVES -Federal IBI income ($) 0 -State IBI income ($) 0 -Utility IBI income ($) 0 -Other IBI income ($) 0 -Total IBI income ($) 0 - -Federal CBI income ($) 0 -State CBI income ($) 0 -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 IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 -Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +Debt balance ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 -DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 +Cash available for debt service (CAFDS) ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 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 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 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 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 -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 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +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 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 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 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 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- From 62a37288eb55d9b668e4bbfab4499b374a547bdd Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:38:00 -0700 Subject: [PATCH 042/127] LCOH line items in MMBTU --- src/geophires_x/Economics.py | 11 +- src/geophires_x/EconomicsSam.py | 20 + src/geophires_x/EconomicsSamCalculations.py | 35 +- src/geophires_x/EconomicsUtils.py | 12 +- .../example_SAM-single-owner-PPA-7_chp.out | 8 +- .../example_SAM-single-owner-PPA-8_heat.out | 354 +++++++++--------- 6 files changed, 235 insertions(+), 205 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 1e8d87c34..28c7f96a5 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -16,7 +16,8 @@ project_payback_period_parameter, inflation_cost_during_construction_output_parameter, \ interest_during_construction_output_parameter, total_capex_parameter_output_parameter, \ overnight_capital_cost_output_parameter, CONSTRUCTION_CAPEX_SCHEDULE_PARAMETER_NAME, \ - _YEAR_INDEX_VALUE_EXPLANATION_SNIPPET, investment_tax_credit_output_parameter, expand_schedule_dsl + _YEAR_INDEX_VALUE_EXPLANATION_SNIPPET, investment_tax_credit_output_parameter, expand_schedule_dsl, \ + lcoh_output_parameter from geophires_x.GeoPHIRESUtils import quantity from geophires_x.OptionList import Configuration, WellDrillingCostCorrelation, EconomicModel, EndUseOptions, PlantType, \ _WellDrillingCostCorrelationCitation @@ -1934,13 +1935,7 @@ def __init__(self, model: Model): CurrentUnits=EnergyCostUnit.CENTSSPERKWH, ToolTipText="For SAM economic models, this is the nominal LCOE value (as opposed to real)." ) - self.LCOH = self.OutputParameterDict[self.LCOH.Name] = OutputParameter( - Name="LCOH", - display_name='Direct-Use heat breakeven price (LCOH)', - UnitType=Units.ENERGYCOST, - PreferredUnits=EnergyCostUnit.DOLLARSPERMMBTU, # $/MMBTU - CurrentUnits=EnergyCostUnit.DOLLARSPERMMBTU - ) + self.LCOH = self.OutputParameterDict[self.LCOH.Name] = lcoh_output_parameter() stimulation_contingency_and_indirect_costs_tooltip = ( f'plus {self.contingency_percentage.quantity().to(convertible_unit("%")).magnitude:g}% contingency ' diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index b18e64f91..cee555de1 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -271,6 +271,9 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: sam_economics.lcoe_nominal.value = sf( _get_lcoe_nominal_cents_per_kwh(single_owner, sam_economics.sam_cash_flow_profile, model) ) + sam_economics.lcoh_nominal.value = sf( + _get_lcoh_nominal_usd_per_mmbtu(single_owner, sam_economics.sam_cash_flow_profile, model) + ) if _has_capacity_payment_revenue_sources(model): sam_economics.capacity_payment_revenue_sources = _get_capacity_payment_revenue_sources(model) @@ -302,6 +305,23 @@ def _get_lcoe_nominal_cents_per_kwh( return ret +# noinspection PyUnusedLocal +def _get_lcoh_nominal_usd_per_mmbtu( + single_owner: Singleowner, sam_cash_flow_profile: list[list[Any]], model: Model +) -> float | None: + lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/MMBTU)' # FIXME WIP unit + try: + lcoh_row = _cash_flow_profile_row(sam_cash_flow_profile, lcoh_nominal_row_name) + except StopIteration: + return None + + ret = lcoh_row[0] + + # model.logger.info(f'Single Owner LCOE nominal (cents/kWh): {single_owner.Outputs.lcoe_nom}'); + + return ret + + # noinspection PyUnusedLocal def _get_after_tax_irr_pct(single_owner: Singleowner, cash_flow: list[list[Any]], model: Model) -> float: pre_revenue_costs: PreRevenueCostsAndCashflow = calculate_pre_revenue_costs_and_cashflow(model) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index d3e7c716b..aca1fb5b7 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -20,6 +20,7 @@ project_vir_parameter, project_payback_period_parameter, investment_tax_credit_output_parameter, + lcoh_output_parameter, ) from geophires_x.GeoPHIRESUtils import is_float, quantity, is_int from geophires_x.Parameter import OutputParameter @@ -53,6 +54,8 @@ class SamEconomicsCalculations: ) ) + lcoh_nominal: OutputParameter = field(default_factory=lcoh_output_parameter) + overnight_capital_cost: OutputParameter = field(default_factory=overnight_capital_cost_output_parameter) capex: OutputParameter = field(default_factory=total_capex_parameter_output_parameter) @@ -489,15 +492,6 @@ def backfill_lcoh_nominal() -> None: heat_provided_backfilled_pv_processed[0] + heat_provided_at_year ) - # FIXME WIP TODO - # pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' - # for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): - # ret[pv_of_annual_energy_row_index][1:] = [ - # pv_of_electricity_to_grid_backfilled_kwh[0], - # *([''] * (self._pre_revenue_years_count - 1)), - # ] - - # pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh pv_of_annual_heat_costs_backfilled_row_values_usd = [ it * (1.0 - self.electricity_plant_frac_of_capex) @@ -506,13 +500,17 @@ def backfill_lcoh_nominal() -> None: ] ] + lcoh_heat_provided_unit: str = 'MMBTU' # FIXME TODO should be derived from LCOH preferred units + lcoh_nominal_backfilled = [] for _year in range(len(pv_of_annual_heat_costs_backfilled_row_values_usd)): entry: float | str = 'NaN' if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: entry = ( pv_of_annual_heat_costs_backfilled_row_values_usd[_year] - / pv_of_heat_provided_backfilled_row_kwh[_year] + / quantity(pv_of_heat_provided_backfilled_row_kwh[_year], 'kWh') + .to(lcoh_heat_provided_unit) + .magnitude ) lcoh_nominal_backfilled.append(entry) @@ -531,14 +529,14 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An row_content = ['' for _it in ret[_get_ret_row_index(before_row_name)]][1:] ret.insert( - [it[0] for it in ret].index(before_row_name), + _get_ret_row_index(before_row_name), [row_name, *row_content], ) def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) - lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/kWh)' # FIXME WIP unit + lcoh_nominal_row_name = f'LCOH Levelized cost of heating nominal ($/{lcoh_heat_provided_unit})' # Insert new row if LCOE row does not exist (yet) lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) @@ -575,7 +573,10 @@ def _insert_blank_line_before(before_row_name: str) -> None: *([None] * (self._pre_revenue_years_count - 1)), ] - pv_of_annual_heat_provided_row_name = 'Present value of annual heat provided (kWh)' # FIXME WIP units + pv_of_annual_heat_provided_unit: str = lcoh_heat_provided_unit + pv_of_annual_heat_provided_row_name = ( + f'Present value of annual heat provided ' f'({pv_of_annual_heat_provided_unit})' + ) # Insert new row if PV of heat provided row does not exist (yet) pv_of_annual_heat_provided_row_index = _get_ret_row_index( pv_of_annual_heat_provided_row_name, raise_exception_if_not_present=False @@ -586,8 +587,12 @@ def _insert_blank_line_before(before_row_name: str) -> None: pv_of_annual_heat_provided_row_index = _get_ret_row_index(pv_of_annual_heat_provided_row_name) pv_annual_heat_provided_entry = pv_of_heat_provided_backfilled_row_kwh[0] - if isinstance(pv_annual_heat_provided_entry, float): - pv_annual_heat_provided_entry = int(round(pv_annual_heat_provided_entry, 2)) + if any(isinstance(pv_annual_heat_provided_entry, it) for it in [int, float]): + pv_annual_heat_provided_entry = int( + round( + quantity(pv_annual_heat_provided_entry, 'kWh').to(pv_of_annual_heat_provided_unit).magnitude, 2 + ) + ) ret[pv_of_annual_heat_provided_row_index][1:] = [ pv_annual_heat_provided_entry, diff --git a/src/geophires_x/EconomicsUtils.py b/src/geophires_x/EconomicsUtils.py index ab54cd14c..a8b76ae4c 100644 --- a/src/geophires_x/EconomicsUtils.py +++ b/src/geophires_x/EconomicsUtils.py @@ -2,7 +2,7 @@ from geophires_x.GeoPHIRESUtils import is_float, is_int from geophires_x.Parameter import OutputParameter, SCHEDULE_DSL_MULTIPLIER_SYMBOL -from geophires_x.Units import Units, PercentUnit, TimeUnit, CurrencyUnit, CurrencyFrequencyUnit +from geophires_x.Units import Units, PercentUnit, TimeUnit, CurrencyUnit, CurrencyFrequencyUnit, EnergyCostUnit CONSTRUCTION_CAPEX_SCHEDULE_PARAMETER_NAME = 'Construction CAPEX Schedule' @@ -50,6 +50,16 @@ def BuildPricingModel( return Price +def lcoh_output_parameter() -> OutputParameter: + return OutputParameter( + Name="LCOH", + display_name='Direct-Use heat breakeven price (LCOH)', + UnitType=Units.ENERGYCOST, + PreferredUnits=EnergyCostUnit.DOLLARSPERMMBTU, # $/MMBTU + CurrentUnits=EnergyCostUnit.DOLLARSPERMMBTU, + ) + + _SAM_EM_MOIC_RETURNS_TAX_QUALIFIER = 'after-tax' diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 2bf61e7d1..483e60750 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-31 - Simulation Time: 09:21 - Calculation Time: 1.771 sec + Simulation Time: 10:37 + Calculation Time: 1.775 sec ***SUMMARY OF RESULTS*** @@ -365,8 +365,8 @@ Present value of annual energy nominal (kWh) 1,777,787,001 LPPA Levelized PPA price nominal (cents/kWh) 9.80 Present value of annual heat costs ($) 21,328,329 -Present value of annual heat provided (kWh) 1,893,894,412 -LCOH Levelized cost of heating nominal ($/kWh) 0.01 +Present value of annual heat provided (MMBTU) 6,462,235 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.30 PROJECT STATE INCOME TAXES EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index f9da52775..e669234f7 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-31 - Simulation Time: 09:21 - Calculation Time: 1.780 sec + Simulation Time: 10:37 + Calculation Time: 1.776 sec ***SUMMARY OF RESULTS*** @@ -213,130 +213,130 @@ Simulation Metadata *************************** * 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] (%) 7.50 52.50 40.0 -Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -16,587,617 -116,113,319 -88,467,291 plus: -Inflation cost [construction] ($) -447,866 -6,354,766 -7,361,070 +Inflation cost [construction] ($) -447,866 -6,354,766 -7,361,070 plus: -Royalty supplemental payments [construction] ($) 0 0 0 +Royalty supplemental payments [construction] ($) 0 0 0 equals: -Nominal capital expenditure [construction] ($) -17,035,483 -122,468,085 -95,828,361 +Nominal capital expenditure [construction] ($) -17,035,483 -122,468,085 -95,828,361 -Issuance of equity [construction] ($) 17,035,483 36,740,426 28,748,508 -Issuance of debt [construction] ($) 0 85,727,660 67,079,852 -Debt balance [construction] ($) 0 85,727,660 161,808,916 -Debt interest payment [construction] ($) 0 0 9,001,404 +Issuance of equity [construction] ($) 17,035,483 36,740,426 28,748,508 +Issuance of debt [construction] ($) 0 85,727,660 67,079,852 +Debt balance [construction] ($) 0 85,727,660 161,808,916 +Debt interest payment [construction] ($) 0 0 9,001,404 -Installed cost [construction] ($) -17,035,483 -122,468,085 -104,829,765 -After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 +Installed cost [construction] ($) -17,035,483 -122,468,085 -104,829,765 +After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,748,508 ENERGY -Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 (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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Heat provided (kWh) 0 0 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 +Heat provided (kWh) 0 0 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -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 +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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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 -Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 -Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 -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 122,166,666 -Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 +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 122,166,666 +Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 -Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 +Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 OPERATING EXPENSES -O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 -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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 -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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 +O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 +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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 +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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 OPERATING ACTIVITIES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 INVESTING ACTIVITIES -Total installed cost ($) -244,333,333 -Debt closing costs ($) 0 -Debt up-front fee ($) 0 +Total installed cost ($) -244,333,333 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 minus: -Total IBI income ($) 0 -Total CBI income ($) 0 +Total IBI income ($) 0 +Total CBI income ($) 0 equals: -Purchase of property ($) -244,333,333 +Purchase of property ($) -244,333,333 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) -244,333,333 0 0 0 0 0 0 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 ($) 82,524,416 -Size of debt ($) 161,808,916 +Issuance of equity ($) 82,524,416 +Size of debt ($) 161,808,916 minus: -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 equals: -Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Cash flow from financing activities ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 -Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 Pre-tax Returns: -Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Issuance of equity ($) 82,524,416 +Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 After-tax Returns: -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 -Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 - -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 -After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 +Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 + +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 +After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 -PPA 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 0 0 -Electricity to 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 +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 +PPA 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 0 0 +Electricity to 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 Present value of annual costs ($) 197,491,957 Present value of annual energy nominal (kWh) 0 @@ -347,117 +347,117 @@ Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN Present value of annual heat costs ($) 197,491,957 -Present value of annual heat provided (kWh) 12,908,305,064 -LCOH Levelized cost of heating nominal ($/kWh) 0.02 +Present value of annual heat provided (MMBTU) 44,044,958 +LCOH Levelized cost of heating nominal ($/MMBTU) 4.48 PROJECT STATE INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -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 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 +Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 -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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 CASH INCENTIVES -Federal IBI income ($) 0 -State IBI income ($) 0 -Utility IBI income ($) 0 -Other IBI income ($) 0 -Total IBI income ($) 0 - -Federal CBI income ($) 0 -State CBI income ($) 0 -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 IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 73,300,000 0 0 0 0 0 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 ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 -Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +Debt balance ($) 161,808,916 160,095,942 158,263,059 156,301,875 154,203,407 151,958,047 149,555,512 146,984,799 144,234,136 141,290,927 138,141,693 134,772,013 131,166,456 127,308,509 123,180,506 118,763,543 114,037,392 108,980,411 103,569,441 97,779,703 91,584,684 84,956,013 77,863,336 70,274,171 62,153,764 53,464,929 44,167,875 34,220,028 23,575,831 12,186,541 0 +Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 +Debt principal payment ($) 0 1,712,974 1,832,883 1,961,184 2,098,467 2,245,360 2,402,535 2,570,713 2,750,663 2,943,209 3,149,234 3,369,680 3,605,558 3,857,947 4,128,003 4,416,963 4,726,151 5,056,981 5,410,970 5,789,738 6,195,019 6,628,671 7,092,678 7,589,165 8,120,407 8,688,835 9,297,054 9,947,847 10,644,197 11,389,290 12,186,541 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 -Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 -DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 +Cash available for debt service (CAFDS) ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 +DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 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 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 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 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 -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 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +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 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 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 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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ From 2195473d5b74a974c8649a01c317453a29b52750 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:51:24 -0700 Subject: [PATCH 043/127] populate case report LCOH --- src/geophires_x/Economics.py | 15 ++++++++++++--- src/geophires_x/EconomicsSam.py | 8 +++++--- .../example_SAM-single-owner-PPA-7_chp.out | 6 +++--- .../example_SAM-single-owner-PPA-8_heat.out | 6 +++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 28c7f96a5..cb5a2ab2b 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -490,9 +490,18 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: # Designated as nominal (as opposed to real) in parameter tooltip text LCOE = econ.sam_economics_calculations.lcoe_nominal.quantity().to( convertible_unit(econ.LCOE.CurrentUnits.value)).magnitude - else: - # FIXME WIP calculate LCOH/LCOC as applicable - pass + + if model.surfaceplant.enduse_option.value.has_direct_use_heat_component: + if econ.sam_economics_calculations.lcoh_nominal.value is not None: + # Designated as nominal (as opposed to real) in parameter tooltip text + LCOH = econ.sam_economics_calculations.lcoh_nominal.quantity().to( + convertible_unit(econ.LCOH.CurrentUnits.value)).magnitude + else: + # FIXME TODO probably should not happen; relevant to + # https://github.com/NatLabRockies/GEOPHIRES-X/issues/452?title=Deduplicate+calls+to+calculate_pre_revenue_costs_and_cashflow + pass + + # FIXME WIP LCOC else: if econ.econmodel.value != EconomicModel.BICYCLE: diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index cee555de1..16d7ff53b 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -267,17 +267,19 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: .magnitude ) + if _has_capacity_payment_revenue_sources(model): + sam_economics.capacity_payment_revenue_sources = _get_capacity_payment_revenue_sources(model) + # Note that this calculation is order-dependent on sam_economics.nominal_discount_rate sam_economics.lcoe_nominal.value = sf( _get_lcoe_nominal_cents_per_kwh(single_owner, sam_economics.sam_cash_flow_profile, model) ) + + # Note that this calculation is order-dependent on sam_economics.capacity_payment_revenue_sources sam_economics.lcoh_nominal.value = sf( _get_lcoh_nominal_usd_per_mmbtu(single_owner, sam_economics.sam_cash_flow_profile, model) ) - if _has_capacity_payment_revenue_sources(model): - sam_economics.capacity_payment_revenue_sources = _get_capacity_payment_revenue_sources(model) - return sam_economics diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 483e60750..b22496caf 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-31 - Simulation Time: 10:37 - Calculation Time: 1.775 sec + Simulation Time: 10:50 + Calculation Time: 1.794 sec ***SUMMARY OF RESULTS*** @@ -15,7 +15,7 @@ Simulation Metadata Average Net Electricity Production: 45.52 MW Average Direct-Use Heat Production: 48.48 MW Electricity breakeven price: 10.31 cents/kWh - Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU + Direct-Use heat breakeven price (LCOH): 3.30 USD/MMBTU Total CAPEX: 278.39 MUSD Total CAPEX ($/kW): 6082 USD/kW Number of production wells: 6 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index e669234f7..1e30ff755 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,14 +6,14 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-03-31 - Simulation Time: 10:37 - Calculation Time: 1.776 sec + Simulation Time: 10:50 + Calculation Time: 1.783 sec ***SUMMARY OF RESULTS*** End-Use Option: Direct-Use Heat Average Direct-Use Heat Production: 330.46 MW - Direct-Use heat breakeven price (LCOH): 0.00 USD/MMBTU + Direct-Use heat breakeven price (LCOH): 4.48 USD/MMBTU Total CAPEX: 244.33 MUSD Number of production wells: 6 Number of injection wells: 4 From 9b2e01829d4790cd9a9f4a4d100bb7112e29e338 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 07:58:04 -0700 Subject: [PATCH 044/127] increase test_hip_ra_monte_carlo threshold --- .../test_geophires_monte_carlo.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/geophires_monte_carlo_tests/test_geophires_monte_carlo.py b/tests/geophires_monte_carlo_tests/test_geophires_monte_carlo.py index f958e65d5..367373e1d 100644 --- a/tests/geophires_monte_carlo_tests/test_geophires_monte_carlo.py +++ b/tests/geophires_monte_carlo_tests/test_geophires_monte_carlo.py @@ -165,9 +165,11 @@ def test_hip_ra_monte_carlo(self): # changes), then it probably means the expected range or settings file need to be adjusted to 'guarantee' # the results can be confidently asserted. (Such as in # https://github.com/NREL/GEOPHIRES-X/pull/178/commits/ec4db42fca5a90715ceb5143e18315d5f3d782b7) - # Failure 2025-04-17, noting here in comment but not changing value for now: + # Failure 2025-04-17: # https://github.com/softwareengineerprogrammer/GEOPHIRES/actions/runs/14523599534/job/40750024435?pr=69 - self.assertLess(json_result['Producible Electricity']['median'], 1000) + # Failure 2026-03-01: + # https://github.com/softwareengineerprogrammer/GEOPHIRES/actions/runs/23811699882/job/69400186074?pr=144 + self.assertLess(json_result['Producible Electricity']['median'], 1005) self.assertGreater(json_result['Producible Electricity']['median'], 20) def test_hip_ra_x_monte_carlo(self): From c9216a527ee7f4007193903e4f0a47696cd1b5c7 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:04:37 -0700 Subject: [PATCH 045/127] remove redundant _get_ret_row_index --- src/geophires_x/EconomicsSamCalculations.py | 30 ++++++++------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index aca1fb5b7..64f475ba1 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -248,11 +248,12 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: ret = cf_ret.copy() - __row_names: list[str] = [it[0] for it in ret] + # __row_names: list[str] = [it[0] for it in ret] def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) -> int: try: - return __row_names.index(row_name_) + # return __row_names.index(row_name_) + return [it[0] for it in ret].index(row_name_) except ValueError as ve: if raise_exception_if_not_present: raise ve @@ -262,7 +263,7 @@ def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) def _get_row_indexes(row_name_: str, after_row_name: str | None = None) -> list[int]: after_criteria_met: bool = True if after_row_name is None else False indexes = [] - for idx, _row_name_ in enumerate(__row_names): + for idx, _row_name_ in enumerate([it[0] for it in ret]): if _row_name_ == after_row_name: after_criteria_met = True @@ -515,21 +516,12 @@ def backfill_lcoh_nominal() -> None: lcoh_nominal_backfilled.append(entry) - def _get_ret_row_index(row_name: str, raise_exception_if_not_present: bool = True) -> int: - try: - return [it[0] for it in ret].index(row_name) - except ValueError as ve: - if raise_exception_if_not_present: - raise ve - else: - return -1 - def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: if row_content is None: - row_content = ['' for _it in ret[_get_ret_row_index(before_row_name)]][1:] + row_content = ['' for _it in ret[_get_row_index(before_row_name)]][1:] ret.insert( - _get_ret_row_index(before_row_name), + _get_row_index(before_row_name), [row_name, *row_content], ) @@ -543,7 +535,7 @@ def _insert_blank_line_before(before_row_name: str) -> None: if lcoh_nominal_row_index == -1: _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) _insert_blank_line_before('PROJECT STATE INCOME TAXES') - lcoh_nominal_row_index = _get_ret_row_index(lcoh_nominal_row_name) + lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name) lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] if isinstance(lcoh_nominal_backfilled_entry, float): @@ -556,13 +548,13 @@ def _insert_blank_line_before(before_row_name: str) -> None: pv_annual_heat_costs_row_name = 'Present value of annual heat costs ($)' # Insert new row if PV of heat costs row does not exist (yet) - pv_annual_heat_costs_row_index = _get_ret_row_index( + pv_annual_heat_costs_row_index = _get_row_index( pv_annual_heat_costs_row_name, raise_exception_if_not_present=False ) if pv_annual_heat_costs_row_index == -1: _insert_row_before(lcoh_nominal_row_name, pv_annual_heat_costs_row_name, None) - pv_annual_heat_costs_row_index = _get_ret_row_index(pv_annual_heat_costs_row_name) + pv_annual_heat_costs_row_index = _get_row_index(pv_annual_heat_costs_row_name) pv_annual_heat_costs_entry = pv_of_annual_heat_costs_backfilled_row_values_usd[0] if isinstance(pv_annual_heat_costs_entry, float): @@ -578,13 +570,13 @@ def _insert_blank_line_before(before_row_name: str) -> None: f'Present value of annual heat provided ' f'({pv_of_annual_heat_provided_unit})' ) # Insert new row if PV of heat provided row does not exist (yet) - pv_of_annual_heat_provided_row_index = _get_ret_row_index( + pv_of_annual_heat_provided_row_index = _get_row_index( pv_of_annual_heat_provided_row_name, raise_exception_if_not_present=False ) if pv_of_annual_heat_provided_row_index == -1: _insert_row_before(lcoh_nominal_row_name, pv_of_annual_heat_provided_row_name, None) - pv_of_annual_heat_provided_row_index = _get_ret_row_index(pv_of_annual_heat_provided_row_name) + pv_of_annual_heat_provided_row_index = _get_row_index(pv_of_annual_heat_provided_row_name) pv_annual_heat_provided_entry = pv_of_heat_provided_backfilled_row_kwh[0] if any(isinstance(pv_annual_heat_provided_entry, it) for it in [int, float]): From 3fdb89578b9ac0257f400d19a89be558fbb73aa8 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:06:24 -0700 Subject: [PATCH 046/127] minor code reorganization/cleanup --- src/geophires_x/EconomicsSamCalculations.py | 27 +++++++++------------ 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 64f475ba1..a20b2d915 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -248,11 +248,8 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: ret = cf_ret.copy() - # __row_names: list[str] = [it[0] for it in ret] - def _get_row_index(row_name_: str, raise_exception_if_not_present: bool = True) -> int: try: - # return __row_names.index(row_name_) return [it[0] for it in ret].index(row_name_) except ValueError as ve: if raise_exception_if_not_present: @@ -275,6 +272,18 @@ def _get_row_indexes(row_name_: str, after_row_name: str | None = None) -> list[ def _get_row_index_after(row_name_: str, after_row_name: str) -> int: return _get_row_indexes(row_name_, after_row_name=after_row_name)[0] + def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: + if row_content is None: + row_content = ['' for _it in ret[_get_row_index(before_row_name)]][1:] + + ret.insert( + _get_row_index(before_row_name), + [row_name, *row_content], + ) + + def _insert_blank_line_before(before_row_name: str) -> None: + _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) + after_tax_lcoe_and_ppa_price_header_row_title = 'AFTER-TAX LCOE AND PPA PRICE' # Backfill annual costs @@ -516,18 +525,6 @@ def backfill_lcoh_nominal() -> None: lcoh_nominal_backfilled.append(entry) - def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any] | None) -> None: - if row_content is None: - row_content = ['' for _it in ret[_get_row_index(before_row_name)]][1:] - - ret.insert( - _get_row_index(before_row_name), - [row_name, *row_content], - ) - - def _insert_blank_line_before(before_row_name: str) -> None: - _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) - lcoh_nominal_row_name = f'LCOH Levelized cost of heating nominal ($/{lcoh_heat_provided_unit})' # Insert new row if LCOE row does not exist (yet) lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) From 91f678bc0499ae4d5bf7e4c0eb8ed1d86d350b13 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:16:22 -0700 Subject: [PATCH 047/127] WIP - add PV of annual energy (electricity costs), pivoting to using it to calculate LCOE... --- src/geophires_x/EconomicsSamCalculations.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index a20b2d915..700641853 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -354,6 +354,18 @@ def _insert_blank_line_before(before_row_name: str) -> None: *([''] * (self._pre_revenue_years_count - 1)), ] + if self.electricity_plant_frac_of_capex < 1.0: + # WIP - maybe should always include this? + pv_of_annual_energy_costs_row_name = 'Present value of annual energy costs ($)' + # pv_of_annual_energy_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) + _insert_row_before( + 'Present value of annual energy nominal (kWh)', + pv_of_annual_energy_costs_row_name, + [ + pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex, + ], + ) + # Backfill PV of electricity to grid electricity_to_grid_backfilled_pv_processed = electricity_to_grid_backfilled.copy() pv_of_electricity_to_grid_backfilled_kwh = [] From c8125749f8895f3ef03d2bdb87f25eb91710cf16 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:24:48 -0700 Subject: [PATCH 048/127] calculate LCOE based on PV of annual energy (electricity only) costs --- src/geophires_x/EconomicsSamCalculations.py | 35 +++++++++++---------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 700641853..3907a675c 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -354,17 +354,19 @@ def _insert_blank_line_before(before_row_name: str) -> None: *([''] * (self._pre_revenue_years_count - 1)), ] - if self.electricity_plant_frac_of_capex < 1.0: - # WIP - maybe should always include this? - pv_of_annual_energy_costs_row_name = 'Present value of annual energy costs ($)' - # pv_of_annual_energy_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) - _insert_row_before( - 'Present value of annual energy nominal (kWh)', - pv_of_annual_energy_costs_row_name, - [ - pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex, - ], - ) + pv_of_annual_energy_costs_row_name = 'Present value of annual energy costs ($)' + pv_of_annual_energy_costs_at_year_0_usd = ( + pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex + ) + # pv_of_annual_energy_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) + _insert_row_before( + 'Present value of annual energy nominal (kWh)', + pv_of_annual_energy_costs_row_name, + [ + pv_of_annual_energy_costs_at_year_0_usd, + ], + ) + _insert_blank_line_before(pv_of_annual_energy_costs_row_name) # Backfill PV of electricity to grid electricity_to_grid_backfilled_pv_processed = electricity_to_grid_backfilled.copy() @@ -404,11 +406,12 @@ def backfill_lcoe_nominal() -> None: for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): entry: float | str = 'NaN' if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: - entry = ( - pv_of_annual_costs_backfilled_row_values_usd[_year] - * 100 - / pv_of_electricity_to_grid_backfilled_row_kwh[_year] - ) + pv_annual_costs_usd = ( + pv_of_annual_energy_costs_at_year_0_usd + if _year == 0 + else pv_of_annual_costs_backfilled_row_values_usd[_year] + ) # FIXME WIP technically inconsistent... + entry = pv_annual_costs_usd * 100 / pv_of_electricity_to_grid_backfilled_row_kwh[_year] lcoe_nominal_backfilled.append(entry) From a2d0b74f1af748fb65665cffb03d18f57056a48b Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:31:58 -0700 Subject: [PATCH 049/127] minor - rounding --- src/geophires_x/EconomicsSamCalculations.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 3907a675c..bccb118cf 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -355,10 +355,9 @@ def _insert_blank_line_before(before_row_name: str) -> None: ] pv_of_annual_energy_costs_row_name = 'Present value of annual energy costs ($)' - pv_of_annual_energy_costs_at_year_0_usd = ( - pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex + pv_of_annual_energy_costs_at_year_0_usd = int( + round(pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex) ) - # pv_of_annual_energy_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) _insert_row_before( 'Present value of annual energy nominal (kWh)', pv_of_annual_energy_costs_row_name, From 136f5b5844f3e4c3bb9a68d7031d792a066720ca Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:33:15 -0700 Subject: [PATCH 050/127] regen non-Fervo SAM-EM examples --- tests/examples/example14_data-center.out | 9 +++++---- tests/examples/example_SAM-single-owner-PPA-2.out | 13 +++++++------ tests/examples/example_SAM-single-owner-PPA-3.out | 9 +++++---- tests/examples/example_SAM-single-owner-PPA-4.out | 13 +++++++------ tests/examples/example_SAM-single-owner-PPA-4b.out | 13 +++++++------ tests/examples/example_SAM-single-owner-PPA-5.out | 13 +++++++------ .../example_SAM-single-owner-PPA-5_cash-flow.csv | 2 ++ ...xample_SAM-single-owner-PPA-6_carbon-revenue.out | 9 +++++---- .../examples/example_SAM-single-owner-PPA-7_chp.out | 12 +++++++----- .../example_SAM-single-owner-PPA-8_heat.out | 8 +++++--- .../example_SAM-single-owner-PPA-9_cooling.out | 8 +++++--- tests/examples/example_SAM-single-owner-PPA.out | 13 +++++++------ 12 files changed, 69 insertions(+), 53 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 16e4e5fdc..174a31e4d 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 07:11 - Calculation Time: 1.794 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.807 sec ***SUMMARY OF RESULTS*** @@ -127,7 +127,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 1133.37 MW Average Total Electricity Generation: 1116.10 MW @@ -344,6 +343,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 0 0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 Present value of annual costs ($) 2,847,750,635 + +Present value of annual energy costs ($) 2,847,750,635 Present value of annual energy nominal (kWh) 30,166,877,246 LCOE Levelized cost of energy nominal (cents/kWh) 9.44 diff --git a/tests/examples/example_SAM-single-owner-PPA-2.out b/tests/examples/example_SAM-single-owner-PPA-2.out index 75c94e006..40442848d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-2.out +++ b/tests/examples/example_SAM-single-owner-PPA-2.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:19 - Calculation Time: 1.006 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.027 sec ***SUMMARY OF RESULTS*** @@ -99,13 +99,13 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 30.00 MUSD Drilling and completion costs: 299.52 MUSD Drilling and completion costs per well: 3.84 MUSD Stimulation costs: 234.00 MUSD Surface power plant costs: 898.83 MUSD Field gathering system costs: 70.43 MUSD Total surface equipment costs: 969.26 MUSD - Exploration costs: 30.00 MUSD Overnight Capital Cost: 1532.78 MUSD Inflation costs during construction: 76.64 MUSD Total CAPEX: 1609.42 MUSD @@ -120,7 +120,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 458.92 MW Average Total Electricity Generation: 458.05 MW @@ -314,6 +313,8 @@ PPA revenue ($) 0 474,179,597 4 Electricity to grid (kWh) 0 3,161,197,316 3,175,786,856 3,180,379,788 3,183,105,655 3,185,018,384 3,186,478,581 3,187,652,210 3,188,628,989 3,189,462,709 3,190,188,061 3,190,828,668 3,191,401,306 3,191,918,303 3,192,388,967 3,192,820,492 3,193,218,548 3,193,587,678 3,193,931,576 3,194,253,285 3,194,540,808 Present value of annual costs ($) 2,121,805,149 + +Present value of annual energy costs ($) 2,121,805,149 Present value of annual energy nominal (kWh) 28,780,754,350 LCOE Levelized cost of energy nominal (cents/kWh) 7.37 diff --git a/tests/examples/example_SAM-single-owner-PPA-3.out b/tests/examples/example_SAM-single-owner-PPA-3.out index 50b80b6eb..9e64962d0 100644 --- a/tests/examples/example_SAM-single-owner-PPA-3.out +++ b/tests/examples/example_SAM-single-owner-PPA-3.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 07:11 - Calculation Time: 1.208 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.207 sec ***SUMMARY OF RESULTS*** @@ -123,7 +123,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 59.02 MW Average Total Electricity Generation: 58.87 MW @@ -319,6 +318,8 @@ PPA revenue ($) 0 36,751,456 36,9 Electricity to grid (kWh) 0 459,393,200 462,061,296 462,867,882 463,343,815 463,676,568 463,929,931 464,133,155 464,302,013 464,445,938 464,571,006 464,681,345 464,779,886 464,868,777 464,949,642 465,023,726 465,092,011 465,155,313 465,214,308 465,269,475 465,319,040 Present value of annual costs ($) 298,190,011 + +Present value of annual energy costs ($) 298,190,011 Present value of annual energy nominal (kWh) 3,903,105,303 LCOE Levelized cost of energy nominal (cents/kWh) 7.64 diff --git a/tests/examples/example_SAM-single-owner-PPA-4.out b/tests/examples/example_SAM-single-owner-PPA-4.out index f8506fab7..f12a5bc63 100644 --- a/tests/examples/example_SAM-single-owner-PPA-4.out +++ b/tests/examples/example_SAM-single-owner-PPA-4.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:19 - Calculation Time: 1.238 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.226 sec ***SUMMARY OF RESULTS*** @@ -99,6 +99,7 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 3.89 MUSD Drilling and completion costs: 49.18 MUSD Drilling and completion costs per vertical production well: 3.37 MUSD Drilling and completion costs per vertical injection well: 3.37 MUSD @@ -107,7 +108,6 @@ Simulation Metadata Surface power plant costs: 144.44 MUSD Field gathering system costs: 8.50 MUSD Total surface equipment costs: 152.93 MUSD - Exploration costs: 3.89 MUSD Overnight Capital Cost: 215.06 MUSD Inflation costs during construction: 10.75 MUSD Total CAPEX: 225.81 MUSD @@ -123,7 +123,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 59.02 MW Average Total Electricity Generation: 58.87 MW @@ -318,6 +317,8 @@ PPA revenue ($) 0 34,284,397 34,4 Electricity to grid (kWh) 0 428,554,957 431,240,089 432,051,822 432,530,792 432,865,667 433,120,646 433,325,167 433,495,101 433,639,945 433,765,810 433,876,853 433,976,022 434,065,480 434,146,861 434,221,417 434,290,137 434,353,843 434,413,216 434,468,735 434,518,614 Present value of annual costs ($) 254,082,386 + +Present value of annual energy costs ($) 254,082,386 Present value of annual energy nominal (kWh) 3,643,623,190 LCOE Levelized cost of energy nominal (cents/kWh) 6.97 diff --git a/tests/examples/example_SAM-single-owner-PPA-4b.out b/tests/examples/example_SAM-single-owner-PPA-4b.out index 48df23483..08cad77e8 100644 --- a/tests/examples/example_SAM-single-owner-PPA-4b.out +++ b/tests/examples/example_SAM-single-owner-PPA-4b.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.23 - Simulation Date: 2026-03-06 - Simulation Time: 10:01 - Calculation Time: 1.291 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.299 sec ***SUMMARY OF RESULTS*** @@ -99,6 +99,7 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 3.89 MUSD Drilling and completion costs: 49.18 MUSD Drilling and completion costs per vertical production well: 3.37 MUSD Drilling and completion costs per vertical injection well: 3.37 MUSD @@ -107,7 +108,6 @@ Simulation Metadata Surface power plant costs: 144.44 MUSD Field gathering system costs: 8.50 MUSD Total surface equipment costs: 152.93 MUSD - Exploration costs: 3.89 MUSD Overnight Capital Cost: 215.06 MUSD Inflation costs during construction: 22.23 MUSD Royalty supplemental payments during construction: 2.25 MUSD @@ -125,7 +125,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 59.02 MW Average Total Electricity Generation: 58.87 MW @@ -320,6 +319,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 428,554,957 431,240,089 432,051,822 432,530,792 432,865,667 433,120,646 433,325,167 433,495,101 433,639,945 433,765,810 433,876,853 433,976,022 434,065,480 434,146,861 434,221,417 434,290,137 434,353,843 434,413,216 434,468,735 434,518,614 Present value of annual costs ($) 219,312,570 + +Present value of annual energy costs ($) 219,312,570 Present value of annual energy nominal (kWh) 3,002,517,885 LCOE Levelized cost of energy nominal (cents/kWh) 7.30 diff --git a/tests/examples/example_SAM-single-owner-PPA-5.out b/tests/examples/example_SAM-single-owner-PPA-5.out index 0b9d6573b..84ff98183 100644 --- a/tests/examples/example_SAM-single-owner-PPA-5.out +++ b/tests/examples/example_SAM-single-owner-PPA-5.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.23 - Simulation Date: 2026-03-06 - Simulation Time: 10:01 - Calculation Time: 1.873 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.806 sec ***SUMMARY OF RESULTS*** @@ -99,13 +99,13 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 120.00 MUSD Drilling and completion costs: 106.12 MUSD Drilling and completion costs per well: 3.54 MUSD Stimulation costs: 75.00 MUSD Surface power plant costs: 287.61 MUSD Field gathering system costs: 10.69 MUSD Total surface equipment costs: 298.30 MUSD - Exploration costs: 120.00 MUSD Overnight Capital Cost: 599.42 MUSD Inflation costs during construction: 82.70 MUSD Royalty supplemental payments during construction: 2.10 MUSD @@ -122,7 +122,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 117.52 MW Average Total Electricity Generation: 117.19 MW @@ -336,6 +335,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 0 0 0 0 859,490,068 865,758,172 867,671,460 868,803,529 869,596,370 870,200,786 870,686,054 871,089,570 871,433,728 871,732,959 871,997,081 872,233,061 872,446,015 872,639,805 872,817,414 872,981,191 873,133,019 873,274,427 873,406,675 873,530,811 873,647,716 873,758,141 873,862,724 873,962,017 874,056,500 874,146,590 874,232,654 874,315,016 874,393,962 874,466,670 Present value of annual costs ($) 338,609,355 + +Present value of annual energy costs ($) 338,609,355 Present value of annual energy nominal (kWh) 4,330,865,025 LCOE Levelized cost of energy nominal (cents/kWh) 7.82 diff --git a/tests/examples/example_SAM-single-owner-PPA-5_cash-flow.csv b/tests/examples/example_SAM-single-owner-PPA-5_cash-flow.csv index cad5f16dc..5bcaa7bb2 100644 --- a/tests/examples/example_SAM-single-owner-PPA-5_cash-flow.csv +++ b/tests/examples/example_SAM-single-owner-PPA-5_cash-flow.csv @@ -117,6 +117,8 @@ PPA revenue ($),0,0,0,0,0,0,0,68759205,69260654,72207619,75099377,77968011,80824 Electricity to grid (kWh),0,0,0,0,0,0,0,859490068,865758172,867671460,868803529,869596370,870200786,870686054,871089570,871433728,871732959,871997081,872233061,872446015,872639805,872817414,872981191,873133019,873274427,873406675,873530811,873647716,873758141,873862724,873962017,874056500,874146590,874232654,874315016,874393962,874466670 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Present value of annual costs ($),338609355,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Present value of annual energy costs ($),338609355,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Present value of annual energy nominal (kWh),4330865025,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, LCOE Levelized cost of energy nominal (cents/kWh),7.82,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index 857af227d..c9229b2fe 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 07:45 - Calculation Time: 1.801 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.827 sec ***SUMMARY OF RESULTS*** @@ -132,7 +132,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 59.96 MW Average Total Electricity Generation: 59.75 MW @@ -352,6 +351,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 404,102,612 406,703,974 407,497,016 407,966,078 408,293,813 408,516,604 408,285,278 405,141,270 402,559,967 406,408,644 407,366,910 407,901,883 408,271,494 408,539,500 408,526,511 406,603,933 401,930,875 406,070,808 407,260,064 407,848,815 408,234,029 408,512,178 408,612,585 407,504,360 402,075,545 405,447,434 407,051,915 407,726,696 408,148,995 408,440,373 Present value of annual costs ($) 186,610,352 + +Present value of annual energy costs ($) 186,610,352 Present value of annual energy nominal (kWh) 2,015,542,933 LCOE Levelized cost of energy nominal (cents/kWh) 9.26 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index b22496caf..bc2b66cde 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,16 +5,16 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-31 - Simulation Time: 10:50 - Calculation Time: 1.794 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.914 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 45.52 MW Average Direct-Use Heat Production: 48.48 MW - Electricity breakeven price: 10.31 cents/kWh + Electricity breakeven price: 9.11 cents/kWh Direct-Use heat breakeven price (LCOH): 3.30 USD/MMBTU Total CAPEX: 278.39 MUSD Total CAPEX ($/kW): 6082 USD/kW @@ -357,8 +357,10 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 Present value of annual costs ($) 183,347,724 + +Present value of annual energy costs ($) 162,019,394 Present value of annual energy nominal (kWh) 1,777,787,001 -LCOE Levelized cost of energy nominal (cents/kWh) 10.31 +LCOE Levelized cost of energy nominal (cents/kWh) 9.11 Present value of PPA revenue ($) 174,295,914 Present value of annual energy nominal (kWh) 1,777,787,001 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 1e30ff755..05ce77b38 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-31 - Simulation Time: 10:50 - Calculation Time: 1.783 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.977 sec ***SUMMARY OF RESULTS*** @@ -339,6 +339,8 @@ PPA revenue ($) 0 0 0 Electricity to 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 Present value of annual costs ($) 197,491,957 + +Present value of annual energy costs ($) 0 Present value of annual energy nominal (kWh) 0 LCOE Levelized cost of energy nominal (cents/kWh) NaN diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index e6808c658..d33a1838b 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-03-29 - Simulation Time: 08:47 - Calculation Time: 1.816 sec + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 2.002 sec ***SUMMARY OF RESULTS*** @@ -349,6 +349,8 @@ PPA revenue ($) 0 0 0 Electricity to 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 Present value of annual costs ($) 269,177,011 + +Present value of annual energy costs ($) 0 Present value of annual energy nominal (kWh) 0 LCOE Levelized cost of energy nominal (cents/kWh) NaN diff --git a/tests/examples/example_SAM-single-owner-PPA.out b/tests/examples/example_SAM-single-owner-PPA.out index e5ecde31f..c38381974 100644 --- a/tests/examples/example_SAM-single-owner-PPA.out +++ b/tests/examples/example_SAM-single-owner-PPA.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:15 - Calculation Time: 1.201 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 09:30 + Calculation Time: 1.322 sec ***SUMMARY OF RESULTS*** @@ -99,6 +99,7 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 3.89 MUSD Drilling and completion costs: 49.18 MUSD Drilling and completion costs per vertical production well: 3.37 MUSD Drilling and completion costs per vertical injection well: 3.37 MUSD @@ -107,7 +108,6 @@ Simulation Metadata Surface power plant costs: 144.44 MUSD Field gathering system costs: 8.50 MUSD Total surface equipment costs: 152.93 MUSD - Exploration costs: 3.89 MUSD Overnight Capital Cost: 215.06 MUSD Inflation costs during construction: 10.75 MUSD Total CAPEX: 225.81 MUSD @@ -122,7 +122,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 59.02 MW Average Total Electricity Generation: 58.87 MW @@ -316,6 +315,8 @@ PPA revenue ($) 0 34,284,397 34,4 Electricity to grid (kWh) 0 428,554,957 431,240,089 432,051,822 432,530,792 432,865,667 433,120,646 433,325,167 433,495,101 433,639,945 433,765,810 433,876,853 433,976,022 434,065,480 434,146,861 434,221,417 434,290,137 434,353,843 434,413,216 434,468,735 434,518,614 Present value of annual costs ($) 230,967,711 + +Present value of annual energy costs ($) 230,967,711 Present value of annual energy nominal (kWh) 3,643,623,190 LCOE Levelized cost of energy nominal (cents/kWh) 6.34 From 251324bb6f68ea5945e59248a125cd584e8268ba Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:36:18 -0700 Subject: [PATCH 051/127] code cleanup --- src/geophires_x/EconomicsSamCalculations.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index bccb118cf..10a736d09 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -395,22 +395,21 @@ def _insert_blank_line_before(before_row_name: str) -> None: ] def backfill_lcoe_nominal() -> None: - # FIXME WIP TODO adjust according to CAPEX_heat_electricity_plant_ratio pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh - pv_of_annual_costs_backfilled_row_values_usd = pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + pv_of_annual_energy_costs_usd = [ + it * self.electricity_plant_frac_of_capex + for it in pv_of_annual_costs_backfilled_row[ + 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : + ] ] lcoe_nominal_backfilled = [] - for _year in range(len(pv_of_annual_costs_backfilled_row_values_usd)): + for _year in range(len(pv_of_annual_energy_costs_usd)): entry: float | str = 'NaN' if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: - pv_annual_costs_usd = ( - pv_of_annual_energy_costs_at_year_0_usd - if _year == 0 - else pv_of_annual_costs_backfilled_row_values_usd[_year] - ) # FIXME WIP technically inconsistent... - entry = pv_annual_costs_usd * 100 / pv_of_electricity_to_grid_backfilled_row_kwh[_year] + entry = ( + pv_of_annual_energy_costs_usd[_year] * 100 / pv_of_electricity_to_grid_backfilled_row_kwh[_year] + ) lcoe_nominal_backfilled.append(entry) From acd8e518c0b9483e1f6acc384d23d4560f547258 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 09:52:58 -0700 Subject: [PATCH 052/127] WIP - parameterizing backfill_lcoh_nominal for re-use with LCOC --- src/geophires_x/EconomicsSamCalculations.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 10a736d09..2e9f4f7f9 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -474,10 +474,17 @@ def backfill_lppa_metrics() -> None: backfill_lppa_metrics() - def backfill_lcoh_nominal() -> None: - # WIP... + def backfill_lcoh_nominal( + # WIP: parameterizing for re-use with LCOC... + heat_provided_kwh_row_name: str = 'Heat provided (kWh)', + lcoh_heat_provided_unit: str = 'MMBTU', # FIXME TODO should be derived from LCOH preferred units + lcoh_nominal_row_base_name=f'LCOH Levelized cost of heating nominal', + pv_annual_heat_costs_row_name='Present value of annual heat costs ($)', + pv_of_annual_heat_provided_row_base_name=f'Present value of annual heat provided', + ) -> None: + + lcoh_nominal_row_name = f'{lcoh_nominal_row_base_name} ($/{lcoh_heat_provided_unit})' - heat_provided_kwh_row_name = 'Heat provided (kWh)' heat_provided_kwh_row_index = _get_row_index( heat_provided_kwh_row_name, raise_exception_if_not_present=False ) @@ -523,8 +530,6 @@ def backfill_lcoh_nominal() -> None: ] ] - lcoh_heat_provided_unit: str = 'MMBTU' # FIXME TODO should be derived from LCOH preferred units - lcoh_nominal_backfilled = [] for _year in range(len(pv_of_annual_heat_costs_backfilled_row_values_usd)): entry: float | str = 'NaN' @@ -538,7 +543,6 @@ def backfill_lcoh_nominal() -> None: lcoh_nominal_backfilled.append(entry) - lcoh_nominal_row_name = f'LCOH Levelized cost of heating nominal ($/{lcoh_heat_provided_unit})' # Insert new row if LCOE row does not exist (yet) lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) @@ -556,7 +560,6 @@ def backfill_lcoh_nominal() -> None: *([None] * (self._pre_revenue_years_count - 1)), ] - pv_annual_heat_costs_row_name = 'Present value of annual heat costs ($)' # Insert new row if PV of heat costs row does not exist (yet) pv_annual_heat_costs_row_index = _get_row_index( pv_annual_heat_costs_row_name, raise_exception_if_not_present=False @@ -577,7 +580,7 @@ def backfill_lcoh_nominal() -> None: pv_of_annual_heat_provided_unit: str = lcoh_heat_provided_unit pv_of_annual_heat_provided_row_name = ( - f'Present value of annual heat provided ' f'({pv_of_annual_heat_provided_unit})' + f'{pv_of_annual_heat_provided_row_base_name} ({pv_of_annual_heat_provided_unit})' ) # Insert new row if PV of heat provided row does not exist (yet) pv_of_annual_heat_provided_row_index = _get_row_index( From df5531ad461d12a4b5ad28aeee44ee0d168a55f5 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:01:09 -0700 Subject: [PATCH 053/127] insert_non_electricity_levelized_metrics parameterized & genericized (no behaviuoral change, LCOC not added yet) --- src/geophires_x/EconomicsSamCalculations.py | 143 +++++++++++--------- 1 file changed, 79 insertions(+), 64 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 2e9f4f7f9..e3379723d 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -474,56 +474,57 @@ def backfill_lppa_metrics() -> None: backfill_lppa_metrics() - def backfill_lcoh_nominal( - # WIP: parameterizing for re-use with LCOC... - heat_provided_kwh_row_name: str = 'Heat provided (kWh)', - lcoh_heat_provided_unit: str = 'MMBTU', # FIXME TODO should be derived from LCOH preferred units - lcoh_nominal_row_base_name=f'LCOH Levelized cost of heating nominal', - pv_annual_heat_costs_row_name='Present value of annual heat costs ($)', - pv_of_annual_heat_provided_row_base_name=f'Present value of annual heat provided', + def insert_non_electricity_levelized_metrics( + amount_provided_kwh_row_name: str, # = 'Heat provided (kWh)', + amount_provided_unit: str, # = 'MMBTU', + levelized_cost_nominal_row_base_name: str, # =f'LCOH Levelized cost of heating nominal', + pv_annual_non_elec_type_costs_row_name: str, # ='Present value of annual heat costs ($)', + pv_of_annual_amount_provided_row_base_name: str, # =f'Present value of annual heat provided', ) -> None: - lcoh_nominal_row_name = f'{lcoh_nominal_row_base_name} ($/{lcoh_heat_provided_unit})' + lcoh_nominal_row_name = f'{levelized_cost_nominal_row_base_name} ($/{amount_provided_unit})' - heat_provided_kwh_row_index = _get_row_index( - heat_provided_kwh_row_name, raise_exception_if_not_present=False + amount_provided_kwh_row_index = _get_row_index( + amount_provided_kwh_row_name, raise_exception_if_not_present=False ) - if heat_provided_kwh_row_index == -1: + if amount_provided_kwh_row_index == -1: return # No heat provided row, nothing to do - heat_provided = cf_ret[heat_provided_kwh_row_index].copy() - heat_provided_backfilled = [0 if it == '' else (int(it) if is_int(it) else it) for it in heat_provided[1:]] + amount_provided = cf_ret[amount_provided_kwh_row_index].copy() + amount_provided_backfilled = [ + 0 if it == '' else (int(it) if is_int(it) else it) for it in amount_provided[1:] + ] - # TODO/WIP maybe duplicate heat provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror + # TODO/WIP maybe duplicate amount provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror # electricity convention - # heat_provided_kwh_row_index = _get_row_index_after( - # heat_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title + # amount_provided_kwh_row_index = _get_row_index_after( + # amount_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title # ) - ret[heat_provided_kwh_row_index][1:] = heat_provided_backfilled + ret[amount_provided_kwh_row_index][1:] = amount_provided_backfilled # fill PV of heat provided - heat_provided_backfilled_pv_processed = heat_provided_backfilled.copy() - pv_of_heat_provided_backfilled_kwh = [] + amount_provided_backfilled_pv_processed = amount_provided_backfilled.copy() + pv_of_amount_provided_backfilled_kwh = [] for year_ in range(self._pre_revenue_years_count): pv_at_year_ = abs( round( npf.npv( self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - heat_provided_backfilled_pv_processed, + amount_provided_backfilled_pv_processed, ) ) ) - pv_of_heat_provided_backfilled_kwh.append(pv_at_year_) + pv_of_amount_provided_backfilled_kwh.append(pv_at_year_) - heat_provided_at_year = heat_provided_backfilled_pv_processed.pop(0) - heat_provided_backfilled_pv_processed[0] = ( - heat_provided_backfilled_pv_processed[0] + heat_provided_at_year + amount_provided_at_year = amount_provided_backfilled_pv_processed.pop(0) + amount_provided_backfilled_pv_processed[0] = ( + amount_provided_backfilled_pv_processed[0] + amount_provided_at_year ) - pv_of_heat_provided_backfilled_row_kwh = pv_of_heat_provided_backfilled_kwh - pv_of_annual_heat_costs_backfilled_row_values_usd = [ + pv_of_amount_provided_backfilled_row_kwh = pv_of_amount_provided_backfilled_kwh + pv_of_annual_non_elec_type_costs_backfilled_row_values_usd = [ it * (1.0 - self.electricity_plant_frac_of_capex) for it in pv_of_annual_costs_backfilled_row[ 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : @@ -531,80 +532,94 @@ def backfill_lcoh_nominal( ] lcoh_nominal_backfilled = [] - for _year in range(len(pv_of_annual_heat_costs_backfilled_row_values_usd)): + for _year in range(len(pv_of_annual_non_elec_type_costs_backfilled_row_values_usd)): entry: float | str = 'NaN' - if pv_of_heat_provided_backfilled_row_kwh[_year] != 0: + if pv_of_amount_provided_backfilled_row_kwh[_year] != 0: entry = ( - pv_of_annual_heat_costs_backfilled_row_values_usd[_year] - / quantity(pv_of_heat_provided_backfilled_row_kwh[_year], 'kWh') - .to(lcoh_heat_provided_unit) + pv_of_annual_non_elec_type_costs_backfilled_row_values_usd[_year] + / quantity(pv_of_amount_provided_backfilled_row_kwh[_year], 'kWh') + .to(amount_provided_unit) .magnitude ) lcoh_nominal_backfilled.append(entry) # Insert new row if LCOE row does not exist (yet) - lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name, raise_exception_if_not_present=False) + levelized_cost_nominal_row_index = _get_row_index( + lcoh_nominal_row_name, raise_exception_if_not_present=False + ) - if lcoh_nominal_row_index == -1: + if levelized_cost_nominal_row_index == -1: _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) _insert_blank_line_before('PROJECT STATE INCOME TAXES') - lcoh_nominal_row_index = _get_row_index(lcoh_nominal_row_name) + levelized_cost_nominal_row_index = _get_row_index(lcoh_nominal_row_name) - lcoh_nominal_backfilled_entry = lcoh_nominal_backfilled[0] - if isinstance(lcoh_nominal_backfilled_entry, float): - lcoh_nominal_backfilled_entry = round(lcoh_nominal_backfilled_entry, 2) + levelized_cost_nominal_backfilled_entry = lcoh_nominal_backfilled[0] + if isinstance(levelized_cost_nominal_backfilled_entry, float): + levelized_cost_nominal_backfilled_entry = round(levelized_cost_nominal_backfilled_entry, 2) - ret[lcoh_nominal_row_index][1:] = [ - lcoh_nominal_backfilled_entry, + ret[levelized_cost_nominal_row_index][1:] = [ + levelized_cost_nominal_backfilled_entry, *([None] * (self._pre_revenue_years_count - 1)), ] # Insert new row if PV of heat costs row does not exist (yet) - pv_annual_heat_costs_row_index = _get_row_index( - pv_annual_heat_costs_row_name, raise_exception_if_not_present=False + pv_annual_non_elec_type_costs_row_index = _get_row_index( + pv_annual_non_elec_type_costs_row_name, raise_exception_if_not_present=False ) - if pv_annual_heat_costs_row_index == -1: - _insert_row_before(lcoh_nominal_row_name, pv_annual_heat_costs_row_name, None) - pv_annual_heat_costs_row_index = _get_row_index(pv_annual_heat_costs_row_name) + if pv_annual_non_elec_type_costs_row_index == -1: + _insert_row_before(lcoh_nominal_row_name, pv_annual_non_elec_type_costs_row_name, None) + pv_annual_non_elec_type_costs_row_index = _get_row_index(pv_annual_non_elec_type_costs_row_name) - pv_annual_heat_costs_entry = pv_of_annual_heat_costs_backfilled_row_values_usd[0] - if isinstance(pv_annual_heat_costs_entry, float): - pv_annual_heat_costs_entry = int(round(pv_annual_heat_costs_entry, 2)) + pv_annual_non_elec_type_costs_entry = pv_of_annual_non_elec_type_costs_backfilled_row_values_usd[0] + if isinstance(pv_annual_non_elec_type_costs_entry, float): + pv_annual_non_elec_type_costs_entry = int(round(pv_annual_non_elec_type_costs_entry, 2)) - ret[pv_annual_heat_costs_row_index][1:] = [ - pv_annual_heat_costs_entry, + ret[pv_annual_non_elec_type_costs_row_index][1:] = [ + pv_annual_non_elec_type_costs_entry, *([None] * (self._pre_revenue_years_count - 1)), ] - pv_of_annual_heat_provided_unit: str = lcoh_heat_provided_unit - pv_of_annual_heat_provided_row_name = ( - f'{pv_of_annual_heat_provided_row_base_name} ({pv_of_annual_heat_provided_unit})' + pv_of_annual_amount_provided_unit: str = amount_provided_unit + pv_of_annual_amount_provided_row_name = ( + f'{pv_of_annual_amount_provided_row_base_name} ({pv_of_annual_amount_provided_unit})' ) # Insert new row if PV of heat provided row does not exist (yet) - pv_of_annual_heat_provided_row_index = _get_row_index( - pv_of_annual_heat_provided_row_name, raise_exception_if_not_present=False + pv_of_annual_amount_provided_row_index = _get_row_index( + pv_of_annual_amount_provided_row_name, raise_exception_if_not_present=False ) - if pv_of_annual_heat_provided_row_index == -1: - _insert_row_before(lcoh_nominal_row_name, pv_of_annual_heat_provided_row_name, None) - pv_of_annual_heat_provided_row_index = _get_row_index(pv_of_annual_heat_provided_row_name) + if pv_of_annual_amount_provided_row_index == -1: + _insert_row_before(lcoh_nominal_row_name, pv_of_annual_amount_provided_row_name, None) + pv_of_annual_amount_provided_row_index = _get_row_index(pv_of_annual_amount_provided_row_name) - pv_annual_heat_provided_entry = pv_of_heat_provided_backfilled_row_kwh[0] - if any(isinstance(pv_annual_heat_provided_entry, it) for it in [int, float]): - pv_annual_heat_provided_entry = int( + pv_annual_amount_provided_entry = pv_of_amount_provided_backfilled_row_kwh[0] + if any(isinstance(pv_annual_amount_provided_entry, it) for it in [int, float]): + pv_annual_amount_provided_entry = int( round( - quantity(pv_annual_heat_provided_entry, 'kWh').to(pv_of_annual_heat_provided_unit).magnitude, 2 + quantity(pv_annual_amount_provided_entry, 'kWh') + .to(pv_of_annual_amount_provided_unit) + .magnitude, + 2, ) ) - ret[pv_of_annual_heat_provided_row_index][1:] = [ - pv_annual_heat_provided_entry, + ret[pv_of_annual_amount_provided_row_index][1:] = [ + pv_annual_amount_provided_entry, *([None] * (self._pre_revenue_years_count - 1)), ] - backfill_lcoh_nominal() + def insert_lcoh_metrics(): + insert_non_electricity_levelized_metrics( + amount_provided_kwh_row_name='Heat provided (kWh)', + amount_provided_unit='MMBTU', # TODO maybe should be derived from LCOH preferred units + levelized_cost_nominal_row_base_name=f'LCOH Levelized cost of heating nominal', + pv_annual_non_elec_type_costs_row_name='Present value of annual heat costs ($)', + pv_of_annual_amount_provided_row_base_name=f'Present value of annual heat provided', + ) + + insert_lcoh_metrics() return ret From 631adb39e06c40ca44eda2caaafdb7c3f86ace49 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:05:57 -0700 Subject: [PATCH 054/127] insert_lcoc_metrics --- src/geophires_x/EconomicsSamCalculations.py | 23 +++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index e3379723d..74470d3af 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -482,7 +482,7 @@ def insert_non_electricity_levelized_metrics( pv_of_annual_amount_provided_row_base_name: str, # =f'Present value of annual heat provided', ) -> None: - lcoh_nominal_row_name = f'{levelized_cost_nominal_row_base_name} ($/{amount_provided_unit})' + levelized_cost_nominal_row_name = f'{levelized_cost_nominal_row_base_name} ($/{amount_provided_unit})' amount_provided_kwh_row_index = _get_row_index( amount_provided_kwh_row_name, raise_exception_if_not_present=False @@ -546,13 +546,13 @@ def insert_non_electricity_levelized_metrics( # Insert new row if LCOE row does not exist (yet) levelized_cost_nominal_row_index = _get_row_index( - lcoh_nominal_row_name, raise_exception_if_not_present=False + levelized_cost_nominal_row_name, raise_exception_if_not_present=False ) if levelized_cost_nominal_row_index == -1: - _insert_row_before('PROJECT STATE INCOME TAXES', lcoh_nominal_row_name, None) + _insert_row_before('PROJECT STATE INCOME TAXES', levelized_cost_nominal_row_name, None) _insert_blank_line_before('PROJECT STATE INCOME TAXES') - levelized_cost_nominal_row_index = _get_row_index(lcoh_nominal_row_name) + levelized_cost_nominal_row_index = _get_row_index(levelized_cost_nominal_row_name) levelized_cost_nominal_backfilled_entry = lcoh_nominal_backfilled[0] if isinstance(levelized_cost_nominal_backfilled_entry, float): @@ -569,7 +569,7 @@ def insert_non_electricity_levelized_metrics( ) if pv_annual_non_elec_type_costs_row_index == -1: - _insert_row_before(lcoh_nominal_row_name, pv_annual_non_elec_type_costs_row_name, None) + _insert_row_before(levelized_cost_nominal_row_name, pv_annual_non_elec_type_costs_row_name, None) pv_annual_non_elec_type_costs_row_index = _get_row_index(pv_annual_non_elec_type_costs_row_name) pv_annual_non_elec_type_costs_entry = pv_of_annual_non_elec_type_costs_backfilled_row_values_usd[0] @@ -591,7 +591,7 @@ def insert_non_electricity_levelized_metrics( ) if pv_of_annual_amount_provided_row_index == -1: - _insert_row_before(lcoh_nominal_row_name, pv_of_annual_amount_provided_row_name, None) + _insert_row_before(levelized_cost_nominal_row_name, pv_of_annual_amount_provided_row_name, None) pv_of_annual_amount_provided_row_index = _get_row_index(pv_of_annual_amount_provided_row_name) pv_annual_amount_provided_entry = pv_of_amount_provided_backfilled_row_kwh[0] @@ -621,6 +621,17 @@ def insert_lcoh_metrics(): insert_lcoh_metrics() + def insert_lcoc_metrics(): + insert_non_electricity_levelized_metrics( + amount_provided_kwh_row_name='Cooling provided (kWh/yr)', # FIXME WIP should not have /yr suffix + amount_provided_unit='MMBTU', # TODO maybe should be derived from LCOC preferred units + levelized_cost_nominal_row_base_name=f'LCOC Levelized cost of cooling nominal', + pv_annual_non_elec_type_costs_row_name='Present value of annual cooling costs ($)', + pv_of_annual_amount_provided_row_base_name=f'Present value of annual cooling provided', + ) + + insert_lcoc_metrics() + return ret @property From 054895849414527f3d8b5f0d27a060d49c79b6ab Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:17:37 -0700 Subject: [PATCH 055/127] insert LCOC metrics in cash flow and include in case report --- src/geophires_x/Economics.py | 15 ++++----- src/geophires_x/EconomicsSam.py | 31 ++++++++++++++----- src/geophires_x/EconomicsSamCalculations.py | 2 ++ src/geophires_x/EconomicsUtils.py | 10 ++++++ ...example_SAM-single-owner-PPA-9_cooling.out | 12 ++++--- 5 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index cb5a2ab2b..74b52fdac 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -17,7 +17,7 @@ interest_during_construction_output_parameter, total_capex_parameter_output_parameter, \ overnight_capital_cost_output_parameter, CONSTRUCTION_CAPEX_SCHEDULE_PARAMETER_NAME, \ _YEAR_INDEX_VALUE_EXPLANATION_SNIPPET, investment_tax_credit_output_parameter, expand_schedule_dsl, \ - lcoh_output_parameter + lcoh_output_parameter, lcoc_output_parameter from geophires_x.GeoPHIRESUtils import quantity from geophires_x.OptionList import Configuration, WellDrillingCostCorrelation, EconomicModel, EndUseOptions, PlantType, \ _WellDrillingCostCorrelationCitation @@ -501,7 +501,10 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: # https://github.com/NatLabRockies/GEOPHIRES-X/issues/452?title=Deduplicate+calls+to+calculate_pre_revenue_costs_and_cashflow pass - # FIXME WIP LCOC + if econ.sam_economics_calculations.lcoc_nominal.value is not None: + # Designated as nominal (as opposed to real) in parameter tooltip text + LCOC = econ.sam_economics_calculations.lcoc_nominal.quantity().to( + convertible_unit(econ.LCOC.CurrentUnits.value)).magnitude else: if econ.econmodel.value != EconomicModel.BICYCLE: @@ -1928,13 +1931,7 @@ def __init__(self, model: Model): CurrentUnits=CostPerMassUnit.DOLLARSPERLB ) - self.LCOC = self.OutputParameterDict[self.LCOC.Name] = OutputParameter( - Name="LCOC", - display_name='Direct-Use Cooling Breakeven Price (LCOC)', - UnitType=Units.ENERGYCOST, - PreferredUnits=EnergyCostUnit.DOLLARSPERMMBTU, - CurrentUnits=EnergyCostUnit.DOLLARSPERMMBTU - ) + self.LCOC = self.OutputParameterDict[self.LCOC.Name] = lcoc_output_parameter() self.LCOE = self.OutputParameterDict[self.LCOE.Name] = OutputParameter( Name="LCOE", diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 16d7ff53b..9ab517fae 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -275,9 +275,24 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: _get_lcoe_nominal_cents_per_kwh(single_owner, sam_economics.sam_cash_flow_profile, model) ) - # Note that this calculation is order-dependent on sam_economics.capacity_payment_revenue_sources + # Note that LCOH & LCOC calculations are order-dependent on sam_economics.capacity_payment_revenue_sources sam_economics.lcoh_nominal.value = sf( - _get_lcoh_nominal_usd_per_mmbtu(single_owner, sam_economics.sam_cash_flow_profile, model) + _get_levelized_cost_non_electricity_type_nominal_usd_per_mmbtu( + single_owner, + sam_economics.sam_cash_flow_profile, + model, + levelized_cost_nominal_row_name='LCOH Levelized cost of heating nominal ($/MMBTU)', # FIXME WIP unit + ) + ) + + sam_economics.lcoc_nominal.value = sf( + _get_levelized_cost_non_electricity_type_nominal_usd_per_mmbtu( + single_owner, + sam_economics.sam_cash_flow_profile, + model, + levelized_cost_nominal_row_name='LCOC Levelized cost of cooling nominal ($/MMBTU)', + # FIXME WIP unit + ) ) return sam_economics @@ -308,16 +323,18 @@ def _get_lcoe_nominal_cents_per_kwh( # noinspection PyUnusedLocal -def _get_lcoh_nominal_usd_per_mmbtu( - single_owner: Singleowner, sam_cash_flow_profile: list[list[Any]], model: Model +def _get_levelized_cost_non_electricity_type_nominal_usd_per_mmbtu( + single_owner: Singleowner, + sam_cash_flow_profile: list[list[Any]], + model: Model, + levelized_cost_nominal_row_name: str, ) -> float | None: - lcoh_nominal_row_name = 'LCOH Levelized cost of heating nominal ($/MMBTU)' # FIXME WIP unit try: - lcoh_row = _cash_flow_profile_row(sam_cash_flow_profile, lcoh_nominal_row_name) + levelized_cost_row = _cash_flow_profile_row(sam_cash_flow_profile, levelized_cost_nominal_row_name) except StopIteration: return None - ret = lcoh_row[0] + ret = levelized_cost_row[0] # model.logger.info(f'Single Owner LCOE nominal (cents/kWh): {single_owner.Outputs.lcoe_nom}'); diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 74470d3af..58904e87c 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -21,6 +21,7 @@ project_payback_period_parameter, investment_tax_credit_output_parameter, lcoh_output_parameter, + lcoc_output_parameter, ) from geophires_x.GeoPHIRESUtils import is_float, quantity, is_int from geophires_x.Parameter import OutputParameter @@ -55,6 +56,7 @@ class SamEconomicsCalculations: ) lcoh_nominal: OutputParameter = field(default_factory=lcoh_output_parameter) + lcoc_nominal: OutputParameter = field(default_factory=lcoc_output_parameter) overnight_capital_cost: OutputParameter = field(default_factory=overnight_capital_cost_output_parameter) diff --git a/src/geophires_x/EconomicsUtils.py b/src/geophires_x/EconomicsUtils.py index a8b76ae4c..db0410979 100644 --- a/src/geophires_x/EconomicsUtils.py +++ b/src/geophires_x/EconomicsUtils.py @@ -60,6 +60,16 @@ def lcoh_output_parameter() -> OutputParameter: ) +def lcoc_output_parameter() -> OutputParameter: + return OutputParameter( + Name="LCOC", + display_name='Direct-Use Cooling Breakeven Price (LCOC)', + UnitType=Units.ENERGYCOST, + PreferredUnits=EnergyCostUnit.DOLLARSPERMMBTU, + CurrentUnits=EnergyCostUnit.DOLLARSPERMMBTU, + ) + + _SAM_EM_MOIC_RETURNS_TAX_QUALIFIER = 'after-tax' diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index d33a1838b..4f9ef9b19 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 2.002 sec + Simulation Time: 10:16 + Calculation Time: 1.783 sec ***SUMMARY OF RESULTS*** @@ -15,7 +15,7 @@ Simulation Metadata Surface Application: Absorption Chiller Average Direct-Use Heat Production: 367.18 MW Average Cooling Production: 237.93 MW - Direct-Use Cooling Breakeven Price (LCOC): 0.00 USD/MMBTU + Direct-Use Cooling Breakeven Price (LCOC): 8.49 USD/MMBTU Total CAPEX: 248.47 MUSD Number of production wells: 6 Number of injection wells: 4 @@ -248,7 +248,7 @@ Electricity to grid (kWh) 0.0 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Cooling provided (kWh/yr) 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 +Cooling provided (kWh/yr) 0 0 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 REVENUE PPA price (cents/kWh) 0.0 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 @@ -358,6 +358,10 @@ Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN +Present value of annual cooling costs ($) 269,177,011 +Present value of annual cooling provided (MMBTU) 31,712,370 +LCOC Levelized cost of cooling nominal ($/MMBTU) 8.49 + PROJECT STATE INCOME TAXES EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 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 From 9e1b45141c4a42efd37294d4ca94fcce6c09c35e Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:40:32 -0700 Subject: [PATCH 056/127] regen Fervo_Project_Cape-{4,5,6} --- tests/examples/Fervo_Project_Cape-4.out | 13 +++++++------ tests/examples/Fervo_Project_Cape-5.out | 13 +++++++------ tests/examples/Fervo_Project_Cape-6.out | 13 +++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/tests/examples/Fervo_Project_Cape-4.out b/tests/examples/Fervo_Project_Cape-4.out index 886d18482..ca6f68d4e 100644 --- a/tests/examples/Fervo_Project_Cape-4.out +++ b/tests/examples/Fervo_Project_Cape-4.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:15 - Calculation Time: 1.787 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 10:35 + Calculation Time: 1.765 sec ***SUMMARY OF RESULTS*** @@ -98,13 +98,13 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 30.00 MUSD Drilling and completion costs: 467.75 MUSD Drilling and completion costs per well: 3.96 MUSD Stimulation costs: 542.80 MUSD Surface power plant costs: 1504.05 MUSD Field gathering system costs: 56.44 MUSD Total surface equipment costs: 1560.49 MUSD - Exploration costs: 30.00 MUSD Overnight Capital Cost: 2601.04 MUSD Inflation costs during construction: 59.82 MUSD Total CAPEX: 2660.87 MUSD @@ -120,7 +120,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 614.60 MW Average Total Electricity Generation: 610.21 MW @@ -334,6 +333,8 @@ PPA revenue ($) 0 398,360,985 4 Electricity to grid (kWh) 0 4,193,273,525 4,219,573,970 4,227,516,388 4,232,001,035 4,233,245,126 4,225,570,913 4,194,325,606 4,114,710,394 4,101,737,992 4,212,547,398 4,224,519,385 4,230,441,060 4,233,667,186 4,231,750,368 4,214,888,525 4,163,207,043 4,055,985,743 4,194,671,056 4,220,853,770 4,228,811,003 4,233,321,393 4,234,588,146 4,226,928,684 4,195,686,141 4,116,056,232 4,103,061,353 4,213,834,812 4,225,738,401 4,231,569,184 4,234,649,495 Present value of annual costs ($) 2,298,728,919 + +Present value of annual energy costs ($) 2,298,728,919 Present value of annual energy nominal (kWh) 28,355,365,264 LCOE Levelized cost of energy nominal (cents/kWh) 8.11 diff --git a/tests/examples/Fervo_Project_Cape-5.out b/tests/examples/Fervo_Project_Cape-5.out index 8c48f3ae4..c1183346b 100644 --- a/tests/examples/Fervo_Project_Cape-5.out +++ b/tests/examples/Fervo_Project_Cape-5.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:15 - Calculation Time: 1.785 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 10:35 + Calculation Time: 1.788 sec ***SUMMARY OF RESULTS*** @@ -108,13 +108,13 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 30.00 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: 1467.78 MUSD Field gathering system costs: 48.33 MUSD Total surface equipment costs: 1516.11 MUSD - Exploration costs: 30.00 MUSD Overnight Capital Cost: 2437.12 MUSD Inflation costs during construction: 285.92 MUSD Interest during construction: 142.66 MUSD @@ -132,7 +132,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 599.78 MW Average Total Electricity Generation: 597.78 MW @@ -347,6 +346,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 0 0 3,996,903,407 4,021,221,159 4,028,632,582 4,033,015,549 4,036,041,845 4,037,133,714 4,024,512,547 3,972,502,820 4,010,975,034 4,024,452,750 4,030,583,392 4,034,549,165 4,037,310,847 4,036,490,799 4,010,246,587 3,977,918,195 4,017,972,710 4,027,488,405 4,032,555,784 4,035,945,414 4,038,021,639 4,033,058,931 3,985,558,545 3,997,861,917 4,022,072,057 4,029,450,128 4,033,813,085 4,036,825,175 4,037,905,857 4,026,950,141 Present value of annual costs ($) 1,292,771,969 + +Present value of annual energy costs ($) 1,292,771,969 Present value of annual energy nominal (kWh) 15,057,196,989 LCOE Levelized cost of energy nominal (cents/kWh) 8.59 diff --git a/tests/examples/Fervo_Project_Cape-6.out b/tests/examples/Fervo_Project_Cape-6.out index 05f33a623..93f566a2e 100644 --- a/tests/examples/Fervo_Project_Cape-6.out +++ b/tests/examples/Fervo_Project_Cape-6.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.11.18 - Simulation Date: 2026-02-27 - Simulation Time: 13:19 - Calculation Time: 1.826 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-01 + Simulation Time: 10:35 + Calculation Time: 1.793 sec ***SUMMARY OF RESULTS*** @@ -108,13 +108,13 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 30.00 MUSD Drilling and completion costs: 92.98 MUSD Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 96.60 MUSD Surface power plant costs: 293.50 MUSD Field gathering system costs: 9.87 MUSD Total surface equipment costs: 303.37 MUSD - Exploration costs: 30.00 MUSD Overnight Capital Cost: 522.94 MUSD Inflation costs during construction: 33.49 MUSD Interest during construction: 21.28 MUSD @@ -132,7 +132,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 119.93 MW Average Total Electricity Generation: 119.50 MW @@ -347,6 +346,8 @@ PPA revenue ($) 0 0 0 Electricity to grid (kWh) 0 0 0 808,243,387 813,446,234 815,032,355 815,970,503 816,625,987 817,071,580 816,608,918 810,320,754 805,158,022 812,855,559 814,772,137 815,842,108 816,581,346 817,117,371 817,091,391 813,246,145 803,899,806 812,179,867 814,558,437 815,735,966 816,506,413 817,062,723 817,263,543 815,047,042 804,189,155 810,933,090 814,142,129 815,491,723 816,336,340 816,919,110 Present value of annual costs ($) 359,956,613 + +Present value of annual energy costs ($) 359,956,613 Present value of annual energy nominal (kWh) 4,031,275,592 LCOE Levelized cost of energy nominal (cents/kWh) 8.93 From e8c52725b43062bd388303b577d32d0a4632d356 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:33:23 -0700 Subject: [PATCH 057/127] add config and credentials to .aiexclude --- .aiexclude | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.aiexclude b/.aiexclude index 03bd4129b..e6afc48b4 100644 --- a/.aiexclude +++ b/.aiexclude @@ -1 +1,3 @@ *.env +credentials +config From 57f04d2fab94a4e2720452702e92b9e7cb4a6142 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 1 Apr 2026 12:08:46 -0700 Subject: [PATCH 058/127] example14_data-center CHP update (WIP) --- tests/examples/example14_data-center.out | 328 ++++++++++++----------- tests/examples/example14_data-center.txt | 21 +- 2 files changed, 179 insertions(+), 170 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 174a31e4d..49c9c9e9f 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,16 +6,18 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 1.807 sec + Simulation Time: 12:08 + Calculation Time: 1.805 sec ***SUMMARY OF RESULTS*** - End-Use Option: Electricity + End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 1016.98 MW - Electricity breakeven price: 9.44 cents/kWh - Total CAPEX: 8214.83 MUSD - Total CAPEX ($/kW): 7936 USD/kW + Average Direct-Use Heat Production: 8.09 MW + Electricity breakeven price: 9.15 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.63 USD/MMBTU + Total CAPEX: 7573.71 MUSD + Total CAPEX ($/kW): 7317 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -29,15 +31,15 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.38 % - Investment Tax Credit: 3285.93 MUSD + Investment Tax Credit: 3029.48 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 509.91 MUSD - After-tax IRR: 22.32 % - Project VIR=PI=PIR: 1.25 - Project MOIC: 3.06 - Project Payback Period: 5.92 yr - Estimated Jobs Created: 2377 + Project NPV: 609.41 MUSD + After-tax IRR: 24.15 % + Project VIR=PI=PIR: 1.33 + Project MOIC: 3.43 + Project Payback Period: 5.91 yr + CHP: Percent cost allocation for electrical plant: 99.89 % ***ENGINEERING PARAMETERS*** @@ -104,26 +106,24 @@ Simulation Metadata Drilling and completion costs: 1278.62 MUSD Drilling and completion costs per well: 5.61 MUSD Stimulation costs: 1514.98 MUSD - Surface power plant costs: 3130.10 MUSD + Surface power plant costs: 3133.57 MUSD Field gathering system costs: 68.89 MUSD Transmission pipeline cost: 2.00 MUSD - Total surface equipment costs: 3198.99 MUSD + Total surface equipment costs: 3202.46 MUSD One-time Flat License Fees Etc: 100.00 MUSD - Total Add-on CAPEX: 562.00 MUSD - Overnight Capital Cost: 7156.59 MUSD - Inflation costs during construction: 870.54 MUSD - Interest during construction: 187.70 MUSD - Total CAPEX: 8214.83 MUSD + Overnight Capital Cost: 6598.06 MUSD + Inflation costs during construction: 802.60 MUSD + Interest during construction: 173.05 MUSD + Total CAPEX: 7573.71 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 14.53 MUSD/yr - Power plant maintenance costs: 50.12 MUSD/yr + Wellfield maintenance costs: 14.56 MUSD/yr + Power plant maintenance costs: 50.26 MUSD/yr Water costs: 44.89 MUSD/yr Redrilling costs: 186.24 MUSD/yr - Total Add-on OPEX: 0.00 MUSD/yr - Total operating and maintenance costs: 295.78 MUSD/yr + Total operating and maintenance costs: 295.96 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** @@ -139,83 +139,88 @@ Simulation Metadata Average Annual Total Electricity Generation: 8799.65 GWh Average Annual Net Electricity Generation: 8018.16 GWh Initial pumping power/net installed power: 9.86 % + Maximum Net Heat Production: 9.17 MW + Average Net Heat Production: 8.09 MW + Minimum Net Heat Production: 0.00 MW + Initial Net Heat Production: 7.34 MW + Average Annual Heat Production: 63.77 GWh Average Pumping Power: 99.12 MW - Heat to Power Conversion Efficiency: 14.93 % + Heat to Power Conversion Efficiency: 14.95 % ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * ************************************************************ - YEAR THERMAL GEOFLUID PUMP NET FIRST LAW - DRAWDOWN TEMPERATURE POWER POWER EFFICIENCY - (degC) (MW) (MW) (%) - 1 1.0000 199.16 99.0596 1005.0269 14.8520 - 2 1.0077 200.68 98.8776 1026.1299 15.0031 - 3 1.0091 200.97 98.8436 1030.0677 15.0310 - 4 1.0098 201.12 98.8260 1032.1180 15.0455 - 5 1.0103 201.21 98.8146 1033.4653 15.0550 - 6 1.0107 201.28 98.8101 1034.3488 15.0613 - 7 1.0107 201.29 98.8274 1034.4343 15.0617 - 8 1.0100 201.14 98.9135 1032.4083 15.0469 - 9 1.0075 200.66 99.1659 1025.4506 14.9961 - 10 1.0017 199.50 99.7379 1009.0647 14.8757 - 11 0.9905 197.27 100.8170 977.6311 14.6406 - 12 0.9719 193.55 102.5765 925.7343 14.2398 - 13 1.0049 200.13 98.7254 1018.6747 14.9517 - 14 1.0083 200.81 98.6957 1028.0035 15.0177 - 15 1.0094 201.03 98.6598 1031.0442 15.0393 - 16 1.0100 201.15 98.6190 1032.8258 15.0520 - 17 1.0105 201.24 98.5758 1034.0499 15.0609 - 18 1.0107 201.29 98.5385 1034.7786 15.0663 - 19 1.0106 201.26 98.5340 1034.4086 15.0638 - 20 1.0094 201.03 98.6272 1031.1718 15.0404 - 21 1.0061 200.36 98.9381 1021.6744 14.9712 - 22 0.9987 198.90 99.6384 1000.9400 14.8184 - 23 0.9852 196.22 100.9204 963.2345 14.5340 - 24 0.9637 191.92 102.9412 903.5952 14.0668 - 25 1.0067 200.50 98.3062 1024.1225 14.9933 - 26 1.0087 200.90 98.2924 1029.6478 15.0323 - 27 1.0096 201.07 98.2821 1032.0887 15.0494 - 28 1.0102 201.19 98.2746 1033.6127 15.0602 - 29 1.0106 201.26 98.2712 1034.6508 15.0674 - 30 1.0107 201.29 98.2818 1035.0844 15.0704 + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 199.16 99.0596 1005.0269 7.3428 14.8700 + 1 1.0077 200.68 98.8776 1026.1299 8.6483 15.0242 + 2 1.0091 200.97 98.8436 1030.0677 8.8912 15.0527 + 3 1.0098 201.12 98.8260 1032.1180 9.0176 15.0675 + 4 1.0103 201.21 98.8146 1033.4653 9.1006 15.0772 + 5 1.0107 201.28 98.8101 1034.3488 9.1553 15.0836 + 6 1.0107 201.29 98.8274 1034.4343 9.1616 15.0841 + 7 1.0100 201.14 98.9135 1032.4083 9.0411 15.0690 + 8 1.0075 200.66 99.1659 1025.4506 8.6239 15.0172 + 9 1.0017 199.50 99.7379 1009.0647 7.6376 14.8943 + 10 0.9905 197.27 100.8170 977.6311 5.7341 14.6545 + 11 0.9719 193.55 102.5765 925.7343 2.5571 14.2460 + 12 1.0049 200.13 98.7254 1018.6747 8.1743 14.9716 + 13 1.0083 200.81 98.6957 1028.0035 8.7536 15.0390 + 14 1.0094 201.03 98.6598 1031.0442 8.9405 15.0611 + 15 1.0100 201.15 98.6190 1032.8258 9.0487 15.0741 + 16 1.0105 201.24 98.5758 1034.0499 9.1221 15.0832 + 17 1.0107 201.29 98.5385 1034.7786 9.1651 15.0887 + 18 1.0106 201.26 98.5340 1034.4086 9.1418 15.0861 + 19 1.0094 201.03 98.6272 1031.1718 8.9464 15.0622 + 20 1.0061 200.36 98.9381 1021.6744 8.3746 14.9917 + 21 0.9987 198.90 99.6384 1000.9400 7.1233 14.8357 + 22 0.9852 196.22 100.9204 963.2345 4.8327 14.5457 + 23 0.9637 191.92 102.9412 903.5952 1.1634 14.0696 + 24 1.0067 200.50 98.3062 1024.1225 8.4877 15.0140 + 25 1.0087 200.90 98.2924 1029.6478 8.8308 15.0538 + 26 1.0096 201.07 98.2821 1032.0887 8.9820 15.0714 + 27 1.0102 201.19 98.2746 1033.6127 9.0762 15.0823 + 28 1.0106 201.26 98.2712 1034.6508 9.1405 15.0898 + 29 1.0107 201.29 98.2818 1035.0844 9.1681 15.0928 ******************************************************************* * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * ******************************************************************* - YEAR ELECTRICITY HEAT RESERVOIR PERCENTAGE OF - PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED - (GWh/year) (GWh/year) (10^15 J) (%) - 1 8035.3 53734.4 3777.18 4.87 - 2 8107.7 53982.8 3582.85 9.77 - 3 8129.8 54058.5 3388.23 14.67 - 4 8142.9 54103.3 3193.46 19.57 - 5 8151.7 54133.4 2998.58 24.48 - 6 8155.9 54148.3 2803.65 29.39 - 7 8149.6 54127.7 2608.79 34.30 - 8 8116.6 54018.0 2414.32 39.20 - 9 8028.0 53722.2 2220.92 44.07 - 10 7843.3 53102.6 2029.76 48.88 - 11 7517.9 52002.0 1842.55 53.60 - 12 7445.1 51735.3 1656.30 58.29 - 13 8078.0 53876.3 1462.35 63.17 - 14 8118.1 54013.9 1267.90 68.07 - 15 8136.3 54075.6 1073.22 72.97 - 16 8147.9 54114.7 878.41 77.88 - 17 8155.7 54140.6 683.51 82.79 - 18 8157.9 54147.2 488.58 87.70 - 19 8145.3 54104.8 293.80 92.60 - 20 8097.9 53946.1 99.59 97.49 - 21 7982.3 53559.3 -93.22 102.35 - 22 7755.7 52796.9 -283.29 107.13 - 23 7374.5 51502.6 -468.70 111.80 - 24 7729.1 52681.1 -658.35 116.58 - 25 8099.9 53940.8 -852.54 121.47 - 26 8128.3 54038.4 -1047.08 126.37 - 27 8143.4 54090.4 -1241.80 131.27 - 28 8153.4 54124.7 -1436.65 136.18 - 29 8159.5 54145.8 -1631.58 141.09 - 30 8158.3 54142.5 -1826.49 146.00 + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 64.8 8035.3 53734.36 3777.18 4.87 + 2 69.3 8107.7 53982.79 3582.85 9.77 + 3 70.6 8129.8 54058.54 3388.23 14.67 + 4 71.4 8142.9 54103.27 3193.46 19.57 + 5 72.0 8151.7 54133.43 2998.58 24.48 + 6 72.3 8155.9 54148.35 2803.65 29.39 + 7 71.9 8149.6 54127.66 2608.79 34.30 + 8 69.9 8116.6 54017.96 2414.32 39.20 + 9 64.6 8028.0 53722.18 2220.92 44.07 + 10 53.4 7843.3 53102.62 2029.76 48.88 + 11 33.6 7517.9 52002.04 1842.55 53.60 + 12 28.8 7445.1 51735.30 1656.30 58.29 + 13 67.4 8078.0 53876.25 1462.35 63.17 + 14 69.8 8118.1 54013.85 1267.90 68.07 + 15 70.9 8136.3 54075.61 1073.22 72.97 + 16 71.6 8147.9 54114.68 878.41 77.88 + 17 72.1 8155.7 54140.58 683.51 82.79 + 18 72.2 8157.9 54147.23 488.58 87.70 + 19 71.5 8145.3 54104.83 293.80 92.60 + 20 68.6 8097.9 53946.13 99.59 97.49 + 21 61.7 7982.3 53559.30 -93.22 102.35 + 22 47.9 7755.7 52796.90 -283.29 107.13 + 23 24.6 7374.5 51502.59 -468.70 111.80 + 24 45.8 7729.1 52681.06 -658.35 116.58 + 25 68.5 8099.9 53940.77 -852.54 121.47 + 26 70.3 8128.3 54038.37 -1047.08 126.37 + 27 71.2 8143.4 54090.35 -1241.80 131.27 + 28 71.8 8153.4 54124.73 -1436.65 136.18 + 29 72.2 8159.5 54145.79 -1631.58 141.09 + 30 72.1 8158.3 54142.50 -1826.49 146.00 *************************** * SAM CASH FLOW PROFILE * @@ -224,72 +229,75 @@ 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] (%) 2.68 2.68 2.68 46.0 46.0 -Overnight capital expenditure [construction] ($) -191,835,041 -191,835,041 -191,835,041 -3,290,543,592 -3,290,543,592 +Overnight capital expenditure [construction] ($) -176,863,462 -176,863,462 -176,863,462 -3,033,736,329 -3,033,736,329 plus: -Inflation cost [construction] ($) -5,179,546 -10,498,940 -15,961,957 -370,032,365 -468,867,916 +Inflation cost [construction] ($) -4,775,313 -9,679,560 -14,716,222 -341,153,551 -432,275,577 plus: Royalty supplemental payments [construction] ($) 0 0 0 0 0 equals: -Nominal capital expenditure [construction] ($) -197,014,587 -202,333,981 -207,796,998 -3,660,575,958 -3,759,411,508 +Nominal capital expenditure [construction] ($) -181,638,776 -186,543,023 -191,579,684 -3,374,889,879 -3,466,011,906 -Issuance of equity [construction] ($) 78,805,835 80,933,592 83,118,799 1,464,230,383 1,503,764,603 -Issuance of debt [construction] ($) 118,208,752 121,400,388 124,678,199 2,196,345,575 2,255,646,905 -Debt balance [construction] ($) 118,208,752 246,228,831 384,695,844 2,602,584,386 5,003,976,017 -Debt interest payment [construction] ($) 0 6,619,690 13,788,815 21,542,967 145,744,726 +Issuance of equity [construction] ($) 72,655,510 74,617,209 76,631,874 1,349,955,952 1,386,404,762 +Issuance of debt [construction] ($) 108,983,265 111,925,814 114,947,811 2,024,933,927 2,079,607,144 +Debt balance [construction] ($) 108,983,265 227,012,142 354,672,632 2,399,468,227 4,613,445,592 +Debt interest payment [construction] ($) 0 6,103,063 12,712,680 19,861,667 134,370,221 -Installed cost [construction] ($) -197,014,587 -208,953,671 -221,585,813 -3,682,118,925 -3,905,156,234 -After-tax net cash flow [construction] ($) -78,805,835 -80,933,592 -83,118,799 -1,464,230,383 -1,503,764,603 +Installed cost [construction] ($) -181,638,776 -192,646,086 -204,292,364 -3,394,751,547 -3,600,382,127 +After-tax net cash flow [construction] ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 ENERGY Electricity to grid (kWh) 0.0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 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 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 +Heat provided (kWh) 0 0 0 0 0 64,801,517 69,273,187 70,636,641 71,441,852 71,984,641 72,253,249 71,880,903 69,906,161 64,582,271 53,430,157 33,619,704 28,818,391 67,355,519 69,832,292 70,943,875 71,647,194 72,113,431 72,233,105 71,469,952 68,613,281 61,650,341 47,927,215 24,629,599 45,842,066 68,516,844 70,273,620 71,209,283 71,828,127 72,207,123 72,147,954 + 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 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 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 -Add-On Profit revenue ($) 0 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 -Capacity payment revenue ($) 0 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 107,000,000 +Heat price ($/kWh) 0.0 0.0 0.0 0.0 0.0 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 +Heat revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 +Capacity payment revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 -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 4,107,414,615 -Total revenue ($) 0 870,392,227 877,268,826 884,003,578 889,893,776 895,386,486 900,450,518 904,477,860 905,874,327 901,729,609 887,915,445 859,804,459 856,756,018 925,104,543 933,787,961 940,277,149 946,114,617 951,569,867 956,439,430 959,773,682 959,425,180 951,813,801 932,245,306 895,895,544 938,226,399 982,728,739 990,424,915 996,709,943 1,002,450,286 1,007,769,433 5,119,705,320 +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 3,786,855,449 +Total revenue ($) 0 872,258,775 886,647,780 895,673,135 902,916,087 909,320,682 914,835,976 918,237,778 916,316,677 903,227,825 870,678,108 809,285,562 798,170,914 931,261,814 944,106,212 952,462,860 959,481,904 965,720,432 970,791,046 972,843,201 967,695,492 948,386,375 905,763,028 830,273,270 908,241,070 990,837,037 1,001,484,596 1,009,341,538 1,016,121,540 1,022,077,399 4,813,354,719 -Property tax net assessed value ($) 0 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 8,214,829,229 +Property tax net assessed value ($) 0 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 OPERATING EXPENSES -O&M fixed expense ($) 0 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 +O&M fixed expense ($) 0 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 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 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 295,782,846 +Total operating expenses ($) 0 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 -EBITDA ($) 0 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 OPERATING ACTIVITIES -EBITDA ($) 0 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 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 280,222,657 276,420,855 272,406,153 268,166,627 263,689,688 258,962,040 253,969,644 248,697,674 243,130,474 237,251,510 231,043,324 224,487,480 217,564,509 210,253,851 202,533,796 194,381,419 185,772,508 176,681,498 167,081,391 156,943,679 146,238,255 134,933,327 122,995,323 110,388,791 97,076,293 83,018,295 68,173,049 52,496,469 35,942,001 18,460,483 -Cash flow from operating activities ($) 0 294,386,724 305,065,124 315,814,579 325,944,302 335,913,952 345,705,631 354,725,369 361,393,807 362,816,289 354,881,088 332,978,288 336,485,692 411,757,188 427,751,264 441,960,506 455,950,353 470,014,512 483,975,086 496,909,444 506,698,655 509,792,700 501,529,132 477,117,375 532,054,762 589,869,600 611,623,774 632,754,048 654,170,970 676,044,585 4,805,461,991 +Debt interest payment ($) 0 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 +Cash flow from operating activities ($) 0 317,946,329 335,840,428 348,567,162 359,718,769 370,250,906 380,124,882 388,129,453 391,068,878 383,112,739 355,983,168 300,314,295 295,243,848 434,717,423 454,301,925 469,776,123 484,311,301 498,486,865 511,938,991 522,842,021 527,040,836 517,601,649 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 INVESTING ACTIVITIES -Total installed cost ($) -8,214,829,229 +Total installed cost ($) -7,573,710,899 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -8,214,829,229 +Purchase of property ($) -7,573,710,899 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 @@ -301,89 +309,93 @@ 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 ($) -8,214,829,229 0 0 0 0 0 0 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 ($) -7,573,710,899 0 0 0 0 0 0 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 ($) 3,210,853,213 -Size of debt ($) 5,003,976,017 +Issuance of equity ($) 2,960,265,307 +Size of debt ($) 4,613,445,592 minus: -Debt principal payment ($) 0 67,889,312 71,691,114 75,705,816 79,945,342 84,422,281 89,149,929 94,142,325 99,414,295 104,981,496 110,860,459 117,068,645 123,624,489 130,547,461 137,858,118 145,578,173 153,730,551 162,339,462 171,430,471 181,030,578 191,168,290 201,873,715 213,178,643 225,116,647 237,723,179 251,035,677 265,093,675 279,938,920 295,615,500 312,169,968 329,651,486 +Debt principal payment ($) 0 62,590,957 66,096,051 69,797,430 73,706,086 77,833,627 82,192,310 86,795,079 91,655,603 96,788,317 102,208,463 107,932,137 113,976,337 120,359,011 127,099,116 134,216,667 141,732,800 149,669,837 158,051,348 166,902,223 176,248,748 186,118,677 196,541,323 207,547,638 219,170,305 231,443,842 244,404,697 258,091,361 272,544,477 287,806,967 303,924,158 equals: -Cash flow from financing activities ($) 8,214,829,229 -67,889,312 -71,691,114 -75,705,816 -79,945,342 -84,422,281 -89,149,929 -94,142,325 -99,414,295 -104,981,496 -110,860,459 -117,068,645 -123,624,489 -130,547,461 -137,858,118 -145,578,173 -153,730,551 -162,339,462 -171,430,471 -181,030,578 -191,168,290 -201,873,715 -213,178,643 -225,116,647 -237,723,179 -251,035,677 -265,093,675 -279,938,920 -295,615,500 -312,169,968 -329,651,486 +Cash flow from financing activities ($) 7,573,710,899 -62,590,957 -66,096,051 -69,797,430 -73,706,086 -77,833,627 -82,192,310 -86,795,079 -91,655,603 -96,788,317 -102,208,463 -107,932,137 -113,976,337 -120,359,011 -127,099,116 -134,216,667 -141,732,800 -149,669,837 -158,051,348 -166,902,223 -176,248,748 -186,118,677 -196,541,323 -207,547,638 -219,170,305 -231,443,842 -244,404,697 -258,091,361 -272,544,477 -287,806,967 -303,924,158 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 294,386,724 305,065,124 315,814,579 325,944,302 335,913,952 345,705,631 354,725,369 361,393,807 362,816,289 354,881,088 332,978,288 336,485,692 411,757,188 427,751,264 441,960,506 455,950,353 470,014,512 483,975,086 496,909,444 506,698,655 509,792,700 501,529,132 477,117,375 532,054,762 589,869,600 611,623,774 632,754,048 654,170,970 676,044,585 4,805,461,991 -Cash flow from investing activities ($) -8,214,829,229 0 0 0 0 0 0 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 ($) 8,214,829,229 -67,889,312 -71,691,114 -75,705,816 -79,945,342 -84,422,281 -89,149,929 -94,142,325 -99,414,295 -104,981,496 -110,860,459 -117,068,645 -123,624,489 -130,547,461 -137,858,118 -145,578,173 -153,730,551 -162,339,462 -171,430,471 -181,030,578 -191,168,290 -201,873,715 -213,178,643 -225,116,647 -237,723,179 -251,035,677 -265,093,675 -279,938,920 -295,615,500 -312,169,968 -329,651,486 -Total pre-tax cash flow ($) 0 226,497,411 233,374,010 240,108,763 245,998,960 251,491,671 256,555,702 260,583,044 261,979,512 257,834,794 244,020,629 215,909,643 212,861,203 281,209,728 289,893,145 296,382,333 302,219,802 307,675,051 312,544,615 315,878,866 315,530,364 307,918,985 288,350,490 252,000,728 294,331,583 338,833,923 346,530,099 352,815,127 358,555,470 363,874,617 4,475,810,505 +Cash flow from operating activities ($) 0 317,946,329 335,840,428 348,567,162 359,718,769 370,250,906 380,124,882 388,129,453 391,068,878 383,112,739 355,983,168 300,314,295 295,243,848 434,717,423 454,301,925 469,776,123 484,311,301 498,486,865 511,938,991 522,842,021 527,040,836 517,601,649 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 +Cash flow from investing activities ($) -7,573,710,899 0 0 0 0 0 0 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 ($) 7,573,710,899 -62,590,957 -66,096,051 -69,797,430 -73,706,086 -77,833,627 -82,192,310 -86,795,079 -91,655,603 -96,788,317 -102,208,463 -107,932,137 -113,976,337 -120,359,011 -127,099,116 -134,216,667 -141,732,800 -149,669,837 -158,051,348 -166,902,223 -176,248,748 -186,118,677 -196,541,323 -207,547,638 -219,170,305 -231,443,842 -244,404,697 -258,091,361 -272,544,477 -287,806,967 -303,924,158 +Total pre-tax cash flow ($) 0 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 Pre-tax Returns: -Issuance of equity ($) 3,210,853,213 -Total pre-tax cash flow ($) 0 226,497,411 233,374,010 240,108,763 245,998,960 251,491,671 256,555,702 260,583,044 261,979,512 257,834,794 244,020,629 215,909,643 212,861,203 281,209,728 289,893,145 296,382,333 302,219,802 307,675,051 312,544,615 315,878,866 315,530,364 307,918,985 288,350,490 252,000,728 294,331,583 338,833,923 346,530,099 352,815,127 358,555,470 363,874,617 4,475,810,505 -Total pre-tax returns ($) -3,210,853,213 226,497,411 233,374,010 240,108,763 245,998,960 251,491,671 256,555,702 260,583,044 261,979,512 257,834,794 244,020,629 215,909,643 212,861,203 281,209,728 289,893,145 296,382,333 302,219,802 307,675,051 312,544,615 315,878,866 315,530,364 307,918,985 288,350,490 252,000,728 294,331,583 338,833,923 346,530,099 352,815,127 358,555,470 363,874,617 4,475,810,505 +Issuance of equity ($) 2,960,265,307 +Total pre-tax cash flow ($) 0 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 +Total pre-tax returns ($) -2,960,265,307 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 After-tax Returns: -Total pre-tax returns ($) -3,210,853,213 226,497,411 233,374,010 240,108,763 245,998,960 251,491,671 256,555,702 260,583,044 261,979,512 257,834,794 244,020,629 215,909,643 212,861,203 281,209,728 289,893,145 296,382,333 302,219,802 307,675,051 312,544,615 315,878,866 315,530,364 307,918,985 288,350,490 252,000,728 294,331,583 338,833,923 346,530,099 352,815,127 358,555,470 363,874,617 4,475,810,505 -Federal ITC total income ($) 0 3,285,931,692 0 0 0 0 0 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 ($) -2,960,265,307 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 +Federal ITC total income ($) 0 3,029,484,359 0 0 0 0 0 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 -25,406,604 4,595,027 2,495,659 517,324 -1,429,749 -3,342,064 -5,103,619 -6,405,965 -6,683,775 -5,134,031 -856,414 -1,541,410 -16,241,933 -19,365,576 -22,140,641 -24,872,858 -27,619,588 -30,346,088 -32,872,168 -34,784,001 -67,475,391 -97,948,640 -93,181,023 -103,910,295 -115,201,533 -119,450,123 -123,576,866 -127,759,590 -132,031,507 -938,506,727 +Federal tax benefit (liability) ($) 0 -32,512,003 -6,423,806 -8,909,337 -11,087,246 -13,144,172 -15,072,560 -16,635,853 -17,209,922 -15,656,088 -10,357,683 514,448 1,504,706 -25,734,483 -29,559,336 -32,581,447 -35,420,168 -38,188,655 -40,815,855 -42,945,217 -43,765,246 -71,504,687 -94,798,805 -82,205,189 -99,702,207 -118,230,221 -122,840,944 -127,048,410 -131,195,238 -135,339,182 -878,923,330 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 -9,106,310 1,646,963 894,501 185,421 -512,455 -1,197,872 -1,829,254 -2,296,045 -2,395,618 -1,840,154 -306,958 -552,477 -5,821,481 -6,941,067 -7,935,714 -8,915,003 -9,899,494 -10,876,734 -11,782,139 -12,467,384 -24,184,728 -35,107,039 -33,398,216 -37,243,833 -41,290,872 -42,813,664 -44,292,783 -45,791,968 -47,323,121 -336,382,339 -Total after-tax returns ($) -3,210,853,213 3,477,916,189 239,616,001 243,498,923 246,701,704 249,549,467 252,015,766 253,650,171 253,277,502 248,755,400 237,046,444 214,746,271 210,767,316 259,146,313 263,586,503 266,305,978 268,431,941 270,155,968 271,321,792 271,224,558 268,278,979 216,258,866 155,294,811 125,421,489 153,177,455 182,341,518 184,266,312 184,945,479 185,003,912 184,519,989 3,200,921,439 +State tax benefit (liability) ($) 0 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 +Total after-tax returns ($) -2,960,265,307 3,240,674,680 261,018,131 266,667,084 270,951,514 274,561,934 277,457,662 278,735,850 276,034,921 265,056,832 239,704,590 193,080,996 183,311,538 279,400,099 287,048,728 291,300,071 294,462,933 296,940,683 298,442,449 297,602,030 291,340,375 234,349,364 160,082,753 101,700,453 155,899,902 213,326,989 217,711,236 219,852,660 220,999,515 221,326,146 3,002,501,703 -After-tax net cash flow ($) -78,805,835 -80,933,592 -83,118,799 -1,464,230,383 -1,503,764,603 3,477,916,189 239,616,001 243,498,923 246,701,704 249,549,467 252,015,766 253,650,171 253,277,502 248,755,400 237,046,444 214,746,271 210,767,316 259,146,313 263,586,503 266,305,978 268,431,941 270,155,968 271,321,792 271,224,558 268,278,979 216,258,866 155,294,811 125,421,489 153,177,455 182,341,518 184,266,312 184,945,479 185,003,912 184,519,989 3,200,921,439 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 4.82 8.61 11.73 14.18 16.06 17.50 18.59 19.42 20.04 20.50 20.83 21.08 21.33 21.53 21.69 21.81 21.92 22.00 22.07 22.12 22.15 22.17 22.19 22.20 22.21 22.22 22.23 22.24 22.24 22.32 -After-tax cumulative NPV ($) -78,805,835 -149,168,187 -211,991,716 -1,174,144,444 -2,033,209,379 -305,873,553 -202,410,564 -111,003,917 -30,491,211 40,313,222 102,477,808 156,873,190 204,094,172 244,414,352 277,818,078 304,126,733 326,575,257 350,571,382 371,790,668 390,428,701 406,761,659 421,052,467 433,530,278 444,374,398 453,699,712 460,234,962 464,314,931 467,179,659 470,221,369 473,369,262 476,134,879 478,548,123 480,646,821 482,466,623 509,911,871 +After-tax net cash flow ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 3,240,674,680 261,018,131 266,667,084 270,951,514 274,561,934 277,457,662 278,735,850 276,034,921 265,056,832 239,704,590 193,080,996 183,311,538 279,400,099 287,048,728 291,300,071 294,462,933 296,940,683 298,442,449 297,602,030 291,340,375 234,349,364 160,082,753 101,700,453 155,899,902 213,326,989 217,711,236 219,852,660 220,999,515 221,326,146 3,002,501,703 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 5.46 9.85 13.38 16.08 18.10 19.61 20.73 21.56 22.17 22.58 22.85 23.04 23.27 23.46 23.61 23.72 23.82 23.89 23.95 24.00 24.03 24.04 24.05 24.06 24.07 24.08 24.09 24.09 24.10 24.15 +After-tax cumulative NPV ($) -72,655,510 -137,526,501 -195,447,029 -1,082,509,487 -1,874,529,538 -265,021,668 -152,317,525 -52,213,821 36,212,967 114,114,164 182,554,488 242,329,504 293,793,373 336,755,813 370,534,116 394,188,549 413,712,798 439,584,359 462,692,405 483,079,706 500,996,542 516,704,217 530,429,279 542,328,025 552,454,947 559,536,885 563,742,644 566,065,565 569,161,335 572,844,154 576,111,738 578,980,466 581,487,501 583,670,298 609,414,261 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -78,805,835 -80,933,592 -83,118,799 -1,464,230,383 -1,503,764,603 2,607,523,962 -637,652,825 -640,504,656 -643,192,071 -645,837,019 -648,434,752 -650,827,688 -652,596,825 -652,974,210 -650,869,001 -645,058,188 -645,988,702 -665,958,230 -670,201,458 -673,971,170 -677,682,676 -681,413,898 -685,117,638 -688,549,123 -691,146,201 -735,554,935 -776,950,495 -770,474,055 -785,048,944 -800,387,221 -806,158,603 -811,764,465 -817,446,374 -823,249,444 2,188,630,733 +Annual costs ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 2,368,415,905 -625,629,649 -629,006,051 -631,964,573 -634,758,748 -637,378,315 -639,501,927 -640,281,756 -638,170,993 -630,973,518 -616,204,566 -614,859,376 -651,861,715 -657,057,484 -661,162,789 -665,018,971 -668,779,748 -672,348,597 -675,241,171 -676,355,117 -714,037,011 -745,680,275 -728,572,817 -752,341,168 -777,510,048 -783,773,360 -789,488,878 -795,122,025 -800,751,253 1,976,002,433 PPA revenue ($) 0 0 0 0 0 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 Electricity to grid (kWh) 0 0 0 0 0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 -Present value of annual costs ($) 2,847,750,635 +Present value of annual costs ($) 2,762,920,855 -Present value of annual energy costs ($) 2,847,750,635 +Present value of annual energy costs ($) 2,759,860,647 Present value of annual energy nominal (kWh) 30,166,877,246 -LCOE Levelized cost of energy nominal (cents/kWh) 9.44 +LCOE Levelized cost of energy nominal (cents/kWh) 9.15 Present value of PPA revenue ($) 2,956,909,593 Present value of annual energy nominal (kWh) 30,166,877,246 LPPA Levelized PPA price nominal (cents/kWh) 9.80 +Present value of annual heat costs ($) 3,060,208 +Present value of annual heat provided (MMBTU) 843,744 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.63 + PROJECT STATE INCOME TAXES -EBITDA ($) 0 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 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 280,222,657 276,420,855 272,406,153 268,166,627 263,689,688 258,962,040 253,969,644 248,697,674 243,130,474 237,251,510 231,043,324 224,487,480 217,564,509 210,253,851 202,533,796 194,381,419 185,772,508 176,681,498 167,081,391 156,943,679 146,238,255 134,933,327 122,995,323 110,388,791 97,076,293 83,018,295 68,173,049 52,496,469 35,942,001 18,460,483 -Total state tax depreciation ($) 0 164,296,585 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 164,296,585 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 +Total state tax depreciation ($) 0 151,474,218 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 151,474,218 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 130,090,139 -23,528,045 -12,778,590 -2,648,867 7,320,783 17,112,462 26,132,200 32,800,638 34,223,120 26,287,919 4,385,119 7,892,523 83,164,019 99,158,095 113,367,337 127,357,183 141,421,343 155,381,917 168,316,275 178,105,485 345,496,115 501,529,132 477,117,375 532,054,762 589,869,600 611,623,774 632,754,048 654,170,970 676,044,585 4,805,461,991 +State taxable income ($) 0 166,472,111 32,891,992 45,618,726 56,770,333 67,302,470 77,176,447 85,181,017 88,120,442 80,164,303 53,034,732 -2,634,141 -7,704,588 131,768,987 151,353,489 166,827,687 181,362,865 195,538,429 208,990,555 219,893,585 224,092,400 366,127,431 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 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 -9,106,310 1,646,963 894,501 185,421 -512,455 -1,197,872 -1,829,254 -2,296,045 -2,395,618 -1,840,154 -306,958 -552,477 -5,821,481 -6,941,067 -7,935,714 -8,915,003 -9,899,494 -10,876,734 -11,782,139 -12,467,384 -24,184,728 -35,107,039 -33,398,216 -37,243,833 -41,290,872 -42,813,664 -44,292,783 -45,791,968 -47,323,121 -336,382,339 +State tax benefit (liability) ($) 0 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 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 -9,106,310 1,646,963 894,501 185,421 -512,455 -1,197,872 -1,829,254 -2,296,045 -2,395,618 -1,840,154 -306,958 -552,477 -5,821,481 -6,941,067 -7,935,714 -8,915,003 -9,899,494 -10,876,734 -11,782,139 -12,467,384 -24,184,728 -35,107,039 -33,398,216 -37,243,833 -41,290,872 -42,813,664 -44,292,783 -45,791,968 -47,323,121 -336,382,339 +State tax benefit (liability) ($) 0 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 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 280,222,657 276,420,855 272,406,153 268,166,627 263,689,688 258,962,040 253,969,644 248,697,674 243,130,474 237,251,510 231,043,324 224,487,480 217,564,509 210,253,851 202,533,796 194,381,419 185,772,508 176,681,498 167,081,391 156,943,679 146,238,255 134,933,327 122,995,323 110,388,791 97,076,293 83,018,295 68,173,049 52,496,469 35,942,001 18,460,483 -Total federal tax depreciation ($) 0 164,296,585 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 328,593,169 164,296,585 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 +Total federal tax depreciation ($) 0 151,474,218 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 151,474,218 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 120,983,830 -21,881,082 -11,884,089 -2,463,447 6,808,328 15,914,590 24,302,946 30,504,593 31,827,502 24,447,765 4,078,161 7,340,046 77,342,538 92,217,028 105,431,623 118,442,181 131,521,849 144,505,183 156,534,136 165,638,101 321,311,387 466,422,093 443,719,159 494,810,929 548,578,728 568,810,110 588,461,265 608,379,002 628,721,464 4,469,079,652 +Federal taxable income ($) 0 154,819,063 30,589,552 42,425,415 52,796,410 62,591,297 71,774,095 79,218,346 81,952,011 74,552,802 49,322,300 -2,449,751 -7,165,267 122,545,158 140,758,745 155,149,749 168,667,465 181,850,739 194,361,216 204,501,034 208,405,932 340,498,511 451,422,881 391,453,279 474,772,414 563,001,052 584,956,878 604,992,431 624,739,231 644,472,295 4,185,349,190 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 -25,406,604 4,595,027 2,495,659 517,324 -1,429,749 -3,342,064 -5,103,619 -6,405,965 -6,683,775 -5,134,031 -856,414 -1,541,410 -16,241,933 -19,365,576 -22,140,641 -24,872,858 -27,619,588 -30,346,088 -32,872,168 -34,784,001 -67,475,391 -97,948,640 -93,181,023 -103,910,295 -115,201,533 -119,450,123 -123,576,866 -127,759,590 -132,031,507 -938,506,727 +Federal tax benefit (liability) ($) 0 -32,512,003 -6,423,806 -8,909,337 -11,087,246 -13,144,172 -15,072,560 -16,635,853 -17,209,922 -15,656,088 -10,357,683 514,448 1,504,706 -25,734,483 -29,559,336 -32,581,447 -35,420,168 -38,188,655 -40,815,855 -42,945,217 -43,765,246 -71,504,687 -94,798,805 -82,205,189 -99,702,207 -118,230,221 -122,840,944 -127,048,410 -131,195,238 -135,339,182 -878,923,330 CASH INCENTIVES Federal IBI income ($) 0 @@ -409,30 +421,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 3,285,931,692 0 0 0 0 0 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 3,285,931,692 0 0 0 0 0 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 3,029,484,359 0 0 0 0 0 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 3,029,484,359 0 0 0 0 0 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 ($) 5,003,976,017 4,936,086,704 4,864,395,590 4,788,689,774 4,708,744,432 4,624,322,151 4,535,172,222 4,441,029,897 4,341,615,602 4,236,634,106 4,125,773,647 4,008,705,002 3,885,080,512 3,754,533,052 3,616,674,933 3,471,096,760 3,317,366,209 3,155,026,748 2,983,596,276 2,802,565,698 2,611,397,408 2,409,523,694 2,196,345,051 1,971,228,404 1,733,505,226 1,482,469,549 1,217,375,874 937,436,954 641,821,454 329,651,486 0 -Debt interest payment ($) 0 280,222,657 276,420,855 272,406,153 268,166,627 263,689,688 258,962,040 253,969,644 248,697,674 243,130,474 237,251,510 231,043,324 224,487,480 217,564,509 210,253,851 202,533,796 194,381,419 185,772,508 176,681,498 167,081,391 156,943,679 146,238,255 134,933,327 122,995,323 110,388,791 97,076,293 83,018,295 68,173,049 52,496,469 35,942,001 18,460,483 -Debt principal payment ($) 0 67,889,312 71,691,114 75,705,816 79,945,342 84,422,281 89,149,929 94,142,325 99,414,295 104,981,496 110,860,459 117,068,645 123,624,489 130,547,461 137,858,118 145,578,173 153,730,551 162,339,462 171,430,471 181,030,578 191,168,290 201,873,715 213,178,643 225,116,647 237,723,179 251,035,677 265,093,675 279,938,920 295,615,500 312,169,968 329,651,486 -Debt total payment ($) 0 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 +Debt balance ($) 4,613,445,592 4,550,854,634 4,484,758,583 4,414,961,154 4,341,255,068 4,263,421,441 4,181,229,132 4,094,434,052 4,002,778,449 3,905,990,132 3,803,781,669 3,695,849,532 3,581,873,195 3,461,514,184 3,334,415,067 3,200,198,401 3,058,465,601 2,908,795,764 2,750,744,416 2,583,842,193 2,407,593,446 2,221,474,768 2,024,933,445 1,817,385,807 1,598,215,502 1,366,771,660 1,122,366,962 864,275,602 591,731,125 303,924,158 0 +Debt interest payment ($) 0 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 +Debt principal payment ($) 0 62,590,957 66,096,051 69,797,430 73,706,086 77,833,627 82,192,310 86,795,079 91,655,603 96,788,317 102,208,463 107,932,137 113,976,337 120,359,011 127,099,116 134,216,667 141,732,800 149,669,837 158,051,348 166,902,223 176,248,748 186,118,677 196,541,323 207,547,638 219,170,305 231,443,842 244,404,697 258,091,361 272,544,477 287,806,967 303,924,158 +Debt total payment ($) 0 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 DSCR (DEBT FRACTION) -EBITDA ($) 0 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 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 574,609,381 581,485,980 588,220,732 594,110,929 599,603,640 604,667,672 608,695,013 610,091,481 605,946,763 592,132,598 564,021,612 560,973,172 629,321,697 638,005,115 644,494,302 650,331,771 655,787,020 660,656,584 663,990,835 663,642,334 656,030,955 636,462,459 600,112,698 642,443,553 686,945,892 694,642,068 700,927,097 706,667,440 711,986,586 4,823,922,474 -Debt total payment ($) 0 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 348,111,969 -DSCR (pre-tax) 0.0 1.65 1.67 1.69 1.71 1.72 1.74 1.75 1.75 1.74 1.70 1.62 1.61 1.81 1.83 1.85 1.87 1.88 1.90 1.91 1.91 1.88 1.83 1.72 1.85 1.97 2.0 2.01 2.03 2.05 13.86 +Cash available for debt service (CAFDS) ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +Debt total payment ($) 0 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 +DSCR (pre-tax) 0.0 1.80 1.84 1.87 1.89 1.91 1.93 1.94 1.93 1.89 1.79 1.60 1.56 1.98 2.02 2.05 2.07 2.09 2.10 2.11 2.09 2.03 1.90 1.66 1.91 2.17 2.20 2.22 2.24 2.26 14.08 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/example14_data-center.txt b/tests/examples/example14_data-center.txt index b782a52f4..c63932786 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -1,8 +1,9 @@ -# Example 14: 1 GW Geothermal-Powered Data Center +# FIXME WIP: CHP update - see https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/143 +# Example 14: 1 GW Geothermal-Powered Data Center (CHP) # This example models a 1 GWe Enhanced Geothermal System (EGS) to power a hyperscale data center. # Based on the techno-economic analysis by Project InnerSpace (Yusifov & Enriquez, 2025), the simulation incorporates direct # cooling via an absorption chiller, yielding an estimated $107 million in annual operating cost savings over the 30-year project lifespan. -# The absorption chiller is modeled as an Add-On providing capacity payment revenue equivalent to the estimated savings. +# The absorption chiller is modeled as cogenerated heat, with heat sales yielding revenue equivalent to the estimated savings. # # Reference: Yusifov, M., & Enriquez, N. (2025, July). From Core to Code: Powering the AI Revolution with Geothermal Energy. Project InnerSpace & Future Ventures. https://projectinnerspace.org/resources/Powering-the-AI-Revolution.pdf @@ -16,6 +17,11 @@ Electricity Escalation Rate Per Year, 0.00057, -- calibrated to reach 10 cents/k Ending Electricity Sale Price, 0.15, -- 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 +# FIXME WIP use only applicable heat sale parameter(s) +Starting Heat Sale Price, 1.68 +Ending Heat Sale Price, 100 +Heat Rate, .0168 + 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, .056 @@ -42,18 +48,9 @@ Field Gathering System Capital Cost Adjustment Factor, 0.3972, -- Gathering cost Construction Years, 5 Construction CAPEX Schedule, 0.0268, 0.0268, 0.0268, 0.4597, 0.4597, -- 3-year derisking phase followed by 2-year construction phase - -# *** ADD-ONS *** -# *************** -AddOn Nickname 1, Absorption Chiller -AddOn CAPEX 1, 562 -AddOn OPEX 1, 0 -AddOn Profit Gained 1, 107 - # *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** # ************************************************* -End-Use Option, 1, -- Electricity - +End-Use Option, 31, -- CHP: Cogeneration topping cycle A power plant is followed by a direct-use heat application in series. Heat at high temperatures from the geothermal fluid is first converted into electricity. Any remaining heat in the geothermal fluid after leaving the power plant is supplied to a low-temperature direct-use heat application. Power Plant Type, 2, -- Supercritical ORC Plant Lifetime, 30 From a06d8b6c19bc7b51ccc3625151e85fbf76e9fe9d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:34:26 -0700 Subject: [PATCH 059/127] add example14_data-center AC add-on back on to model CAPEX only --- tests/examples/example14_data-center.out | 171 ++++++++++++----------- tests/examples/example14_data-center.txt | 6 + 2 files changed, 93 insertions(+), 84 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 49c9c9e9f..66ea6570d 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,19 +5,19 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 12:08 - Calculation Time: 1.805 sec + Simulation Date: 2026-04-02 + Simulation Time: 10:33 + Calculation Time: 1.818 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 1016.98 MW Average Direct-Use Heat Production: 8.09 MW - Electricity breakeven price: 9.15 cents/kWh - Direct-Use heat breakeven price (LCOH): 3.63 USD/MMBTU - Total CAPEX: 7573.71 MUSD - Total CAPEX ($/kW): 7317 USD/kW + Electricity breakeven price: 9.45 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.74 USD/MMBTU + Total CAPEX: 8218.81 MUSD + Total CAPEX ($/kW): 7940 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -31,14 +31,14 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.38 % - Investment Tax Credit: 3029.48 MUSD + Investment Tax Credit: 3287.53 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 609.41 MUSD - After-tax IRR: 24.15 % - Project VIR=PI=PIR: 1.33 - Project MOIC: 3.43 - Project Payback Period: 5.91 yr + Project NPV: 519.65 MUSD + After-tax IRR: 22.49 % + Project VIR=PI=PIR: 1.26 + Project MOIC: 3.06 + Project Payback Period: 5.92 yr CHP: Percent cost allocation for electrical plant: 99.89 % ***ENGINEERING PARAMETERS*** @@ -111,10 +111,11 @@ Simulation Metadata Transmission pipeline cost: 2.00 MUSD Total surface equipment costs: 3202.46 MUSD One-time Flat License Fees Etc: 100.00 MUSD - Overnight Capital Cost: 6598.06 MUSD - Inflation costs during construction: 802.60 MUSD - Interest during construction: 173.05 MUSD - Total CAPEX: 7573.71 MUSD + Total Add-on CAPEX: 562.00 MUSD + Overnight Capital Cost: 7160.06 MUSD + Inflation costs during construction: 870.96 MUSD + Interest during construction: 187.79 MUSD + Total CAPEX: 8218.81 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** @@ -123,6 +124,7 @@ Simulation Metadata Power plant maintenance costs: 50.26 MUSD/yr Water costs: 44.89 MUSD/yr Redrilling costs: 186.24 MUSD/yr + Total Add-on OPEX: 0.00 MUSD/yr Total operating and maintenance costs: 295.96 MUSD/yr @@ -229,42 +231,43 @@ 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] (%) 2.68 2.68 2.68 46.0 46.0 -Overnight capital expenditure [construction] ($) -176,863,462 -176,863,462 -176,863,462 -3,033,736,329 -3,033,736,329 +Overnight capital expenditure [construction] ($) -191,928,075 -191,928,075 -191,928,075 -3,292,139,409 -3,292,139,409 plus: -Inflation cost [construction] ($) -4,775,313 -9,679,560 -14,716,222 -341,153,551 -432,275,577 +Inflation cost [construction] ($) -5,182,058 -10,504,032 -15,969,699 -370,211,820 -469,095,303 plus: Royalty supplemental payments [construction] ($) 0 0 0 0 0 equals: -Nominal capital expenditure [construction] ($) -181,638,776 -186,543,023 -191,579,684 -3,374,889,879 -3,466,011,906 +Nominal capital expenditure [construction] ($) -197,110,133 -202,432,107 -207,897,774 -3,662,351,229 -3,761,234,713 -Issuance of equity [construction] ($) 72,655,510 74,617,209 76,631,874 1,349,955,952 1,386,404,762 -Issuance of debt [construction] ($) 108,983,265 111,925,814 114,947,811 2,024,933,927 2,079,607,144 -Debt balance [construction] ($) 108,983,265 227,012,142 354,672,632 2,399,468,227 4,613,445,592 -Debt interest payment [construction] ($) 0 6,103,063 12,712,680 19,861,667 134,370,221 +Issuance of equity [construction] ($) 78,844,053 80,972,843 83,159,109 1,464,940,492 1,504,493,885 +Issuance of debt [construction] ($) 118,266,080 121,459,264 124,738,664 2,197,410,738 2,256,740,828 +Debt balance [construction] ($) 118,266,080 246,348,245 384,882,410 2,603,846,563 5,006,402,798 +Debt interest payment [construction] ($) 0 6,622,900 13,795,502 21,553,415 145,815,408 -Installed cost [construction] ($) -181,638,776 -192,646,086 -204,292,364 -3,394,751,547 -3,600,382,127 -After-tax net cash flow [construction] ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 +Installed cost [construction] ($) -197,110,133 -209,055,007 -221,693,275 -3,683,904,644 -3,907,050,120 +After-tax net cash flow [construction] ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 ENERGY Electricity to grid (kWh) 0.0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 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 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 -Heat provided (kWh) 0 0 0 0 0 64,801,517 69,273,187 70,636,641 71,441,852 71,984,641 72,253,249 71,880,903 69,906,161 64,582,271 53,430,157 33,619,704 28,818,391 67,355,519 69,832,292 70,943,875 71,647,194 72,113,431 72,233,105 71,469,952 68,613,281 61,650,341 47,927,215 24,629,599 45,842,066 68,516,844 70,273,620 71,209,283 71,828,127 72,207,123 72,147,954 - 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 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 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 +Heat provided (kWh) 0 0 0 0 0 64,801,517 69,273,187 70,636,641 71,441,852 71,984,641 72,253,249 71,880,903 69,906,161 64,582,271 53,430,157 33,619,704 28,818,391 67,355,519 69,832,292 70,943,875 71,647,194 72,113,431 72,233,105 71,469,952 68,613,281 61,650,341 47,927,215 24,629,599 45,842,066 68,516,844 70,273,620 71,209,283 71,828,127 72,207,123 72,147,954 + +Add-On Profit 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 Heat price ($/kWh) 0.0 0.0 0.0 0.0 0.0 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 Heat revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 Capacity payment revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 -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 3,786,855,449 -Total revenue ($) 0 872,258,775 886,647,780 895,673,135 902,916,087 909,320,682 914,835,976 918,237,778 916,316,677 903,227,825 870,678,108 809,285,562 798,170,914 931,261,814 944,106,212 952,462,860 959,481,904 965,720,432 970,791,046 972,843,201 967,695,492 948,386,375 905,763,028 830,273,270 908,241,070 990,837,037 1,001,484,596 1,009,341,538 1,016,121,540 1,022,077,399 4,813,354,719 +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 4,109,406,590 +Total revenue ($) 0 872,258,775 886,647,780 895,673,135 902,916,087 909,320,682 914,835,976 918,237,778 916,316,677 903,227,825 870,678,108 809,285,562 798,170,914 931,261,814 944,106,212 952,462,860 959,481,904 965,720,432 970,791,046 972,843,201 967,695,492 948,386,375 905,763,028 830,273,270 908,241,070 990,837,037 1,001,484,596 1,009,341,538 1,016,121,540 1,022,077,399 5,135,905,860 -Property tax net assessed value ($) 0 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 7,573,710,899 +Property tax net assessed value ($) 0 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 OPERATING EXPENSES O&M fixed expense ($) 0 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 @@ -276,28 +279,28 @@ Property tax expense ($) 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 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 OPERATING ACTIVITIES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 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 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 -Cash flow from operating activities ($) 0 317,946,329 335,840,428 348,567,162 359,718,769 370,250,906 380,124,882 388,129,453 391,068,878 383,112,739 355,983,168 300,314,295 295,243,848 434,717,423 454,301,925 469,776,123 484,311,301 498,486,865 511,938,991 522,842,021 527,040,836 517,601,649 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 +Debt interest payment ($) 0 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 +Cash flow from operating activities ($) 0 295,940,726 314,133,376 327,175,380 338,659,913 349,543,619 359,788,854 368,185,472 371,538,899 364,019,948 337,352,045 282,170,695 277,615,072 417,632,300 437,790,901 453,871,348 469,046,724 483,898,337 498,064,370 509,721,287 514,716,207 506,117,706 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 INVESTING ACTIVITIES -Total installed cost ($) -7,573,710,899 +Total installed cost ($) -8,218,813,180 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -7,573,710,899 +Purchase of property ($) -8,218,813,180 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 @@ -309,93 +312,93 @@ 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 ($) -7,573,710,899 0 0 0 0 0 0 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 ($) -8,218,813,180 0 0 0 0 0 0 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 ($) 2,960,265,307 -Size of debt ($) 4,613,445,592 +Issuance of equity ($) 3,212,410,382 +Size of debt ($) 5,006,402,798 minus: -Debt principal payment ($) 0 62,590,957 66,096,051 69,797,430 73,706,086 77,833,627 82,192,310 86,795,079 91,655,603 96,788,317 102,208,463 107,932,137 113,976,337 120,359,011 127,099,116 134,216,667 141,732,800 149,669,837 158,051,348 166,902,223 176,248,748 186,118,677 196,541,323 207,547,638 219,170,305 231,443,842 244,404,697 258,091,361 272,544,477 287,806,967 303,924,158 +Debt principal payment ($) 0 67,922,237 71,725,882 75,742,531 79,984,113 84,463,223 89,193,164 94,187,981 99,462,508 105,032,409 110,914,223 117,125,420 123,684,444 130,610,772 137,924,976 145,648,774 153,805,106 162,418,192 171,513,610 181,118,372 191,261,001 201,971,617 213,282,028 225,225,821 237,838,467 251,157,422 265,222,237 280,074,683 295,758,865 312,321,361 329,811,357 equals: -Cash flow from financing activities ($) 7,573,710,899 -62,590,957 -66,096,051 -69,797,430 -73,706,086 -77,833,627 -82,192,310 -86,795,079 -91,655,603 -96,788,317 -102,208,463 -107,932,137 -113,976,337 -120,359,011 -127,099,116 -134,216,667 -141,732,800 -149,669,837 -158,051,348 -166,902,223 -176,248,748 -186,118,677 -196,541,323 -207,547,638 -219,170,305 -231,443,842 -244,404,697 -258,091,361 -272,544,477 -287,806,967 -303,924,158 +Cash flow from financing activities ($) 8,218,813,180 -67,922,237 -71,725,882 -75,742,531 -79,984,113 -84,463,223 -89,193,164 -94,187,981 -99,462,508 -105,032,409 -110,914,223 -117,125,420 -123,684,444 -130,610,772 -137,924,976 -145,648,774 -153,805,106 -162,418,192 -171,513,610 -181,118,372 -191,261,001 -201,971,617 -213,282,028 -225,225,821 -237,838,467 -251,157,422 -265,222,237 -280,074,683 -295,758,865 -312,321,361 -329,811,357 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 317,946,329 335,840,428 348,567,162 359,718,769 370,250,906 380,124,882 388,129,453 391,068,878 383,112,739 355,983,168 300,314,295 295,243,848 434,717,423 454,301,925 469,776,123 484,311,301 498,486,865 511,938,991 522,842,021 527,040,836 517,601,649 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 -Cash flow from investing activities ($) -7,573,710,899 0 0 0 0 0 0 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 ($) 7,573,710,899 -62,590,957 -66,096,051 -69,797,430 -73,706,086 -77,833,627 -82,192,310 -86,795,079 -91,655,603 -96,788,317 -102,208,463 -107,932,137 -113,976,337 -120,359,011 -127,099,116 -134,216,667 -141,732,800 -149,669,837 -158,051,348 -166,902,223 -176,248,748 -186,118,677 -196,541,323 -207,547,638 -219,170,305 -231,443,842 -244,404,697 -258,091,361 -272,544,477 -287,806,967 -303,924,158 -Total pre-tax cash flow ($) 0 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 +Cash flow from operating activities ($) 0 295,940,726 314,133,376 327,175,380 338,659,913 349,543,619 359,788,854 368,185,472 371,538,899 364,019,948 337,352,045 282,170,695 277,615,072 417,632,300 437,790,901 453,871,348 469,046,724 483,898,337 498,064,370 509,721,287 514,716,207 506,117,706 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 +Cash flow from investing activities ($) -8,218,813,180 0 0 0 0 0 0 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 ($) 8,218,813,180 -67,922,237 -71,725,882 -75,742,531 -79,984,113 -84,463,223 -89,193,164 -94,187,981 -99,462,508 -105,032,409 -110,914,223 -117,125,420 -123,684,444 -130,610,772 -137,924,976 -145,648,774 -153,805,106 -162,418,192 -171,513,610 -181,118,372 -191,261,001 -201,971,617 -213,282,028 -225,225,821 -237,838,467 -251,157,422 -265,222,237 -280,074,683 -295,758,865 -312,321,361 -329,811,357 +Total pre-tax cash flow ($) 0 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 Pre-tax Returns: -Issuance of equity ($) 2,960,265,307 -Total pre-tax cash flow ($) 0 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 -Total pre-tax returns ($) -2,960,265,307 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 +Issuance of equity ($) 3,212,410,382 +Total pre-tax cash flow ($) 0 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 +Total pre-tax returns ($) -3,212,410,382 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 After-tax Returns: -Total pre-tax returns ($) -2,960,265,307 255,355,372 269,744,377 278,769,732 286,012,683 292,417,279 297,932,573 301,334,374 299,413,274 286,324,422 253,774,704 192,382,158 181,267,511 314,358,411 327,202,809 335,559,456 342,578,501 348,817,028 353,887,643 355,939,798 350,792,089 331,482,972 288,859,624 213,369,867 291,337,667 373,933,633 384,581,193 392,438,135 399,218,137 405,173,995 4,196,451,316 -Federal ITC total income ($) 0 3,029,484,359 0 0 0 0 0 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 ($) -3,212,410,382 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 +Federal ITC total income ($) 0 3,287,525,272 0 0 0 0 0 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 -32,512,003 -6,423,806 -8,909,337 -11,087,246 -13,144,172 -15,072,560 -16,635,853 -17,209,922 -15,656,088 -10,357,683 514,448 1,504,706 -25,734,483 -29,559,336 -32,581,447 -35,420,168 -38,188,655 -40,815,855 -42,945,217 -43,765,246 -71,504,687 -94,798,805 -82,205,189 -99,702,207 -118,230,221 -122,840,944 -127,048,410 -131,195,238 -135,339,182 -878,923,330 +Federal tax benefit (liability) ($) 0 -25,694,539 2,855,120 308,017 -1,934,913 -4,060,500 -6,061,395 -7,701,254 -8,356,178 -6,887,727 -1,679,486 9,097,432 9,987,145 -17,358,220 -21,295,194 -24,435,706 -27,399,457 -30,299,977 -33,066,603 -35,343,199 -36,318,707 -66,742,104 -92,729,371 -80,318,845 -98,009,206 -116,741,390 -121,567,717 -126,002,860 -130,390,115 -134,787,950 -941,634,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 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 -Total after-tax returns ($) -2,960,265,307 3,240,674,680 261,018,131 266,667,084 270,951,514 274,561,934 277,457,662 278,735,850 276,034,921 265,056,832 239,704,590 193,080,996 183,311,538 279,400,099 287,048,728 291,300,071 294,462,933 296,940,683 298,442,449 297,602,030 291,340,375 234,349,364 160,082,753 101,700,453 155,899,902 213,326,989 217,711,236 219,852,660 220,999,515 221,326,146 3,002,501,703 +State tax benefit (liability) ($) 0 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 +Total after-tax returns ($) -3,212,410,382 3,480,639,709 246,285,955 251,851,266 256,047,371 259,564,519 262,361,752 263,535,931 260,725,167 249,631,092 224,156,369 177,403,435 167,497,395 263,441,724 270,938,045 275,028,550 278,021,568 280,319,962 281,632,328 280,591,903 274,119,041 213,482,084 135,557,036 76,926,023 130,862,830 188,012,569 192,103,935 193,936,077 194,756,330 194,738,069 3,212,527,744 -After-tax net cash flow ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 3,240,674,680 261,018,131 266,667,084 270,951,514 274,561,934 277,457,662 278,735,850 276,034,921 265,056,832 239,704,590 193,080,996 183,311,538 279,400,099 287,048,728 291,300,071 294,462,933 296,940,683 298,442,449 297,602,030 291,340,375 234,349,364 160,082,753 101,700,453 155,899,902 213,326,989 217,711,236 219,852,660 220,999,515 221,326,146 3,002,501,703 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 5.46 9.85 13.38 16.08 18.10 19.61 20.73 21.56 22.17 22.58 22.85 23.04 23.27 23.46 23.61 23.72 23.82 23.89 23.95 24.00 24.03 24.04 24.05 24.06 24.07 24.08 24.09 24.09 24.10 24.15 -After-tax cumulative NPV ($) -72,655,510 -137,526,501 -195,447,029 -1,082,509,487 -1,874,529,538 -265,021,668 -152,317,525 -52,213,821 36,212,967 114,114,164 182,554,488 242,329,504 293,793,373 336,755,813 370,534,116 394,188,549 413,712,798 439,584,359 462,692,405 483,079,706 500,996,542 516,704,217 530,429,279 542,328,025 552,454,947 559,536,885 563,742,644 566,065,565 569,161,335 572,844,154 576,111,738 578,980,466 581,487,501 583,670,298 609,414,261 +After-tax net cash flow ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 3,480,639,709 246,285,955 251,851,266 256,047,371 259,564,519 262,361,752 263,535,931 260,725,167 249,631,092 224,156,369 177,403,435 167,497,395 263,441,724 270,938,045 275,028,550 278,021,568 280,319,962 281,632,328 280,591,903 274,119,041 213,482,084 135,557,036 76,926,023 130,862,830 188,012,569 192,103,935 193,936,077 194,756,330 194,738,069 3,212,527,744 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 4.83 8.72 11.93 14.45 16.37 17.83 18.93 19.76 20.37 20.79 21.06 21.26 21.50 21.70 21.87 22.00 22.10 22.18 22.25 22.30 22.34 22.35 22.36 22.37 22.38 22.39 22.40 22.41 22.42 22.49 +After-tax cumulative NPV ($) -78,844,053 -149,240,529 -212,094,526 -1,174,713,869 -2,034,195,426 -305,506,941 -199,163,955 -104,621,936 -21,059,212 52,586,783 117,303,408 173,818,795 222,428,318 262,890,436 294,477,740 316,211,508 334,051,415 358,445,281 380,256,383 399,504,884 416,421,331 431,249,798 444,201,780 455,420,425 464,948,738 471,400,076 474,961,486 476,718,538 479,317,137 482,562,934 485,446,184 487,976,741 490,186,071 492,106,647 519,651,410 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -72,655,510 -74,617,209 -76,631,874 -1,349,955,952 -1,386,404,762 2,368,415,905 -625,629,649 -629,006,051 -631,964,573 -634,758,748 -637,378,315 -639,501,927 -640,281,756 -638,170,993 -630,973,518 -616,204,566 -614,859,376 -651,861,715 -657,057,484 -661,162,789 -665,018,971 -668,779,748 -672,348,597 -675,241,171 -676,355,117 -714,037,011 -745,680,275 -728,572,817 -752,341,168 -777,510,048 -783,773,360 -789,488,878 -795,122,025 -800,751,253 1,976,002,433 +Annual costs ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 2,608,380,934 -640,361,825 -643,821,869 -646,868,716 -649,756,163 -652,474,224 -654,701,847 -655,591,511 -653,596,733 -646,521,738 -631,882,126 -630,673,519 -667,820,090 -673,168,167 -677,434,309 -681,460,337 -685,400,470 -689,158,718 -692,251,298 -693,576,451 -734,904,291 -770,205,992 -753,347,247 -777,378,240 -802,824,468 -809,380,661 -815,405,462 -821,365,210 -827,339,329 2,186,028,474 PPA revenue ($) 0 0 0 0 0 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 Electricity to grid (kWh) 0 0 0 0 0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 -Present value of annual costs ($) 2,762,920,855 +Present value of annual costs ($) 2,852,683,706 -Present value of annual energy costs ($) 2,759,860,647 +Present value of annual energy costs ($) 2,849,524,076 Present value of annual energy nominal (kWh) 30,166,877,246 -LCOE Levelized cost of energy nominal (cents/kWh) 9.15 +LCOE Levelized cost of energy nominal (cents/kWh) 9.45 Present value of PPA revenue ($) 2,956,909,593 Present value of annual energy nominal (kWh) 30,166,877,246 LPPA Levelized PPA price nominal (cents/kWh) 9.80 -Present value of annual heat costs ($) 3,060,208 +Present value of annual heat costs ($) 3,159,629 Present value of annual heat provided (MMBTU) 843,744 -LCOH Levelized cost of heating nominal ($/MMBTU) 3.63 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.74 PROJECT STATE INCOME TAXES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 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 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 -Total state tax depreciation ($) 0 151,474,218 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 151,474,218 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 +Total state tax depreciation ($) 0 164,376,264 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 164,376,264 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 166,472,111 32,891,992 45,618,726 56,770,333 67,302,470 77,176,447 85,181,017 88,120,442 80,164,303 53,034,732 -2,634,141 -7,704,588 131,768,987 151,353,489 166,827,687 181,362,865 195,538,429 208,990,555 219,893,585 224,092,400 366,127,431 485,400,948 420,917,504 510,507,972 605,377,476 628,985,890 650,529,495 671,762,614 692,980,963 4,500,375,473 +State taxable income ($) 0 131,564,462 -14,619,151 -1,577,147 9,907,386 20,791,092 31,036,327 39,432,945 42,786,372 35,267,420 8,599,518 -46,581,832 -51,137,456 88,879,773 109,038,374 125,118,820 140,294,197 155,145,810 169,311,843 180,968,760 185,963,680 341,741,443 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 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 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 +State tax benefit (liability) ($) 0 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 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 -11,653,048 -2,302,439 -3,193,311 -3,973,923 -4,711,173 -5,402,351 -5,962,671 -6,168,431 -5,611,501 -3,712,431 184,390 539,321 -9,223,829 -10,594,744 -11,677,938 -12,695,401 -13,687,690 -14,629,339 -15,392,551 -15,686,468 -25,628,920 -33,978,066 -29,464,225 -35,735,558 -42,376,423 -44,029,012 -45,537,065 -47,023,383 -48,508,667 -315,026,283 +State tax benefit (liability) ($) 0 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 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 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 -Total federal tax depreciation ($) 0 151,474,218 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 302,948,436 151,474,218 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 +Total federal tax depreciation ($) 0 164,376,264 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 164,376,264 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 154,819,063 30,589,552 42,425,415 52,796,410 62,591,297 71,774,095 79,218,346 81,952,011 74,552,802 49,322,300 -2,449,751 -7,165,267 122,545,158 140,758,745 155,149,749 168,667,465 181,850,739 194,361,216 204,501,034 208,405,932 340,498,511 451,422,881 391,453,279 474,772,414 563,001,052 584,956,878 604,992,431 624,739,231 644,472,295 4,185,349,190 +Federal taxable income ($) 0 122,354,950 -13,595,811 -1,466,747 9,213,869 19,335,716 28,863,784 36,672,639 39,791,326 32,798,701 7,997,551 -43,321,104 -47,557,834 82,658,189 101,405,688 116,360,503 130,473,603 144,285,603 157,460,014 168,300,947 172,946,222 317,819,542 441,568,435 382,470,689 466,710,504 555,911,380 578,893,889 600,013,619 620,905,310 641,847,380 4,483,973,546 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 -32,512,003 -6,423,806 -8,909,337 -11,087,246 -13,144,172 -15,072,560 -16,635,853 -17,209,922 -15,656,088 -10,357,683 514,448 1,504,706 -25,734,483 -29,559,336 -32,581,447 -35,420,168 -38,188,655 -40,815,855 -42,945,217 -43,765,246 -71,504,687 -94,798,805 -82,205,189 -99,702,207 -118,230,221 -122,840,944 -127,048,410 -131,195,238 -135,339,182 -878,923,330 +Federal tax benefit (liability) ($) 0 -25,694,539 2,855,120 308,017 -1,934,913 -4,060,500 -6,061,395 -7,701,254 -8,356,178 -6,887,727 -1,679,486 9,097,432 9,987,145 -17,358,220 -21,295,194 -24,435,706 -27,399,457 -30,299,977 -33,066,603 -35,343,199 -36,318,707 -66,742,104 -92,729,371 -80,318,845 -98,009,206 -116,741,390 -121,567,717 -126,002,860 -130,390,115 -134,787,950 -941,634,445 CASH INCENTIVES Federal IBI income ($) 0 @@ -421,30 +424,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 3,029,484,359 0 0 0 0 0 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 3,029,484,359 0 0 0 0 0 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 3,287,525,272 0 0 0 0 0 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 3,287,525,272 0 0 0 0 0 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 ($) 4,613,445,592 4,550,854,634 4,484,758,583 4,414,961,154 4,341,255,068 4,263,421,441 4,181,229,132 4,094,434,052 4,002,778,449 3,905,990,132 3,803,781,669 3,695,849,532 3,581,873,195 3,461,514,184 3,334,415,067 3,200,198,401 3,058,465,601 2,908,795,764 2,750,744,416 2,583,842,193 2,407,593,446 2,221,474,768 2,024,933,445 1,817,385,807 1,598,215,502 1,366,771,660 1,122,366,962 864,275,602 591,731,125 303,924,158 0 -Debt interest payment ($) 0 258,352,953 254,847,860 251,146,481 247,237,825 243,110,284 238,751,601 234,148,831 229,288,307 224,155,593 218,735,447 213,011,773 206,967,574 200,584,899 193,844,794 186,727,244 179,211,110 171,274,074 162,892,563 154,041,687 144,695,163 134,825,233 124,402,587 113,396,273 101,773,605 89,500,068 76,539,213 62,852,550 48,399,434 33,136,943 17,019,753 -Debt principal payment ($) 0 62,590,957 66,096,051 69,797,430 73,706,086 77,833,627 82,192,310 86,795,079 91,655,603 96,788,317 102,208,463 107,932,137 113,976,337 120,359,011 127,099,116 134,216,667 141,732,800 149,669,837 158,051,348 166,902,223 176,248,748 186,118,677 196,541,323 207,547,638 219,170,305 231,443,842 244,404,697 258,091,361 272,544,477 287,806,967 303,924,158 -Debt total payment ($) 0 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 +Debt balance ($) 5,006,402,798 4,938,480,561 4,866,754,679 4,791,012,148 4,711,028,035 4,626,564,811 4,537,371,647 4,443,183,666 4,343,721,158 4,238,688,749 4,127,774,526 4,010,649,106 3,886,964,662 3,756,353,890 3,618,428,914 3,472,780,140 3,318,975,035 3,156,556,843 2,985,043,233 2,803,924,860 2,612,663,859 2,410,692,242 2,197,410,214 1,972,184,392 1,734,345,925 1,483,188,503 1,217,966,266 937,891,583 642,132,719 329,811,357 0 +Debt interest payment ($) 0 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 +Debt principal payment ($) 0 67,922,237 71,725,882 75,742,531 79,984,113 84,463,223 89,193,164 94,187,981 99,462,508 105,032,409 110,914,223 117,125,420 123,684,444 130,610,772 137,924,976 145,648,774 153,805,106 162,418,192 171,513,610 181,118,372 191,261,001 201,971,617 213,282,028 225,225,821 237,838,467 251,157,422 265,222,237 280,074,683 295,758,865 312,321,361 329,811,357 +Debt total payment ($) 0 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 DSCR (DEBT FRACTION) -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 +EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 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 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,517,395,226 -Debt total payment ($) 0 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 320,943,910 -DSCR (pre-tax) 0.0 1.80 1.84 1.87 1.89 1.91 1.93 1.94 1.93 1.89 1.79 1.60 1.56 1.98 2.02 2.05 2.07 2.09 2.10 2.11 2.09 2.03 1.90 1.66 1.91 2.17 2.20 2.22 2.24 2.26 14.08 +Cash available for debt service (CAFDS) ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +Debt total payment ($) 0 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 +DSCR (pre-tax) 0.0 1.65 1.70 1.72 1.74 1.76 1.78 1.79 1.78 1.74 1.65 1.47 1.44 1.82 1.86 1.88 1.91 1.92 1.94 1.94 1.93 1.87 1.75 1.53 1.76 2.0 2.03 2.05 2.07 2.08 13.90 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/example14_data-center.txt b/tests/examples/example14_data-center.txt index c63932786..734171f41 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -51,7 +51,13 @@ Construction CAPEX Schedule, 0.0268, 0.0268, 0.0268, 0.4597, 0.4597, -- 3-year d # *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** # ************************************************* End-Use Option, 31, -- CHP: Cogeneration topping cycle A power plant is followed by a direct-use heat application in series. Heat at high temperatures from the geothermal fluid is first converted into electricity. Any remaining heat in the geothermal fluid after leaving the power plant is supplied to a low-temperature direct-use heat application. + Power Plant Type, 2, -- Supercritical ORC +AddOn Nickname 1, Absorption Chiller +AddOn CAPEX 1, 562 +AddOn Profit Gained 1, 0, -- note that revenue is modeled as heat sales, not add-on profit. +AddOn OPEX 1, 0 + Plant Lifetime, 30 Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) From 154d534d69ff6b8844461cc27e6b78eb2c44725a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:47:52 -0700 Subject: [PATCH 060/127] _insert_calculated_levelized_metrics_line_items code cleanup --- src/geophires_x/EconomicsSamCalculations.py | 165 ++++++-------------- 1 file changed, 49 insertions(+), 116 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 58904e87c..17b8b09b6 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -246,7 +246,6 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: return ret - # noinspection DuplicatedCode def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: ret = cf_ret.copy() @@ -286,9 +285,21 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) + def _calculate_pv_year_0(cash_flow_array: list) -> int: + """Calculate the absolute present value at Year 0 for a cash flow array using npf.npv.""" + return abs( + round( + npf.npv( + self.nominal_discount_rate.quantity().to('dimensionless').magnitude, + cash_flow_array, + ) + ) + ) + after_tax_lcoe_and_ppa_price_header_row_title = 'AFTER-TAX LCOE AND PPA PRICE' - # Backfill annual costs + # --- Backfill annual costs --- + # Pre-revenue years use after-tax net cash flow; operational years use SAM's annual costs. annual_costs_usd_row_name = 'Annual costs ($)' annual_costs = cf_ret[_get_row_index(annual_costs_usd_row_name)].copy() after_tax_net_cash_flow_usd = cf_ret[_get_row_index('After-tax net cash flow ($)')] @@ -324,42 +335,19 @@ def _insert_blank_line_before(before_row_name: str) -> None: ) ret[electricity_to_grid_kwh_row_index][1:] = electricity_to_grid_backfilled - pv_of_annual_costs_backfilled_row_name = 'Present value of annual costs ($)' - - # Backfill PV of annual costs - annual_costs_backfilled_pv_processed = annual_costs_backfilled.copy() - pv_of_annual_costs_backfilled = [] - for year in range(self._pre_revenue_years_count): - pv_at_year = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - annual_costs_backfilled_pv_processed, - ) - ) - ) - - pv_of_annual_costs_backfilled.append(pv_at_year) - - cost_at_year = annual_costs_backfilled_pv_processed.pop(0) - annual_costs_backfilled_pv_processed[0] = annual_costs_backfilled_pv_processed[0] + cost_at_year - - pv_of_annual_costs_backfilled_row = [ - *[pv_of_annual_costs_backfilled_row_name], - *pv_of_annual_costs_backfilled, - ] + # --- PV of annual costs at Year 0 --- + pv_costs_year_0 = _calculate_pv_year_0(annual_costs_backfilled) pv_of_annual_costs_row_name = 'Present value of annual costs ($)' pv_of_annual_costs_row_index = _get_row_index(pv_of_annual_costs_row_name) ret[pv_of_annual_costs_row_index][1:] = [ - pv_of_annual_costs_backfilled[0], + pv_costs_year_0, *([''] * (self._pre_revenue_years_count - 1)), ] + # --- PV of annual energy costs (electrical portion) --- pv_of_annual_energy_costs_row_name = 'Present value of annual energy costs ($)' - pv_of_annual_energy_costs_at_year_0_usd = int( - round(pv_of_annual_costs_backfilled[0] * self.electricity_plant_frac_of_capex) - ) + pv_of_annual_energy_costs_at_year_0_usd = int(round(pv_costs_year_0 * self.electricity_plant_frac_of_capex)) _insert_row_before( 'Present value of annual energy nominal (kWh)', pv_of_annual_energy_costs_row_name, @@ -369,66 +357,38 @@ def _insert_blank_line_before(before_row_name: str) -> None: ) _insert_blank_line_before(pv_of_annual_energy_costs_row_name) - # Backfill PV of electricity to grid - electricity_to_grid_backfilled_pv_processed = electricity_to_grid_backfilled.copy() - pv_of_electricity_to_grid_backfilled_kwh = [] - for year in range(self._pre_revenue_years_count): - pv_at_year = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - electricity_to_grid_backfilled_pv_processed, - ) - ) - ) - - pv_of_electricity_to_grid_backfilled_kwh.append(pv_at_year) - - electricity_to_grid_at_year = electricity_to_grid_backfilled_pv_processed.pop(0) - electricity_to_grid_backfilled_pv_processed[0] = ( - electricity_to_grid_backfilled_pv_processed[0] + electricity_to_grid_at_year - ) + # --- PV of electricity to grid at Year 0 --- + pv_electricity_to_grid_year_0_kwh = _calculate_pv_year_0(electricity_to_grid_backfilled) pv_of_annual_energy_row_name = 'Present value of annual energy nominal (kWh)' for pv_of_annual_energy_row_index in _get_row_indexes(pv_of_annual_energy_row_name): ret[pv_of_annual_energy_row_index][1:] = [ - pv_of_electricity_to_grid_backfilled_kwh[0], + pv_electricity_to_grid_year_0_kwh, *([''] * (self._pre_revenue_years_count - 1)), ] + # --- LCOE nominal --- def backfill_lcoe_nominal() -> None: - pv_of_electricity_to_grid_backfilled_row_kwh = pv_of_electricity_to_grid_backfilled_kwh - pv_of_annual_energy_costs_usd = [ - it * self.electricity_plant_frac_of_capex - for it in pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ] - ] + pv_energy_costs_year_0_usd = pv_costs_year_0 * self.electricity_plant_frac_of_capex - lcoe_nominal_backfilled = [] - for _year in range(len(pv_of_annual_energy_costs_usd)): - entry: float | str = 'NaN' - if pv_of_electricity_to_grid_backfilled_row_kwh[_year] != 0: - entry = ( - pv_of_annual_energy_costs_usd[_year] * 100 / pv_of_electricity_to_grid_backfilled_row_kwh[_year] - ) - - lcoe_nominal_backfilled.append(entry) + lcoe_nominal_entry: float | str = 'NaN' + if pv_electricity_to_grid_year_0_kwh != 0: + lcoe_nominal_entry = pv_energy_costs_year_0_usd * 100 / pv_electricity_to_grid_year_0_kwh lcoe_nominal_row_name = 'LCOE Levelized cost of energy nominal (cents/kWh)' lcoe_nominal_row_index = _get_row_index(lcoe_nominal_row_name) - lcoe_nominal_backfilled_entry = lcoe_nominal_backfilled[0] - if isinstance(lcoe_nominal_backfilled_entry, float): - lcoe_nominal_backfilled_entry = round(lcoe_nominal_backfilled_entry, 2) + if isinstance(lcoe_nominal_entry, float): + lcoe_nominal_entry = round(lcoe_nominal_entry, 2) ret[lcoe_nominal_row_index][1:] = [ - lcoe_nominal_backfilled_entry, + lcoe_nominal_entry, *([None] * (self._pre_revenue_years_count - 1)), ] backfill_lcoe_nominal() + # --- LPPA metrics --- def backfill_lppa_metrics() -> None: pv_of_ppa_revenue_row_index = _get_row_index_after( 'Present value of PPA revenue ($)', after_tax_lcoe_and_ppa_price_header_row_title @@ -476,6 +436,7 @@ def backfill_lppa_metrics() -> None: backfill_lppa_metrics() + # --- Non-electricity levelized metrics (LCOH, LCOC) --- def insert_non_electricity_levelized_metrics( amount_provided_kwh_row_name: str, # = 'Heat provided (kWh)', amount_provided_unit: str, # = 'MMBTU', @@ -505,48 +466,21 @@ def insert_non_electricity_levelized_metrics( ret[amount_provided_kwh_row_index][1:] = amount_provided_backfilled - # fill PV of heat provided - amount_provided_backfilled_pv_processed = amount_provided_backfilled.copy() - pv_of_amount_provided_backfilled_kwh = [] - for year_ in range(self._pre_revenue_years_count): - pv_at_year_ = abs( - round( - npf.npv( - self.nominal_discount_rate.quantity().to('dimensionless').magnitude, - amount_provided_backfilled_pv_processed, - ) - ) - ) + # PV of amount provided (e.g. heat) at Year 0 + pv_amount_provided_year_0_kwh = _calculate_pv_year_0(amount_provided_backfilled) - pv_of_amount_provided_backfilled_kwh.append(pv_at_year_) + # Thermal portion of PV of annual costs at Year 0 + pv_non_elec_costs_year_0_usd = pv_costs_year_0 * (1.0 - self.electricity_plant_frac_of_capex) - amount_provided_at_year = amount_provided_backfilled_pv_processed.pop(0) - amount_provided_backfilled_pv_processed[0] = ( - amount_provided_backfilled_pv_processed[0] + amount_provided_at_year + # Levelized cost = thermal costs / amount provided (converted to target unit) + levelized_cost_nominal_entry: float | str = 'NaN' + if pv_amount_provided_year_0_kwh != 0: + levelized_cost_nominal_entry = ( + pv_non_elec_costs_year_0_usd + / quantity(pv_amount_provided_year_0_kwh, 'kWh').to(amount_provided_unit).magnitude ) - pv_of_amount_provided_backfilled_row_kwh = pv_of_amount_provided_backfilled_kwh - pv_of_annual_non_elec_type_costs_backfilled_row_values_usd = [ - it * (1.0 - self.electricity_plant_frac_of_capex) - for it in pv_of_annual_costs_backfilled_row[ - 1 if isinstance(pv_of_annual_costs_backfilled_row[0], str) else 0 : - ] - ] - - lcoh_nominal_backfilled = [] - for _year in range(len(pv_of_annual_non_elec_type_costs_backfilled_row_values_usd)): - entry: float | str = 'NaN' - if pv_of_amount_provided_backfilled_row_kwh[_year] != 0: - entry = ( - pv_of_annual_non_elec_type_costs_backfilled_row_values_usd[_year] - / quantity(pv_of_amount_provided_backfilled_row_kwh[_year], 'kWh') - .to(amount_provided_unit) - .magnitude - ) - - lcoh_nominal_backfilled.append(entry) - - # Insert new row if LCOE row does not exist (yet) + # Insert new row if levelized cost row does not exist (yet) levelized_cost_nominal_row_index = _get_row_index( levelized_cost_nominal_row_name, raise_exception_if_not_present=False ) @@ -556,16 +490,15 @@ def insert_non_electricity_levelized_metrics( _insert_blank_line_before('PROJECT STATE INCOME TAXES') levelized_cost_nominal_row_index = _get_row_index(levelized_cost_nominal_row_name) - levelized_cost_nominal_backfilled_entry = lcoh_nominal_backfilled[0] - if isinstance(levelized_cost_nominal_backfilled_entry, float): - levelized_cost_nominal_backfilled_entry = round(levelized_cost_nominal_backfilled_entry, 2) + if isinstance(levelized_cost_nominal_entry, float): + levelized_cost_nominal_entry = round(levelized_cost_nominal_entry, 2) ret[levelized_cost_nominal_row_index][1:] = [ - levelized_cost_nominal_backfilled_entry, + levelized_cost_nominal_entry, *([None] * (self._pre_revenue_years_count - 1)), ] - # Insert new row if PV of heat costs row does not exist (yet) + # Insert new row if PV of non-electricity costs row does not exist (yet) pv_annual_non_elec_type_costs_row_index = _get_row_index( pv_annual_non_elec_type_costs_row_name, raise_exception_if_not_present=False ) @@ -574,7 +507,7 @@ def insert_non_electricity_levelized_metrics( _insert_row_before(levelized_cost_nominal_row_name, pv_annual_non_elec_type_costs_row_name, None) pv_annual_non_elec_type_costs_row_index = _get_row_index(pv_annual_non_elec_type_costs_row_name) - pv_annual_non_elec_type_costs_entry = pv_of_annual_non_elec_type_costs_backfilled_row_values_usd[0] + pv_annual_non_elec_type_costs_entry = pv_non_elec_costs_year_0_usd if isinstance(pv_annual_non_elec_type_costs_entry, float): pv_annual_non_elec_type_costs_entry = int(round(pv_annual_non_elec_type_costs_entry, 2)) @@ -587,7 +520,7 @@ def insert_non_electricity_levelized_metrics( pv_of_annual_amount_provided_row_name = ( f'{pv_of_annual_amount_provided_row_base_name} ({pv_of_annual_amount_provided_unit})' ) - # Insert new row if PV of heat provided row does not exist (yet) + # Insert new row if PV of amount provided row does not exist (yet) pv_of_annual_amount_provided_row_index = _get_row_index( pv_of_annual_amount_provided_row_name, raise_exception_if_not_present=False ) @@ -596,7 +529,7 @@ def insert_non_electricity_levelized_metrics( _insert_row_before(levelized_cost_nominal_row_name, pv_of_annual_amount_provided_row_name, None) pv_of_annual_amount_provided_row_index = _get_row_index(pv_of_annual_amount_provided_row_name) - pv_annual_amount_provided_entry = pv_of_amount_provided_backfilled_row_kwh[0] + pv_annual_amount_provided_entry = pv_amount_provided_year_0_kwh if any(isinstance(pv_annual_amount_provided_entry, it) for it in [int, float]): pv_annual_amount_provided_entry = int( round( From 823f9288b1d73f8a9bf17b337baf19ac5a568533 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:57:09 -0700 Subject: [PATCH 061/127] resolve dc example FIXME re correct heat price/rate parameter (remove Heat Rate) --- tests/examples/example14_data-center.out | 4 ++-- tests/examples/example14_data-center.txt | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 66ea6570d..a2c2d483d 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-02 - Simulation Time: 10:33 - Calculation Time: 1.818 sec + Simulation Time: 10:56 + Calculation Time: 1.801 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example14_data-center.txt b/tests/examples/example14_data-center.txt index 734171f41..ee1b4e255 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -17,10 +17,8 @@ Electricity Escalation Rate Per Year, 0.00057, -- calibrated to reach 10 cents/k Ending Electricity Sale Price, 0.15, -- 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 -# FIXME WIP use only applicable heat sale parameter(s) Starting Heat Sale Price, 1.68 -Ending Heat Sale Price, 100 -Heat Rate, .0168 +Ending Heat Sale Price, 100, -- Note that this parameter has no effect unless escalation is applied and ending heat sale price is reached. 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/ @@ -55,7 +53,7 @@ End-Use Option, 31, -- CHP: Cogeneration topping cycle A power plant is followed Power Plant Type, 2, -- Supercritical ORC AddOn Nickname 1, Absorption Chiller AddOn CAPEX 1, 562 -AddOn Profit Gained 1, 0, -- note that revenue is modeled as heat sales, not add-on profit. +AddOn Profit Gained 1, 0, -- Note that revenue is modeled as heat sales, not add-on profit. AddOn OPEX 1, 0 Plant Lifetime, 30 From 64e5dc76c5b3106a4278bad25a205ec4e5d78604 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 2 Apr 2026 12:02:57 -0700 Subject: [PATCH 062/127] Injection temperature documentation in tooltip text. (Redundant/overlapping definition removed from SUTRAWellbores for correct schema generation) --- src/geophires_x/SUTRAWellBores.py | 14 ---------- src/geophires_x/WellBores.py | 27 ++++++++++++++++++- .../geophires-request.json | 2 +- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/geophires_x/SUTRAWellBores.py b/src/geophires_x/SUTRAWellBores.py index 60fa81d9f..8dc0f0750 100644 --- a/src/geophires_x/SUTRAWellBores.py +++ b/src/geophires_x/SUTRAWellBores.py @@ -103,20 +103,6 @@ def __init__(self, model: Model): 'pressure drop in the reservoir between injection well and production well (see docs)', ) - self.Tinj = self.ParameterDict[self.Tinj.Name] = floatParameter( - "Injection Temperature", - value=70.0, - DefaultValue=70.0, - Min=0.0, - Max=200.0, - UnitType=Units.TEMPERATURE, - PreferredUnits=TemperatureUnit.CELSIUS, - CurrentUnits=TemperatureUnit.CELSIUS, - Required=True, - ErrMessage="assume default injection temperature (70 deg.C)", - ToolTipText="Constant geofluid injection temperature at injection wellhead.", - ) - # local variable initiation sclass = str(__class__).replace("", "") diff --git a/src/geophires_x/WellBores.py b/src/geophires_x/WellBores.py index 43f4016b7..ef77ba2f6 100644 --- a/src/geophires_x/WellBores.py +++ b/src/geophires_x/WellBores.py @@ -874,7 +874,32 @@ def __init__(self, model: Model): CurrentUnits=TemperatureUnit.CELSIUS, Required=True, ErrMessage="assume default injection temperature (70 deg.C)", - ToolTipText="Constant geofluid injection temperature at injection wellhead." + ToolTipText="Constant geofluid injection temperature at injection wellhead. " + "This is the temperature to which the geofluid is cooled before being reinjected into " + "the reservoir. It directly affects total heat extraction: " + "HeatExtracted = flow_rate * cp * (ProducedTemperature - InjectionTemperature). " + "For direct-use heat end-use options (including heat pump, absorption chiller, and district " + "heating), this parameter directly controls how much thermal energy is extracted from the " + "geofluid for the surface application. A lower injection temperature means more heat is " + "extracted. " + "For end-use options with a power plant (electricity, CHP), the model calculates a " + "reinjection temperature from power plant correlations representing the thermodynamic " + "optimum exhaust temperature. If the provided injection temperature exceeds the " + "model-calculated reinjection temperature, the provided value is ignored and the " + "model-calculated value is used instead (a warning will be logged). " + "For pure electricity end-use, the injection temperature does not affect electricity " + "production; it only affects heat extraction accounting and First Law Efficiency reporting. " + "Providing an injection temperature lower than the model-calculated reinjection temperature " + "represents additional thermal losses between the power plant and the injection wellhead " + "(e.g. surface piping losses). " + "For CHP topping cycle configurations, providing an injection temperature lower than the " + "model-calculated reinjection temperature is necessary to model direct-use heat extraction; " + "the difference between the reinjection temperature and the injection temperature determines " + "the heat available for the direct-use application. If not provided (or if the default " + "exceeds the model-calculated reinjection temperature), the direct-use heat component will " + "be approximately zero." + # TODO re-assess tooltip text when FGEM is incorporated + # https://github.com/NatLabRockies/GEOPHIRES-X/issues/395?title=FGEM/flexible+geothermal+systems ) self.Phydrostatic = self.ParameterDict[self.Phydrostatic.Name] = floatParameter( "Reservoir Hydrostatic Pressure", diff --git a/src/geophires_x_schema_generator/geophires-request.json b/src/geophires_x_schema_generator/geophires-request.json index 5b1de87ed..9733a4df2 100644 --- a/src/geophires_x_schema_generator/geophires-request.json +++ b/src/geophires_x_schema_generator/geophires-request.json @@ -773,7 +773,7 @@ "maximum": 393700 }, "Injection Temperature": { - "description": "Constant geofluid injection temperature at injection wellhead.", + "description": "Constant geofluid injection temperature at injection wellhead. This is the temperature to which the geofluid is cooled before being reinjected into the reservoir. It directly affects total heat extraction: HeatExtracted = flow_rate * cp * (ProducedTemperature - InjectionTemperature). For direct-use heat end-use options (including heat pump, absorption chiller, and district heating), this parameter directly controls how much thermal energy is extracted from the geofluid for the surface application. A lower injection temperature means more heat is extracted. For end-use options with a power plant (electricity, CHP), the model calculates a reinjection temperature from power plant correlations representing the thermodynamic optimum exhaust temperature. If the provided injection temperature exceeds the model-calculated reinjection temperature, the provided value is ignored and the model-calculated value is used instead (a warning will be logged). For pure electricity end-use, the injection temperature does not affect electricity production; it only affects heat extraction accounting and First Law Efficiency reporting. Providing an injection temperature lower than the model-calculated reinjection temperature represents additional thermal losses between the power plant and the injection wellhead (e.g. surface piping losses). For CHP topping cycle configurations, providing an injection temperature lower than the model-calculated reinjection temperature is necessary to model direct-use heat extraction; the difference between the reinjection temperature and the injection temperature determines the heat available for the direct-use application. If not provided (or if the default exceeds the model-calculated reinjection temperature), the direct-use heat component will be approximately zero.", "type": "number", "units": "degC", "category": "Well Bores", From 9b392802023eb2ca8e62006b5dc0348ea3bb60ee Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Thu, 2 Apr 2026 12:59:02 -0700 Subject: [PATCH 063/127] make SAM-EM capacity payment price vectors consistent with SAM PPA price convention --- src/geophires_x/EconomicsSam.py | 20 +++++++++---------- tests/examples/example14_data-center.out | 6 +++--- ..._SAM-single-owner-PPA-6_carbon-revenue.out | 8 ++++---- .../example_SAM-single-owner-PPA-7_chp.out | 8 ++++---- .../example_SAM-single-owner-PPA-8_heat.out | 8 ++++---- ...example_SAM-single-owner-PPA-9_cooling.out | 8 ++++---- 6 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 9ab517fae..c89d10625 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -701,14 +701,6 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: has_heat_revenue = _has_revenue_type(econ.HeatRevenue) has_cooling_revenue = _has_revenue_type(econ.CoolingRevenue) - # - # if not ( - # econ.DoAddOnCalculations.value or econ.DoCarbonCalculations.value or has_heat_revenue or has_cooling_revenue - # ): - # return ret - - # ret['cp_capacity_payment_type'] = 1 - # ret['cp_capacity_payment_amount'] = [0.0] * model.surfaceplant.plant_lifetime.value if econ.DoAddOnCalculations.value: add_on_profit_per_year_usd = np.sum( @@ -718,6 +710,12 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: add_on_source = CapacityPaymentRevenueSource(name='Add-On Profit', revenue_usd=add_on_profit_usd_series) ret.append(add_on_source) + def _price_vector(price_value: list[float]) -> list[float | str]: + return [ + *(['' if it == 0.0 else it for it in price_value[: _pre_revenue_years_count(model) - 1]]), + *price_value[_pre_revenue_years_count(model) - 1 :], + ] + if econ.DoCarbonCalculations.value: carbon_revenue_usd_series = ( econ.CarbonRevenue.quantity().to('USD/yr').magnitude[_pre_revenue_years_count(model) :] @@ -726,7 +724,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: name='Carbon credits', # TODO/WIP naming re: https://github.com/NatLabRockies/GEOPHIRES-X/issues/476 revenue_usd=[round(it) for it in carbon_revenue_usd_series], price_label=f'Carbon price ({econ.CarbonPrice.CurrentUnits.value})', - price=econ.CarbonPrice.value, + price=_price_vector(econ.CarbonPrice.value), amount_provided_label=f'Saved Carbon Production ({econ.CarbonThatWouldHaveBeenProducedAnnually.CurrentUnits.value})', amount_provided=econ.CarbonThatWouldHaveBeenProducedAnnually.value[_pre_revenue_years_count(model) :], ) @@ -744,7 +742,7 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl name='Heat', revenue_usd=_get_revenue_usd_series(econ.HeatRevenue), price_label=f'Heat price ({econ.HeatPrice.CurrentUnits.value})', - price=econ.HeatPrice.value, + price=_price_vector(econ.HeatPrice.value), amount_provided_label=f'Heat provided ({model.surfaceplant.HeatkWhProduced.CurrentUnits.value})', amount_provided=model.surfaceplant.HeatkWhProduced.value, ) @@ -756,7 +754,7 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl name='Cooling', revenue_usd=_get_revenue_usd_series(econ.CoolingRevenue), price_label=f'Cooling price ({econ.CoolingPrice.CurrentUnits.value})', - price=econ.CoolingPrice.value, + price=_price_vector(econ.CoolingPrice.value), amount_provided_label=f'Cooling provided ({model.surfaceplant.cooling_kWh_Produced.CurrentUnits.value})', amount_provided=model.surfaceplant.cooling_kWh_Produced.value, ) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index a2c2d483d..e0e58f1f4 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-02 - Simulation Time: 10:56 - Calculation Time: 1.801 sec + Simulation Time: 12:58 + Calculation Time: 1.828 sec ***SUMMARY OF RESULTS*** @@ -260,7 +260,7 @@ Curtailment payment revenue ($) Heat provided (kWh) 0 0 0 0 0 64,801,517 69,273,187 70,636,641 71,441,852 71,984,641 72,253,249 71,880,903 69,906,161 64,582,271 53,430,157 33,619,704 28,818,391 67,355,519 69,832,292 70,943,875 71,647,194 72,113,431 72,233,105 71,469,952 68,613,281 61,650,341 47,927,215 24,629,599 45,842,066 68,516,844 70,273,620 71,209,283 71,828,127 72,207,123 72,147,954 Add-On Profit 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 -Heat price ($/kWh) 0.0 0.0 0.0 0.0 0.0 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 +Heat price ($/kWh) 0.0 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 Heat revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 Capacity payment revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index c9229b2fe..3257cf3ba 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 1.827 sec + Simulation Date: 2026-04-02 + Simulation Time: 12:58 + Calculation Time: 1.790 sec ***SUMMARY OF RESULTS*** @@ -257,7 +257,7 @@ PPA price (cents/kWh) 0.0 PPA revenue ($) 0 38,389,748 38,636,878 38,944,490 39,221,859 39,486,095 39,740,495 39,950,714 39,874,004 39,849,411 40,462,045 40,789,649 41,075,720 41,345,654 41,605,663 41,837,200 41,872,073 41,619,942 42,280,092 42,636,056 42,930,166 43,203,407 43,465,696 43,709,288 43,823,019 43,468,387 44,064,027 44,470,422 44,776,546 45,055,568 45,320,544 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 -Carbon price ($/lb) 0.0 0.0 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 +Carbon price ($/lb) 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 Carbon credits revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 Capacity payment revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index bc2b66cde..2fa29c5eb 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 1.914 sec + Simulation Date: 2026-04-02 + Simulation Time: 12:58 + Calculation Time: 1.784 sec ***SUMMARY OF RESULTS*** @@ -263,7 +263,7 @@ PPA price (cents/kWh) 0.0 PPA revenue ($) 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 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 -Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 Capacity payment revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 05ce77b38..a5e4d403d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 1.977 sec + Simulation Date: 2026-04-02 + Simulation Time: 12:57 + Calculation Time: 1.864 sec ***SUMMARY OF RESULTS*** @@ -245,7 +245,7 @@ PPA price (cents/kWh) 0.0 PPA 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 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 -Heat price ($/kWh) 0.0 0.0 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 4f9ef9b19..0bcee53e7 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 10:16 - Calculation Time: 1.783 sec + Simulation Date: 2026-04-02 + Simulation Time: 12:57 + Calculation Time: 1.820 sec ***SUMMARY OF RESULTS*** @@ -255,7 +255,7 @@ PPA price (cents/kWh) 0.0 PPA 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 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 -Cooling price ($/kWh) 0.0 0.0 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 +Cooling price ($/kWh) 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 Cooling revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 Capacity payment revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 From 6890082ecda01a9ed0004d458719df9b750a0a8f Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 07:42:46 -0700 Subject: [PATCH 064/127] tune example14_data-center injection temperature to yield ~300 MWth direct-use heat production --- tests/examples/example14_data-center.out | 378 +++++++++++------------ tests/examples/example14_data-center.txt | 6 +- 2 files changed, 192 insertions(+), 192 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index e0e58f1f4..c3b993fcd 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,19 +5,19 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-02 - Simulation Time: 12:58 - Calculation Time: 1.828 sec + Simulation Date: 2026-04-03 + Simulation Time: 07:41 + Calculation Time: 1.823 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income - Average Net Electricity Production: 1016.98 MW - Average Direct-Use Heat Production: 8.09 MW - Electricity breakeven price: 9.45 cents/kWh - Direct-Use heat breakeven price (LCOH): 3.74 USD/MMBTU - Total CAPEX: 8218.81 MUSD - Total CAPEX ($/kW): 7940 USD/kW + Average Net Electricity Production: 1017.22 MW + Average Direct-Use Heat Production: 300.41 MW + Electricity breakeven price: 9.18 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.33 USD/MMBTU + Total CAPEX: 8345.66 MUSD + Total CAPEX ($/kW): 8063 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -31,15 +31,15 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.38 % - Investment Tax Credit: 3287.53 MUSD + Investment Tax Credit: 3338.27 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 519.65 MUSD - After-tax IRR: 22.49 % - Project VIR=PI=PIR: 1.26 - Project MOIC: 3.06 - Project Payback Period: 5.92 yr - CHP: Percent cost allocation for electrical plant: 99.89 % + Project NPV: 485.73 MUSD + After-tax IRR: 21.93 % + Project VIR=PI=PIR: 1.24 + Project MOIC: 2.98 + Project Payback Period: 5.93 yr + CHP: Percent cost allocation for electrical plant: 96.48 % ***ENGINEERING PARAMETERS*** @@ -48,9 +48,9 @@ Simulation Metadata Well depth: 3.7 kilometer Water loss rate: 15.0 % Pump efficiency: 80.0 % - Injection temperature: 56.6 degC + Injection temperature: 49.7 degC Production Wellbore heat transmission calculated with Ramey's model - Average production well temperature drop: 1.4 degC + Average production well temperature drop: 1.3 degC Flowrate per production well: 100.0 kg/sec Injection well casing ID: 8.500 in Production well casing ID: 8.500 in @@ -93,11 +93,11 @@ Simulation Metadata Average Production Temperature: 200.0 degC Minimum Production Temperature: 190.6 degC Initial Production Temperature: 199.2 degC - Average Reservoir Heat Extraction: 6808.20 MW + Average Reservoir Heat Extraction: 7126.41 MW Production Wellbore Heat Transmission Model = Ramey Model - Average Production Well Temperature Drop: 1.4 degC - Average Injection Well Pump Pressure Drop: -1182.8 kPa - Average Production Well Pump Pressure Drop: 6159.0 kPa + Average Production Well Temperature Drop: 1.3 degC + Average Injection Well Pump Pressure Drop: -1301.9 kPa + Average Production Well Pump Pressure Drop: 6157.5 kPa ***CAPITAL COSTS (M$)*** @@ -106,48 +106,48 @@ Simulation Metadata Drilling and completion costs: 1278.62 MUSD Drilling and completion costs per well: 5.61 MUSD Stimulation costs: 1514.98 MUSD - Surface power plant costs: 3133.57 MUSD - Field gathering system costs: 68.89 MUSD + Surface power plant costs: 3244.08 MUSD + Field gathering system costs: 68.88 MUSD Transmission pipeline cost: 2.00 MUSD - Total surface equipment costs: 3202.46 MUSD + Total surface equipment costs: 3312.97 MUSD One-time Flat License Fees Etc: 100.00 MUSD Total Add-on CAPEX: 562.00 MUSD - Overnight Capital Cost: 7160.06 MUSD - Inflation costs during construction: 870.96 MUSD - Interest during construction: 187.79 MUSD - Total CAPEX: 8218.81 MUSD + Overnight Capital Cost: 7270.57 MUSD + Inflation costs during construction: 884.41 MUSD + Interest during construction: 190.69 MUSD + Total CAPEX: 8345.66 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 14.56 MUSD/yr - Power plant maintenance costs: 50.26 MUSD/yr + Wellfield maintenance costs: 14.57 MUSD/yr + Power plant maintenance costs: 51.94 MUSD/yr Water costs: 44.89 MUSD/yr Redrilling costs: 186.24 MUSD/yr Total Add-on OPEX: 0.00 MUSD/yr - Total operating and maintenance costs: 295.96 MUSD/yr + Total operating and maintenance costs: 297.65 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** Initial geofluid availability: 0.19 MW/(kg/s) - Maximum Total Electricity Generation: 1133.37 MW - Average Total Electricity Generation: 1116.10 MW - Minimum Total Electricity Generation: 988.47 MW - Initial Total Electricity Generation: 1104.09 MW - Maximum Net Electricity Generation: 1035.09 MW - Average Net Electricity Generation: 1016.98 MW - Minimum Net Electricity Generation: 884.51 MW - Initial Net Electricity Generation: 1005.03 MW - Average Annual Total Electricity Generation: 8799.65 GWh - Average Annual Net Electricity Generation: 8018.16 GWh + Maximum Total Electricity Generation: 1133.31 MW + Average Total Electricity Generation: 1116.33 MW + Minimum Total Electricity Generation: 989.36 MW + Initial Total Electricity Generation: 1104.01 MW + Maximum Net Electricity Generation: 1035.05 MW + Average Net Electricity Generation: 1017.22 MW + Minimum Net Electricity Generation: 885.43 MW + Initial Net Electricity Generation: 1004.95 MW + Average Annual Total Electricity Generation: 8801.45 GWh + Average Annual Net Electricity Generation: 8020.12 GWh Initial pumping power/net installed power: 9.86 % - Maximum Net Heat Production: 9.17 MW - Average Net Heat Production: 8.09 MW - Minimum Net Heat Production: 0.00 MW - Initial Net Heat Production: 7.34 MW - Average Annual Heat Production: 63.77 GWh - Average Pumping Power: 99.12 MW - Heat to Power Conversion Efficiency: 14.95 % + Maximum Net Heat Production: 301.47 MW + Average Net Heat Production: 300.41 MW + Minimum Net Heat Production: 292.38 MW + Initial Net Heat Production: 299.65 MW + Average Annual Heat Production: 2368.45 GWh + Average Pumping Power: 99.10 MW + Heat to Power Conversion Efficiency: 14.97 % ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * @@ -155,36 +155,36 @@ Simulation Metadata YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY (deg C) (MW) (MW) (MW) (%) - 0 1.0000 199.16 99.0596 1005.0269 7.3428 14.8700 - 1 1.0077 200.68 98.8776 1026.1299 8.6483 15.0242 - 2 1.0091 200.97 98.8436 1030.0677 8.8912 15.0527 - 3 1.0098 201.12 98.8260 1032.1180 9.0176 15.0675 - 4 1.0103 201.21 98.8146 1033.4653 9.1006 15.0772 - 5 1.0107 201.28 98.8101 1034.3488 9.1553 15.0836 - 6 1.0107 201.29 98.8274 1034.4343 9.1616 15.0841 - 7 1.0100 201.14 98.9135 1032.4083 9.0411 15.0690 - 8 1.0075 200.66 99.1659 1025.4506 8.6239 15.0172 - 9 1.0017 199.50 99.7379 1009.0647 7.6376 14.8943 - 10 0.9905 197.27 100.8170 977.6311 5.7341 14.6545 - 11 0.9719 193.55 102.5765 925.7343 2.5571 14.2460 - 12 1.0049 200.13 98.7254 1018.6747 8.1743 14.9716 - 13 1.0083 200.81 98.6957 1028.0035 8.7536 15.0390 - 14 1.0094 201.03 98.6598 1031.0442 8.9405 15.0611 - 15 1.0100 201.15 98.6190 1032.8258 9.0487 15.0741 - 16 1.0105 201.24 98.5758 1034.0499 9.1221 15.0832 - 17 1.0107 201.29 98.5385 1034.7786 9.1651 15.0887 - 18 1.0106 201.26 98.5340 1034.4086 9.1418 15.0861 - 19 1.0094 201.03 98.6272 1031.1718 8.9464 15.0622 - 20 1.0061 200.36 98.9381 1021.6744 8.3746 14.9917 - 21 0.9987 198.90 99.6384 1000.9400 7.1233 14.8357 - 22 0.9852 196.22 100.9204 963.2345 4.8327 14.5457 - 23 0.9637 191.92 102.9412 903.5952 1.1634 14.0696 - 24 1.0067 200.50 98.3062 1024.1225 8.4877 15.0140 - 25 1.0087 200.90 98.2924 1029.6478 8.8308 15.0538 - 26 1.0096 201.07 98.2821 1032.0887 8.9820 15.0714 - 27 1.0102 201.19 98.2746 1033.6127 9.0762 15.0823 - 28 1.0106 201.26 98.2712 1034.6508 9.1405 15.0898 - 29 1.0107 201.29 98.2818 1035.0844 9.1681 15.0928 + 0 1.0000 199.15 99.0603 1004.9467 299.6478 14.8856 + 1 1.0077 200.68 98.8781 1026.0717 300.9533 15.0401 + 2 1.0091 200.96 98.8441 1030.0136 301.1962 15.0687 + 3 1.0099 201.11 98.8264 1032.0660 301.3225 15.0835 + 4 1.0103 201.21 98.8151 1033.4146 301.4056 15.0933 + 5 1.0107 201.27 98.8106 1034.2961 301.4600 15.0996 + 6 1.0107 201.28 98.8286 1034.3624 301.4653 15.1000 + 7 1.0100 201.13 98.9176 1032.2531 301.3398 15.0842 + 8 1.0074 200.63 99.1787 1025.0442 300.9080 15.0305 + 9 1.0014 199.43 99.7709 1008.0630 299.8868 14.9030 + 10 0.9898 197.12 100.8895 975.4586 297.9137 14.6537 + 11 0.9704 193.25 102.7147 921.5870 294.6166 14.2281 + 12 1.0055 200.25 98.7238 1020.3260 300.5861 14.9999 + 13 1.0084 200.83 98.6930 1028.2937 301.0799 15.0575 + 14 1.0095 201.04 98.6556 1031.1728 301.2565 15.0784 + 15 1.0101 201.16 98.6131 1032.8966 301.3609 15.0911 + 16 1.0105 201.24 98.5682 1034.0862 301.4319 15.0999 + 17 1.0107 201.29 98.5304 1034.7545 301.4711 15.1050 + 18 1.0105 201.25 98.5300 1034.1980 301.4365 15.1010 + 19 1.0092 200.98 98.6385 1030.4588 301.2110 15.0734 + 20 1.0054 200.24 98.9854 1019.8660 300.5738 14.9946 + 21 0.9974 198.63 99.7528 997.1333 299.2025 14.8231 + 22 0.9828 195.72 101.1403 956.2856 296.7204 14.5073 + 23 0.9596 191.10 103.3050 892.3046 292.7780 13.9923 + 24 1.0073 200.60 98.2855 1025.5331 300.8829 15.0407 + 25 1.0089 200.93 98.2711 1030.1273 301.1676 15.0738 + 26 1.0098 201.09 98.2602 1032.3555 301.3054 15.0898 + 27 1.0103 201.20 98.2525 1033.7867 301.3938 15.1001 + 28 1.0106 201.27 98.2498 1034.7477 301.4532 15.1070 + 29 1.0107 201.29 98.2653 1035.0061 301.4703 15.1088 ******************************************************************* @@ -193,36 +193,36 @@ Simulation Metadata YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) - 1 64.8 8035.3 53734.36 3777.18 4.87 - 2 69.3 8107.7 53982.79 3582.85 9.77 - 3 70.6 8129.8 54058.54 3388.23 14.67 - 4 71.4 8142.9 54103.27 3193.46 19.57 - 5 72.0 8151.7 54133.43 2998.58 24.48 - 6 72.3 8155.9 54148.35 2803.65 29.39 - 7 71.9 8149.6 54127.66 2608.79 34.30 - 8 69.9 8116.6 54017.96 2414.32 39.20 - 9 64.6 8028.0 53722.18 2220.92 44.07 - 10 53.4 7843.3 53102.62 2029.76 48.88 - 11 33.6 7517.9 52002.04 1842.55 53.60 - 12 28.8 7445.1 51735.30 1656.30 58.29 - 13 67.4 8078.0 53876.25 1462.35 63.17 - 14 69.8 8118.1 54013.85 1267.90 68.07 - 15 70.9 8136.3 54075.61 1073.22 72.97 - 16 71.6 8147.9 54114.68 878.41 77.88 - 17 72.1 8155.7 54140.58 683.51 82.79 - 18 72.2 8157.9 54147.23 488.58 87.70 - 19 71.5 8145.3 54104.83 293.80 92.60 - 20 68.6 8097.9 53946.13 99.59 97.49 - 21 61.7 7982.3 53559.30 -93.22 102.35 - 22 47.9 7755.7 52796.90 -283.29 107.13 - 23 24.6 7374.5 51502.59 -468.70 111.80 - 24 45.8 7729.1 52681.06 -658.35 116.58 - 25 68.5 8099.9 53940.77 -852.54 121.47 - 26 70.3 8128.3 54038.37 -1047.08 126.37 - 27 71.2 8143.4 54090.35 -1241.80 131.27 - 28 71.8 8153.4 54124.73 -1436.65 136.18 - 29 72.2 8159.5 54145.79 -1631.58 141.09 - 30 72.1 8158.3 54142.50 -1826.49 146.00 + 1 2369.3 8034.8 56234.90 3952.76 4.87 + 2 2373.8 8107.2 56483.32 3749.42 9.77 + 3 2375.2 8129.4 56559.06 3545.81 14.67 + 4 2376.0 8142.4 56603.80 3342.04 19.57 + 5 2376.5 8151.2 56633.92 3138.15 24.48 + 6 2376.8 8155.5 56648.61 2934.22 29.38 + 7 2376.4 8148.8 56626.75 2730.36 34.29 + 8 2374.3 8114.5 56513.07 2526.92 39.19 + 9 2368.8 8022.7 56206.90 2324.57 44.06 + 10 2357.3 7831.2 55565.04 2124.54 48.87 + 11 2336.7 7493.6 54423.48 1928.61 53.59 + 12 2337.5 7512.8 54467.54 1732.53 58.30 + 13 2372.2 8083.2 56396.37 1529.50 63.19 + 14 2374.5 8119.6 56521.01 1326.03 68.09 + 15 2375.5 8137.0 56580.01 1122.34 72.99 + 16 2376.2 8148.3 56617.84 918.51 77.89 + 17 2376.7 8155.8 56642.53 714.60 82.80 + 18 2376.7 8157.1 56646.17 510.67 87.71 + 19 2375.8 8141.9 56595.23 306.93 92.61 + 20 2372.6 8088.4 56416.29 103.83 97.50 + 21 2364.9 7960.9 55989.55 -97.73 102.35 + 22 2350.0 7714.1 55159.43 -296.30 107.13 + 23 2324.8 7303.4 53763.56 -489.85 111.79 + 24 2360.6 7897.0 55751.27 -690.56 116.62 + 25 2373.5 8106.3 56464.12 -893.83 121.51 + 26 2375.0 8131.1 56549.43 -1097.41 126.41 + 27 2375.9 8145.1 56597.54 -1301.16 131.31 + 28 2376.4 8154.5 56629.76 -1505.02 136.22 + 29 2376.8 8159.7 56647.79 -1708.96 141.13 + 30 2376.6 8156.2 56636.89 -1912.85 146.03 *************************** * SAM CASH FLOW PROFILE * @@ -231,76 +231,76 @@ 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] (%) 2.68 2.68 2.68 46.0 46.0 -Overnight capital expenditure [construction] ($) -191,928,075 -191,928,075 -191,928,075 -3,292,139,409 -3,292,139,409 +Overnight capital expenditure [construction] ($) -194,890,348 -194,890,348 -194,890,348 -3,342,951,233 -3,342,951,233 plus: -Inflation cost [construction] ($) -5,182,058 -10,504,032 -15,969,699 -370,211,820 -469,095,303 +Inflation cost [construction] ($) -5,262,039 -10,666,154 -16,216,179 -375,925,776 -476,335,455 plus: Royalty supplemental payments [construction] ($) 0 0 0 0 0 equals: -Nominal capital expenditure [construction] ($) -197,110,133 -202,432,107 -207,897,774 -3,662,351,229 -3,761,234,713 +Nominal capital expenditure [construction] ($) -200,152,388 -205,556,502 -211,106,528 -3,718,877,008 -3,819,286,688 -Issuance of equity [construction] ($) 78,844,053 80,972,843 83,159,109 1,464,940,492 1,504,493,885 -Issuance of debt [construction] ($) 118,266,080 121,459,264 124,738,664 2,197,410,738 2,256,740,828 -Debt balance [construction] ($) 118,266,080 246,348,245 384,882,410 2,603,846,563 5,006,402,798 -Debt interest payment [construction] ($) 0 6,622,900 13,795,502 21,553,415 145,815,408 +Issuance of equity [construction] ($) 80,060,955 82,222,601 84,442,611 1,487,550,803 1,527,714,675 +Issuance of debt [construction] ($) 120,091,433 123,333,901 126,663,917 2,231,326,205 2,291,572,013 +Debt balance [construction] ($) 120,091,433 250,150,454 390,822,796 2,644,035,077 5,083,673,054 +Debt interest payment [construction] ($) 0 6,725,120 14,008,425 21,886,077 148,065,964 -Installed cost [construction] ($) -197,110,133 -209,055,007 -221,693,275 -3,683,904,644 -3,907,050,120 -After-tax net cash flow [construction] ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 +Installed cost [construction] ($) -200,152,388 -212,281,622 -225,114,953 -3,740,763,085 -3,967,352,652 +After-tax net cash flow [construction] ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 ENERGY -Electricity to grid (kWh) 0.0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 +Electricity to grid (kWh) 0.0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 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 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 +Electricity to grid net (kWh) 0.0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 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 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 +PPA revenue ($) 0 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 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 -Heat provided (kWh) 0 0 0 0 0 64,801,517 69,273,187 70,636,641 71,441,852 71,984,641 72,253,249 71,880,903 69,906,161 64,582,271 53,430,157 33,619,704 28,818,391 67,355,519 69,832,292 70,943,875 71,647,194 72,113,431 72,233,105 71,469,952 68,613,281 61,650,341 47,927,215 24,629,599 45,842,066 68,516,844 70,273,620 71,209,283 71,828,127 72,207,123 72,147,954 +Heat provided (kWh) 0 0 0 0 0 2,369,334,002 2,373,805,535 2,375,168,952 2,375,974,120 2,376,516,393 2,376,780,703 2,376,387,308 2,374,341,027 2,368,830,039 2,357,276,431 2,336,728,519 2,337,521,459 2,372,240,406 2,374,484,034 2,375,546,030 2,376,226,852 2,376,671,375 2,376,736,880 2,375,819,978 2,372,599,078 2,364,917,622 2,349,975,622 2,324,849,961 2,360,628,714 2,373,459,934 2,374,995,563 2,375,861,535 2,376,441,500 2,376,765,933 2,376,569,801 Add-On Profit 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 -Heat price ($/kWh) 0.0 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 1.68 -Heat revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 -Capacity payment revenue ($) 0 108,866,548 116,378,954 118,669,557 120,022,311 120,934,196 121,385,458 120,759,918 117,442,350 108,498,216 89,762,663 56,481,103 48,414,896 113,157,271 117,318,251 119,185,711 120,367,287 121,150,565 121,351,616 120,069,519 115,270,312 103,572,574 80,517,722 41,377,726 77,014,671 115,108,298 118,059,681 119,631,595 120,671,254 121,307,966 121,208,564 +Heat price ($/kWh) 0.0 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 +Heat revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 +Capacity payment revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 -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 4,109,406,590 -Total revenue ($) 0 872,258,775 886,647,780 895,673,135 902,916,087 909,320,682 914,835,976 918,237,778 916,316,677 903,227,825 870,678,108 809,285,562 798,170,914 931,261,814 944,106,212 952,462,860 959,481,904 965,720,432 970,791,046 972,843,201 967,695,492 948,386,375 905,763,028 830,273,270 908,241,070 990,837,037 1,001,484,596 1,009,341,538 1,016,121,540 1,022,077,399 5,135,905,860 +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 4,172,832,350 +Total revenue ($) 0 869,963,097 877,048,087 883,846,159 889,773,632 895,290,600 900,359,769 904,334,112 905,517,245 900,806,605 885,792,240 855,521,104 861,766,087 925,383,166 933,794,552 940,253,991 946,087,931 951,529,076 956,309,822 959,334,340 958,197,165 948,964,571 926,567,069 885,901,922 955,520,329 983,217,780 990,604,170 996,809,414 1,002,509,201 1,007,745,194 5,184,837,184 -Property tax net assessed value ($) 0 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 8,218,813,180 +Property tax net assessed value ($) 0 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 OPERATING EXPENSES -O&M fixed expense ($) 0 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 +O&M fixed expense ($) 0 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 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 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 295,959,493 +Total operating expenses ($) 0 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 OPERATING ACTIVITIES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 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 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 -Cash flow from operating activities ($) 0 295,940,726 314,133,376 327,175,380 338,659,913 349,543,619 359,788,854 368,185,472 371,538,899 364,019,948 337,352,045 282,170,695 277,615,072 417,632,300 437,790,901 453,871,348 469,046,724 483,898,337 498,064,370 509,721,287 514,716,207 506,117,706 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 +Debt interest payment ($) 0 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 +Cash flow from operating activities ($) 0 287,630,986 298,578,328 309,455,043 319,689,564 329,754,774 339,626,887 348,673,139 355,212,208 356,157,435 347,115,667 323,151,592 336,056,833 406,707,143 422,545,622 436,848,072 450,964,230 465,151,398 479,167,944 491,945,466 501,107,465 502,750,797 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 INVESTING ACTIVITIES -Total installed cost ($) -8,218,813,180 +Total installed cost ($) -8,345,664,700 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -8,218,813,180 +Purchase of property ($) -8,345,664,700 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 @@ -312,93 +312,93 @@ 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 ($) -8,218,813,180 0 0 0 0 0 0 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 ($) -8,345,664,700 0 0 0 0 0 0 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 ($) 3,212,410,382 -Size of debt ($) 5,006,402,798 +Issuance of equity ($) 3,261,991,645 +Size of debt ($) 5,083,673,054 minus: -Debt principal payment ($) 0 67,922,237 71,725,882 75,742,531 79,984,113 84,463,223 89,193,164 94,187,981 99,462,508 105,032,409 110,914,223 117,125,420 123,684,444 130,610,772 137,924,976 145,648,774 153,805,106 162,418,192 171,513,610 181,118,372 191,261,001 201,971,617 213,282,028 225,225,821 237,838,467 251,157,422 265,222,237 280,074,683 295,758,865 312,321,361 329,811,357 +Debt principal payment ($) 0 68,970,568 72,832,920 76,911,563 81,218,611 85,766,853 90,569,797 95,641,706 100,997,641 106,653,509 112,626,105 118,933,167 125,593,425 132,626,656 140,053,749 147,896,759 156,178,978 164,925,000 174,160,800 183,913,805 194,212,978 205,088,905 216,573,884 228,702,021 241,509,335 255,033,857 269,315,753 284,397,436 300,323,692 317,141,819 334,901,760 equals: -Cash flow from financing activities ($) 8,218,813,180 -67,922,237 -71,725,882 -75,742,531 -79,984,113 -84,463,223 -89,193,164 -94,187,981 -99,462,508 -105,032,409 -110,914,223 -117,125,420 -123,684,444 -130,610,772 -137,924,976 -145,648,774 -153,805,106 -162,418,192 -171,513,610 -181,118,372 -191,261,001 -201,971,617 -213,282,028 -225,225,821 -237,838,467 -251,157,422 -265,222,237 -280,074,683 -295,758,865 -312,321,361 -329,811,357 +Cash flow from financing activities ($) 8,345,664,700 -68,970,568 -72,832,920 -76,911,563 -81,218,611 -85,766,853 -90,569,797 -95,641,706 -100,997,641 -106,653,509 -112,626,105 -118,933,167 -125,593,425 -132,626,656 -140,053,749 -147,896,759 -156,178,978 -164,925,000 -174,160,800 -183,913,805 -194,212,978 -205,088,905 -216,573,884 -228,702,021 -241,509,335 -255,033,857 -269,315,753 -284,397,436 -300,323,692 -317,141,819 -334,901,760 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 295,940,726 314,133,376 327,175,380 338,659,913 349,543,619 359,788,854 368,185,472 371,538,899 364,019,948 337,352,045 282,170,695 277,615,072 417,632,300 437,790,901 453,871,348 469,046,724 483,898,337 498,064,370 509,721,287 514,716,207 506,117,706 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 -Cash flow from investing activities ($) -8,218,813,180 0 0 0 0 0 0 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 ($) 8,218,813,180 -67,922,237 -71,725,882 -75,742,531 -79,984,113 -84,463,223 -89,193,164 -94,187,981 -99,462,508 -105,032,409 -110,914,223 -117,125,420 -123,684,444 -130,610,772 -137,924,976 -145,648,774 -153,805,106 -162,418,192 -171,513,610 -181,118,372 -191,261,001 -201,971,617 -213,282,028 -225,225,821 -237,838,467 -251,157,422 -265,222,237 -280,074,683 -295,758,865 -312,321,361 -329,811,357 -Total pre-tax cash flow ($) 0 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 +Cash flow from operating activities ($) 0 287,630,986 298,578,328 309,455,043 319,689,564 329,754,774 339,626,887 348,673,139 355,212,208 356,157,435 347,115,667 323,151,592 336,056,833 406,707,143 422,545,622 436,848,072 450,964,230 465,151,398 479,167,944 491,945,466 501,107,465 502,750,797 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 +Cash flow from investing activities ($) -8,345,664,700 0 0 0 0 0 0 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 ($) 8,345,664,700 -68,970,568 -72,832,920 -76,911,563 -81,218,611 -85,766,853 -90,569,797 -95,641,706 -100,997,641 -106,653,509 -112,626,105 -118,933,167 -125,593,425 -132,626,656 -140,053,749 -147,896,759 -156,178,978 -164,925,000 -174,160,800 -183,913,805 -194,212,978 -205,088,905 -216,573,884 -228,702,021 -241,509,335 -255,033,857 -269,315,753 -284,397,436 -300,323,692 -317,141,819 -334,901,760 +Total pre-tax cash flow ($) 0 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 Pre-tax Returns: -Issuance of equity ($) 3,212,410,382 -Total pre-tax cash flow ($) 0 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 -Total pre-tax returns ($) -3,212,410,382 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 +Issuance of equity ($) 3,261,991,645 +Total pre-tax cash flow ($) 0 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 +Total pre-tax returns ($) -3,261,991,645 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 After-tax Returns: -Total pre-tax returns ($) -3,212,410,382 228,018,489 242,407,494 251,432,849 258,675,800 265,080,396 270,595,690 273,997,491 272,076,391 258,987,539 226,437,821 165,045,275 153,930,628 287,021,528 299,865,926 308,222,573 315,241,618 321,480,145 326,550,760 328,602,914 323,455,206 304,146,089 261,522,741 186,032,984 264,000,784 346,596,750 357,244,310 365,101,252 371,881,254 377,837,112 4,491,665,574 -Federal ITC total income ($) 0 3,287,525,272 0 0 0 0 0 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 ($) -3,261,991,645 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 +Federal ITC total income ($) 0 3,338,265,880 0 0 0 0 0 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 -25,694,539 2,855,120 308,017 -1,934,913 -4,060,500 -6,061,395 -7,701,254 -8,356,178 -6,887,727 -1,679,486 9,097,432 9,987,145 -17,358,220 -21,295,194 -24,435,706 -27,399,457 -30,299,977 -33,066,603 -35,343,199 -36,318,707 -66,742,104 -92,729,371 -80,318,845 -98,009,206 -116,741,390 -121,567,717 -126,002,860 -130,390,115 -134,787,950 -941,634,445 +Federal tax benefit (liability) ($) 0 -23,576,165 6,883,985 4,759,763 2,760,961 795,225 -1,132,798 -2,899,531 -4,176,611 -4,361,215 -2,595,357 2,084,827 -435,567 -14,233,572 -17,326,827 -20,120,096 -22,876,981 -25,647,735 -28,385,167 -30,880,617 -32,669,955 -65,589,064 -96,056,015 -90,482,737 -106,580,480 -114,631,132 -118,862,948 -123,020,285 -127,243,851 -131,551,020 -950,805,603 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 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 -Total after-tax returns ($) -3,212,410,382 3,480,639,709 246,285,955 251,851,266 256,047,371 259,564,519 262,361,752 263,535,931 260,725,167 249,631,092 224,156,369 177,403,435 167,497,395 263,441,724 270,938,045 275,028,550 278,021,568 280,319,962 281,632,328 280,591,903 274,119,041 213,482,084 135,557,036 76,926,023 130,862,830 188,012,569 192,103,935 193,936,077 194,756,330 194,738,069 3,212,527,744 +State tax benefit (liability) ($) 0 -8,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 +Total after-tax returns ($) -3,261,991,645 3,524,899,894 235,096,772 239,009,251 242,221,506 245,068,173 247,518,270 249,092,643 248,540,962 243,579,553 230,963,969 207,050,501 209,871,724 254,745,276 258,954,713 261,619,713 263,708,636 265,385,925 266,448,082 266,082,722 262,514,870 208,564,202 144,779,696 111,685,418 159,436,281 176,197,543 177,835,337 178,393,159 178,355,557 177,740,592 3,241,938,364 -After-tax net cash flow ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 3,480,639,709 246,285,955 251,851,266 256,047,371 259,564,519 262,361,752 263,535,931 260,725,167 249,631,092 224,156,369 177,403,435 167,497,395 263,441,724 270,938,045 275,028,550 278,021,568 280,319,962 281,632,328 280,591,903 274,119,041 213,482,084 135,557,036 76,926,023 130,862,830 188,012,569 192,103,935 193,936,077 194,756,330 194,738,069 3,212,527,744 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 4.83 8.72 11.93 14.45 16.37 17.83 18.93 19.76 20.37 20.79 21.06 21.26 21.50 21.70 21.87 22.00 22.10 22.18 22.25 22.30 22.34 22.35 22.36 22.37 22.38 22.39 22.40 22.41 22.42 22.49 -After-tax cumulative NPV ($) -78,844,053 -149,240,529 -212,094,526 -1,174,713,869 -2,034,195,426 -305,506,941 -199,163,955 -104,621,936 -21,059,212 52,586,783 117,303,408 173,818,795 222,428,318 262,890,436 294,477,740 316,211,508 334,051,415 358,445,281 380,256,383 399,504,884 416,421,331 431,249,798 444,201,780 455,420,425 464,948,738 471,400,076 474,961,486 476,718,538 479,317,137 482,562,934 485,446,184 487,976,741 490,186,071 492,106,647 519,651,410 +After-tax net cash flow ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 3,524,899,894 235,096,772 239,009,251 242,221,506 245,068,173 247,518,270 249,092,643 248,540,962 243,579,553 230,963,969 207,050,501 209,871,724 254,745,276 258,954,713 261,619,713 263,708,636 265,385,925 266,448,082 266,082,722 262,514,870 208,564,202 144,779,696 111,685,418 159,436,281 176,197,543 177,835,337 178,393,159 178,355,557 177,740,592 3,241,938,364 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 4.67 8.35 11.40 13.80 15.66 17.08 18.17 18.99 19.62 20.08 20.40 20.66 20.91 21.11 21.28 21.41 21.51 21.60 21.66 21.72 21.75 21.77 21.79 21.80 21.81 21.82 21.83 21.84 21.85 21.93 +After-tax cumulative NPV ($) -80,060,955 -151,543,951 -215,368,054 -1,192,844,740 -2,065,591,782 -314,921,110 -213,409,464 -123,688,187 -44,637,623 24,895,336 85,950,528 139,368,546 185,706,450 225,187,688 257,734,294 283,100,137 305,453,273 329,041,876 349,888,293 368,198,346 384,243,911 398,282,392 410,536,066 421,174,604 430,299,559 436,602,280 440,405,992 442,956,977 446,122,971 449,164,796 451,833,892 454,161,638 456,184,917 457,937,858 485,734,792 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -78,844,053 -80,972,843 -83,159,109 -1,464,940,492 -1,504,493,885 2,608,380,934 -640,361,825 -643,821,869 -646,868,716 -649,756,163 -652,474,224 -654,701,847 -655,591,511 -653,596,733 -646,521,738 -631,882,126 -630,673,519 -667,820,090 -673,168,167 -677,434,309 -681,460,337 -685,400,470 -689,158,718 -692,251,298 -693,576,451 -734,904,291 -770,205,992 -753,347,247 -777,378,240 -802,824,468 -809,380,661 -815,405,462 -821,365,210 -827,339,329 2,186,028,474 -PPA revenue ($) 0 0 0 0 0 763,392,227 770,268,826 777,003,578 782,893,776 788,386,486 793,450,518 797,477,860 798,874,327 794,729,609 780,915,445 752,804,459 749,756,018 818,104,543 826,787,961 833,277,149 839,114,617 844,569,867 849,439,430 852,773,682 852,425,180 844,813,801 825,245,306 788,895,544 831,226,399 875,728,739 883,424,915 889,709,943 895,450,286 900,769,433 905,290,706 -Electricity to grid (kWh) 0 0 0 0 0 8,035,707,655 8,108,092,907 8,130,203,812 8,143,267,897 8,152,067,897 8,156,358,121 8,150,003,674 8,116,991,743 8,028,382,759 7,843,666,580 7,518,270,834 7,445,442,088 8,078,449,130 8,118,499,225 8,136,677,558 8,148,326,058 8,156,155,157 8,158,273,437 8,145,703,332 8,098,282,159 7,982,744,033 7,756,064,902 7,374,923,287 7,729,462,517 8,100,349,077 8,128,679,747 8,143,798,107 8,153,799,727 8,159,882,531 8,158,712,200 +Annual costs ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 2,654,936,797 -641,951,315 -644,836,908 -647,552,126 -650,222,427 -652,841,498 -655,241,469 -656,976,284 -657,227,053 -654,828,271 -648,470,602 -651,894,363 -670,637,890 -674,839,839 -678,634,278 -682,379,295 -686,143,151 -689,861,741 -693,251,617 -695,682,295 -740,400,368 -781,787,373 -774,216,504 -796,084,048 -807,020,238 -812,768,834 -818,416,255 -824,153,645 -830,004,603 2,229,933,530 +PPA revenue ($) 0 0 0 0 0 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 +Electricity to grid (kWh) 0 0 0 0 0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 -Present value of annual costs ($) 2,852,683,706 +Present value of annual costs ($) 2,870,779,026 -Present value of annual energy costs ($) 2,849,524,076 -Present value of annual energy nominal (kWh) 30,166,877,246 -LCOE Levelized cost of energy nominal (cents/kWh) 9.45 +Present value of annual energy costs ($) 2,769,785,053 +Present value of annual energy nominal (kWh) 30,167,357,656 +LCOE Levelized cost of energy nominal (cents/kWh) 9.18 -Present value of PPA revenue ($) 2,956,909,593 -Present value of annual energy nominal (kWh) 30,166,877,246 +Present value of PPA revenue ($) 2,956,972,031 +Present value of annual energy nominal (kWh) 30,167,357,656 LPPA Levelized PPA price nominal (cents/kWh) 9.80 -Present value of annual heat costs ($) 3,159,629 -Present value of annual heat provided (MMBTU) 843,744 -LCOH Levelized cost of heating nominal ($/MMBTU) 3.74 +Present value of annual heat costs ($) 100,993,973 +Present value of annual heat provided (MMBTU) 30,295,399 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.33 PROJECT STATE INCOME TAXES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 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 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 -Total state tax depreciation ($) 0 164,376,264 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 164,376,264 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 +Total state tax depreciation ($) 0 166,913,294 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 166,913,294 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 131,564,462 -14,619,151 -1,577,147 9,907,386 20,791,092 31,036,327 39,432,945 42,786,372 35,267,420 8,599,518 -46,581,832 -51,137,456 88,879,773 109,038,374 125,118,820 140,294,197 155,145,810 169,311,843 180,968,760 185,963,680 341,741,443 474,804,769 411,258,805 501,839,251 597,754,172 622,466,547 645,175,934 667,640,119 690,158,474 4,821,476,931 +State taxable income ($) 0 120,717,692 -35,248,260 -24,371,545 -14,137,024 -4,071,814 5,800,299 14,846,551 21,385,620 22,330,847 13,289,079 -10,674,996 2,230,245 72,880,555 88,719,034 103,021,484 117,137,642 131,324,810 145,341,356 158,118,878 167,280,877 335,837,503 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 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 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 +State tax benefit (liability) ($) 0 -8,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 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 -9,209,512 1,023,341 110,400 -693,517 -1,455,376 -2,172,543 -2,760,306 -2,995,046 -2,468,719 -601,966 3,260,728 3,579,622 -6,221,584 -7,632,686 -8,758,317 -9,820,594 -10,860,207 -11,851,829 -12,667,813 -13,017,458 -23,921,901 -33,236,334 -28,788,116 -35,128,748 -41,842,792 -43,572,658 -45,162,315 -46,734,808 -48,311,093 -337,503,385 +State tax benefit (liability) ($) 0 -8,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 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 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 -Total federal tax depreciation ($) 0 164,376,264 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 328,752,527 164,376,264 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 +Total federal tax depreciation ($) 0 166,913,294 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 166,913,294 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 122,354,950 -13,595,811 -1,466,747 9,213,869 19,335,716 28,863,784 36,672,639 39,791,326 32,798,701 7,997,551 -43,321,104 -47,557,834 82,658,189 101,405,688 116,360,503 130,473,603 144,285,603 157,460,014 168,300,947 172,946,222 317,819,542 441,568,435 382,470,689 466,710,504 555,911,380 578,893,889 600,013,619 620,905,310 641,847,380 4,483,973,546 +Federal taxable income ($) 0 112,267,454 -32,780,882 -22,665,537 -13,147,432 -3,786,787 5,394,278 13,807,292 19,888,626 20,767,688 12,358,843 -9,927,746 2,074,128 67,778,916 82,508,702 95,809,980 108,938,007 122,132,073 135,167,461 147,050,557 155,571,216 312,328,878 457,409,594 430,870,176 507,526,096 545,862,532 566,014,038 585,810,879 605,923,099 626,433,431 4,527,645,727 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 -25,694,539 2,855,120 308,017 -1,934,913 -4,060,500 -6,061,395 -7,701,254 -8,356,178 -6,887,727 -1,679,486 9,097,432 9,987,145 -17,358,220 -21,295,194 -24,435,706 -27,399,457 -30,299,977 -33,066,603 -35,343,199 -36,318,707 -66,742,104 -92,729,371 -80,318,845 -98,009,206 -116,741,390 -121,567,717 -126,002,860 -130,390,115 -134,787,950 -941,634,445 +Federal tax benefit (liability) ($) 0 -23,576,165 6,883,985 4,759,763 2,760,961 795,225 -1,132,798 -2,899,531 -4,176,611 -4,361,215 -2,595,357 2,084,827 -435,567 -14,233,572 -17,326,827 -20,120,096 -22,876,981 -25,647,735 -28,385,167 -30,880,617 -32,669,955 -65,589,064 -96,056,015 -90,482,737 -106,580,480 -114,631,132 -118,862,948 -123,020,285 -127,243,851 -131,551,020 -950,805,603 CASH INCENTIVES Federal IBI income ($) 0 @@ -424,30 +424,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 3,287,525,272 0 0 0 0 0 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 3,287,525,272 0 0 0 0 0 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 3,338,265,880 0 0 0 0 0 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 3,338,265,880 0 0 0 0 0 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 ($) 5,006,402,798 4,938,480,561 4,866,754,679 4,791,012,148 4,711,028,035 4,626,564,811 4,537,371,647 4,443,183,666 4,343,721,158 4,238,688,749 4,127,774,526 4,010,649,106 3,886,964,662 3,756,353,890 3,618,428,914 3,472,780,140 3,318,975,035 3,156,556,843 2,985,043,233 2,803,924,860 2,612,663,859 2,410,692,242 2,197,410,214 1,972,184,392 1,734,345,925 1,483,188,503 1,217,966,266 937,891,583 642,132,719 329,811,357 0 -Debt interest payment ($) 0 280,358,557 276,554,911 272,538,262 268,296,680 263,817,570 259,087,629 254,092,812 248,818,285 243,248,385 237,366,570 231,155,373 224,596,350 217,670,021 210,355,818 202,632,019 194,475,688 185,862,602 176,767,183 167,162,421 157,019,792 146,309,176 134,998,766 123,054,972 110,442,326 97,123,372 83,058,556 68,206,111 52,521,929 35,959,432 18,469,436 -Debt principal payment ($) 0 67,922,237 71,725,882 75,742,531 79,984,113 84,463,223 89,193,164 94,187,981 99,462,508 105,032,409 110,914,223 117,125,420 123,684,444 130,610,772 137,924,976 145,648,774 153,805,106 162,418,192 171,513,610 181,118,372 191,261,001 201,971,617 213,282,028 225,225,821 237,838,467 251,157,422 265,222,237 280,074,683 295,758,865 312,321,361 329,811,357 -Debt total payment ($) 0 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 +Debt balance ($) 5,083,673,054 5,014,702,486 4,941,869,566 4,864,958,003 4,783,739,392 4,697,972,539 4,607,402,742 4,511,761,037 4,410,763,396 4,304,109,887 4,191,483,781 4,072,550,614 3,946,957,189 3,814,330,533 3,674,276,784 3,526,380,025 3,370,201,047 3,205,276,046 3,031,115,246 2,847,201,441 2,652,988,462 2,447,899,557 2,231,325,673 2,002,623,652 1,761,114,317 1,506,080,460 1,236,764,707 952,367,271 652,043,579 334,901,760 0 +Debt interest payment ($) 0 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 +Debt principal payment ($) 0 68,970,568 72,832,920 76,911,563 81,218,611 85,766,853 90,569,797 95,641,706 100,997,641 106,653,509 112,626,105 118,933,167 125,593,425 132,626,656 140,053,749 147,896,759 156,178,978 164,925,000 174,160,800 183,913,805 194,212,978 205,088,905 216,573,884 228,702,021 241,509,335 255,033,857 269,315,753 284,397,436 300,323,692 317,141,819 334,901,760 +Debt total payment ($) 0 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 DSCR (DEBT FRACTION) -EBITDA ($) 0 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 +EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 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 576,299,282 590,688,287 599,713,642 606,956,594 613,361,189 618,876,483 622,278,285 620,357,184 607,268,333 574,718,615 513,326,069 502,211,421 635,302,322 648,146,719 656,503,367 663,522,412 669,760,939 674,831,553 676,883,708 671,735,999 652,426,882 609,803,535 534,313,777 612,281,577 694,877,544 705,525,103 713,382,045 720,162,047 726,117,906 4,839,946,367 -Debt total payment ($) 0 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 348,280,793 -DSCR (pre-tax) 0.0 1.65 1.70 1.72 1.74 1.76 1.78 1.79 1.78 1.74 1.65 1.47 1.44 1.82 1.86 1.88 1.91 1.92 1.94 1.94 1.93 1.87 1.75 1.53 1.76 2.0 2.03 2.05 2.07 2.08 13.90 +Cash available for debt service (CAFDS) ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +Debt total payment ($) 0 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 +DSCR (pre-tax) 0.0 1.62 1.64 1.66 1.67 1.69 1.70 1.72 1.72 1.71 1.66 1.58 1.60 1.77 1.80 1.82 1.83 1.85 1.86 1.87 1.87 1.84 1.78 1.66 1.86 1.94 1.96 1.98 1.99 2.01 13.82 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/example14_data-center.txt b/tests/examples/example14_data-center.txt index ee1b4e255..e95d42018 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -17,8 +17,8 @@ Electricity Escalation Rate Per Year, 0.00057, -- calibrated to reach 10 cents/k Ending Electricity Sale Price, 0.15, -- 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 -Starting Heat Sale Price, 1.68 -Ending Heat Sale Price, 100, -- Note that this parameter has no effect unless escalation is applied and ending heat sale price is reached. +Starting Heat Sale Price, 0.045 +Ending Heat Sale Price, 1, -- Note that this parameter has no effect unless escalation is applied and ending heat sale price is reached. 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/ @@ -86,7 +86,7 @@ Production Well Diameter, 8.5, -- p. 25 Injection Well Diameter, 8.5, -- p. 25 Ramey Production Wellbore Model, 1 -Injection Temperature, 53.6, -- GEOPHIRES model-calculated reinjection temperature +Injection Temperature, 46.72, -- Injection temperature that yields ~300 MWth heat Injection Wellbore Temperature Gain, 3 Ambient Temperature, 10 From cee4eddc812711e0679e7f50de029177cdbc28a1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 08:22:17 -0700 Subject: [PATCH 065/127] clean up/document direct-use heat end use option nameplate capacity stub workaround --- src/geophires_x/EconomicsSam.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index c89d10625..1b79b6dd8 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -854,7 +854,20 @@ def _get_royalty_rate_schedule(model: Model) -> list[float]: def _get_max_total_generation_kW(model: Model) -> float: max_total_kw = np.max(model.surfaceplant.ElectricityProduced.quantity().to(convertible_unit('kW')).magnitude) - # FIXME TEMP - max_total_kw = max(0.0001, max_total_kw) + if not model.surfaceplant.enduse_option.value.has_electricity_component: + # SAM requires a non-zero nameplate capacity, so we must provide a value even if there is no electricity + # component. The stub value is both accepted/processed by SAM and results in + # zero electricity production/revenue in the cash flow due to rounding. + # This logic should be revisited if SAM adds support for combined energy-heat models per + # https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/142#pullrequestreview-3999949844 + non_electricity_end_use_stub_value = 0.0001 + + max_total_kw = max(non_electricity_end_use_stub_value, max_total_kw) + if max_total_kw != non_electricity_end_use_stub_value: + # Shouldn't happen + model.logger.warning( + f'Unexpected non-zero maximum total electricity generation for heat end-use option: {max_total_kw} kW. ' + f'This may be a result of an internal bug in GEOPHIRES or an invalid parameter configuration.' + ) return max_total_kw From 6df3596a42fb26fd4f06edcaeb9952ddb5d319fb Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 08:40:22 -0700 Subject: [PATCH 066/127] Model absorption chiller cost via CHP Electrical Plant Cost Allocation Ratio rather than add-on --- tests/examples/example14_data-center.out | 183 +++++++++++------------ tests/examples/example14_data-center.txt | 8 +- 2 files changed, 92 insertions(+), 99 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index c3b993fcd..f46f67ead 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,18 +6,18 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-03 - Simulation Time: 07:41 - Calculation Time: 1.823 sec + Simulation Time: 08:38 + Calculation Time: 1.811 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 1017.22 MW Average Direct-Use Heat Production: 300.41 MW - Electricity breakeven price: 9.18 cents/kWh - Direct-Use heat breakeven price (LCOH): 3.33 USD/MMBTU - Total CAPEX: 8345.66 MUSD - Total CAPEX ($/kW): 8063 USD/kW + Electricity breakeven price: 9.05 cents/kWh + Direct-Use heat breakeven price (LCOH): 11.93 USD/MMBTU + Total CAPEX: 9466.90 MUSD + Total CAPEX ($/kW): 9146 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -31,15 +31,15 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.38 % - Investment Tax Credit: 3338.27 MUSD + Investment Tax Credit: 3786.76 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 485.73 MUSD - After-tax IRR: 21.93 % - Project VIR=PI=PIR: 1.24 - Project MOIC: 2.98 - Project Payback Period: 5.93 yr - CHP: Percent cost allocation for electrical plant: 96.48 % + Project NPV: 266.20 MUSD + After-tax IRR: 18.65 % + Project VIR=PI=PIR: 1.11 + Project MOIC: 2.33 + Project Payback Period: 5.94 yr + CHP: Percent cost allocation for electrical plant: 88.30 % ***ENGINEERING PARAMETERS*** @@ -106,26 +106,24 @@ Simulation Metadata Drilling and completion costs: 1278.62 MUSD Drilling and completion costs per well: 5.61 MUSD Stimulation costs: 1514.98 MUSD - Surface power plant costs: 3244.08 MUSD + Surface power plant costs: 4782.88 MUSD Field gathering system costs: 68.88 MUSD Transmission pipeline cost: 2.00 MUSD - Total surface equipment costs: 3312.97 MUSD + Total surface equipment costs: 4851.77 MUSD One-time Flat License Fees Etc: 100.00 MUSD - Total Add-on CAPEX: 562.00 MUSD - Overnight Capital Cost: 7270.57 MUSD - Inflation costs during construction: 884.41 MUSD - Interest during construction: 190.69 MUSD - Total CAPEX: 8345.66 MUSD + Overnight Capital Cost: 8247.37 MUSD + Inflation costs during construction: 1003.23 MUSD + Interest during construction: 216.30 MUSD + Total CAPEX: 9466.90 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** Wellfield maintenance costs: 14.57 MUSD/yr - Power plant maintenance costs: 51.94 MUSD/yr + Power plant maintenance costs: 75.03 MUSD/yr Water costs: 44.89 MUSD/yr Redrilling costs: 186.24 MUSD/yr - Total Add-on OPEX: 0.00 MUSD/yr - Total operating and maintenance costs: 297.65 MUSD/yr + Total operating and maintenance costs: 320.73 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** @@ -231,76 +229,75 @@ 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] (%) 2.68 2.68 2.68 46.0 46.0 -Overnight capital expenditure [construction] ($) -194,890,348 -194,890,348 -194,890,348 -3,342,951,233 -3,342,951,233 +Overnight capital expenditure [construction] ($) -221,073,858 -221,073,858 -221,073,858 -3,792,076,594 -3,792,076,594 plus: -Inflation cost [construction] ($) -5,262,039 -10,666,154 -16,216,179 -375,925,776 -476,335,455 +Inflation cost [construction] ($) -5,968,994 -12,099,151 -18,394,822 -426,431,388 -540,331,104 plus: Royalty supplemental payments [construction] ($) 0 0 0 0 0 equals: -Nominal capital expenditure [construction] ($) -200,152,388 -205,556,502 -211,106,528 -3,718,877,008 -3,819,286,688 +Nominal capital expenditure [construction] ($) -227,042,853 -233,173,010 -239,468,681 -4,218,507,982 -4,332,407,697 -Issuance of equity [construction] ($) 80,060,955 82,222,601 84,442,611 1,487,550,803 1,527,714,675 -Issuance of debt [construction] ($) 120,091,433 123,333,901 126,663,917 2,231,326,205 2,291,572,013 -Debt balance [construction] ($) 120,091,433 250,150,454 390,822,796 2,644,035,077 5,083,673,054 -Debt interest payment [construction] ($) 0 6,725,120 14,008,425 21,886,077 148,065,964 +Issuance of equity [construction] ($) 90,817,141 93,269,204 95,787,472 1,687,403,193 1,732,963,079 +Issuance of debt [construction] ($) 136,225,712 139,903,806 143,681,209 2,531,104,789 2,599,444,618 +Debt balance [construction] ($) 136,225,712 283,758,157 443,329,822 2,999,261,082 5,766,664,320 +Debt interest payment [construction] ($) 0 7,628,640 15,890,457 24,826,470 167,958,621 -Installed cost [construction] ($) -200,152,388 -212,281,622 -225,114,953 -3,740,763,085 -3,967,352,652 -After-tax net cash flow [construction] ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 +Installed cost [construction] ($) -227,042,853 -240,801,649 -255,359,138 -4,243,334,452 -4,500,366,318 +After-tax net cash flow [construction] ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 ENERGY Electricity to grid (kWh) 0.0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 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 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 +Heat provided (kWh) 0 0 0 0 0 2,369,334,002 2,373,805,535 2,375,168,952 2,375,974,120 2,376,516,393 2,376,780,703 2,376,387,308 2,374,341,027 2,368,830,039 2,357,276,431 2,336,728,519 2,337,521,459 2,372,240,406 2,374,484,034 2,375,546,030 2,376,226,852 2,376,671,375 2,376,736,880 2,375,819,978 2,372,599,078 2,364,917,622 2,349,975,622 2,324,849,961 2,360,628,714 2,373,459,934 2,374,995,563 2,375,861,535 2,376,441,500 2,376,765,933 2,376,569,801 + 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 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 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 -Heat provided (kWh) 0 0 0 0 0 2,369,334,002 2,373,805,535 2,375,168,952 2,375,974,120 2,376,516,393 2,376,780,703 2,376,387,308 2,374,341,027 2,368,830,039 2,357,276,431 2,336,728,519 2,337,521,459 2,372,240,406 2,374,484,034 2,375,546,030 2,376,226,852 2,376,671,375 2,376,736,880 2,375,819,978 2,372,599,078 2,364,917,622 2,349,975,622 2,324,849,961 2,360,628,714 2,373,459,934 2,374,995,563 2,375,861,535 2,376,441,500 2,376,765,933 2,376,569,801 - -Add-On Profit 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 Heat price ($/kWh) 0.0 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 Heat revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 Capacity payment revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 -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 4,172,832,350 -Total revenue ($) 0 869,963,097 877,048,087 883,846,159 889,773,632 895,290,600 900,359,769 904,334,112 905,517,245 900,806,605 885,792,240 855,521,104 861,766,087 925,383,166 933,794,552 940,253,991 946,087,931 951,529,076 956,309,822 959,334,340 958,197,165 948,964,571 926,567,069 885,901,922 955,520,329 983,217,780 990,604,170 996,809,414 1,002,509,201 1,007,745,194 5,184,837,184 +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 4,733,452,205 +Total revenue ($) 0 869,963,097 877,048,087 883,846,159 889,773,632 895,290,600 900,359,769 904,334,112 905,517,245 900,806,605 885,792,240 855,521,104 861,766,087 925,383,166 933,794,552 940,253,991 946,087,931 951,529,076 956,309,822 959,334,340 958,197,165 948,964,571 926,567,069 885,901,922 955,520,329 983,217,780 990,604,170 996,809,414 1,002,509,201 1,007,745,194 5,745,457,039 -Property tax net assessed value ($) 0 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 8,345,664,700 +Property tax net assessed value ($) 0 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 OPERATING EXPENSES -O&M fixed expense ($) 0 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 +O&M fixed expense ($) 0 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 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 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 297,646,420 +Total operating expenses ($) 0 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 -EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 OPERATING ACTIVITIES -EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 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 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 -Cash flow from operating activities ($) 0 287,630,986 298,578,328 309,455,043 319,689,564 329,754,774 339,626,887 348,673,139 355,212,208 356,157,435 347,115,667 323,151,592 336,056,833 406,707,143 422,545,622 436,848,072 450,964,230 465,151,398 479,167,944 491,945,466 501,107,465 502,750,797 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 +Debt interest payment ($) 0 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 +Cash flow from operating activities ($) 0 226,301,456 237,767,705 249,192,386 260,005,559 270,681,825 281,199,212 290,926,875 298,185,514 299,890,607 291,651,257 268,534,536 282,334,582 353,929,807 370,766,115 386,122,273 401,351,146 416,713,342 431,970,718 446,058,556 456,604,248 459,708,761 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 INVESTING ACTIVITIES -Total installed cost ($) -8,345,664,700 +Total installed cost ($) -9,466,904,409 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -8,345,664,700 +Purchase of property ($) -9,466,904,409 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 @@ -312,93 +309,93 @@ 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 ($) -8,345,664,700 0 0 0 0 0 0 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 ($) -9,466,904,409 0 0 0 0 0 0 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 ($) 3,261,991,645 -Size of debt ($) 5,083,673,054 +Issuance of equity ($) 3,700,240,089 +Size of debt ($) 5,766,664,320 minus: -Debt principal payment ($) 0 68,970,568 72,832,920 76,911,563 81,218,611 85,766,853 90,569,797 95,641,706 100,997,641 106,653,509 112,626,105 118,933,167 125,593,425 132,626,656 140,053,749 147,896,759 156,178,978 164,925,000 174,160,800 183,913,805 194,212,978 205,088,905 216,573,884 228,702,021 241,509,335 255,033,857 269,315,753 284,397,436 300,323,692 317,141,819 334,901,760 +Debt principal payment ($) 0 78,236,761 82,618,020 87,244,629 92,130,328 97,289,626 102,737,845 108,491,165 114,566,670 120,982,403 127,757,418 134,911,833 142,466,896 150,445,042 158,869,965 167,766,683 177,161,617 187,082,667 197,559,297 208,622,617 220,305,484 232,642,591 245,670,576 259,428,129 273,956,104 289,297,646 305,498,314 322,606,219 340,672,168 359,749,809 379,895,798 equals: -Cash flow from financing activities ($) 8,345,664,700 -68,970,568 -72,832,920 -76,911,563 -81,218,611 -85,766,853 -90,569,797 -95,641,706 -100,997,641 -106,653,509 -112,626,105 -118,933,167 -125,593,425 -132,626,656 -140,053,749 -147,896,759 -156,178,978 -164,925,000 -174,160,800 -183,913,805 -194,212,978 -205,088,905 -216,573,884 -228,702,021 -241,509,335 -255,033,857 -269,315,753 -284,397,436 -300,323,692 -317,141,819 -334,901,760 +Cash flow from financing activities ($) 9,466,904,409 -78,236,761 -82,618,020 -87,244,629 -92,130,328 -97,289,626 -102,737,845 -108,491,165 -114,566,670 -120,982,403 -127,757,418 -134,911,833 -142,466,896 -150,445,042 -158,869,965 -167,766,683 -177,161,617 -187,082,667 -197,559,297 -208,622,617 -220,305,484 -232,642,591 -245,670,576 -259,428,129 -273,956,104 -289,297,646 -305,498,314 -322,606,219 -340,672,168 -359,749,809 -379,895,798 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 287,630,986 298,578,328 309,455,043 319,689,564 329,754,774 339,626,887 348,673,139 355,212,208 356,157,435 347,115,667 323,151,592 336,056,833 406,707,143 422,545,622 436,848,072 450,964,230 465,151,398 479,167,944 491,945,466 501,107,465 502,750,797 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 -Cash flow from investing activities ($) -8,345,664,700 0 0 0 0 0 0 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 ($) 8,345,664,700 -68,970,568 -72,832,920 -76,911,563 -81,218,611 -85,766,853 -90,569,797 -95,641,706 -100,997,641 -106,653,509 -112,626,105 -118,933,167 -125,593,425 -132,626,656 -140,053,749 -147,896,759 -156,178,978 -164,925,000 -174,160,800 -183,913,805 -194,212,978 -205,088,905 -216,573,884 -228,702,021 -241,509,335 -255,033,857 -269,315,753 -284,397,436 -300,323,692 -317,141,819 -334,901,760 -Total pre-tax cash flow ($) 0 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 +Cash flow from operating activities ($) 0 226,301,456 237,767,705 249,192,386 260,005,559 270,681,825 281,199,212 290,926,875 298,185,514 299,890,607 291,651,257 268,534,536 282,334,582 353,929,807 370,766,115 386,122,273 401,351,146 416,713,342 431,970,718 446,058,556 456,604,248 459,708,761 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 +Cash flow from investing activities ($) -9,466,904,409 0 0 0 0 0 0 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 ($) 9,466,904,409 -78,236,761 -82,618,020 -87,244,629 -92,130,328 -97,289,626 -102,737,845 -108,491,165 -114,566,670 -120,982,403 -127,757,418 -134,911,833 -142,466,896 -150,445,042 -158,869,965 -167,766,683 -177,161,617 -187,082,667 -197,559,297 -208,622,617 -220,305,484 -232,642,591 -245,670,576 -259,428,129 -273,956,104 -289,297,646 -305,498,314 -322,606,219 -340,672,168 -359,749,809 -379,895,798 +Total pre-tax cash flow ($) 0 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 Pre-tax Returns: -Issuance of equity ($) 3,261,991,645 -Total pre-tax cash flow ($) 0 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 -Total pre-tax returns ($) -3,261,991,645 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 +Issuance of equity ($) 3,700,240,089 +Total pre-tax cash flow ($) 0 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 +Total pre-tax returns ($) -3,700,240,089 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 After-tax Returns: -Total pre-tax returns ($) -3,261,991,645 218,660,418 225,745,408 232,543,480 238,470,954 243,987,921 249,057,090 253,031,433 254,214,567 249,503,927 234,489,561 204,218,425 210,463,408 274,080,487 282,491,873 288,951,312 294,785,252 300,226,398 305,007,143 308,031,661 306,894,486 297,661,892 275,264,390 234,599,243 304,217,651 331,915,101 339,301,492 345,506,736 351,206,522 356,442,515 4,533,534,505 -Federal ITC total income ($) 0 3,338,265,880 0 0 0 0 0 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 ($) -3,700,240,089 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 +Federal ITC total income ($) 0 3,786,761,764 0 0 0 0 0 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,576,165 6,883,985 4,759,763 2,760,961 795,225 -1,132,798 -2,899,531 -4,176,611 -4,361,215 -2,595,357 2,084,827 -435,567 -14,233,572 -17,326,827 -20,120,096 -22,876,981 -25,647,735 -28,385,167 -30,880,617 -32,669,955 -65,589,064 -96,056,015 -90,482,737 -106,580,480 -114,631,132 -118,862,948 -123,020,285 -127,243,851 -131,551,020 -950,805,603 +Federal tax benefit (liability) ($) 0 -7,218,946 27,519,424 25,288,184 23,176,372 21,091,297 19,037,251 17,137,439 15,719,826 15,386,822 16,995,967 21,510,662 18,815,513 4,832,966 1,544,835 -1,454,223 -4,428,422 -7,428,659 -10,408,424 -13,159,779 -15,219,352 -52,803,392 -87,951,254 -82,696,201 -99,129,990 -107,535,505 -112,142,057 -116,695,115 -121,336,564 -126,085,016 -1,055,294,651 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,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 -Total after-tax returns ($) -3,261,991,645 3,524,899,894 235,096,772 239,009,251 242,221,506 245,068,173 247,518,270 249,092,643 248,540,962 243,579,553 230,963,969 207,050,501 209,871,724 254,745,276 258,954,713 261,619,713 263,708,636 265,385,925 266,448,082 266,082,722 262,514,870 208,564,202 144,779,696 111,685,418 159,436,281 176,197,543 177,835,337 178,393,159 178,355,557 177,740,592 3,241,938,364 +State tax benefit (liability) ($) 0 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 +Total after-tax returns ($) -3,700,240,089 3,925,020,078 192,532,703 196,299,807 199,358,546 202,043,100 204,322,006 205,715,600 204,973,017 199,810,015 186,981,550 162,843,280 165,427,111 210,049,976 213,994,690 216,380,140 218,173,860 219,539,415 220,272,379 219,559,393 215,624,446 155,336,830 85,193,666 51,667,104 98,961,476 115,240,682 116,369,426 116,389,691 115,784,429 114,570,014 3,590,022,175 -After-tax net cash flow ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 3,524,899,894 235,096,772 239,009,251 242,221,506 245,068,173 247,518,270 249,092,643 248,540,962 243,579,553 230,963,969 207,050,501 209,871,724 254,745,276 258,954,713 261,619,713 263,708,636 265,385,925 266,448,082 266,082,722 262,514,870 208,564,202 144,779,696 111,685,418 159,436,281 176,197,543 177,835,337 178,393,159 178,355,557 177,740,592 3,241,938,364 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 4.67 8.35 11.40 13.80 15.66 17.08 18.17 18.99 19.62 20.08 20.40 20.66 20.91 21.11 21.28 21.41 21.51 21.60 21.66 21.72 21.75 21.77 21.79 21.80 21.81 21.82 21.83 21.84 21.85 21.93 -After-tax cumulative NPV ($) -80,060,955 -151,543,951 -215,368,054 -1,192,844,740 -2,065,591,782 -314,921,110 -213,409,464 -123,688,187 -44,637,623 24,895,336 85,950,528 139,368,546 185,706,450 225,187,688 257,734,294 283,100,137 305,453,273 329,041,876 349,888,293 368,198,346 384,243,911 398,282,392 410,536,066 421,174,604 430,299,559 436,602,280 440,405,992 442,956,977 446,122,971 449,164,796 451,833,892 454,161,638 456,184,917 457,937,858 485,734,792 +After-tax net cash flow ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 3,925,020,078 192,532,703 196,299,807 199,358,546 202,043,100 204,322,006 205,715,600 204,973,017 199,810,015 186,981,550 162,843,280 165,427,111 210,049,976 213,994,690 216,380,140 218,173,860 219,539,415 220,272,379 219,559,393 215,624,446 155,336,830 85,193,666 51,667,104 98,961,476 115,240,682 116,369,426 116,389,691 115,784,429 114,570,014 3,590,022,175 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 3.54 6.30 8.70 10.69 12.29 13.58 14.60 15.40 16.01 16.48 16.80 17.07 17.35 17.58 17.77 17.92 18.05 18.16 18.24 18.31 18.36 18.37 18.38 18.40 18.42 18.43 18.44 18.45 18.46 18.65 +After-tax cumulative NPV ($) -90,817,141 -171,903,874 -244,302,743 -1,353,103,382 -2,343,103,953 -393,710,284 -310,577,235 -236,888,583 -171,826,626 -114,501,129 -64,101,135 -19,985,341 18,229,767 50,616,504 76,965,267 96,915,264 114,534,669 133,984,629 151,211,666 166,355,525 179,630,490 191,243,765 201,373,866 210,152,305 217,647,360 222,341,573 224,579,815 225,759,934 227,725,054 229,714,537 231,461,103 232,979,803 234,293,270 235,423,200 266,204,665 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -80,060,955 -82,222,601 -84,442,611 -1,487,550,803 -1,527,714,675 2,654,936,797 -641,951,315 -644,836,908 -647,552,126 -650,222,427 -652,841,498 -655,241,469 -656,976,284 -657,227,053 -654,828,271 -648,470,602 -651,894,363 -670,637,890 -674,839,839 -678,634,278 -682,379,295 -686,143,151 -689,861,741 -693,251,617 -695,682,295 -740,400,368 -781,787,373 -774,216,504 -796,084,048 -807,020,238 -812,768,834 -818,416,255 -824,153,645 -830,004,603 2,229,933,530 +Annual costs ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 3,055,056,981 -684,515,384 -687,546,352 -690,415,087 -693,247,500 -696,037,763 -698,618,512 -700,544,229 -700,996,590 -698,810,690 -692,677,824 -696,338,976 -715,333,190 -719,799,862 -723,873,851 -727,914,071 -731,989,662 -736,037,443 -739,774,947 -742,572,719 -793,627,741 -841,373,403 -834,234,818 -856,558,853 -867,977,098 -874,234,745 -880,419,723 -886,724,773 -893,175,180 2,578,017,341 PPA revenue ($) 0 0 0 0 0 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 Electricity to grid (kWh) 0 0 0 0 0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 -Present value of annual costs ($) 2,870,779,026 +Present value of annual costs ($) 3,090,309,154 -Present value of annual energy costs ($) 2,769,785,053 +Present value of annual energy costs ($) 2,728,742,983 Present value of annual energy nominal (kWh) 30,167,357,656 -LCOE Levelized cost of energy nominal (cents/kWh) 9.18 +LCOE Levelized cost of energy nominal (cents/kWh) 9.05 Present value of PPA revenue ($) 2,956,972,031 Present value of annual energy nominal (kWh) 30,167,357,656 LPPA Levelized PPA price nominal (cents/kWh) 9.80 -Present value of annual heat costs ($) 100,993,973 +Present value of annual heat costs ($) 361,566,171 Present value of annual heat provided (MMBTU) 30,295,399 -LCOH Levelized cost of heating nominal ($/MMBTU) 3.33 +LCOH Levelized cost of heating nominal ($/MMBTU) 11.93 PROJECT STATE INCOME TAXES -EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 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 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 -Total state tax depreciation ($) 0 166,913,294 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 166,913,294 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 +Total state tax depreciation ($) 0 189,338,088 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 189,338,088 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 120,717,692 -35,248,260 -24,371,545 -14,137,024 -4,071,814 5,800,299 14,846,551 21,385,620 22,330,847 13,289,079 -10,674,996 2,230,245 72,880,555 88,719,034 103,021,484 117,137,642 131,324,810 145,341,356 158,118,878 167,280,877 335,837,503 491,838,274 463,301,265 545,726,985 586,948,959 608,617,245 629,904,171 651,530,214 673,584,334 4,868,436,265 +State taxable income ($) 0 36,963,368 -140,908,471 -129,483,791 -118,670,618 -107,994,352 -97,476,964 -87,749,301 -80,490,663 -78,785,569 -87,024,920 -110,141,641 -96,341,595 -24,746,370 -7,910,061 7,446,096 22,674,970 38,037,166 53,294,541 67,382,379 77,928,072 270,370,672 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 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,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 +State tax benefit (liability) ($) 0 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 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,450,238 2,467,378 1,706,008 989,592 285,027 -406,021 -1,039,259 -1,496,993 -1,563,159 -930,236 747,250 -156,117 -5,101,639 -6,210,332 -7,211,504 -8,199,635 -9,192,737 -10,173,895 -11,068,321 -11,709,661 -23,508,625 -34,428,679 -32,431,089 -38,200,889 -41,086,427 -42,603,207 -44,093,292 -45,607,115 -47,150,903 -340,790,539 +State tax benefit (liability) ($) 0 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 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 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 -Total federal tax depreciation ($) 0 166,913,294 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 333,826,588 166,913,294 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 +Total federal tax depreciation ($) 0 189,338,088 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 189,338,088 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 112,267,454 -32,780,882 -22,665,537 -13,147,432 -3,786,787 5,394,278 13,807,292 19,888,626 20,767,688 12,358,843 -9,927,746 2,074,128 67,778,916 82,508,702 95,809,980 108,938,007 122,132,073 135,167,461 147,050,557 155,571,216 312,328,878 457,409,594 430,870,176 507,526,096 545,862,532 566,014,038 585,810,879 605,923,099 626,433,431 4,527,645,727 +Federal taxable income ($) 0 34,375,932 -131,044,878 -120,419,925 -110,363,674 -100,434,747 -90,653,576 -81,606,850 -74,856,316 -73,270,579 -80,933,175 -102,431,726 -89,597,683 -23,014,124 -7,356,357 6,924,869 21,087,722 35,374,564 49,563,923 62,665,613 72,473,106 251,444,725 418,815,496 393,791,434 472,047,569 512,073,833 534,009,797 555,691,026 577,793,160 600,404,840 5,025,212,625 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,576,165 6,883,985 4,759,763 2,760,961 795,225 -1,132,798 -2,899,531 -4,176,611 -4,361,215 -2,595,357 2,084,827 -435,567 -14,233,572 -17,326,827 -20,120,096 -22,876,981 -25,647,735 -28,385,167 -30,880,617 -32,669,955 -65,589,064 -96,056,015 -90,482,737 -106,580,480 -114,631,132 -118,862,948 -123,020,285 -127,243,851 -131,551,020 -950,805,603 +Federal tax benefit (liability) ($) 0 -7,218,946 27,519,424 25,288,184 23,176,372 21,091,297 19,037,251 17,137,439 15,719,826 15,386,822 16,995,967 21,510,662 18,815,513 4,832,966 1,544,835 -1,454,223 -4,428,422 -7,428,659 -10,408,424 -13,159,779 -15,219,352 -52,803,392 -87,951,254 -82,696,201 -99,129,990 -107,535,505 -112,142,057 -116,695,115 -121,336,564 -126,085,016 -1,055,294,651 CASH INCENTIVES Federal IBI income ($) 0 @@ -424,30 +421,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 3,338,265,880 0 0 0 0 0 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 3,338,265,880 0 0 0 0 0 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 3,786,761,764 0 0 0 0 0 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 3,786,761,764 0 0 0 0 0 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 ($) 5,083,673,054 5,014,702,486 4,941,869,566 4,864,958,003 4,783,739,392 4,697,972,539 4,607,402,742 4,511,761,037 4,410,763,396 4,304,109,887 4,191,483,781 4,072,550,614 3,946,957,189 3,814,330,533 3,674,276,784 3,526,380,025 3,370,201,047 3,205,276,046 3,031,115,246 2,847,201,441 2,652,988,462 2,447,899,557 2,231,325,673 2,002,623,652 1,761,114,317 1,506,080,460 1,236,764,707 952,367,271 652,043,579 334,901,760 0 -Debt interest payment ($) 0 284,685,691 280,823,339 276,744,696 272,437,648 267,889,406 263,086,462 258,014,554 252,658,618 247,002,750 241,030,154 234,723,092 228,062,834 221,029,603 213,602,510 205,759,500 197,477,281 188,731,259 179,495,459 169,742,454 159,443,281 148,567,354 137,082,375 124,954,238 112,146,924 98,622,402 84,340,506 69,258,824 53,332,567 36,514,440 18,754,499 -Debt principal payment ($) 0 68,970,568 72,832,920 76,911,563 81,218,611 85,766,853 90,569,797 95,641,706 100,997,641 106,653,509 112,626,105 118,933,167 125,593,425 132,626,656 140,053,749 147,896,759 156,178,978 164,925,000 174,160,800 183,913,805 194,212,978 205,088,905 216,573,884 228,702,021 241,509,335 255,033,857 269,315,753 284,397,436 300,323,692 317,141,819 334,901,760 -Debt total payment ($) 0 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 +Debt balance ($) 5,766,664,320 5,688,427,559 5,605,809,540 5,518,564,911 5,426,434,583 5,329,144,957 5,226,407,111 5,117,915,947 5,003,349,277 4,882,366,873 4,754,609,455 4,619,697,622 4,477,230,726 4,326,785,683 4,167,915,719 4,000,149,036 3,822,987,419 3,635,904,752 3,438,345,455 3,229,722,837 3,009,417,353 2,776,774,762 2,531,104,186 2,271,676,057 1,997,719,953 1,708,422,308 1,402,923,994 1,080,317,775 739,645,607 379,895,798 0 +Debt interest payment ($) 0 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 +Debt principal payment ($) 0 78,236,761 82,618,020 87,244,629 92,130,328 97,289,626 102,737,845 108,491,165 114,566,670 120,982,403 127,757,418 134,911,833 142,466,896 150,445,042 158,869,965 167,766,683 177,161,617 187,082,667 197,559,297 208,622,617 220,305,484 232,642,591 245,670,576 259,428,129 273,956,104 289,297,646 305,498,314 322,606,219 340,672,168 359,749,809 379,895,798 +Debt total payment ($) 0 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 DSCR (DEBT FRACTION) -EBITDA ($) 0 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 +EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 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 572,316,677 579,401,667 586,199,739 592,127,213 597,644,180 602,713,349 606,687,692 607,870,826 603,160,186 588,145,820 557,874,684 564,119,667 627,736,746 636,148,132 642,607,572 648,441,511 653,882,657 658,663,402 661,687,920 660,550,746 651,318,151 628,920,649 588,255,502 657,873,910 685,571,360 692,957,751 699,162,995 704,862,782 710,098,774 4,887,190,764 -Debt total payment ($) 0 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 353,656,259 -DSCR (pre-tax) 0.0 1.62 1.64 1.66 1.67 1.69 1.70 1.72 1.72 1.71 1.66 1.58 1.60 1.77 1.80 1.82 1.83 1.85 1.86 1.87 1.87 1.84 1.78 1.66 1.86 1.94 1.96 1.98 1.99 2.01 13.82 +Cash available for debt service (CAFDS) ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +Debt total payment ($) 0 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 +DSCR (pre-tax) 0.0 1.37 1.39 1.40 1.42 1.43 1.44 1.45 1.46 1.45 1.41 1.33 1.35 1.51 1.53 1.54 1.56 1.57 1.58 1.59 1.59 1.57 1.51 1.41 1.58 1.65 1.67 1.69 1.70 1.71 13.52 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/example14_data-center.txt b/tests/examples/example14_data-center.txt index e95d42018..b77090418 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -32,7 +32,8 @@ Property Tax Rate, 0 One-time Flat License Fees Etc, 100, -- Permitting & Land Acquisition = $100M Exploration Capital Cost, 500 -Surface Plant Capital Cost Adjustment Factor, 1.0581, -- $4.225B power plant cost +Surface Plant Capital Cost Adjustment Factor, 1.56, -- Yields $4.225B power plant cost + $562M absorption chiller in conjunction with CHP Electrical Plant Cost Allocation Ratio value +CHP Electrical Plant Cost Allocation Ratio, 0.883 Well Drilling Cost Correlation, 3, -- VERTICAL_LARGE (2025 NREL Geothermal Drilling Cost Curve Update) Well Drilling and Completion Capital Cost Adjustment Factor, 0.713, -- Based on $12,257,861.64/well with 46% drilling cost ratio @@ -51,11 +52,6 @@ Construction CAPEX Schedule, 0.0268, 0.0268, 0.0268, 0.4597, 0.4597, -- 3-year d End-Use Option, 31, -- CHP: Cogeneration topping cycle A power plant is followed by a direct-use heat application in series. Heat at high temperatures from the geothermal fluid is first converted into electricity. Any remaining heat in the geothermal fluid after leaving the power plant is supplied to a low-temperature direct-use heat application. Power Plant Type, 2, -- Supercritical ORC -AddOn Nickname 1, Absorption Chiller -AddOn CAPEX 1, 562 -AddOn Profit Gained 1, 0, -- Note that revenue is modeled as heat sales, not add-on profit. -AddOn OPEX 1, 0 - Plant Lifetime, 30 Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) From 5619b04e4d95c06899d3fcbcea20de15f56ab325 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 09:29:18 -0700 Subject: [PATCH 067/127] output Allocated CAPEX per kW{e,th} for CHP --- src/geophires_x/Economics.py | 55 +++++++++++++++++-- src/geophires_x/Outputs.py | 13 ++++- src/geophires_x/SurfacePlant.py | 10 ++++ src/geophires_x_client/geophires_x_result.py | 2 + .../geophires-result.json | 16 +++++- tests/examples/example14_data-center.out | 7 ++- .../example_SAM-single-owner-PPA-7_chp.out | 9 +-- 7 files changed, 97 insertions(+), 15 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 74b52fdac..f76f16726 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2140,7 +2140,7 @@ def __init__(self, model: Model): CurrentUnits=CurrencyUnit.MDOLLARS, ) self.capex_total = self.OutputParameterDict[self.capex_total.Name] = total_capex_parameter_output_parameter() - self.capex_total_per_kw = self.OutputParameterDict[self.capex_total_per_kw.Name] = OutputParameter( + self.capex_total_per_kwe = self.OutputParameterDict[self.capex_total_per_kwe.Name] = OutputParameter( Name="Total CAPEX ($/kW)", UnitType=Units.ENERGYCOST, PreferredUnits=EnergyCostUnit.DOLLARSPERKW, @@ -2151,6 +2151,26 @@ def __init__(self, model: Model): 'It reflects all direct and indirect costs, contingency, and applicable cost escalations ' 'included in the base Total CAPEX.', ) + self.capex_allocated_per_kwe = self.OutputParameterDict[self.capex_allocated_per_kwe.Name] = OutputParameter( + Name="Allocated CAPEX ($/kWe)", + UnitType=Units.ENERGYCOST, + PreferredUnits=EnergyCostUnit.DOLLARSPERKW, + CurrentUnits=EnergyCostUnit.DOLLARSPERKW, + ToolTipText='The portion of total capital expenditure (CAPEX) allocated specifically ' + 'to electricity generation, normalized per kilowatt of net electrical capacity (kWe). ' + 'In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the ' + 'electrical plant cost allocation ratio, divided by the maximum net electricity generation.' + ) + self.capex_allocated_per_kwth = self.OutputParameterDict[self.capex_allocated_per_kwth.Name] =OutputParameter( + Name="Allocated CAPEX ($/kWth)", + UnitType=Units.ENERGYCOST, + PreferredUnits=EnergyCostUnit.DOLLARSPERKW, + CurrentUnits=EnergyCostUnit.DOLLARSPERKW, + ToolTipText='The portion of total capital expenditure (CAPEX) allocated specifically to direct-use heat ' + 'production, normalized per kilowatt of net thermal capacity (kWth). In cogeneration (CHP) ' + 'scenarios, this is calculated by multiplying the Total CAPEX by the thermal plant cost ' + 'allocation ratio (1 minus the electrical ratio), divided by the maximum net heat production.' + ) self.chp_percent_cost_allocation_for_electrical_plant = self.OutputParameterDict[self.chp_percent_cost_allocation_for_electrical_plant.Name] = OutputParameter( Name='CHP: Percent cost allocation for electrical plant', @@ -3656,10 +3676,37 @@ def _calculate_sam_economics(self, model: Model) -> None: self.capex_total.value = (self.sam_economics_calculations.capex.quantity() .to(self.capex_total.CurrentUnits.value).magnitude) - if model.surfaceplant.enduse_option.value.has_electricity_component: + def _calculate_capex_per_kw_outputs() -> None: max_net_electricity_generation_kw = model.surfaceplant.NetElectricityProducedMax.quantity().to('kW') - capex_total_per_kw_q = self.capex_total.quantity().to('USD') / max_net_electricity_generation_kw - self.capex_total_per_kw.value = capex_total_per_kw_q.magnitude + + if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY: + capex_total_per_kw_q = self.capex_total.quantity().to('USD') / max_net_electricity_generation_kw + self.capex_total_per_kwe.value = capex_total_per_kw_q.to( + self.capex_total_per_kwe.CurrentUnits.value).magnitude + + elif model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: + capex_allocated_per_kwe_q = ( + self.capex_total.quantity().to('USD') * + self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude / + max_net_electricity_generation_kw + ) + self.capex_allocated_per_kwe.value = capex_allocated_per_kwe_q.to( + self.capex_allocated_per_kwe.CurrentUnits.value).magnitude + + + capex_allocated_per_kwth_q = ( + self.capex_total.quantity().to('USD') * + (1. - self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude) / + model.surfaceplant.HeatProducedMax.quantity().to('kW') + ) + self.capex_allocated_per_kwth.value = capex_allocated_per_kwth_q.to( + self.capex_allocated_per_kwth.CurrentUnits.value).magnitude + + elif model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: + pass # TODO add corresponding output parameter + + + _calculate_capex_per_kw_outputs() self.CCap.value = (self.sam_economics_calculations.capex.quantity() .to(self.CCap.CurrentUnits.value).magnitude) diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 948c18d38..bca878496 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -222,8 +222,15 @@ def PrintOutputs(self, model: Model): if is_sam_econ_model: f.write(f' {Outputs._field_label(econ.capex_total.display_name, 50)}{econ.capex_total.value:10.2f} {econ.capex_total.CurrentUnits.value}\n') - if model.surfaceplant.enduse_option.value.has_electricity_component: - f.write(f' {Outputs._field_label(econ.capex_total_per_kw.display_name, 50)}{econ.capex_total_per_kw.value:10.0f} {econ.capex_total_per_kw.CurrentUnits.value}\n') + + capex_per_kw_output_params: list[OutputParameter] = [econ.capex_total_per_kwe] \ + if model.surfaceplant.enduse_option.value == EndUseOptions.ELECTRICITY \ + else [econ.capex_allocated_per_kwe, econ.capex_allocated_per_kwth] \ + if model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option \ + else [] # TODO add heat-only CAPEX per kWth output parameter + + for capex_per_kw_output_param in capex_per_kw_output_params: + f.write(f' {Outputs._field_label(capex_per_kw_output_param.display_name, 50)}{capex_per_kw_output_param.value:10.0f} {capex_per_kw_output_param.CurrentUnits.value}\n') f.write(f' Number of production wells: {model.wellbores.nprod.value:10.0f}'+NL) f.write(f' Number of injection wells: {model.wellbores.ninj.value:10.0f}'+NL) @@ -621,8 +628,8 @@ def PrintOutputs(self, model: Model): f.write(f' Initial pumping power/net installed power: {(ipp_nip*100):10.2f} %\n') if model.surfaceplant.enduse_option.value.has_direct_use_heat_component or model.surfaceplant.plant_type.value in [PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP]: + f.write(f' {model.surfaceplant.HeatProducedMax.display_name}: {model.surfaceplant.HeatProducedMax.value:10.2f} {model.surfaceplant.HeatProduced.CurrentUnits.value}\n') # FIXME should be CurrentUnits instead of PreferredUnits - f.write(f' Maximum Net Heat Production: {np.max(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Average Net Heat Production: {np.average(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Minimum Net Heat Production: {np.min(model.surfaceplant.HeatProduced.value):10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) f.write(f' Initial Net Heat Production: {model.surfaceplant.HeatProduced.value[0]:10.2f} ' + model.surfaceplant.HeatProduced.PreferredUnits.value + NL) diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index 53885b0c0..5e1507fb1 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -596,6 +596,12 @@ def __init__(self, model: Model): PreferredUnits=PowerUnit.MW, CurrentUnits=PowerUnit.MW ) + self.HeatProducedMax = self.OutputParameterDict[self.HeatProduced.Name] = OutputParameter( + Name="Maximum Net Heat Production", + UnitType=Units.POWER, + PreferredUnits=PowerUnit.MW, + CurrentUnits=PowerUnit.MW + ) self.HeatkWhProduced = self.OutputParameterDict[self.HeatkWhProduced.Name] = OutputParameter( Name="Heat Produced in kWh", # display_name='Average Annual Heat Production', @@ -762,3 +768,7 @@ def _calculate_derived_outputs(self, model: Model) -> None: self.NetElectricityProducedMax.value = np.max(self.NetElectricityProduced.quantity()).to( self.NetElectricityProducedMax.CurrentUnits).magnitude + + if model.surfaceplant.enduse_option.value.has_direct_use_heat_component or model.surfaceplant.plant_type.value in [ + PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP]: + self.HeatProducedMax.value = np.max(model.surfaceplant.HeatProduced.value) \ No newline at end of file diff --git a/src/geophires_x_client/geophires_x_result.py b/src/geophires_x_client/geophires_x_result.py index 4cc616ed4..d4a3fdf8c 100644 --- a/src/geophires_x_client/geophires_x_result.py +++ b/src/geophires_x_client/geophires_x_result.py @@ -45,6 +45,8 @@ class GeophiresXResult: 'Electricity breakeven price', 'Total CAPEX', 'Total CAPEX ($/kW)', + 'Allocated CAPEX ($/kWe)', + 'Allocated CAPEX ($/kWth)', 'Average Direct-Use Heat Production', 'Direct-Use heat breakeven price', 'Direct-Use heat breakeven price (LCOH)', diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index c02a51b57..6fab9f6ec 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -32,6 +32,16 @@ "description": "The total capital expenditure (CAPEX) required to construct the plant, normalized per kilowatt of capacity. This metric is calculated based on the maximum net electricity generation of the facility. It reflects all direct and indirect costs, contingency, and applicable cost escalations included in the base Total CAPEX.", "units": "USD/kW" }, + "Allocated CAPEX ($/kWe)": { + "type": "number", + "description": "The portion of total capital expenditure (CAPEX) allocated specifically to electricity generation, normalized per kilowatt of net electrical capacity (kWe). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the electrical plant cost allocation ratio, divided by the maximum net electricity generation.", + "units": "USD/kW" + }, + "Allocated CAPEX ($/kWth)": { + "type": "number", + "description": "The portion of total capital expenditure (CAPEX) allocated specifically to direct-use heat production, normalized per kilowatt of net thermal capacity (kWth). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the thermal plant cost allocation ratio (1 minus the electrical ratio), divided by the maximum net heat production.", + "units": "USD/kW" + }, "Average Direct-Use Heat Production": {}, "Direct-Use heat breakeven price": {}, "Direct-Use heat breakeven price (LCOH)": { @@ -579,7 +589,11 @@ "Initial Net Electricity Generation": {}, "Average Annual Total Electricity Generation": {}, "Average Annual Net Electricity Generation": {}, - "Maximum Net Heat Production": {}, + "Maximum Net Heat Production": { + "type": "number", + "description": "Heat Produced in MW", + "units": "MW" + }, "Average Net Heat Production": {}, "Minimum Net Heat Production": {}, "Initial Net Heat Production": {}, diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index f46f67ead..c9b591a5e 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-03 - Simulation Time: 08:38 - Calculation Time: 1.811 sec + Simulation Time: 09:28 + Calculation Time: 1.908 sec ***SUMMARY OF RESULTS*** @@ -17,7 +17,8 @@ Simulation Metadata Electricity breakeven price: 9.05 cents/kWh Direct-Use heat breakeven price (LCOH): 11.93 USD/MMBTU Total CAPEX: 9466.90 MUSD - Total CAPEX ($/kW): 9146 USD/kW + Allocated CAPEX ($/kWe): 8076 USD/kW + Allocated CAPEX ($/kWth): 3674 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 2fa29c5eb..2d1d5820d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-02 - Simulation Time: 12:58 - Calculation Time: 1.784 sec + Simulation Date: 2026-04-03 + Simulation Time: 09:28 + Calculation Time: 2.361 sec ***SUMMARY OF RESULTS*** @@ -17,7 +17,8 @@ Simulation Metadata Electricity breakeven price: 9.11 cents/kWh Direct-Use heat breakeven price (LCOH): 3.30 USD/MMBTU Total CAPEX: 278.39 MUSD - Total CAPEX ($/kW): 6082 USD/kW + Allocated CAPEX ($/kWe): 5374 USD/kW + Allocated CAPEX ($/kWth): 667 USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec From bc09a4ebff46cc2cc38ce0e7be022a19e5a0f2ec Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 09:34:51 -0700 Subject: [PATCH 068/127] decrease example_SAM-single-owner-PPA-7_chp injection temperature to yield non-trivial differential between power plant exit temperature (reinjtemp) and injection temperature, and also more direct-use heat production --- .../example_SAM-single-owner-PPA-7_chp.out | 506 +++++++++--------- .../example_SAM-single-owner-PPA-7_chp.txt | 4 +- 2 files changed, 255 insertions(+), 255 deletions(-) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 2d1d5820d..9078a6616 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,19 +6,19 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-03 - Simulation Time: 09:28 - Calculation Time: 2.361 sec + Simulation Time: 09:33 + Calculation Time: 1.795 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 45.52 MW - Average Direct-Use Heat Production: 48.48 MW - Electricity breakeven price: 9.11 cents/kWh - Direct-Use heat breakeven price (LCOH): 3.30 USD/MMBTU - Total CAPEX: 278.39 MUSD - Allocated CAPEX ($/kWe): 5374 USD/kW - Allocated CAPEX ($/kWth): 667 USD/kW + Average Direct-Use Heat Production: 62.20 MW + Electricity breakeven price: 9.07 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.28 USD/MMBTU + Total CAPEX: 283.80 MUSD + Allocated CAPEX ($/kWe): 5304 USD/kW + Allocated CAPEX ($/kWth): 658 USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec @@ -36,15 +36,15 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.57 % - Investment Tax Credit: 83.52 MUSD + Investment Tax Credit: 85.14 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 38.30 MUSD - After-tax IRR: 25.39 % - Project VIR=PI=PIR: 1.48 - Project MOIC: 5.02 - Project Payback Period: 4.00 yr - CHP: Percent cost allocation for electrical plant: 88.37 % + Project NPV: 46.59 MUSD + After-tax IRR: 27.05 % + Project VIR=PI=PIR: 1.57 + Project MOIC: 5.49 + Project Payback Period: 3.98 yr + CHP: Percent cost allocation for electrical plant: 85.55 % ***ENGINEERING PARAMETERS*** @@ -53,7 +53,7 @@ Simulation Metadata Well depth: 2.7 kilometer Water loss rate: 1.0 % Pump efficiency: 80.0 % - Injection temperature: 56.6 degC + Injection temperature: 50.5 degC Production Wellbore heat transmission calculated with Ramey's model Average production well temperature drop: 0.3 degC Flowrate per production well: 100.0 kg/sec @@ -100,13 +100,13 @@ Simulation Metadata Maximum Production Temperature: 203.1 degC Average Production Temperature: 202.8 degC - Minimum Production Temperature: 201.4 degC + Minimum Production Temperature: 201.3 degC Initial Production Temperature: 201.6 degC - Average Reservoir Heat Extraction: 367.18 MW + Average Reservoir Heat Extraction: 382.08 MW Production Wellbore Heat Transmission Model = Ramey Model Average Production Well Temperature Drop: 0.3 degC - Average Injection Well Pump Pressure Drop: -1925.9 kPa - Average Production Well Pump Pressure Drop: 9514.6 kPa + Average Injection Well Pump Pressure Drop: -2003.9 kPa + Average Production Well Pump Pressure Drop: 9514.2 kPa ***CAPITAL COSTS (M$)*** @@ -115,44 +115,44 @@ Simulation Metadata Drilling and completion costs: 46.49 MUSD Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 48.30 MUSD - Surface power plant costs: 149.30 MUSD + Surface power plant costs: 154.20 MUSD Field gathering system costs: 3.20 MUSD - Total surface equipment costs: 152.50 MUSD - Overnight Capital Cost: 251.99 MUSD - Inflation costs during construction: 16.14 MUSD - Interest during construction: 10.26 MUSD - Total CAPEX: 278.39 MUSD + Total surface equipment costs: 157.40 MUSD + Overnight Capital Cost: 256.90 MUSD + Inflation costs during construction: 16.45 MUSD + Interest during construction: 10.46 MUSD + Total CAPEX: 283.80 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** - Wellfield maintenance costs: 1.11 MUSD/yr - Power plant maintenance costs: 4.08 MUSD/yr + Wellfield maintenance costs: 1.12 MUSD/yr + Power plant maintenance costs: 4.17 MUSD/yr Water costs: 0.16 MUSD/yr Redrilling costs: 9.48 MUSD/yr - Total operating and maintenance costs: 14.82 MUSD/yr + Total operating and maintenance costs: 14.92 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** Initial geofluid availability: 0.19 MW/(kg/s) Maximum Total Electricity Generation: 53.91 MW Average Total Electricity Generation: 53.66 MW - Minimum Total Electricity Generation: 52.48 MW + Minimum Total Electricity Generation: 52.44 MW Initial Total Electricity Generation: 52.69 MW - Maximum Net Electricity Generation: 45.78 MW + Maximum Net Electricity Generation: 45.77 MW Average Net Electricity Generation: 45.52 MW - Minimum Net Electricity Generation: 44.31 MW + Minimum Net Electricity Generation: 44.27 MW Initial Net Electricity Generation: 44.54 MW - Average Annual Total Electricity Generation: 423.11 GWh - Average Annual Net Electricity Generation: 358.92 GWh + Average Annual Total Electricity Generation: 423.07 GWh + Average Annual Net Electricity Generation: 358.89 GWh Initial pumping power/net installed power: 18.30 % - Maximum Net Heat Production: 48.54 MW - Average Net Heat Production: 48.48 MW - Minimum Net Heat Production: 48.19 MW - Initial Net Heat Production: 48.24 MW - Average Annual Heat Production: 382.23 GWh + Maximum Net Heat Production: 62.26 MW + Average Net Heat Production: 62.20 MW + Minimum Net Heat Production: 61.90 MW + Initial Net Heat Production: 61.96 MW + Average Annual Heat Production: 490.38 GWh Average Pumping Power: 8.14 MW - Heat to Power Conversion Efficiency: 14.53 % + Heat to Power Conversion Efficiency: 14.54 % ************************************************************ * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * @@ -160,36 +160,36 @@ Simulation Metadata YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY (deg C) (MW) (MW) (MW) (%) - 0 1.0000 201.65 8.1512 44.5390 48.2413 14.3403 - 1 1.0052 202.70 8.1476 45.4029 48.4539 14.5061 - 2 1.0062 202.90 8.1469 45.5643 48.4934 14.5369 - 3 1.0067 203.00 8.1466 45.6484 48.5139 14.5529 - 4 1.0070 203.06 8.1463 45.7040 48.5275 14.5635 - 5 1.0073 203.11 8.1462 45.7447 48.5374 14.5713 - 6 1.0074 203.14 8.1463 45.7638 48.5421 14.5749 - 7 1.0066 202.98 8.1488 45.6301 48.5100 14.5492 - 8 1.0008 201.81 8.1651 44.6594 48.2747 14.3616 - 9 1.0048 202.61 8.1453 45.3308 48.4357 14.4926 - 10 1.0060 202.86 8.1444 45.5376 48.4862 14.5321 - 11 1.0066 202.98 8.1429 45.6346 48.5097 14.5508 - 12 1.0070 203.05 8.1409 45.6973 48.5245 14.5629 - 13 1.0072 203.10 8.1389 45.7429 48.5352 14.5719 - 14 1.0074 203.14 8.1373 45.7725 48.5421 14.5777 - 15 1.0070 203.06 8.1377 45.7091 48.5266 14.5656 - 16 1.0032 202.29 8.1481 45.0686 48.3717 14.4422 - 17 1.0041 202.47 8.1350 45.2277 48.4077 14.4743 - 18 1.0058 202.82 8.1348 45.5126 48.4777 14.5286 - 19 1.0065 202.95 8.1348 45.6234 48.5049 14.5497 - 20 1.0069 203.03 8.1348 45.6903 48.5213 14.5624 - 21 1.0072 203.09 8.1348 45.7373 48.5328 14.5713 - 22 1.0074 203.13 8.1348 45.7707 48.5410 14.5777 - 23 1.0072 203.11 8.1357 45.7489 48.5359 14.5734 - 24 1.0048 202.62 8.1429 45.3439 48.4383 14.4954 - 25 1.0027 202.20 8.1348 45.0056 48.3529 14.4319 - 26 1.0055 202.77 8.1348 45.4700 48.4673 14.5205 - 27 1.0063 202.93 8.1348 45.6014 48.4995 14.5455 - 28 1.0068 203.02 8.1349 45.6758 48.5178 14.5596 - 29 1.0071 203.08 8.1349 45.7268 48.5303 14.5693 + 0 1.0000 201.64 8.1512 44.5358 61.9595 14.3548 + 1 1.0052 202.70 8.1476 45.4006 62.1721 14.5209 + 2 1.0062 202.89 8.1469 45.5621 62.2116 14.5518 + 3 1.0067 202.99 8.1466 45.6463 62.2321 14.5679 + 4 1.0070 203.06 8.1464 45.7020 62.2457 14.5785 + 5 1.0073 203.11 8.1462 45.7427 62.2556 14.5863 + 6 1.0074 203.13 8.1463 45.7617 62.2603 14.5899 + 7 1.0066 202.97 8.1489 45.6249 62.2274 14.5635 + 8 1.0007 201.78 8.1656 44.6309 61.9867 14.3712 + 9 1.0048 202.61 8.1453 45.3285 62.1538 14.5075 + 10 1.0060 202.86 8.1444 45.5355 62.2044 14.5471 + 11 1.0066 202.97 8.1428 45.6327 62.2279 14.5658 + 12 1.0070 203.05 8.1408 45.6954 62.2427 14.5780 + 13 1.0072 203.10 8.1387 45.7412 62.2534 14.5870 + 14 1.0074 203.13 8.1370 45.7708 62.2602 14.5928 + 15 1.0070 203.06 8.1373 45.7058 62.2444 14.5804 + 16 1.0031 202.27 8.1479 45.0504 62.0860 14.4540 + 17 1.0041 202.47 8.1345 45.2256 62.1259 14.4892 + 18 1.0058 202.82 8.1344 45.5108 62.1959 14.5436 + 19 1.0065 202.95 8.1343 45.6217 62.2231 14.5648 + 20 1.0069 203.03 8.1343 45.6887 62.2395 14.5775 + 21 1.0072 203.09 8.1343 45.7358 62.2510 14.5865 + 22 1.0074 203.13 8.1344 45.7692 62.2592 14.5928 + 23 1.0072 203.10 8.1353 45.7465 62.2539 14.5884 + 24 1.0048 202.61 8.1426 45.3324 62.1541 14.5086 + 25 1.0027 202.20 8.1344 45.0033 62.0710 14.4467 + 26 1.0056 202.76 8.1344 45.4682 62.1855 14.5355 + 27 1.0063 202.92 8.1344 45.5997 62.2177 14.5606 + 28 1.0068 203.01 8.1344 45.6742 62.2360 14.5748 + 29 1.0071 203.08 8.1344 45.7252 62.2485 14.5845 ******************************************************************* @@ -198,211 +198,211 @@ Simulation Metadata YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) - 1 381.5 355.7 2885.25 137.45 7.03 - 2 382.2 358.7 2894.29 127.03 14.07 - 3 382.4 359.6 2897.04 116.60 21.13 - 4 382.5 360.1 2898.67 106.17 28.19 - 5 382.6 360.5 2899.81 95.73 35.25 - 6 382.7 360.8 2900.58 85.29 42.31 - 7 382.6 360.5 2899.80 74.85 49.37 - 8 381.8 356.9 2889.05 64.45 56.41 - 9 381.0 354.0 2879.90 54.08 63.42 - 10 382.1 358.3 2893.20 43.66 70.47 - 11 382.4 359.4 2896.51 33.24 77.52 - 12 382.5 360.0 2898.32 22.80 84.58 - 13 382.6 360.5 2899.56 12.36 91.64 - 14 382.7 360.8 2900.44 1.92 98.70 - 15 382.7 360.8 2900.37 -8.52 105.76 - 16 382.1 358.6 2893.78 -18.94 112.81 - 17 380.8 353.2 2877.52 -29.30 119.82 - 18 382.0 357.9 2891.74 -39.71 126.86 - 19 382.3 359.3 2895.89 -50.13 133.91 - 20 382.5 360.0 2897.94 -60.56 140.97 - 21 382.6 360.4 2899.28 -71.00 148.03 - 22 382.7 360.7 2900.25 -81.44 155.09 - 23 382.7 360.9 2900.61 -91.89 162.15 - 24 382.4 359.6 2896.83 -102.31 169.21 - 25 380.9 353.4 2878.09 -112.68 176.22 - 26 381.8 357.2 2889.56 -123.08 183.25 - 27 382.3 359.1 2895.16 -133.50 190.30 - 28 382.4 359.8 2897.52 -143.93 197.36 - 29 382.6 360.3 2898.99 -154.37 204.42 - 30 382.6 360.7 2900.01 -164.81 211.48 + 1 489.6 355.7 3002.77 143.09 7.02 + 2 490.3 358.7 3011.81 132.25 14.07 + 3 490.6 359.6 3014.56 121.39 21.12 + 4 490.7 360.1 3016.19 110.54 28.18 + 5 490.8 360.5 3017.33 99.67 35.23 + 6 490.8 360.7 3018.10 88.81 42.29 + 7 490.8 360.5 3017.30 77.95 49.35 + 8 489.9 356.8 3006.30 67.12 56.38 + 9 489.2 353.9 2997.27 56.33 63.40 + 10 490.3 358.3 3010.72 45.49 70.44 + 11 490.5 359.4 3014.03 34.64 77.49 + 12 490.7 360.0 3015.84 23.79 84.54 + 13 490.8 360.5 3017.08 12.93 91.60 + 14 490.8 360.8 3017.96 2.06 98.66 + 15 490.8 360.7 3017.88 -8.80 105.72 + 16 490.3 358.5 3011.14 -19.64 112.76 + 17 489.0 353.1 2994.77 -30.42 119.77 + 18 490.1 357.9 3009.26 -41.26 126.81 + 19 490.5 359.3 3013.41 -52.11 133.86 + 20 490.6 360.0 3015.46 -62.96 140.91 + 21 490.7 360.4 3016.81 -73.82 147.97 + 22 490.8 360.7 3017.78 -84.69 155.03 + 23 490.9 360.8 3018.13 -95.55 162.09 + 24 490.5 359.5 3014.27 -106.40 169.14 + 25 489.0 353.3 2995.26 -117.19 176.14 + 26 490.0 357.2 3007.08 -128.01 183.18 + 27 490.4 359.1 3012.68 -138.86 190.23 + 28 490.6 359.8 3015.04 -149.71 197.28 + 29 490.7 360.3 3016.51 -160.57 204.33 + 30 490.8 360.6 3017.53 -171.43 211.39 *************************** * 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] (%) 7.50 52.50 40.0 -Overnight capital expenditure [construction] ($) -18,899,456 -132,296,189 -100,797,097 +Overnight capital expenditure [construction] ($) -19,267,186 -134,870,303 -102,758,326 plus: -Inflation cost [construction] ($) -510,285 -7,240,438 -8,386,992 +Inflation cost [construction] ($) -520,214 -7,381,317 -8,550,179 plus: Royalty supplemental payments [construction] ($) 0 0 0 equals: -Nominal capital expenditure [construction] ($) -19,409,741 -139,536,627 -109,184,089 +Nominal capital expenditure [construction] ($) -19,787,400 -142,251,620 -111,308,506 -Issuance of equity [construction] ($) 19,409,741 41,860,988 32,755,227 -Issuance of debt [construction] ($) 0 97,675,639 76,428,862 -Debt balance [construction] ($) 0 97,675,639 184,360,443 -Debt interest payment [construction] ($) 0 0 10,255,942 +Issuance of equity [construction] ($) 19,787,400 42,675,486 33,392,552 +Issuance of debt [construction] ($) 0 99,576,134 77,915,954 +Debt balance [construction] ($) 0 99,576,134 187,947,582 +Debt interest payment [construction] ($) 0 0 10,455,494 -Installed cost [construction] ($) -19,409,741 -139,536,627 -119,440,031 -After-tax net cash flow [construction] ($) -19,409,741 -41,860,988 -32,755,227 +Installed cost [construction] ($) -19,787,400 -142,251,620 -121,764,000 +After-tax net cash flow [construction] ($) -19,787,400 -42,675,486 -33,392,552 ENERGY -Electricity to grid (kWh) 0.0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 -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 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 +Electricity to grid (kWh) 0.0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 +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 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 -Heat provided (kWh) 0 0 0 381,460,384 382,187,913 382,409,441 382,540,424 382,631,925 382,694,226 382,631,365 381,765,853 381,029,906 382,099,920 382,366,229 382,512,427 382,611,622 382,682,690 382,677,104 382,146,699 380,838,811 381,982,851 382,316,520 382,481,666 382,589,730 382,667,792 382,696,629 382,392,624 380,884,452 381,807,596 382,258,195 382,447,583 382,566,081 382,647,840 +Heat provided (kWh) 0 0 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 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 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 -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 +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 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +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 -Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 -Heat revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 -Capacity payment revenue ($) 0 9,536,510 9,554,698 9,560,236 9,563,511 9,565,798 9,567,356 9,565,784 9,544,146 9,525,748 9,552,498 9,559,156 9,562,811 9,565,291 9,567,067 9,566,928 9,553,667 9,520,970 9,549,571 9,557,913 9,562,042 9,564,743 9,566,695 9,567,416 9,559,816 9,522,111 9,545,190 9,556,455 9,561,190 9,564,152 9,566,196 +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 +Capacity payment revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 -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 139,193,200 -Total revenue ($) 0 43,332,899 43,632,777 43,929,426 44,189,282 44,433,142 44,665,029 44,843,279 44,674,459 44,568,044 45,232,461 45,552,975 45,822,988 46,073,347 46,311,664 46,515,558 46,481,953 46,102,575 46,822,377 47,177,061 47,456,931 47,711,523 47,952,841 48,171,547 48,233,604 47,732,750 48,373,053 48,788,182 49,082,392 49,343,860 188,781,544 +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 141,901,510 +Total revenue ($) 0 46,034,890 46,335,051 46,631,778 46,891,676 47,135,566 47,367,433 47,544,797 47,367,319 47,264,511 47,934,643 48,255,289 48,525,406 48,775,863 49,014,254 49,217,743 49,178,711 48,794,562 49,524,773 49,879,597 50,159,532 50,414,164 50,655,503 50,873,995 50,932,745 50,421,441 51,075,305 51,490,626 51,784,914 52,046,428 194,192,451 -Property tax net assessed value ($) 0 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 278,386,399 +Property tax net assessed value ($) 0 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 OPERATING EXPENSES -O&M fixed expense ($) 0 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 14,823,163 -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 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 612,450 -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 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 15,435,614 +O&M fixed expense ($) 0 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 +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 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 +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 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 OPERATING ACTIVITIES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 -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 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,657 16,698,883 17,109,850 17,479,717 17,515,926 17,628,894 18,528,049 19,099,733 19,638,499 20,176,423 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 +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 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Cash flow from operating activities ($) 0 17,331,753 17,771,192 18,216,947 18,636,305 19,050,816 19,465,249 19,837,958 19,869,499 19,990,341 20,899,779 21,476,482 22,020,581 22,564,197 23,116,270 23,655,398 23,975,499 23,975,623 25,117,007 25,911,785 26,662,471 27,420,806 28,201,108 28,996,290 29,672,099 29,821,048 31,181,381 32,352,626 33,455,752 34,582,722 177,654,784 INVESTING ACTIVITIES -Total installed cost ($) -278,386,399 +Total installed cost ($) -283,803,020 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -278,386,399 +Purchase of property ($) -283,803,020 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 ($) -278,386,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 investing activities ($) -283,803,020 0 0 0 0 0 0 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 ($) 94,025,956 -Size of debt ($) 184,360,443 +Issuance of equity ($) 95,855,438 +Size of debt ($) 187,947,582 minus: -Debt principal payment ($) 0 1,951,714 2,088,334 2,234,517 2,390,934 2,558,299 2,737,380 2,928,997 3,134,026 3,353,408 3,588,147 3,839,317 4,108,069 4,395,634 4,703,328 5,032,561 5,384,841 5,761,779 6,165,104 6,596,661 7,058,428 7,552,518 8,081,194 8,646,877 9,252,159 9,899,810 10,592,797 11,334,292 12,127,693 12,976,631 13,884,995 +Debt principal payment ($) 0 1,989,689 2,128,967 2,277,995 2,437,455 2,608,076 2,790,642 2,985,987 3,195,006 3,418,656 3,657,962 3,914,019 4,188,001 4,481,161 4,794,842 5,130,481 5,489,615 5,873,888 6,285,060 6,725,014 7,195,765 7,699,468 8,238,431 8,815,121 9,432,180 10,092,432 10,798,903 11,554,826 12,363,664 13,229,120 14,155,159 equals: -Cash flow from financing activities ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 +Cash flow from financing activities ($) 283,803,020 -1,989,689 -2,128,967 -2,277,995 -2,437,455 -2,608,076 -2,790,642 -2,985,987 -3,195,006 -3,418,656 -3,657,962 -3,914,019 -4,188,001 -4,481,161 -4,794,842 -5,130,481 -5,489,615 -5,873,888 -6,285,060 -6,725,014 -7,195,765 -7,699,468 -8,238,431 -8,815,121 -9,432,180 -10,092,432 -10,798,903 -11,554,826 -12,363,664 -13,229,120 -14,155,159 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 14,992,054 15,428,552 15,871,385 16,287,657 16,698,883 17,109,850 17,479,717 17,515,926 17,628,894 18,528,049 19,099,733 19,638,499 20,176,423 20,722,434 21,255,561 21,574,235 21,571,796 22,694,922 23,481,164 24,222,800 24,971,482 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 -Cash flow from investing activities ($) -278,386,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 ($) 278,386,399 -1,951,714 -2,088,334 -2,234,517 -2,390,934 -2,558,299 -2,737,380 -2,928,997 -3,134,026 -3,353,408 -3,588,147 -3,839,317 -4,108,069 -4,395,634 -4,703,328 -5,032,561 -5,384,841 -5,761,779 -6,165,104 -6,596,661 -7,058,428 -7,552,518 -8,081,194 -8,646,877 -9,252,159 -9,899,810 -10,592,797 -11,334,292 -12,127,693 -12,976,631 -13,884,995 -Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 +Cash flow from operating activities ($) 0 17,331,753 17,771,192 18,216,947 18,636,305 19,050,816 19,465,249 19,837,958 19,869,499 19,990,341 20,899,779 21,476,482 22,020,581 22,564,197 23,116,270 23,655,398 23,975,499 23,975,623 25,117,007 25,911,785 26,662,471 27,420,806 28,201,108 28,996,290 29,672,099 29,821,048 31,181,381 32,352,626 33,455,752 34,582,722 177,654,784 +Cash flow from investing activities ($) -283,803,020 0 0 0 0 0 0 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 ($) 283,803,020 -1,989,689 -2,128,967 -2,277,995 -2,437,455 -2,608,076 -2,790,642 -2,985,987 -3,195,006 -3,418,656 -3,657,962 -3,914,019 -4,188,001 -4,481,161 -4,794,842 -5,130,481 -5,489,615 -5,873,888 -6,285,060 -6,725,014 -7,195,765 -7,699,468 -8,238,431 -8,815,121 -9,432,180 -10,092,432 -10,798,903 -11,554,826 -12,363,664 -13,229,120 -14,155,159 +Total pre-tax cash flow ($) 0 15,342,064 15,642,225 15,938,952 16,198,850 16,442,740 16,674,607 16,851,971 16,674,493 16,571,685 17,241,817 17,562,463 17,832,580 18,083,037 18,321,428 18,524,917 18,485,885 18,101,736 18,831,947 19,186,771 19,466,706 19,721,338 19,962,677 20,181,169 20,239,919 19,728,615 20,382,479 20,797,800 21,092,088 21,353,601 163,499,625 Pre-tax Returns: -Issuance of equity ($) 94,025,956 -Total pre-tax cash flow ($) 0 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 -Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 +Issuance of equity ($) 95,855,438 +Total pre-tax cash flow ($) 0 15,342,064 15,642,225 15,938,952 16,198,850 16,442,740 16,674,607 16,851,971 16,674,493 16,571,685 17,241,817 17,562,463 17,832,580 18,083,037 18,321,428 18,524,917 18,485,885 18,101,736 18,831,947 19,186,771 19,466,706 19,721,338 19,962,677 20,181,169 20,239,919 19,728,615 20,382,479 20,797,800 21,092,088 21,353,601 163,499,625 +Total pre-tax returns ($) -95,855,438 15,342,064 15,642,225 15,938,952 16,198,850 16,442,740 16,674,607 16,851,971 16,674,493 16,571,685 17,241,817 17,562,463 17,832,580 18,083,037 18,321,428 18,524,917 18,485,885 18,101,736 18,831,947 19,186,771 19,466,706 19,721,338 19,962,677 20,181,169 20,239,919 19,728,615 20,382,479 20,797,800 21,092,088 21,353,601 163,499,625 After-tax Returns: -Total pre-tax returns ($) -94,025,956 13,040,340 13,340,218 13,636,867 13,896,723 14,140,584 14,372,470 14,550,720 14,381,900 14,275,486 14,939,902 15,260,416 15,530,430 15,780,789 16,019,105 16,223,000 16,189,394 15,810,016 16,529,818 16,884,503 17,164,372 17,418,964 17,660,282 17,878,989 17,941,045 17,440,191 18,080,494 18,495,623 18,789,834 19,051,301 158,488,985 -Federal ITC total income ($) 0 83,515,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 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,172 -1,139,430 -1,162,074 -1,342,305 -1,456,897 -1,564,890 -1,672,714 -1,782,159 -1,889,022 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,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 -State tax benefit (liability) ($) 0 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 -Total after-tax returns ($) -94,025,956 94,323,979 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,378 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,085 11,253,012 10,716,055 11,028,442 11,159,105 11,185,823 11,174,191 116,094,467 - -After-tax net cash flow ($) -19,409,741 -41,860,988 -32,755,227 94,323,979 12,455,522 12,643,259 12,800,734 12,943,456 13,074,267 13,161,551 12,983,825 12,849,626 13,292,900 13,472,811 13,610,318 13,728,378 13,832,406 13,905,180 13,793,198 13,414,420 13,857,995 14,019,307 14,116,775 12,732,293 11,329,295 11,355,085 11,253,012 10,716,055 11,028,442 11,159,105 11,185,823 11,174,191 116,094,467 -After-tax cumulative IRR (%) NaN NaN NaN 0.17 6.61 11.59 15.23 17.86 19.76 21.14 22.14 22.87 23.44 23.88 24.21 24.47 24.67 24.83 24.95 25.04 25.11 25.17 25.22 25.25 25.28 25.30 25.31 25.32 25.33 25.34 25.34 25.35 25.39 -After-tax cumulative NPV ($) -19,409,741 -55,803,005 -80,560,328 -18,579,594 -11,464,051 -5,184,672 342,514 5,201,336 9,468,208 13,202,523 16,405,236 19,160,843 21,639,167 23,822,944 25,740,860 27,422,730 28,895,999 30,183,575 31,293,957 32,232,796 33,075,997 33,817,595 34,466,811 34,975,875 35,369,678 35,712,824 36,008,468 36,253,231 36,472,228 36,664,876 36,832,761 36,978,567 38,295,551 +Total pre-tax returns ($) -95,855,438 15,342,064 15,642,225 15,938,952 16,198,850 16,442,740 16,674,607 16,851,971 16,674,493 16,571,685 17,241,817 17,562,463 17,832,580 18,083,037 18,321,428 18,524,917 18,485,885 18,101,736 18,831,947 19,186,771 19,466,706 19,721,338 19,962,677 20,181,169 20,239,919 19,728,615 20,382,479 20,797,800 21,092,088 21,353,601 163,499,625 +Federal ITC total income ($) 0 85,140,906 0 0 0 0 0 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,265,217 -1,144,454 -1,233,803 -1,317,861 -1,400,948 -1,484,019 -1,558,726 -1,565,049 -1,589,271 -1,771,563 -1,887,160 -1,996,222 -2,105,187 -2,215,848 -2,323,913 -2,388,076 -2,388,101 -2,616,885 -2,776,195 -2,926,666 -4,287,517 -5,652,771 -5,812,161 -5,947,624 -5,977,480 -6,250,152 -6,484,922 -6,706,038 -6,931,934 -35,610,013 +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 -514,193 -259,785 -280,067 -299,148 -318,008 -336,865 -353,823 -355,258 -360,756 -402,136 -428,376 -453,132 -477,867 -502,986 -527,517 -542,081 -542,087 -594,020 -630,182 -664,338 -973,245 -1,283,150 -1,319,331 -1,350,080 -1,356,858 -1,418,753 -1,472,044 -1,522,237 -1,573,514 -8,083,293 +Total after-tax returns ($) -95,855,438 97,703,561 14,237,986 14,425,082 14,581,842 14,723,784 14,853,724 14,939,422 14,754,186 14,621,657 15,068,118 15,246,927 15,383,226 15,499,982 15,602,594 15,673,487 15,555,728 15,171,548 15,621,042 15,780,394 15,875,702 14,460,576 13,026,755 13,049,676 12,942,214 12,394,278 12,713,574 12,840,834 12,863,813 12,848,154 119,806,319 + +After-tax net cash flow ($) -19,787,400 -42,675,486 -33,392,552 97,703,561 14,237,986 14,425,082 14,581,842 14,723,784 14,853,724 14,939,422 14,754,186 14,621,657 15,068,118 15,246,927 15,383,226 15,499,982 15,602,594 15,673,487 15,555,728 15,171,548 15,621,042 15,780,394 15,875,702 14,460,576 13,026,755 13,049,676 12,942,214 12,394,278 12,713,574 12,840,834 12,863,813 12,848,154 119,806,319 +After-tax cumulative IRR (%) NaN NaN NaN 1.03 8.06 13.35 17.13 19.80 21.70 23.06 24.04 24.75 25.29 25.70 26.01 26.25 26.44 26.58 26.68 26.76 26.83 26.88 26.92 26.95 26.97 26.98 27.00 27.01 27.01 27.02 27.02 27.03 27.05 +After-tax cumulative NPV ($) -19,787,400 -56,888,775 -82,127,806 -17,926,333 -9,792,511 -2,628,174 3,668,070 9,195,206 14,042,816 18,281,564 21,920,971 25,056,591 27,865,886 30,337,225 32,504,973 34,403,883 36,065,693 37,517,008 38,769,278 39,831,093 40,781,568 41,616,325 42,346,432 42,924,596 43,377,403 43,771,759 44,111,782 44,394,877 44,647,336 44,869,016 45,062,087 45,229,735 46,588,827 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -19,409,741 -41,860,988 -32,755,227 50,991,080 -31,177,255 -31,286,167 -31,388,547 -31,489,686 -31,590,762 -31,681,729 -31,690,634 -31,718,418 -31,939,560 -32,080,163 -32,212,670 -32,344,970 -32,479,258 -32,610,378 -32,688,755 -32,688,155 -32,964,382 -33,157,754 -33,340,156 -34,979,230 -36,623,546 -36,816,463 -36,980,591 -37,016,695 -37,344,611 -37,629,077 -37,896,570 -38,169,668 66,506,122 -PPA revenue ($) 0 0 0 33,796,389 34,078,079 34,369,190 34,625,771 34,867,344 35,097,673 35,277,495 35,130,313 35,042,296 35,679,963 35,993,819 36,260,177 36,508,056 36,744,597 36,948,630 36,928,286 36,581,605 37,272,806 37,619,148 37,894,889 38,146,780 38,386,146 38,604,131 38,673,788 38,210,639 38,827,863 39,231,727 39,521,202 39,779,708 40,022,148 -Electricity to grid (kWh) 0 0 0 355,751,460 358,716,621 359,623,206 360,159,877 360,535,044 360,790,225 360,526,265 356,942,824 353,998,346 358,376,482 359,470,874 360,081,204 360,502,187 360,807,119 360,791,234 358,596,676 353,274,794 357,979,310 359,338,506 360,012,245 360,453,369 360,772,049 360,887,459 359,622,350 353,442,225 357,267,784 359,100,476 359,872,541 360,356,079 360,689,873 +Annual costs ($) -19,787,400 -42,675,486 -33,392,552 51,668,671 -32,097,065 -32,206,696 -32,309,835 -32,411,782 -32,513,709 -32,605,375 -32,613,133 -32,642,853 -32,866,525 -33,008,362 -33,142,181 -33,275,880 -33,411,660 -33,544,256 -33,622,983 -33,623,014 -33,903,731 -34,099,203 -34,283,830 -35,953,588 -37,628,748 -37,824,319 -37,990,530 -38,027,164 -38,361,731 -38,649,793 -38,921,101 -39,198,274 67,515,378 +PPA revenue ($) 0 0 0 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +Electricity to grid (kWh) 0 0 0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 -Present value of annual costs ($) 183,347,724 +Present value of annual costs ($) 188,439,837 -Present value of annual energy costs ($) 162,019,394 -Present value of annual energy nominal (kWh) 1,777,787,001 -LCOE Levelized cost of energy nominal (cents/kWh) 9.11 +Present value of annual energy costs ($) 161,218,291 +Present value of annual energy nominal (kWh) 1,777,658,214 +LCOE Levelized cost of energy nominal (cents/kWh) 9.07 -Present value of PPA revenue ($) 174,295,914 -Present value of annual energy nominal (kWh) 1,777,787,001 +Present value of PPA revenue ($) 174,283,198 +Present value of annual energy nominal (kWh) 1,777,658,214 LPPA Levelized PPA price nominal (cents/kWh) 9.80 -Present value of annual heat costs ($) 21,328,329 -Present value of annual heat provided (MMBTU) 6,462,235 -LCOH Levelized cost of heating nominal ($/MMBTU) 3.30 +Present value of annual heat costs ($) 27,221,546 +Present value of annual heat provided (MMBTU) 8,290,884 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.28 PROJECT STATE INCOME TAXES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 -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 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Total state tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Total state tax depreciation ($) 0 6,030,814 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 6,030,814 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 9,076,343 3,597,130 4,039,963 4,456,235 4,867,461 5,278,428 5,648,295 5,684,504 5,797,472 6,696,627 7,268,311 7,807,077 8,345,001 8,891,012 9,424,139 9,742,813 9,740,374 10,863,500 11,649,742 12,391,378 19,055,771 25,741,476 26,525,866 27,193,204 27,340,001 28,673,291 29,829,916 30,917,527 32,027,932 172,373,981 +State taxable income ($) 0 11,300,939 5,709,564 6,155,319 6,574,676 6,989,188 7,403,620 7,776,329 7,807,870 7,928,712 8,838,151 9,414,854 9,958,952 10,502,569 11,054,641 11,593,770 11,913,871 11,913,995 13,055,379 13,850,157 14,600,842 21,389,992 28,201,108 28,996,290 29,672,099 29,821,048 31,181,381 32,352,626 33,455,752 34,582,722 177,654,784 -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 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 +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 -514,193 -259,785 -280,067 -299,148 -318,008 -336,865 -353,823 -355,258 -360,756 -402,136 -428,376 -453,132 -477,867 -502,986 -527,517 -542,081 -542,087 -594,020 -630,182 -664,338 -973,245 -1,283,150 -1,319,331 -1,350,080 -1,356,858 -1,418,753 -1,472,044 -1,522,237 -1,573,514 -8,083,293 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 -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 -412,974 -163,669 -183,818 -202,759 -221,469 -240,168 -256,997 -258,645 -263,785 -304,697 -330,708 -355,222 -379,698 -404,541 -428,798 -443,298 -443,187 -494,289 -530,063 -563,808 -867,038 -1,171,237 -1,206,927 -1,237,291 -1,243,970 -1,304,635 -1,357,261 -1,406,747 -1,457,271 -7,843,016 -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 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 +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 -514,193 -259,785 -280,067 -299,148 -318,008 -336,865 -353,823 -355,258 -360,756 -402,136 -428,376 -453,132 -477,867 -502,986 -527,517 -542,081 -542,087 -594,020 -630,182 -664,338 -973,245 -1,283,150 -1,319,331 -1,350,080 -1,356,858 -1,418,753 -1,472,044 -1,522,237 -1,573,514 -8,083,293 +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 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Total federal tax depreciation ($) 0 5,915,711 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 11,831,422 5,915,711 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Total federal tax depreciation ($) 0 6,030,814 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 6,030,814 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 8,663,370 3,433,461 3,856,144 4,253,476 4,645,991 5,038,260 5,391,298 5,425,859 5,533,687 6,391,930 6,937,603 7,451,855 7,965,303 8,486,471 8,995,341 9,299,515 9,297,187 10,369,211 11,119,679 11,827,570 18,188,733 24,570,239 25,318,939 25,955,913 26,096,031 27,368,656 28,472,655 29,510,779 30,570,661 164,530,964 +Federal taxable income ($) 0 10,786,746 5,449,779 5,875,252 6,275,529 6,671,179 7,066,755 7,422,506 7,452,612 7,567,956 8,436,015 8,986,478 9,505,820 10,024,702 10,551,655 11,066,253 11,371,790 11,371,908 12,461,359 13,219,974 13,936,504 20,416,747 26,917,958 27,676,959 28,322,018 28,464,190 29,762,629 30,880,582 31,933,515 33,009,208 169,571,491 -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 -1,819,308 -721,027 -809,790 -893,230 -975,658 -1,058,035 -1,132,172 -1,139,430 -1,162,074 -1,342,305 -1,456,897 -1,564,890 -1,672,714 -1,782,159 -1,889,022 -1,952,898 -1,952,409 -2,177,534 -2,335,133 -2,483,790 -3,819,634 -5,159,750 -5,316,977 -5,450,742 -5,480,167 -5,747,418 -5,979,257 -6,197,264 -6,419,839 -34,551,503 +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,265,217 -1,144,454 -1,233,803 -1,317,861 -1,400,948 -1,484,019 -1,558,726 -1,565,049 -1,589,271 -1,771,563 -1,887,160 -1,996,222 -2,105,187 -2,215,848 -2,323,913 -2,388,076 -2,388,101 -2,616,885 -2,776,195 -2,926,666 -4,287,517 -5,652,771 -5,812,161 -5,947,624 -5,977,480 -6,250,152 -6,484,922 -6,706,038 -6,931,934 -35,610,013 CASH INCENTIVES Federal IBI income ($) 0 @@ -417,68 +417,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 83,515,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 83,515,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 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 85,140,906 0 0 0 0 0 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 85,140,906 0 0 0 0 0 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 ($) 184,360,443 182,408,729 180,320,395 178,085,878 175,694,944 173,136,645 170,399,265 167,470,269 164,336,243 160,982,834 157,394,688 153,555,371 149,447,302 145,051,668 140,348,339 135,315,778 129,930,938 124,169,158 118,004,054 111,407,393 104,348,965 96,796,448 88,715,254 80,068,377 70,816,218 60,916,408 50,323,612 38,989,319 26,861,627 13,884,995 0 -Debt interest payment ($) 0 12,905,231 12,768,611 12,622,428 12,466,011 12,298,646 12,119,565 11,927,949 11,722,919 11,503,537 11,268,798 11,017,628 10,748,876 10,461,311 10,153,617 9,824,384 9,472,104 9,095,166 8,691,841 8,260,284 7,798,517 7,304,428 6,775,751 6,210,068 5,604,786 4,957,135 4,264,149 3,522,653 2,729,252 1,880,314 971,950 -Debt principal payment ($) 0 1,951,714 2,088,334 2,234,517 2,390,934 2,558,299 2,737,380 2,928,997 3,134,026 3,353,408 3,588,147 3,839,317 4,108,069 4,395,634 4,703,328 5,032,561 5,384,841 5,761,779 6,165,104 6,596,661 7,058,428 7,552,518 8,081,194 8,646,877 9,252,159 9,899,810 10,592,797 11,334,292 12,127,693 12,976,631 13,884,995 -Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 +Debt balance ($) 187,947,582 185,957,893 183,828,926 181,550,931 179,113,477 176,505,401 173,714,759 170,728,772 167,533,767 164,115,111 160,457,149 156,543,129 152,355,129 147,873,968 143,079,126 137,948,645 132,459,030 126,585,143 120,300,083 113,575,069 106,379,304 98,679,836 90,441,405 81,626,284 72,194,104 62,101,671 51,302,768 39,747,943 27,384,279 14,155,159 0 +Debt interest payment ($) 0 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Debt principal payment ($) 0 1,989,689 2,128,967 2,277,995 2,437,455 2,608,076 2,790,642 2,985,987 3,195,006 3,418,656 3,657,962 3,914,019 4,188,001 4,481,161 4,794,842 5,130,481 5,489,615 5,873,888 6,285,060 6,725,014 7,195,765 7,699,468 8,238,431 8,815,121 9,432,180 10,092,432 10,798,903 11,554,826 12,363,664 13,229,120 14,155,159 +Debt total payment ($) 0 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 DSCR (DEBT FRACTION) -EBITDA ($) 0 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 +EBITDA ($) 0 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 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 27,897,285 28,197,163 28,493,812 28,753,668 28,997,529 29,229,416 29,407,666 29,238,845 29,132,431 29,796,847 30,117,361 30,387,375 30,637,734 30,876,051 31,079,945 31,046,339 30,666,961 31,386,763 31,741,448 32,021,317 32,275,910 32,517,227 32,735,934 32,797,990 32,297,136 32,937,439 33,352,569 33,646,779 33,908,246 173,345,930 -Debt total payment ($) 0 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 14,856,945 -DSCR (pre-tax) 0.0 1.88 1.90 1.92 1.94 1.95 1.97 1.98 1.97 1.96 2.01 2.03 2.05 2.06 2.08 2.09 2.09 2.06 2.11 2.14 2.16 2.17 2.19 2.20 2.21 2.17 2.22 2.24 2.26 2.28 11.67 +Cash available for debt service (CAFDS) ($) 0 30,488,084 30,788,245 31,084,972 31,344,870 31,588,759 31,820,627 31,997,991 31,820,513 31,717,704 32,387,837 32,708,483 32,978,600 33,229,056 33,467,447 33,670,937 33,631,904 33,247,755 33,977,967 34,332,791 34,612,726 34,867,358 35,108,696 35,327,188 35,385,938 34,874,635 35,528,498 35,943,820 36,238,108 36,499,621 178,645,645 +Debt total payment ($) 0 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 +DSCR (pre-tax) 0.0 2.01 2.03 2.05 2.07 2.09 2.10 2.11 2.10 2.09 2.14 2.16 2.18 2.19 2.21 2.22 2.22 2.20 2.24 2.27 2.29 2.30 2.32 2.33 2.34 2.30 2.35 2.37 2.39 2.41 11.79 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/example_SAM-single-owner-PPA-7_chp.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt index 4d823d247..6b756072d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Direct-Use Heat +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP) # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html # *** ECONOMIC/FINANCIAL PARAMETERS *** @@ -98,7 +98,7 @@ Injectivity Index, 1.38 Productivity Index, 1.13 Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells -Injection Temperature, 53.6, -- Calibrated with GEOPHIRES model-calculated reinjection temperature +Injection Temperature, 47.5 Injection Wellbore Temperature Gain, 3 Maximum Drawdown, 0.0025 From b116bcdeadaa25e2fb0ca821bc59ad768fd7802e Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:14:49 -0700 Subject: [PATCH 069/127] do not support AC, HP, DH power plant types for now. WIP to ensure INDUSTRIAL support is correct --- docs/SAM-Economic-Models.md | 2 +- src/geophires_x/EconomicsSam.py | 30 +++++++++++++++---- .../example_SAM-single-owner-PPA-7_chp.out | 4 +-- .../example_SAM-single-owner-PPA-8_heat.out | 9 +++--- .../example_SAM-single-owner-PPA-8_heat.txt | 2 +- tests/geophires_x_tests/test_economics_sam.py | 23 ++++++++++++++ 6 files changed, 57 insertions(+), 13 deletions(-) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index b506538ce..ebf5ec38f 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -51,7 +51,7 @@ The following table describes how GEOPHIRES parameters are transformed into SAM ### Limitations -1. Only Electricity end-use is supported +1. The following power plant types/surface applications are not supported: Absorption Chiller, Heat Pump, District Heating, Reservoir Thermal Energy Storage (SUTRA). Subcritical ORC, Supercritical ORC, Single Flash, Double Flash, and Industrial heat power plant types are supported. 2. Add-ons with electricity and heat are not currently supported. (Add-ons CAPEX, OPEX, and profit are supported.) ## Multiple Construction Years diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 1b79b6dd8..31ed1d31e 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -48,7 +48,7 @@ adjust_phased_schedule_to_new_length, ) from geophires_x.GeoPHIRESUtils import is_float, is_int, sig_figs, quantity -from geophires_x.OptionList import EconomicModel, EndUseOptions +from geophires_x.OptionList import EconomicModel, EndUseOptions, PlantType from geophires_x.Parameter import Parameter, OutputParameter, floatParameter, listParameter from geophires_x.Units import convertible_unit @@ -64,10 +64,14 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> f'{supported_description}.' ) - if model.surfaceplant.enduse_option.value not in ( - EndUseOptions.ELECTRICITY, - EndUseOptions.HEAT, - ) and not model.surfaceplant.enduse_option.value.name.startswith('COGENERATION'): + if ( + model.surfaceplant.enduse_option.value + not in ( + EndUseOptions.ELECTRICITY, + EndUseOptions.HEAT, + ) + and not model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option + ): raise ValueError( _inv_msg( model.surfaceplant.enduse_option.Name, @@ -76,6 +80,22 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> ) ) + supported_plant_types = [ + PlantType.SUB_CRITICAL_ORC, + PlantType.SUPER_CRITICAL_ORC, + PlantType.SINGLE_FLASH, + PlantType.DOUBLE_FLASH, + PlantType.INDUSTRIAL, # FIXME WIP - ensure correct support including Average Reservoir Pumping Cost + ] + if model.surfaceplant.plant_type.value not in supported_plant_types: + raise ValueError( + _inv_msg( + model.surfaceplant.plant_type.Name, + model.surfaceplant.plant_type.value.value, + ', '.join(map(lambda x: x.value, supported_plant_types)), + ) + ) + gtr: floatParameter = model.economics.GTR if gtr.Provided: model.logger.warning( diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 9078a6616..b0d54ba59 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-03 - Simulation Time: 09:33 - Calculation Time: 1.795 sec + Simulation Time: 10:05 + Calculation Time: 1.803 sec ***SUMMARY OF RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index a5e4d403d..77dd8adaa 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-02 - Simulation Time: 12:57 - Calculation Time: 1.864 sec + Simulation Date: 2026-04-03 + Simulation Time: 10:05 + Calculation Time: 1.788 sec ***SUMMARY OF RESULTS*** @@ -123,8 +123,9 @@ Simulation Metadata Wellfield maintenance costs: 1.11 MUSD/yr Power plant maintenance costs: 3.62 MUSD/yr Water costs: 0.16 MUSD/yr + Average Reservoir Pumping Cost: 4.49 MUSD/yr Redrilling costs: 9.48 MUSD/yr - Total operating and maintenance costs: 14.36 MUSD/yr + Total operating and maintenance costs: 18.85 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt index eabcfaec9..a397604a9 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt @@ -41,7 +41,7 @@ Field Gathering System Capital Cost Adjustment Factor, 0.35 # ************************************************* End-Use Option, 2, -- Direct-Use Heat -Power Plant Type, 1, -- Subcritical ORC +Power Plant Type, 9, -- Industrial heat Plant Lifetime, 30 diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index 10c432f89..7198a9553 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -12,6 +12,7 @@ import pandas as pd from pint.facets.plain import PlainQuantity +from geophires_x.OptionList import PlantType from geophires_x.Parameter import listParameter from base_test_case import BaseTestCase @@ -28,6 +29,7 @@ _get_royalty_rate_schedule, _validate_construction_capex_schedule, _calculate_nominal_discount_rate_from_real_and_inflation_pct, + validate_read_parameters, ) from geophires_x.EconomicsSamCalculations import SamEconomicsCalculations from geophires_x.GeoPHIRESUtils import sig_figs, quantity, is_float @@ -310,6 +312,27 @@ def test_direct_use_heat_end_use_supported(self): self.assertIsNotNone(self._get_result({'End-Use Option': 2})) + def test_supported_plant_types(self): + m: Model = self._new_model(self._egs_test_file_path(), {'Print Output to Console': 1}) + supported_plant_types = [ + PlantType.SUB_CRITICAL_ORC, + PlantType.SUPER_CRITICAL_ORC, + PlantType.SINGLE_FLASH, + PlantType.DOUBLE_FLASH, + PlantType.INDUSTRIAL, + ] + + for plant_type in supported_plant_types: + m.surfaceplant.plant_type.value = plant_type + + validate_read_parameters(m) # should not raise an exception + + for plant_type in [it for it in PlantType if it not in supported_plant_types]: + m.surfaceplant.plant_type.value = plant_type + + with self.assertRaises(ValueError): + validate_read_parameters(m) + def test_multiple_construction_years(self): construction_years_2: GeophiresXResult = self._get_result( { From 1881e6b08ad5c3a081363ca55262bafb32fe196e Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:18:12 -0700 Subject: [PATCH 070/127] SurfacePlant.py mark TODO https://github.com/NatLabRockies/GEOPHIRES-X/issues/477?title=Validate+surface+application+for+direct-use+heat-only+end+use+ORC/flash+plants+are+not+applicable --- src/geophires_x/SurfacePlant.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index 5e1507fb1..dcf86ea7a 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -664,6 +664,7 @@ def read_parameters(self, model:Model) -> None: end_use_option = EndUseOptions.from_input_string(ParameterReadIn.sValue) ParameterToModify.value = end_use_option if end_use_option == EndUseOptions.HEAT: + # TODO https://github.com/NatLabRockies/GEOPHIRES-X/issues/477?title=Validate+surface+application+for+direct-use+heat-only+end+use+(ORC/flash+plants+are+not+applicable) self.plant_type.value = PlantType.INDUSTRIAL elif ParameterToModify.Name == 'Power Plant Type': ParameterToModify.value = PlantType.from_input_string(ParameterReadIn.sValue) From 13fe524b0776d01ef86ad655851c8239f7234b3a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:54:42 -0700 Subject: [PATCH 071/127] include pumping in SAM OPEX parameterization. re-enable Absorption Chiller since it is functionally analogous to Industrial heat. WIP to evaluate using SAM native electricity purchases instead of including calculated pumping electricity costs in fixed OPEX on year-by-year basis --- docs/SAM-Economic-Models.md | 2 +- src/geophires_x/Economics.py | 3 +- src/geophires_x/EconomicsSam.py | 12 +++ src/geophires_x/Outputs.py | 2 +- src/geophires_x/SurfacePlant.py | 4 +- .../geophires-result.json | 6 +- .../example_SAM-single-owner-PPA-8_heat.out | 76 +++++++++--------- ...example_SAM-single-owner-PPA-9_cooling.out | 78 +++++++++---------- tests/geophires_x_tests/test_economics_sam.py | 1 + 9 files changed, 101 insertions(+), 83 deletions(-) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index ebf5ec38f..785491b2a 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -51,7 +51,7 @@ The following table describes how GEOPHIRES parameters are transformed into SAM ### Limitations -1. The following power plant types/surface applications are not supported: Absorption Chiller, Heat Pump, District Heating, Reservoir Thermal Energy Storage (SUTRA). Subcritical ORC, Supercritical ORC, Single Flash, Double Flash, and Industrial heat power plant types are supported. +1. The following power plant types/surface applications are not supported: Heat Pump, District Heating, and Reservoir Thermal Energy Storage (SUTRA). Subcritical ORC, Supercritical ORC, Single Flash, Double Flash, and Industrial heat power plant types are supported. 2. Add-ons with electricity and heat are not currently supported. (Add-ons CAPEX, OPEX, and profit are supported.) ## Multiple Construction Years diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index f76f16726..01b6434ff 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2191,8 +2191,9 @@ def __init__(self, model: Model): f'make-up water, pumping O&M costs, ' f'and average royalty costs (both production-based and supplemental payments).' ) - self.averageannualpumpingcosts = OutputParameter( + self.averageannualpumpingcosts = self.OutputParameterDict[self.averageannualpumpingcosts.Name] = OutputParameter( Name="Average Annual Pumping Costs", + display_name='Average Reservoir Pumping Cost', UnitType=Units.CURRENCYFREQUENCY, PreferredUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR, CurrentUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 31ed1d31e..87ed474d0 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -85,6 +85,7 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> PlantType.SUPER_CRITICAL_ORC, PlantType.SINGLE_FLASH, PlantType.DOUBLE_FLASH, + PlantType.ABSORPTION_CHILLER, PlantType.INDUSTRIAL, # FIXME WIP - ensure correct support including Average Reservoir Pumping Cost ] if model.surfaceplant.plant_type.value not in supported_plant_types: @@ -659,6 +660,17 @@ def _get_single_owner_parameters(model: Model) -> dict[str, Any]: for year_index in range(model.surfaceplant.plant_lifetime.value): opex_by_year_usd.append(opex_base_usd + royalty_supplemental_payments_by_year_usd[year_index]) + if model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: + # FIXME WIP evaluate using SAM's native electricity purchase mechanisms instead + # For pure direct-use, pumping is a grid purchase. + # Create an annual array adding the specific year's pumping cost to the base O&M. + elec_rate_usd_per_kwh = model.surfaceplant.electricity_cost_to_buy.quantity().to('USD/kWh').magnitude + annual_pumping_kwh = model.surfaceplant.PumpingkWh.quantity().to('kWh/year').magnitude + opex_by_year_usd = [ + opex_by_year_usd[year_index] + annual_pumping_kwh[year_index] * elec_rate_usd_per_kwh + for year_index in range(model.surfaceplant.plant_lifetime.value) + ] + ret['om_fixed'] = opex_by_year_usd # GEOPHIRES assumes O&M fixed costs are not affected by inflation diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index bca878496..597a3e08c 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -580,7 +580,7 @@ def PrintOutputs(self, model: Model): f.write(f' {model.economics.Coamwater.display_name}: {model.economics.Coamwater.value:10.2f} {model.economics.Coamwater.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value in [PlantType.INDUSTRIAL, PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, PlantType.DISTRICT_HEATING]: - f.write(f' Average Reservoir Pumping Cost: {model.economics.averageannualpumpingcosts.value:10.2f} {model.economics.averageannualpumpingcosts.CurrentUnits.value}\n') + f.write(f' {econ.averageannualpumpingcosts.display_name}: {econ.averageannualpumpingcosts.value:10.2f} {econ.averageannualpumpingcosts.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' Absorption Chiller O&M Cost: {model.economics.chilleropex.value:10.2f} {model.economics.chilleropex.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index dcf86ea7a..dd9453692 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -534,8 +534,8 @@ def __init__(self, model: Model): self.PumpingkWh = self.OutputParameterDict[self.PumpingkWh.Name] = OutputParameter( Name="Annual Electricity Use for Pumping", UnitType=Units.ENERGYFREQUENCY, - PreferredUnits=EnergyFrequencyUnit.KWPERYEAR, - CurrentUnits=EnergyFrequencyUnit.KWPERYEAR + PreferredUnits=EnergyFrequencyUnit.KWhPERYEAR, + CurrentUnits=EnergyFrequencyUnit.KWhPERYEAR ) self.ElectricityProduced = self.OutputParameterDict[self.ElectricityProduced.Name] = OutputParameter( Name="Total Electricity Production", diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 6fab9f6ec..6c198d62b 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -531,7 +531,11 @@ "description": "O&M Make-up Water costs. Default correlation: Assumes $3.50/1,000 gallons of water. Provide Water Cost Adjustment Factor to multiply the default correlation.", "units": "MUSD/yr" }, - "Average Reservoir Pumping Cost": {}, + "Average Reservoir Pumping Cost": { + "type": "number", + "description": "Average Annual Pumping Costs", + "units": "MUSD/yr" + }, "Absorption Chiller O&M Cost": {}, "Average Heat Pump Electricity Cost": {}, "Annual District Heating O&M Cost": { diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 77dd8adaa..ffa93f4df 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,14 +6,14 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-03 - Simulation Time: 10:05 - Calculation Time: 1.788 sec + Simulation Time: 10:40 + Calculation Time: 1.903 sec ***SUMMARY OF RESULTS*** End-Use Option: Direct-Use Heat Average Direct-Use Heat Production: 330.46 MW - Direct-Use heat breakeven price (LCOH): 4.48 USD/MMBTU + Direct-Use heat breakeven price (LCOH): 4.87 USD/MMBTU Total CAPEX: 244.33 MUSD Number of production wells: 6 Number of injection wells: 4 @@ -35,11 +35,11 @@ Simulation Metadata Investment Tax Credit: 73.30 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 125.22 MUSD - After-tax IRR: 44.50 % - Project VIR=PI=PIR: 2.77 - Project MOIC: 11.34 - Project Payback Period: 3.81 yr + Project NPV: 108.42 MUSD + After-tax IRR: 41.62 % + Project VIR=PI=PIR: 2.53 + Project MOIC: 10.11 + Project Payback Period: 3.84 yr ***ENGINEERING PARAMETERS*** @@ -256,19 +256,19 @@ Total revenue ($) 0 Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 OPERATING EXPENSES -O&M fixed expense ($) 0 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 14,360,796 +O&M fixed expense ($) 0 18,857,935 18,857,078 18,856,816 18,856,662 18,856,555 18,856,509 18,857,013 18,861,324 18,858,798 18,855,811 18,855,144 18,854,170 18,853,050 18,852,027 18,851,542 18,853,830 18,855,256 18,850,277 18,850,225 18,850,210 18,850,210 18,850,221 18,850,390 18,852,118 18,856,498 18,850,242 18,850,249 18,850,255 18,850,261 18,850,268 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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 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 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 14,898,329 +Total operating expenses ($) 0 19,395,468 19,394,611 19,394,350 19,394,195 19,394,088 19,394,042 19,394,547 19,398,857 19,396,331 19,393,344 19,392,678 19,391,703 19,390,583 19,389,560 19,389,075 19,391,363 19,392,790 19,387,810 19,387,758 19,387,743 19,387,743 19,387,754 19,387,923 19,389,651 19,394,031 19,387,776 19,387,782 19,387,788 19,387,794 19,387,801 -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 OPERATING ACTIVITIES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 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 @@ -276,7 +276,7 @@ State PBI income ($) 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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +Cash flow from operating activities ($) 0 34,196,000 34,520,213 34,710,724 34,884,791 35,057,378 35,232,021 35,382,116 35,315,721 35,304,991 35,813,224 36,108,809 36,386,544 36,667,792 36,958,744 37,246,627 37,405,204 37,368,867 38,047,757 38,519,885 38,971,363 39,435,234 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 INVESTING ACTIVITIES Total installed cost ($) -244,333,333 @@ -310,36 +310,36 @@ Cash flow from financing activities ($) 244,3 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 38,693,139 39,016,495 39,206,745 39,380,657 39,553,136 39,727,734 39,878,333 39,816,249 39,802,993 40,308,239 40,603,157 40,879,918 41,160,046 41,449,975 41,737,374 41,898,238 41,863,327 42,537,238 43,009,314 43,460,778 43,924,648 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +Cash flow from operating activities ($) 0 34,196,000 34,520,213 34,710,724 34,884,791 35,057,378 35,232,021 35,382,116 35,315,721 35,304,991 35,813,224 36,108,809 36,386,544 36,667,792 36,958,744 37,246,627 37,405,204 37,368,867 38,047,757 38,519,885 38,971,363 39,435,234 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax cash flow ($) 0 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 Pre-tax Returns: Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax cash flow ($) 0 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 +Total pre-tax returns ($) -82,524,416 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 After-tax Returns: -Total pre-tax returns ($) -82,524,416 36,980,164 37,183,612 37,245,560 37,282,189 37,307,776 37,325,198 37,307,620 37,065,586 36,859,784 37,159,005 37,233,477 37,274,360 37,302,099 37,321,972 37,320,410 37,172,087 36,806,346 37,126,268 37,219,576 37,265,758 37,295,977 37,317,806 37,325,870 37,240,858 36,819,109 37,077,259 37,203,266 37,256,227 37,289,364 159,478,894 +Total pre-tax returns ($) -82,524,416 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +Federal tax benefit (liability) ($) 0 -5,813,690 -4,837,950 -4,876,137 -4,911,028 -4,945,622 -4,980,628 -5,010,714 -4,997,405 -4,995,255 -5,097,127 -5,156,376 -5,212,046 -5,268,421 -5,326,741 -5,384,446 -5,416,232 -5,408,948 -5,545,028 -5,639,664 -5,730,161 -6,863,868 -8,001,977 -8,103,078 -8,192,176 -8,220,699 -8,395,612 -8,551,317 -8,701,511 -8,857,502 -33,509,586 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 -Total after-tax returns ($) -82,524,416 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 +State tax benefit (liability) ($) 0 -1,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 +Total after-tax returns ($) -82,524,416 98,649,657 26,751,191 26,766,545 26,760,517 26,743,765 26,718,280 26,663,282 26,433,267 26,232,630 26,409,841 26,412,282 26,385,831 26,345,519 26,294,857 26,222,976 26,033,364 25,675,134 25,833,065 25,810,308 25,745,466 24,384,632 23,009,996 22,893,841 22,697,778 22,236,652 22,286,439 22,221,391 22,090,058 21,931,789 113,873,330 -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 102,040,747 30,141,634 30,156,791 30,150,648 30,133,814 30,108,295 30,053,678 29,826,913 29,624,371 29,799,329 29,801,268 29,774,083 29,732,926 29,681,492 29,609,246 29,421,359 29,064,204 29,218,381 29,195,584 29,130,731 27,769,897 26,395,270 26,279,242 26,084,482 25,626,658 25,671,729 25,606,686 25,475,358 25,317,093 117,258,638 -After-tax cumulative IRR (%) NaN NaN NaN 11.90 24.79 32.40 36.89 39.61 41.31 42.39 43.09 43.55 43.85 44.06 44.20 44.30 44.36 44.40 44.44 44.46 44.47 44.48 44.49 44.49 44.49 44.50 44.50 44.50 44.50 44.50 44.50 44.50 44.50 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -3,654,487 13,564,712 28,542,331 41,560,978 52,872,860 62,698,897 71,225,999 78,583,387 84,936,345 90,492,123 95,322,541 99,518,197 103,160,790 106,322,123 109,063,845 111,432,328 113,466,453 115,244,269 116,788,668 118,128,360 119,238,658 120,156,151 120,950,299 121,635,601 122,220,935 122,730,709 123,172,776 123,555,130 123,885,478 125,215,669 +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 98,649,657 26,751,191 26,766,545 26,760,517 26,743,765 26,718,280 26,663,282 26,433,267 26,232,630 26,409,841 26,412,282 26,385,831 26,345,519 26,294,857 26,222,976 26,033,364 25,675,134 25,833,065 25,810,308 25,745,466 24,384,632 23,009,996 22,893,841 22,697,778 22,236,652 22,286,439 22,221,391 22,090,058 21,931,789 113,873,330 +After-tax cumulative IRR (%) NaN NaN NaN 9.94 21.95 29.27 33.70 36.44 38.18 39.30 40.04 40.53 40.87 41.10 41.26 41.37 41.44 41.50 41.53 41.56 41.58 41.59 41.60 41.61 41.61 41.61 41.61 41.62 41.62 41.62 41.62 41.62 41.62 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -5,882,788 9,399,531 22,693,357 34,248,191 44,287,487 53,007,172 60,572,319 67,092,598 72,718,196 77,642,039 81,923,144 85,641,340 88,868,940 91,669,568 94,097,732 96,193,474 97,990,407 99,562,241 100,927,564 102,111,572 103,086,520 103,886,342 104,578,184 105,174,509 105,682,412 106,124,963 106,508,587 106,840,133 107,126,308 108,418,095 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,035,483 -36,740,426 -28,748,508 37,122,655 -34,979,906 -35,026,697 -35,069,469 -35,111,890 -35,154,831 -35,191,870 -35,176,601 -35,173,341 -35,297,604 -35,370,137 -35,438,205 -35,507,101 -35,578,408 -35,649,092 -35,688,656 -35,680,070 -35,845,815 -35,961,920 -36,072,955 -37,464,008 -38,860,464 -38,984,556 -39,094,304 -39,130,379 -39,343,458 -39,534,508 -39,718,797 -39,910,199 52,008,483 +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 33,731,565 -38,370,349 -38,416,943 -38,459,600 -38,501,939 -38,544,846 -38,582,266 -38,570,247 -38,565,082 -38,687,092 -38,759,123 -38,826,457 -38,894,508 -38,965,043 -39,035,362 -39,076,651 -39,069,140 -39,231,131 -39,347,196 -39,458,220 -40,849,273 -42,245,738 -42,369,957 -42,481,008 -42,520,385 -42,728,748 -42,919,803 -43,104,097 -43,295,503 48,623,175 PPA 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 0 0 Electricity to 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 -Present value of annual costs ($) 197,491,957 +Present value of annual costs ($) 214,289,531 Present value of annual energy costs ($) 0 Present value of annual energy nominal (kWh) 0 @@ -349,12 +349,12 @@ Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN -Present value of annual heat costs ($) 197,491,957 +Present value of annual heat costs ($) 214,289,531 Present value of annual heat provided (MMBTU) 44,044,958 -LCOH Levelized cost of heating nominal ($/MMBTU) 4.48 +LCOH Levelized cost of heating nominal ($/MMBTU) 4.87 PROJECT STATE INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 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 @@ -363,15 +363,15 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 33,501,056 28,632,328 28,822,578 28,996,490 29,168,970 29,343,567 29,494,166 29,432,082 29,418,827 29,924,072 30,218,991 30,495,751 30,775,879 31,065,809 31,353,207 31,514,071 31,479,161 32,153,072 32,625,147 33,076,611 38,732,565 44,410,484 44,915,035 45,361,265 45,507,944 46,374,313 47,151,114 47,900,424 48,678,655 171,665,434 +State taxable income ($) 0 29,003,916 24,136,047 24,326,558 24,500,624 24,673,211 24,847,854 24,997,949 24,931,554 24,920,825 25,429,057 25,724,642 26,002,377 26,283,625 26,574,578 26,862,460 27,021,037 26,984,700 27,663,590 28,135,718 28,587,197 34,243,151 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +State tax benefit (liability) ($) 0 -1,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 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,524,298 -1,302,771 -1,311,427 -1,319,340 -1,327,188 -1,335,132 -1,341,985 -1,339,160 -1,338,557 -1,361,545 -1,374,964 -1,387,557 -1,400,303 -1,413,494 -1,426,571 -1,433,890 -1,432,302 -1,462,965 -1,484,444 -1,504,986 -1,762,332 -2,020,677 -2,043,634 -2,063,938 -2,070,611 -2,110,031 -2,145,376 -2,179,469 -2,214,879 -7,810,777 +State tax benefit (liability) ($) 0 -1,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 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 @@ -381,10 +381,10 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 31,976,757 27,329,557 27,511,151 27,677,150 27,841,782 28,008,435 28,152,182 28,092,923 28,080,270 28,562,527 28,844,027 29,108,195 29,375,577 29,652,314 29,926,636 30,080,181 30,046,859 30,690,107 31,140,703 31,571,625 36,970,233 42,389,807 42,871,401 43,297,327 43,437,333 44,264,282 45,005,738 45,720,955 46,463,776 163,854,657 +Federal taxable income ($) 0 27,684,238 23,037,856 23,219,699 23,385,846 23,550,580 23,717,277 23,860,542 23,797,168 23,786,927 24,272,035 24,554,171 24,819,269 25,087,720 25,365,435 25,640,219 25,791,580 25,756,896 26,404,897 26,855,543 27,286,479 32,685,087 38,104,650 38,586,084 39,010,360 39,146,186 39,979,105 40,720,555 41,435,766 42,178,582 159,569,456 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 -6,715,119 -5,739,207 -5,777,342 -5,812,201 -5,846,774 -5,881,771 -5,911,958 -5,899,514 -5,896,857 -5,998,131 -6,057,246 -6,112,721 -6,168,871 -6,226,986 -6,284,594 -6,316,838 -6,309,840 -6,444,922 -6,539,548 -6,630,041 -7,763,749 -8,901,859 -9,002,994 -9,092,439 -9,121,840 -9,295,499 -9,451,205 -9,601,400 -9,757,393 -34,409,478 +Federal tax benefit (liability) ($) 0 -5,813,690 -4,837,950 -4,876,137 -4,911,028 -4,945,622 -4,980,628 -5,010,714 -4,997,405 -4,995,255 -5,097,127 -5,156,376 -5,212,046 -5,268,421 -5,326,741 -5,384,446 -5,416,232 -5,408,948 -5,545,028 -5,639,664 -5,730,161 -6,863,868 -8,001,977 -8,103,078 -8,192,176 -8,220,699 -8,395,612 -8,551,317 -8,701,511 -8,857,502 -33,509,586 CASH INCENTIVES Federal IBI income ($) 0 @@ -424,16 +424,16 @@ Debt principal payment ($) 0 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 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 50,019,763 50,223,211 50,285,159 50,321,788 50,347,375 50,364,797 50,347,219 50,105,185 49,899,383 50,198,604 50,273,076 50,313,959 50,341,698 50,361,571 50,360,009 50,211,686 49,845,945 50,165,867 50,259,175 50,305,357 50,335,576 50,357,405 50,365,469 50,280,457 49,858,708 50,116,858 50,242,865 50,295,826 50,328,963 172,518,492 +Cash available for debt service (CAFDS) ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 -DSCR (pre-tax) 0.0 3.84 3.85 3.86 3.86 3.86 3.86 3.86 3.84 3.83 3.85 3.86 3.86 3.86 3.86 3.86 3.85 3.82 3.85 3.85 3.86 3.86 3.86 3.86 3.86 3.82 3.84 3.85 3.86 3.86 13.23 +DSCR (pre-tax) 0.0 3.49 3.51 3.51 3.51 3.52 3.52 3.52 3.50 3.48 3.50 3.51 3.51 3.52 3.52 3.52 3.51 3.48 3.50 3.51 3.51 3.52 3.52 3.52 3.51 3.48 3.50 3.51 3.51 3.52 12.89 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/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 0bcee53e7..4e5737cb6 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-02 - Simulation Time: 12:57 - Calculation Time: 1.820 sec + Simulation Date: 2026-04-03 + Simulation Time: 10:50 + Calculation Time: 1.878 sec ***SUMMARY OF RESULTS*** @@ -15,7 +15,7 @@ Simulation Metadata Surface Application: Absorption Chiller Average Direct-Use Heat Production: 367.18 MW Average Cooling Production: 237.93 MW - Direct-Use Cooling Breakeven Price (LCOC): 8.49 USD/MMBTU + Direct-Use Cooling Breakeven Price (LCOC): 9.02 USD/MMBTU Total CAPEX: 248.47 MUSD Number of production wells: 6 Number of injection wells: 4 @@ -37,11 +37,11 @@ Simulation Metadata Investment Tax Credit: 74.54 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 339.58 MUSD - After-tax IRR: 71.91 % - Project VIR=PI=PIR: 5.72 - Project MOIC: 26.65 - Project Payback Period: 3.57 yr + Project NPV: 322.78 MUSD + After-tax IRR: 70.10 % + Project VIR=PI=PIR: 5.49 + Project MOIC: 25.44 + Project Payback Period: 3.59 yr ***ENGINEERING PARAMETERS*** @@ -265,19 +265,19 @@ Total revenue ($) 0 Property tax net assessed value ($) 0 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 248,465,059 OPERATING EXPENSES -O&M fixed expense ($) 0 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 14,425,796 +O&M fixed expense ($) 0 18,922,935 18,922,078 18,921,816 18,921,662 18,921,555 18,921,509 18,922,013 18,926,324 18,923,798 18,920,811 18,920,144 18,919,170 18,918,050 18,917,027 18,916,542 18,918,830 18,920,256 18,915,277 18,915,225 18,915,210 18,915,210 18,915,221 18,915,390 18,917,118 18,921,498 18,915,242 18,915,249 18,915,255 18,915,261 18,915,268 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 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 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 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 14,972,419 +Total operating expenses ($) 0 19,469,558 19,468,701 19,468,439 19,468,285 19,468,178 19,468,132 19,468,636 19,472,947 19,470,421 19,467,434 19,466,768 19,465,793 19,464,673 19,463,650 19,463,165 19,465,453 19,466,879 19,461,900 19,461,848 19,461,833 19,461,833 19,461,844 19,462,013 19,463,741 19,468,121 19,461,865 19,461,872 19,461,878 19,461,884 19,461,891 -EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +EBITDA ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 OPERATING ACTIVITIES -EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +EBITDA ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 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 @@ -285,7 +285,7 @@ State PBI income ($) 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 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 -Cash flow from operating activities ($) 0 95,970,910 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,286 96,994,865 97,768,823 98,133,480 98,450,469 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,492 101,565,481 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 +Cash flow from operating activities ($) 0 91,473,771 91,980,349 92,227,940 92,436,795 92,634,548 92,827,292 92,964,649 92,686,758 92,496,862 93,273,808 93,639,132 93,957,094 94,267,197 94,580,334 94,871,719 94,904,049 94,549,114 95,517,568 96,078,809 96,578,077 97,076,067 97,589,088 98,109,014 98,487,143 98,265,219 99,376,951 100,276,443 101,084,466 101,904,664 226,991,047 INVESTING ACTIVITIES Total installed cost ($) -248,465,059 @@ -319,36 +319,36 @@ Cash flow from financing activities ($) 248,4 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 95,970,910 96,476,630 96,723,961 96,932,661 97,130,307 97,323,005 97,460,866 97,187,286 96,994,865 97,768,823 98,133,480 98,450,469 98,759,452 99,071,565 99,362,465 99,397,083 99,043,575 100,007,050 100,568,239 101,067,492 101,565,481 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 +Cash flow from operating activities ($) 0 91,473,771 91,980,349 92,227,940 92,436,795 92,634,548 92,827,292 92,964,649 92,686,758 92,496,862 93,273,808 93,639,132 93,957,094 94,267,197 94,580,334 94,871,719 94,904,049 94,549,114 95,517,568 96,078,809 96,578,077 97,076,067 97,589,088 98,109,014 98,487,143 98,265,219 99,376,951 100,276,443 101,084,466 101,904,664 226,991,047 Cash flow from investing activities ($) -248,465,059 0 0 0 0 0 0 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 ($) 248,465,059 -1,741,941 -1,863,877 -1,994,349 -2,133,953 -2,283,330 -2,443,163 -2,614,184 -2,797,177 -2,992,979 -3,202,488 -3,426,662 -3,666,528 -3,923,185 -4,197,808 -4,491,655 -4,806,071 -5,142,496 -5,502,470 -5,887,643 -6,299,778 -6,740,763 -7,212,616 -7,717,499 -8,257,724 -8,835,765 -9,454,269 -10,116,067 -10,824,192 -11,581,886 -12,392,618 -Total pre-tax cash flow ($) 0 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 +Total pre-tax cash flow ($) 0 89,731,830 90,116,471 90,233,592 90,302,842 90,351,218 90,384,129 90,350,465 89,889,581 89,503,883 90,071,320 90,212,470 90,290,566 90,344,012 90,382,525 90,380,064 90,097,978 89,406,619 90,015,098 90,191,166 90,278,299 90,335,304 90,376,472 90,391,515 90,229,419 89,429,453 89,922,683 90,160,375 90,260,274 90,322,778 214,598,430 Pre-tax Returns: Issuance of equity ($) 83,919,921 -Total pre-tax cash flow ($) 0 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 -Total pre-tax returns ($) -83,919,921 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 +Total pre-tax cash flow ($) 0 89,731,830 90,116,471 90,233,592 90,302,842 90,351,218 90,384,129 90,350,465 89,889,581 89,503,883 90,071,320 90,212,470 90,290,566 90,344,012 90,382,525 90,380,064 90,097,978 89,406,619 90,015,098 90,191,166 90,278,299 90,335,304 90,376,472 90,391,515 90,229,419 89,429,453 89,922,683 90,160,375 90,260,274 90,322,778 214,598,430 +Total pre-tax returns ($) -83,919,921 89,731,830 90,116,471 90,233,592 90,302,842 90,351,218 90,384,129 90,350,465 89,889,581 89,503,883 90,071,320 90,212,470 90,290,566 90,344,012 90,382,525 90,380,064 90,097,978 89,406,619 90,015,098 90,191,166 90,278,299 90,335,304 90,376,472 90,391,515 90,229,419 89,429,453 89,922,683 90,160,375 90,260,274 90,322,778 214,598,430 After-tax Returns: -Total pre-tax returns ($) -83,919,921 94,228,969 94,612,753 94,729,612 94,798,708 94,846,977 94,879,842 94,846,682 94,390,109 94,001,885 94,566,335 94,706,818 94,783,940 94,836,266 94,873,756 94,870,810 94,591,012 93,901,079 94,504,579 94,680,595 94,767,713 94,824,718 94,865,897 94,881,109 94,720,741 93,925,155 94,412,129 94,649,828 94,749,733 94,812,243 219,087,902 +Total pre-tax returns ($) -83,919,921 89,731,830 90,116,471 90,233,592 90,302,842 90,351,218 90,384,129 90,350,465 89,889,581 89,503,883 90,071,320 90,212,470 90,290,566 90,344,012 90,382,525 90,380,064 90,097,978 89,406,619 90,015,098 90,191,166 90,278,299 90,335,304 90,376,472 90,391,515 90,229,419 89,429,453 89,922,683 90,160,375 90,260,274 90,322,778 214,598,430 Federal ITC total income ($) 0 74,539,518 0 0 0 0 0 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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,053 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,748 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,765 -21,326,171 -46,399,113 +Federal tax benefit (liability) ($) 0 -17,277,134 -16,320,349 -16,369,977 -16,411,841 -16,451,480 -16,490,114 -16,517,647 -16,461,945 -16,423,881 -16,579,616 -16,652,844 -16,716,578 -16,778,736 -16,841,503 -16,899,910 -16,906,390 -16,835,245 -17,029,367 -17,141,865 -17,241,941 -18,400,086 -19,561,245 -19,665,461 -19,741,255 -19,696,772 -19,919,613 -20,099,912 -20,261,876 -20,426,280 -45,499,221 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 -Total after-tax returns ($) -83,919,921 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,703 73,168,501 73,167,661 73,143,994 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,494 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 +State tax benefit (liability) ($) 0 -3,921,822 -3,704,637 -3,715,902 -3,725,405 -3,734,403 -3,743,172 -3,749,422 -3,736,778 -3,728,138 -3,763,489 -3,780,111 -3,794,578 -3,808,688 -3,822,936 -3,836,194 -3,837,665 -3,821,515 -3,865,580 -3,891,117 -3,913,833 -4,176,726 -4,440,304 -4,463,960 -4,481,165 -4,471,067 -4,521,651 -4,562,578 -4,599,343 -4,636,662 -10,328,093 +Total after-tax returns ($) -83,919,921 143,072,392 70,091,486 70,147,712 70,165,596 70,165,336 70,150,842 70,083,396 69,690,858 69,351,864 69,728,215 69,779,515 69,779,410 69,756,587 69,718,087 69,643,960 69,353,923 68,749,858 69,120,151 69,158,185 69,122,525 67,758,492 66,374,924 66,262,093 66,006,999 65,261,614 65,481,418 65,497,886 65,399,055 65,259,836 158,771,117 -After-tax net cash flow ($) -17,323,556 -37,361,714 -29,234,651 146,463,482 73,481,930 73,537,959 73,555,726 73,555,385 73,540,857 73,473,791 73,084,504 72,743,605 73,117,703 73,168,501 73,167,661 73,143,994 73,104,722 73,030,230 72,741,918 72,138,929 72,505,467 72,543,461 72,507,790 71,143,757 69,760,197 69,647,494 69,393,703 68,651,621 68,866,708 68,883,180 68,784,354 68,645,139 162,156,426 -After-tax cumulative IRR (%) NaN NaN NaN 33.33 53.09 62.22 66.72 69.05 70.31 71.00 71.39 71.61 71.73 71.81 71.85 71.87 71.89 71.90 71.90 71.90 71.90 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 71.91 -After-tax cumulative NPV ($) -17,323,556 -49,805,224 -71,901,597 24,340,252 66,318,730 102,841,965 134,602,345 162,214,176 186,214,713 207,061,362 225,089,075 240,688,971 254,321,014 266,180,725 276,491,246 285,452,147 293,238,426 300,000,794 305,856,676 310,905,484 315,317,138 319,154,568 322,489,127 325,333,601 327,758,449 329,863,167 331,686,307 333,254,365 334,621,881 335,811,061 336,843,431 337,739,141 339,578,656 +After-tax net cash flow ($) -17,323,556 -37,361,714 -29,234,651 143,072,392 70,091,486 70,147,712 70,165,596 70,165,336 70,150,842 70,083,396 69,690,858 69,351,864 69,728,215 69,779,515 69,779,410 69,756,587 69,718,087 69,643,960 69,353,923 68,749,858 69,120,151 69,158,185 69,122,525 67,758,492 66,374,924 66,262,093 66,006,999 65,261,614 65,481,418 65,497,886 65,399,055 65,259,836 158,771,117 +After-tax cumulative IRR (%) NaN NaN NaN 31.79 51.18 60.26 64.78 67.14 68.43 69.14 69.55 69.78 69.91 69.99 70.03 70.06 70.08 70.08 70.09 70.09 70.09 70.10 70.10 70.10 70.10 70.10 70.10 70.10 70.10 70.10 70.10 70.10 70.10 +After-tax cumulative NPV ($) -17,323,556 -49,805,224 -71,901,597 22,111,951 62,153,549 96,992,990 127,289,557 153,628,803 176,522,987 196,407,682 213,598,287 228,470,822 241,470,930 252,781,328 262,614,389 271,160,298 278,585,871 285,034,680 290,617,822 295,429,438 299,635,109 303,293,464 306,472,338 309,181,463 311,488,639 313,491,052 315,225,215 316,715,842 318,016,135 319,146,872 320,128,434 320,979,971 322,781,082 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,323,556 -37,361,714 -29,234,651 24,001,993 -49,363,343 -49,424,173 -49,475,502 -49,524,112 -49,571,505 -49,605,411 -49,538,125 -49,490,800 -49,681,152 -49,770,837 -49,848,799 -49,924,792 -50,001,554 -50,073,100 -50,081,614 -49,994,670 -50,231,632 -50,369,654 -50,492,443 -51,913,481 -53,338,220 -53,466,135 -53,559,558 -53,506,054 -53,777,941 -53,999,168 -54,197,899 -54,399,624 39,068,534 +Annual costs ($) -17,323,556 -37,361,714 -29,234,651 20,610,903 -52,753,787 -52,814,420 -52,865,632 -52,914,161 -52,961,520 -52,995,806 -52,931,771 -52,882,541 -53,070,640 -53,159,823 -53,237,050 -53,312,199 -53,388,189 -53,459,370 -53,469,609 -53,383,741 -53,616,948 -53,754,930 -53,877,708 -55,298,746 -56,723,493 -56,851,536 -56,946,262 -56,896,061 -57,163,231 -57,384,462 -57,583,198 -57,784,927 35,683,225 PPA 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 0 0 Electricity to 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 -Present value of annual costs ($) 269,177,011 +Present value of annual costs ($) 285,974,584 Present value of annual energy costs ($) 0 Present value of annual energy nominal (kWh) 0 @@ -358,12 +358,12 @@ Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN -Present value of annual cooling costs ($) 269,177,011 +Present value of annual cooling costs ($) 285,974,584 Present value of annual cooling provided (MMBTU) 31,712,370 -LCOC Levelized cost of cooling nominal ($/MMBTU) 8.49 +LCOC Levelized cost of cooling nominal ($/MMBTU) 9.02 PROJECT STATE INCOME TAXES -EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +EBITDA ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 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 @@ -372,15 +372,15 @@ minus: Debt interest payment ($) 0 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 Total state tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 90,691,028 85,916,865 86,164,196 86,372,896 86,570,542 86,763,240 86,901,101 86,627,521 86,435,100 87,209,058 87,573,715 87,890,704 88,199,687 88,511,800 88,802,700 88,837,318 88,483,810 89,447,285 90,008,474 90,507,727 96,285,599 102,078,514 102,598,609 102,978,466 102,760,920 103,866,398 104,765,896 105,573,925 106,394,129 231,480,520 +State taxable income ($) 0 86,193,889 81,420,584 81,668,175 81,877,030 82,074,783 82,267,527 82,404,884 82,126,993 81,937,097 82,714,043 83,079,367 83,397,329 83,707,432 84,020,569 84,311,954 84,344,284 83,989,349 84,957,803 85,519,044 86,018,312 91,796,185 97,589,088 98,109,014 98,487,143 98,265,219 99,376,951 100,276,443 101,084,466 101,904,664 226,991,047 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 +State tax benefit (liability) ($) 0 -3,921,822 -3,704,637 -3,715,902 -3,725,405 -3,734,403 -3,743,172 -3,749,422 -3,736,778 -3,728,138 -3,763,489 -3,780,111 -3,794,578 -3,808,688 -3,822,936 -3,836,194 -3,837,665 -3,821,515 -3,865,580 -3,891,117 -3,913,833 -4,176,726 -4,440,304 -4,463,960 -4,481,165 -4,471,067 -4,521,651 -4,562,578 -4,599,343 -4,636,662 -10,328,093 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +EBITDA ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 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 -4,126,442 -3,909,217 -3,920,471 -3,929,967 -3,938,960 -3,947,727 -3,954,000 -3,941,552 -3,932,797 -3,968,012 -3,984,604 -3,999,027 -4,013,086 -4,027,287 -4,040,523 -4,042,098 -4,026,013 -4,069,851 -4,095,386 -4,118,102 -4,380,995 -4,644,572 -4,668,237 -4,685,520 -4,675,622 -4,725,921 -4,766,848 -4,803,614 -4,840,933 -10,532,364 +State tax benefit (liability) ($) 0 -3,921,822 -3,704,637 -3,715,902 -3,725,405 -3,734,403 -3,743,172 -3,749,422 -3,736,778 -3,728,138 -3,763,489 -3,780,111 -3,794,578 -3,808,688 -3,822,936 -3,836,194 -3,837,665 -3,821,515 -3,865,580 -3,891,117 -3,913,833 -4,176,726 -4,440,304 -4,463,960 -4,481,165 -4,471,067 -4,521,651 -4,562,578 -4,599,343 -4,636,662 -10,328,093 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 @@ -390,10 +390,10 @@ minus: Debt interest payment ($) 0 11,518,160 11,396,224 11,265,752 11,126,148 10,976,771 10,816,938 10,645,917 10,462,924 10,267,122 10,057,613 9,833,439 9,593,573 9,336,916 9,062,293 8,768,446 8,454,030 8,117,605 7,757,630 7,372,458 6,960,322 6,519,338 6,047,485 5,542,601 5,002,376 4,424,336 3,805,832 3,144,033 2,435,909 1,678,215 867,483 Total federal tax depreciation ($) 0 5,279,883 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 10,559,765 5,279,883 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 86,564,586 82,007,648 82,243,725 82,442,929 82,631,582 82,815,513 82,947,101 82,685,969 82,502,303 83,241,046 83,589,111 83,891,677 84,186,601 84,484,513 84,762,177 84,795,220 84,457,797 85,377,433 85,913,088 86,389,625 91,904,604 97,433,941 97,930,372 98,292,945 98,085,298 99,140,477 99,999,047 100,770,312 101,553,196 220,948,156 +Federal taxable income ($) 0 82,272,067 77,715,947 77,952,273 78,151,625 78,340,380 78,524,355 78,655,462 78,390,215 78,208,960 78,950,554 79,299,255 79,602,751 79,898,744 80,197,633 80,475,760 80,506,619 80,167,834 81,092,223 81,627,928 82,104,479 87,619,458 93,148,785 93,645,054 94,005,978 93,794,151 94,855,300 95,713,865 96,485,123 97,268,002 216,662,955 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 -18,178,563 -17,221,606 -17,271,182 -17,313,015 -17,352,632 -17,391,258 -17,418,891 -17,364,053 -17,325,484 -17,480,620 -17,553,713 -17,617,252 -17,679,186 -17,741,748 -17,800,057 -17,806,996 -17,736,137 -17,929,261 -18,041,748 -18,141,821 -19,299,967 -20,461,128 -20,565,378 -20,641,519 -20,597,913 -20,819,500 -20,999,800 -21,161,765 -21,326,171 -46,399,113 +Federal tax benefit (liability) ($) 0 -17,277,134 -16,320,349 -16,369,977 -16,411,841 -16,451,480 -16,490,114 -16,517,647 -16,461,945 -16,423,881 -16,579,616 -16,652,844 -16,716,578 -16,778,736 -16,841,503 -16,899,910 -16,906,390 -16,835,245 -17,029,367 -17,141,865 -17,241,941 -18,400,086 -19,561,245 -19,665,461 -19,741,255 -19,696,772 -19,919,613 -20,099,912 -20,261,876 -20,426,280 -45,499,221 CASH INCENTIVES Federal IBI income ($) 0 @@ -433,16 +433,16 @@ Debt principal payment ($) 0 Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 DSCR (DEBT FRACTION) -EBITDA ($) 0 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +EBITDA ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 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 107,489,070 107,872,854 107,989,713 108,058,809 108,107,078 108,139,943 108,106,783 107,650,210 107,261,986 107,826,436 107,966,919 108,044,041 108,096,367 108,133,857 108,130,911 107,851,113 107,161,180 107,764,680 107,940,696 108,027,814 108,084,819 108,125,998 108,141,210 107,980,842 107,185,256 107,672,230 107,909,929 108,009,834 108,072,344 232,348,003 +Cash available for debt service (CAFDS) ($) 0 102,991,931 103,376,572 103,493,693 103,562,943 103,611,319 103,644,230 103,610,566 103,149,682 102,763,984 103,331,421 103,472,570 103,550,667 103,604,113 103,642,626 103,640,165 103,358,079 102,666,720 103,275,199 103,451,267 103,538,400 103,595,405 103,636,573 103,651,616 103,489,520 102,689,554 103,182,784 103,420,476 103,520,375 103,582,879 227,858,531 Debt total payment ($) 0 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 13,260,101 -DSCR (pre-tax) 0.0 8.11 8.14 8.14 8.15 8.15 8.16 8.15 8.12 8.09 8.13 8.14 8.15 8.15 8.15 8.15 8.13 8.08 8.13 8.14 8.15 8.15 8.15 8.16 8.14 8.08 8.12 8.14 8.15 8.15 17.52 +DSCR (pre-tax) 0.0 7.77 7.80 7.80 7.81 7.81 7.82 7.81 7.78 7.75 7.79 7.80 7.81 7.81 7.82 7.82 7.79 7.74 7.79 7.80 7.81 7.81 7.82 7.82 7.80 7.74 7.78 7.80 7.81 7.81 17.18 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/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index 7198a9553..05895df27 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -319,6 +319,7 @@ def test_supported_plant_types(self): PlantType.SUPER_CRITICAL_ORC, PlantType.SINGLE_FLASH, PlantType.DOUBLE_FLASH, + PlantType.ABSORPTION_CHILLER, PlantType.INDUSTRIAL, ] From 9e7c5c0a12b507b0f58158f63b8052b8d270d497 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:18:55 -0700 Subject: [PATCH 072/127] Switch FIXME to TODO in src/geophires_x/EconomicsSam.py re: potentially migrating to SAM native electricity purchase mechanism --- src/geophires_x/EconomicsSam.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 87ed474d0..20a336f9b 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -661,9 +661,11 @@ def _get_single_owner_parameters(model: Model) -> dict[str, Any]: opex_by_year_usd.append(opex_base_usd + royalty_supplemental_payments_by_year_usd[year_index]) if model.surfaceplant.enduse_option.value == EndUseOptions.HEAT: - # FIXME WIP evaluate using SAM's native electricity purchase mechanisms instead # For pure direct-use, pumping is a grid purchase. # Create an annual array adding the specific year's pumping cost to the base O&M. + # TODO evaluate eventually migrating to SAM's native electricity purchase mechanisms instead + # (would require refactoring GEOPHIRES generation internals to support negative production...) + elec_rate_usd_per_kwh = model.surfaceplant.electricity_cost_to_buy.quantity().to('USD/kWh').magnitude annual_pumping_kwh = model.surfaceplant.PumpingkWh.quantity().to('kWh/year').magnitude opex_by_year_usd = [ From b254d0180c75612f739d4bcb05b6ebe97b9a9edb Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:20:08 -0700 Subject: [PATCH 073/127] averageannualpumpingcosts unit conversion handling (no effect on existing examples) --- src/geophires_x/Economics.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 01b6434ff..51b16f5f3 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3382,8 +3382,10 @@ def calculate_operating_and_maintenance_costs(self, model: Model) -> None: # calculate average annual pumping costs in case no electricity is provided if model.surfaceplant.plant_type.value in [PlantType.INDUSTRIAL, PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, PlantType.DISTRICT_HEATING]: - self.averageannualpumpingcosts.value = np.average( - model.surfaceplant.PumpingkWh.value) * model.surfaceplant.electricity_cost_to_buy.value / 1E6 # M$/year + self.averageannualpumpingcosts.value = (np.average( + model.surfaceplant.PumpingkWh.quantity()) * model.surfaceplant.electricity_cost_to_buy.quantity()).to( + self.averageannualpumpingcosts.CurrentUnits.value + ).magnitude if not self.oamtotalfixed.Valid: # labor cost From a1386a617eb544092f21946d3df1c89695692767 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:03:24 -0700 Subject: [PATCH 074/127] WIP - adding plus/equals delineators for capacity payment revenue sources --- src/geophires_x/EconomicsSamCalculations.py | 16 +++++++++++++++- tests/examples/example14_data-center.out | 7 ++++--- .../examples/example_SAM-single-owner-PPA-3.out | 7 ++++--- ...ple_SAM-single-owner-PPA-6_carbon-revenue.out | 7 ++++--- .../example_SAM-single-owner-PPA-7_chp.out | 7 ++++--- .../example_SAM-single-owner-PPA-8_heat.out | 7 ++++--- .../example_SAM-single-owner-PPA-9_cooling.out | 7 ++++--- 7 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 17b8b09b6..815edfc58 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -221,7 +221,9 @@ def _insert_blank_line_before(before_row_name: str) -> None: def _for_operational_years(_row: list[Any]) -> list[Any]: return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] - for capacity_payment_revenue_source in self.capacity_payment_revenue_sources: + for i, capacity_payment_revenue_source in enumerate(self.capacity_payment_revenue_sources): + # FIXME WIP does not work correctly for multiple sources yet + if capacity_payment_revenue_source.amount_provided_label is not None: _insert_row_before( revenue_row_name, @@ -244,6 +246,18 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: capacity_payment_revenue_source.price, ) + if len(self.capacity_payment_revenue_sources) > 1 and i < len(self.capacity_payment_revenue_sources) - 1: + _insert_row_before( + capacity_payment_revenue_row_name, + 'plus:', + ['' for _it in ret[_get_row_index(revenue_row_name)]][1:], + ) + + if len(self.capacity_payment_revenue_sources) > 0: + _insert_row_before( + capacity_payment_revenue_row_name, 'equals:', ['' for _it in ret[_get_row_index(revenue_row_name)]][1:] + ) + return ret def _insert_calculated_levelized_metrics_line_items(self, cf_ret: list[list[Any]]) -> list[list[Any]]: diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index c9b591a5e..be78eeac9 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-03 - Simulation Time: 09:28 - Calculation Time: 1.908 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 1.851 sec ***SUMMARY OF RESULTS*** @@ -260,6 +260,7 @@ Curtailment payment revenue ($) Heat price ($/kWh) 0.0 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 Heat revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 +equals: Capacity payment revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 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 4,733,452,205 diff --git a/tests/examples/example_SAM-single-owner-PPA-3.out b/tests/examples/example_SAM-single-owner-PPA-3.out index 9e64962d0..779e4217b 100644 --- a/tests/examples/example_SAM-single-owner-PPA-3.out +++ b/tests/examples/example_SAM-single-owner-PPA-3.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-01 - Simulation Time: 09:30 - Calculation Time: 1.207 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 1.234 sec ***SUMMARY OF RESULTS*** @@ -226,6 +226,7 @@ PPA revenue ($) 0 36,751,456 36,9 Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Add-On Profit revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 +equals: Capacity payment revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 Salvage value ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 137,736,712 diff --git a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out index 3257cf3ba..1e5e8b1f2 100644 --- a/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out +++ b/tests/examples/example_SAM-single-owner-PPA-6_carbon-revenue.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-02 - Simulation Time: 12:58 - Calculation Time: 1.790 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 1.830 sec ***SUMMARY OF RESULTS*** @@ -259,6 +259,7 @@ Curtailment payment revenue ($) 0 Carbon price ($/lb) 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 Carbon credits revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 +equals: Capacity payment revenue ($) 0 8,606,704 8,662,109 8,678,999 8,688,990 8,695,970 8,700,715 8,695,788 8,628,826 8,573,849 8,655,819 8,676,228 8,687,622 8,695,494 8,701,203 8,700,926 8,659,978 8,560,450 8,648,624 8,673,953 8,686,492 8,694,696 8,700,621 8,702,759 8,679,156 8,563,531 8,635,347 8,669,519 8,683,891 8,692,885 8,699,091 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 137,782,527 diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index b0d54ba59..67bdf1504 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-03 - Simulation Time: 10:05 - Calculation Time: 1.803 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 2.236 sec ***SUMMARY OF RESULTS*** @@ -266,6 +266,7 @@ Curtailment payment revenue ($) 0 Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 +equals: Capacity payment revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 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 141,901,510 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index ffa93f4df..5c3a0c74e 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-03 - Simulation Time: 10:40 - Calculation Time: 1.903 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 1.851 sec ***SUMMARY OF RESULTS*** @@ -248,6 +248,7 @@ Curtailment payment revenue ($) 0 Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +equals: Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 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 122,166,666 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 4e5737cb6..a9eaef9f1 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-03 - Simulation Time: 10:50 - Calculation Time: 1.878 sec + Simulation Date: 2026-04-04 + Simulation Time: 08:59 + Calculation Time: 1.856 sec ***SUMMARY OF RESULTS*** @@ -257,6 +257,7 @@ Curtailment payment revenue ($) 0 Cooling price ($/kWh) 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 Cooling revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 +equals: Capacity payment revenue ($) 0 122,461,489 122,845,273 122,962,132 123,031,228 123,079,497 123,112,362 123,079,202 122,622,629 122,234,405 122,798,855 122,939,338 123,016,460 123,068,786 123,106,276 123,103,330 122,823,532 122,133,599 122,737,099 122,913,115 123,000,233 123,057,238 123,098,417 123,113,629 122,953,261 122,157,675 122,644,649 122,882,348 122,982,253 123,044,763 123,087,892 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 124,232,530 From 351eb747fb1922fb235c7aa85aa922aa27073a67 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:08:52 -0700 Subject: [PATCH 075/127] fix line item insertion for multiple capacity payment revenue sources. add example_SAM-single-owner-PPA-7b_chp-cc --- src/geophires_x/EconomicsSamCalculations.py | 8 +- ...example_SAM-single-owner-PPA-7b_chp-cc.out | 491 ++++++++++++++++++ ...example_SAM-single-owner-PPA-7b_chp-cc.txt | 114 ++++ 3 files changed, 608 insertions(+), 5 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 815edfc58..62b4ec7b4 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -212,7 +212,7 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) - revenue_row_name = 'REVENUE' + revenue_category_row_name = 'REVENUE' capacity_payment_revenue_row_name = 'Capacity payment revenue ($)' _insert_blank_line_before('Salvage value ($)') @@ -222,15 +222,13 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] for i, capacity_payment_revenue_source in enumerate(self.capacity_payment_revenue_sources): - # FIXME WIP does not work correctly for multiple sources yet - if capacity_payment_revenue_source.amount_provided_label is not None: _insert_row_before( - revenue_row_name, + revenue_category_row_name, capacity_payment_revenue_source.amount_provided_label, _for_operational_years(capacity_payment_revenue_source.amount_provided), ) - _insert_blank_line_before(revenue_row_name) + _insert_blank_line_before(revenue_category_row_name) revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' _insert_row_before( diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out new file mode 100644 index 000000000..fbf4c8436 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out @@ -0,0 +1,491 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-04 + Simulation Time: 09:05 + Calculation Time: 1.879 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income + Average Net Electricity Production: 45.52 MW + Average Direct-Use Heat Production: 62.20 MW + Electricity breakeven price: 9.56 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.46 USD/MMBTU + Total CAPEX: 283.80 MUSD + Allocated CAPEX ($/kWe): 5304 USD/kW + Allocated CAPEX ($/kWth): 658 USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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 + Total Avoided Carbon Emissions: 5055.92 kilotonne + + + ***ECONOMIC PARAMETERS*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 85.14 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 78.06 MUSD + After-tax IRR: 33.24 % + Project VIR=PI=PIR: 1.95 + Project MOIC: 7.48 + Project Payback Period: 3.92 yr + CHP: Percent cost allocation for electrical plant: 85.55 % + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % + Pump efficiency: 80.0 % + Injection temperature: 50.5 degC + Production Wellbore heat transmission calculated with Ramey's model + Average production well temperature drop: 0.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + Power plant type: Subcritical ORC + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.3 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 382.08 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -2003.9 kPa + Average Production Well Pump Pressure Drop: 9514.2 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 154.20 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 157.40 MUSD + Overnight Capital Cost: 256.90 MUSD + Inflation costs during construction: 16.45 MUSD + Interest during construction: 10.46 MUSD + Total CAPEX: 283.80 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.12 MUSD/yr + Power plant maintenance costs: 4.17 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 14.92 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + Initial geofluid availability: 0.19 MW/(kg/s) + Maximum Total Electricity Generation: 53.91 MW + Average Total Electricity Generation: 53.66 MW + Minimum Total Electricity Generation: 52.44 MW + Initial Total Electricity Generation: 52.69 MW + Maximum Net Electricity Generation: 45.77 MW + Average Net Electricity Generation: 45.52 MW + Minimum Net Electricity Generation: 44.27 MW + Initial Net Electricity Generation: 44.54 MW + Average Annual Total Electricity Generation: 423.07 GWh + Average Annual Net Electricity Generation: 358.89 GWh + Initial pumping power/net installed power: 18.30 % + Maximum Net Heat Production: 62.26 MW + Average Net Heat Production: 62.20 MW + Minimum Net Heat Production: 61.90 MW + Initial Net Heat Production: 61.96 MW + Average Annual Heat Production: 490.38 GWh + Average Pumping Power: 8.14 MW + Heat to Power Conversion Efficiency: 14.54 % + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 201.64 8.1512 44.5358 61.9595 14.3548 + 1 1.0052 202.70 8.1476 45.4006 62.1721 14.5209 + 2 1.0062 202.89 8.1469 45.5621 62.2116 14.5518 + 3 1.0067 202.99 8.1466 45.6463 62.2321 14.5679 + 4 1.0070 203.06 8.1464 45.7020 62.2457 14.5785 + 5 1.0073 203.11 8.1462 45.7427 62.2556 14.5863 + 6 1.0074 203.13 8.1463 45.7617 62.2603 14.5899 + 7 1.0066 202.97 8.1489 45.6249 62.2274 14.5635 + 8 1.0007 201.78 8.1656 44.6309 61.9867 14.3712 + 9 1.0048 202.61 8.1453 45.3285 62.1538 14.5075 + 10 1.0060 202.86 8.1444 45.5355 62.2044 14.5471 + 11 1.0066 202.97 8.1428 45.6327 62.2279 14.5658 + 12 1.0070 203.05 8.1408 45.6954 62.2427 14.5780 + 13 1.0072 203.10 8.1387 45.7412 62.2534 14.5870 + 14 1.0074 203.13 8.1370 45.7708 62.2602 14.5928 + 15 1.0070 203.06 8.1373 45.7058 62.2444 14.5804 + 16 1.0031 202.27 8.1479 45.0504 62.0860 14.4540 + 17 1.0041 202.47 8.1345 45.2256 62.1259 14.4892 + 18 1.0058 202.82 8.1344 45.5108 62.1959 14.5436 + 19 1.0065 202.95 8.1343 45.6217 62.2231 14.5648 + 20 1.0069 203.03 8.1343 45.6887 62.2395 14.5775 + 21 1.0072 203.09 8.1343 45.7358 62.2510 14.5865 + 22 1.0074 203.13 8.1344 45.7692 62.2592 14.5928 + 23 1.0072 203.10 8.1353 45.7465 62.2539 14.5884 + 24 1.0048 202.61 8.1426 45.3324 62.1541 14.5086 + 25 1.0027 202.20 8.1344 45.0033 62.0710 14.4467 + 26 1.0056 202.76 8.1344 45.4682 62.1855 14.5355 + 27 1.0063 202.92 8.1344 45.5997 62.2177 14.5606 + 28 1.0068 203.01 8.1344 45.6742 62.2360 14.5748 + 29 1.0071 203.08 8.1344 45.7252 62.2485 14.5845 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 489.6 355.7 3002.77 143.09 7.02 + 2 490.3 358.7 3011.81 132.25 14.07 + 3 490.6 359.6 3014.56 121.39 21.12 + 4 490.7 360.1 3016.19 110.54 28.18 + 5 490.8 360.5 3017.33 99.67 35.23 + 6 490.8 360.7 3018.10 88.81 42.29 + 7 490.8 360.5 3017.30 77.95 49.35 + 8 489.9 356.8 3006.30 67.12 56.38 + 9 489.2 353.9 2997.27 56.33 63.40 + 10 490.3 358.3 3010.72 45.49 70.44 + 11 490.5 359.4 3014.03 34.64 77.49 + 12 490.7 360.0 3015.84 23.79 84.54 + 13 490.8 360.5 3017.08 12.93 91.60 + 14 490.8 360.8 3017.96 2.06 98.66 + 15 490.8 360.7 3017.88 -8.80 105.72 + 16 490.3 358.5 3011.14 -19.64 112.76 + 17 489.0 353.1 2994.77 -30.42 119.77 + 18 490.1 357.9 3009.26 -41.26 126.81 + 19 490.5 359.3 3013.41 -52.11 133.86 + 20 490.6 360.0 3015.46 -62.96 140.91 + 21 490.7 360.4 3016.81 -73.82 147.97 + 22 490.8 360.7 3017.78 -84.69 155.03 + 23 490.9 360.8 3018.13 -95.55 162.09 + 24 490.5 359.5 3014.27 -106.40 169.14 + 25 489.0 353.3 2995.26 -117.19 176.14 + 26 490.0 357.2 3007.08 -128.01 183.18 + 27 490.4 359.1 3012.68 -138.86 190.23 + 28 490.6 359.8 3015.04 -149.71 197.28 + 29 490.7 360.3 3016.51 -160.57 204.33 + 30 490.8 360.6 3017.53 -171.43 211.39 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -19,267,186 -134,870,303 -102,758,326 +plus: +Inflation cost [construction] ($) -520,214 -7,381,317 -8,550,179 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -19,787,400 -142,251,620 -111,308,506 + +Issuance of equity [construction] ($) 19,787,400 42,675,486 33,392,552 +Issuance of debt [construction] ($) 0 99,576,134 77,915,954 +Debt balance [construction] ($) 0 99,576,134 187,947,582 +Debt interest payment [construction] ($) 0 0 10,455,494 + +Installed cost [construction] ($) -19,787,400 -142,251,620 -121,764,000 +After-tax net cash flow [construction] ($) -19,787,400 -42,675,486 -33,392,552 + +ENERGY +Electricity to grid (kWh) 0.0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 +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 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 + +Saved Carbon Production (pound) 0 368,490,024 371,328,485 372,196,274 372,709,969 373,069,066 373,312,995 373,052,598 369,547,379 366,763,822 371,002,734 372,050,498 372,634,972 373,038,268 373,330,374 373,311,576 371,165,843 366,034,776 370,624,148 371,925,317 372,570,265 372,992,526 373,297,529 373,406,170 372,168,955 366,171,800 369,942,951 371,697,395 372,436,462 372,899,325 373,218,828 + +Heat provided (kWh) 0 0 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 + +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 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +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 + +Carbon price ($/lb) 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 +Carbon credits revenue ($) 0 8,357,213 8,421,588 8,441,270 8,452,920 8,461,064 8,466,596 8,460,691 8,381,194 8,318,064 8,414,200 8,437,963 8,451,219 8,460,366 8,466,990 8,466,564 8,417,900 8,301,529 8,405,614 8,435,124 8,449,751 8,459,328 8,466,246 8,468,709 8,440,650 8,304,637 8,390,165 8,429,955 8,446,717 8,457,214 8,464,461 +plus: +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 +equals: +Capacity payment revenue ($) 0 20,597,577 20,680,140 20,705,360 20,720,284 20,730,716 20,737,803 20,730,278 20,628,662 20,547,360 20,670,552 20,700,973 20,717,884 20,729,510 20,737,910 20,737,320 20,675,106 20,525,803 20,659,039 20,696,891 20,715,647 20,727,925 20,736,794 20,739,967 20,704,140 20,529,902 20,639,209 20,690,264 20,711,761 20,725,220 20,734,511 + +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 141,901,510 +Total revenue ($) 0 54,392,103 54,756,639 55,073,048 55,344,596 55,596,630 55,834,029 56,005,488 55,748,513 55,582,575 56,348,843 56,693,252 56,976,625 57,236,229 57,481,244 57,684,307 57,596,611 57,096,091 57,930,387 58,314,721 58,609,283 58,873,492 59,121,749 59,342,704 59,373,395 58,726,078 59,465,470 59,920,581 60,231,631 60,503,642 202,656,912 + +Property tax net assessed value ($) 0 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 283,803,020 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 14,922,440 +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 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 624,367 +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 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 15,546,806 + +EBITDA ($) 0 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 + +OPERATING ACTIVITIES +EBITDA ($) 0 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 +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 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Cash flow from operating activities ($) 0 25,688,966 26,192,780 26,658,217 27,089,225 27,511,880 27,931,845 28,298,649 28,250,693 28,308,405 29,313,979 29,914,445 30,471,800 31,024,563 31,583,260 32,121,962 32,393,399 32,277,152 33,522,621 34,346,909 35,112,222 35,880,134 36,667,354 37,464,999 38,112,749 38,125,685 39,571,546 40,782,581 41,902,469 43,039,936 186,119,245 + +INVESTING ACTIVITIES +Total installed cost ($) -283,803,020 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -283,803,020 +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 +equals: +Cash flow from investing activities ($) -283,803,020 0 0 0 0 0 0 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 ($) 95,855,438 +Size of debt ($) 187,947,582 +minus: +Debt principal payment ($) 0 1,989,689 2,128,967 2,277,995 2,437,455 2,608,076 2,790,642 2,985,987 3,195,006 3,418,656 3,657,962 3,914,019 4,188,001 4,481,161 4,794,842 5,130,481 5,489,615 5,873,888 6,285,060 6,725,014 7,195,765 7,699,468 8,238,431 8,815,121 9,432,180 10,092,432 10,798,903 11,554,826 12,363,664 13,229,120 14,155,159 +equals: +Cash flow from financing activities ($) 283,803,020 -1,989,689 -2,128,967 -2,277,995 -2,437,455 -2,608,076 -2,790,642 -2,985,987 -3,195,006 -3,418,656 -3,657,962 -3,914,019 -4,188,001 -4,481,161 -4,794,842 -5,130,481 -5,489,615 -5,873,888 -6,285,060 -6,725,014 -7,195,765 -7,699,468 -8,238,431 -8,815,121 -9,432,180 -10,092,432 -10,798,903 -11,554,826 -12,363,664 -13,229,120 -14,155,159 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 25,688,966 26,192,780 26,658,217 27,089,225 27,511,880 27,931,845 28,298,649 28,250,693 28,308,405 29,313,979 29,914,445 30,471,800 31,024,563 31,583,260 32,121,962 32,393,399 32,277,152 33,522,621 34,346,909 35,112,222 35,880,134 36,667,354 37,464,999 38,112,749 38,125,685 39,571,546 40,782,581 41,902,469 43,039,936 186,119,245 +Cash flow from investing activities ($) -283,803,020 0 0 0 0 0 0 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 ($) 283,803,020 -1,989,689 -2,128,967 -2,277,995 -2,437,455 -2,608,076 -2,790,642 -2,985,987 -3,195,006 -3,418,656 -3,657,962 -3,914,019 -4,188,001 -4,481,161 -4,794,842 -5,130,481 -5,489,615 -5,873,888 -6,285,060 -6,725,014 -7,195,765 -7,699,468 -8,238,431 -8,815,121 -9,432,180 -10,092,432 -10,798,903 -11,554,826 -12,363,664 -13,229,120 -14,155,159 +Total pre-tax cash flow ($) 0 23,699,277 24,063,813 24,380,222 24,651,770 24,903,804 25,141,203 25,312,662 25,055,687 24,889,749 25,656,017 26,000,426 26,283,799 26,543,403 26,788,418 26,991,481 26,903,785 26,403,265 27,237,561 27,621,895 27,916,457 28,180,666 28,428,923 28,649,878 28,680,569 28,033,252 28,772,644 29,227,755 29,538,805 29,810,815 171,964,086 + +Pre-tax Returns: +Issuance of equity ($) 95,855,438 +Total pre-tax cash flow ($) 0 23,699,277 24,063,813 24,380,222 24,651,770 24,903,804 25,141,203 25,312,662 25,055,687 24,889,749 25,656,017 26,000,426 26,283,799 26,543,403 26,788,418 26,991,481 26,903,785 26,403,265 27,237,561 27,621,895 27,916,457 28,180,666 28,428,923 28,649,878 28,680,569 28,033,252 28,772,644 29,227,755 29,538,805 29,810,815 171,964,086 +Total pre-tax returns ($) -95,855,438 23,699,277 24,063,813 24,380,222 24,651,770 24,903,804 25,141,203 25,312,662 25,055,687 24,889,749 25,656,017 26,000,426 26,283,799 26,543,403 26,788,418 26,991,481 26,903,785 26,403,265 27,237,561 27,621,895 27,916,457 28,180,666 28,428,923 28,649,878 28,680,569 28,033,252 28,772,644 29,227,755 29,538,805 29,810,815 171,964,086 + +After-tax Returns: +Total pre-tax returns ($) -95,855,438 23,699,277 24,063,813 24,380,222 24,651,770 24,903,804 25,141,203 25,312,662 25,055,687 24,889,749 25,656,017 26,000,426 26,283,799 26,543,403 26,788,418 26,991,481 26,903,785 26,403,265 27,237,561 27,621,895 27,916,457 28,180,666 28,428,923 28,649,878 28,680,569 28,033,252 28,772,644 29,227,755 29,538,805 29,810,815 171,964,086 +Federal ITC total income ($) 0 85,140,906 0 0 0 0 0 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 -3,940,378 -2,832,519 -2,925,813 -3,012,207 -3,096,926 -3,181,105 -3,254,630 -3,245,017 -3,256,585 -3,458,147 -3,578,508 -3,690,227 -3,801,026 -3,913,013 -4,020,994 -4,075,402 -4,052,101 -4,301,749 -4,466,973 -4,620,376 -5,983,147 -7,349,788 -7,509,672 -7,639,510 -7,642,103 -7,931,919 -8,174,664 -8,399,140 -8,627,140 -37,306,672 +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 -894,446 -642,967 -664,145 -683,756 -702,986 -722,095 -738,784 -736,602 -739,228 -784,982 -812,303 -837,663 -862,814 -888,234 -912,745 -925,096 -919,806 -976,475 -1,013,980 -1,048,802 -1,358,144 -1,668,365 -1,704,657 -1,734,130 -1,734,719 -1,800,505 -1,855,607 -1,906,562 -1,958,317 -8,468,426 +Total after-tax returns ($) -95,855,438 104,005,359 20,588,327 20,790,264 20,955,808 21,103,891 21,238,003 21,319,248 21,074,068 20,893,935 21,412,888 21,609,615 21,755,909 21,879,564 21,987,170 22,057,742 21,903,287 21,431,358 21,959,337 22,140,942 22,247,279 20,839,375 19,410,770 19,435,548 19,306,929 18,656,431 19,040,220 19,197,483 19,233,102 19,225,358 126,188,988 + +After-tax net cash flow ($) -19,787,400 -42,675,486 -33,392,552 104,005,359 20,588,327 20,790,264 20,955,808 21,103,891 21,238,003 21,319,248 21,074,068 20,893,935 21,412,888 21,609,615 21,755,909 21,879,564 21,987,170 22,057,742 21,903,287 21,431,358 21,959,337 22,140,942 22,247,279 20,839,375 19,410,770 19,435,548 19,306,929 18,656,431 19,040,220 19,197,483 19,233,102 19,225,358 126,188,988 +After-tax cumulative IRR (%) NaN NaN NaN 4.46 13.65 19.96 24.13 26.90 28.77 30.06 30.94 31.56 32.01 32.33 32.57 32.75 32.88 32.97 33.04 33.09 33.13 33.16 33.18 33.20 33.21 33.22 33.22 33.23 33.23 33.23 33.24 33.24 33.25 +After-tax cumulative NPV ($) -19,787,400 -56,888,775 -82,127,806 -13,785,392 -2,023,771 8,301,886 17,350,324 25,272,478 32,203,638 38,252,528 43,450,857 47,931,569 51,923,782 55,426,434 58,492,198 61,172,672 63,514,494 65,556,971 67,320,233 68,820,155 70,156,289 71,327,509 72,350,638 73,183,840 73,858,553 74,445,887 74,953,127 75,379,255 75,757,344 76,088,765 76,377,430 76,628,291 78,059,788 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -19,787,400 -42,675,486 -33,392,552 49,613,256 -34,168,312 -34,282,784 -34,388,788 -34,492,738 -34,596,026 -34,686,240 -34,674,445 -34,688,639 -34,935,955 -35,083,637 -35,220,716 -35,356,665 -35,494,074 -35,626,565 -35,693,323 -35,664,733 -35,971,050 -36,173,779 -36,362,004 -38,034,117 -39,710,978 -39,907,155 -40,066,466 -40,069,648 -40,425,250 -40,723,098 -40,998,529 -41,278,283 65,433,587 +PPA revenue ($) 0 0 0 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +Electricity to grid (kWh) 0 0 0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 + +Present value of annual costs ($) 198,704,506 + +Present value of annual energy costs ($) 170,000,152 +Present value of annual energy nominal (kWh) 1,777,658,214 +LCOE Levelized cost of energy nominal (cents/kWh) 9.56 + +Present value of PPA revenue ($) 174,283,198 +Present value of annual energy nominal (kWh) 1,777,658,214 +LPPA Levelized PPA price nominal (cents/kWh) 9.80 + +Present value of annual heat costs ($) 28,704,354 +Present value of annual heat provided (MMBTU) 8,290,884 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.46 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 +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 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Total state tax depreciation ($) 0 6,030,814 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 6,030,814 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 19,658,152 14,131,152 14,596,589 15,027,596 15,450,252 15,870,216 16,237,020 16,189,064 16,246,776 17,252,351 17,852,817 18,410,171 18,962,935 19,521,631 20,060,334 20,331,771 20,215,524 21,460,993 22,285,281 23,050,593 29,849,320 36,667,354 37,464,999 38,112,749 38,125,685 39,571,546 40,782,581 41,902,469 43,039,936 186,119,245 + +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 -894,446 -642,967 -664,145 -683,756 -702,986 -722,095 -738,784 -736,602 -739,228 -784,982 -812,303 -837,663 -862,814 -888,234 -912,745 -925,096 -919,806 -976,475 -1,013,980 -1,048,802 -1,358,144 -1,668,365 -1,704,657 -1,734,130 -1,734,719 -1,800,505 -1,855,607 -1,906,562 -1,958,317 -8,468,426 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 +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 -894,446 -642,967 -664,145 -683,756 -702,986 -722,095 -738,784 -736,602 -739,228 -784,982 -812,303 -837,663 -862,814 -888,234 -912,745 -925,096 -919,806 -976,475 -1,013,980 -1,048,802 -1,358,144 -1,668,365 -1,704,657 -1,734,130 -1,734,719 -1,800,505 -1,855,607 -1,906,562 -1,958,317 -8,468,426 +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 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Total federal tax depreciation ($) 0 6,030,814 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 12,061,628 6,030,814 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 18,763,706 13,488,185 13,932,444 14,343,841 14,747,265 15,148,121 15,498,236 15,452,462 15,507,548 16,467,369 17,040,514 17,572,509 18,100,121 18,633,397 19,147,589 19,406,675 19,295,718 20,484,518 21,271,300 22,001,791 28,491,176 34,998,989 35,760,341 36,378,618 36,390,966 37,771,041 38,926,974 39,995,907 41,081,619 177,650,819 + +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 -3,940,378 -2,832,519 -2,925,813 -3,012,207 -3,096,926 -3,181,105 -3,254,630 -3,245,017 -3,256,585 -3,458,147 -3,578,508 -3,690,227 -3,801,026 -3,913,013 -4,020,994 -4,075,402 -4,052,101 -4,301,749 -4,466,973 -4,620,376 -5,983,147 -7,349,788 -7,509,672 -7,639,510 -7,642,103 -7,931,919 -8,174,664 -8,399,140 -8,627,140 -37,306,672 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 85,140,906 0 0 0 0 0 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 85,140,906 0 0 0 0 0 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 ($) 187,947,582 185,957,893 183,828,926 181,550,931 179,113,477 176,505,401 173,714,759 170,728,772 167,533,767 164,115,111 160,457,149 156,543,129 152,355,129 147,873,968 143,079,126 137,948,645 132,459,030 126,585,143 120,300,083 113,575,069 106,379,304 98,679,836 90,441,405 81,626,284 72,194,104 62,101,671 51,302,768 39,747,943 27,384,279 14,155,159 0 +Debt interest payment ($) 0 13,156,331 13,017,053 12,868,025 12,708,565 12,537,943 12,355,378 12,160,033 11,951,014 11,727,364 11,488,058 11,232,000 10,958,019 10,664,859 10,351,178 10,015,539 9,656,405 9,272,132 8,860,960 8,421,006 7,950,255 7,446,551 6,907,589 6,330,898 5,713,840 5,053,587 4,347,117 3,591,194 2,782,356 1,916,900 990,861 +Debt principal payment ($) 0 1,989,689 2,128,967 2,277,995 2,437,455 2,608,076 2,790,642 2,985,987 3,195,006 3,418,656 3,657,962 3,914,019 4,188,001 4,481,161 4,794,842 5,130,481 5,489,615 5,873,888 6,285,060 6,725,014 7,195,765 7,699,468 8,238,431 8,815,121 9,432,180 10,092,432 10,798,903 11,554,826 12,363,664 13,229,120 14,155,159 +Debt total payment ($) 0 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 +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 38,845,297 39,209,833 39,526,242 39,797,790 40,049,823 40,287,223 40,458,682 40,201,707 40,035,768 40,802,037 41,146,446 41,429,819 41,689,422 41,934,437 42,137,501 42,049,804 41,549,284 42,383,581 42,767,915 43,062,477 43,326,686 43,574,942 43,795,897 43,826,588 43,179,272 43,918,663 44,373,775 44,684,825 44,956,835 187,110,106 +Debt total payment ($) 0 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 15,146,020 +DSCR (pre-tax) 0.0 2.56 2.59 2.61 2.63 2.64 2.66 2.67 2.65 2.64 2.69 2.72 2.74 2.75 2.77 2.78 2.78 2.74 2.80 2.82 2.84 2.86 2.88 2.89 2.89 2.85 2.90 2.93 2.95 2.97 12.35 + +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 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 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 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 +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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt new file mode 100644 index 000000000..36ca1cc23 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt @@ -0,0 +1,114 @@ +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Starting Carbon Credit Value, 50 USD/tonne +Ending Carbon Credit Value, 999, -- 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. +Carbon Escalation Rate Per Year, 0 +Units:Total Saved Carbon Production, kilotonne + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 31, -- CHP Topping Cycle with electricity as the main product +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 47.5 +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From 22463821d5d98f4d1b977bde97139484f8145091 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:39:09 -0700 Subject: [PATCH 076/127] remove electricity from grid and electricity purchase line items for results that may consume grid electricity --- src/geophires_x/EconomicsSamCalculations.py | 47 +++++++++++++++++++ .../example_SAM-single-owner-PPA-8_heat.out | 6 +-- ...example_SAM-single-owner-PPA-9_cooling.out | 6 +-- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index 62b4ec7b4..d644b95b1 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -171,6 +171,9 @@ def _get_row(row_name__: str) -> list[Any]: ret = self._insert_calculated_levelized_metrics_line_items(ret) + if self._may_consume_grid_electricity: + ret = self._adjust_electricity_line_items_for_possible_grid_electricity_consumption(ret) + return ret def _insert_royalties_rate_schedule(self, cf_ret: list[list[Any]]) -> list[list[Any]]: @@ -581,6 +584,50 @@ def insert_lcoc_metrics(): return ret + @property + def _may_consume_grid_electricity(self) -> bool: + """ + TODO/WIP maybe should be passed in explicitly instead of this potentially fragile derivation/assumption + """ + + try: + elec_to_grid_kwh_index = [it[0] for it in self._sam_cash_flow_profile_operational_years].index( + 'Electricity to grid (kWh)' + ) + except ValueError: + # Shouldn't happen (unless SAM financial engine stops including the line item, which would be + # backwards-incompatible) + return False + + return all( + float(it) == 0.0 if is_float(it) else it == '' + for it in self._sam_cash_flow_profile_operational_years[elec_to_grid_kwh_index][1:] + ) + + # noinspection PyMethodMayBeStatic + def _adjust_electricity_line_items_for_possible_grid_electricity_consumption( + self, cf_ret: list[list[Any]] + ) -> list[list[Any]]: + """ + Remove electricity line items that are not parameterized into SAM, to avoid inaccurately displaying the + default 0 values. For example, direct-use heat end-use requires pumping power that comes from grid electricity. + The cost of this electricity is accounted for in GEOPHIRES OPEX calculations, prior to SAM calculations. + + TODO to parameterize relevant factors into SAM and don't remove their line items + """ + + ret = cf_ret.copy() + + def _get_row_index(row_name_: str) -> list[Any]: + return [it[0] for it in ret].index(row_name_) + + elec_from_grid_idx = _get_row_index('Electricity from grid (kWh)') + ret.pop(elec_from_grid_idx) + + ret.pop(_get_row_index('Electricity purchase ($)')) + + return ret + @property def sam_after_tax_net_cash_flow_all_years(self) -> list[float]: return _after_tax_net_cash_flow_all_years(self.sam_cash_flow_profile, self._pre_revenue_years_count) diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index 5c3a0c74e..e941c2331 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-04 - Simulation Time: 08:59 - Calculation Time: 1.851 sec + Simulation Time: 09:31 + Calculation Time: 1.795 sec ***SUMMARY OF RESULTS*** @@ -236,7 +236,6 @@ After-tax net cash flow [construction] ($) -17,035,483 -36,740,426 -28,7 ENERGY Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Heat provided (kWh) 0 0 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 @@ -261,7 +260,6 @@ O&M fixed expense ($) 0 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 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 537,533 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 19,395,468 19,394,611 19,394,350 19,394,195 19,394,088 19,394,042 19,394,547 19,398,857 19,396,331 19,393,344 19,392,678 19,391,703 19,390,583 19,389,560 19,389,075 19,391,363 19,392,790 19,387,810 19,387,758 19,387,743 19,387,743 19,387,754 19,387,923 19,389,651 19,394,031 19,387,776 19,387,782 19,387,788 19,387,794 19,387,801 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index a9eaef9f1..2a6627da3 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-04 - Simulation Time: 08:59 - Calculation Time: 1.856 sec + Simulation Time: 09:31 + Calculation Time: 1.867 sec ***SUMMARY OF RESULTS*** @@ -245,7 +245,6 @@ After-tax net cash flow [construction] ($) -17,323,556 -37,361,714 -29,2 ENERGY Electricity to 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 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Cooling provided (kWh/yr) 0 0 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 @@ -270,7 +269,6 @@ O&M fixed expense ($) 0 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 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 546,623 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 19,469,558 19,468,701 19,468,439 19,468,285 19,468,178 19,468,132 19,468,636 19,472,947 19,470,421 19,467,434 19,466,768 19,465,793 19,464,673 19,463,650 19,463,165 19,465,453 19,466,879 19,461,900 19,461,848 19,461,833 19,461,833 19,461,844 19,462,013 19,463,741 19,468,121 19,461,865 19,461,872 19,461,878 19,461,884 19,461,891 From d22a9d536933dcffb13e2c69055cf9d3144068d5 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:53:52 -0700 Subject: [PATCH 077/127] _adjust_electricity_line_items_for_possible_grid_electricity_consumption minor code cleanup --- src/geophires_x/EconomicsSamCalculations.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index d644b95b1..c630aa5ab 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -618,13 +618,22 @@ def _adjust_electricity_line_items_for_possible_grid_electricity_consumption( ret = cf_ret.copy() - def _get_row_index(row_name_: str) -> list[Any]: + def _get_row_index(row_name_: str) -> int: return [it[0] for it in ret].index(row_name_) - elec_from_grid_idx = _get_row_index('Electricity from grid (kWh)') - ret.pop(elec_from_grid_idx) + def _remove_line_item(row_name_: str) -> None: + idx = _get_row_index(row_name_) + row = ret[idx] + if any(it != '' and (is_float(it) and float(it) != 0.0) for it in row[1:]): + raise RuntimeError( + f'Line item "{row[0]}" has non-zero values. ' + f'This is unexpected and probably indicates an internal error or bug.' + ) + + ret.pop(idx) - ret.pop(_get_row_index('Electricity purchase ($)')) + for line_item in ['Electricity from grid (kWh)', 'Electricity purchase ($)']: + _remove_line_item(line_item) return ret From bf78ae6faac7792ebe825eed220378c4617092c0 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:55:09 -0700 Subject: [PATCH 078/127] fix incorrect _get_row_index type signatures --- src/geophires_x/EconomicsSamCalculations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index c630aa5ab..c9c01c590 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -126,7 +126,7 @@ def sam_cash_flow_profile(self) -> list[list[Any]]: for construction_row in reversed(construction_rows): ret.insert(1, construction_row) - def _get_row_index(row_name_: str) -> list[Any]: + def _get_row_index(row_name_: str) -> int: return [it[0] for it in ret].index(row_name_) def _get_row(row_name__: str) -> list[Any]: @@ -179,7 +179,7 @@ def _get_row(row_name__: str) -> list[Any]: def _insert_royalties_rate_schedule(self, cf_ret: list[list[Any]]) -> list[list[Any]]: ret = cf_ret.copy() - def _get_row_index(row_name_: str) -> list[Any]: + def _get_row_index(row_name_: str) -> int: return [it[0] for it in ret].index(row_name_) ret.insert( @@ -203,7 +203,7 @@ def _insert_capacity_payment_line_items(self, cf_ret: list[list[Any]]) -> list[l ret: list[list[Any]] = cf_ret.copy() - def _get_row_index(row_name_: str) -> list[Any]: + def _get_row_index(row_name_: str) -> int: return [it[0] for it in ret].index(row_name_) def _insert_row_before(before_row_name: str, row_name: str, row_content: list[Any]) -> None: From a37f5b37ff3e4052ac6639b881ddf47c1eaf8f0d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sat, 4 Apr 2026 10:15:59 -0700 Subject: [PATCH 079/127] remove redundant /yr suffix from cooling provided unit --- src/geophires_x/EconomicsSam.py | 11 ++++++++++- src/geophires_x/EconomicsSamCalculations.py | 15 ++++++++------- .../example_SAM-single-owner-PPA-9_cooling.out | 6 +++--- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 20a336f9b..7a8c0ecf3 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -783,13 +783,22 @@ def _get_revenue_usd_series(econ_revenue_output: OutputParameter) -> Iterable[fl ) if has_cooling_revenue: + # cooling_kWh_Produced's default preferred units are kWh/yr. + # The /yr is redundant when displaying on an annualized basis. + # TODO there are various degrees of increased sophistication with which this adjustment could be performed, + # e.g. adding a derived property to CurrencyFrequencyUnit instead of manually splitting the string, + # re-interpolating the revenue vector if it's not annualized, etc. + cooling_provided_unit = model.surfaceplant.cooling_kWh_Produced.CurrentUnits.value + if (cooling_provided_unit if cooling_provided_unit is not None else '').endswith('/yr'): + cooling_provided_unit = cooling_provided_unit.split('/yr')[0] + ret.append( CapacityPaymentRevenueSource( name='Cooling', revenue_usd=_get_revenue_usd_series(econ.CoolingRevenue), price_label=f'Cooling price ({econ.CoolingPrice.CurrentUnits.value})', price=_price_vector(econ.CoolingPrice.value), - amount_provided_label=f'Cooling provided ({model.surfaceplant.cooling_kWh_Produced.CurrentUnits.value})', + amount_provided_label=f'Cooling provided ({cooling_provided_unit})', amount_provided=model.surfaceplant.cooling_kWh_Produced.value, ) ) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index c9c01c590..a65d99c12 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -453,11 +453,11 @@ def backfill_lppa_metrics() -> None: # --- Non-electricity levelized metrics (LCOH, LCOC) --- def insert_non_electricity_levelized_metrics( - amount_provided_kwh_row_name: str, # = 'Heat provided (kWh)', - amount_provided_unit: str, # = 'MMBTU', - levelized_cost_nominal_row_base_name: str, # =f'LCOH Levelized cost of heating nominal', - pv_annual_non_elec_type_costs_row_name: str, # ='Present value of annual heat costs ($)', - pv_of_annual_amount_provided_row_base_name: str, # =f'Present value of annual heat provided', + amount_provided_kwh_row_name: str, # e.g. 'Heat provided (kWh)' + amount_provided_unit: str, # e.g. 'MMBTU' + levelized_cost_nominal_row_base_name: str, # e.g. 'LCOH Levelized cost of heating nominal' + pv_annual_non_elec_type_costs_row_name: str, # e.g. 'Present value of annual heat costs ($)' + pv_of_annual_amount_provided_row_base_name: str, # e.g. 'Present value of annual heat provided' ) -> None: levelized_cost_nominal_row_name = f'{levelized_cost_nominal_row_base_name} ($/{amount_provided_unit})' @@ -473,7 +473,7 @@ def insert_non_electricity_levelized_metrics( 0 if it == '' else (int(it) if is_int(it) else it) for it in amount_provided[1:] ] - # TODO/WIP maybe duplicate amount provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror + # TODO maybe duplicate amount provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror # electricity convention # amount_provided_kwh_row_index = _get_row_index_after( # amount_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title @@ -573,7 +573,8 @@ def insert_lcoh_metrics(): def insert_lcoc_metrics(): insert_non_electricity_levelized_metrics( - amount_provided_kwh_row_name='Cooling provided (kWh/yr)', # FIXME WIP should not have /yr suffix + # See relevant TODO in geophires_x.EconomicsSam._get_capacity_payment_revenue_sources re: unit + amount_provided_kwh_row_name='Cooling provided (kWh)', amount_provided_unit='MMBTU', # TODO maybe should be derived from LCOC preferred units levelized_cost_nominal_row_base_name=f'LCOC Levelized cost of cooling nominal', pv_annual_non_elec_type_costs_row_name='Present value of annual cooling costs ($)', diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 2a6627da3..78aea6b25 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-04 - Simulation Time: 09:31 - Calculation Time: 1.867 sec + Simulation Time: 10:15 + Calculation Time: 1.800 sec ***SUMMARY OF RESULTS*** @@ -247,7 +247,7 @@ ENERGY Electricity to 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Cooling provided (kWh/yr) 0 0 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 +Cooling provided (kWh) 0 0 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 REVENUE PPA price (cents/kWh) 0.0 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 From cd04c5da38f9c80aed4a7e80d2c69f159f854459 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 07:00:32 -0700 Subject: [PATCH 080/127] fix HeatProducedMax OutputParameterDict key --- src/geophires_x/SurfacePlant.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/geophires_x/SurfacePlant.py b/src/geophires_x/SurfacePlant.py index dd9453692..6113add02 100644 --- a/src/geophires_x/SurfacePlant.py +++ b/src/geophires_x/SurfacePlant.py @@ -596,7 +596,7 @@ def __init__(self, model: Model): PreferredUnits=PowerUnit.MW, CurrentUnits=PowerUnit.MW ) - self.HeatProducedMax = self.OutputParameterDict[self.HeatProduced.Name] = OutputParameter( + self.HeatProducedMax = self.OutputParameterDict[self.HeatProducedMax.Name] = OutputParameter( Name="Maximum Net Heat Production", UnitType=Units.POWER, PreferredUnits=PowerUnit.MW, From 8e7ac225fc23d424e1835328406e8236374f4529 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 07:14:41 -0700 Subject: [PATCH 081/127] regen schema --- src/geophires_x_schema_generator/geophires-result.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 6c198d62b..41d4d765d 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -595,7 +595,7 @@ "Average Annual Net Electricity Generation": {}, "Maximum Net Heat Production": { "type": "number", - "description": "Heat Produced in MW", + "description": "", "units": "MW" }, "Average Net Heat Production": {}, From 47d564a01e968a5b8ccd35c7d300e6da4991edee Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 07:37:07 -0700 Subject: [PATCH 082/127] Rename "Add-On Profit revenue" to "Add-On revenue" and update tooltip text accordingly --- src/geophires_x/EconomicsAddOns.py | 6 +++++- src/geophires_x/EconomicsSam.py | 2 +- src/geophires_x_schema_generator/geophires-request.json | 2 +- tests/examples/example_SAM-single-owner-PPA-3.out | 8 ++++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/geophires_x/EconomicsAddOns.py b/src/geophires_x/EconomicsAddOns.py index 17f6fa627..3fb7da11b 100644 --- a/src/geophires_x/EconomicsAddOns.py +++ b/src/geophires_x/EconomicsAddOns.py @@ -101,7 +101,11 @@ def multi_addon_tooltip_text(param_name: str) -> str: UnitType=Units.CURRENCYFREQUENCY, PreferredUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR, CurrentUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR, - ToolTipText=f'Annual profit gained. {multi_addon_tooltip_text("AddOn Profit Gained")}' + ToolTipText=f'The annual gross revenue or cash inflow generated by the add-on. Note: While ' + f'named \'Profit\', this value is treated mathematically as top-line revenue in economic ' + f'calculations. Do not subtract Add-On OPEX from this value, as the model accounts for ' + f'Add-On OPEX separately. ' + f'{multi_addon_tooltip_text("AddOn Profit Gained")}' ) # local variables that need initialization diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 7a8c0ecf3..563f9bef3 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -741,7 +741,7 @@ def _has_revenue_type(econ_revenue_output: OutputParameter) -> bool: model.addeconomics.AddOnProfitGainedPerYear.quantity().to('USD/yr').magnitude ) add_on_profit_usd_series = [round(add_on_profit_per_year_usd)] * model.surfaceplant.plant_lifetime.value - add_on_source = CapacityPaymentRevenueSource(name='Add-On Profit', revenue_usd=add_on_profit_usd_series) + add_on_source = CapacityPaymentRevenueSource(name='Add-On', revenue_usd=add_on_profit_usd_series) ret.append(add_on_source) def _price_vector(price_value: list[float]) -> list[float | str]: diff --git a/src/geophires_x_schema_generator/geophires-request.json b/src/geophires_x_schema_generator/geophires-request.json index 9733a4df2..b1873a036 100644 --- a/src/geophires_x_schema_generator/geophires-request.json +++ b/src/geophires_x_schema_generator/geophires-request.json @@ -2493,7 +2493,7 @@ "maximum": 1000.0 }, "AddOn Profit Gained": { - "description": "Annual profit gained. If using multiple add-ons: either (1) specify this value as an array or (2) use multiple parameters suffixed with a number e.g. 'AddOn Profit Gained 1', 'AddOn Profit Gained 2', etc.", + "description": "The annual gross revenue or cash inflow generated by the add-on. Note: While named 'Profit', this value is treated mathematically as top-line revenue in economic calculations. Do not subtract Add-On OPEX from this value, as the model accounts for Add-On OPEX separately. If using multiple add-ons: either (1) specify this value as an array or (2) use multiple parameters suffixed with a number e.g. 'AddOn Profit Gained 1', 'AddOn Profit Gained 2', etc.", "type": "array", "units": "MUSD/yr", "category": "Economics", diff --git a/tests/examples/example_SAM-single-owner-PPA-3.out b/tests/examples/example_SAM-single-owner-PPA-3.out index 779e4217b..7f86a1143 100644 --- a/tests/examples/example_SAM-single-owner-PPA-3.out +++ b/tests/examples/example_SAM-single-owner-PPA-3.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 08:59 - Calculation Time: 1.234 sec + Simulation Date: 2026-04-05 + Simulation Time: 07:35 + Calculation Time: 1.219 sec ***SUMMARY OF RESULTS*** @@ -225,7 +225,7 @@ PPA price (cents/kWh) 0.0 8.0 8.0 PPA revenue ($) 0 36,751,456 36,964,904 38,519,865 40,051,439 41,573,241 43,089,812 44,603,196 46,114,476 47,624,287 49,133,030 50,640,973 52,148,303 53,655,154 55,161,626 56,667,791 58,173,709 59,679,427 61,184,986 62,690,409 64,195,415 Curtailment payment revenue ($) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Add-On Profit revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 +Add-On revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 equals: Capacity payment revenue ($) 0 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 15,000,000 From 335fff9413f4ecc2ccfa6994afef65d7a07db640 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 07:58:22 -0700 Subject: [PATCH 083/127] blanks instead of 0s for capacity payment revenue sources amount provided during re-revenue years < 0 --- src/geophires_x/EconomicsSamCalculations.py | 27 +++++++++---------- .../example_SAM-single-owner-PPA-7_chp.out | 8 +++--- ...example_SAM-single-owner-PPA-7b_chp-cc.out | 8 +++--- .../example_SAM-single-owner-PPA-8_heat.out | 8 +++--- ...example_SAM-single-owner-PPA-9_cooling.out | 8 +++--- 5 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index a65d99c12..c26d18bcb 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -215,11 +215,11 @@ def _insert_row_before(before_row_name: str, row_name: str, row_content: list[An def _insert_blank_line_before(before_row_name: str) -> None: _insert_row_before(before_row_name, '', ['' for _it in ret[_get_row_index(before_row_name)]][1:]) - revenue_category_row_name = 'REVENUE' - capacity_payment_revenue_row_name = 'Capacity payment revenue ($)' + REVENUE_CATEGORY_ROW_NAME = 'REVENUE' + CAPACITY_PAYMENT_REVENUE_ROW_NAME = 'Capacity payment revenue ($)' _insert_blank_line_before('Salvage value ($)') - _insert_blank_line_before(capacity_payment_revenue_row_name) + _insert_blank_line_before(CAPACITY_PAYMENT_REVENUE_ROW_NAME) def _for_operational_years(_row: list[Any]) -> list[Any]: return [*([''] * (self._pre_revenue_years_count - 1)), 0, *_row] @@ -227,15 +227,15 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: for i, capacity_payment_revenue_source in enumerate(self.capacity_payment_revenue_sources): if capacity_payment_revenue_source.amount_provided_label is not None: _insert_row_before( - revenue_category_row_name, + REVENUE_CATEGORY_ROW_NAME, capacity_payment_revenue_source.amount_provided_label, _for_operational_years(capacity_payment_revenue_source.amount_provided), ) - _insert_blank_line_before(revenue_category_row_name) + _insert_blank_line_before(REVENUE_CATEGORY_ROW_NAME) revenue_row_name = f'{capacity_payment_revenue_source.name} revenue ($)' _insert_row_before( - capacity_payment_revenue_row_name, + CAPACITY_PAYMENT_REVENUE_ROW_NAME, revenue_row_name, _for_operational_years(capacity_payment_revenue_source.revenue_usd), ) @@ -249,14 +249,14 @@ def _for_operational_years(_row: list[Any]) -> list[Any]: if len(self.capacity_payment_revenue_sources) > 1 and i < len(self.capacity_payment_revenue_sources) - 1: _insert_row_before( - capacity_payment_revenue_row_name, + CAPACITY_PAYMENT_REVENUE_ROW_NAME, 'plus:', ['' for _it in ret[_get_row_index(revenue_row_name)]][1:], ) if len(self.capacity_payment_revenue_sources) > 0: _insert_row_before( - capacity_payment_revenue_row_name, 'equals:', ['' for _it in ret[_get_row_index(revenue_row_name)]][1:] + CAPACITY_PAYMENT_REVENUE_ROW_NAME, 'equals:', ['' for _it in ret[_get_row_index(revenue_row_name)]][1:] ) return ret @@ -468,19 +468,16 @@ def insert_non_electricity_levelized_metrics( if amount_provided_kwh_row_index == -1: return # No heat provided row, nothing to do - amount_provided = cf_ret[amount_provided_kwh_row_index].copy() - amount_provided_backfilled = [ - 0 if it == '' else (int(it) if is_int(it) else it) for it in amount_provided[1:] - ] - # TODO maybe duplicate amount provided row after after_tax_lcoe_and_ppa_price_header_row_title to mirror # electricity convention # amount_provided_kwh_row_index = _get_row_index_after( # amount_provided_kwh_row_name, after_tax_lcoe_and_ppa_price_header_row_title # ) - ret[amount_provided_kwh_row_index][1:] = amount_provided_backfilled - + amount_provided = cf_ret[amount_provided_kwh_row_index].copy() + amount_provided_backfilled = [ + 0 if it == '' else (int(it) if is_int(it) else it) for it in amount_provided[1:] + ] # PV of amount provided (e.g. heat) at Year 0 pv_amount_provided_year_0_kwh = _calculate_pv_year_0(amount_provided_backfilled) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 67bdf1504..87af53816 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 08:59 - Calculation Time: 2.236 sec + Simulation Date: 2026-04-05 + Simulation Time: 07:56 + Calculation Time: 1.786 sec ***SUMMARY OF RESULTS*** @@ -257,7 +257,7 @@ Electricity to grid (kWh) 0.0 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 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 -Heat provided (kWh) 0 0 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 +Heat provided (kWh) 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 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 diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out index fbf4c8436..84803dcb8 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 09:05 - Calculation Time: 1.879 sec + Simulation Date: 2026-04-05 + Simulation Time: 07:56 + Calculation Time: 1.883 sec ***SUMMARY OF RESULTS*** @@ -260,7 +260,7 @@ Electricity to grid net (kWh) 0.0 Saved Carbon Production (pound) 0 368,490,024 371,328,485 372,196,274 372,709,969 373,069,066 373,312,995 373,052,598 369,547,379 366,763,822 371,002,734 372,050,498 372,634,972 373,038,268 373,330,374 373,311,576 371,165,843 366,034,776 370,624,148 371,925,317 372,570,265 372,992,526 373,297,529 373,406,170 372,168,955 366,171,800 369,942,951 371,697,395 372,436,462 372,899,325 373,218,828 -Heat provided (kWh) 0 0 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 +Heat provided (kWh) 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 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 diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index e941c2331..b56638173 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 09:31 - Calculation Time: 1.795 sec + Simulation Date: 2026-04-05 + Simulation Time: 07:56 + Calculation Time: 1.789 sec ***SUMMARY OF RESULTS*** @@ -238,7 +238,7 @@ ENERGY Electricity to 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Heat provided (kWh) 0 0 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 +Heat provided (kWh) 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 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 diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out index 78aea6b25..8fbfbba25 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.out +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 10:15 - Calculation Time: 1.800 sec + Simulation Date: 2026-04-05 + Simulation Time: 07:56 + Calculation Time: 1.823 sec ***SUMMARY OF RESULTS*** @@ -247,7 +247,7 @@ ENERGY Electricity to 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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -Cooling provided (kWh) 0 0 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 +Cooling provided (kWh) 0 1,869,641,058 1,875,500,352 1,877,284,464 1,878,339,361 1,879,076,288 1,879,578,043 1,879,071,780 1,872,101,213 1,866,174,120 1,874,791,681 1,876,936,451 1,878,113,889 1,878,912,769 1,879,485,128 1,879,440,147 1,875,168,427 1,864,635,099 1,873,848,846 1,876,536,111 1,877,866,147 1,878,736,464 1,879,365,149 1,879,597,391 1,877,149,026 1,865,002,674 1,872,437,395 1,876,066,382 1,877,591,655 1,878,546,001 1,879,204,462 REVENUE PPA price (cents/kWh) 0.0 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 From 519eaa694523cf50b06915b48d254d3cd44ee398 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 08:17:24 -0700 Subject: [PATCH 084/127] better CHP electricity/heat allocated capex output field names --- src/geophires_x/Economics.py | 6 +++--- src/geophires_x_client/geophires_x_result.py | 4 ++-- .../geophires-result.json | 12 ++---------- .../examples/example_SAM-single-owner-PPA-7_chp.out | 8 ++++---- .../example_SAM-single-owner-PPA-7b_chp-cc.out | 8 ++++---- 5 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 51b16f5f3..9247a94d9 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2152,7 +2152,7 @@ def __init__(self, model: Model): 'included in the base Total CAPEX.', ) self.capex_allocated_per_kwe = self.OutputParameterDict[self.capex_allocated_per_kwe.Name] = OutputParameter( - Name="Allocated CAPEX ($/kWe)", + Name="Electricity CAPEX ($/kWe)", UnitType=Units.ENERGYCOST, PreferredUnits=EnergyCostUnit.DOLLARSPERKW, CurrentUnits=EnergyCostUnit.DOLLARSPERKW, @@ -2161,8 +2161,8 @@ def __init__(self, model: Model): 'In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the ' 'electrical plant cost allocation ratio, divided by the maximum net electricity generation.' ) - self.capex_allocated_per_kwth = self.OutputParameterDict[self.capex_allocated_per_kwth.Name] =OutputParameter( - Name="Allocated CAPEX ($/kWth)", + self.capex_allocated_per_kwth = self.OutputParameterDict[self.capex_allocated_per_kwth.Name] = OutputParameter( + Name="Heat CAPEX ($/kWth)", UnitType=Units.ENERGYCOST, PreferredUnits=EnergyCostUnit.DOLLARSPERKW, CurrentUnits=EnergyCostUnit.DOLLARSPERKW, diff --git a/src/geophires_x_client/geophires_x_result.py b/src/geophires_x_client/geophires_x_result.py index d4a3fdf8c..e5ef87fb5 100644 --- a/src/geophires_x_client/geophires_x_result.py +++ b/src/geophires_x_client/geophires_x_result.py @@ -45,8 +45,8 @@ class GeophiresXResult: 'Electricity breakeven price', 'Total CAPEX', 'Total CAPEX ($/kW)', - 'Allocated CAPEX ($/kWe)', - 'Allocated CAPEX ($/kWth)', + 'Electricity CAPEX ($/kWe)', + 'Heat CAPEX ($/kWth)', 'Average Direct-Use Heat Production', 'Direct-Use heat breakeven price', 'Direct-Use heat breakeven price (LCOH)', diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 41d4d765d..8e3639631 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -32,16 +32,8 @@ "description": "The total capital expenditure (CAPEX) required to construct the plant, normalized per kilowatt of capacity. This metric is calculated based on the maximum net electricity generation of the facility. It reflects all direct and indirect costs, contingency, and applicable cost escalations included in the base Total CAPEX.", "units": "USD/kW" }, - "Allocated CAPEX ($/kWe)": { - "type": "number", - "description": "The portion of total capital expenditure (CAPEX) allocated specifically to electricity generation, normalized per kilowatt of net electrical capacity (kWe). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the electrical plant cost allocation ratio, divided by the maximum net electricity generation.", - "units": "USD/kW" - }, - "Allocated CAPEX ($/kWth)": { - "type": "number", - "description": "The portion of total capital expenditure (CAPEX) allocated specifically to direct-use heat production, normalized per kilowatt of net thermal capacity (kWth). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the thermal plant cost allocation ratio (1 minus the electrical ratio), divided by the maximum net heat production.", - "units": "USD/kW" - }, + "Allocated CAPEX ($/kWe)": {}, + "Allocated CAPEX ($/kWth)": {}, "Average Direct-Use Heat Production": {}, "Direct-Use heat breakeven price": {}, "Direct-Use heat breakeven price (LCOH)": { diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 87af53816..87925f7a1 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-05 - Simulation Time: 07:56 - Calculation Time: 1.786 sec + Simulation Time: 08:15 + Calculation Time: 1.793 sec ***SUMMARY OF RESULTS*** @@ -17,8 +17,8 @@ Simulation Metadata Electricity breakeven price: 9.07 cents/kWh Direct-Use heat breakeven price (LCOH): 3.28 USD/MMBTU Total CAPEX: 283.80 MUSD - Allocated CAPEX ($/kWe): 5304 USD/kW - Allocated CAPEX ($/kWth): 658 USD/kW + Electricity CAPEX ($/kWe): 5304 USD/kW + Heat CAPEX ($/kWth): 658 USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out index 84803dcb8..2c1af870c 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-05 - Simulation Time: 07:56 - Calculation Time: 1.883 sec + Simulation Time: 08:15 + Calculation Time: 1.793 sec ***SUMMARY OF RESULTS*** @@ -17,8 +17,8 @@ Simulation Metadata Electricity breakeven price: 9.56 cents/kWh Direct-Use heat breakeven price (LCOH): 3.46 USD/MMBTU Total CAPEX: 283.80 MUSD - Allocated CAPEX ($/kWe): 5304 USD/kW - Allocated CAPEX ($/kWth): 658 USD/kW + Electricity CAPEX ($/kWe): 5304 USD/kW + Heat CAPEX ($/kWth): 658 USD/kW Number of production wells: 6 Number of injection wells: 4 Flowrate per production well: 100.0 kg/sec From 17a6c93a771a27ef093ead727ba326482dc7e225 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 08:30:43 -0700 Subject: [PATCH 085/127] regen schema --- .../geophires-result.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 8e3639631..1306e375c 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -32,8 +32,16 @@ "description": "The total capital expenditure (CAPEX) required to construct the plant, normalized per kilowatt of capacity. This metric is calculated based on the maximum net electricity generation of the facility. It reflects all direct and indirect costs, contingency, and applicable cost escalations included in the base Total CAPEX.", "units": "USD/kW" }, - "Allocated CAPEX ($/kWe)": {}, - "Allocated CAPEX ($/kWth)": {}, + "Electricity CAPEX ($/kWe)": { + "type": "number", + "description": "The portion of total capital expenditure (CAPEX) allocated specifically to electricity generation, normalized per kilowatt of net electrical capacity (kWe). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the electrical plant cost allocation ratio, divided by the maximum net electricity generation.", + "units": "USD/kW" + }, + "Heat CAPEX ($/kWth)": { + "type": "number", + "description": "The portion of total capital expenditure (CAPEX) allocated specifically to direct-use heat production, normalized per kilowatt of net thermal capacity (kWth). In cogeneration (CHP) scenarios, this is calculated by multiplying the Total CAPEX by the thermal plant cost allocation ratio (1 minus the electrical ratio), divided by the maximum net heat production.", + "units": "USD/kW" + }, "Average Direct-Use Heat Production": {}, "Direct-Use heat breakeven price": {}, "Direct-Use heat breakeven price (LCOH)": { From d0cff47a0a6c0f5acd2b6ee0fc143b6259e9fac1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 08:34:39 -0700 Subject: [PATCH 086/127] minor code/comment cleanup --- src/geophires_x/Economics.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 9247a94d9..ab27b745d 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3087,7 +3087,7 @@ def calculate_plant_costs(self, model: Model) -> None: self._indirect_cost_factor * self._contingency_factor * np.max(model.surfaceplant.cooling_produced.value) - * 1000 / 3.517 * 2500 / 1e6 # $2,500/ton of cooling. + * 1000 / 3.517 * 2500 / 1e6 # $2,500/ton of cooling. ) # now add chiller cost to surface plant cost @@ -3125,7 +3125,10 @@ def calculate_plant_costs(self, model: Model) -> None: self.Cplant.value += self.peakingboilercost.value - else: # all other options have power plant + else: + # all other options have power plant + # TODO migrate relevant constants/calculations below to their respective classes + if model.surfaceplant.plant_type.value == PlantType.SUB_CRITICAL_ORC: MaxProducedTemperature = np.max(model.surfaceplant.TenteringPP.value) if MaxProducedTemperature < 150.: @@ -3287,8 +3290,11 @@ def calculate_plant_costs(self, model: Model) -> None: # add direct-use plant cost of co-gen system to Cplant (only of no total Cplant was provided) if not self.ccplantfixed.Valid: - if model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT]: # enduse_option = 3: cogen topping cycle + if model.surfaceplant.enduse_option.value in [ + # enduse_option = 3*: cogen topping cycle + EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, + EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT + ]: self.CAPEX_cost_heat_plant = ( self._indirect_cost_factor * self._contingency_factor @@ -3297,8 +3303,11 @@ def calculate_plant_costs(self, model: Model) -> None: * np.max(model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. ) - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, - EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY]: # enduse_option = 4: cogen bottoming cycle + elif model.surfaceplant.enduse_option.value in [ + # enduse_option = 4*: cogen bottoming cycle + EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, + EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY + ]: self.CAPEX_cost_heat_plant = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY, From 61b7c2915b1ad18453d5c7bd9a77b0b02a4b5ca1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 09:01:21 -0700 Subject: [PATCH 087/127] regen example14_data-center --- tests/examples/example14_data-center.out | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index be78eeac9..e95f01ce3 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-04 - Simulation Time: 08:59 - Calculation Time: 1.851 sec + Simulation Date: 2026-04-05 + Simulation Time: 09:00 + Calculation Time: 2.094 sec ***SUMMARY OF RESULTS*** @@ -17,8 +17,8 @@ Simulation Metadata Electricity breakeven price: 9.05 cents/kWh Direct-Use heat breakeven price (LCOH): 11.93 USD/MMBTU Total CAPEX: 9466.90 MUSD - Allocated CAPEX ($/kWe): 8076 USD/kW - Allocated CAPEX ($/kWth): 3674 USD/kW + Electricity CAPEX ($/kWe): 8076 USD/kW + Heat CAPEX ($/kWth): 3674 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -251,7 +251,7 @@ Electricity to grid (kWh) 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 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 -Heat provided (kWh) 0 0 0 0 0 2,369,334,002 2,373,805,535 2,375,168,952 2,375,974,120 2,376,516,393 2,376,780,703 2,376,387,308 2,374,341,027 2,368,830,039 2,357,276,431 2,336,728,519 2,337,521,459 2,372,240,406 2,374,484,034 2,375,546,030 2,376,226,852 2,376,671,375 2,376,736,880 2,375,819,978 2,372,599,078 2,364,917,622 2,349,975,622 2,324,849,961 2,360,628,714 2,373,459,934 2,374,995,563 2,375,861,535 2,376,441,500 2,376,765,933 2,376,569,801 +Heat provided (kWh) 0 2,369,334,002 2,373,805,535 2,375,168,952 2,375,974,120 2,376,516,393 2,376,780,703 2,376,387,308 2,374,341,027 2,368,830,039 2,357,276,431 2,336,728,519 2,337,521,459 2,372,240,406 2,374,484,034 2,375,546,030 2,376,226,852 2,376,671,375 2,376,736,880 2,375,819,978 2,372,599,078 2,364,917,622 2,349,975,622 2,324,849,961 2,360,628,714 2,373,459,934 2,374,995,563 2,375,861,535 2,376,441,500 2,376,765,933 2,376,569,801 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 From 2ba6f9e03ab21b17d012f44e92dfdec18e6930f1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 5 Apr 2026 09:35:09 -0700 Subject: [PATCH 088/127] require valid CAPEX_heat_electricity_plant_ratio for cogen + surface plant fixed CAPEX --- src/geophires_x/Economics.py | 39 +- .../example_SAM-single-owner-PPA-7c.out | 491 ++++++++++++++++++ .../example_SAM-single-owner-PPA-7c.txt | 115 ++++ 3 files changed, 631 insertions(+), 14 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-7c.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-7c.txt diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index ab27b745d..535eaed1f 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -1887,11 +1887,11 @@ def __init__(self, model: Model): ) # local variable initialization - self.CAPEX_cost_electricity_plant = 0.0 - self.CAPEX_cost_heat_plant = 0.0 + self.CAPEX_cost_electricity_plant_musd = 0.0 # TODO should be proper output parameter + self.CAPEX_cost_heat_plant_musd = 0.0 # TODO should be proper output parameter self.OPEX_cost_electricity_plant = 0.0 self.OPEX_cost_heat_plant = 0.0 - self.CAPEX_heat_electricity_plant_ratio.value = 0.0 + # self.CAPEX_heat_electricity_plant_ratio.value = 0.0 self.Claborcorrelation = 0.0 self.Cpumps = 0.0 self.annualelectricityincome = 0.0 @@ -3271,9 +3271,18 @@ def calculate_plant_costs(self, model: Model) -> None: np.max(model.surfaceplant.ElectricityProduced.value) * 1000. / 1E6) if self.ccplantfixed.Valid: - self.Cplant.value = self.ccplantfixed.value - self.CAPEX_cost_electricity_plant = self.Cplant.value * self.CAPEX_heat_electricity_plant_ratio.value - self.CAPEX_cost_heat_plant = self.Cplant.value * (1.0 - self.CAPEX_heat_electricity_plant_ratio.value) + self.Cplant.value = self.ccplantfixed.value # TODO unit conversion + + # TODO compute self.CAPEX_heat_electricity_plant_ratio.Valid property instead + is_cogen_plant_capex_ratio_valid: bool = self.CAPEX_heat_electricity_plant_ratio.Provided \ + and self.CAPEX_heat_electricity_plant_ratio.value != -1 + + if not is_cogen_plant_capex_ratio_valid: + # TODO enhance message user-friendliness + raise RuntimeError(f'{self.CAPEX_heat_electricity_plant_ratio.Name} is required.') + + self.CAPEX_cost_electricity_plant_musd = self.Cplant.quantity().to('MUSD').magnitude * self.CAPEX_heat_electricity_plant_ratio.value + self.CAPEX_cost_heat_plant_musd = self.Cplant.quantity().to('MUSD').magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.value) else: if self.Power_plant_cost_per_kWe.Provided: nameplate_capacity_kW = np.max(model.surfaceplant.ElectricityProduced.quantity().to('kW')) @@ -3286,16 +3295,16 @@ def calculate_plant_costs(self, model: Model) -> None: direct_plant_cost_MUSD = self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10 self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * direct_plant_cost_MUSD - self.CAPEX_cost_electricity_plant = self.Cplant.value + self.CAPEX_cost_electricity_plant_musd = self.Cplant.quantity().to('MUSD').magnitude - # add direct-use plant cost of co-gen system to Cplant (only of no total Cplant was provided) + # add direct-use plant cost of co-gen system to Cplant (only if no total Cplant was provided) if not self.ccplantfixed.Valid: if model.surfaceplant.enduse_option.value in [ # enduse_option = 3*: cogen topping cycle EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT ]: - self.CAPEX_cost_heat_plant = ( + self.CAPEX_cost_heat_plant_musd = ( self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value @@ -3308,16 +3317,18 @@ def calculate_plant_costs(self, model: Model) -> None: EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY ]: - self.CAPEX_cost_heat_plant = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + self.CAPEX_cost_heat_plant_musd = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT]: # cogen parallel cycle - self.CAPEX_cost_heat_plant = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + self.CAPEX_cost_heat_plant_musd = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. - self.Cplant.value = self.Cplant.value + self.CAPEX_cost_heat_plant - if not self.CAPEX_heat_electricity_plant_ratio.Provided: - self.CAPEX_heat_electricity_plant_ratio.value = self.CAPEX_cost_electricity_plant/self.Cplant.value + self.Cplant.value = self.Cplant.value + quantity(self.CAPEX_cost_heat_plant_musd, 'MUSD').to(self.Cplant.CurrentUnits.value).magnitude + + if not self.CAPEX_heat_electricity_plant_ratio.Provided and self.CAPEX_heat_electricity_plant_ratio.value == -1: + self.CAPEX_heat_electricity_plant_ratio.value = (self.CAPEX_cost_electricity_plant_musd / + self.Cplant.quantity().to('MUSD').magnitude) def calculate_total_capital_costs(self, model: Model) -> None: if not self.totalcapcost.Valid: diff --git a/tests/examples/example_SAM-single-owner-PPA-7c.out b/tests/examples/example_SAM-single-owner-PPA-7c.out new file mode 100644 index 000000000..31bf86737 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7c.out @@ -0,0 +1,491 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-05 + Simulation Time: 09:31 + Calculation Time: 2.216 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income + Average Net Electricity Production: 45.52 MW + Average Direct-Use Heat Production: 62.20 MW + Electricity breakeven price: 9.66 cents/kWh + Direct-Use heat breakeven price (LCOH): 5.18 USD/MMBTU + Total CAPEX: 334.40 MUSD + Electricity CAPEX ($/kWe): 5844 USD/kW + Heat CAPEX ($/kWth): 1074 USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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 + Total Avoided Carbon Emissions: 5055.92 kilotonne + + + ***ECONOMIC PARAMETERS*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 100.32 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 62.14 MUSD + After-tax IRR: 28.41 % + Project VIR=PI=PIR: 1.64 + Project MOIC: 5.82 + Project Payback Period: 3.97 yr + CHP: Percent cost allocation for electrical plant: 80.00 % + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % + Pump efficiency: 80.0 % + Injection temperature: 50.5 degC + Production Wellbore heat transmission calculated with Ramey's model + Average production well temperature drop: 0.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + Power plant type: Subcritical ORC + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.3 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 382.08 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -2003.9 kPa + Average Production Well Pump Pressure Drop: 9514.2 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 200.00 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 203.20 MUSD + Overnight Capital Cost: 302.70 MUSD + Inflation costs during construction: 19.38 MUSD + Interest during construction: 12.32 MUSD + Total CAPEX: 334.40 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.12 MUSD/yr + Power plant maintenance costs: 4.86 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 15.61 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + Initial geofluid availability: 0.19 MW/(kg/s) + Maximum Total Electricity Generation: 53.91 MW + Average Total Electricity Generation: 53.66 MW + Minimum Total Electricity Generation: 52.44 MW + Initial Total Electricity Generation: 52.69 MW + Maximum Net Electricity Generation: 45.77 MW + Average Net Electricity Generation: 45.52 MW + Minimum Net Electricity Generation: 44.27 MW + Initial Net Electricity Generation: 44.54 MW + Average Annual Total Electricity Generation: 423.07 GWh + Average Annual Net Electricity Generation: 358.89 GWh + Initial pumping power/net installed power: 18.30 % + Maximum Net Heat Production: 62.26 MW + Average Net Heat Production: 62.20 MW + Minimum Net Heat Production: 61.90 MW + Initial Net Heat Production: 61.96 MW + Average Annual Heat Production: 490.38 GWh + Average Pumping Power: 8.14 MW + Heat to Power Conversion Efficiency: 14.54 % + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 201.64 8.1512 44.5358 61.9595 14.3548 + 1 1.0052 202.70 8.1476 45.4006 62.1721 14.5209 + 2 1.0062 202.89 8.1469 45.5621 62.2116 14.5518 + 3 1.0067 202.99 8.1466 45.6463 62.2321 14.5679 + 4 1.0070 203.06 8.1464 45.7020 62.2457 14.5785 + 5 1.0073 203.11 8.1462 45.7427 62.2556 14.5863 + 6 1.0074 203.13 8.1463 45.7617 62.2603 14.5899 + 7 1.0066 202.97 8.1489 45.6249 62.2274 14.5635 + 8 1.0007 201.78 8.1656 44.6309 61.9867 14.3712 + 9 1.0048 202.61 8.1453 45.3285 62.1538 14.5075 + 10 1.0060 202.86 8.1444 45.5355 62.2044 14.5471 + 11 1.0066 202.97 8.1428 45.6327 62.2279 14.5658 + 12 1.0070 203.05 8.1408 45.6954 62.2427 14.5780 + 13 1.0072 203.10 8.1387 45.7412 62.2534 14.5870 + 14 1.0074 203.13 8.1370 45.7708 62.2602 14.5928 + 15 1.0070 203.06 8.1373 45.7058 62.2444 14.5804 + 16 1.0031 202.27 8.1479 45.0504 62.0860 14.4540 + 17 1.0041 202.47 8.1345 45.2256 62.1259 14.4892 + 18 1.0058 202.82 8.1344 45.5108 62.1959 14.5436 + 19 1.0065 202.95 8.1343 45.6217 62.2231 14.5648 + 20 1.0069 203.03 8.1343 45.6887 62.2395 14.5775 + 21 1.0072 203.09 8.1343 45.7358 62.2510 14.5865 + 22 1.0074 203.13 8.1344 45.7692 62.2592 14.5928 + 23 1.0072 203.10 8.1353 45.7465 62.2539 14.5884 + 24 1.0048 202.61 8.1426 45.3324 62.1541 14.5086 + 25 1.0027 202.20 8.1344 45.0033 62.0710 14.4467 + 26 1.0056 202.76 8.1344 45.4682 62.1855 14.5355 + 27 1.0063 202.92 8.1344 45.5997 62.2177 14.5606 + 28 1.0068 203.01 8.1344 45.6742 62.2360 14.5748 + 29 1.0071 203.08 8.1344 45.7252 62.2485 14.5845 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 489.6 355.7 3002.77 143.09 7.02 + 2 490.3 358.7 3011.81 132.25 14.07 + 3 490.6 359.6 3014.56 121.39 21.12 + 4 490.7 360.1 3016.19 110.54 28.18 + 5 490.8 360.5 3017.33 99.67 35.23 + 6 490.8 360.7 3018.10 88.81 42.29 + 7 490.8 360.5 3017.30 77.95 49.35 + 8 489.9 356.8 3006.30 67.12 56.38 + 9 489.2 353.9 2997.27 56.33 63.40 + 10 490.3 358.3 3010.72 45.49 70.44 + 11 490.5 359.4 3014.03 34.64 77.49 + 12 490.7 360.0 3015.84 23.79 84.54 + 13 490.8 360.5 3017.08 12.93 91.60 + 14 490.8 360.8 3017.96 2.06 98.66 + 15 490.8 360.7 3017.88 -8.80 105.72 + 16 490.3 358.5 3011.14 -19.64 112.76 + 17 489.0 353.1 2994.77 -30.42 119.77 + 18 490.1 357.9 3009.26 -41.26 126.81 + 19 490.5 359.3 3013.41 -52.11 133.86 + 20 490.6 360.0 3015.46 -62.96 140.91 + 21 490.7 360.4 3016.81 -73.82 147.97 + 22 490.8 360.7 3017.78 -84.69 155.03 + 23 490.9 360.8 3018.13 -95.55 162.09 + 24 490.5 359.5 3014.27 -106.40 169.14 + 25 489.0 353.3 2995.26 -117.19 176.14 + 26 490.0 357.2 3007.08 -128.01 183.18 + 27 490.4 359.1 3012.68 -138.86 190.23 + 28 490.6 359.8 3015.04 -149.71 197.28 + 29 490.7 360.3 3016.51 -160.57 204.33 + 30 490.8 360.6 3017.53 -171.43 211.39 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -22,702,163 -158,915,142 -121,078,203 +plus: +Inflation cost [construction] ($) -612,958 -8,697,267 -10,074,516 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -23,315,122 -167,612,409 -131,152,719 + +Issuance of equity [construction] ($) 23,315,122 50,283,723 39,345,816 +Issuance of debt [construction] ($) 0 117,328,686 91,806,903 +Debt balance [construction] ($) 0 117,328,686 221,455,102 +Debt interest payment [construction] ($) 0 0 12,319,512 + +Installed cost [construction] ($) -23,315,122 -167,612,409 -143,472,231 +After-tax net cash flow [construction] ($) -23,315,122 -50,283,723 -39,345,816 + +ENERGY +Electricity to grid (kWh) 0.0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 +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 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807.0 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 + +Saved Carbon Production (pound) 0 368,490,024 371,328,485 372,196,274 372,709,969 373,069,066 373,312,995 373,052,598 369,547,379 366,763,822 371,002,734 372,050,498 372,634,972 373,038,268 373,330,374 373,311,576 371,165,843 366,034,776 370,624,148 371,925,317 372,570,265 372,992,526 373,297,529 373,406,170 372,168,955 366,171,800 369,942,951 371,697,395 372,436,462 372,899,325 373,218,828 + +Heat provided (kWh) 0 489,614,562 490,342,076 490,563,599 490,694,580 490,786,078 490,848,296 490,783,461 489,898,726 489,171,820 490,254,084 490,520,388 490,666,584 490,765,776 490,836,812 490,830,234 490,288,258 488,970,947 490,137,018 490,470,680 490,635,823 490,743,886 490,821,935 490,850,303 490,539,597 489,010,601 489,961,766 490,412,356 490,601,741 490,720,237 490,801,992 + +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 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +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 + +Carbon price ($/lb) 0.0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 +Carbon credits revenue ($) 0 8,357,213 8,421,588 8,441,270 8,452,920 8,461,064 8,466,596 8,460,691 8,381,194 8,318,064 8,414,200 8,437,963 8,451,219 8,460,366 8,466,990 8,466,564 8,417,900 8,301,529 8,405,614 8,435,124 8,449,751 8,459,328 8,466,246 8,468,709 8,440,650 8,304,637 8,390,165 8,429,955 8,446,717 8,457,214 8,464,461 +plus: +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 12,240,364 12,258,552 12,264,090 12,267,364 12,269,652 12,271,207 12,269,587 12,247,468 12,229,296 12,256,352 12,263,010 12,266,665 12,269,144 12,270,920 12,270,756 12,257,206 12,224,274 12,253,425 12,261,767 12,265,896 12,268,597 12,270,548 12,271,258 12,263,490 12,225,265 12,249,044 12,260,309 12,265,044 12,268,006 12,270,050 +equals: +Capacity payment revenue ($) 0 20,597,577 20,680,140 20,705,360 20,720,284 20,730,716 20,737,803 20,730,278 20,628,662 20,547,360 20,670,552 20,700,973 20,717,884 20,729,510 20,737,910 20,737,320 20,675,106 20,525,803 20,659,039 20,696,891 20,715,647 20,727,925 20,736,794 20,739,967 20,704,140 20,529,902 20,639,209 20,690,264 20,711,761 20,725,220 20,734,511 + +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 167,199,881 +Total revenue ($) 0 54,392,103 54,756,639 55,073,048 55,344,596 55,596,630 55,834,029 56,005,488 55,748,513 55,582,575 56,348,843 56,693,252 56,976,625 57,236,229 57,481,244 57,684,307 57,596,611 57,096,091 57,930,387 58,314,721 58,609,283 58,873,492 59,121,749 59,342,704 59,373,395 58,726,078 59,465,470 59,920,581 60,231,631 60,503,642 227,955,283 + +Property tax net assessed value ($) 0 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 334,399,762 + +OPERATING EXPENSES +O&M fixed expense ($) 0 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 15,609,435 +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 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 735,679 +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 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 16,345,115 + +EBITDA ($) 0 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 + +OPERATING ACTIVITIES +EBITDA ($) 0 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 +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 15,501,857 15,337,748 15,162,152 14,974,263 14,773,223 14,558,110 14,327,938 14,081,655 13,818,132 13,536,162 13,234,455 12,911,628 12,566,203 12,196,598 11,801,121 11,377,961 10,925,179 10,440,703 9,922,313 9,367,636 8,774,131 8,139,082 7,459,578 6,732,510 5,954,547 5,122,126 4,231,436 3,278,398 2,258,647 1,167,513 +Cash flow from operating activities ($) 0 22,545,131 23,073,776 23,565,782 24,025,218 24,478,292 24,930,805 25,332,435 25,321,743 25,419,328 26,467,566 27,113,682 27,719,883 28,324,911 28,939,531 29,538,072 29,873,535 29,825,797 31,144,570 32,047,294 32,896,533 33,754,246 34,637,553 35,538,011 36,295,770 36,426,417 37,998,229 39,344,031 40,608,119 41,899,880 210,442,655 + +INVESTING ACTIVITIES +Total installed cost ($) -334,399,762 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -334,399,762 +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 +equals: +Cash flow from investing activities ($) -334,399,762 0 0 0 0 0 0 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 ($) 112,944,660 +Size of debt ($) 221,455,102 +minus: +Debt principal payment ($) 0 2,344,413 2,508,522 2,684,119 2,872,007 3,073,047 3,288,161 3,518,332 3,764,615 4,028,138 4,310,108 4,611,815 4,934,642 5,280,067 5,649,672 6,045,149 6,468,310 6,921,091 7,405,568 7,923,957 8,478,634 9,072,139 9,707,189 10,386,692 11,113,760 11,891,723 12,724,144 13,614,834 14,567,872 15,587,624 16,678,757 +equals: +Cash flow from financing activities ($) 334,399,762 -2,344,413 -2,508,522 -2,684,119 -2,872,007 -3,073,047 -3,288,161 -3,518,332 -3,764,615 -4,028,138 -4,310,108 -4,611,815 -4,934,642 -5,280,067 -5,649,672 -6,045,149 -6,468,310 -6,921,091 -7,405,568 -7,923,957 -8,478,634 -9,072,139 -9,707,189 -10,386,692 -11,113,760 -11,891,723 -12,724,144 -13,614,834 -14,567,872 -15,587,624 -16,678,757 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 22,545,131 23,073,776 23,565,782 24,025,218 24,478,292 24,930,805 25,332,435 25,321,743 25,419,328 26,467,566 27,113,682 27,719,883 28,324,911 28,939,531 29,538,072 29,873,535 29,825,797 31,144,570 32,047,294 32,896,533 33,754,246 34,637,553 35,538,011 36,295,770 36,426,417 37,998,229 39,344,031 40,608,119 41,899,880 210,442,655 +Cash flow from investing activities ($) -334,399,762 0 0 0 0 0 0 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 ($) 334,399,762 -2,344,413 -2,508,522 -2,684,119 -2,872,007 -3,073,047 -3,288,161 -3,518,332 -3,764,615 -4,028,138 -4,310,108 -4,611,815 -4,934,642 -5,280,067 -5,649,672 -6,045,149 -6,468,310 -6,921,091 -7,405,568 -7,923,957 -8,478,634 -9,072,139 -9,707,189 -10,386,692 -11,113,760 -11,891,723 -12,724,144 -13,614,834 -14,567,872 -15,587,624 -16,678,757 +Total pre-tax cash flow ($) 0 20,200,718 20,565,254 20,881,664 21,153,212 21,405,245 21,642,644 21,814,103 21,557,128 21,391,190 22,157,458 22,501,867 22,785,240 23,044,844 23,289,859 23,492,922 23,405,226 22,904,706 23,739,003 24,123,336 24,417,898 24,682,107 24,930,364 25,151,319 25,182,010 24,534,694 25,274,085 25,729,197 26,040,246 26,312,257 193,763,898 + +Pre-tax Returns: +Issuance of equity ($) 112,944,660 +Total pre-tax cash flow ($) 0 20,200,718 20,565,254 20,881,664 21,153,212 21,405,245 21,642,644 21,814,103 21,557,128 21,391,190 22,157,458 22,501,867 22,785,240 23,044,844 23,289,859 23,492,922 23,405,226 22,904,706 23,739,003 24,123,336 24,417,898 24,682,107 24,930,364 25,151,319 25,182,010 24,534,694 25,274,085 25,729,197 26,040,246 26,312,257 193,763,898 +Total pre-tax returns ($) -112,944,660 20,200,718 20,565,254 20,881,664 21,153,212 21,405,245 21,642,644 21,814,103 21,557,128 21,391,190 22,157,458 22,501,867 22,785,240 23,044,844 23,289,859 23,492,922 23,405,226 22,904,706 23,739,003 24,123,336 24,417,898 24,682,107 24,930,364 25,151,319 25,182,010 24,534,694 25,274,085 25,729,197 26,040,246 26,312,257 193,763,898 + +After-tax Returns: +Total pre-tax returns ($) -112,944,660 20,200,718 20,565,254 20,881,664 21,153,212 21,405,245 21,642,644 21,814,103 21,557,128 21,391,190 22,157,458 22,501,867 22,785,240 23,044,844 23,289,859 23,492,922 23,405,226 22,904,706 23,739,003 24,123,336 24,417,898 24,682,107 24,930,364 25,151,319 25,182,010 24,534,694 25,274,085 25,729,197 26,040,246 26,312,257 193,763,898 +Federal ITC total income ($) 0 100,319,929 0 0 0 0 0 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 -3,094,698 -1,776,301 -1,874,921 -1,967,013 -2,057,829 -2,148,533 -2,229,038 -2,226,895 -2,246,455 -2,456,569 -2,586,080 -2,707,590 -2,828,865 -2,952,062 -3,072,036 -3,139,278 -3,129,710 -3,394,051 -3,574,997 -3,745,223 -5,341,509 -6,942,924 -7,123,417 -7,275,306 -7,301,493 -7,616,555 -7,886,314 -8,139,694 -8,398,622 -42,182,178 +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 -702,481 -403,211 -425,598 -446,502 -467,117 -487,706 -505,980 -505,494 -509,934 -557,629 -587,027 -614,609 -642,138 -670,103 -697,337 -712,600 -710,428 -770,432 -811,506 -850,147 -1,212,495 -1,576,009 -1,616,979 -1,651,458 -1,657,402 -1,728,919 -1,790,153 -1,847,669 -1,906,445 -9,575,141 +Total after-tax returns ($) -112,944,660 116,723,468 18,385,742 18,581,145 18,739,697 18,880,299 19,006,405 19,079,085 18,824,740 18,634,801 19,143,261 19,328,760 19,463,042 19,573,842 19,667,694 19,723,549 19,553,347 19,064,568 19,574,519 19,736,833 19,822,528 18,128,103 16,411,431 16,410,923 16,255,247 15,575,798 15,928,611 16,052,729 16,052,883 16,007,191 142,006,579 + +After-tax net cash flow ($) -23,315,122 -50,283,723 -39,345,816 116,723,468 18,385,742 18,581,145 18,739,697 18,880,299 19,006,405 19,079,085 18,824,740 18,634,801 19,143,261 19,328,760 19,463,042 19,573,842 19,667,694 19,723,549 19,553,347 19,064,568 19,574,519 19,736,833 19,822,528 18,128,103 16,411,431 16,410,923 16,255,247 15,575,798 15,928,611 16,052,729 16,052,883 16,007,191 142,006,579 +After-tax cumulative IRR (%) NaN NaN NaN 1.78 9.31 14.84 18.72 21.42 23.31 24.65 25.60 26.29 26.80 27.19 27.48 27.70 27.87 28.00 28.09 28.17 28.22 28.27 28.30 28.33 28.34 28.36 28.37 28.37 28.38 28.38 28.39 28.39 28.41 +After-tax cumulative NPV ($) -23,315,122 -67,030,975 -96,769,651 -20,070,107 -9,566,770 -338,290 7,753,260 14,840,704 21,043,568 26,456,858 31,100,346 35,096,587 38,665,651 41,798,604 44,541,266 46,939,265 49,034,043 50,860,381 52,434,468 53,768,745 54,959,773 56,003,819 56,915,437 57,640,236 58,210,693 58,706,624 59,133,689 59,489,452 59,805,754 60,082,884 60,323,818 60,532,686 62,143,620 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -23,315,122 -50,283,723 -39,345,816 62,331,365 -36,370,897 -36,491,903 -36,604,899 -36,716,330 -36,827,624 -36,926,403 -36,923,773 -36,947,774 -37,205,582 -37,364,492 -37,513,583 -37,662,387 -37,813,550 -37,960,758 -38,043,264 -38,031,523 -38,355,868 -38,577,889 -38,786,755 -40,745,389 -42,710,318 -42,931,781 -43,118,148 -43,150,280 -43,536,859 -43,867,852 -44,178,749 -44,496,451 81,251,177 +PPA revenue ($) 0 0 0 33,794,526 34,076,499 34,367,688 34,624,312 34,865,914 35,096,226 35,275,210 35,119,851 35,035,215 35,678,291 35,992,279 36,258,741 36,506,719 36,743,334 36,946,987 36,921,505 36,570,288 37,271,348 37,617,830 37,893,636 38,145,567 38,384,955 38,602,737 38,669,255 38,196,176 38,826,261 39,230,317 39,519,870 39,778,422 40,020,891 +Electricity to grid (kWh) 0 0 0 355,731,851 358,699,992 359,607,495 360,144,710 360,520,252 360,775,349 360,502,913 356,836,528 353,926,807 358,359,695 359,455,496 360,066,943 360,488,977 360,794,715 360,775,190 358,530,827 353,165,503 357,965,313 359,325,916 360,000,341 360,441,906 360,760,853 360,874,419 359,580,200 353,308,448 357,253,043 359,087,573 359,860,409 360,344,429 360,678,540 + +Present value of annual costs ($) 214,620,675 + +Present value of annual energy costs ($) 171,696,540 +Present value of annual energy nominal (kWh) 1,777,658,214 +LCOE Levelized cost of energy nominal (cents/kWh) 9.66 + +Present value of PPA revenue ($) 174,283,198 +Present value of annual energy nominal (kWh) 1,777,658,214 +LPPA Levelized PPA price nominal (cents/kWh) 9.80 + +Present value of annual heat costs ($) 42,924,135 +Present value of annual heat provided (MMBTU) 8,290,884 +LCOH Levelized cost of heating nominal ($/MMBTU) 5.18 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 +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 15,501,857 15,337,748 15,162,152 14,974,263 14,773,223 14,558,110 14,327,938 14,081,655 13,818,132 13,536,162 13,234,455 12,911,628 12,566,203 12,196,598 11,801,121 11,377,961 10,925,179 10,440,703 9,922,313 9,367,636 8,774,131 8,139,082 7,459,578 6,732,510 5,954,547 5,122,126 4,231,436 3,278,398 2,258,647 1,167,513 +Total state tax depreciation ($) 0 7,105,995 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 7,105,995 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 15,439,136 8,861,787 9,353,792 9,813,229 10,266,302 10,718,815 11,120,445 11,109,754 11,207,338 12,255,576 12,901,693 13,507,893 14,112,921 14,727,541 15,326,082 15,661,546 15,613,807 16,932,580 17,835,304 18,684,543 26,648,251 34,637,553 35,538,011 36,295,770 36,426,417 37,998,229 39,344,031 40,608,119 41,899,880 210,442,655 + +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 -702,481 -403,211 -425,598 -446,502 -467,117 -487,706 -505,980 -505,494 -509,934 -557,629 -587,027 -614,609 -642,138 -670,103 -697,337 -712,600 -710,428 -770,432 -811,506 -850,147 -1,212,495 -1,576,009 -1,616,979 -1,651,458 -1,657,402 -1,728,919 -1,790,153 -1,847,669 -1,906,445 -9,575,141 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 +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 -702,481 -403,211 -425,598 -446,502 -467,117 -487,706 -505,980 -505,494 -509,934 -557,629 -587,027 -614,609 -642,138 -670,103 -697,337 -712,600 -710,428 -770,432 -811,506 -850,147 -1,212,495 -1,576,009 -1,616,979 -1,651,458 -1,657,402 -1,728,919 -1,790,153 -1,847,669 -1,906,445 -9,575,141 +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 15,501,857 15,337,748 15,162,152 14,974,263 14,773,223 14,558,110 14,327,938 14,081,655 13,818,132 13,536,162 13,234,455 12,911,628 12,566,203 12,196,598 11,801,121 11,377,961 10,925,179 10,440,703 9,922,313 9,367,636 8,774,131 8,139,082 7,459,578 6,732,510 5,954,547 5,122,126 4,231,436 3,278,398 2,258,647 1,167,513 +Total federal tax depreciation ($) 0 7,105,995 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 14,211,990 7,105,995 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 14,736,656 8,458,575 8,928,195 9,366,727 9,799,186 10,231,109 10,614,465 10,604,260 10,697,404 11,697,948 12,314,666 12,893,284 13,470,784 14,057,438 14,628,745 14,948,945 14,903,379 16,162,148 17,023,798 17,834,396 25,435,756 33,061,544 33,921,031 34,644,313 34,769,015 36,269,310 37,553,877 38,760,449 39,993,436 200,867,514 + +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 -3,094,698 -1,776,301 -1,874,921 -1,967,013 -2,057,829 -2,148,533 -2,229,038 -2,226,895 -2,246,455 -2,456,569 -2,586,080 -2,707,590 -2,828,865 -2,952,062 -3,072,036 -3,139,278 -3,129,710 -3,394,051 -3,574,997 -3,745,223 -5,341,509 -6,942,924 -7,123,417 -7,275,306 -7,301,493 -7,616,555 -7,886,314 -8,139,694 -8,398,622 -42,182,178 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 100,319,929 0 0 0 0 0 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 100,319,929 0 0 0 0 0 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 ($) 221,455,102 219,110,689 216,602,167 213,918,048 211,046,041 207,972,994 204,684,833 201,166,502 197,401,887 193,373,748 189,063,641 184,451,825 179,517,183 174,237,115 168,587,443 162,542,294 156,073,985 149,152,893 141,747,326 133,823,368 125,344,734 116,272,595 106,565,406 96,178,715 85,064,955 73,173,231 60,449,087 46,834,253 32,266,381 16,678,757 0 +Debt interest payment ($) 0 15,501,857 15,337,748 15,162,152 14,974,263 14,773,223 14,558,110 14,327,938 14,081,655 13,818,132 13,536,162 13,234,455 12,911,628 12,566,203 12,196,598 11,801,121 11,377,961 10,925,179 10,440,703 9,922,313 9,367,636 8,774,131 8,139,082 7,459,578 6,732,510 5,954,547 5,122,126 4,231,436 3,278,398 2,258,647 1,167,513 +Debt principal payment ($) 0 2,344,413 2,508,522 2,684,119 2,872,007 3,073,047 3,288,161 3,518,332 3,764,615 4,028,138 4,310,108 4,611,815 4,934,642 5,280,067 5,649,672 6,045,149 6,468,310 6,921,091 7,405,568 7,923,957 8,478,634 9,072,139 9,707,189 10,386,692 11,113,760 11,891,723 12,724,144 13,614,834 14,567,872 15,587,624 16,678,757 +Debt total payment ($) 0 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 +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 38,046,988 38,411,525 38,727,934 38,999,482 39,251,515 39,488,914 39,660,373 39,403,399 39,237,460 40,003,729 40,348,137 40,631,511 40,891,114 41,136,129 41,339,193 41,251,496 40,750,976 41,585,273 41,969,607 42,264,168 42,528,377 42,776,634 42,997,589 43,028,280 42,380,964 43,120,355 43,575,467 43,886,517 44,158,527 211,610,168 +Debt total payment ($) 0 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 17,846,270 +DSCR (pre-tax) 0.0 2.13 2.15 2.17 2.19 2.20 2.21 2.22 2.21 2.20 2.24 2.26 2.28 2.29 2.31 2.32 2.31 2.28 2.33 2.35 2.37 2.38 2.40 2.41 2.41 2.37 2.42 2.44 2.46 2.47 11.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 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 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 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 +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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/tests/examples/example_SAM-single-owner-PPA-7c.txt b/tests/examples/example_SAM-single-owner-PPA-7c.txt new file mode 100644 index 000000000..9111842be --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7c.txt @@ -0,0 +1,115 @@ +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) and fixed surface plant cost +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Starting Carbon Credit Value, 50 USD/tonne +Ending Carbon Credit Value, 999, -- 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. +Carbon Escalation Rate Per Year, 0 +Units:Total Saved Carbon Production, kilotonne + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Surface Plant Capital Cost, 200 +CHP Electrical Plant Cost Allocation Ratio, 0.8 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 31, -- CHP Topping Cycle with electricity as the main product +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 47.5 +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From c6106bc464a0c16d70591945622bcfdc3242e689 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 09:34:36 -0700 Subject: [PATCH 089/127] minor code cleanup --- src/geophires_x/Economics.py | 5 ++++- src/geophires_x/Outputs.py | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 535eaed1f..01bd57589 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2191,13 +2191,16 @@ def __init__(self, model: Model): f'make-up water, pumping O&M costs, ' f'and average royalty costs (both production-based and supplemental payments).' ) + + # noinspection SpellCheckingInspection self.averageannualpumpingcosts = self.OutputParameterDict[self.averageannualpumpingcosts.Name] = OutputParameter( - Name="Average Annual Pumping Costs", + Name='Average Annual Pumping Costs', display_name='Average Reservoir Pumping Cost', UnitType=Units.CURRENCYFREQUENCY, PreferredUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR, CurrentUnits=CurrencyFrequencyUnit.MDOLLARSPERYEAR ) + # heat pump self.averageannualheatpumpelectricitycost = self.OutputParameterDict[ self.averageannualheatpumpelectricitycost.Name] = OutputParameter( diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 597a3e08c..fca88430b 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -497,11 +497,12 @@ def PrintOutputs(self, model: Model): f.write(f' {econ.Cplant.display_name}: {econ.Cplant.value:10.2f} {econ.Cplant.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: - f.write(f' of which Absorption Chiller Cost: {model.economics.chillercapex.value:10.2f} ' + model.economics.Cplant.CurrentUnits.value + NL) + f.write(f' of which Absorption Chiller Cost: {econ.chillercapex.value:10.2f} {econ.chillercapex.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: - f.write(f' of which Heat Pump Cost: {model.economics.heatpumpcapex.value:10.2f} ' + model.economics.Cplant.CurrentUnits.value + NL) + f.write(f' of which Heat Pump Cost: {econ.heatpumpcapex.value:10.2f} {econ.Cplant.heatpumpcapex.value}\n') if model.surfaceplant.plant_type.value == PlantType.DISTRICT_HEATING: - f.write(f' of which Peaking Boiler Cost: {model.economics.peakingboilercost.value:10.2f} ' + model.economics.peakingboilercost.CurrentUnits.value + NL) + f.write(f' of which Peaking Boiler Cost: {econ.peakingboilercost.value:10.2f} {econ.peakingboilercost.CurrentUnits.value}\n') + f.write(f' {model.economics.Cgath.display_name}: {model.economics.Cgath.value:10.2f} {model.economics.Cgath.CurrentUnits.value}\n') if model.surfaceplant.piping_length.value > 0: From 783ea7505a81b0ba59edeed4e4d1a1f41512fa18 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 09:44:44 -0700 Subject: [PATCH 090/127] Total surface equipment costs as derived output --- src/geophires_x/Economics.py | 12 ++++++++++++ src/geophires_x/Outputs.py | 2 +- .../geophires-result.json | 6 +++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 01bd57589..d562c25a0 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2115,6 +2115,15 @@ def __init__(self, model: Model): 'user or a district-heating system. These costs are estimated at $750 per meter pipeline ' 'length and can be manually added by the user to the pipeline distribution costs.' ) + + self.surface_equipment_costs_total = self.OutputParameterDict[self.surface_equipment_costs_total.Name] = OutputParameter( + Name='Total surface equipment costs', + UnitType=Units.CURRENCY, + PreferredUnits=CurrencyUnit.MDOLLARS, + CurrentUnits=CurrencyUnit.MDOLLARS, + ToolTipText=f'{self.Cplant.Name} plus {self.Cgath.Name}.' + ) + self.Cpiping = self.OutputParameterDict[self.Cpiping.Name] = OutputParameter( Name="Transmission pipeline costs", display_name='Transmission pipeline cost', @@ -3843,6 +3852,9 @@ def _calculate_derived_outputs(self, model: Model) -> None: .to(convertible_unit(self.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits)).magnitude ) + self.surface_equipment_costs_total.value = (self.Cplant.quantity() + self.Cgath.quantity()).to( + self.surface_equipment_costs_total.CurrentUnits).magnitude + @property def has_production_based_royalties(self): diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index fca88430b..f11db7891 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -511,7 +511,7 @@ def PrintOutputs(self, model: Model): if model.surfaceplant.plant_type.value == PlantType.DISTRICT_HEATING: f.write(f' District Heating System Cost: {model.economics.dhdistrictcost.value:10.2f} {model.economics.dhdistrictcost.CurrentUnits.value}\n') - f.write(f' Total surface equipment costs: {(model.economics.Cplant.value+model.economics.Cgath.value):10.2f} ' + model.economics.Cplant.CurrentUnits.value + NL) + f.write(f' {econ.surface_equipment_costs_total.display_name}: {econ.surface_equipment_costs_total.value:10.2f} {econ.surface_equipment_costs_total.CurrentUnits.value}\n') if model.economics.totalcapcost.Valid and model.wellbores.redrill.value > 0: f.write(f' Drilling and completion costs (for redrilling):{econ.Cwell.value:10.2f} {econ.Cwell.CurrentUnits.value}\n') diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 1306e375c..ff9c05160 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -460,7 +460,11 @@ "description": "Field gathering system cost. The built-in cost correlation for estimating the field gathering system cost includes the cost for surface piping from each well to the plant and pumps for production and injection wells. The length of the surface piping is assumed 750 m per well at a cost of $500 per meter. The pumping cost for each pump in the production wells (line-shaft pumps) and a single pump for the injection wells is calculated with the same correlation as GETEM. Contingency (default: 15%). and indirect costs (default: 12%) are added. The built-in cost correlation does not include the cost of pipelines to an off-site heat user or a district-heating system. These costs are estimated at $750 per meter pipeline length and can be manually added by the user to the pipeline distribution costs.", "units": "MUSD" }, - "Total surface equipment costs": {}, + "Total surface equipment costs": { + "type": "number", + "description": "Surface Plant cost plus Field gathering system cost.", + "units": "MUSD" + }, "Investment Tax Credit": { "type": "number", "description": "Investment Tax Credit Value. Represents the total undiscounted ITC sum. For SAM Economic Models, this accounts for the standard Year 1 Federal ITC as well as any applicable State ITCs or multi-year credit schedules.", From 260b0729be12933d6dc20f3f592b07e5642d4d43 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 09:50:39 -0700 Subject: [PATCH 091/127] fix issues with previous 2 commits --- src/geophires_x/Economics.py | 5 +++-- src/geophires_x/Outputs.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index d562c25a0..e83370416 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3852,8 +3852,9 @@ def _calculate_derived_outputs(self, model: Model) -> None: .to(convertible_unit(self.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits)).magnitude ) - self.surface_equipment_costs_total.value = (self.Cplant.quantity() + self.Cgath.quantity()).to( - self.surface_equipment_costs_total.CurrentUnits).magnitude + if all(hasattr(self, it) for it in ['Cplant', 'Cgath']): + self.surface_equipment_costs_total.value = (self.Cplant.quantity() + self.Cgath.quantity()).to( + self.surface_equipment_costs_total.CurrentUnits).magnitude @property diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index f11db7891..9cd12f463 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -499,7 +499,7 @@ def PrintOutputs(self, model: Model): if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' of which Absorption Chiller Cost: {econ.chillercapex.value:10.2f} {econ.chillercapex.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: - f.write(f' of which Heat Pump Cost: {econ.heatpumpcapex.value:10.2f} {econ.Cplant.heatpumpcapex.value}\n') + f.write(f' of which Heat Pump Cost: {econ.heatpumpcapex.value:10.2f} {econ.heatpumpcapex.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.DISTRICT_HEATING: f.write(f' of which Peaking Boiler Cost: {econ.peakingboilercost.value:10.2f} {econ.peakingboilercost.CurrentUnits.value}\n') From 86ab6b59ae7acf81da157b6a37d5f4af679a35bf Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:02:32 -0700 Subject: [PATCH 092/127] migrate to CAPEX_cost_electricity_plant_musd to properties of new corresponding output parameters. WIP to finish incorporating output parameters into Outputs.py --- src/geophires_x/Economics.py | 51 ++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index e83370416..f1da861ca 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -1887,10 +1887,8 @@ def __init__(self, model: Model): ) # local variable initialization - self.CAPEX_cost_electricity_plant_musd = 0.0 # TODO should be proper output parameter - self.CAPEX_cost_heat_plant_musd = 0.0 # TODO should be proper output parameter - self.OPEX_cost_electricity_plant = 0.0 - self.OPEX_cost_heat_plant = 0.0 + self.OPEX_cost_electricity_plant = 0.0 # TODO should be proper output parameter + self.OPEX_cost_heat_plant = 0.0 # TODO should be proper output parameter # self.CAPEX_heat_electricity_plant_ratio.value = 0.0 self.Claborcorrelation = 0.0 self.Cpumps = 0.0 @@ -2035,6 +2033,7 @@ def __init__(self, model: Model): f'The total is then divided over {model.surfaceplant.plant_lifetime.Name} years to calculate ' f'Redrilling costs per year.' ) + # noinspection SpellCheckingInspection self.Cplant = self.OutputParameterDict[self.Cplant.Name] = OutputParameter( Name="Surface Plant cost", @@ -2076,6 +2075,20 @@ def __init__(self, model: Model): 'their specific application. Beckers and Young (2017) collected several cost figures to ' 'estimate the surface equipment cost for geothermal district-heating systems.' ) + + self.CAPEX_cost_electricity_plant = self.OutputParameterDict[self.CAPEX_cost_electricity_plant.Name] = OutputParameter( + Name="Electricity Plant cost", # WIP... + UnitType=Units.CURRENCY, + PreferredUnits=CurrencyUnit.MDOLLARS, + CurrentUnits=CurrencyUnit.MDOLLARS, + ) + self.CAPEX_cost_heat_plant= self.OutputParameterDict[self.CAPEX_cost_heat_plant.Name] = OutputParameter( + Name="Heat Plant cost", # WIP... + UnitType=Units.CURRENCY, + PreferredUnits=CurrencyUnit.MDOLLARS, + CurrentUnits=CurrencyUnit.MDOLLARS, + ) + self.Coamplant = self.OutputParameterDict[self.Coamplant.Name] = OutputParameter( Name="O&M Surface Plant costs", display_name='Power plant maintenance costs', @@ -2492,6 +2505,15 @@ def __init__(self, model: Model): model.logger.info(f'Complete {__class__!s}: {sys._getframe().f_code.co_name}') + @property + def CAPEX_cost_electricity_plant_musd(self) -> float: + return self.CAPEX_cost_electricity_plant.quantity().to('MUSD').magnitude + + @property + def CAPEX_cost_heat_plant_musd(self) -> float: + return self.CAPEX_cost_heat_plant.quantity().to('MUSD').magnitude + + def read_parameters(self, model: Model) -> None: """ read_parameters read and update the Economics parameters and handle the special cases @@ -3293,8 +3315,8 @@ def calculate_plant_costs(self, model: Model) -> None: # TODO enhance message user-friendliness raise RuntimeError(f'{self.CAPEX_heat_electricity_plant_ratio.Name} is required.') - self.CAPEX_cost_electricity_plant_musd = self.Cplant.quantity().to('MUSD').magnitude * self.CAPEX_heat_electricity_plant_ratio.value - self.CAPEX_cost_heat_plant_musd = self.Cplant.quantity().to('MUSD').magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.value) + self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude + self.CAPEX_cost_heat_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude) else: if self.Power_plant_cost_per_kWe.Provided: nameplate_capacity_kW = np.max(model.surfaceplant.ElectricityProduced.quantity().to('kW')) @@ -3307,7 +3329,7 @@ def calculate_plant_costs(self, model: Model) -> None: direct_plant_cost_MUSD = self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10 self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * direct_plant_cost_MUSD - self.CAPEX_cost_electricity_plant_musd = self.Cplant.quantity().to('MUSD').magnitude + self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude # add direct-use plant cost of co-gen system to Cplant (only if no total Cplant was provided) if not self.ccplantfixed.Valid: @@ -3316,25 +3338,26 @@ def calculate_plant_costs(self, model: Model) -> None: EndUseOptions.COGENERATION_TOPPING_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_TOPPING_EXTRA_HEAT ]: - self.CAPEX_cost_heat_plant_musd = ( + self.CAPEX_cost_heat_plant.value = quantity( self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max(model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) - * 1000. - ) + * 1000., + 'MUSD' + ).to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude elif model.surfaceplant.enduse_option.value in [ # enduse_option = 4*: cogen bottoming cycle EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY ]: - self.CAPEX_cost_heat_plant_musd = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( - model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. + self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000., 'MUSD').to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY, EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT]: # cogen parallel cycle - self.CAPEX_cost_heat_plant_musd = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( - model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000. + self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000., 'MUSD').to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude self.Cplant.value = self.Cplant.value + quantity(self.CAPEX_cost_heat_plant_musd, 'MUSD').to(self.Cplant.CurrentUnits.value).magnitude From de4298c61e59334c68989f83948e30408774aa5d Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:15:16 -0700 Subject: [PATCH 093/127] output of which {Electrical, Heat} Plant Cost --- src/geophires_x/Economics.py | 14 ++++++++------ src/geophires_x/Outputs.py | 4 ++++ src/geophires_x_client/geophires_x_result.py | 2 ++ .../geophires-result.json | 10 ++++++++++ tests/examples/example14_data-center.out | 8 +++++--- .../example_SAM-single-owner-PPA-7_chp.out | 6 ++++-- .../example_SAM-single-owner-PPA-7b_chp-cc.out | 8 +++++--- tests/examples/example_SAM-single-owner-PPA-7c.out | 8 +++++--- 8 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index f1da861ca..90b44425c 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2076,14 +2076,16 @@ def __init__(self, model: Model): 'estimate the surface equipment cost for geothermal district-heating systems.' ) - self.CAPEX_cost_electricity_plant = self.OutputParameterDict[self.CAPEX_cost_electricity_plant.Name] = OutputParameter( - Name="Electricity Plant cost", # WIP... + self.CAPEX_cost_electrical_plant = self.OutputParameterDict[self.CAPEX_cost_electrical_plant.Name] = OutputParameter( + Name='Electrical Plant cost', + display_name='of which Electrical Plant Cost', UnitType=Units.CURRENCY, PreferredUnits=CurrencyUnit.MDOLLARS, CurrentUnits=CurrencyUnit.MDOLLARS, ) self.CAPEX_cost_heat_plant= self.OutputParameterDict[self.CAPEX_cost_heat_plant.Name] = OutputParameter( - Name="Heat Plant cost", # WIP... + Name='Heat Plant cost', + display_name='of which Heat Plant Cost', UnitType=Units.CURRENCY, PreferredUnits=CurrencyUnit.MDOLLARS, CurrentUnits=CurrencyUnit.MDOLLARS, @@ -2507,7 +2509,7 @@ def __init__(self, model: Model): @property def CAPEX_cost_electricity_plant_musd(self) -> float: - return self.CAPEX_cost_electricity_plant.quantity().to('MUSD').magnitude + return self.CAPEX_cost_electrical_plant.quantity().to('MUSD').magnitude @property def CAPEX_cost_heat_plant_musd(self) -> float: @@ -3315,7 +3317,7 @@ def calculate_plant_costs(self, model: Model) -> None: # TODO enhance message user-friendliness raise RuntimeError(f'{self.CAPEX_heat_electricity_plant_ratio.Name} is required.') - self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude + self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude self.CAPEX_cost_heat_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude) else: if self.Power_plant_cost_per_kWe.Provided: @@ -3329,7 +3331,7 @@ def calculate_plant_costs(self, model: Model) -> None: direct_plant_cost_MUSD = self.ccplantadjfactor.value * self.Cplantcorrelation * 1.02 * 1.10 self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * direct_plant_cost_MUSD - self.CAPEX_cost_electricity_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electricity_plant.CurrentUnits).magnitude + self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude # add direct-use plant cost of co-gen system to Cplant (only if no total Cplant was provided) if not self.ccplantfixed.Valid: diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index 9cd12f463..4b2b5ed4b 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -496,6 +496,10 @@ def PrintOutputs(self, model: Model): f.write(f' {econ.Cstim.display_name}: {econ.Cstim.value:10.2f} {econ.Cstim.CurrentUnits.value}\n') f.write(f' {econ.Cplant.display_name}: {econ.Cplant.value:10.2f} {econ.Cplant.CurrentUnits.value}\n') + if model.surfaceplant.enduse_option.value.is_cogeneration_end_use_option: + f.write(f' {econ.CAPEX_cost_electrical_plant.display_name}: {econ.CAPEX_cost_electrical_plant.value:10.2f} {econ.CAPEX_cost_electrical_plant.CurrentUnits.value}\n') + f.write(f' {econ.CAPEX_cost_heat_plant.display_name}: {econ.CAPEX_cost_heat_plant.value:10.2f} {econ.CAPEX_cost_heat_plant.CurrentUnits.value}\n') + if model.surfaceplant.plant_type.value == PlantType.ABSORPTION_CHILLER: f.write(f' of which Absorption Chiller Cost: {econ.chillercapex.value:10.2f} {econ.chillercapex.CurrentUnits.value}\n') if model.surfaceplant.plant_type.value == PlantType.HEAT_PUMP: diff --git a/src/geophires_x_client/geophires_x_result.py b/src/geophires_x_client/geophires_x_result.py index e5ef87fb5..9568b52c6 100644 --- a/src/geophires_x_client/geophires_x_result.py +++ b/src/geophires_x_client/geophires_x_result.py @@ -263,6 +263,8 @@ class GeophiresXResult: 'Stimulation costs', 'Stimulation costs (for redrilling)', 'Surface power plant costs', + 'of which Electrical Plant Cost', + 'of which Heat Plant Cost', 'of which Absorption Chiller Cost', 'of which Heat Pump Cost', 'of which Peaking Boiler Cost', diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index ff9c05160..07432b8da 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -442,6 +442,16 @@ "description": "Surface Plant cost. The built-in power plant cost correlations are based on the original correlations developed by Beckers (2016), indexed to 2017 using the IHS Markit North American Power Capital Costs Index (NAPCCI) excluding nuclear plants (IHS 2018). The ORC power plant cost data have been updated with data from the 2016 GETEM tool (DOE 2016) and the geothermal binary power plants study by Verkis (2014). Figure 4 in the Theoretical Basis shows the power plant capital cost expressed in $ kWe-1 as a function of plant size and initial production temperature for subcritical ORC and double-flash power plants. The default correlations in GEOPHIRES include 15% contingency plus 12% indirect costs. For the same plant size and production temperature, double-flash power plants are considered about 25% more expensive than single-flash power plants (Zeyghami 2010), and supercritical ORC plants are roughly 10% more than subcritical ORC plants (Astolfi et al. 2014). A wide range in power plant specific cost values is reported in academic and popular literature. The GEOPHIRES built-in surface plant cost correlations represent typical values. However, the user is recommended to provide their own power plant cost data if available for their case study. The ORC plant specific cost decreases only moderately at higher temperatures. The reasons are that when increasing the temperature, the ORC plant design also changes: (1) a different organic fluid is selected, (2) piping, pump, heat exchangers, and other equipment are designed to handle the higher temperature (and potentially also pressure), requiring thicker walls, potentially different materials, etc., and (3) additional components may be implemented, such as a heat recuperator, making the design and operation more complex. Unlike flash power plants, ORC plants are a small, niche market, typically case specific, and rely on relatively young technology, which has not been subject yet to decades of technological advancement. The cost for direct-use heat applications is highly dependent on the type of application. A generic cost of $250 kWth-1 is assumed plus 15% contingency plus 12% indirect costs. However, users are encouraged to provide their own cost figures for their specific application. Beckers and Young (2017) collected several cost figures to estimate the surface equipment cost for geothermal district-heating systems.", "units": "MUSD" }, + "of which Electrical Plant Cost": { + "type": "number", + "description": "Electrical Plant cost", + "units": "MUSD" + }, + "of which Heat Plant Cost": { + "type": "number", + "description": "Heat Plant cost", + "units": "MUSD" + }, "of which Absorption Chiller Cost": {}, "of which Heat Pump Cost": {}, "of which Peaking Boiler Cost": {}, diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index e95f01ce3..605363e1d 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-05 - Simulation Time: 09:00 - Calculation Time: 2.094 sec + Simulation Date: 2026-04-07 + Simulation Time: 10:14 + Calculation Time: 1.803 sec ***SUMMARY OF RESULTS*** @@ -108,6 +108,8 @@ Simulation Metadata Drilling and completion costs per well: 5.61 MUSD Stimulation costs: 1514.98 MUSD Surface power plant costs: 4782.88 MUSD + of which Electrical Plant Cost: 4614.62 MUSD + of which Heat Plant Cost: 168.26 MUSD Field gathering system costs: 68.88 MUSD Transmission pipeline cost: 2.00 MUSD Total surface equipment costs: 4851.77 MUSD diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.out b/tests/examples/example_SAM-single-owner-PPA-7_chp.out index 87925f7a1..84d1090f8 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.out +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.out @@ -5,8 +5,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-05 - Simulation Time: 08:15 + Simulation Date: 2026-04-07 + Simulation Time: 10:14 Calculation Time: 1.793 sec ***SUMMARY OF RESULTS*** @@ -116,6 +116,8 @@ Simulation Metadata Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 48.30 MUSD Surface power plant costs: 154.20 MUSD + of which Electrical Plant Cost: 131.92 MUSD + of which Heat Plant Cost: 22.28 MUSD Field gathering system costs: 3.20 MUSD Total surface equipment costs: 157.40 MUSD Overnight Capital Cost: 256.90 MUSD diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out index 2c1af870c..c82383ac2 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-05 - Simulation Time: 08:15 - Calculation Time: 1.793 sec + Simulation Date: 2026-04-07 + Simulation Time: 10:14 + Calculation Time: 1.798 sec ***SUMMARY OF RESULTS*** @@ -117,6 +117,8 @@ Simulation Metadata Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 48.30 MUSD Surface power plant costs: 154.20 MUSD + of which Electrical Plant Cost: 131.92 MUSD + of which Heat Plant Cost: 22.28 MUSD Field gathering system costs: 3.20 MUSD Total surface equipment costs: 157.40 MUSD Overnight Capital Cost: 256.90 MUSD diff --git a/tests/examples/example_SAM-single-owner-PPA-7c.out b/tests/examples/example_SAM-single-owner-PPA-7c.out index 31bf86737..3dc666c85 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7c.out +++ b/tests/examples/example_SAM-single-owner-PPA-7c.out @@ -5,9 +5,9 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-05 - Simulation Time: 09:31 - Calculation Time: 2.216 sec + Simulation Date: 2026-04-07 + Simulation Time: 10:14 + Calculation Time: 1.800 sec ***SUMMARY OF RESULTS*** @@ -117,6 +117,8 @@ Simulation Metadata Drilling and completion costs per well: 4.65 MUSD Stimulation costs: 48.30 MUSD Surface power plant costs: 200.00 MUSD + of which Electrical Plant Cost: 160.00 MUSD + of which Heat Plant Cost: 40.00 MUSD Field gathering system costs: 3.20 MUSD Total surface equipment costs: 203.20 MUSD Overnight Capital Cost: 302.70 MUSD From 7a1dfd5f6353cb18e4bd3063c9f86ecca6041f31 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:47:49 -0700 Subject: [PATCH 094/127] adjust example14_data-center cost representation, regenerate examples affected by previous commit --- src/geophires_x/AGSEconomics.py | 2 + src/geophires_x/Economics.py | 23 +-- tests/examples/S-DAC-GT.out | 17 ++- tests/examples/example13.out | 13 +- tests/examples/example14_data-center.out | 184 ++++++++++++----------- tests/examples/example14_data-center.txt | 8 +- tests/examples/example3.out | 13 +- 7 files changed, 139 insertions(+), 121 deletions(-) diff --git a/src/geophires_x/AGSEconomics.py b/src/geophires_x/AGSEconomics.py index 21760e1c0..bd753d524 100644 --- a/src/geophires_x/AGSEconomics.py +++ b/src/geophires_x/AGSEconomics.py @@ -62,6 +62,8 @@ def __init__(self, model: Model): Required=True, ErrMessage="assume default Operation & Maintenance cost of surface plant expressed as fraction of total surface plant capital cost (0.015)" ) + + # TODO migrate to parent class and integrate for CHP self.Direct_use_heat_cost_per_kWth = self.ParameterDict[ self.Direct_use_heat_cost_per_kWth.Name] = floatParameter( "Capital Cost for Surface Plant for Direct-use System", diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 90b44425c..79bd13758 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3093,6 +3093,8 @@ def calculate_field_gathering_costs(self, model: Model) -> None: (model.wellbores.nprod.value + model.wellbores.ninj.value) * 750 * 500. + self.Cpumps) / 1E6 def calculate_plant_costs(self, model: Model) -> None: + direct_use_heat_default_cost_musd_per_kwth = 250E-6 # TODO parameterize + # plant costs if (model.surfaceplant.enduse_option.value == EndUseOptions.HEAT and model.surfaceplant.plant_type.value not in [PlantType.ABSORPTION_CHILLER, PlantType.HEAT_PUMP, PlantType.DISTRICT_HEATING]): # direct-use @@ -3102,7 +3104,7 @@ def calculate_plant_costs(self, model: Model) -> None: self.Cplant.value = (self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value - * 250E-6 + * direct_use_heat_default_cost_musd_per_kwth * np.max(model.surfaceplant.HeatExtracted.value) * 1000.) @@ -3115,7 +3117,7 @@ def calculate_plant_costs(self, model: Model) -> None: self.Cplant.value = (self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value - * 250E-6 + * direct_use_heat_default_cost_musd_per_kwth * np.max(model.surfaceplant.HeatExtracted.value) * 1000.) if self.chillercapex.value == -1: # no value provided by user, use built-in correlation ($2500/ton) @@ -3135,7 +3137,7 @@ def calculate_plant_costs(self, model: Model) -> None: self.Cplant.value = self.ccplantfixed.value else: # this is for the direct-use part all the way up to the heat pump - self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * direct_use_heat_default_cost_musd_per_kwth * np.max( model.surfaceplant.HeatExtracted.value) * 1000. if self.heatpumpcapex.value == -1: # no value provided by user, use built-in correlation ($150/kWth) self.heatpumpcapex.value = self._indirect_cost_factor * self._contingency_factor * np.max( @@ -3149,7 +3151,7 @@ def calculate_plant_costs(self, model: Model) -> None: if self.ccplantfixed.Valid: self.Cplant.value = self.ccplantfixed.value else: - self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * direct_use_heat_default_cost_musd_per_kwth * np.max( model.surfaceplant.HeatExtracted.value) * 1000. # add 65$/KW for peaking boiler @@ -3344,7 +3346,7 @@ def calculate_plant_costs(self, model: Model) -> None: self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value - * 250E-6 + * direct_use_heat_default_cost_musd_per_kwth * np.max(model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000., 'MUSD' @@ -3354,11 +3356,14 @@ def calculate_plant_costs(self, model: Model) -> None: EndUseOptions.COGENERATION_BOTTOMING_EXTRA_HEAT, EndUseOptions.COGENERATION_BOTTOMING_EXTRA_ELECTRICITY ]: - self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * direct_use_heat_default_cost_musd_per_kwth * np.max( model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000., 'MUSD').to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude - elif model.surfaceplant.enduse_option.value in [EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY, - EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT]: # cogen parallel cycle - self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * 250E-6 * np.max( + elif model.surfaceplant.enduse_option.value in [ + # cogen parallel cycle + EndUseOptions.COGENERATION_PARALLEL_EXTRA_ELECTRICITY, + EndUseOptions.COGENERATION_PARALLEL_EXTRA_HEAT + ]: + self.CAPEX_cost_heat_plant.value = quantity(self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * direct_use_heat_default_cost_musd_per_kwth * np.max( model.surfaceplant.HeatProduced.value / model.surfaceplant.enduse_efficiency_factor.value) * 1000., 'MUSD').to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude self.Cplant.value = self.Cplant.value + quantity(self.CAPEX_cost_heat_plant_musd, 'MUSD').to(self.Cplant.CurrentUnits.value).magnitude diff --git a/tests/examples/S-DAC-GT.out b/tests/examples/S-DAC-GT.out index e53854f6b..75170830c 100644 --- a/tests/examples/S-DAC-GT.out +++ b/tests/examples/S-DAC-GT.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.9.7 - Simulation Date: 2025-05-15 - Simulation Time: 10:13 - Calculation Time: 0.099 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-07 + Simulation Time: 10:46 + Calculation Time: 0.135 sec ***SUMMARY OF RESULTS*** @@ -26,7 +26,7 @@ Simulation Metadata ***ECONOMIC PARAMETERS*** Economic Model = BICYCLE - Accrued financing during construction: 0.00 % + Accrued financing during construction: 0.00 % Project lifetime: 30 yr Capacity factor: 90.0 % Project NPV: -82.17 MUSD @@ -66,7 +66,7 @@ Simulation Metadata m/A Drawdown Parameter: 0.00002 1/year Bottom-hole temperature: 232.00 degC Reservoir volume calculated with fracture separation and number of fractures as input - Number of fractures: 12.00 + Number of fractures: 12 Fracture separation: 80.00 meter Reservoir volume: 176000000 m**3 Reservoir hydrostatic pressure: 29019.48 kPa @@ -90,13 +90,15 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 4.42 MUSD Drilling and completion costs: 25.55 MUSD Drilling and completion costs per well: 4.26 MUSD Stimulation costs: 4.53 MUSD Surface power plant costs: 64.90 MUSD + of which Electrical Plant Cost: 59.87 MUSD + of which Heat Plant Cost: 5.03 MUSD Field gathering system costs: 3.16 MUSD Total surface equipment costs: 68.06 MUSD - Exploration costs: 4.42 MUSD Total capital costs: 102.56 MUSD @@ -109,7 +111,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.23 MW/(kg/s) Maximum Total Electricity Generation: 21.16 MW Average Total Electricity Generation: 19.80 MW diff --git a/tests/examples/example13.out b/tests/examples/example13.out index 7b8813081..e9cbd8cfe 100644 --- a/tests/examples/example13.out +++ b/tests/examples/example13.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.9.47 - Simulation Date: 2025-07-31 - Simulation Time: 08:44 - Calculation Time: 0.036 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-07 + Simulation Time: 10:46 + Calculation Time: 0.049 sec ***SUMMARY OF RESULTS*** @@ -94,13 +94,15 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 0.00 MUSD Drilling and completion costs: 26.49 MUSD Drilling and completion costs per well: 6.62 MUSD Stimulation costs: 1.00 MUSD Surface power plant costs: 19.89 MUSD + of which Electrical Plant Cost: 11.99 MUSD + of which Heat Plant Cost: 7.90 MUSD Field gathering system costs: 2.32 MUSD Total surface equipment costs: 22.21 MUSD - Exploration costs: 0.00 MUSD Total capital costs: 49.70 MUSD @@ -114,7 +116,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.11 MW/(kg/s) Maximum Total Electricity Generation: 3.40 MW Average Total Electricity Generation: 3.40 MW diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index 605363e1d..ee5e54f6a 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,19 +6,19 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-07 - Simulation Time: 10:14 - Calculation Time: 1.803 sec + Simulation Time: 10:43 + Calculation Time: 1.789 sec ***SUMMARY OF RESULTS*** End-Use Option: Cogeneration Topping Cycle, Heat sales considered as extra income Average Net Electricity Production: 1017.22 MW Average Direct-Use Heat Production: 300.41 MW - Electricity breakeven price: 9.05 cents/kWh - Direct-Use heat breakeven price (LCOH): 11.93 USD/MMBTU - Total CAPEX: 9466.90 MUSD - Electricity CAPEX ($/kWe): 8076 USD/kW - Heat CAPEX ($/kWth): 3674 USD/kW + Electricity breakeven price: 9.81 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.56 USD/MMBTU + Total CAPEX: 9472.20 MUSD + Electricity CAPEX ($/kWe): 8829 USD/kW + Heat CAPEX ($/kWth): 1105 USD/kW Number of production wells: 114 Number of injection wells: 114 Flowrate per production well: 100.0 kg/sec @@ -32,15 +32,15 @@ Simulation Metadata Real Discount Rate: 12.00 % Nominal Discount Rate: 15.02 % WACC: 8.38 % - Investment Tax Credit: 3786.76 MUSD + Investment Tax Credit: 3788.88 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 266.20 MUSD - After-tax IRR: 18.65 % - Project VIR=PI=PIR: 1.11 - Project MOIC: 2.33 + Project NPV: 288.48 MUSD + After-tax IRR: 18.93 % + Project VIR=PI=PIR: 1.12 + Project MOIC: 2.38 Project Payback Period: 5.94 yr - CHP: Percent cost allocation for electrical plant: 88.30 % + CHP: Percent cost allocation for electrical plant: 96.48 % ***ENGINEERING PARAMETERS*** @@ -107,26 +107,28 @@ Simulation Metadata Drilling and completion costs: 1278.62 MUSD Drilling and completion costs per well: 5.61 MUSD Stimulation costs: 1514.98 MUSD - Surface power plant costs: 4782.88 MUSD - of which Electrical Plant Cost: 4614.62 MUSD - of which Heat Plant Cost: 168.26 MUSD + Surface power plant costs: 4225.49 MUSD + of which Electrical Plant Cost: 4076.84 MUSD + of which Heat Plant Cost: 148.65 MUSD Field gathering system costs: 68.88 MUSD Transmission pipeline cost: 2.00 MUSD - Total surface equipment costs: 4851.77 MUSD + Total surface equipment costs: 4294.38 MUSD One-time Flat License Fees Etc: 100.00 MUSD - Overnight Capital Cost: 8247.37 MUSD - Inflation costs during construction: 1003.23 MUSD - Interest during construction: 216.30 MUSD - Total CAPEX: 9466.90 MUSD + Total Add-on CAPEX: 562.00 MUSD + Overnight Capital Cost: 8251.98 MUSD + Inflation costs during construction: 1003.79 MUSD + Interest during construction: 216.43 MUSD + Total CAPEX: 9472.20 MUSD ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** Wellfield maintenance costs: 14.57 MUSD/yr - Power plant maintenance costs: 75.03 MUSD/yr + Power plant maintenance costs: 66.66 MUSD/yr Water costs: 44.89 MUSD/yr Redrilling costs: 186.24 MUSD/yr - Total operating and maintenance costs: 320.73 MUSD/yr + Total Add-on OPEX: 0.00 MUSD/yr + Total operating and maintenance costs: 312.37 MUSD/yr ***SURFACE EQUIPMENT SIMULATION RESULTS*** @@ -232,21 +234,21 @@ 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] (%) 2.68 2.68 2.68 46.0 46.0 -Overnight capital expenditure [construction] ($) -221,073,858 -221,073,858 -221,073,858 -3,792,076,594 -3,792,076,594 +Overnight capital expenditure [construction] ($) -221,197,430 -221,197,430 -221,197,430 -3,794,196,210 -3,794,196,210 plus: -Inflation cost [construction] ($) -5,968,994 -12,099,151 -18,394,822 -426,431,388 -540,331,104 +Inflation cost [construction] ($) -5,972,331 -12,105,914 -18,405,104 -426,669,746 -540,633,127 plus: Royalty supplemental payments [construction] ($) 0 0 0 0 0 equals: -Nominal capital expenditure [construction] ($) -227,042,853 -233,173,010 -239,468,681 -4,218,507,982 -4,332,407,697 +Nominal capital expenditure [construction] ($) -227,169,760 -233,303,344 -239,602,534 -4,220,865,956 -4,334,829,337 -Issuance of equity [construction] ($) 90,817,141 93,269,204 95,787,472 1,687,403,193 1,732,963,079 -Issuance of debt [construction] ($) 136,225,712 139,903,806 143,681,209 2,531,104,789 2,599,444,618 -Debt balance [construction] ($) 136,225,712 283,758,157 443,329,822 2,999,261,082 5,766,664,320 -Debt interest payment [construction] ($) 0 7,628,640 15,890,457 24,826,470 167,958,621 +Issuance of equity [construction] ($) 90,867,904 93,321,338 95,841,014 1,688,346,382 1,733,931,735 +Issuance of debt [construction] ($) 136,301,856 139,982,006 143,761,520 2,532,519,574 2,600,897,602 +Debt balance [construction] ($) 136,301,856 283,916,766 443,577,626 3,000,937,546 5,769,887,651 +Debt interest payment [construction] ($) 0 7,632,904 15,899,339 24,840,347 168,052,503 -Installed cost [construction] ($) -227,042,853 -240,801,649 -255,359,138 -4,243,334,452 -4,500,366,318 -After-tax net cash flow [construction] ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 +Installed cost [construction] ($) -227,169,760 -240,936,248 -255,501,873 -4,245,706,303 -4,502,881,839 +After-tax net cash flow [construction] ($) -90,867,904 -93,321,338 -95,841,014 -1,688,346,382 -1,733,931,735 ENERGY Electricity to grid (kWh) 0.0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 @@ -260,48 +262,50 @@ PPA price (cents/kWh) PPA revenue ($) 0 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 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 +Add-On 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 +plus: Heat price ($/kWh) 0.0 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 Heat revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 equals: Capacity payment revenue ($) 0 106,620,030 106,821,249 106,882,603 106,918,835 106,943,238 106,955,132 106,937,429 106,845,346 106,597,352 106,077,439 105,152,783 105,188,466 106,750,818 106,851,782 106,899,571 106,930,208 106,950,212 106,953,160 106,911,899 106,766,958 106,421,293 105,748,903 104,618,248 106,228,292 106,805,697 106,874,800 106,913,769 106,939,868 106,954,467 106,945,641 -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 4,733,452,205 -Total revenue ($) 0 869,963,097 877,048,087 883,846,159 889,773,632 895,290,600 900,359,769 904,334,112 905,517,245 900,806,605 885,792,240 855,521,104 861,766,087 925,383,166 933,794,552 940,253,991 946,087,931 951,529,076 956,309,822 959,334,340 958,197,165 948,964,571 926,567,069 885,901,922 955,520,329 983,217,780 990,604,170 996,809,414 1,002,509,201 1,007,745,194 5,745,457,039 +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 4,736,098,012 +Total revenue ($) 0 869,963,097 877,048,087 883,846,159 889,773,632 895,290,600 900,359,769 904,334,112 905,517,245 900,806,605 885,792,240 855,521,104 861,766,087 925,383,166 933,794,552 940,253,991 946,087,931 951,529,076 956,309,822 959,334,340 958,197,165 948,964,571 926,567,069 885,901,922 955,520,329 983,217,780 990,604,170 996,809,414 1,002,509,201 1,007,745,194 5,748,102,846 -Property tax net assessed value ($) 0 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 9,466,904,409 +Property tax net assessed value ($) 0 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 9,472,196,023 OPERATING EXPENSES -O&M fixed expense ($) 0 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 +O&M fixed expense ($) 0 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 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 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 320,728,439 +Total operating expenses ($) 0 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 312,367,588 -EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +EBITDA ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 OPERATING ACTIVITIES -EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +EBITDA ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 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 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 -Cash flow from operating activities ($) 0 226,301,456 237,767,705 249,192,386 260,005,559 270,681,825 281,199,212 290,926,875 298,185,514 299,890,607 291,651,257 268,534,536 282,334,582 353,929,807 370,766,115 386,122,273 401,351,146 416,713,342 431,970,718 446,058,556 456,604,248 459,708,761 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 +Debt interest payment ($) 0 323,113,708 318,730,001 314,100,806 309,212,376 304,050,193 298,598,929 292,842,394 286,763,493 280,344,173 273,565,371 266,406,957 258,847,671 250,865,066 242,435,434 233,533,743 224,133,558 214,206,962 203,724,476 192,654,972 180,965,575 168,621,572 155,586,304 141,821,062 127,284,967 111,934,849 95,725,126 78,607,658 60,531,611 41,443,306 21,286,056 +Cash flow from operating activities ($) 0 234,481,801 245,950,498 257,377,765 268,193,669 278,872,819 289,393,252 299,124,130 306,386,165 308,094,845 299,859,281 276,746,559 290,550,828 362,150,512 378,991,530 394,352,660 409,586,786 424,954,527 440,217,758 454,311,780 464,864,003 467,975,411 458,613,176 431,713,272 515,867,775 558,915,343 582,511,457 605,834,169 629,610,002 653,934,300 5,414,449,202 INVESTING ACTIVITIES -Total installed cost ($) -9,466,904,409 +Total installed cost ($) -9,472,196,023 Debt closing costs ($) 0 Debt up-front fee ($) 0 minus: Total IBI income ($) 0 Total CBI income ($) 0 equals: -Purchase of property ($) -9,466,904,409 +Purchase of property ($) -9,472,196,023 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 @@ -313,93 +317,93 @@ 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 ($) -9,466,904,409 0 0 0 0 0 0 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 ($) -9,472,196,023 0 0 0 0 0 0 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 ($) 3,700,240,089 -Size of debt ($) 5,766,664,320 +Issuance of equity ($) 3,702,308,372 +Size of debt ($) 5,769,887,651 minus: -Debt principal payment ($) 0 78,236,761 82,618,020 87,244,629 92,130,328 97,289,626 102,737,845 108,491,165 114,566,670 120,982,403 127,757,418 134,911,833 142,466,896 150,445,042 158,869,965 167,766,683 177,161,617 187,082,667 197,559,297 208,622,617 220,305,484 232,642,591 245,670,576 259,428,129 273,956,104 289,297,646 305,498,314 322,606,219 340,672,168 359,749,809 379,895,798 +Debt principal payment ($) 0 78,280,492 82,664,200 87,293,395 92,181,825 97,344,007 102,795,272 108,551,807 114,630,708 121,050,028 127,828,829 134,987,244 142,546,529 150,529,135 158,958,767 167,860,457 177,260,643 187,187,239 197,669,724 208,739,229 220,428,626 232,772,629 245,807,896 259,573,138 274,109,234 289,459,351 305,669,075 322,786,543 340,862,589 359,950,894 380,108,145 equals: -Cash flow from financing activities ($) 9,466,904,409 -78,236,761 -82,618,020 -87,244,629 -92,130,328 -97,289,626 -102,737,845 -108,491,165 -114,566,670 -120,982,403 -127,757,418 -134,911,833 -142,466,896 -150,445,042 -158,869,965 -167,766,683 -177,161,617 -187,082,667 -197,559,297 -208,622,617 -220,305,484 -232,642,591 -245,670,576 -259,428,129 -273,956,104 -289,297,646 -305,498,314 -322,606,219 -340,672,168 -359,749,809 -379,895,798 +Cash flow from financing activities ($) 9,472,196,023 -78,280,492 -82,664,200 -87,293,395 -92,181,825 -97,344,007 -102,795,272 -108,551,807 -114,630,708 -121,050,028 -127,828,829 -134,987,244 -142,546,529 -150,529,135 -158,958,767 -167,860,457 -177,260,643 -187,187,239 -197,669,724 -208,739,229 -220,428,626 -232,772,629 -245,807,896 -259,573,138 -274,109,234 -289,459,351 -305,669,075 -322,786,543 -340,862,589 -359,950,894 -380,108,145 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 226,301,456 237,767,705 249,192,386 260,005,559 270,681,825 281,199,212 290,926,875 298,185,514 299,890,607 291,651,257 268,534,536 282,334,582 353,929,807 370,766,115 386,122,273 401,351,146 416,713,342 431,970,718 446,058,556 456,604,248 459,708,761 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 -Cash flow from investing activities ($) -9,466,904,409 0 0 0 0 0 0 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 ($) 9,466,904,409 -78,236,761 -82,618,020 -87,244,629 -92,130,328 -97,289,626 -102,737,845 -108,491,165 -114,566,670 -120,982,403 -127,757,418 -134,911,833 -142,466,896 -150,445,042 -158,869,965 -167,766,683 -177,161,617 -187,082,667 -197,559,297 -208,622,617 -220,305,484 -232,642,591 -245,670,576 -259,428,129 -273,956,104 -289,297,646 -305,498,314 -322,606,219 -340,672,168 -359,749,809 -379,895,798 -Total pre-tax cash flow ($) 0 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 +Cash flow from operating activities ($) 0 234,481,801 245,950,498 257,377,765 268,193,669 278,872,819 289,393,252 299,124,130 306,386,165 308,094,845 299,859,281 276,746,559 290,550,828 362,150,512 378,991,530 394,352,660 409,586,786 424,954,527 440,217,758 454,311,780 464,864,003 467,975,411 458,613,176 431,713,272 515,867,775 558,915,343 582,511,457 605,834,169 629,610,002 653,934,300 5,414,449,202 +Cash flow from investing activities ($) -9,472,196,023 0 0 0 0 0 0 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 ($) 9,472,196,023 -78,280,492 -82,664,200 -87,293,395 -92,181,825 -97,344,007 -102,795,272 -108,551,807 -114,630,708 -121,050,028 -127,828,829 -134,987,244 -142,546,529 -150,529,135 -158,958,767 -167,860,457 -177,260,643 -187,187,239 -197,669,724 -208,739,229 -220,428,626 -232,772,629 -245,807,896 -259,573,138 -274,109,234 -289,459,351 -305,669,075 -322,786,543 -340,862,589 -359,950,894 -380,108,145 +Total pre-tax cash flow ($) 0 156,201,309 163,286,299 170,084,370 176,011,844 181,528,812 186,597,980 190,572,323 191,755,457 187,044,817 172,030,452 141,759,315 148,004,299 211,621,377 220,032,764 226,492,203 232,326,143 237,767,288 242,548,034 245,572,551 244,435,377 235,202,783 212,805,280 172,140,134 241,758,541 269,455,992 276,842,382 283,047,626 288,747,413 293,983,406 5,034,341,057 Pre-tax Returns: -Issuance of equity ($) 3,700,240,089 -Total pre-tax cash flow ($) 0 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 -Total pre-tax returns ($) -3,700,240,089 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 +Issuance of equity ($) 3,702,308,372 +Total pre-tax cash flow ($) 0 156,201,309 163,286,299 170,084,370 176,011,844 181,528,812 186,597,980 190,572,323 191,755,457 187,044,817 172,030,452 141,759,315 148,004,299 211,621,377 220,032,764 226,492,203 232,326,143 237,767,288 242,548,034 245,572,551 244,435,377 235,202,783 212,805,280 172,140,134 241,758,541 269,455,992 276,842,382 283,047,626 288,747,413 293,983,406 5,034,341,057 +Total pre-tax returns ($) -3,702,308,372 156,201,309 163,286,299 170,084,370 176,011,844 181,528,812 186,597,980 190,572,323 191,755,457 187,044,817 172,030,452 141,759,315 148,004,299 211,621,377 220,032,764 226,492,203 232,326,143 237,767,288 242,548,034 245,572,551 244,435,377 235,202,783 212,805,280 172,140,134 241,758,541 269,455,992 276,842,382 283,047,626 288,747,413 293,983,406 5,034,341,057 After-tax Returns: -Total pre-tax returns ($) -3,700,240,089 148,064,695 155,149,686 161,947,757 167,875,231 173,392,199 178,461,367 182,435,710 183,618,844 178,908,204 163,893,839 133,622,702 139,867,685 203,484,764 211,896,150 218,355,590 224,189,530 229,630,675 234,411,421 237,435,938 236,298,764 227,066,169 204,668,667 164,003,521 233,621,928 261,319,379 268,705,769 274,911,013 280,610,800 285,846,793 5,023,558,637 -Federal ITC total income ($) 0 3,786,761,764 0 0 0 0 0 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 ($) -3,702,308,372 156,201,309 163,286,299 170,084,370 176,011,844 181,528,812 186,597,980 190,572,323 191,755,457 187,044,817 172,030,452 141,759,315 148,004,299 211,621,377 220,032,764 226,492,203 232,326,143 237,767,288 242,548,034 245,572,551 244,435,377 235,202,783 212,805,280 172,140,134 241,758,541 269,455,992 276,842,382 283,047,626 288,747,413 293,983,406 5,034,341,057 +Federal ITC total income ($) 0 3,788,878,409 0 0 0 0 0 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 -7,218,946 27,519,424 25,288,184 23,176,372 21,091,297 19,037,251 17,137,439 15,719,826 15,386,822 16,995,967 21,510,662 18,815,513 4,832,966 1,544,835 -1,454,223 -4,428,422 -7,428,659 -10,408,424 -13,159,779 -15,219,352 -52,803,392 -87,951,254 -82,696,201 -99,129,990 -107,535,505 -112,142,057 -116,695,115 -121,336,564 -126,085,016 -1,055,294,651 +Federal tax benefit (liability) ($) 0 -8,795,898 25,962,663 23,730,918 21,618,572 19,532,934 17,478,293 15,577,853 14,159,577 13,825,872 15,434,278 19,948,192 17,252,219 3,268,800 -20,250 -3,020,279 -5,995,504 -8,996,824 -11,977,733 -14,730,295 -16,791,144 -54,397,200 -89,567,153 -84,313,602 -100,748,976 -109,156,166 -113,764,488 -118,319,413 -122,962,833 -127,713,369 -1,057,441,929 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 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 -Total after-tax returns ($) -3,700,240,089 3,925,020,078 192,532,703 196,299,807 199,358,546 202,043,100 204,322,006 205,715,600 204,973,017 199,810,015 186,981,550 162,843,280 165,427,111 210,049,976 213,994,690 216,380,140 218,173,860 219,539,415 220,272,379 219,559,393 215,624,446 155,336,830 85,193,666 51,667,104 98,961,476 115,240,682 116,369,426 116,389,691 115,784,429 114,570,014 3,590,022,175 +State tax benefit (liability) ($) 0 -3,152,652 9,305,614 8,505,705 7,748,592 7,001,052 6,264,621 5,583,460 5,075,117 4,955,510 5,531,999 7,149,890 6,183,591 1,171,613 -7,258 -1,082,537 -2,148,926 -3,224,668 -4,293,094 -5,279,676 -6,018,331 -19,497,204 -32,102,922 -30,219,929 -36,110,744 -39,124,074 -40,775,802 -42,408,392 -44,072,700 -45,775,401 -379,011,444 +Total after-tax returns ($) -3,702,308,372 3,933,131,168 198,554,576 202,320,993 205,379,008 208,062,797 210,340,895 211,733,636 210,990,152 205,826,199 192,996,729 168,857,397 171,440,108 216,061,791 220,005,255 222,389,386 224,181,713 225,545,796 226,277,207 225,562,580 221,625,901 161,308,378 91,135,204 57,606,603 104,898,820 121,175,751 122,302,093 122,319,821 121,711,879 120,494,636 3,597,887,684 -After-tax net cash flow ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 3,925,020,078 192,532,703 196,299,807 199,358,546 202,043,100 204,322,006 205,715,600 204,973,017 199,810,015 186,981,550 162,843,280 165,427,111 210,049,976 213,994,690 216,380,140 218,173,860 219,539,415 220,272,379 219,559,393 215,624,446 155,336,830 85,193,666 51,667,104 98,961,476 115,240,682 116,369,426 116,389,691 115,784,429 114,570,014 3,590,022,175 -After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 3.54 6.30 8.70 10.69 12.29 13.58 14.60 15.40 16.01 16.48 16.80 17.07 17.35 17.58 17.77 17.92 18.05 18.16 18.24 18.31 18.36 18.37 18.38 18.40 18.42 18.43 18.44 18.45 18.46 18.65 -After-tax cumulative NPV ($) -90,817,141 -171,903,874 -244,302,743 -1,353,103,382 -2,343,103,953 -393,710,284 -310,577,235 -236,888,583 -171,826,626 -114,501,129 -64,101,135 -19,985,341 18,229,767 50,616,504 76,965,267 96,915,264 114,534,669 133,984,629 151,211,666 166,355,525 179,630,490 191,243,765 201,373,866 210,152,305 217,647,360 222,341,573 224,579,815 225,759,934 227,725,054 229,714,537 231,461,103 232,979,803 234,293,270 235,423,200 266,204,665 +After-tax net cash flow ($) -90,867,904 -93,321,338 -95,841,014 -1,688,346,382 -1,733,931,735 3,933,131,168 198,554,576 202,320,993 205,379,008 208,062,797 210,340,895 211,733,636 210,990,152 205,826,199 192,996,729 168,857,397 171,440,108 216,061,791 220,005,255 222,389,386 224,181,713 225,545,796 226,277,207 225,562,580 221,625,901 161,308,378 91,135,204 57,606,603 104,898,820 121,175,751 122,302,093 122,319,821 121,711,879 120,494,636 3,597,887,684 +After-tax cumulative IRR (%) NaN NaN NaN NaN NaN 3.63 6.47 8.92 10.94 12.58 13.87 14.90 15.70 16.32 16.78 17.11 17.38 17.65 17.88 18.07 18.22 18.34 18.45 18.53 18.60 18.64 18.66 18.67 18.69 18.71 18.72 18.73 18.74 18.75 18.93 +After-tax cumulative NPV ($) -90,867,904 -171,999,962 -244,439,299 -1,353,859,712 -2,344,413,653 -390,991,544 -305,258,331 -229,309,396 -162,282,622 -103,249,162 -51,364,492 -5,958,128 33,378,813 66,740,699 93,937,099 114,623,889 132,883,729 152,890,364 170,601,265 186,165,694 199,806,212 211,737,214 222,143,472 231,161,930 238,865,594 243,740,265 246,134,606 247,450,387 249,533,408 251,625,352 253,460,960 255,057,039 256,437,748 257,626,109 288,475,013 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -90,817,141 -93,269,204 -95,787,472 -1,687,403,193 -1,732,963,079 3,055,056,981 -684,515,384 -687,546,352 -690,415,087 -693,247,500 -696,037,763 -698,618,512 -700,544,229 -700,996,590 -698,810,690 -692,677,824 -696,338,976 -715,333,190 -719,799,862 -723,873,851 -727,914,071 -731,989,662 -736,037,443 -739,774,947 -742,572,719 -793,627,741 -841,373,403 -834,234,818 -856,558,853 -867,977,098 -874,234,745 -880,419,723 -886,724,773 -893,175,180 2,578,017,341 +Annual costs ($) -90,867,904 -93,321,338 -95,841,014 -1,688,346,382 -1,733,931,735 3,063,168,071 -678,493,511 -681,525,165 -684,394,625 -687,227,803 -690,018,874 -692,600,476 -694,527,094 -694,980,406 -692,795,511 -686,663,706 -690,325,979 -709,321,375 -713,789,297 -717,864,605 -721,906,218 -725,983,280 -730,032,615 -733,771,760 -736,571,264 -787,656,193 -835,431,864 -828,295,319 -850,621,509 -862,042,029 -868,302,078 -874,489,593 -880,797,322 -887,250,558 2,585,882,850 PPA revenue ($) 0 0 0 0 0 763,343,067 770,226,838 776,963,556 782,854,797 788,347,362 793,404,637 797,396,683 798,671,899 794,209,253 779,714,801 750,368,321 756,577,621 818,632,348 826,942,770 833,354,420 839,157,723 844,578,864 849,356,662 852,422,441 851,430,207 842,543,278 820,818,166 781,283,674 849,292,037 876,412,083 883,729,370 889,895,645 895,569,333 900,790,727 905,059,193 Electricity to grid (kWh) 0 0 0 0 0 8,035,190,178 8,107,650,926 8,129,785,032 8,142,862,465 8,151,663,345 8,155,886,478 8,149,174,071 8,114,934,966 8,023,126,108 7,831,607,082 7,493,941,085 7,513,183,922 8,083,660,983 8,120,019,343 8,137,432,090 8,148,744,640 8,156,242,051 8,157,478,508 8,142,348,272 8,088,829,634 7,961,289,596 7,714,456,443 7,303,764,365 7,897,452,458 8,106,669,902 8,131,481,141 8,145,497,899 8,154,883,749 8,160,075,434 8,156,625,748 -Present value of annual costs ($) 3,090,309,154 +Present value of annual costs ($) 3,068,038,804 -Present value of annual energy costs ($) 2,728,742,983 +Present value of annual energy costs ($) 2,960,105,234 Present value of annual energy nominal (kWh) 30,167,357,656 -LCOE Levelized cost of energy nominal (cents/kWh) 9.05 +LCOE Levelized cost of energy nominal (cents/kWh) 9.81 Present value of PPA revenue ($) 2,956,972,031 Present value of annual energy nominal (kWh) 30,167,357,656 LPPA Levelized PPA price nominal (cents/kWh) 9.80 -Present value of annual heat costs ($) 361,566,171 +Present value of annual heat costs ($) 107,933,570 Present value of annual heat provided (MMBTU) 30,295,399 -LCOH Levelized cost of heating nominal ($/MMBTU) 11.93 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.56 PROJECT STATE INCOME TAXES -EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +EBITDA ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 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 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 -Total state tax depreciation ($) 0 189,338,088 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 189,338,088 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 323,113,708 318,730,001 314,100,806 309,212,376 304,050,193 298,598,929 292,842,394 286,763,493 280,344,173 273,565,371 266,406,957 258,847,671 250,865,066 242,435,434 233,533,743 224,133,558 214,206,962 203,724,476 192,654,972 180,965,575 168,621,572 155,586,304 141,821,062 127,284,967 111,934,849 95,725,126 78,607,658 60,531,611 41,443,306 21,286,056 +Total state tax depreciation ($) 0 189,443,920 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 189,443,920 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 36,963,368 -140,908,471 -129,483,791 -118,670,618 -107,994,352 -97,476,964 -87,749,301 -80,490,663 -78,785,569 -87,024,920 -110,141,641 -96,341,595 -24,746,370 -7,910,061 7,446,096 22,674,970 38,037,166 53,294,541 67,382,379 77,928,072 270,370,672 450,339,243 423,431,649 507,578,032 550,617,024 574,204,083 597,517,232 621,282,967 645,596,602 5,403,454,435 +State taxable income ($) 0 45,037,880 -132,937,343 -121,510,076 -110,694,172 -100,015,022 -89,494,589 -79,763,711 -72,501,676 -70,792,996 -79,028,560 -102,141,282 -88,337,013 -16,737,329 103,689 15,464,819 30,698,945 46,066,686 61,329,917 75,423,939 85,976,162 278,531,491 458,613,176 431,713,272 515,867,775 558,915,343 582,511,457 605,834,169 629,610,002 653,934,300 5,414,449,202 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 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 +State tax benefit (liability) ($) 0 -3,152,652 9,305,614 8,505,705 7,748,592 7,001,052 6,264,621 5,583,460 5,075,117 4,955,510 5,531,999 7,149,890 6,183,591 1,171,613 -7,258 -1,082,537 -2,148,926 -3,224,668 -4,293,094 -5,279,676 -6,018,331 -19,497,204 -32,102,922 -30,219,929 -36,110,744 -39,124,074 -40,775,802 -42,408,392 -44,072,700 -45,775,401 -379,011,444 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +EBITDA ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 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 -2,587,436 9,863,593 9,063,865 8,306,943 7,559,605 6,823,387 6,142,451 5,634,346 5,514,990 6,091,744 7,709,915 6,743,912 1,732,246 553,704 -521,227 -1,587,248 -2,662,602 -3,730,618 -4,716,767 -5,454,965 -18,925,947 -31,523,747 -29,640,215 -35,530,462 -38,543,192 -40,194,286 -41,826,206 -43,489,808 -45,191,762 -378,241,810 +State tax benefit (liability) ($) 0 -3,152,652 9,305,614 8,505,705 7,748,592 7,001,052 6,264,621 5,583,460 5,075,117 4,955,510 5,531,999 7,149,890 6,183,591 1,171,613 -7,258 -1,082,537 -2,148,926 -3,224,668 -4,293,094 -5,279,676 -6,018,331 -19,497,204 -32,102,922 -30,219,929 -36,110,744 -39,124,074 -40,775,802 -42,408,392 -44,072,700 -45,775,401 -379,011,444 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 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 -Total federal tax depreciation ($) 0 189,338,088 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 378,676,176 189,338,088 0 0 0 0 0 0 0 0 0 +Debt interest payment ($) 0 323,113,708 318,730,001 314,100,806 309,212,376 304,050,193 298,598,929 292,842,394 286,763,493 280,344,173 273,565,371 266,406,957 258,847,671 250,865,066 242,435,434 233,533,743 224,133,558 214,206,962 203,724,476 192,654,972 180,965,575 168,621,572 155,586,304 141,821,062 127,284,967 111,934,849 95,725,126 78,607,658 60,531,611 41,443,306 21,286,056 +Total federal tax depreciation ($) 0 189,443,920 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 378,887,841 189,443,920 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 34,375,932 -131,044,878 -120,419,925 -110,363,674 -100,434,747 -90,653,576 -81,606,850 -74,856,316 -73,270,579 -80,933,175 -102,431,726 -89,597,683 -23,014,124 -7,356,357 6,924,869 21,087,722 35,374,564 49,563,923 62,665,613 72,473,106 251,444,725 418,815,496 393,791,434 472,047,569 512,073,833 534,009,797 555,691,026 577,793,160 600,404,840 5,025,212,625 +Federal taxable income ($) 0 41,885,229 -123,631,729 -113,004,371 -102,945,580 -93,013,970 -83,229,968 -74,180,251 -67,426,559 -65,837,487 -73,496,561 -94,991,392 -82,153,422 -15,565,716 96,431 14,382,282 28,550,019 42,842,018 57,036,823 70,144,264 79,957,831 259,034,287 426,510,254 401,493,343 479,757,031 519,791,269 541,735,655 563,425,777 585,537,302 608,158,899 5,035,437,758 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 -7,218,946 27,519,424 25,288,184 23,176,372 21,091,297 19,037,251 17,137,439 15,719,826 15,386,822 16,995,967 21,510,662 18,815,513 4,832,966 1,544,835 -1,454,223 -4,428,422 -7,428,659 -10,408,424 -13,159,779 -15,219,352 -52,803,392 -87,951,254 -82,696,201 -99,129,990 -107,535,505 -112,142,057 -116,695,115 -121,336,564 -126,085,016 -1,055,294,651 +Federal tax benefit (liability) ($) 0 -8,795,898 25,962,663 23,730,918 21,618,572 19,532,934 17,478,293 15,577,853 14,159,577 13,825,872 15,434,278 19,948,192 17,252,219 3,268,800 -20,250 -3,020,279 -5,995,504 -8,996,824 -11,977,733 -14,730,295 -16,791,144 -54,397,200 -89,567,153 -84,313,602 -100,748,976 -109,156,166 -113,764,488 -118,319,413 -122,962,833 -127,713,369 -1,057,441,929 CASH INCENTIVES Federal IBI income ($) 0 @@ -425,30 +429,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 3,786,761,764 0 0 0 0 0 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 3,786,761,764 0 0 0 0 0 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 3,788,878,409 0 0 0 0 0 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 3,788,878,409 0 0 0 0 0 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 ($) 5,766,664,320 5,688,427,559 5,605,809,540 5,518,564,911 5,426,434,583 5,329,144,957 5,226,407,111 5,117,915,947 5,003,349,277 4,882,366,873 4,754,609,455 4,619,697,622 4,477,230,726 4,326,785,683 4,167,915,719 4,000,149,036 3,822,987,419 3,635,904,752 3,438,345,455 3,229,722,837 3,009,417,353 2,776,774,762 2,531,104,186 2,271,676,057 1,997,719,953 1,708,422,308 1,402,923,994 1,080,317,775 739,645,607 379,895,798 0 -Debt interest payment ($) 0 322,933,202 318,551,943 313,925,334 309,039,635 303,880,337 298,432,118 292,678,798 286,603,293 280,187,560 273,412,545 266,258,129 258,703,067 250,724,921 242,299,998 233,403,280 224,008,346 214,087,295 203,610,666 192,547,345 180,864,479 168,527,372 155,499,387 141,741,834 127,213,859 111,872,317 95,671,649 78,563,744 60,497,795 41,420,154 21,274,165 -Debt principal payment ($) 0 78,236,761 82,618,020 87,244,629 92,130,328 97,289,626 102,737,845 108,491,165 114,566,670 120,982,403 127,757,418 134,911,833 142,466,896 150,445,042 158,869,965 167,766,683 177,161,617 187,082,667 197,559,297 208,622,617 220,305,484 232,642,591 245,670,576 259,428,129 273,956,104 289,297,646 305,498,314 322,606,219 340,672,168 359,749,809 379,895,798 -Debt total payment ($) 0 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 +Debt balance ($) 5,769,887,651 5,691,607,159 5,608,942,959 5,521,649,564 5,429,467,739 5,332,123,732 5,229,328,460 5,120,776,653 5,006,145,945 4,885,095,918 4,757,267,088 4,622,279,845 4,479,733,315 4,329,204,180 4,170,245,414 4,002,384,957 3,825,124,313 3,637,937,074 3,440,267,350 3,231,528,121 3,011,099,495 2,778,326,866 2,532,518,970 2,272,945,832 1,998,836,597 1,709,377,246 1,403,708,171 1,080,921,628 740,059,039 380,108,145 0 +Debt interest payment ($) 0 323,113,708 318,730,001 314,100,806 309,212,376 304,050,193 298,598,929 292,842,394 286,763,493 280,344,173 273,565,371 266,406,957 258,847,671 250,865,066 242,435,434 233,533,743 224,133,558 214,206,962 203,724,476 192,654,972 180,965,575 168,621,572 155,586,304 141,821,062 127,284,967 111,934,849 95,725,126 78,607,658 60,531,611 41,443,306 21,286,056 +Debt principal payment ($) 0 78,280,492 82,664,200 87,293,395 92,181,825 97,344,007 102,795,272 108,551,807 114,630,708 121,050,028 127,828,829 134,987,244 142,546,529 150,529,135 158,958,767 167,860,457 177,260,643 187,187,239 197,669,724 208,739,229 220,428,626 232,772,629 245,807,896 259,573,138 274,109,234 289,459,351 305,669,075 322,786,543 340,862,589 359,950,894 380,108,145 +Debt total payment ($) 0 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 DSCR (DEBT FRACTION) -EBITDA ($) 0 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 +EBITDA ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 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 549,234,658 556,319,648 563,117,720 569,045,194 574,562,162 579,631,330 583,605,673 584,788,807 580,078,167 565,063,802 534,792,665 541,037,648 604,654,727 613,066,113 619,525,553 625,359,492 630,800,638 635,581,384 638,605,901 637,468,727 628,236,132 605,838,630 565,173,484 634,791,891 662,489,342 669,875,732 676,080,976 681,780,763 687,016,756 5,424,728,600 -Debt total payment ($) 0 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 401,169,963 -DSCR (pre-tax) 0.0 1.37 1.39 1.40 1.42 1.43 1.44 1.45 1.46 1.45 1.41 1.33 1.35 1.51 1.53 1.54 1.56 1.57 1.58 1.59 1.59 1.57 1.51 1.41 1.58 1.65 1.67 1.69 1.70 1.71 13.52 +Cash available for debt service (CAFDS) ($) 0 557,595,509 564,680,499 571,478,571 577,406,045 582,923,012 587,992,181 591,966,524 593,149,658 588,439,018 573,424,652 543,153,516 549,398,499 613,015,578 621,426,964 627,886,404 633,720,343 639,161,489 643,942,234 646,966,752 645,829,578 636,596,983 614,199,481 573,534,334 643,152,742 670,850,192 678,236,583 684,441,827 690,141,614 695,377,606 5,435,735,258 +Debt total payment ($) 0 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 401,394,201 +DSCR (pre-tax) 0.0 1.39 1.41 1.42 1.44 1.45 1.46 1.47 1.48 1.47 1.43 1.35 1.37 1.53 1.55 1.56 1.58 1.59 1.60 1.61 1.61 1.59 1.53 1.43 1.60 1.67 1.69 1.71 1.72 1.73 13.54 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/example14_data-center.txt b/tests/examples/example14_data-center.txt index b77090418..96f5fb518 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -32,8 +32,7 @@ Property Tax Rate, 0 One-time Flat License Fees Etc, 100, -- Permitting & Land Acquisition = $100M Exploration Capital Cost, 500 -Surface Plant Capital Cost Adjustment Factor, 1.56, -- Yields $4.225B power plant cost + $562M absorption chiller in conjunction with CHP Electrical Plant Cost Allocation Ratio value -CHP Electrical Plant Cost Allocation Ratio, 0.883 +Surface Plant Capital Cost Adjustment Factor, 1.3782, -- $4.225B power plant cost Well Drilling Cost Correlation, 3, -- VERTICAL_LARGE (2025 NREL Geothermal Drilling Cost Curve Update) Well Drilling and Completion Capital Cost Adjustment Factor, 0.713, -- Based on $12,257,861.64/well with 46% drilling cost ratio @@ -52,6 +51,11 @@ Construction CAPEX Schedule, 0.0268, 0.0268, 0.0268, 0.4597, 0.4597, -- 3-year d End-Use Option, 31, -- CHP: Cogeneration topping cycle A power plant is followed by a direct-use heat application in series. Heat at high temperatures from the geothermal fluid is first converted into electricity. Any remaining heat in the geothermal fluid after leaving the power plant is supplied to a low-temperature direct-use heat application. Power Plant Type, 2, -- Supercritical ORC +AddOn Nickname 1, Absorption Chiller +AddOn CAPEX 1, 562 +AddOn Profit Gained 1, 0, -- note that revenue is modeled as heat sales, not add-on profit. +AddOn OPEX 1, 0 + Plant Lifetime, 30 Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) diff --git a/tests/examples/example3.out b/tests/examples/example3.out index 9d4c402ab..974173df2 100644 --- a/tests/examples/example3.out +++ b/tests/examples/example3.out @@ -4,10 +4,10 @@ Simulation Metadata ---------------------- - GEOPHIRES Version: 3.9.47 - Simulation Date: 2025-07-31 - Simulation Time: 08:57 - Calculation Time: 0.124 sec + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-07 + Simulation Time: 10:46 + Calculation Time: 0.154 sec ***SUMMARY OF RESULTS*** @@ -91,13 +91,15 @@ Simulation Metadata ***CAPITAL COSTS (M$)*** + Exploration costs: 4.64 MUSD Drilling and completion costs: 27.29 MUSD Drilling and completion costs per well: 4.55 MUSD Stimulation costs: 4.53 MUSD Surface power plant costs: 64.05 MUSD + of which Electrical Plant Cost: 59.87 MUSD + of which Heat Plant Cost: 4.17 MUSD Field gathering system costs: 3.17 MUSD Total surface equipment costs: 67.22 MUSD - Exploration costs: 4.64 MUSD Total capital costs: 103.68 MUSD @@ -110,7 +112,6 @@ Simulation Metadata ***SURFACE EQUIPMENT SIMULATION RESULTS*** - Initial geofluid availability: 0.23 MW/(kg/s) Maximum Total Electricity Generation: 21.16 MW Average Total Electricity Generation: 19.70 MW From e7227d5689b24d9d4df7eac794fee6e24235f0cf Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 10:50:55 -0700 Subject: [PATCH 095/127] document example14_data-center CAPEX-only add-on in description --- tests/examples/example14_data-center.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/examples/example14_data-center.txt b/tests/examples/example14_data-center.txt index 96f5fb518..4de72c5f6 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -3,7 +3,8 @@ # This example models a 1 GWe Enhanced Geothermal System (EGS) to power a hyperscale data center. # Based on the techno-economic analysis by Project InnerSpace (Yusifov & Enriquez, 2025), the simulation incorporates direct # cooling via an absorption chiller, yielding an estimated $107 million in annual operating cost savings over the 30-year project lifespan. -# The absorption chiller is modeled as cogenerated heat, with heat sales yielding revenue equivalent to the estimated savings. +# The absorption chiller is thermodynamically modeled as cogenerated heat, with heat sales yielding revenue equivalent to the estimated savings. +# The absorption chiller CAPEX of $562M is modeled via an add-on. # # Reference: Yusifov, M., & Enriquez, N. (2025, July). From Core to Code: Powering the AI Revolution with Geothermal Energy. Project InnerSpace & Future Ventures. https://projectinnerspace.org/resources/Powering-the-AI-Revolution.pdf From b32807e321bb09e90e11c92a058935d7b538c682 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:05:51 -0700 Subject: [PATCH 096/127] include tranmission pipeline in surface equipment costs --- src/geophires_x/Economics.py | 23 +++++++++++-------- .../geophires-result.json | 2 +- tests/examples/example14_data-center.out | 6 ++--- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 79bd13758..e049bcfc0 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -2131,14 +2131,6 @@ def __init__(self, model: Model): 'length and can be manually added by the user to the pipeline distribution costs.' ) - self.surface_equipment_costs_total = self.OutputParameterDict[self.surface_equipment_costs_total.Name] = OutputParameter( - Name='Total surface equipment costs', - UnitType=Units.CURRENCY, - PreferredUnits=CurrencyUnit.MDOLLARS, - CurrentUnits=CurrencyUnit.MDOLLARS, - ToolTipText=f'{self.Cplant.Name} plus {self.Cgath.Name}.' - ) - self.Cpiping = self.OutputParameterDict[self.Cpiping.Name] = OutputParameter( Name="Transmission pipeline costs", display_name='Transmission pipeline cost', @@ -2146,6 +2138,15 @@ def __init__(self, model: Model): PreferredUnits=CurrencyUnit.MDOLLARS, CurrentUnits=CurrencyUnit.MDOLLARS ) + + self.surface_equipment_costs_total = self.OutputParameterDict[self.surface_equipment_costs_total.Name] = OutputParameter( + Name='Total surface equipment costs', + UnitType=Units.CURRENCY, + PreferredUnits=CurrencyUnit.MDOLLARS, + CurrentUnits=CurrencyUnit.MDOLLARS, + ToolTipText=f'{self.Cplant.Name} plus {self.Cgath.Name} plus {self.Cpiping.Name}.' + ) + self.Coamwater = self.OutputParameterDict[self.Coamwater.Name] = OutputParameter( Name="O&M Make-up Water costs", display_name='Water costs', @@ -3415,6 +3416,7 @@ def calculate_total_capital_costs(self, model: Model) -> None: else: self.dhdistrictcost.value = 0 + # TODO unit conversions self.CCap.value = self.Cexpl.value + self.Cwell.value + self.Cstim.value + self.Cgath.value + self.Cplant.value + self.Cpiping.value + self.dhdistrictcost.value else: self.CCap.value = self.totalcapcost.value @@ -3882,8 +3884,9 @@ def _calculate_derived_outputs(self, model: Model) -> None: .to(convertible_unit(self.chp_percent_cost_allocation_for_electrical_plant.CurrentUnits)).magnitude ) - if all(hasattr(self, it) for it in ['Cplant', 'Cgath']): - self.surface_equipment_costs_total.value = (self.Cplant.quantity() + self.Cgath.quantity()).to( + if all(hasattr(self, it) for it in ['Cplant', 'Cgath', 'Cpiping']): + self.surface_equipment_costs_total.value = ( + self.Cplant.quantity() + self.Cgath.quantity() + self.Cpiping.quantity()).to( self.surface_equipment_costs_total.CurrentUnits).magnitude diff --git a/src/geophires_x_schema_generator/geophires-result.json b/src/geophires_x_schema_generator/geophires-result.json index 07432b8da..552ce18bf 100644 --- a/src/geophires_x_schema_generator/geophires-result.json +++ b/src/geophires_x_schema_generator/geophires-result.json @@ -472,7 +472,7 @@ }, "Total surface equipment costs": { "type": "number", - "description": "Surface Plant cost plus Field gathering system cost.", + "description": "Surface Plant cost plus Field gathering system cost plus Transmission pipeline costs.", "units": "MUSD" }, "Investment Tax Credit": { diff --git a/tests/examples/example14_data-center.out b/tests/examples/example14_data-center.out index ee5e54f6a..0b9466b27 100644 --- a/tests/examples/example14_data-center.out +++ b/tests/examples/example14_data-center.out @@ -6,8 +6,8 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 Simulation Date: 2026-04-07 - Simulation Time: 10:43 - Calculation Time: 1.789 sec + Simulation Time: 11:05 + Calculation Time: 1.846 sec ***SUMMARY OF RESULTS*** @@ -112,7 +112,7 @@ Simulation Metadata of which Heat Plant Cost: 148.65 MUSD Field gathering system costs: 68.88 MUSD Transmission pipeline cost: 2.00 MUSD - Total surface equipment costs: 4294.38 MUSD + Total surface equipment costs: 4296.38 MUSD One-time Flat License Fees Etc: 100.00 MUSD Total Add-on CAPEX: 562.00 MUSD Overnight Capital Cost: 8251.98 MUSD From ba9a782ca2b125813e75a3b2a18e03cd02a9df9c Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:41:44 -0700 Subject: [PATCH 097/127] test_example14_chp_output --- tests/geophires_x_tests/test_economics_sam.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index 05895df27..b9c13788e 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -1345,6 +1345,40 @@ def _row(row_name: str) -> list[float]: self.assertEqual(lcoe_row[0], round(pv_annual_costs_row[0] * 100 / pv_annual_energy_row[0], 2)) + def test_example14_chp_output(self): + r: GeophiresXResult = GeophiresXResult(self._get_test_file_path('../examples/example14_data-center.out')) + + capex_vus = r.result['CAPITAL COSTS (M$)'] + + surface_power_plant_costs_vu = capex_vus['Surface power plant costs'] + + self.assertEqual('MUSD', surface_power_plant_costs_vu['unit']) + + self.assertAlmostEqual(4225, surface_power_plant_costs_vu['value'], places=0) + + self.assertEqual( + surface_power_plant_costs_vu['value'], + sum(capex_vus[it]['value'] for it in ['of which Electrical Plant Cost', 'of which Heat Plant Cost']), + ) + + self.assertAlmostEqual( + capex_vus['Total surface equipment costs']['value'], + sum( + capex_vus[it]['value'] + for it in ['Surface power plant costs', 'Transmission pipeline cost', 'Field gathering system costs'] + ), + places=1, + ) + + opex_vus = r.result['OPERATING AND MAINTENANCE COSTS (M$/yr)'] + total_opex_field_name = 'Total operating and maintenance costs' + + self.assertAlmostEqual( + opex_vus[total_opex_field_name]['value'], + sum(v['value'] if v is not None and k != total_opex_field_name else 0 for k, v in opex_vus.items()), + places=1, + ) + @staticmethod def _new_model( input_file: Path, From 6c2ce69707bfd9c28326e6d69af412e9eb6eacf2 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 07:22:51 -0700 Subject: [PATCH 098/127] minor code clean up - break out 2 plant cost constants, mark TODOs to parameterize --- src/geophires_x/Economics.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index e049bcfc0..400580c8e 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3121,12 +3121,15 @@ def calculate_plant_costs(self, model: Model) -> None: * direct_use_heat_default_cost_musd_per_kwth * np.max(model.surfaceplant.HeatExtracted.value) * 1000.) + if self.chillercapex.value == -1: # no value provided by user, use built-in correlation ($2500/ton) + cooling_default_cost_usd_per_ton = 2500 # $2,500/ton of cooling. TODO parameterize + self.chillercapex.value = ( self._indirect_cost_factor * self._contingency_factor * np.max(model.surfaceplant.cooling_produced.value) - * 1000 / 3.517 * 2500 / 1e6 # $2,500/ton of cooling. + * 1000 / 3.517 * cooling_default_cost_usd_per_ton / 1e6 ) # now add chiller cost to surface plant cost @@ -3140,9 +3143,11 @@ def calculate_plant_costs(self, model: Model) -> None: # this is for the direct-use part all the way up to the heat pump self.Cplant.value = self._indirect_cost_factor * self._contingency_factor * self.ccplantadjfactor.value * direct_use_heat_default_cost_musd_per_kwth * np.max( model.surfaceplant.HeatExtracted.value) * 1000. + if self.heatpumpcapex.value == -1: # no value provided by user, use built-in correlation ($150/kWth) + heat_pump_default_cost_usd_per_kw = 150 # $150/kW - TODO parameterize self.heatpumpcapex.value = self._indirect_cost_factor * self._contingency_factor * np.max( - model.surfaceplant.HeatProduced.value) * 1000 * 150 / 1e6 # $150/kW - TODO parameterize + model.surfaceplant.HeatProduced.value) * 1000 * heat_pump_default_cost_usd_per_kw / 1e6 # now add heat pump cost to surface plant cost self.Cplant.value += self.heatpumpcapex.value From f9c3b7192c6dfb3b32b331fd0dbe31d0dd69a607 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 07:25:18 -0700 Subject: [PATCH 099/127] minor HasQuantity TODO and noinspection --- src/geophires_x/Parameter.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/geophires_x/Parameter.py b/src/geophires_x/Parameter.py index a3a10e2f1..76d143a7f 100644 --- a/src/geophires_x/Parameter.py +++ b/src/geophires_x/Parameter.py @@ -36,10 +36,13 @@ class HasQuantity(ABC): def quantity(self) -> PlainQuantity: """ + TODO add optional argument to specify units to convert to. + :rtype: pint.registry.Quantity - note type annotation uses PlainQuantity due to issues with python 3.8 failing to import the Quantity TypeAlias """ + # noinspection PyUnresolvedReferences quant_val = self.value if isinstance(quant_val, str): From 64996fb395129ad1a0b36236da8d1fbad13296e1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 07:35:51 -0700 Subject: [PATCH 100/127] HasQuantity.quantity optional as_units arg --- src/geophires_x/Parameter.py | 13 ++++++++++--- tests/test_parameter.py | 8 ++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/Parameter.py b/src/geophires_x/Parameter.py index 76d143a7f..c7f332737 100644 --- a/src/geophires_x/Parameter.py +++ b/src/geophires_x/Parameter.py @@ -34,9 +34,9 @@ class HasQuantity(ABC): - def quantity(self) -> PlainQuantity: + def quantity(self, as_units: str | Enum | None = None) -> PlainQuantity: """ - TODO add optional argument to specify units to convert to. + :param as_units: Optional units to convert to. If None, will use current units. :rtype: pint.registry.Quantity - note type annotation uses PlainQuantity due to issues with python 3.8 failing to import the Quantity TypeAlias @@ -51,7 +51,14 @@ def quantity(self) -> PlainQuantity: if isinstance(quant_val, Iterable): quant_val = [float(it) for it in quant_val] - return _ureg.Quantity(quant_val, str(self.CurrentUnits.value)) + base_q = _ureg.Quantity(quant_val, str(convertible_unit(self.CurrentUnits.value))) + if as_units is None: + return base_q + + if isinstance(as_units, Enum): + return base_q.to(convertible_unit(as_units.value)) + + return base_q.to(convertible_unit(as_units)) @dataclass diff --git a/tests/test_parameter.py b/tests/test_parameter.py index b4b159d27..7c02096f3 100644 --- a/tests/test_parameter.py +++ b/tests/test_parameter.py @@ -3,6 +3,7 @@ import unittest from pathlib import Path +from geophires_x.EconomicsUtils import total_capex_parameter_output_parameter from geophires_x.Model import Model from geophires_x.Parameter import ConvertUnitsBack from geophires_x.Parameter import OutputParameter @@ -228,6 +229,13 @@ def _cash_flow_row(r: GeophiresXResult, row_name: str) -> str: self.assertEqual('kilogram', total_avoided_carbon_emissions_vu['unit']) self.assertEqual(int(total_avoided_carbon_emissions_vu['value']), total_capacity_payment_revenue_usd) + def test_has_quantity_as_units(self): + param: OutputParameter = total_capex_parameter_output_parameter() + param.CurrentUnits = CurrencyUnit.MDOLLARS + param.value = 1 + self.assertEqual(1e6, param.quantity('USD').magnitude) + self.assertEqual(1e6, param.quantity(CurrencyUnit.DOLLARS).magnitude) + # noinspection PyMethodMayBeStatic def _new_model(self) -> Model: stash_cwd = Path.cwd() From 4888557e1166f93d6d3599e7fc0be3b9387ebfac Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 07:39:05 -0700 Subject: [PATCH 101/127] CAPEX_cost_{electrical,heat}_plant quantity(as_units) and formatting --- src/geophires_x/Economics.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 400580c8e..eae909ac3 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -3325,8 +3325,13 @@ def calculate_plant_costs(self, model: Model) -> None: # TODO enhance message user-friendliness raise RuntimeError(f'{self.CAPEX_heat_electricity_plant_ratio.Name} is required.') - self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude * self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude - self.CAPEX_cost_heat_plant.value = self.Cplant.quantity().to(self.CAPEX_cost_heat_plant.CurrentUnits).magnitude * (1.0 - self.CAPEX_heat_electricity_plant_ratio.quantity().to('dimensionless').magnitude) + self.CAPEX_cost_electrical_plant.value = self.Cplant.quantity( + self.CAPEX_cost_electrical_plant.CurrentUnits).magnitude * \ + self.CAPEX_heat_electricity_plant_ratio.quantity('dimensionless').magnitude + + self.CAPEX_cost_heat_plant.value = self.Cplant.quantity( + self.CAPEX_cost_heat_plant.CurrentUnits).magnitude * \ + (1.0 - self.CAPEX_heat_electricity_plant_ratio.quantity('dimensionless').magnitude) else: if self.Power_plant_cost_per_kWe.Provided: nameplate_capacity_kW = np.max(model.surfaceplant.ElectricityProduced.quantity().to('kW')) From 5ca9452300f3b12b8f183b7af5990b35494bba29 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 07:53:56 -0700 Subject: [PATCH 102/127] test_chp_fixed_plant_cost_requires_electrical_plant_cost_allocation_ratio --- tests/geophires_x_tests/test_economics_sam.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index b9c13788e..be5638ac7 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -1345,7 +1345,7 @@ def _row(row_name: str) -> list[float]: self.assertEqual(lcoe_row[0], round(pv_annual_costs_row[0] * 100 / pv_annual_energy_row[0], 2)) - def test_example14_chp_output(self): + def test_chp_output(self): r: GeophiresXResult = GeophiresXResult(self._get_test_file_path('../examples/example14_data-center.out')) capex_vus = r.result['CAPITAL COSTS (M$)'] @@ -1379,6 +1379,17 @@ def test_example14_chp_output(self): places=1, ) + def test_chp_fixed_plant_cost_requires_electrical_plant_cost_allocation_ratio(self): + with self.assertRaises(RuntimeError) as re: + GeophiresXClient().get_geophires_result( + ImmutableGeophiresInputParameters( + from_file_path=self._get_test_file_path('../examples/example_SAM-single-owner-PPA-7_chp.txt'), + params={'Surface Plant Capital Cost': 200}, + ) + ) + + self.assertIn('CHP Electrical Plant Cost Allocation Ratio is required', str(re.exception)) + @staticmethod def _new_model( input_file: Path, From 7ebfe8afa0fc8a5edfaef2c61433577c3d897203 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:15:56 -0700 Subject: [PATCH 103/127] specify heat price model params (instead of electricity) for heat example --- .../example_SAM-single-owner-PPA-8_heat.out | 84 +++++++++---------- .../example_SAM-single-owner-PPA-8_heat.txt | 7 +- 2 files changed, 45 insertions(+), 46 deletions(-) diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.out b/tests/examples/example_SAM-single-owner-PPA-8_heat.out index b56638173..21bba80e4 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.out +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.out @@ -5,15 +5,15 @@ Simulation Metadata ---------------------- GEOPHIRES Version: 3.12.1 - Simulation Date: 2026-04-05 - Simulation Time: 07:56 - Calculation Time: 1.789 sec + Simulation Date: 2026-04-08 + Simulation Time: 08:15 + Calculation Time: 1.785 sec ***SUMMARY OF RESULTS*** End-Use Option: Direct-Use Heat Average Direct-Use Heat Production: 330.46 MW - Direct-Use heat breakeven price (LCOH): 4.87 USD/MMBTU + Direct-Use heat breakeven price (LCOH): 4.60 USD/MMBTU Total CAPEX: 244.33 MUSD Number of production wells: 6 Number of injection wells: 4 @@ -35,11 +35,11 @@ Simulation Metadata Investment Tax Credit: 73.30 MUSD Project lifetime: 30 yr Capacity factor: 90.0 % - Project NPV: 108.42 MUSD - After-tax IRR: 41.62 % - Project VIR=PI=PIR: 2.53 - Project MOIC: 10.11 - Project Payback Period: 3.84 yr + Project NPV: 72.65 MUSD + After-tax IRR: 25.90 % + Project VIR=PI=PIR: 2.03 + Project MOIC: 14.11 + Project Payback Period: 8.94 yr ***ENGINEERING PARAMETERS*** @@ -241,17 +241,17 @@ Electricity to grid net (kWh) 0.0 Heat provided (kWh) 0 2,596,723,692 2,604,861,601 2,607,339,534 2,608,804,668 2,609,828,178 2,610,525,059 2,609,821,916 2,600,140,574 2,591,908,499 2,603,877,334 2,606,856,182 2,608,491,513 2,609,601,068 2,610,396,012 2,610,333,538 2,604,400,594 2,589,770,971 2,602,567,841 2,606,300,154 2,608,147,427 2,609,356,200 2,610,229,374 2,610,551,931 2,607,151,425 2,590,281,491 2,600,607,493 2,605,647,753 2,607,766,188 2,609,091,668 2,610,006,197 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 price (cents/kWh) 0.0 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 5.50 PPA 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 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 -Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 -Heat revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Heat price ($/kWh) 0.0 0.01 0.01 0.01 0.01 0.01 0.01 0.02 0.03 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 +Heat revenue ($) 0 31,939,701 32,039,798 32,070,276 32,088,297 32,100,887 32,109,458 58,199,029 83,984,541 93,049,515 93,479,196 93,586,137 93,644,845 93,684,678 93,713,217 93,710,974 93,497,981 92,972,778 93,432,185 93,566,176 93,632,493 93,675,888 93,707,235 93,718,814 93,596,736 92,991,106 93,361,809 93,542,754 93,618,806 93,666,391 93,699,222 equals: -Capacity payment revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 65,250,155 +Capacity payment revenue ($) 0 31,939,701 32,039,798 32,070,276 32,088,297 32,100,887 32,109,458 58,199,029 83,984,541 93,049,515 93,479,196 93,586,137 93,644,845 93,684,678 93,713,217 93,710,974 93,497,981 92,972,778 93,432,185 93,566,176 93,632,493 93,675,888 93,707,235 93,718,814 93,596,736 92,991,106 93,361,809 93,542,754 93,618,806 93,666,391 93,699,222 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 122,166,666 -Total revenue ($) 0 64,918,092 65,121,540 65,183,488 65,220,117 65,245,704 65,263,126 65,245,548 65,003,514 64,797,712 65,096,933 65,171,405 65,212,288 65,240,027 65,259,900 65,258,338 65,110,015 64,744,274 65,064,196 65,157,504 65,203,686 65,233,905 65,255,734 65,263,798 65,178,786 64,757,037 65,015,187 65,141,194 65,194,155 65,227,292 187,416,821 +Total revenue ($) 0 31,939,701 32,039,798 32,070,276 32,088,297 32,100,887 32,109,458 58,199,029 83,984,541 93,049,515 93,479,196 93,586,137 93,644,845 93,684,678 93,713,217 93,710,974 93,497,981 92,972,778 93,432,185 93,566,176 93,632,493 93,675,888 93,707,235 93,718,814 93,596,736 92,991,106 93,361,809 93,542,754 93,618,806 93,666,391 215,865,888 Property tax net assessed value ($) 0 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 244,333,333 @@ -264,10 +264,10 @@ Property tax expense ($) 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 19,395,468 19,394,611 19,394,350 19,394,195 19,394,088 19,394,042 19,394,547 19,398,857 19,396,331 19,393,344 19,392,678 19,391,703 19,390,583 19,389,560 19,389,075 19,391,363 19,392,790 19,387,810 19,387,758 19,387,743 19,387,743 19,387,754 19,387,923 19,389,651 19,394,031 19,387,776 19,387,782 19,387,788 19,387,794 19,387,801 -EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +EBITDA ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 OPERATING ACTIVITIES -EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +EBITDA ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 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 @@ -275,7 +275,7 @@ State PBI income ($) 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 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 -Cash flow from operating activities ($) 0 34,196,000 34,520,213 34,710,724 34,884,791 35,057,378 35,232,021 35,382,116 35,315,721 35,304,991 35,813,224 36,108,809 36,386,544 36,667,792 36,958,744 37,246,627 37,405,204 37,368,867 38,047,757 38,519,885 38,971,363 39,435,234 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 +Cash flow from operating activities ($) 0 1,217,609 1,438,471 1,597,512 1,752,971 1,912,561 2,078,353 28,335,597 54,296,748 63,556,794 64,195,487 64,523,541 64,819,101 65,112,443 65,412,061 65,699,263 65,793,170 65,597,371 66,415,746 66,928,557 67,400,170 67,877,217 68,372,560 68,880,457 69,287,893 69,246,312 70,231,488 71,063,221 71,835,616 72,628,289 195,625,029 INVESTING ACTIVITIES Total installed cost ($) -244,333,333 @@ -309,36 +309,36 @@ Cash flow from financing activities ($) 244,3 PROJECT RETURNS Pre-tax Cash Flow: -Cash flow from operating activities ($) 0 34,196,000 34,520,213 34,710,724 34,884,791 35,057,378 35,232,021 35,382,116 35,315,721 35,304,991 35,813,224 36,108,809 36,386,544 36,667,792 36,958,744 37,246,627 37,405,204 37,368,867 38,047,757 38,519,885 38,971,363 39,435,234 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 +Cash flow from operating activities ($) 0 1,217,609 1,438,471 1,597,512 1,752,971 1,912,561 2,078,353 28,335,597 54,296,748 63,556,794 64,195,487 64,523,541 64,819,101 65,112,443 65,412,061 65,699,263 65,793,170 65,597,371 66,415,746 66,928,557 67,400,170 67,877,217 68,372,560 68,880,457 69,287,893 69,246,312 70,231,488 71,063,221 71,835,616 72,628,289 195,625,029 Cash flow from investing activities ($) -244,333,333 0 0 0 0 0 0 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 ($) 244,333,333 -1,712,974 -1,832,883 -1,961,184 -2,098,467 -2,245,360 -2,402,535 -2,570,713 -2,750,663 -2,943,209 -3,149,234 -3,369,680 -3,605,558 -3,857,947 -4,128,003 -4,416,963 -4,726,151 -5,056,981 -5,410,970 -5,789,738 -6,195,019 -6,628,671 -7,092,678 -7,589,165 -8,120,407 -8,688,835 -9,297,054 -9,947,847 -10,644,197 -11,389,290 -12,186,541 -Total pre-tax cash flow ($) 0 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 +Total pre-tax cash flow ($) 0 -495,366 -394,411 -363,672 -345,497 -332,800 -324,182 25,764,884 51,546,085 60,613,585 61,046,253 61,153,861 61,213,543 61,254,496 61,284,058 61,282,300 61,067,019 60,540,390 61,004,776 61,138,819 61,205,151 61,248,546 61,279,882 61,291,292 61,167,486 60,557,477 60,934,435 61,115,373 61,191,419 61,238,998 183,438,489 Pre-tax Returns: Issuance of equity ($) 82,524,416 -Total pre-tax cash flow ($) 0 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 -Total pre-tax returns ($) -82,524,416 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 +Total pre-tax cash flow ($) 0 -495,366 -394,411 -363,672 -345,497 -332,800 -324,182 25,764,884 51,546,085 60,613,585 61,046,253 61,153,861 61,213,543 61,254,496 61,284,058 61,282,300 61,067,019 60,540,390 61,004,776 61,138,819 61,205,151 61,248,546 61,279,882 61,291,292 61,167,486 60,557,477 60,934,435 61,115,373 61,191,419 61,238,998 183,438,489 +Total pre-tax returns ($) -82,524,416 -495,366 -394,411 -363,672 -345,497 -332,800 -324,182 25,764,884 51,546,085 60,613,585 61,046,253 61,153,861 61,213,543 61,254,496 61,284,058 61,282,300 61,067,019 60,540,390 61,004,776 61,138,819 61,205,151 61,248,546 61,279,882 61,291,292 61,167,486 60,557,477 60,934,435 61,115,373 61,191,419 61,238,998 183,438,489 After-tax Returns: -Total pre-tax returns ($) -82,524,416 32,483,025 32,687,331 32,749,540 32,786,323 32,812,017 32,829,486 32,811,403 32,565,058 32,361,782 32,663,990 32,739,129 32,780,986 32,809,845 32,830,741 32,829,664 32,679,053 32,311,886 32,636,787 32,730,147 32,776,344 32,806,563 32,828,381 32,836,276 32,749,536 32,323,408 32,587,813 32,713,813 32,766,768 32,799,899 154,989,422 +Total pre-tax returns ($) -82,524,416 -495,366 -394,411 -363,672 -345,497 -332,800 -324,182 25,764,884 51,546,085 60,613,585 61,046,253 61,153,861 61,213,543 61,254,496 61,284,058 61,282,300 61,067,019 60,540,390 61,004,776 61,138,819 61,205,151 61,248,546 61,279,882 61,291,292 61,167,486 60,557,477 60,934,435 61,115,373 61,191,419 61,238,998 183,438,489 Federal ITC total income ($) 0 73,300,000 0 0 0 0 0 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 -5,813,690 -4,837,950 -4,876,137 -4,911,028 -4,945,622 -4,980,628 -5,010,714 -4,997,405 -4,995,255 -5,097,127 -5,156,376 -5,212,046 -5,268,421 -5,326,741 -5,384,446 -5,416,232 -5,408,948 -5,545,028 -5,639,664 -5,730,161 -6,863,868 -8,001,977 -8,103,078 -8,192,176 -8,220,699 -8,395,612 -8,551,317 -8,701,511 -8,857,502 -33,509,586 +Federal tax benefit (liability) ($) 0 796,664 1,793,120 1,761,241 1,730,080 1,698,091 1,664,859 -3,598,274 -8,802,057 -10,658,187 -10,786,210 -10,851,967 -10,911,210 -10,970,009 -11,030,066 -11,087,635 -11,106,458 -11,067,211 -11,231,250 -11,334,040 -11,428,573 -12,564,922 -13,704,938 -13,806,743 -13,888,412 -13,880,077 -14,077,551 -14,244,267 -14,399,090 -14,557,977 -39,212,059 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,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 -Total after-tax returns ($) -82,524,416 98,649,657 26,751,191 26,766,545 26,760,517 26,743,765 26,718,280 26,663,282 26,433,267 26,232,630 26,409,841 26,412,282 26,385,831 26,345,519 26,294,857 26,222,976 26,033,364 25,675,134 25,833,065 25,810,308 25,745,466 24,384,632 23,009,996 22,893,841 22,697,778 22,236,652 22,286,439 22,221,391 22,090,058 21,931,789 113,873,330 +State tax benefit (liability) ($) 0 180,839 407,029 399,793 392,719 385,458 377,915 -816,790 -1,998,022 -2,419,355 -2,448,415 -2,463,342 -2,476,790 -2,490,137 -2,503,769 -2,516,837 -2,521,110 -2,512,201 -2,549,437 -2,572,770 -2,594,228 -2,852,174 -3,110,951 -3,134,061 -3,152,599 -3,150,707 -3,195,533 -3,233,377 -3,268,521 -3,304,587 -8,900,939 +Total after-tax returns ($) -82,524,416 73,782,136 1,805,738 1,797,361 1,777,303 1,750,750 1,718,591 21,349,819 40,746,005 47,536,043 47,811,628 47,838,552 47,825,543 47,794,350 47,750,223 47,677,829 47,439,452 46,960,978 47,224,089 47,232,009 47,182,350 45,831,451 44,463,993 44,350,488 44,126,475 43,526,692 43,661,351 43,637,730 43,523,809 43,376,434 135,325,491 -After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 98,649,657 26,751,191 26,766,545 26,760,517 26,743,765 26,718,280 26,663,282 26,433,267 26,232,630 26,409,841 26,412,282 26,385,831 26,345,519 26,294,857 26,222,976 26,033,364 25,675,134 25,833,065 25,810,308 25,745,466 24,384,632 23,009,996 22,893,841 22,697,778 22,236,652 22,286,439 22,221,391 22,090,058 21,931,789 113,873,330 -After-tax cumulative IRR (%) NaN NaN NaN 9.94 21.95 29.27 33.70 36.44 38.18 39.30 40.04 40.53 40.87 41.10 41.26 41.37 41.44 41.50 41.53 41.56 41.58 41.59 41.60 41.61 41.61 41.61 41.61 41.62 41.62 41.62 41.62 41.62 41.62 -After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -5,882,788 9,399,531 22,693,357 34,248,191 44,287,487 53,007,172 60,572,319 67,092,598 72,718,196 77,642,039 81,923,144 85,641,340 88,868,940 91,669,568 94,097,732 96,193,474 97,990,407 99,562,241 100,927,564 102,111,572 103,086,520 103,886,342 104,578,184 105,174,509 105,682,412 106,124,963 106,508,587 106,840,133 107,126,308 108,418,095 +After-tax net cash flow ($) -17,035,483 -36,740,426 -28,748,508 73,782,136 1,805,738 1,797,361 1,777,303 1,750,750 1,718,591 21,349,819 40,746,005 47,536,043 47,811,628 47,838,552 47,825,543 47,794,350 47,750,223 47,677,829 47,439,452 46,960,978 47,224,089 47,232,009 47,182,350 45,831,451 44,463,993 44,350,488 44,126,475 43,526,692 43,661,351 43,637,730 43,523,809 43,376,434 135,325,491 +After-tax cumulative IRR (%) NaN NaN NaN -5.90 -4.59 -3.29 -2.07 -0.94 0.06 7.60 14.04 17.90 20.25 21.79 22.86 23.62 24.17 24.59 24.89 25.13 25.30 25.44 25.55 25.63 25.69 25.74 25.77 25.80 25.83 25.84 25.86 25.87 25.90 +After-tax cumulative NPV ($) -17,035,483 -48,977,013 -70,705,945 -22,223,354 -21,191,779 -20,299,105 -19,531,689 -18,874,478 -18,313,604 -12,256,041 -2,205,247 7,988,877 16,902,863 24,656,902 31,396,304 37,251,609 42,337,417 46,752,233 50,571,212 53,857,883 56,731,271 59,229,767 61,399,635 63,232,071 64,777,629 66,117,882 67,277,190 68,271,375 69,138,377 69,891,727 70,544,967 71,110,961 72,646,103 AFTER-TAX LCOE AND PPA PRICE -Annual costs ($) -17,035,483 -36,740,426 -28,748,508 33,731,565 -38,370,349 -38,416,943 -38,459,600 -38,501,939 -38,544,846 -38,582,266 -38,570,247 -38,565,082 -38,687,092 -38,759,123 -38,826,457 -38,894,508 -38,965,043 -39,035,362 -39,076,651 -39,069,140 -39,231,131 -39,347,196 -39,458,220 -40,849,273 -42,245,738 -42,369,957 -42,481,008 -42,520,385 -42,728,748 -42,919,803 -43,104,097 -43,295,503 48,623,175 +Annual costs ($) -17,035,483 -36,740,426 -28,748,508 41,842,435 -30,234,060 -30,272,915 -30,310,994 -30,350,137 -30,390,867 -36,849,210 -43,238,536 -45,513,472 -45,667,568 -45,747,585 -45,819,302 -45,890,328 -45,962,994 -46,033,145 -46,058,529 -46,011,800 -46,208,096 -46,334,167 -46,450,143 -47,844,437 -49,243,242 -49,368,326 -49,470,261 -49,464,414 -49,700,458 -49,905,024 -50,094,997 -50,289,957 41,626,269 PPA 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 0 0 Electricity to 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 -Present value of annual costs ($) 214,289,531 +Present value of annual costs ($) 202,622,024 Present value of annual energy costs ($) 0 Present value of annual energy nominal (kWh) 0 @@ -348,12 +348,12 @@ Present value of PPA revenue ($) 0 Present value of annual energy nominal (kWh) 0 LPPA Levelized PPA price nominal (cents/kWh) NaN -Present value of annual heat costs ($) 214,289,531 +Present value of annual heat costs ($) 202,622,024 Present value of annual heat provided (MMBTU) 44,044,958 -LCOH Levelized cost of heating nominal ($/MMBTU) 4.87 +LCOH Levelized cost of heating nominal ($/MMBTU) 4.60 PROJECT STATE INCOME TAXES -EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +EBITDA ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 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 @@ -362,15 +362,15 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total state tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -State taxable income ($) 0 29,003,916 24,136,047 24,326,558 24,500,624 24,673,211 24,847,854 24,997,949 24,931,554 24,920,825 25,429,057 25,724,642 26,002,377 26,283,625 26,574,578 26,862,460 27,021,037 26,984,700 27,663,590 28,135,718 28,587,197 34,243,151 39,921,059 40,425,441 40,869,943 41,012,243 41,884,866 42,661,661 43,410,965 44,189,190 167,175,962 +State taxable income ($) 0 -3,974,475 -8,945,695 -8,786,654 -8,631,196 -8,471,606 -8,305,814 17,951,430 43,912,581 53,172,628 53,811,320 54,139,374 54,434,934 54,728,276 55,027,895 55,315,096 55,409,003 55,213,204 56,031,579 56,544,390 57,016,004 62,685,134 68,372,560 68,880,457 69,287,893 69,246,312 70,231,488 71,063,221 71,835,616 72,628,289 195,625,029 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,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 +State tax benefit (liability) ($) 0 180,839 407,029 399,793 392,719 385,458 377,915 -816,790 -1,998,022 -2,419,355 -2,448,415 -2,463,342 -2,476,790 -2,490,137 -2,503,769 -2,516,837 -2,521,110 -2,512,201 -2,549,437 -2,572,770 -2,594,228 -2,852,174 -3,110,951 -3,134,061 -3,152,599 -3,150,707 -3,195,533 -3,233,377 -3,268,521 -3,304,587 -8,900,939 PROJECT FEDERAL INCOME TAXES -EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +EBITDA ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 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,319,678 -1,098,190 -1,106,858 -1,114,778 -1,122,631 -1,130,577 -1,137,407 -1,134,386 -1,133,898 -1,157,022 -1,170,471 -1,183,108 -1,195,905 -1,209,143 -1,222,242 -1,229,457 -1,227,804 -1,258,693 -1,280,175 -1,300,717 -1,558,063 -1,816,408 -1,839,358 -1,859,582 -1,866,057 -1,905,761 -1,941,106 -1,975,199 -2,010,608 -7,606,506 +State tax benefit (liability) ($) 0 180,839 407,029 399,793 392,719 385,458 377,915 -816,790 -1,998,022 -2,419,355 -2,448,415 -2,463,342 -2,476,790 -2,490,137 -2,503,769 -2,516,837 -2,521,110 -2,512,201 -2,549,437 -2,572,770 -2,594,228 -2,852,174 -3,110,951 -3,134,061 -3,152,599 -3,150,707 -3,195,533 -3,233,377 -3,268,521 -3,304,587 -8,900,939 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 @@ -380,10 +380,10 @@ minus: Debt interest payment ($) 0 11,326,624 11,206,716 11,078,414 10,941,131 10,794,239 10,637,063 10,468,886 10,288,936 10,096,390 9,890,365 9,669,919 9,434,041 9,181,652 8,911,596 8,622,635 8,313,448 7,982,617 7,628,629 7,249,861 6,844,579 6,410,928 5,946,921 5,450,433 4,919,192 4,350,763 3,742,545 3,091,751 2,395,402 1,650,308 853,058 Total federal tax depreciation ($) 0 5,192,083 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 10,384,167 5,192,083 0 0 0 0 0 0 0 0 0 equals: -Federal taxable income ($) 0 27,684,238 23,037,856 23,219,699 23,385,846 23,550,580 23,717,277 23,860,542 23,797,168 23,786,927 24,272,035 24,554,171 24,819,269 25,087,720 25,365,435 25,640,219 25,791,580 25,756,896 26,404,897 26,855,543 27,286,479 32,685,087 38,104,650 38,586,084 39,010,360 39,146,186 39,979,105 40,720,555 41,435,766 42,178,582 159,569,456 +Federal taxable income ($) 0 -3,793,636 -8,538,666 -8,386,862 -8,238,477 -8,086,148 -7,927,899 17,134,640 41,914,559 50,753,273 51,362,905 51,676,033 51,958,145 52,238,139 52,524,126 52,798,260 52,887,893 52,701,004 53,482,142 53,971,620 54,421,776 59,832,960 65,261,608 65,746,396 66,135,294 66,095,605 67,035,956 67,829,844 68,567,095 69,323,702 186,724,090 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 -5,813,690 -4,837,950 -4,876,137 -4,911,028 -4,945,622 -4,980,628 -5,010,714 -4,997,405 -4,995,255 -5,097,127 -5,156,376 -5,212,046 -5,268,421 -5,326,741 -5,384,446 -5,416,232 -5,408,948 -5,545,028 -5,639,664 -5,730,161 -6,863,868 -8,001,977 -8,103,078 -8,192,176 -8,220,699 -8,395,612 -8,551,317 -8,701,511 -8,857,502 -33,509,586 +Federal tax benefit (liability) ($) 0 796,664 1,793,120 1,761,241 1,730,080 1,698,091 1,664,859 -3,598,274 -8,802,057 -10,658,187 -10,786,210 -10,851,967 -10,911,210 -10,970,009 -11,030,066 -11,087,635 -11,106,458 -11,067,211 -11,231,250 -11,334,040 -11,428,573 -12,564,922 -13,704,938 -13,806,743 -13,888,412 -13,880,077 -14,077,551 -14,244,267 -14,399,090 -14,557,977 -39,212,059 CASH INCENTIVES Federal IBI income ($) 0 @@ -423,16 +423,16 @@ Debt principal payment ($) 0 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 DSCR (DEBT FRACTION) -EBITDA ($) 0 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +EBITDA ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 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 45,522,624 45,726,929 45,789,138 45,825,922 45,851,616 45,869,084 45,851,001 45,604,657 45,401,381 45,703,589 45,778,727 45,820,585 45,849,444 45,870,340 45,869,263 45,718,652 45,351,484 45,676,386 45,769,746 45,815,943 45,846,162 45,867,980 45,875,875 45,789,135 45,363,006 45,627,411 45,753,412 45,806,367 45,839,498 168,029,020 +Cash available for debt service (CAFDS) ($) 0 12,544,233 12,645,187 12,675,926 12,694,102 12,706,799 12,715,416 38,804,482 64,585,684 73,653,184 74,085,852 74,193,459 74,253,142 74,294,095 74,323,657 74,321,899 74,106,618 73,579,988 74,044,375 74,178,418 74,244,750 74,288,145 74,319,481 74,330,891 74,207,085 73,597,075 73,974,033 74,154,972 74,231,018 74,278,597 196,478,087 Debt total payment ($) 0 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 13,039,599 -DSCR (pre-tax) 0.0 3.49 3.51 3.51 3.51 3.52 3.52 3.52 3.50 3.48 3.50 3.51 3.51 3.52 3.52 3.52 3.51 3.48 3.50 3.51 3.51 3.52 3.52 3.52 3.51 3.48 3.50 3.51 3.51 3.52 12.89 +DSCR (pre-tax) 0.0 0.96 0.97 0.97 0.97 0.97 0.98 2.98 4.95 5.65 5.68 5.69 5.69 5.70 5.70 5.70 5.68 5.64 5.68 5.69 5.69 5.70 5.70 5.70 5.69 5.64 5.67 5.69 5.69 5.70 15.07 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/example_SAM-single-owner-PPA-8_heat.txt b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt index a397604a9..dea691620 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt @@ -7,10 +7,9 @@ Economic Model, 5, -- SAM Single Owner PPA Inflation Rate, .027, -- US inflation as of December 2025 -Starting Electricity Sale Price, 0.095 -Electricity Escalation Rate Per Year, 0.00057 -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 +Starting Heat Sale Price, 0.0123 +Ending Heat Sale Price, 0.0359 +Heat Escalation Rate Per Year, 0.01 Fraction of Investment in Bonds, .7 Discount Rate, 0.12 From bb0a0a106025c3855467f4a1e8200281e7525cec Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:18:06 -0700 Subject: [PATCH 104/127] heating/cooling price model SAM parameters mapping --- docs/SAM-Economic-Models.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index 785491b2a..a71cacbaf 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -34,6 +34,8 @@ The following table describes how GEOPHIRES parameters are transformed into SAM | `Starting Electricity Sale Price`, `Ending Electricity Sale Price`, `Electricity Escalation Rate Per Year`, `Electricity Escalation Start Year` | Revenue | `PPA price` | `Singleowner` | `ppa_price_input` | GEOPHIRES's pricing model is used to create a PPA price schedule that is passed to SAM. | | `Total AddOn Profit Gained` | Revenue → Capacity Payments | `Fixed amount`, `Capacity payment amount` | `Singleowner` | `cp_capacity_payment_type = 1`, `cp_capacity_payment_amount` | | | `Starting Carbon Credit Value`, `Ending Carbon Credit Value`, `Carbon Escalation Rate Per Year`, `Carbon Escalation Start Year` | Revenue → Capacity Payments | `Fixed amount`, `Capacity payment amount` | `Singleowner` | `cp_capacity_payment_type = 1`, `cp_capacity_payment_amount` | | +| `Starting Heat Sale Price`, `Ending Heat Sale Price`, `Heat Escalation Rate Per Year`, `Heat Escalation Start Year` | Revenue → Capacity Payments | `Fixed amount`, `Capacity payment amount` | `Singleowner` | `cp_capacity_payment_type = 1`, `cp_capacity_payment_amount` | | +| `Starting Cooling Sale Price`, `Ending Cooling Sale Price`, `Cooling Escalation Rate Per Year`, `Cooling Escalation Start Year` | Revenue → Capacity Payments | `Fixed amount`, `Capacity payment amount` | `Singleowner` | `cp_capacity_payment_type = 1`, `cp_capacity_payment_amount` | | | `Investment Tax Credit Rate` | Incentives → Investment Tax Credit (ITC) | `Federal` → `Percentage (%)` | `Singleowner` | `itc_fed_percent` | Note that unlike the BICYCLE Economic Model's `Total capital costs`, SAM Economic Model's `Total CAPEX` is the total installed cost and does not subtract ITC value (if present). | | `Production Tax Credit Electricity` | Incentives → Production Tax Credit (PTC) | `Federal` → `Amount ($/kWh)` | `Singleowner` | `ptc_fed_amount` | .. N/A | | `Production Tax Credit Duration` | Incentives → Production Tax Credit (PTC) | `Federal` → `Term (years)` | `Singleowner` | `ptc_fed_term` | .. N/A | From 834912068f3d22fd4038edf94a7edf36b0786e61 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:48:20 -0700 Subject: [PATCH 105/127] WIP - initial draft of SAM-EM end use options doc page --- ...AM-EM_End-Uses-and-Surface-Applications.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/SAM-EM_End-Uses-and-Surface-Applications.md diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md new file mode 100644 index 000000000..65d292f33 --- /dev/null +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -0,0 +1,74 @@ +# SAM Economic Models: End Uses and Surface Applications + +SAM Economic Models support a variety of geothermal end-use options and surface applications. + +See the [Theoretical Basis for GEOPHIRES End-use options documentation](Theoretical-Basis-for-GEOPHIRES.html#enduse-options) +for details on the underlying physical simulation mechanics. + +## Electricity + +For pure electricity generation configurations, SAM Economic Models calculate standard project finance metrics, +including a nominal Levelized Cost of Electricity (LCOE). + +## Examples: + +1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA) +1. [example_SAM-single-owner-PPA-2](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-2) +1. [example_SAM-single-owner-PPA-3](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-3) +1. [example_SAM-single-owner-PPA-4](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-4) +1. [example_SAM-single-owner-PPA-5](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-5) +1. [example_SAM-single-owner-PPA-6_carbon-revenue](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue) + +## Direct-Use Heat + +Direct-use heat configurations evaluate pure thermal energy extraction, reporting financial viability via the nominal +Levelized Cost of Heat (LCOH) in $/MMBTU. + +### Grid Electricity Consumption and Cash Flow Reporting + +In GEOPHIRES, pure direct-use heat and cooling configurations +typically require parasitic pumping power purchased from the grid. The cost of this grid electricity is calculated +and fully accounted for within GEOPHIRES' baseline OPEX calculations prior to executing the SAM financial engine. + +The specific cash flow line items for `Electricity from grid (kWh)` and `Electricity purchase ($)` are intentionally +removed from the final SAM cash flow profile report for these end-uses. {# TODO/WIP: 'to avoid potential confusion with the equivalent unused SAM mechanisms' #} + +### Examples: + +1. [example_SAM-single-owner-PPA-8_heat](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-8_heat) + +## Cogeneration + +Combined Heat and Power (CHP) end-uses simulate both electricity and direct-use heat generation. +The model outputs allocated metrics for both product streams, including `Electricity CAPEX ($/kWe)`, `Heat CAPEX ($/kWth)`, LCOE, and LCOH. + +### CHP Cost Allocation Ratio + +To separate the levelized costs of electricity and heat, GEOPHIRES utilizes the `CHP Electrical Plant Cost Allocation Ratio`. +When calculating the levelized metrics, the total present value of annual costs includes not only CAPEX, but also OPEX, +taxes, and debt service. By applying a CAPEX-derived allocation ratio to this total present value, the model +mathematically forces the assumption that thermal OPEX and financing burdens scale exactly proportionally to thermal CAPEX. +If the electrical power plant has a high O&M burden and the direct-use heat component has a relatively low O&M burden, +applying the CAPEX ratio to the total PV will artificially inflate the LCOH and artificially lower the LCOE. +Analysts should be aware of this proportional scaling approximation when evaluating granular CHP OPEX profiles. + + +### Examples: + +1. [example_SAM-single-owner-PPA-7_chp](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp) +1. [example_SAM-single-owner-PPA-7b_chp-cc](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc) + +## Absorption Chiller (Cooling) + +Cooling applications via absorption chillers are supported, providing a nominal Levelized Cost of Cooling (LCOC) in +$/MMBTU. Like Direct-Use Heat, parasitic electricity requirements are factored into the baseline OPEX prior to +SAM execution. + + +### Examples: + +1. [example_SAM-single-owner-PPA-9_cooling](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling) + +## Limitations + +Heat Pump, District Heating, and Reservoir Thermal Energy Storage (SUTRA) surface applications are not currently supported for SAM Economic Models. From 8f3cb94668cdc4552e80db032032df261d000414 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:57:13 -0700 Subject: [PATCH 106/127] link to main SAM-EM docs, fix electricity examples header level --- docs/SAM-EM_End-Uses-and-Surface-Applications.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index 65d292f33..ea9459154 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -1,6 +1,6 @@ # SAM Economic Models: End Uses and Surface Applications -SAM Economic Models support a variety of geothermal end-use options and surface applications. +[SAM Economic Models](SAM-Economic-Models.html) support a variety of geothermal end-use options and surface applications. See the [Theoretical Basis for GEOPHIRES End-use options documentation](Theoretical-Basis-for-GEOPHIRES.html#enduse-options) for details on the underlying physical simulation mechanics. @@ -10,7 +10,7 @@ for details on the underlying physical simulation mechanics. For pure electricity generation configurations, SAM Economic Models calculate standard project finance metrics, including a nominal Levelized Cost of Electricity (LCOE). -## Examples: +### Examples: 1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA) 1. [example_SAM-single-owner-PPA-2](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-2) From 3100a492005de64890a78a8b859664a1d45212b8 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:58:19 -0700 Subject: [PATCH 107/127] address Grid Electricity Consumption and Cash Flow Reporting TODO/WIP --- docs/SAM-EM_End-Uses-and-Surface-Applications.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index ea9459154..507b3eacc 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -30,8 +30,11 @@ In GEOPHIRES, pure direct-use heat and cooling configurations typically require parasitic pumping power purchased from the grid. The cost of this grid electricity is calculated and fully accounted for within GEOPHIRES' baseline OPEX calculations prior to executing the SAM financial engine. -The specific cash flow line items for `Electricity from grid (kWh)` and `Electricity purchase ($)` are intentionally -removed from the final SAM cash flow profile report for these end-uses. {# TODO/WIP: 'to avoid potential confusion with the equivalent unused SAM mechanisms' #} +Because these costs are injected directly into the fixed O&M parameters passed to SAM, SAM's native grid-purchase +mechanisms are bypassed. Consequently, the specific cash flow line items for `Electricity from grid (kWh)` +and `Electricity purchase ($)` are intentionally removed from the final SAM cash flow profile report. +This prevents the display of default zero values, which could otherwise mislead analysts into assuming parasitic power +costs were omitted. ### Examples: From a0cd69506ce95ca77eca3cc438f765ac11599fed Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:04:50 -0700 Subject: [PATCH 108/127] Clean up SAM-EM examples list (remove unnecessary sectioning) --- docs/SAM-Economic-Models.md | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index a71cacbaf..5195f8c65 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -144,23 +144,13 @@ See relevant parameters and outputs in [GEOPHIRES Parameters documentation](para ## Examples -### Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station - -[Web interface link](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-5) - -Documentation: [Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station](Fervo_Project_Cape-4.html). - -### SAM Single Owner PPA - +1. [Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-5). [Case Study Documentation](Fervo_Project_Cape-5.html). 1. [SAM Single Owner PPA: 50 MWe](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA) -2. [SAM Single Owner PPA: 50 MWe with Add-ons](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-3) -3. [SAM Single Owner PPA: 50 MWe with Royalties](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4) -4. [SAM Economic Model: Royalty Schedule & Supplemental Payments](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4b) -4. [SAM Economic Model Multiple Construction Years](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-5) - -### SAM Single Owner PPA: 400 MWe BICYCLE Comparison - -[Web interface link](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-2) +1. [SAM Single Owner PPA: 50 MWe with Add-ons](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-3) +1. [SAM Single Owner PPA: 50 MWe with Royalties](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4) +1. [SAM Economic Model: Royalty Schedule & Supplemental Payments](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4b) +1. [SAM Economic Model Multiple Construction Years](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-5) +1. [SAM Single Owner PPA: 400 MWe BICYCLE Comparison](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-2) ## Re-creating SAM Economic Model Results in the SAM Desktop Application From f90ed8edb834ca8256aaf6321a21912bc73ddcbb Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:10:24 -0700 Subject: [PATCH 109/127] examples cleanup and sync between main doc page and end use page --- docs/SAM-EM_End-Uses-and-Surface-Applications.md | 6 ++---- docs/SAM-Economic-Models.md | 14 +++++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index 507b3eacc..fdafe3e9d 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -13,12 +13,10 @@ including a nominal Levelized Cost of Electricity (LCOE). ### Examples: 1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA) -1. [example_SAM-single-owner-PPA-2](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-2) -1. [example_SAM-single-owner-PPA-3](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-3) -1. [example_SAM-single-owner-PPA-4](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-4) -1. [example_SAM-single-owner-PPA-5](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-5) 1. [example_SAM-single-owner-PPA-6_carbon-revenue](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue) +See [SAM Economic Models documentation](SAM-Economic-Models.html#examples) for additional electricity examples. + ## Direct-Use Heat Direct-use heat configurations evaluate pure thermal energy extraction, reporting financial viability via the nominal diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index 5195f8c65..b987bd99b 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -144,12 +144,16 @@ See relevant parameters and outputs in [GEOPHIRES Parameters documentation](para ## Examples -1. [Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-5). [Case Study Documentation](Fervo_Project_Cape-5.html). +1. [Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-5) | [Case Study Documentation](Fervo_Project_Cape-5.html) 1. [SAM Single Owner PPA: 50 MWe](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA) -1. [SAM Single Owner PPA: 50 MWe with Add-ons](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-3) -1. [SAM Single Owner PPA: 50 MWe with Royalties](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4) -1. [SAM Economic Model: Royalty Schedule & Supplemental Payments](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4b) -1. [SAM Economic Model Multiple Construction Years](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-5) +1. [50 MWe with Add-ons](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-3) +1. [50 MWe with Royalties](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4) +1. [Royalty Schedule & Supplemental Payments](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-4b) +1. [Multiple Construction Years](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-5) +1. [Carbon Credits](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue) +1. [Cogeneration (Combined Heat and Power; CHP)](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-7_chp) +1. [Direct-Use Heat](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-8_cooling) +1. [Cooling (Absorption Chiller)](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-8_cooling) 1. [SAM Single Owner PPA: 400 MWe BICYCLE Comparison](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-2) ## Re-creating SAM Economic Model Results in the SAM Desktop Application From a10ea7ef4533fa613fd49fe87df8bec78230cd7e Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:11:16 -0700 Subject: [PATCH 110/127] explicitly list Absorption Chiller as supported in Limitations section --- docs/SAM-Economic-Models.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index b987bd99b..1f82ee188 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -53,7 +53,7 @@ The following table describes how GEOPHIRES parameters are transformed into SAM ### Limitations -1. The following power plant types/surface applications are not supported: Heat Pump, District Heating, and Reservoir Thermal Energy Storage (SUTRA). Subcritical ORC, Supercritical ORC, Single Flash, Double Flash, and Industrial heat power plant types are supported. +1. The following power plant types/surface applications are not supported: Heat Pump, District Heating, and Reservoir Thermal Energy Storage (SUTRA). Subcritical ORC, Supercritical ORC, Single Flash, Double Flash, Industrial heat, and Absorption Chiller power plant types are supported. 2. Add-ons with electricity and heat are not currently supported. (Add-ons CAPEX, OPEX, and profit are supported.) ## Multiple Construction Years From d5de69590ae4de1156b7f615661a3f883731f6f2 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:16:33 -0700 Subject: [PATCH 111/127] mention heat/cooling revenue cash flow line items --- docs/SAM-EM_End-Uses-and-Surface-Applications.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index fdafe3e9d..79a5e25e6 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -21,6 +21,7 @@ See [SAM Economic Models documentation](SAM-Economic-Models.html#examples) for a Direct-use heat configurations evaluate pure thermal energy extraction, reporting financial viability via the nominal Levelized Cost of Heat (LCOH) in $/MMBTU. +Heat revenue is modeled as capacity payment revenue and included as the `Heat revenue ($)` cash flow line item. ### Grid Electricity Consumption and Cash Flow Reporting @@ -62,10 +63,10 @@ Analysts should be aware of this proportional scaling approximation when evaluat ## Absorption Chiller (Cooling) Cooling applications via absorption chillers are supported, providing a nominal Levelized Cost of Cooling (LCOC) in -$/MMBTU. Like Direct-Use Heat, parasitic electricity requirements are factored into the baseline OPEX prior to +$/MMBTU. Cooling revenue is modeled as capacity payment revenue and included as the `Cooling revenue ($)` cash flow line item. +Like Direct-Use Heat, parasitic electricity requirements are factored into the baseline OPEX prior to SAM execution. - ### Examples: 1. [example_SAM-single-owner-PPA-9_cooling](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling) From ebf307de5c46f9eb82bd19c0f8ab763e73586318 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:21:24 -0700 Subject: [PATCH 112/127] main SAM-EM doc page end-uses section with link to corresponding doc page --- docs/SAM-Economic-Models.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/SAM-Economic-Models.md b/docs/SAM-Economic-Models.md index 1f82ee188..aecc40d1b 100644 --- a/docs/SAM-Economic-Models.md +++ b/docs/SAM-Economic-Models.md @@ -142,6 +142,17 @@ See relevant parameters and outputs in [GEOPHIRES Parameters documentation](para 1. `Current Grid CO2 production` 1. `Total Avoided Carbon Emissions` +## End Uses and Surface Applications + +SAM Economic Models support a variety of geothermal end-use options and surface applications, extending beyond pure electricity generation to include: + +* **Electricity** +* **Direct-Use Heat** +* **Cogeneration** (Combined Heat and Power; CHP) +* **Cooling** (Absorption Chiller) + +For detailed information on how these different configurations are modeled financially—including cash flow reporting adjustments, CHP cost allocation methodologies, and configuration-specific examples—see the [SAM Economic Models: End Uses and Surface Applications documentation](SAM-EM_End-Uses-and-Surface-Applications.html). + ## Examples 1. [Case Study: 500 MWe EGS Project Modeled on Fervo Cape Station](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=Fervo_Project_Cape-5) | [Case Study Documentation](Fervo_Project_Cape-5.html) @@ -152,8 +163,9 @@ See relevant parameters and outputs in [GEOPHIRES Parameters documentation](para 1. [Multiple Construction Years](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-5) 1. [Carbon Credits](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue) 1. [Cogeneration (Combined Heat and Power; CHP)](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-7_chp) -1. [Direct-Use Heat](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-8_cooling) -1. [Cooling (Absorption Chiller)](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-8_cooling) +1. [CHP with Carbon Credits](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc) +1. [Direct-Use Heat](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-8_heat) +1. [Cooling (Absorption Chiller)](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-9_cooling) 1. [SAM Single Owner PPA: 400 MWe BICYCLE Comparison](https://gtp.scientificwebservices.com/geophires/?geophires-example-id=example_SAM-single-owner-PPA-2) ## Re-creating SAM Economic Model Results in the SAM Desktop Application From 20f2e9d58abac92dc324047ef6de9abd4751f582 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:19:58 -0700 Subject: [PATCH 113/127] remove example14_data-center FIXME WIP description marker --- tests/examples/example14_data-center.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/examples/example14_data-center.txt b/tests/examples/example14_data-center.txt index 4de72c5f6..46d2302ac 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -1,4 +1,3 @@ -# FIXME WIP: CHP update - see https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/143 # Example 14: 1 GW Geothermal-Powered Data Center (CHP) # This example models a 1 GWe Enhanced Geothermal System (EGS) to power a hyperscale data center. # Based on the techno-economic analysis by Project InnerSpace (Yusifov & Enriquez, 2025), the simulation incorporates direct From 4acfeab63aba5b756cfaa5933d1fe0e811e985c9 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:24:31 -0700 Subject: [PATCH 114/127] refine example14 description of heat revenue in relation to Y&E case study estimate --- tests/examples/example14_data-center.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/examples/example14_data-center.txt b/tests/examples/example14_data-center.txt index 46d2302ac..9f266236c 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -1,8 +1,8 @@ # Example 14: 1 GW Geothermal-Powered Data Center (CHP) # This example models a 1 GWe Enhanced Geothermal System (EGS) to power a hyperscale data center. -# Based on the techno-economic analysis by Project InnerSpace (Yusifov & Enriquez, 2025), the simulation incorporates direct -# cooling via an absorption chiller, yielding an estimated $107 million in annual operating cost savings over the 30-year project lifespan. -# The absorption chiller is thermodynamically modeled as cogenerated heat, with heat sales yielding revenue equivalent to the estimated savings. +# Based on the techno-economic analysis by Yusifov & Enriquez (2025), the simulation incorporates direct +# cooling via an absorption chiller, yielding an average of $107 million in annual operating cost savings over the 30-year project lifespan. +# The absorption chiller is thermodynamically modeled as cogenerated heat, with heat sales yielding revenue equivalent to Yusifov & Enriquez's estimated savings. # The absorption chiller CAPEX of $562M is modeled via an add-on. # # Reference: Yusifov, M., & Enriquez, N. (2025, July). From Core to Code: Powering the AI Revolution with Geothermal Energy. Project InnerSpace & Future Ventures. https://projectinnerspace.org/resources/Powering-the-AI-Revolution.pdf From 5bd7fa4b2f2890c16484c96b3633a9aca509e852 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:26:57 -0700 Subject: [PATCH 115/127] Update relevant example descriptions to link to https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html --- tests/examples/example_SAM-single-owner-PPA-7_chp.txt | 2 +- tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt | 2 +- tests/examples/example_SAM-single-owner-PPA-7c.txt | 2 +- tests/examples/example_SAM-single-owner-PPA-8_heat.txt | 2 +- tests/examples/example_SAM-single-owner-PPA-9_cooling.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt index 6b756072d..0db49a6d6 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt @@ -1,5 +1,5 @@ # Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP) -# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt index 36ca1cc23..1d7ed045a 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt @@ -1,5 +1,5 @@ # Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) -# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* diff --git a/tests/examples/example_SAM-single-owner-PPA-7c.txt b/tests/examples/example_SAM-single-owner-PPA-7c.txt index 9111842be..566bc9690 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7c.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7c.txt @@ -1,5 +1,5 @@ # Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) and fixed surface plant cost -# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* diff --git a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt index dea691620..22629b143 100644 --- a/tests/examples/example_SAM-single-owner-PPA-8_heat.txt +++ b/tests/examples/example_SAM-single-owner-PPA-8_heat.txt @@ -1,5 +1,5 @@ # Example: SAM Single Owner PPA Economic Model: Direct-Use Heat -# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt index a3d9576c6..a3c4f7a17 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt @@ -1,5 +1,5 @@ # Example: SAM Single Owner PPA Economic Model: Cooling -# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-Economic-Models.html +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** # ************************************* From 098a18cde24b8acc23f04ef5ffcabd5b4a6acd92 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:35:10 -0700 Subject: [PATCH 116/127] example14 description doc link --- tests/examples/example14_data-center.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/examples/example14_data-center.txt b/tests/examples/example14_data-center.txt index 9f266236c..39d7393e5 100644 --- a/tests/examples/example14_data-center.txt +++ b/tests/examples/example14_data-center.txt @@ -5,6 +5,9 @@ # The absorption chiller is thermodynamically modeled as cogenerated heat, with heat sales yielding revenue equivalent to Yusifov & Enriquez's estimated savings. # The absorption chiller CAPEX of $562M is modeled via an add-on. # +# For further context on SAM Economic Models Combined Heat and Power (CHP) / cogeneration conventions, see: +# https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html +# # Reference: Yusifov, M., & Enriquez, N. (2025, July). From Core to Code: Powering the AI Revolution with Geothermal Energy. Project InnerSpace & Future Ventures. https://projectinnerspace.org/resources/Powering-the-AI-Revolution.pdf # *** ECONOMIC/FINANCIAL PARAMETERS *** From e200dd76b4661834606d02ab9fa4bbb9c61b7a98 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Sun, 12 Apr 2026 10:00:01 -0700 Subject: [PATCH 117/127] Document: Lowering injection temperature for cogen topping cycle increases heat production but does not affect electricity production --- docs/SAM-EM_End-Uses-and-Surface-Applications.md | 7 +++++++ src/geophires_x/WellBores.py | 8 +++++--- src/geophires_x_schema_generator/geophires-request.json | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index 79a5e25e6..cbee154fe 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -54,6 +54,13 @@ If the electrical power plant has a high O&M burden and the direct-use heat comp applying the CAPEX ratio to the total PV will artificially inflate the LCOH and artificially lower the LCOE. Analysts should be aware of this proportional scaling approximation when evaluating granular CHP OPEX profiles. +### Injection Temperature and CHP Topping Cycles + +In GEOPHIRES, adjusting the `Injection Temperature` for a Cogeneration Topping Cycle will affect the amount of direct-use heat produced, but it will **not** affect electricity production. + +This is the physically correct behavior. In a topping cycle, the geofluid flows sequentially: it first passes through the power plant (which extracts heat to generate electricity and rejects the fluid at a calculated thermodynamic exhaust temperature), and then passes through the direct-use application (which extracts the residual heat down to the user-defined `Injection Temperature`). + +Because the power plant sits upstream, its electricity production is governed entirely by the production temperature and its own exhaust temperature. Lowering the `Injection Temperature` simply increases the temperature delta across the downstream direct-use application, yielding more heat without altering the upstream power cycle. ### Examples: diff --git a/src/geophires_x/WellBores.py b/src/geophires_x/WellBores.py index ef77ba2f6..b7a9b4bdf 100644 --- a/src/geophires_x/WellBores.py +++ b/src/geophires_x/WellBores.py @@ -895,9 +895,11 @@ def __init__(self, model: Model): "For CHP topping cycle configurations, providing an injection temperature lower than the " "model-calculated reinjection temperature is necessary to model direct-use heat extraction; " "the difference between the reinjection temperature and the injection temperature determines " - "the heat available for the direct-use application. If not provided (or if the default " - "exceeds the model-calculated reinjection temperature), the direct-use heat component will " - "be approximately zero." + "the heat available for the direct-use application. Because the direct-use application sits " + "downstream of the power plant, altering this parameter directly impacts heat production but " + "does not affect electricity generation. If not provided (or if the default " + "exceeds the model-calculated reinjection temperature), the resulting direct-use heat " + "production will be marginal." # TODO re-assess tooltip text when FGEM is incorporated # https://github.com/NatLabRockies/GEOPHIRES-X/issues/395?title=FGEM/flexible+geothermal+systems ) diff --git a/src/geophires_x_schema_generator/geophires-request.json b/src/geophires_x_schema_generator/geophires-request.json index b1873a036..431686349 100644 --- a/src/geophires_x_schema_generator/geophires-request.json +++ b/src/geophires_x_schema_generator/geophires-request.json @@ -773,7 +773,7 @@ "maximum": 393700 }, "Injection Temperature": { - "description": "Constant geofluid injection temperature at injection wellhead. This is the temperature to which the geofluid is cooled before being reinjected into the reservoir. It directly affects total heat extraction: HeatExtracted = flow_rate * cp * (ProducedTemperature - InjectionTemperature). For direct-use heat end-use options (including heat pump, absorption chiller, and district heating), this parameter directly controls how much thermal energy is extracted from the geofluid for the surface application. A lower injection temperature means more heat is extracted. For end-use options with a power plant (electricity, CHP), the model calculates a reinjection temperature from power plant correlations representing the thermodynamic optimum exhaust temperature. If the provided injection temperature exceeds the model-calculated reinjection temperature, the provided value is ignored and the model-calculated value is used instead (a warning will be logged). For pure electricity end-use, the injection temperature does not affect electricity production; it only affects heat extraction accounting and First Law Efficiency reporting. Providing an injection temperature lower than the model-calculated reinjection temperature represents additional thermal losses between the power plant and the injection wellhead (e.g. surface piping losses). For CHP topping cycle configurations, providing an injection temperature lower than the model-calculated reinjection temperature is necessary to model direct-use heat extraction; the difference between the reinjection temperature and the injection temperature determines the heat available for the direct-use application. If not provided (or if the default exceeds the model-calculated reinjection temperature), the direct-use heat component will be approximately zero.", + "description": "Constant geofluid injection temperature at injection wellhead. This is the temperature to which the geofluid is cooled before being reinjected into the reservoir. It directly affects total heat extraction: HeatExtracted = flow_rate * cp * (ProducedTemperature - InjectionTemperature). For direct-use heat end-use options (including heat pump, absorption chiller, and district heating), this parameter directly controls how much thermal energy is extracted from the geofluid for the surface application. A lower injection temperature means more heat is extracted. For end-use options with a power plant (electricity, CHP), the model calculates a reinjection temperature from power plant correlations representing the thermodynamic optimum exhaust temperature. If the provided injection temperature exceeds the model-calculated reinjection temperature, the provided value is ignored and the model-calculated value is used instead (a warning will be logged). For pure electricity end-use, the injection temperature does not affect electricity production; it only affects heat extraction accounting and First Law Efficiency reporting. Providing an injection temperature lower than the model-calculated reinjection temperature represents additional thermal losses between the power plant and the injection wellhead (e.g. surface piping losses). For CHP topping cycle configurations, providing an injection temperature lower than the model-calculated reinjection temperature is necessary to model direct-use heat extraction; the difference between the reinjection temperature and the injection temperature determines the heat available for the direct-use application. Because the direct-use application sits downstream of the power plant, altering this parameter directly impacts heat production but does not affect electricity generation. If not provided (or if the default exceeds the model-calculated reinjection temperature), the resulting direct-use heat production will be marginal.", "type": "number", "units": "degC", "category": "Well Bores", From 6c1af070ba3a1e6ad64c4fa10b6ad9210ca28f78 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 13 Apr 2026 08:08:42 -0700 Subject: [PATCH 118/127] remove addressed gitignore TODO --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index e5c98addf..559e31a3b 100644 --- a/.gitignore +++ b/.gitignore @@ -116,9 +116,6 @@ _site/ /.github/workflows/workflows.7z tmp.patch -# TODO unignore once favicon is correctly configured -docs/_images/geophires-favicon.png - # Mypy Cache .mypy_cache/ From 701294c809e23e50c51d0f51fd9386594dd2d7c3 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 13 Apr 2026 08:10:09 -0700 Subject: [PATCH 119/127] gitignore example cash flow csvs manually generated and uploaded as gists for SME review in https://github.com/softwareengineerprogrammer/GEOPHIRES --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 559e31a3b..0e51b9742 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,10 @@ Geothermal_district_heating_system_with_peaking_boilers.png regenerate-schemas.sh requirements_2025-08-11.txt +tests/examples/example_SAM-single-owner-PPA-7_chp_cash-flow.csv +tests/examples/example_SAM-single-owner-PPA-8_heat_cash-flow.csv +tests/examples/example_SAM-single-owner-PPA-9_cooling_cash-flow.csv + # C extensions *.so From 699edef25a4e10c4791778846eaabadff9c4f687 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 13 Apr 2026 08:12:26 -0700 Subject: [PATCH 120/127] copy edit examples 7 & 9 descriptions --- tests/examples/example_SAM-single-owner-PPA-7_chp.txt | 2 +- tests/examples/example_SAM-single-owner-PPA-9_cooling.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt index 0db49a6d6..112e8f022 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP) +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP; Cogeneration Topping Cycle) # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** diff --git a/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt index a3c4f7a17..b2419099e 100644 --- a/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt +++ b/tests/examples/example_SAM-single-owner-PPA-9_cooling.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Cooling +# Example: SAM Single Owner PPA Economic Model: Cooling (Direct-Use Heat with Absorption Chiller Surface Application) # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** From 709193b582916165c8cf435ce8b1aac70e0ae6b9 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 13 Apr 2026 08:31:12 -0700 Subject: [PATCH 121/127] add example_SAM-single-owner-PPA-7d_chp-bottoming and example_SAM-single-owner-PPA-7e_chp-parallel. copy edit/adjust relevant example descriptions for consistency --- ...AM-EM_End-Uses-and-Surface-Applications.md | 3 + .../example_SAM-single-owner-PPA-7_chp.txt | 2 +- ...example_SAM-single-owner-PPA-7b_chp-cc.txt | 2 +- .../example_SAM-single-owner-PPA-7c.txt | 2 +- ..._SAM-single-owner-PPA-7d_chp-bottoming.out | 487 ++++++++++++++++++ ..._SAM-single-owner-PPA-7d_chp-bottoming.txt | 109 ++++ ...e_SAM-single-owner-PPA-7e_chp-parallel.out | 487 ++++++++++++++++++ ...e_SAM-single-owner-PPA-7e_chp-parallel.txt | 110 ++++ 8 files changed, 1199 insertions(+), 3 deletions(-) create mode 100644 tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.txt create mode 100644 tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.out create mode 100644 tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.txt diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index cbee154fe..e1330079a 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -66,6 +66,9 @@ Because the power plant sits upstream, its electricity production is governed en 1. [example_SAM-single-owner-PPA-7_chp](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp) 1. [example_SAM-single-owner-PPA-7b_chp-cc](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc) +1. [example_SAM-single-owner-PPA-7c](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7c) +1. [example_SAM-single-owner-PPA-7d_chp-bottoming](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-bottoming) +1. [example_SAM-single-owner-PPA-7e_chp-parallel](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-parallel) ## Absorption Chiller (Cooling) diff --git a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt index 112e8f022..266d14b7d 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7_chp.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7_chp.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP; Cogeneration Topping Cycle) +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP): Cogeneration Topping Cycle # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** diff --git a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt index 1d7ed045a..3cf6df731 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7b_chp-cc.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP): Carbon Credits # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** diff --git a/tests/examples/example_SAM-single-owner-PPA-7c.txt b/tests/examples/example_SAM-single-owner-PPA-7c.txt index 566bc9690..cce4e51fd 100644 --- a/tests/examples/example_SAM-single-owner-PPA-7c.txt +++ b/tests/examples/example_SAM-single-owner-PPA-7c.txt @@ -1,4 +1,4 @@ -# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP + Carbon Credits) and fixed surface plant cost +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP): Carbon Credits with fixed Surface Plant Capital Cost # See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html # *** ECONOMIC/FINANCIAL PARAMETERS *** diff --git a/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.out b/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.out new file mode 100644 index 000000000..f9e2764f4 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.out @@ -0,0 +1,487 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-13 + Simulation Time: 08:15 + Calculation Time: 19.782 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Cogeneration Bottoming Cycle, Heat sales considered as extra income + Average Net Electricity Production: 12.60 MW + Average Direct-Use Heat Production: 119.26 MW + Electricity breakeven price: 16.53 cents/kWh + Direct-Use heat breakeven price (LCOH): 4.33 USD/MMBTU + Total CAPEX: 216.95 MUSD + Electricity CAPEX ($/kWe): 9323 USD/kW + Heat CAPEX ($/kWth): 829 USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 65.08 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 14.59 MUSD + After-tax IRR: 20.73 % + Project VIR=PI=PIR: 1.23 + Project MOIC: 3.50 + Project Payback Period: 4.34 yr + CHP: Percent cost allocation for electrical plant: 54.19 % + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % + Pump efficiency: 80.0 % + Injection temperature: 50.5 degC + Production Wellbore heat transmission calculated with Ramey's model + Average production well temperature drop: 0.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + Power plant type: Subcritical ORC + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.3 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 382.08 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -2003.9 kPa + Average Production Well Pump Pressure Drop: 9514.2 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 93.68 MUSD + of which Electrical Plant Cost: 50.77 MUSD + of which Heat Plant Cost: 42.91 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 96.88 MUSD + Overnight Capital Cost: 196.38 MUSD + Inflation costs during construction: 12.58 MUSD + Interest during construction: 7.99 MUSD + Total CAPEX: 216.95 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.12 MUSD/yr + Power plant maintenance costs: 3.26 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 14.01 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + Initial geofluid availability: 0.11 MW/(kg/s) + Maximum Total Electricity Generation: 20.75 MW + Average Total Electricity Generation: 20.75 MW + Minimum Total Electricity Generation: 20.75 MW + Initial Total Electricity Generation: 20.75 MW + Maximum Net Electricity Generation: 12.61 MW + Average Net Electricity Generation: 12.60 MW + Minimum Net Electricity Generation: 12.57 MW + Initial Net Electricity Generation: 12.59 MW + Average Annual Total Electricity Generation: 163.56 GWh + Average Annual Net Electricity Generation: 99.38 GWh + Initial pumping power/net installed power: 64.72 % + Maximum Net Heat Production: 119.94 MW + Average Net Heat Production: 119.26 MW + Minimum Net Heat Production: 115.90 MW + Initial Net Heat Production: 116.58 MW + Average Annual Heat Production: 940.31 GWh + Average Pumping Power: 8.14 MW + Heat to Power Conversion Efficiency: 5.05 % + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 201.64 8.1512 12.5944 116.5786 5.0466 + 1 1.0052 202.70 8.1476 12.5980 118.9568 5.0480 + 2 1.0062 202.89 8.1469 12.5986 119.3983 5.0483 + 3 1.0067 202.99 8.1466 12.5990 119.6280 5.0484 + 4 1.0070 203.06 8.1464 12.5992 119.7799 5.0485 + 5 1.0073 203.11 8.1462 12.5994 119.8908 5.0486 + 6 1.0074 203.13 8.1463 12.5993 119.9428 5.0486 + 7 1.0066 202.97 8.1489 12.5967 119.5757 5.0475 + 8 1.0007 201.78 8.1656 12.5800 116.8823 5.0408 + 9 1.0048 202.61 8.1453 12.6002 118.7524 5.0489 + 10 1.0060 202.86 8.1444 12.6012 119.3184 5.0493 + 11 1.0066 202.97 8.1428 12.6027 119.5803 5.0499 + 12 1.0070 203.05 8.1408 12.6048 119.7466 5.0508 + 13 1.0072 203.10 8.1387 12.6069 119.8662 5.0516 + 14 1.0074 203.13 8.1370 12.6085 119.9426 5.0523 + 15 1.0070 203.06 8.1373 12.6082 119.7657 5.0521 + 16 1.0031 202.27 8.1479 12.5976 117.9939 5.0479 + 17 1.0041 202.47 8.1345 12.6110 118.4398 5.0533 + 18 1.0058 202.82 8.1344 12.6112 119.2231 5.0533 + 19 1.0065 202.95 8.1343 12.6112 119.5271 5.0533 + 20 1.0069 203.03 8.1343 12.6112 119.7105 5.0533 + 21 1.0072 203.09 8.1343 12.6112 119.8395 5.0533 + 22 1.0074 203.13 8.1344 12.6112 119.9310 5.0533 + 23 1.0072 203.10 8.1353 12.6103 119.8714 5.0530 + 24 1.0048 202.61 8.1426 12.6030 118.7557 5.0500 + 25 1.0027 202.20 8.1344 12.6112 117.8263 5.0533 + 26 1.0056 202.76 8.1344 12.6112 119.1063 5.0533 + 27 1.0063 202.92 8.1344 12.6111 119.4670 5.0533 + 28 1.0068 203.01 8.1344 12.6111 119.6711 5.0533 + 29 1.0071 203.08 8.1344 12.6111 119.8108 5.0533 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 931.7 99.3 3002.77 143.09 7.02 + 2 939.8 99.3 3011.81 132.25 14.07 + 3 942.3 99.3 3014.56 121.39 21.12 + 4 943.8 99.3 3016.19 110.54 28.18 + 5 944.8 99.3 3017.33 99.67 35.23 + 6 945.5 99.3 3018.10 88.81 42.29 + 7 944.8 99.3 3017.30 77.95 49.35 + 8 934.9 99.3 3006.30 67.12 56.38 + 9 926.7 99.3 2997.27 56.33 63.40 + 10 938.9 99.3 3010.72 45.49 70.44 + 11 941.8 99.4 3014.03 34.64 77.49 + 12 943.5 99.4 3015.84 23.79 84.54 + 13 944.6 99.4 3017.08 12.93 91.60 + 14 945.4 99.4 3017.96 2.06 98.66 + 15 945.3 99.4 3017.88 -8.80 105.72 + 16 939.2 99.4 3011.14 -19.64 112.76 + 17 924.5 99.4 2994.77 -30.42 119.77 + 18 937.5 99.4 3009.26 -41.26 126.81 + 19 941.3 99.4 3013.41 -52.11 133.86 + 20 943.1 99.4 3015.46 -62.96 140.91 + 21 944.3 99.4 3016.81 -73.82 147.97 + 22 945.2 99.4 3017.78 -84.69 155.03 + 23 945.5 99.4 3018.13 -95.55 162.09 + 24 942.0 99.4 3014.27 -106.40 169.14 + 25 924.9 99.3 2995.26 -117.19 176.14 + 26 935.6 99.4 3007.08 -128.01 183.18 + 27 940.6 99.4 3012.68 -138.86 190.23 + 28 942.7 99.4 3015.04 -149.71 197.28 + 29 944.1 99.4 3016.51 -160.57 204.33 + 30 945.0 99.4 3017.53 -171.43 211.39 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -14,728,311 -103,098,179 -78,550,993 +plus: +Inflation cost [construction] ($) -397,664 -5,642,460 -6,535,968 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -15,125,976 -108,740,639 -85,086,961 + +Issuance of equity [construction] ($) 15,125,976 32,622,192 25,526,088 +Issuance of debt [construction] ($) 0 76,118,447 59,560,873 +Debt balance [construction] ($) 0 76,118,447 143,671,757 +Debt interest payment [construction] ($) 0 0 7,992,437 + +Installed cost [construction] ($) -15,125,976 -108,740,639 -93,079,398 +After-tax net cash flow [construction] ($) -15,125,976 -32,622,192 -25,526,088 + +ENERGY +Electricity to grid (kWh) 0.0 99,313,020 99,325,280 99,329,015 99,331,224 99,332,758 99,333,410 99,326,056 99,263,098 99,299,889 99,343,578 99,353,413 99,367,844 99,384,484 99,399,741 99,407,107 99,373,923 99,353,075 99,425,902 99,426,682 99,426,900 99,426,896 99,426,722 99,424,262 99,399,069 99,334,982 99,426,375 99,426,270 99,426,172 99,426,080 99,425,968 +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 99,313,020 99,325,280 99,329,015 99,331,224 99,332,758 99,333,410 99,326,056 99,263,098 99,299,889 99,343,578 99,353,413 99,367,844 99,384,484 99,399,741 99,407,107 99,373,923 99,353,075 99,425,902 99,426,682 99,426,900 99,426,896 99,426,722 99,424,262 99,399,069 99,334,982 99,426,375 99,426,270 99,426,172 99,426,080 99,425,968 + +Heat provided (kWh) 0 931,699,281 939,837,015 942,314,903 943,780,012 944,803,489 945,499,436 944,774,210 934,877,845 926,746,908 938,852,768 941,831,559 943,466,861 944,576,394 945,370,981 945,297,400 939,235,023 924,500,003 937,543,301 941,275,541 943,122,781 944,331,534 945,204,571 945,521,883 942,046,428 924,943,564 935,582,993 940,623,153 942,741,549 944,067,007 944,981,487 + +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 9,434,737 9,435,902 9,492,874 9,549,704 9,606,471 9,663,154 9,719,055 9,769,474 9,829,696 9,890,647 9,948,257 10,006,342 10,064,667 10,122,870 10,180,282 10,233,527 10,288,011 10,352,225 10,408,979 10,465,675 10,522,348 10,579,003 10,635,413 10,689,376 10,739,105 10,805,658 10,862,320 10,918,982 10,975,645 11,032,305 +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 + +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 23,292,482 23,495,925 23,557,873 23,594,500 23,620,087 23,637,486 23,619,355 23,371,946 23,168,673 23,471,319 23,545,789 23,586,672 23,614,410 23,634,275 23,632,435 23,480,876 23,112,500 23,438,583 23,531,889 23,578,070 23,608,288 23,630,114 23,638,047 23,551,161 23,123,589 23,389,575 23,515,579 23,568,539 23,601,675 23,624,537 +equals: +Capacity payment revenue ($) 0 23,292,482 23,495,925 23,557,873 23,594,500 23,620,087 23,637,486 23,619,355 23,371,946 23,168,673 23,471,319 23,545,789 23,586,672 23,614,410 23,634,275 23,632,435 23,480,876 23,112,500 23,438,583 23,531,889 23,578,070 23,608,288 23,630,114 23,638,047 23,551,161 23,123,589 23,389,575 23,515,579 23,568,539 23,601,675 23,624,537 + +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 108,473,006 +Total revenue ($) 0 32,727,219 32,931,827 33,050,747 33,144,204 33,226,558 33,300,640 33,338,410 33,141,420 32,998,369 33,361,966 33,494,046 33,593,014 33,679,077 33,757,145 33,812,717 33,714,403 33,400,511 33,790,808 33,940,868 34,043,745 34,130,636 34,209,117 34,273,460 34,240,537 33,862,694 34,195,233 34,377,899 34,487,521 34,577,320 143,129,849 + +Property tax net assessed value ($) 0 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 216,946,013 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 14,014,665 +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 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 477,281 +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 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 14,491,946 + +EBITDA ($) 0 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 + +OPERATING ACTIVITIES +EBITDA ($) 0 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 +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 10,057,023 9,950,555 9,836,635 9,714,740 9,584,312 9,444,755 9,295,429 9,135,649 8,964,685 8,781,754 8,586,018 8,376,579 8,152,481 7,912,695 7,656,124 7,381,594 7,087,846 6,773,536 6,437,224 6,077,370 5,692,327 5,280,331 4,839,494 4,367,800 3,863,086 3,323,043 2,745,197 2,126,901 1,465,325 757,439 +Cash flow from operating activities ($) 0 8,178,250 8,489,325 8,722,166 8,937,518 9,150,300 9,363,939 9,551,035 9,513,825 9,541,738 10,088,266 10,416,083 10,724,489 11,034,650 11,352,504 11,664,647 11,840,863 11,820,719 12,525,326 13,011,698 13,474,429 13,946,363 14,436,841 14,942,020 15,380,791 15,507,661 16,380,244 17,140,756 17,868,674 18,620,049 127,880,464 + +INVESTING ACTIVITIES +Total installed cost ($) -216,946,013 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -216,946,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 +equals: +Cash flow from investing activities ($) -216,946,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 ($) 73,274,256 +Size of debt ($) 143,671,757 +minus: +Debt principal payment ($) 0 1,520,967 1,627,435 1,741,355 1,863,250 1,993,678 2,133,235 2,282,562 2,442,341 2,613,305 2,796,236 2,991,973 3,201,411 3,425,510 3,665,295 3,921,866 4,196,396 4,490,144 4,804,454 5,140,766 5,500,620 5,885,663 6,297,660 6,738,496 7,210,190 7,714,904 8,254,947 8,832,793 9,451,089 10,112,665 10,820,552 +equals: +Cash flow from financing activities ($) 216,946,013 -1,520,967 -1,627,435 -1,741,355 -1,863,250 -1,993,678 -2,133,235 -2,282,562 -2,442,341 -2,613,305 -2,796,236 -2,991,973 -3,201,411 -3,425,510 -3,665,295 -3,921,866 -4,196,396 -4,490,144 -4,804,454 -5,140,766 -5,500,620 -5,885,663 -6,297,660 -6,738,496 -7,210,190 -7,714,904 -8,254,947 -8,832,793 -9,451,089 -10,112,665 -10,820,552 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 8,178,250 8,489,325 8,722,166 8,937,518 9,150,300 9,363,939 9,551,035 9,513,825 9,541,738 10,088,266 10,416,083 10,724,489 11,034,650 11,352,504 11,664,647 11,840,863 11,820,719 12,525,326 13,011,698 13,474,429 13,946,363 14,436,841 14,942,020 15,380,791 15,507,661 16,380,244 17,140,756 17,868,674 18,620,049 127,880,464 +Cash flow from investing activities ($) -216,946,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 ($) 216,946,013 -1,520,967 -1,627,435 -1,741,355 -1,863,250 -1,993,678 -2,133,235 -2,282,562 -2,442,341 -2,613,305 -2,796,236 -2,991,973 -3,201,411 -3,425,510 -3,665,295 -3,921,866 -4,196,396 -4,490,144 -4,804,454 -5,140,766 -5,500,620 -5,885,663 -6,297,660 -6,738,496 -7,210,190 -7,714,904 -8,254,947 -8,832,793 -9,451,089 -10,112,665 -10,820,552 +Total pre-tax cash flow ($) 0 6,657,283 6,861,890 6,980,811 7,074,268 7,156,622 7,230,704 7,268,473 7,071,484 6,928,433 7,292,030 7,424,110 7,523,078 7,609,141 7,687,208 7,742,781 7,644,466 7,330,575 7,720,872 7,870,932 7,973,809 8,060,700 8,139,181 8,203,524 8,170,601 7,792,758 8,125,297 8,307,963 8,417,585 8,507,384 117,059,913 + +Pre-tax Returns: +Issuance of equity ($) 73,274,256 +Total pre-tax cash flow ($) 0 6,657,283 6,861,890 6,980,811 7,074,268 7,156,622 7,230,704 7,268,473 7,071,484 6,928,433 7,292,030 7,424,110 7,523,078 7,609,141 7,687,208 7,742,781 7,644,466 7,330,575 7,720,872 7,870,932 7,973,809 8,060,700 8,139,181 8,203,524 8,170,601 7,792,758 8,125,297 8,307,963 8,417,585 8,507,384 117,059,913 +Total pre-tax returns ($) -73,274,256 6,657,283 6,861,890 6,980,811 7,074,268 7,156,622 7,230,704 7,268,473 7,071,484 6,928,433 7,292,030 7,424,110 7,523,078 7,609,141 7,687,208 7,742,781 7,644,466 7,330,575 7,720,872 7,870,932 7,973,809 8,060,700 8,139,181 8,203,524 8,170,601 7,792,758 8,125,297 8,307,963 8,417,585 8,507,384 117,059,913 + +After-tax Returns: +Total pre-tax returns ($) -73,274,256 6,657,283 6,861,890 6,980,811 7,074,268 7,156,622 7,230,704 7,268,473 7,071,484 6,928,433 7,292,030 7,424,110 7,523,078 7,609,141 7,687,208 7,742,781 7,644,466 7,330,575 7,720,872 7,870,932 7,973,809 8,060,700 8,139,181 8,203,524 8,170,601 7,792,758 8,125,297 8,307,963 8,417,585 8,507,384 117,059,913 +Federal ITC total income ($) 0 65,083,804 0 0 0 0 0 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 -715,217 146,501 99,829 56,663 14,012 -28,811 -66,313 -58,855 -64,450 -173,998 -239,708 -301,526 -363,696 -427,408 -489,976 -525,298 -521,260 -662,495 -759,986 -852,738 -1,871,407 -2,893,793 -2,995,053 -3,083,003 -3,108,433 -3,283,338 -3,435,779 -3,581,686 -3,732,296 -25,633,000 +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 -162,351 33,255 22,661 12,862 3,181 -6,540 -15,053 -13,360 -14,630 -39,497 -54,412 -68,445 -82,557 -97,020 -111,222 -119,240 -118,323 -150,383 -172,513 -193,567 -424,800 -656,876 -679,862 -699,826 -705,599 -745,301 -779,904 -813,025 -847,212 -5,818,561 +Total after-tax returns ($) -73,274,256 70,863,519 7,041,647 7,103,301 7,143,793 7,173,815 7,195,353 7,187,108 6,999,270 6,849,354 7,078,534 7,129,990 7,153,107 7,162,887 7,162,780 7,141,583 6,999,929 6,690,992 6,907,994 6,938,434 6,927,504 5,764,494 4,588,512 4,528,609 4,387,772 3,978,726 4,096,658 4,092,280 4,022,874 3,927,876 85,608,352 + +After-tax net cash flow ($) -15,125,976 -32,622,192 -25,526,088 70,863,519 7,041,647 7,103,301 7,143,793 7,173,815 7,195,353 7,187,108 6,999,270 6,849,354 7,078,534 7,129,990 7,153,107 7,162,887 7,162,780 7,141,583 6,999,929 6,690,992 6,907,994 6,938,434 6,927,504 5,764,494 4,588,512 4,528,609 4,387,772 3,978,726 4,096,658 4,092,280 4,022,874 3,927,876 85,608,352 +After-tax cumulative IRR (%) NaN NaN NaN -1.79 3.18 7.28 10.45 12.84 14.65 16.00 17.01 17.77 18.38 18.86 19.23 19.53 19.77 19.96 20.11 20.22 20.32 20.40 20.46 20.50 20.53 20.56 20.57 20.59 20.60 20.61 20.62 20.62 20.74 +After-tax cumulative NPV ($) -15,125,976 -43,487,181 -62,780,517 -16,215,762 -12,193,037 -8,665,124 -5,580,529 -2,887,563 -539,313 1,499,878 3,226,384 4,695,231 6,014,951 7,170,634 8,178,624 9,056,152 9,819,050 10,480,338 11,043,847 11,512,132 11,932,454 12,299,486 12,618,075 12,848,551 13,008,047 13,144,899 13,260,177 13,351,054 13,432,403 13,503,051 13,563,430 13,614,682 14,585,830 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -15,125,976 -32,622,192 -25,526,088 38,136,300 -25,890,180 -25,947,446 -26,000,411 -26,052,743 -26,105,287 -26,151,302 -26,142,150 -26,149,015 -26,283,431 -26,364,056 -26,439,907 -26,516,190 -26,594,364 -26,671,134 -26,714,474 -26,709,519 -26,882,814 -27,002,435 -27,116,241 -28,366,143 -29,620,605 -29,744,851 -29,852,765 -29,883,968 -30,098,575 -30,285,619 -30,464,647 -30,649,444 50,951,510 +PPA revenue ($) 0 0 0 9,434,737 9,435,902 9,492,874 9,549,704 9,606,471 9,663,154 9,719,055 9,769,474 9,829,696 9,890,647 9,948,257 10,006,342 10,064,667 10,122,870 10,180,282 10,233,527 10,288,011 10,352,225 10,408,979 10,465,675 10,522,348 10,579,003 10,635,413 10,689,376 10,739,105 10,805,658 10,862,320 10,918,982 10,975,645 11,032,305 +Electricity to grid (kWh) 0 0 0 99,313,020 99,325,280 99,329,015 99,331,224 99,332,758 99,333,410 99,326,056 99,263,098 99,299,889 99,343,578 99,353,413 99,367,844 99,384,484 99,399,741 99,407,107 99,373,923 99,353,075 99,425,902 99,426,682 99,426,900 99,426,896 99,426,722 99,424,262 99,399,069 99,334,982 99,426,375 99,426,270 99,426,172 99,426,080 99,425,968 + +Present value of annual costs ($) 150,110,910 + +Present value of annual energy costs ($) 81,348,720 +Present value of annual energy nominal (kWh) 492,246,912 +LCOE Levelized cost of energy nominal (cents/kWh) 16.53 + +Present value of PPA revenue ($) 48,259,824 +Present value of annual energy nominal (kWh) 492,246,912 +LPPA Levelized PPA price nominal (cents/kWh) 9.80 + +Present value of annual heat costs ($) 68,762,190 +Present value of annual heat provided (MMBTU) 15,891,967 +LCOH Levelized cost of heating nominal ($/MMBTU) 4.33 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 +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 10,057,023 9,950,555 9,836,635 9,714,740 9,584,312 9,444,755 9,295,429 9,135,649 8,964,685 8,781,754 8,586,018 8,376,579 8,152,481 7,912,695 7,656,124 7,381,594 7,087,846 6,773,536 6,437,224 6,077,370 5,692,327 5,280,331 4,839,494 4,367,800 3,863,086 3,323,043 2,745,197 2,126,901 1,465,325 757,439 +Total state tax depreciation ($) 0 4,610,103 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 4,610,103 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 3,568,147 -730,880 -498,039 -282,688 -69,906 143,734 330,830 293,619 321,532 868,060 1,195,877 1,504,283 1,814,445 2,132,298 2,444,441 2,620,657 2,600,513 3,305,121 3,791,493 4,254,224 9,336,261 14,436,841 14,942,020 15,380,791 15,507,661 16,380,244 17,140,756 17,868,674 18,620,049 127,880,464 + +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 -162,351 33,255 22,661 12,862 3,181 -6,540 -15,053 -13,360 -14,630 -39,497 -54,412 -68,445 -82,557 -97,020 -111,222 -119,240 -118,323 -150,383 -172,513 -193,567 -424,800 -656,876 -679,862 -699,826 -705,599 -745,301 -779,904 -813,025 -847,212 -5,818,561 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 +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 -162,351 33,255 22,661 12,862 3,181 -6,540 -15,053 -13,360 -14,630 -39,497 -54,412 -68,445 -82,557 -97,020 -111,222 -119,240 -118,323 -150,383 -172,513 -193,567 -424,800 -656,876 -679,862 -699,826 -705,599 -745,301 -779,904 -813,025 -847,212 -5,818,561 +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 10,057,023 9,950,555 9,836,635 9,714,740 9,584,312 9,444,755 9,295,429 9,135,649 8,964,685 8,781,754 8,586,018 8,376,579 8,152,481 7,912,695 7,656,124 7,381,594 7,087,846 6,773,536 6,437,224 6,077,370 5,692,327 5,280,331 4,839,494 4,367,800 3,863,086 3,323,043 2,745,197 2,126,901 1,465,325 757,439 +Total federal tax depreciation ($) 0 4,610,103 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 9,220,206 4,610,103 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 3,405,796 -697,625 -475,379 -269,825 -66,725 137,194 315,777 280,260 306,902 828,563 1,141,465 1,435,838 1,731,887 2,035,279 2,333,219 2,501,417 2,482,190 3,154,738 3,618,980 4,060,656 8,911,461 13,779,964 14,262,158 14,680,965 14,802,063 15,634,943 16,360,852 17,055,649 17,772,837 122,061,903 + +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 -715,217 146,501 99,829 56,663 14,012 -28,811 -66,313 -58,855 -64,450 -173,998 -239,708 -301,526 -363,696 -427,408 -489,976 -525,298 -521,260 -662,495 -759,986 -852,738 -1,871,407 -2,893,793 -2,995,053 -3,083,003 -3,108,433 -3,283,338 -3,435,779 -3,581,686 -3,732,296 -25,633,000 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 65,083,804 0 0 0 0 0 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 65,083,804 0 0 0 0 0 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 ($) 143,671,757 142,150,790 140,523,355 138,782,000 136,918,750 134,925,072 132,791,837 130,509,275 128,066,934 125,453,629 122,657,393 119,665,420 116,464,010 113,038,500 109,373,205 105,451,339 101,254,943 96,764,798 91,960,344 86,819,578 81,318,958 75,433,295 69,135,636 62,397,140 55,186,949 47,472,046 39,217,099 30,384,305 20,933,217 10,820,552 0 +Debt interest payment ($) 0 10,057,023 9,950,555 9,836,635 9,714,740 9,584,312 9,444,755 9,295,429 9,135,649 8,964,685 8,781,754 8,586,018 8,376,579 8,152,481 7,912,695 7,656,124 7,381,594 7,087,846 6,773,536 6,437,224 6,077,370 5,692,327 5,280,331 4,839,494 4,367,800 3,863,086 3,323,043 2,745,197 2,126,901 1,465,325 757,439 +Debt principal payment ($) 0 1,520,967 1,627,435 1,741,355 1,863,250 1,993,678 2,133,235 2,282,562 2,442,341 2,613,305 2,796,236 2,991,973 3,201,411 3,425,510 3,665,295 3,921,866 4,196,396 4,490,144 4,804,454 5,140,766 5,500,620 5,885,663 6,297,660 6,738,496 7,210,190 7,714,904 8,254,947 8,832,793 9,451,089 10,112,665 10,820,552 +Debt total payment ($) 0 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 +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 18,235,273 18,439,881 18,558,801 18,652,258 18,734,612 18,808,694 18,846,464 18,649,474 18,506,423 18,870,020 19,002,100 19,101,068 19,187,131 19,265,199 19,320,771 19,222,457 18,908,565 19,298,862 19,448,922 19,551,800 19,638,690 19,717,171 19,781,514 19,748,591 19,370,748 19,703,287 19,885,953 19,995,575 20,085,374 128,637,903 +Debt total payment ($) 0 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 11,577,990 +DSCR (pre-tax) 0.0 1.57 1.59 1.60 1.61 1.62 1.62 1.63 1.61 1.60 1.63 1.64 1.65 1.66 1.66 1.67 1.66 1.63 1.67 1.68 1.69 1.70 1.70 1.71 1.71 1.67 1.70 1.72 1.73 1.73 11.11 + +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 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 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 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 +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 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.txt b/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.txt new file mode 100644 index 000000000..4f3508383 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7d_chp-bottoming.txt @@ -0,0 +1,109 @@ +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP): Cogeneration Bottoming Cycle +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 41, -- COGENERATION_BOTTOMING_EXTRA_HEAT +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 47.5 +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 diff --git a/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.out b/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.out new file mode 100644 index 000000000..de5fa9c1b --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.out @@ -0,0 +1,487 @@ + ***************** + ***CASE REPORT*** + ***************** + +Simulation Metadata +---------------------- + GEOPHIRES Version: 3.12.1 + Simulation Date: 2026-04-13 + Simulation Time: 08:24 + Calculation Time: 1.854 sec + + ***SUMMARY OF RESULTS*** + + End-Use Option: Cogeneration Parallel Cycle, Heat sales considered as extra income + Average Net Electricity Production: 9.78 MW + Average Direct-Use Heat Production: 229.02 MW + Electricity breakeven price: 16.93 cents/kWh + Direct-Use heat breakeven price (LCOH): 3.95 USD/MMBTU + Total CAPEX: 252.83 MUSD + Electricity CAPEX ($/kWe): 8946 USD/kW + Heat CAPEX ($/kWth): 717 USD/kW + Number of production wells: 6 + Number of injection wells: 4 + Flowrate per production well: 100.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*** + + Economic Model = SAM Single Owner PPA + Real Discount Rate: 12.00 % + Nominal Discount Rate: 15.02 % + WACC: 8.57 % + Investment Tax Credit: 75.85 MUSD + Project lifetime: 30 yr + Capacity factor: 90.0 % + Project NPV: 75.97 MUSD + After-tax IRR: 34.87 % + Project VIR=PI=PIR: 2.04 + Project MOIC: 7.63 + Project Payback Period: 3.90 yr + CHP: Percent cost allocation for electrical plant: 34.93 % + + ***ENGINEERING PARAMETERS*** + + Number of Production Wells: 6 + Number of Injection Wells: 4 + Well depth: 2.7 kilometer + Water loss rate: 1.0 % + Pump efficiency: 80.0 % + Injection temperature: 50.5 degC + Production Wellbore heat transmission calculated with Ramey's model + Average production well temperature drop: 0.3 degC + Flowrate per production well: 100.0 kg/sec + Injection well casing ID: 8.535 in + Production well casing ID: 8.535 in + Number of times redrilling: 3 + Power plant type: Subcritical ORC + + + ***RESOURCE CHARACTERISTICS*** + + Maximum reservoir temperature: 500.0 degC + 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: 205.38 degC + Fracture model = Rectangular + Well separation: fracture height: 100.00 meter + Fracture width: 305.00 meter + Fracture area: 30500.00 m**2 + Reservoir volume calculated with fracture separation and number of fractures as input + Number of fractures: 1500 + Fracture separation: 9.83 meter + Reservoir volume: 449216947 m**3 + Reservoir hydrostatic pressure: 25324.54 kPa + Plant outlet pressure: 13789.51 kPa + Production wellhead pressure: 2089.11 kPa + Productivity Index: 1.13 kg/sec/bar + Injectivity Index: 1.38 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 + + + ***RESERVOIR SIMULATION RESULTS*** + + Maximum Production Temperature: 203.1 degC + Average Production Temperature: 202.8 degC + Minimum Production Temperature: 201.3 degC + Initial Production Temperature: 201.6 degC + Average Reservoir Heat Extraction: 382.08 MW + Production Wellbore Heat Transmission Model = Ramey Model + Average Production Well Temperature Drop: 0.3 degC + Average Injection Well Pump Pressure Drop: -2003.9 kPa + Average Production Well Pump Pressure Drop: 9514.2 kPa + + + ***CAPITAL COSTS (M$)*** + + Exploration costs: 4.71 MUSD + Drilling and completion costs: 46.49 MUSD + Drilling and completion costs per well: 4.65 MUSD + Stimulation costs: 48.30 MUSD + Surface power plant costs: 126.16 MUSD + of which Electrical Plant Cost: 44.06 MUSD + of which Heat Plant Cost: 82.10 MUSD + Field gathering system costs: 3.20 MUSD + Total surface equipment costs: 129.36 MUSD + Overnight Capital Cost: 228.86 MUSD + Inflation costs during construction: 14.66 MUSD + Interest during construction: 9.31 MUSD + Total CAPEX: 252.83 MUSD + + + ***OPERATING AND MAINTENANCE COSTS (M$/yr)*** + + Wellfield maintenance costs: 1.12 MUSD/yr + Power plant maintenance costs: 3.75 MUSD/yr + Water costs: 0.16 MUSD/yr + Redrilling costs: 9.48 MUSD/yr + Total operating and maintenance costs: 14.50 MUSD/yr + + + ***SURFACE EQUIPMENT SIMULATION RESULTS*** + Initial geofluid availability: 0.19 MW/(kg/s) + Maximum Total Electricity Generation: 18.01 MW + Average Total Electricity Generation: 17.92 MW + Minimum Total Electricity Generation: 17.52 MW + Initial Total Electricity Generation: 17.60 MW + Maximum Net Electricity Generation: 9.87 MW + Average Net Electricity Generation: 9.78 MW + Minimum Net Electricity Generation: 9.34 MW + Initial Net Electricity Generation: 9.45 MW + Average Annual Total Electricity Generation: 141.31 GWh + Average Annual Net Electricity Generation: 77.12 GWh + Initial pumping power/net installed power: 86.29 % + Maximum Net Heat Production: 229.47 MW + Average Net Heat Production: 229.02 MW + Minimum Net Heat Production: 226.77 MW + Initial Net Heat Production: 227.23 MW + Average Annual Heat Production: 1805.60 GWh + Average Pumping Power: 8.14 MW + Heat to Power Conversion Efficiency: 7.66 % + + ************************************************************ + * HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ************************************************************ + YEAR THERMAL GEOFLUID PUMP NET NET FIRST LAW + DRAWDOWN TEMPERATURE POWER POWER HEAT EFFICIENCY + (deg C) (MW) (MW) (MW) (%) + 0 1.0000 201.64 8.1512 9.4463 227.2289 7.4605 + 1 1.0052 202.70 8.1476 9.7375 228.8127 7.6372 + 2 1.0062 202.89 8.1469 9.7919 229.1068 7.6701 + 3 1.0067 202.99 8.1466 9.8202 229.2598 7.6871 + 4 1.0070 203.06 8.1464 9.8390 229.3609 7.6984 + 5 1.0073 203.11 8.1462 9.8527 229.4348 7.7067 + 6 1.0074 203.13 8.1463 9.8590 229.4695 7.7104 + 7 1.0066 202.97 8.1489 9.8116 229.2250 7.6815 + 8 1.0007 201.78 8.1656 9.4684 227.4312 7.4713 + 9 1.0048 202.61 8.1453 9.7149 228.6766 7.6241 + 10 1.0060 202.86 8.1444 9.7847 229.0536 7.6662 + 11 1.0066 202.97 8.1428 9.8182 229.2280 7.6866 + 12 1.0070 203.05 8.1408 9.8405 229.3387 7.7004 + 13 1.0072 203.10 8.1387 9.8572 229.4184 7.7107 + 14 1.0074 203.13 8.1370 9.8682 229.4693 7.7176 + 15 1.0070 203.06 8.1373 9.8463 229.3515 7.7044 + 16 1.0031 202.27 8.1479 9.6203 228.1714 7.5666 + 17 1.0041 202.47 8.1345 9.6877 228.4684 7.6097 + 18 1.0058 202.82 8.1344 9.7831 228.9901 7.6671 + 19 1.0065 202.95 8.1343 9.8202 229.1926 7.6893 + 20 1.0069 203.03 8.1343 9.8426 229.3147 7.7028 + 21 1.0072 203.09 8.1343 9.8583 229.4006 7.7122 + 22 1.0074 203.13 8.1344 9.8694 229.4616 7.7188 + 23 1.0072 203.10 8.1353 9.8613 229.4219 7.7138 + 24 1.0048 202.61 8.1426 9.7180 228.6788 7.6265 + 25 1.0027 202.20 8.1344 9.6136 228.0599 7.5650 + 26 1.0056 202.76 8.1344 9.7689 228.9123 7.6585 + 27 1.0063 202.92 8.1344 9.8128 229.1526 7.6849 + 28 1.0068 203.01 8.1344 9.8377 229.2885 7.6998 + 29 1.0071 203.08 8.1344 9.8547 229.3815 7.7100 + + + ******************************************************************* + * ANNUAL HEATING, COOLING AND/OR ELECTRICITY PRODUCTION PROFILE * + ******************************************************************* + YEAR HEAT ELECTRICITY HEAT RESERVOIR PERCENTAGE OF + PROVIDED PROVIDED EXTRACTED HEAT CONTENT TOTAL HEAT MINED + (GWh/year) (GWh/year) (GWh/year) (10^15 J) (%) + 1 1799.9 76.0 3002.77 143.09 7.02 + 2 1805.3 77.0 3011.81 132.25 14.07 + 3 1806.9 77.3 3014.56 121.39 21.12 + 4 1807.9 77.5 3016.19 110.54 28.18 + 5 1808.6 77.6 3017.33 99.67 35.23 + 6 1809.1 77.7 3018.10 88.81 42.29 + 7 1808.6 77.6 3017.30 77.95 49.35 + 8 1802.0 76.4 3006.30 67.12 56.38 + 9 1796.6 75.4 2997.27 56.33 63.40 + 10 1804.6 76.9 3010.72 45.49 70.44 + 11 1806.6 77.3 3014.03 34.64 77.49 + 12 1807.7 77.5 3015.84 23.79 84.54 + 13 1808.4 77.7 3017.08 12.93 91.60 + 14 1809.0 77.8 3017.96 2.06 98.66 + 15 1808.9 77.8 3017.88 -8.80 105.72 + 16 1804.9 77.0 3011.14 -19.64 112.76 + 17 1795.1 75.2 2994.77 -30.42 119.77 + 18 1803.8 76.8 3009.26 -41.26 126.81 + 19 1806.2 77.3 3013.41 -52.11 133.86 + 20 1807.5 77.5 3015.46 -62.96 140.91 + 21 1808.3 77.7 3016.81 -73.82 147.97 + 22 1808.9 77.8 3017.78 -84.69 155.03 + 23 1809.1 77.8 3018.13 -95.55 162.09 + 24 1806.8 77.4 3014.27 -106.40 169.14 + 25 1795.4 75.2 2995.26 -117.19 176.14 + 26 1802.4 76.6 3007.08 -128.01 183.18 + 27 1805.8 77.2 3012.68 -138.86 190.23 + 28 1807.2 77.5 3015.04 -149.71 197.28 + 29 1808.1 77.6 3016.51 -160.57 204.33 + 30 1808.7 77.7 3017.53 -171.43 211.39 + + *************************** + * 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 +CONSTRUCTION +Capital expenditure schedule [construction] (%) 7.50 52.50 40.0 +Overnight capital expenditure [construction] ($) -17,164,342 -120,150,392 -91,543,156 +plus: +Inflation cost [construction] ($) -463,437 -6,575,711 -7,617,002 +plus: +Royalty supplemental payments [construction] ($) 0 0 0 +equals: +Nominal capital expenditure [construction] ($) -17,627,779 -126,726,102 -99,160,158 + +Issuance of equity [construction] ($) 17,627,779 38,017,831 29,748,047 +Issuance of debt [construction] ($) 0 88,708,272 69,412,111 +Debt balance [construction] ($) 0 88,708,272 167,434,751 +Debt interest payment [construction] ($) 0 0 9,314,369 + +Installed cost [construction] ($) -17,627,779 -126,726,102 -108,474,526 +After-tax net cash flow [construction] ($) -17,627,779 -38,017,831 -29,748,047 + +ENERGY +Electricity to grid (kWh) 0.0 76,022,895 77,022,420 77,328,014 77,508,915 77,635,368 77,721,005 77,625,113 76,358,606 75,411,265 76,920,949 77,293,497 77,507,333 77,659,375 77,771,654.0 77,770,039 76,998,319 75,192,414 76,844,058 77,299,019 77,524,423 77,671,903 77,778,315 77,814,608 77,365,558 75,228,107 76,606,475 77,219,138 77,477,201 77,638,802 77,750,321 +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 76,022,895 77,022,420 77,328,014 77,508,915 77,635,368 77,721,005 77,625,113 76,358,606 75,411,265 76,920,949 77,293,497 77,507,333 77,659,375 77,771,654.0 77,770,039 76,998,319 75,192,414 76,844,058 77,299,019 77,524,423 77,671,903 77,778,315 77,814,608 77,365,558 75,228,107 76,606,475 77,219,138 77,477,201 77,638,802 77,750,321 + +Heat provided (kWh) 0 1,799,859,865 1,805,279,595 1,806,929,868 1,807,905,631 1,808,587,267 1,809,050,768 1,808,567,767 1,801,976,788 1,796,561,584 1,804,624,087 1,806,607,962 1,807,697,073 1,808,436,021 1,808,965,217 1,808,916,212 1,804,878,668 1,795,065,145 1,803,751,981 1,806,237,654 1,807,467,916 1,808,272,945 1,808,854,387 1,809,065,717 1,806,751,065 1,795,360,557 1,802,446,417 1,805,803,163 1,807,214,015 1,808,096,770 1,808,705,814 + +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 7,222,175 7,317,130 7,390,238 7,451,707 7,508,116 7,560,699 7,595,617 7,515,214 7,464,961 7,658,250 7,739,398 7,804,988 7,864,565 7,920,265 7,964,430 7,929,287 7,786,175 8,001,003 8,092,434 8,160,221 8,220,017 8,275,613 8,323,829 8,319,892 8,132,911 8,325,592 8,436,191 8,508,546 8,570,547 8,627,176 +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 + +Heat price ($/kWh) 0.0 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 +Heat revenue ($) 0 44,996,497 45,131,990 45,173,247 45,197,641 45,214,682 45,226,269 45,214,194 45,049,420 44,914,040 45,115,602 45,165,199 45,192,427 45,210,901 45,224,130 45,222,905 45,121,967 44,876,629 45,093,800 45,155,941 45,186,698 45,206,824 45,221,360 45,226,643 45,168,777 44,884,014 45,061,160 45,145,079 45,180,350 45,202,419 45,217,645 +equals: +Capacity payment revenue ($) 0 44,996,497 45,131,990 45,173,247 45,197,641 45,214,682 45,226,269 45,214,194 45,049,420 44,914,040 45,115,602 45,165,199 45,192,427 45,210,901 45,224,130 45,222,905 45,121,967 44,876,629 45,093,800 45,155,941 45,186,698 45,206,824 45,221,360 45,226,643 45,168,777 44,884,014 45,061,160 45,145,079 45,180,350 45,202,419 45,217,645 + +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 126,414,204 +Total revenue ($) 0 52,218,672 52,449,120 52,563,485 52,649,348 52,722,798 52,786,968 52,809,811 52,564,634 52,379,001 52,773,852 52,904,597 52,997,415 53,075,466 53,144,395 53,187,335 53,051,254 52,662,804 53,094,803 53,248,375 53,346,919 53,426,841 53,496,973 53,550,472 53,488,669 53,016,925 53,386,752 53,581,270 53,688,896 53,772,966 180,259,024 + +Property tax net assessed value ($) 0 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 252,828,408 + +OPERATING EXPENSES +O&M fixed expense ($) 0 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 14,501,871 +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 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 556,222 +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 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 15,058,093 + +EBITDA ($) 0 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 + +OPERATING ACTIVITIES +EBITDA ($) 0 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 +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 11,720,433 11,596,355 11,463,593 11,321,537 11,169,537 11,006,897 10,832,872 10,646,666 10,447,425 10,234,237 10,006,126 9,762,047 9,500,883 9,221,437 8,922,431 8,602,493 8,260,160 7,893,864 7,501,927 7,082,554 6,633,825 6,153,686 5,639,936 5,090,224 4,502,032 3,872,667 3,199,246 2,478,686 1,707,687 882,717 +Cash flow from operating activities ($) 0 25,440,146 25,794,671 26,041,799 26,269,718 26,495,168 26,721,978 26,918,846 26,859,875 26,873,483 27,481,521 27,840,378 28,177,275 28,516,490 28,864,865 29,206,811 29,390,667 29,344,550 30,142,846 30,688,355 31,206,271 31,734,923 32,285,194 32,852,442 33,340,352 33,456,799 34,455,991 35,323,930 36,152,117 37,007,186 164,318,214 + +INVESTING ACTIVITIES +Total installed cost ($) -252,828,408 +Debt closing costs ($) 0 +Debt up-front fee ($) 0 +minus: +Total IBI income ($) 0 +Total CBI income ($) 0 +equals: +Purchase of property ($) -252,828,408 +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 +equals: +Cash flow from investing activities ($) -252,828,408 0 0 0 0 0 0 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 ($) 85,393,657 +Size of debt ($) 167,434,751 +minus: +Debt principal payment ($) 0 1,772,532 1,896,609 2,029,372 2,171,428 2,323,428 2,486,068 2,660,092 2,846,299 3,045,540 3,258,727 3,486,838 3,730,917 3,992,081 4,271,527 4,570,534 4,890,471 5,232,804 5,599,101 5,991,038 6,410,410 6,859,139 7,339,279 7,853,028 8,402,740 8,990,932 9,620,297 10,293,718 11,014,278 11,785,278 12,610,247 +equals: +Cash flow from financing activities ($) 252,828,408 -1,772,532 -1,896,609 -2,029,372 -2,171,428 -2,323,428 -2,486,068 -2,660,092 -2,846,299 -3,045,540 -3,258,727 -3,486,838 -3,730,917 -3,992,081 -4,271,527 -4,570,534 -4,890,471 -5,232,804 -5,599,101 -5,991,038 -6,410,410 -6,859,139 -7,339,279 -7,853,028 -8,402,740 -8,990,932 -9,620,297 -10,293,718 -11,014,278 -11,785,278 -12,610,247 + +PROJECT RETURNS +Pre-tax Cash Flow: +Cash flow from operating activities ($) 0 25,440,146 25,794,671 26,041,799 26,269,718 26,495,168 26,721,978 26,918,846 26,859,875 26,873,483 27,481,521 27,840,378 28,177,275 28,516,490 28,864,865 29,206,811 29,390,667 29,344,550 30,142,846 30,688,355 31,206,271 31,734,923 32,285,194 32,852,442 33,340,352 33,456,799 34,455,991 35,323,930 36,152,117 37,007,186 164,318,214 +Cash flow from investing activities ($) -252,828,408 0 0 0 0 0 0 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 ($) 252,828,408 -1,772,532 -1,896,609 -2,029,372 -2,171,428 -2,323,428 -2,486,068 -2,660,092 -2,846,299 -3,045,540 -3,258,727 -3,486,838 -3,730,917 -3,992,081 -4,271,527 -4,570,534 -4,890,471 -5,232,804 -5,599,101 -5,991,038 -6,410,410 -6,859,139 -7,339,279 -7,853,028 -8,402,740 -8,990,932 -9,620,297 -10,293,718 -11,014,278 -11,785,278 -12,610,247 +Total pre-tax cash flow ($) 0 23,667,614 23,898,062 24,012,428 24,098,290 24,171,741 24,235,911 24,258,754 24,013,576 23,827,943 24,222,794 24,353,539 24,446,358 24,524,408 24,593,338 24,636,277 24,500,196 24,111,746 24,543,746 24,697,318 24,795,861 24,875,784 24,945,915 24,999,414 24,937,611 24,465,867 24,835,694 25,030,212 25,137,838 25,221,909 151,707,967 + +Pre-tax Returns: +Issuance of equity ($) 85,393,657 +Total pre-tax cash flow ($) 0 23,667,614 23,898,062 24,012,428 24,098,290 24,171,741 24,235,911 24,258,754 24,013,576 23,827,943 24,222,794 24,353,539 24,446,358 24,524,408 24,593,338 24,636,277 24,500,196 24,111,746 24,543,746 24,697,318 24,795,861 24,875,784 24,945,915 24,999,414 24,937,611 24,465,867 24,835,694 25,030,212 25,137,838 25,221,909 151,707,967 +Total pre-tax returns ($) -85,393,657 23,667,614 23,898,062 24,012,428 24,098,290 24,171,741 24,235,911 24,258,754 24,013,576 23,827,943 24,222,794 24,353,539 24,446,358 24,524,408 24,593,338 24,636,277 24,500,196 24,111,746 24,543,746 24,697,318 24,795,861 24,875,784 24,945,915 24,999,414 24,937,611 24,465,867 24,835,694 25,030,212 25,137,838 25,221,909 151,707,967 + +After-tax Returns: +Total pre-tax returns ($) -85,393,657 23,667,614 23,898,062 24,012,428 24,098,290 24,171,741 24,235,911 24,258,754 24,013,576 23,827,943 24,222,794 24,353,539 24,446,358 24,524,408 24,593,338 24,636,277 24,500,196 24,111,746 24,543,746 24,697,318 24,795,861 24,875,784 24,945,915 24,999,414 24,937,611 24,465,867 24,835,694 25,030,212 25,137,838 25,221,909 151,707,967 +Federal ITC total income ($) 0 75,848,522 0 0 0 0 0 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,022,439 -3,016,590 -3,066,125 -3,111,811 -3,157,001 -3,202,464 -3,241,925 -3,230,105 -3,232,832 -3,354,710 -3,426,641 -3,494,171 -3,562,165 -3,631,995 -3,700,536 -3,737,389 -3,728,145 -3,888,160 -3,997,504 -4,101,318 -5,284,195 -6,471,406 -6,585,108 -6,682,907 -6,706,248 -6,906,531 -7,080,505 -7,246,511 -7,417,905 -32,936,764 +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 -913,073 -684,751 -695,995 -706,365 -716,623 -726,943 -735,901 -733,217 -733,837 -761,502 -777,830 -793,159 -808,593 -824,444 -840,003 -848,368 -846,270 -882,593 -907,413 -930,978 -1,199,486 -1,468,976 -1,494,786 -1,516,986 -1,522,284 -1,567,748 -1,607,239 -1,644,921 -1,683,827 -7,476,479 +Total after-tax returns ($) -85,393,657 94,580,625 20,196,722 20,250,307 20,280,115 20,298,117 20,306,504 20,280,928 20,050,254 19,861,275 20,106,581 20,149,068 20,159,028 20,153,650 20,136,898 20,095,738 19,914,438 19,537,330 19,772,993 19,792,400 19,763,565 18,392,103 17,005,533 16,919,520 16,737,719 16,237,335 16,361,415 16,342,468 16,246,406 16,120,176 111,294,724 + +After-tax net cash flow ($) -17,627,779 -38,017,831 -29,748,047 94,580,625 20,196,722 20,250,307 20,280,115 20,298,117 20,306,504 20,280,928 20,050,254 19,861,275 20,106,581 20,149,068 20,159,028 20,153,650 20,136,898 20,095,738 19,914,438 19,537,330 19,772,993 19,792,400 19,763,565 18,392,103 17,005,533 16,919,520 16,737,719 16,237,335 16,361,415 16,342,468 16,246,406 16,120,176 111,294,724 +After-tax cumulative IRR (%) NaN NaN NaN 5.61 15.42 21.94 26.15 28.90 30.72 31.96 32.80 33.38 33.79 34.09 34.30 34.46 34.57 34.65 34.71 34.76 34.79 34.81 34.83 34.84 34.85 34.85 34.86 34.86 34.86 34.87 34.87 34.87 34.87 +After-tax cumulative NPV ($) -17,627,779 -50,679,865 -73,164,276 -11,014,899 523,008 10,580,490 19,337,173 26,956,848 33,584,008 39,338,297 44,284,081 48,543,340 52,292,005 55,557,920 58,398,657 60,867,689 63,012,441 64,873,243 66,476,398 67,843,763 69,046,867 70,093,852 71,002,758 71,738,113 72,329,221 72,840,522 73,280,262 73,651,136 73,976,031 74,258,163 74,502,002 74,712,345 75,974,881 + +AFTER-TAX LCOE AND PPA PRICE +Annual costs ($) -17,627,779 -38,017,831 -29,748,047 42,361,953 -32,252,398 -32,313,178 -32,369,233 -32,424,682 -32,480,465 -32,528,883 -32,514,380 -32,517,726 -32,667,270 -32,755,529 -32,838,388 -32,921,816 -33,007,497 -33,091,597 -33,136,815 -33,125,473 -33,321,810 -33,455,975 -33,583,354 -35,034,738 -36,491,440 -36,630,952 -36,750,950 -36,779,590 -37,025,336 -37,238,802 -37,442,490 -37,652,790 57,449,903 +PPA revenue ($) 0 0 0 7,222,175 7,317,130 7,390,238 7,451,707 7,508,116 7,560,699 7,595,617 7,515,214 7,464,961 7,658,250 7,739,398 7,804,988 7,864,565 7,920,265 7,964,430 7,929,287 7,786,175 8,001,003 8,092,434 8,160,221 8,220,017 8,275,613 8,323,829 8,319,892 8,132,911 8,325,592 8,436,191 8,508,546 8,570,547 8,627,176 +Electricity to grid (kWh) 0 0 0 76,022,895 77,022,420 77,328,014 77,508,915 77,635,368 77,721,005 77,625,113 76,358,606 75,411,265 76,920,949 77,293,497 77,507,333 77,659,375 77,771,654 77,770,039 76,998,319 75,192,414 76,844,058 77,299,019 77,524,423 77,671,903 77,778,315 77,814,608 77,365,558 75,228,107 76,606,475 77,219,138 77,477,201 77,638,802 77,750,321 + +Present value of annual costs ($) 185,102,812 + +Present value of annual energy costs ($) 64,648,201 +Present value of annual energy nominal (kWh) 381,773,711 +LCOE Levelized cost of energy nominal (cents/kWh) 16.93 + +Present value of PPA revenue ($) 37,430,146 +Present value of annual energy nominal (kWh) 381,773,711 +LPPA Levelized PPA price nominal (cents/kWh) 9.80 + +Present value of annual heat costs ($) 120,454,611 +Present value of annual heat provided (MMBTU) 30,524,679 +LCOH Levelized cost of heating nominal ($/MMBTU) 3.95 + +PROJECT STATE INCOME TAXES +EBITDA ($) 0 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 +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 11,720,433 11,596,355 11,463,593 11,321,537 11,169,537 11,006,897 10,832,872 10,646,666 10,447,425 10,234,237 10,006,126 9,762,047 9,500,883 9,221,437 8,922,431 8,602,493 8,260,160 7,893,864 7,501,927 7,082,554 6,633,825 6,153,686 5,639,936 5,090,224 4,502,032 3,872,667 3,199,246 2,478,686 1,707,687 882,717 +Total state tax depreciation ($) 0 5,372,604 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 5,372,604 0 0 0 0 0 0 0 0 0 +equals: +State taxable income ($) 0 20,067,543 15,049,464 15,296,592 15,524,511 15,749,961 15,976,771 16,173,639 16,114,668 16,128,276 16,736,314 17,095,170 17,432,067 17,771,282 18,119,657 18,461,604 18,645,460 18,599,343 19,397,639 19,943,148 20,461,064 26,362,319 32,285,194 32,852,442 33,340,352 33,456,799 34,455,991 35,323,930 36,152,117 37,007,186 164,318,214 + +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 -913,073 -684,751 -695,995 -706,365 -716,623 -726,943 -735,901 -733,217 -733,837 -761,502 -777,830 -793,159 -808,593 -824,444 -840,003 -848,368 -846,270 -882,593 -907,413 -930,978 -1,199,486 -1,468,976 -1,494,786 -1,516,986 -1,522,284 -1,567,748 -1,607,239 -1,644,921 -1,683,827 -7,476,479 + +PROJECT FEDERAL INCOME TAXES +EBITDA ($) 0 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 +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 -913,073 -684,751 -695,995 -706,365 -716,623 -726,943 -735,901 -733,217 -733,837 -761,502 -777,830 -793,159 -808,593 -824,444 -840,003 -848,368 -846,270 -882,593 -907,413 -930,978 -1,199,486 -1,468,976 -1,494,786 -1,516,986 -1,522,284 -1,567,748 -1,607,239 -1,644,921 -1,683,827 -7,476,479 +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 11,720,433 11,596,355 11,463,593 11,321,537 11,169,537 11,006,897 10,832,872 10,646,666 10,447,425 10,234,237 10,006,126 9,762,047 9,500,883 9,221,437 8,922,431 8,602,493 8,260,160 7,893,864 7,501,927 7,082,554 6,633,825 6,153,686 5,639,936 5,090,224 4,502,032 3,872,667 3,199,246 2,478,686 1,707,687 882,717 +Total federal tax depreciation ($) 0 5,372,604 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 10,745,207 5,372,604 0 0 0 0 0 0 0 0 0 +equals: +Federal taxable income ($) 0 19,154,469 14,364,713 14,600,597 14,818,146 15,033,338 15,249,828 15,437,738 15,381,450 15,394,439 15,974,812 16,317,340 16,638,908 16,962,689 17,295,213 17,621,601 17,797,092 17,753,073 18,515,046 19,035,735 19,530,086 25,162,834 30,816,217 31,357,656 31,823,366 31,934,514 32,888,244 33,716,691 34,507,195 35,323,359 156,841,735 + +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,022,439 -3,016,590 -3,066,125 -3,111,811 -3,157,001 -3,202,464 -3,241,925 -3,230,105 -3,232,832 -3,354,710 -3,426,641 -3,494,171 -3,562,165 -3,631,995 -3,700,536 -3,737,389 -3,728,145 -3,888,160 -3,997,504 -4,101,318 -5,284,195 -6,471,406 -6,585,108 -6,682,907 -6,706,248 -6,906,531 -7,080,505 -7,246,511 -7,417,905 -32,936,764 + +CASH INCENTIVES +Federal IBI income ($) 0 +State IBI income ($) 0 +Utility IBI income ($) 0 +Other IBI income ($) 0 +Total IBI income ($) 0 + +Federal CBI income ($) 0 +State CBI income ($) 0 +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 + +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 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 75,848,522 0 0 0 0 0 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 75,848,522 0 0 0 0 0 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 ($) 167,434,751 165,662,219 163,765,610 161,736,238 159,564,810 157,241,383 154,755,315 152,095,223 149,248,924 146,203,384 142,944,657 139,457,818 135,726,901 131,734,820 127,463,293 122,892,759 118,002,288 112,769,484 107,170,383 101,179,346 94,768,936 87,909,797 80,570,518 72,717,490 64,314,750 55,323,818 45,703,521 35,409,803 24,395,525 12,610,247 0 +Debt interest payment ($) 0 11,720,433 11,596,355 11,463,593 11,321,537 11,169,537 11,006,897 10,832,872 10,646,666 10,447,425 10,234,237 10,006,126 9,762,047 9,500,883 9,221,437 8,922,431 8,602,493 8,260,160 7,893,864 7,501,927 7,082,554 6,633,825 6,153,686 5,639,936 5,090,224 4,502,032 3,872,667 3,199,246 2,478,686 1,707,687 882,717 +Debt principal payment ($) 0 1,772,532 1,896,609 2,029,372 2,171,428 2,323,428 2,486,068 2,660,092 2,846,299 3,045,540 3,258,727 3,486,838 3,730,917 3,992,081 4,271,527 4,570,534 4,890,471 5,232,804 5,599,101 5,991,038 6,410,410 6,859,139 7,339,279 7,853,028 8,402,740 8,990,932 9,620,297 10,293,718 11,014,278 11,785,278 12,610,247 +Debt total payment ($) 0 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 + +DSCR (DEBT FRACTION) +EBITDA ($) 0 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 +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 37,160,579 37,391,027 37,505,392 37,591,255 37,664,705 37,728,875 37,751,718 37,506,541 37,320,908 37,715,758 37,846,504 37,939,322 38,017,373 38,086,302 38,129,241 37,993,161 37,604,710 38,036,710 38,190,282 38,288,825 38,368,748 38,438,879 38,492,378 38,430,576 37,958,831 38,328,658 38,523,177 38,630,803 38,714,873 165,200,931 +Debt total payment ($) 0 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 13,492,964 +DSCR (pre-tax) 0.0 2.75 2.77 2.78 2.79 2.79 2.80 2.80 2.78 2.77 2.80 2.80 2.81 2.82 2.82 2.83 2.82 2.79 2.82 2.83 2.84 2.84 2.85 2.85 2.85 2.81 2.84 2.86 2.86 2.87 12.24 + +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 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 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 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 +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 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.txt b/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.txt new file mode 100644 index 000000000..501211723 --- /dev/null +++ b/tests/examples/example_SAM-single-owner-PPA-7e_chp-parallel.txt @@ -0,0 +1,110 @@ +# Example: SAM Single Owner PPA Economic Model: Combined Heat and Power (CHP): Cogeneration Parallel Cycle +# See documentation: https://softwareengineerprogrammer.github.io/GEOPHIRES/SAM-EM_End-Uses-and-Surface-Applications.html + +# *** ECONOMIC/FINANCIAL PARAMETERS *** +# ************************************* +Economic Model, 5, -- SAM Single Owner PPA + +Inflation Rate, .027, -- US inflation as of December 2025 + +Starting Electricity Sale Price, 0.095 +Electricity Escalation Rate Per Year, 0.00057 +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 + +Fraction of Investment in Bonds, .7 +Discount Rate, 0.12 +Inflated Bond Interest Rate, .07 + +Inflated Bond Interest Rate During Construction, 0.105 +Bond Financing Start Year, -1 + +Construction Years, 3 + +Construction CAPEX Schedule, 0.075,0.525,0.4, -- DOE-ATB hybrid scenario + +Investment Tax Credit Rate, 0.3 +Combined Income Tax Rate, .2555 +Property Tax Rate, 0.0022 + +Capital Cost for Power Plant for Electricity Generation, 1900 + +Well Drilling Cost Correlation, 3 +Well Drilling and Completion Capital Cost Adjustment Factor, 0.9, -- 2024b Geothermal ATB + +Reservoir Stimulation Capital Cost per Injection Well, 4 +Reservoir Stimulation Capital Cost per Production Well, 4 + +Field Gathering System Capital Cost Adjustment Factor, 0.35 + +# *** SURFACE & SUBSURFACE TECHNICAL PARAMETERS *** +# ************************************************* + +End-Use Option, 51, -- CHP Parallel Cycle with electricity as the main product +CHP Fraction, 0.666, -- 2/3 of geofluid flow rate going to do direct-use heat application in CHP parallel cycle +Power Plant Type, 1, -- Subcritical ORC + +Plant Lifetime, 30 + +Surface Temperature, 13 + +Number of Segments, 3 +Gradient 1, 74 +Thickness 1, 2.5 +Gradient 2, 41 +Thickness 2, 0.5 +Gradient 3, 39.1 + +Reservoir Depth, 2.68 + +Reservoir Density, 2800 +Reservoir Heat Capacity, 790 +Reservoir Thermal Conductivity, 3.05 +Reservoir Porosity, 0.0118 + +Reservoir Model, 1, -- Multiple Parallel Fractures (Gringarten) +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, 150 +Fracture Separation, 9.8255 + +Fracture Shape, 4, -- Rectangular +Fracture Width, 305 +Fracture Height, 100 + +Water Loss Fraction, 0.01 + +Ambient Temperature, 11.1728 + +Utilization Factor, .9 +Plant Outlet Pressure, 2000 psi +Circulation Pump Efficiency, 0.80 + +# *** Well Bores Parameters *** + +Number of Production Wells, 6 +Number of Injection Wells per Production Well, 0.666, -- 5-well bench pattern (3 producers : 2 injectors) + +Nonvertical Length per Multilateral Section, 5000 feet +Number of Multilateral Sections, 0, -- This parameter is set to 0 because 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. + +Production Flow Rate per Well, 100 + +Production Well Diameter, 8.535, -- Inner diameter of 9⅝ inch casing size +Injection Well Diameter, 8.535, -- See Production Well Diameter + +Production Wellhead Pressure, 303 psi + +Injectivity Index, 1.38 +Productivity Index, 1.13 + +Ramey Production Wellbore Model, True, -- Ramey's model estimates the geofluid temperature drop in production wells +Injection Temperature, 47.5 +Injection Wellbore Temperature Gain, 3 + +Maximum Drawdown, 0.0025 + +# *** SIMULATION PARAMETERS *** +# ***************************** +Maximum Temperature, 500 +Time steps per year, 12 From 80bd29e5c34324bc14af6005d46bc9ed8ba38ecf Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:00:33 -0700 Subject: [PATCH 122/127] short example descriptions (in addition to identifiers) in doc page --- ...SAM-EM_End-Uses-and-Surface-Applications.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/SAM-EM_End-Uses-and-Surface-Applications.md b/docs/SAM-EM_End-Uses-and-Surface-Applications.md index e1330079a..c1ecec944 100644 --- a/docs/SAM-EM_End-Uses-and-Surface-Applications.md +++ b/docs/SAM-EM_End-Uses-and-Surface-Applications.md @@ -12,8 +12,8 @@ including a nominal Levelized Cost of Electricity (LCOE). ### Examples: -1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA) -1. [example_SAM-single-owner-PPA-6_carbon-revenue](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue) +1. [example_SAM-single-owner-PPA](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA): 50 MWe +1. [example_SAM-single-owner-PPA-6_carbon-revenue](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-6_carbon-revenue): Electricity with Carbon Credits See [SAM Economic Models documentation](SAM-Economic-Models.html#examples) for additional electricity examples. @@ -37,7 +37,7 @@ costs were omitted. ### Examples: -1. [example_SAM-single-owner-PPA-8_heat](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-8_heat) +1. [example_SAM-single-owner-PPA-8_heat](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-8_heat): Direct-Use Heat ## Cogeneration @@ -64,11 +64,11 @@ Because the power plant sits upstream, its electricity production is governed en ### Examples: -1. [example_SAM-single-owner-PPA-7_chp](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp) -1. [example_SAM-single-owner-PPA-7b_chp-cc](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc) -1. [example_SAM-single-owner-PPA-7c](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7c) -1. [example_SAM-single-owner-PPA-7d_chp-bottoming](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-bottoming) -1. [example_SAM-single-owner-PPA-7e_chp-parallel](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-parallel) +1. [example_SAM-single-owner-PPA-7_chp](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7_chp): Combined Heat and Power (CHP): Cogeneration Topping Cycle +1. [example_SAM-single-owner-PPA-7b_chp-cc](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7b_chp-cc): Combined Heat and Power (CHP): Carbon Credits +1. [example_SAM-single-owner-PPA-7c](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7c): Combined Heat and Power (CHP): Carbon Credits with fixed Surface Plant Capital Cost +1. [example_SAM-single-owner-PPA-7d_chp-bottoming](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-bottoming): Combined Heat and Power (CHP): Cogeneration Bottoming Cycle +1. [example_SAM-single-owner-PPA-7e_chp-parallel](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-7d_chp-parallel): Combined Heat and Power (CHP): Cogeneration Parallel Cycle ## Absorption Chiller (Cooling) @@ -79,7 +79,7 @@ SAM execution. ### Examples: -1. [example_SAM-single-owner-PPA-9_cooling](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling) +1. [example_SAM-single-owner-PPA-9_cooling](https://gtp.scientificwebservices.com/geophires?geophires-example-id=example_SAM-single-owner-PPA-9_cooling): Cooling (Direct-Use Heat with Absorption Chiller Surface Application) ## Limitations From 22a777ad74fc8e1929ef40e1e2633661230f4cd1 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 14 Apr 2026 07:45:24 -0700 Subject: [PATCH 123/127] =?UTF-8?q?Bump=20version:=203.12.1=20=E2=86=92=20?= =?UTF-8?q?3.13.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- .cookiecutterrc | 2 +- README.rst | 4 ++-- docs/conf.py | 2 +- setup.py | 2 +- src/geophires_x/__init__.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index b90a7f340..96517dee2 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 3.12.1 +current_version = 3.13.0 commit = True tag = True diff --git a/.cookiecutterrc b/.cookiecutterrc index 73ee2c29d..f112082bb 100644 --- a/.cookiecutterrc +++ b/.cookiecutterrc @@ -54,7 +54,7 @@ default_context: sphinx_doctest: "no" sphinx_theme: "sphinx-py3doc-enhanced-theme" test_matrix_separate_coverage: "no" - version: 3.12.1 + version: 3.13.0 version_manager: "bump2version" website: "https://github.com/NREL" year_from: "2023" diff --git a/README.rst b/README.rst index 7acbc265f..b8bb6f833 100644 --- a/README.rst +++ b/README.rst @@ -58,9 +58,9 @@ Free software: `MIT license `__ :alt: Supported implementations :target: https://pypi.org/project/geophires-x -.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.12.1.svg +.. |commits-since| image:: https://img.shields.io/github/commits-since/softwareengineerprogrammer/GEOPHIRES-X/v3.13.0.svg :alt: Commits since latest release - :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.12.1...main + :target: https://github.com/softwareengineerprogrammer/GEOPHIRES-X/compare/v3.13.0...main .. |docs| image:: https://readthedocs.org/projects/GEOPHIRES-X/badge/?style=flat :target: https://softwareengineerprogrammer.github.io/GEOPHIRES diff --git a/docs/conf.py b/docs/conf.py index 862a6b829..8421cd100 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,7 +18,7 @@ year = '2025' author = 'NREL' copyright = f'{year}, {author}' -version = release = '3.12.1' +version = release = '3.13.0' pygments_style = 'trac' templates_path = ['./templates'] diff --git a/setup.py b/setup.py index 190b2079b..32244b0a1 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(*names, **kwargs): setup( name='geophires-x', - version='3.12.1', + version='3.13.0', license='MIT', description='GEOPHIRES is a free and open-source geothermal techno-economic simulator.', long_description='{}\n{}'.format( diff --git a/src/geophires_x/__init__.py b/src/geophires_x/__init__.py index 22b49ef42..8576e6e6a 100644 --- a/src/geophires_x/__init__.py +++ b/src/geophires_x/__init__.py @@ -1 +1 @@ -__version__ = '3.12.1' +__version__ = '3.13.0' From 6e166a892f0abb3f04b5025d7821df2bcb9ee36b Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 14 Apr 2026 07:48:15 -0700 Subject: [PATCH 124/127] v3.13 CHANGELOG entry --- CHANGELOG.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 908574e34..f70c61d7f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,11 @@ Changelog GEOPHIRES v3 (2023-2026) ------------------------ +3.13 +^^^^ + +3.13: `SAM-EM: Support all End-Use Options (Direct-Use Heat and CHP/Cogeneration) and Absorption Chiller Surface Application `__ | `release `__ | `documentation `__ + 3.12 ^^^^ From 4c22be0710f97a2e006598c56d475142ab1323e2 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:01:16 -0700 Subject: [PATCH 125/127] update FIXMEs/WIPs/TODOs --- src/geophires_x/Economics.py | 2 +- src/geophires_x/EconomicsSam.py | 5 ++--- src/geophires_x/EconomicsSamCalculations.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index eae909ac3..70c01e0f7 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -497,7 +497,7 @@ def _construction_inflation_cost_elec_heat() -> tuple[float, float]: LCOH = econ.sam_economics_calculations.lcoh_nominal.quantity().to( convertible_unit(econ.LCOH.CurrentUnits.value)).magnitude else: - # FIXME TODO probably should not happen; relevant to + # TODO probably should not happen; relevant to # https://github.com/NatLabRockies/GEOPHIRES-X/issues/452?title=Deduplicate+calls+to+calculate_pre_revenue_costs_and_cashflow pass diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 563f9bef3..6248d25e6 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -86,7 +86,7 @@ def _inv_msg(param_name: str, invalid_value: Any, supported_description: str) -> PlantType.SINGLE_FLASH, PlantType.DOUBLE_FLASH, PlantType.ABSORPTION_CHILLER, - PlantType.INDUSTRIAL, # FIXME WIP - ensure correct support including Average Reservoir Pumping Cost + PlantType.INDUSTRIAL, ] if model.surfaceplant.plant_type.value not in supported_plant_types: raise ValueError( @@ -302,7 +302,7 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: single_owner, sam_economics.sam_cash_flow_profile, model, - levelized_cost_nominal_row_name='LCOH Levelized cost of heating nominal ($/MMBTU)', # FIXME WIP unit + levelized_cost_nominal_row_name='LCOH Levelized cost of heating nominal ($/MMBTU)', ) ) @@ -312,7 +312,6 @@ def sf(_v: float, num_sig_figs: int = 5) -> float: sam_economics.sam_cash_flow_profile, model, levelized_cost_nominal_row_name='LCOC Levelized cost of cooling nominal ($/MMBTU)', - # FIXME WIP unit ) ) diff --git a/src/geophires_x/EconomicsSamCalculations.py b/src/geophires_x/EconomicsSamCalculations.py index c26d18bcb..10d714976 100644 --- a/src/geophires_x/EconomicsSamCalculations.py +++ b/src/geophires_x/EconomicsSamCalculations.py @@ -585,7 +585,7 @@ def insert_lcoc_metrics(): @property def _may_consume_grid_electricity(self) -> bool: """ - TODO/WIP maybe should be passed in explicitly instead of this potentially fragile derivation/assumption + TODO maybe should be passed in explicitly instead of this potentially fragile derivation/assumption """ try: From f2947520f8a249c9fba14301f81adc558803a6e8 Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:29:00 -0700 Subject: [PATCH 126/127] add SAM-EM CHP/heat/cooling examples to README examples list --- README.rst | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.rst b/README.rst index b8bb6f833..6c4a0a847 100644 --- a/README.rst +++ b/README.rst @@ -348,6 +348,34 @@ Example-specific web interface deeplinks are listed in the Link column. - `example_SAM-single-owner-PPA-6_carbon-revenue.txt `__ - `.out `__ - `link `__ + * - SAM Single Owner PPA: CHP + - `example_SAM-single-owner-PPA-7_chp.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: CHP with Carbon Credits + - `example_SAM-single-owner-PPA-7b_chp-cc.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: CHP with Surface Plant Capital Cost + - `example_SAM-single-owner-PPA-7c.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: CHP: Bottoming Cycle + - `example_SAM-single-owner-PPA-7d_chp-bottoming.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: CHP: Parallel Cycle + - `example_SAM-single-owner-PPA-7e_chp-parallel.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: Direct-Use Heat + - `example_SAM-single-owner-PPA-8_heat.txt `__ + - `.out `__ + - `link `__ + * - SAM Single Owner PPA: Cooling + - `example_SAM-single-owner-PPA-9_cooling.txt `__ + - `.out `__ + - `link `__ .. raw:: html From d88cc070fd694f4900ffc4cba4328d7ed267425a Mon Sep 17 00:00:00 2001 From: softwareengineerprogrammer <4056124+softwareengineerprogrammer@users.noreply.github.com> Date: Tue, 14 Apr 2026 08:56:22 -0700 Subject: [PATCH 127/127] remove commented code --- src/geophires_x/Economics.py | 1 - src/geophires_x/EconomicsSam.py | 5 ----- tests/geophires_x_tests/test_economics_sam.py | 3 --- 3 files changed, 9 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 70c01e0f7..53a8851d9 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -1889,7 +1889,6 @@ def __init__(self, model: Model): # local variable initialization self.OPEX_cost_electricity_plant = 0.0 # TODO should be proper output parameter self.OPEX_cost_heat_plant = 0.0 # TODO should be proper output parameter - # self.CAPEX_heat_electricity_plant_ratio.value = 0.0 self.Claborcorrelation = 0.0 self.Cpumps = 0.0 self.annualelectricityincome = 0.0 diff --git a/src/geophires_x/EconomicsSam.py b/src/geophires_x/EconomicsSam.py index 6248d25e6..90fb057cd 100644 --- a/src/geophires_x/EconomicsSam.py +++ b/src/geophires_x/EconomicsSam.py @@ -337,8 +337,6 @@ def _get_lcoe_nominal_cents_per_kwh( lcoe_row_name = 'LCOE Levelized cost of energy nominal (cents/kWh)' ret = _cash_flow_profile_row(sam_cash_flow_profile, lcoe_row_name)[0] - # model.logger.info(f'Single Owner LCOE nominal (cents/kWh): {single_owner.Outputs.lcoe_nom}'); - return ret @@ -356,8 +354,6 @@ def _get_levelized_cost_non_electricity_type_nominal_usd_per_mmbtu( ret = levelized_cost_row[0] - # model.logger.info(f'Single Owner LCOE nominal (cents/kWh): {single_owner.Outputs.lcoe_nom}'); - return ret @@ -603,7 +599,6 @@ def _get_utility_rate_parameters(m: Model) -> dict[str, Any]: ret['degradation'] = degradation_total else: # Occurs for non-electricity end-use options - # net_kwh_produced_series = [net_kwh_produced_series] * m.surfaceplant.plant_lifetime.value ret['degradation'] = [100.0] * m.surfaceplant.plant_lifetime.value return ret diff --git a/tests/geophires_x_tests/test_economics_sam.py b/tests/geophires_x_tests/test_economics_sam.py index be5638ac7..b01ad00bd 100644 --- a/tests/geophires_x_tests/test_economics_sam.py +++ b/tests/geophires_x_tests/test_economics_sam.py @@ -307,9 +307,6 @@ def r_0(r): )[1:] def test_direct_use_heat_end_use_supported(self): - # import warnings - # warnings.filterwarnings('error', message='divide by zero', category=RuntimeWarning) - self.assertIsNotNone(self._get_result({'End-Use Option': 2})) def test_supported_plant_types(self):