Skip to content

Commit

Permalink
Added new estimate from GR website
Browse files Browse the repository at this point in the history
  • Loading branch information
malcolm-dsider committed Jun 26, 2024
1 parent ca41b18 commit 551707f
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 3 deletions.
74 changes: 72 additions & 2 deletions src/geophires_x/Economics.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}')
Expand Down Expand Up @@ -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):
Expand Down
6 changes: 5 additions & 1 deletion src/geophires_x/Outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
19 changes: 19 additions & 0 deletions src/geophires_x/Units.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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"

0 comments on commit 551707f

Please sign in to comment.