Skip to content

Commit 4cac77b

Browse files
move logic to Economics.get_royalty_rate_schedule
1 parent fdddcd9 commit 4cac77b

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

src/geophires_x/Economics.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3214,6 +3214,28 @@ def build_price_models(self, model: Model) -> None:
32143214
self.CarbonEscalationStart.value, self.CarbonEscalationRate.value,
32153215
self.PTCCarbonPrice)
32163216

3217+
def get_royalty_rate_schedule(self, model: Model) -> list[float]:
3218+
"""
3219+
Builds a year-by-year schedule of royalty rates based on escalation and cap.
3220+
3221+
:type model: :class:`~geophires_x.Model.Model`
3222+
:return: schedule: A list of rates as fractions (e.g., 0.05 for 5%).
3223+
"""
3224+
3225+
plant_lifetime = model.surfaceplant.plant_lifetime.value
3226+
3227+
escalation_rate = self.royalty_escalation_rate.value
3228+
max_rate = self.maximum_royalty_rate.value
3229+
3230+
schedule = []
3231+
current_rate = self.royalty_rate.value
3232+
for _ in range(plant_lifetime):
3233+
schedule.append(min(current_rate, max_rate))
3234+
current_rate += escalation_rate
3235+
3236+
return schedule
3237+
3238+
32173239
def calculate_cashflow(self, model: Model) -> None:
32183240
"""
32193241
Calculate cashflow and cumulative cash flow

src/geophires_x/EconomicsSam.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -481,24 +481,7 @@ def _ppa_pricing_model(
481481

482482

483483
def _get_royalty_rate_schedule(model: Model) -> list[float]:
484-
"""
485-
Builds a year-by-year schedule of royalty rates based on escalation and cap.
486-
Returns a list of rates as fractions (e.g., 0.05 for 5%).
487-
"""
488-
489-
econ = model.economics
490-
plant_lifetime = model.surfaceplant.plant_lifetime.value
491-
492-
escalation_rate = econ.royalty_escalation_rate.value
493-
max_rate = econ.maximum_royalty_rate.value
494-
495-
schedule = []
496-
current_rate = econ.royalty_rate.value
497-
for _ in range(plant_lifetime):
498-
schedule.append(min(current_rate, max_rate))
499-
current_rate += escalation_rate
500-
501-
return schedule
484+
return model.economics.get_royalty_rate_schedule(model)
502485

503486

504487
def _get_max_total_generation_kW(model: Model) -> float:

0 commit comments

Comments
 (0)