Skip to content

SAM single owner PPA economic model [v3.9] #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 128 commits into
base: main
Choose a base branch
from

Conversation

softwareengineerprogrammer
Copy link
Owner

@softwareengineerprogrammer softwareengineerprogrammer commented Apr 10, 2025

Description

Adds EconomicModel.SAM_SINGLE_OWNER_PPA to use SAM Single Owner PPA model for:

  1. Economic Parameters:
    1. LCOE (nominal)
    2. NPV
    3. IRR
  2. SAM Cash Flow Profile instead of Revenue & Cashflow Profile
    1. Case report: SAM CASH FLOW PROFILE: image
    2. Web interface: image

Relevant to top customer feature request to standardize specific costs: NREL#311

Requirements

SAM cash flow table must:

  1. Match SAM cash flow table exactly (or nearly so). Deviations:
    1. Header row: "Year X" instead of "X"
    2. Missing rows: Total construction financing cost ($) and Other financing cost ($)
  2. Be human-readable in the case report file
  3. Be parseable by the client (retain relevant identities)
  4. Be copy-pastable into spreadsheet software: image

Testing & Verification

  1. example_SAM-single-owner-PPA
  2. EconomicsSamTestCase
  3. SAM Cash Flow Profile parsing test
  4. Manual cross-checking with SAM GUI: image

TODO

  1. break out capex indirect costs - created Parameterize indirect cost factor NREL/GEOPHIRES-X#383
  2. Right-justify numbers like SAM & spreadsheet software
  3. CSV
  4. Gross Revenue Tax Rate (unclear if this maps to SAM)
  5. Inflated equity interest rate (may not have equivalent in SAM?) https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/69/files#diff-d30db77f0b9935ff4e2e3b4cf58e36685bbb84b494f5ced0aad96833c4bf1a6aR191
  6. Model pumping power as system losses so that nominal nameplate capacity is nominally (yes, nominally) more accurate
  7. Development/internal documentation of geophires_sam_economics - how it was/should be used to generate/update metadata/config
  8. List new example in README

Done

  1. Ambiguous mapping output TODO https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/69/files#diff-34a61b08c97924dc1b6c7b6fbfb9a1f3fb5815b71cd3138e227d9d3c33699432R75-R77: f1c969a
  2. inflation rate during construction: df2c9b4
  3. capacity/utilization factor: 4de04d4
  4. Pass GEOPHIRES pricing model to PPA pricing instead of using conversion heuristic: https://github.com/softwareengineerprogrammer/GEOPHIRES/pull/69/files#diff-d30db77f0b9935ff4e2e3b4cf58e36685bbb84b494f5ced0aad96833c4bf1a6aR171-R179: 1a32631
  5. PTC: 806d688
  6. Project lifetime: 80299df
  7. Unsupported economic parameters: VIR, MOIC, Project Payback Period: not calculated/output for now: 262cf19
  8. Pass entire generation profile to SAM (code FIXME)
    1. Immediate solution blocked by Multi-year custom generation profile? NREL/SAM#2069 / Add lifetime simulation to windpower NREL/ssc#1300
    2. May be possible to workaround by using Geothermal module instead of CustomGeneration
    3. Successful workaround using AC Degradation schedule: ae3be09#diff-d30db77f0b9935ff4e2e3b4cf58e36685bbb84b494f5ced0aad96833c4bf1a6aR132-R135
  9. Generation profile apparent discrepancy 1d1cef5: bdcda6e (includes follow-up TODO re: further investigation into 'average' discrepancy)
  10. Redrilling drawdown/costs audit
    1. Addressed by ae3be09#diff-d30db77f0b9935ff4e2e3b4cf58e36685bbb84b494f5ced0aad96833c4bf1a6a
    2. Created Redrilling costs should be incurred in redrilling year(s) instead of spread evenly across opex over project lifetime NREL/GEOPHIRES-X#381
  11. Documentation term interest/debt percent typo: 0956487
  12. Documentation 4d27614: image
  13. Incentives (IBI): impl / test
  14. Move PySAM docs HTML to separate module: 3837337

…u are using the generic plant to represent a system that does not consume fuel, you should change the heat rate value to zero.'
…of a few incidental nits discovered in the course of implementation
…ffect on results so presumably SAM was handling this under the hood by merging parameters across modules at some point...)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant