Skip to content

Royalty Rate Schedule & Royalty Supplemental Payments#139

Open
softwareengineerprogrammer wants to merge 12 commits intomainfrom
royalty-schedules-3
Open

Royalty Rate Schedule & Royalty Supplemental Payments#139
softwareengineerprogrammer wants to merge 12 commits intomainfrom
royalty-schedules-3

Conversation

@softwareengineerprogrammer
Copy link
Owner

@softwareengineerprogrammer softwareengineerprogrammer commented Feb 27, 2026

Description

  1. Implements Custom royalty schedules NatLabRockies/GEOPHIRES-X#466

TODO

  1. 🚧 Support Royalty Supplemental Payments
    1. 🚧 During Construction in EconomicsSamPreRevenue.py: b7adc72
      1. Cash flow line item: Royalty supplemental payments [construction] ($)
      2. Include construction years supplementary payments in capital costs results: b590d1f
    2. 🚧 During Operations: 898f8df, 898f8df
      1. Cash flow line item: Deferred to new tracking issue: SAM-EM OPEX Line Items NatLabRockies/GEOPHIRES-X#469
      2. 🚧 Include in result OPEX: 898f8df
        1. Average Annual Royalty Cost (excludes supplementary payments during construction years): a258dea
    3. Update Royalty Holder economics - should include supplementary payments during construction years: a258dea
  2. 🚧 Validate mutually exclusive royalties params (schedule vs. rate-based). (Potential follow-up: maybe rate escalation could be applied to terminal schedule value in the future...)
  3. Consolidate '*' param read matching logic
  4. Unit test that extracts rate-based royalties from cash flow, re-runs as schedule, and verifies results are identical: https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/139/changes#diff-894b10b737d88bd3c08bc3eaf69146781055586f575a582c09b5911feb891b38R1078-R1116
  5. Add unit test for Royalty Supplemental Payments without production-based royalties: 17f29bb
  6. Documentation updates
    1. tooltip texts - clarification of production-based vs. supplemental royalty payments (some marked TODO in diff)
    2. SAM Economic Models Royalties documentation
    3. <other TODOs marked in diff>

Testing & Verification

  1. Unit tests added:
    1. test_expand_schedule
    2. test_royalty_supplemental_payments
    3. example_SAM-single-owner-PPA-4b
  2. Unit tests updated:
    1. test_royalty_rate_schedule
  3. Manual testing: Describe any additional manual testing steps that were performed, such as running the change on a pre-existing data set you own.

Change Checklist:

Observe the following checklist items if your change includes a new version (see versioning notes and version management docs).

Before merging:

  1. Add a CHANGELOG entry (example). RST Template:
M.m.P: `TITLE <https://github.com/NREL/GEOPHIRES-X/pull/PR-NUMBER>`__ | `release <https://github.com/NREL/GEOPHIRES-X/releases/tag/vM.m.P>`__

After merging:

  1. Push tag(s) to GitHub: git push origin refs/tags/vM.m.P
  2. Post a change announcement to the GEOPHIRES Change Announcements Discussion (example). Markdown template:
M.m.p: [TITLE](https://github.com/NREL/GEOPHIRES-X/pull/PR-NUMBER) | [release](https://github.com/NREL/GEOPHIRES-X/releases/tag/vM.m.P)

Self-reviewed in #139

@softwareengineerprogrammer softwareengineerprogrammer changed the title Royalty Rate Schedule Royalty Rate Schedule & Supplementary Royalty Payments Feb 27, 2026
@softwareengineerprogrammer softwareengineerprogrammer changed the title Royalty Rate Schedule & Supplementary Royalty Payments Royalty Rate Schedule & Royalty Supplemental Payments Feb 27, 2026
…h flow order and prepare to include royalty supplementary payments between inflation and interest (note that only example_SAM-single-owner-PPA-4b is regenerated in this commit and other SAM examples .out files ordering will be affected when they are regenerated)
…lder revenue is now lower because construction years are included
if is_boolean_type:
if _is_bool_val(New_val):
continue
msg = f'Value given ({str(New_val)}) for {ParamToModify.Name} is not boolean.'
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might incidentally resolve outstanding issue re: arbitrary string bools


Royalty Holder NPV: 50.59 MUSD
Royalty Holder Average Annual Revenue: 4.40 MUSD/yr
Royalty Holder Average Annual Revenue: 4.19 MUSD/yr
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO check that tooltip text reflects period this is calculated for (construction +Ops)

@@ -1,4 +1,4 @@
# Example: SAM Single Owner PPA Economic Model: 50 MWe with Royalties
# Example: SAM Single Owner PPA Economic Model: 50 MWe with Royalties
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove extraneously added space

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant