Skip to content

Commit

Permalink
Add estimated property tax revenue and royalties NREL#169 (adapted from
Browse files Browse the repository at this point in the history
  • Loading branch information
softwareengineerprogrammer committed Jun 27, 2024
1 parent a64aaae commit f1e9086
Show file tree
Hide file tree
Showing 18 changed files with 193 additions and 59 deletions.
75 changes: 73 additions & 2 deletions src/geophires_x/Economics.py
Original file line number Diff line number Diff line change
Expand Up @@ -1502,7 +1502,46 @@ def __init__(self, model: Model):
DefaultValue=2.13,
UnitType=Units.NONE,
Required=False,
ToolTipText="Estimated jobs created per MW of electricity produced, per https://geothermal.org/resources/geothermal-basics"
ToolTipText="Estimated jobs created per MW of electricity produced, "
"per https://geothermal.org/resources/geothermal-basics"
)

self.property_tax_per_MW_electricity = self.ParameterDict[
self.property_tax_per_MW_electricity.Name] = floatParameter(
"Estimated Property Tax per MW of Electricity Produced",
DefaultValue=0.210,
UnitType=Units.CURRENCY,
#UnitType=Units.ROYALTY_PER_ENERGY,
# PreferredUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
# CurrentUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
Required=False,
ToolTipText="Estimated property tax per MW of electricity produced, "
"per https://geothermal.org/resources/geothermal-basics"
)

self.gov_royalty_per_MW_electricity = self.ParameterDict[
self.gov_royalty_per_MW_electricity.Name] = floatParameter(
"Estimated Governmental Royalty per MW of Electricity Produced (MUSD/MW)",
DefaultValue=0.315,
UnitType=Units.CURRENCY,
# UnitType=Units.ROYALTY_PER_ENERGY,
# PreferredUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
# CurrentUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
Required=False,
ToolTipText="Estimated governmental royalties per MW of electricity produced, "
"per https://geothermal.org/resources/geothermal-basics"
)

self.total_royalty_per_MW_electricity = self.ParameterDict[
self.total_royalty_per_MW_electricity.Name] = floatParameter(
"Estimated Royalties per MW of Electricity Produced (MUSD/MW)",
DefaultValue=0.420,
# UnitType=Units.ROYALTY_PER_ENERGY,
# PreferredUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
# CurrentUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW,
Required=False,
ToolTipText="Estimated total royalties per MW of electricity produced, "
"per https://geothermal.org/resources/geothermal-basics"
)

# local variable initialization
Expand Down Expand Up @@ -1814,11 +1853,31 @@ def __init__(self, model: Model):
PreferredUnits=CurrencyUnit.MDOLLARS,
CurrentUnits=CurrencyUnit.MDOLLARS
)

self.jobs_created = self.OutputParameterDict[self.jobs_created.Name] = OutputParameter(
Name="Estimated Jobs Created",
UnitType=Units.NONE,
)

self.property_tax_revenue = self.OutputParameterDict[self.property_tax_revenue.Name] = OutputParameter(
Name="Estimated Lifetime Property Tax Revenue",
UnitType=Units.CURRENCY,
CurrentUnits=CurrencyUnit.MDOLLARS,
PreferredUnits=CurrencyUnit.MDOLLARS
)
self.royalties_total = self.OutputParameterDict[self.royalties_total.Name] = OutputParameter(
Name="Estimated Lifetime Total Royalties",
UnitType=Units.CURRENCY,
CurrentUnits=CurrencyUnit.MDOLLARS,
PreferredUnits=CurrencyUnit.MDOLLARS
)
self.royalties_governmental = self.OutputParameterDict[self.royalties_governmental.Name] = OutputParameter(
Name="Estimated Lifetime Governmental Royalties",
UnitType=Units.CURRENCY,
CurrentUnits=CurrencyUnit.MDOLLARS,
PreferredUnits=CurrencyUnit.MDOLLARS
)

model.logger.info(f'Complete {__class__!s}: {sys._getframe().f_code.co_name}')

def read_parameters(self, model: Model) -> None:
Expand Down Expand Up @@ -2850,11 +2909,23 @@ def Calculate(self, model: Model) -> None:
# Calculate LCOE/LCOH
self.LCOE.value, self.LCOH.value, self.LCOC.value = CalculateLCOELCOHLCOC(self, model)

# https://github.com/NREL/GEOPHIRES-X/issues/232
# Jobs/property tax/royalties - https://github.com/NREL/GEOPHIRES-X/issues/232
self.jobs_created.value = round(
np.average(model.surfaceplant.ElectricityProduced.quantity().to(
'MW').magnitude * self.jobs_created_per_MW_electricity.value))

self.property_tax_revenue.value = (
np.average(model.surfaceplant.ElectricityProduced.quantity().to(
'MW').magnitude * self.property_tax_per_MW_electricity.value))

self.royalties_total.value = (
np.average(model.surfaceplant.ElectricityProduced.quantity().to(
'MW').magnitude * self.total_royalty_per_MW_electricity.value))

self.royalties_governmental.value = (
np.average(model.surfaceplant.ElectricityProduced.quantity().to(
'MW').magnitude * self.gov_royalty_per_MW_electricity.value))

model.logger.info(f'complete {__class__!s}: {sys._getframe().f_code.co_name}')

def __str__(self):
Expand Down
17 changes: 16 additions & 1 deletion src/geophires_x/Outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -1641,7 +1641,22 @@ def PrintOutputs(self, model: Model):
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 in [EndUseOptions.ELECTRICITY]:
f.write(f' Estimated Jobs Created: {model.economics.jobs_created.value}\n')
f.write(
f' {model.economics.jobs_created.Name}: '
f'{model.economics.jobs_created.value}\n'
)
f.write(
f' {model.economics.property_tax_revenue.Name}: '
f'{model.economics.property_tax_revenue.value:10.2f} {model.economics.property_tax_revenue.CurrentUnits.value}\n'
)
f.write(
f' {model.economics.royalties_total.Name}: '
f'{model.economics.royalties_total.value:10.2f} {model.economics.royalties_total.CurrentUnits.value}\n'
)
f.write(
f' {model.economics.royalties_governmental.Name}: '
f'{model.economics.royalties_governmental.value:10.2f} {model.economics.royalties_governmental.CurrentUnits.value}\n'
)


f.write(NL)
Expand Down
3 changes: 3 additions & 0 deletions src/geophires_x_client/geophires_x_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ class GeophiresXResult:
'Project Payback Period',
'CHP: Percent cost allocation for electrical plant',
'Estimated Jobs Created',
'Estimated Lifetime Property Tax Revenue',
'Estimated Lifetime Total Royalties',
'Estimated Lifetime Governmental Royalties',
],
'EXTENDED ECONOMICS': [
'Adjusted Project LCOE (after incentives, grants, AddOns,etc)',
Expand Down
5 changes: 4 additions & 1 deletion tests/example1_addons.csv
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ ECONOMIC PARAMETERS,Project MOIC,,36.27,
ECONOMIC PARAMETERS,Fixed Charge Rate (FCR),,5.0,
ECONOMIC PARAMETERS,Project Payback Period,,7.05,yr
ECONOMIC PARAMETERS,Estimated Jobs Created,,12,
ECONOMIC PARAMETERS,Estimated Lifetime Property Tax Revenue,,1.17,MUSD
ECONOMIC PARAMETERS,Estimated Lifetime Total Royalties,,2.35,MUSD
ECONOMIC PARAMETERS,Estimated Lifetime Governmental Royalties,,1.76,MUSD
EXTENDED ECONOMICS,"Adjusted Project LCOE (after incentives\, grants\, AddOns\,etc)",,1.74,cents/kWh
EXTENDED ECONOMICS,"Adjusted Project LCOH (after incentives\, grants\, AddOns\,etc)",,0.0,USD/MMBTU
EXTENDED ECONOMICS,"Adjusted Project CAPEX (after incentives\, grants\, AddOns\, etc)",,101.07,MUSD
Expand Down Expand Up @@ -97,7 +100,7 @@ SURFACE EQUIPMENT SIMULATION RESULTS,Average Annual Total Electricity Generation
SURFACE EQUIPMENT SIMULATION RESULTS,Average Annual Net Electricity Generation,,42.3,GWh
SURFACE EQUIPMENT SIMULATION RESULTS,Average Pumping Power,,0.2,MW
SURFACE EQUIPMENT SIMULATION RESULTS,Initial pumping power/net installed power,,3.82,%
Simulation Metadata,GEOPHIRES Version,,3.4.34,
Simulation Metadata,GEOPHIRES Version,,3.4.40,
POWER GENERATION PROFILE,THERMAL DRAWDOWN,1,1.0,
POWER GENERATION PROFILE,THERMAL DRAWDOWN,2,1.0056,
POWER GENERATION PROFILE,THERMAL DRAWDOWN,3,1.0073,
Expand Down
11 changes: 7 additions & 4 deletions tests/examples/Fervo_Norbeck_Latimer_2023.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:42
Calculation Time: 0.336 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:22
Calculation Time: 0.340 sec

***SUMMARY OF RESULTS***

Expand All @@ -33,6 +33,9 @@ Simulation Metadata
Project MOIC: -0.10
Project Payback Period: N/A
Estimated Jobs Created: 7
Estimated Lifetime Property Tax Revenue: 0.69 MUSD
Estimated Lifetime Total Royalties: 1.38 MUSD
Estimated Lifetime Governmental Royalties: 1.03 MUSD

***ENGINEERING PARAMETERS***

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:42
Calculation Time: 1.614 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:22
Calculation Time: 1.623 sec

***SUMMARY OF RESULTS***

Expand All @@ -33,6 +33,9 @@ Simulation Metadata
Project MOIC: -0.85
Project Payback Period: N/A
Estimated Jobs Created: 2
Estimated Lifetime Property Tax Revenue: 0.23 MUSD
Estimated Lifetime Total Royalties: 0.46 MUSD
Estimated Lifetime Governmental Royalties: 0.35 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example1.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:42
Calculation Time: 0.609 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:26
Calculation Time: 0.597 sec

***SUMMARY OF RESULTS***

Expand All @@ -34,6 +34,9 @@ Simulation Metadata
Project MOIC: -0.27
Project Payback Period: N/A
Estimated Jobs Created: 12
Estimated Lifetime Property Tax Revenue: 1.17 MUSD
Estimated Lifetime Total Royalties: 2.35 MUSD
Estimated Lifetime Governmental Royalties: 1.76 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example1_addons.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
Calculation Time: 0.594 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:20
Calculation Time: 0.609 sec

***SUMMARY OF RESULTS***

Expand Down Expand Up @@ -35,6 +35,9 @@ Simulation Metadata
Project MOIC: 36.27
Project Payback Period: 7.05 yr
Estimated Jobs Created: 12
Estimated Lifetime Property Tax Revenue: 1.17 MUSD
Estimated Lifetime Total Royalties: 2.35 MUSD
Estimated Lifetime Governmental Royalties: 1.76 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example1_outputunits.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
Calculation Time: 0.587 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:21
Calculation Time: 0.593 sec

***SUMMARY OF RESULTS***

Expand All @@ -34,6 +34,9 @@ Simulation Metadata
Project MOIC: -0.20
Project Payback Period: N/A
Estimated Jobs Created: 12
Estimated Lifetime Property Tax Revenue: 1.17 MUSD
Estimated Lifetime Total Royalties: 2.35 MUSD
Estimated Lifetime Governmental Royalties: 1.76 MUSD

***ENGINEERING PARAMETERS***

Expand Down
9 changes: 6 additions & 3 deletions tests/examples/example4.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:26
Calculation Time: 0.049 sec

***SUMMARY OF RESULTS***
Expand All @@ -33,6 +33,9 @@ Simulation Metadata
Project MOIC: -0.17
Project Payback Period: N/A
Estimated Jobs Created: 18
Estimated Lifetime Property Tax Revenue: 1.75 MUSD
Estimated Lifetime Total Royalties: 3.49 MUSD
Estimated Lifetime Governmental Royalties: 2.62 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example9.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
Calculation Time: 0.591 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:21
Calculation Time: 0.607 sec

***SUMMARY OF RESULTS***

Expand All @@ -34,6 +34,9 @@ Simulation Metadata
Project MOIC: -0.86
Project Payback Period: N/A
Estimated Jobs Created: 1
Estimated Lifetime Property Tax Revenue: 0.11 MUSD
Estimated Lifetime Total Royalties: 0.23 MUSD
Estimated Lifetime Governmental Royalties: 0.17 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example_ITC.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
Calculation Time: 0.596 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:21
Calculation Time: 0.612 sec

***SUMMARY OF RESULTS***

Expand All @@ -33,6 +33,9 @@ Simulation Metadata
Project MOIC: 0.61
Project Payback Period: 12.74 yr
Estimated Jobs Created: 41
Estimated Lifetime Property Tax Revenue: 4.09 MUSD
Estimated Lifetime Total Royalties: 8.18 MUSD
Estimated Lifetime Governmental Royalties: 6.14 MUSD

***ENGINEERING PARAMETERS***

Expand Down
11 changes: 7 additions & 4 deletions tests/examples/example_PTC.out
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

Simulation Metadata
----------------------
GEOPHIRES Version: 3.4.34
Simulation Date: 2024-06-19
Simulation Time: 07:43
Calculation Time: 0.593 sec
GEOPHIRES Version: 3.4.40
Simulation Date: 2024-06-27
Simulation Time: 08:21
Calculation Time: 0.606 sec

***SUMMARY OF RESULTS***

Expand All @@ -33,6 +33,9 @@ Simulation Metadata
Project MOIC: 0.55
Project Payback Period: 10.02 yr
Estimated Jobs Created: 41
Estimated Lifetime Property Tax Revenue: 4.09 MUSD
Estimated Lifetime Total Royalties: 8.18 MUSD
Estimated Lifetime Governmental Royalties: 6.14 MUSD

***ENGINEERING PARAMETERS***

Expand Down
Loading

0 comments on commit f1e9086

Please sign in to comment.