From 551707f0dbace385b1f0d142a8420c0739963405 Mon Sep 17 00:00:00 2001 From: Malcolm Ross Date: Wed, 26 Jun 2024 14:05:04 -0500 Subject: [PATCH] Added new estimate from GR website --- src/geophires_x/Economics.py | 74 +++++++++++++++++++++++++++++++++++- src/geophires_x/Outputs.py | 6 ++- src/geophires_x/Units.py | 19 +++++++++ 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/src/geophires_x/Economics.py b/src/geophires_x/Economics.py index 343c4672..221b0aad 100644 --- a/src/geophires_x/Economics.py +++ b/src/geophires_x/Economics.py @@ -1497,11 +1497,46 @@ def __init__(self, model: Model): self.jobs_created_per_MW_electricity.Name] = floatParameter( "Estimated Jobs Created per MW of Electricity Produced", DefaultValue=2.13, - UnitType=Units.NONE, + UnitType=Units.JOBS_PER_ENERGY, + PreferredUnits=JobsPerEnergyUnit.JOBSPERMW, + CurrentUnits=JobsPerEnergyUnit.JOBSPERMW, Required=False, 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.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", + DefaultValue=0.315, + UnitType=Units.ROYALTY_PER_ENERGY, + PreferredUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW, + CurrentUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW, + Required=False, + ToolTipText="Estimated Estimated Governmental Royalty 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 Jobs Created per MW of Electricity Produced", + DefaultValue=0.420, + UnitType=Units.ROYALTY_PER_ENERGY, + PreferredUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW, + CurrentUnits=RoyaltyPerEnergyUnit.ROYALTYPERMW, + Required=False, + ToolTipText="Estimated total royalty per MW of electricity produced, per https://geothermal.org/resources/geothermal-basics" + ) + # local variable initialization self.CAPEX_cost_electricity_plant = 0.0 self.CAPEX_cost_heat_plant = 0.0 @@ -1813,7 +1848,27 @@ def __init__(self, model: Model): ) self.jobs_created = self.OutputParameterDict[self.jobs_created.Name] = OutputParameter( Name="Estimated Jobs Created", - UnitType=Units.NONE, + UnitType=Units.JOBS, + CurrentUnits=JobsUnit.JOBS, + PreferredUnits=JobsUnit.JOBS + ) + self.property_tax_created = self.OutputParameterDict[self.property_tax_created.Name] = OutputParameter( + Name="Estimated amount of property tax that will be paid", + UnitType=Units.CURRENCY, + CurrentUnits=CurrencyUnit.MDOLLARS, + PreferredUnits=CurrencyUnit.MDOLLARS + ) + self.total_royalties_created = self.OutputParameterDict[self.total_royalties_created.Name] = OutputParameter( + Name="Estimated total royalties that will have to be paid", + UnitType=Units.CURRENCY, + CurrentUnits=CurrencyUnit.MDOLLARS, + PreferredUnits=CurrencyUnit.MDOLLARS + ) + self.gov_royalties_created = self.OutputParameterDict[self.gov_royalties_created.Name] = OutputParameter( + Name="Estimated governmental royalties to be paid", + UnitType=Units.CURRENCY, + CurrentUnits=CurrencyUnit.MDOLLARS, + PreferredUnits=CurrencyUnit.MDOLLARS ) model.logger.info(f'Complete {__class__!s}: {sys._getframe().f_code.co_name}') @@ -2892,6 +2947,21 @@ def Calculate(self, model: Model) -> None: np.average(model.surfaceplant.ElectricityProduced.quantity().to( 'MW').magnitude * self.jobs_created_per_MW_electricity.value)) + # https://github.com/NREL/GEOPHIRES-X/issues/232 + self.property_tax_created.value = ( + np.average(model.surfaceplant.ElectricityProduced.quantity().to( + 'MW').magnitude * self.property_tax_per_MW_electricity.value)) + + # https://github.com/NREL/GEOPHIRES-X/issues/232 + self.total_royalties_created.value = ( + np.average(model.surfaceplant.ElectricityProduced.quantity().to( + 'MW').magnitude * self.total_royalty_per_MW_electricity.value)) + + # https://github.com/NREL/GEOPHIRES-X/issues/232 + self.gov_royalties_created.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): diff --git a/src/geophires_x/Outputs.py b/src/geophires_x/Outputs.py index adbeec34..d8751fd2 100644 --- a/src/geophires_x/Outputs.py +++ b/src/geophires_x/Outputs.py @@ -1641,7 +1641,11 @@ 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' Estimates from https://geothermal.org/resources/geothermal-basics:' + NL) + f.write(f' Estimated Jobs Created: {model.economics.jobs_created.value}' + NL) + f.write(f' Estimated Proporty tax that will be paid: {model.economics.property_tax_created.value:10.2f }' + model.economics.property_tax_created.PreferredUnits.value + NL) + f.write(f' Estimated total royalties that will be paid: {model.economics.total_royalties_created.value:10.2f }' + model.economics.total_royalties_created.PreferredUnits.value + NL) + f.write(f' Estimated government royalties to be paid: {model.economics.gov_royalties_created.value:10.2f }' + model.economics.gov_royalties_created.PreferredUnits.value+ NL) f.write(NL) diff --git a/src/geophires_x/Units.py b/src/geophires_x/Units.py index b6d60561..8a344e39 100644 --- a/src/geophires_x/Units.py +++ b/src/geophires_x/Units.py @@ -60,6 +60,9 @@ class Units(IntEnum): POWERPERUNITVOLUME = auto() DECAY_RATE=auto() INFLATION_RATE=auto() + JOBS_PER_ENERGY=auto() + ROYALTY_PER_ENERGY=auto() + JOBS = auto() class TemperatureUnit(str, Enum): @@ -350,3 +353,19 @@ class Decay_RateUnit(str,Enum): class Inflation_RateUnit(str,Enum): """Decay rate Units""" KPASCALPERYEAR = "kPa/yr" + + +class JobsPerEnergyUnit(str,Enum): + """Jobs per energy Units""" + JOBSPERKW = "jobs/kW" + JOBSPERMW = "jobs/MW" + JOBSPERGW = "jobs/GW" + +class RoyaltyPerEnergyUnit(str,Enum): + """Royalty per energy Units""" + ROYALTYPERMW = "MUSD/MW" + ROYALTYPERKW = "MUSD/kW" + +class JobsUnit(str,Enum): + """Jobs Units""" + JOBS = "jobs"