Skip to content
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

Fix proforma for thermal techs #434

Merged
merged 31 commits into from
Sep 23, 2024
Merged

Fix proforma for thermal techs #434

merged 31 commits into from
Sep 23, 2024

Conversation

Bill-Becker
Copy link
Collaborator

@Bill-Becker Bill-Becker commented Aug 13, 2024

  • Fixes proforma calcs including "simple" payback and IRR for thermal techs/scenarios.
    • The operating costs of fuel and O&M were missing for all thermal techs such as ExistingBoiler, CHP, and others; this adds those sections of code to properly calculate the operating costs.
  • Adds a test to validate the simple payback calculation with CHP (and ExistingBoiler) and checks the REopt result value against a spreadsheet proforma calculation (see Bill's spreadsheet)
  • Adds a couple of missing techs for the initial capital cost calculation in financial.jl
  • Fixes a few bugs here and there, including the setup_boiler_inputs in reopt_inputs.jl
  • Improves DRY coding by replacing multiple instances of the same chunks of code for MACRS deprecation and CHP capital cost into functions that are now in financial.jl
  • Simplifies the CHP sizing test to avoid a ~30 minute solve time, by avoiding the fuel burn y-intercept binaries which come with differences between full-load and part-load efficiency
  • Added two new fields to the Metrics struct to append to for any fuel-burning technologies (just Generator, ExistingBoiler, Boiler, and CHP currently): fuel_cost_series and fuel_cost_series_bau which are now only added to the offtaker cashflows and not the owner/developer cashflows for third party.

@Bill-Becker Bill-Becker marked this pull request as ready for review August 14, 2024 21:23
@Bill-Becker Bill-Becker requested a review from adfarth August 14, 2024 22:13
Bill-Becker and others added 3 commits August 14, 2024 16:48
Before it was using inflation (om_escalation), but should be using it's specific fuel escalation rate
src/results/proforma.jl Outdated Show resolved Hide resolved
src/results/proforma.jl Outdated Show resolved Hide resolved
src/results/proforma.jl Outdated Show resolved Hide resolved
src/results/proforma.jl Outdated Show resolved Hide resolved
@Bill-Becker Bill-Becker requested a review from adfarth September 7, 2024 15:19
@Bill-Becker
Copy link
Collaborator Author

@adfarth ready for your re-review. The Solar Dataset test that is failing is unrelated to this PR, I'm pretty sure, but it seems like there's two issues with that test: 1) at least for the version of Julia I'm using, the test format of "String approximately equal to String" isn't valid anymore, and 2) the third test for Younde, Cameroon is responding with dataset=nsrdb instead of the expected "intl". I was seeing on the NSRDB website that they recently (July) made some major updates, and I'm wondering if Cameroon is now considered "nsrdb"?

src/results/proforma.jl Outdated Show resolved Hide resolved
@adfarth
Copy link
Collaborator

adfarth commented Sep 11, 2024

@Bill-Becker I sent a word doc summarizing open issues for 3rd party analyses

…roforma cashflow

Also add BAU O&M to offtaker BAU and Optimal cases
@Bill-Becker
Copy link
Collaborator Author

@Bill-Becker I sent a word doc summarizing open issues for 3rd party analyses

@adfarth see the latest commit 8f16733 for what we discussed updating for now. I think the way I removed the "BAU O&M" which should have the both fixed and variable O&M of the Generator.existing_kw, subtracted from the optimal case O&M which includes both existing_kw + new_kw, should effectively separate existing O&M from new. The variable O&M part is certainly a question because the optimal case may use the "existing" portion of the Generator more or less than the BAU case, but our default O&M cost is all in the fixed /kw/year term, so I think we should mostly be good (and I still don't know how we model BAU Generator dispatch).

And then I added the om_series_bau to both offtaker cashflow terms in that commit too, as we discussed for completeness (even though they cancel).

I also made an issue about removing existing O&M from the 3rd party factor in the optimization, for "when we have time":
#442

src/results/proforma.jl Outdated Show resolved Hide resolved
Copy link
Collaborator

@adfarth adfarth left a comment

Choose a reason for hiding this comment

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

Looks good!

@Bill-Becker Bill-Becker merged commit 2dfd431 into develop Sep 23, 2024
1 check passed
@Bill-Becker Bill-Becker deleted the fix-proforma-thermal branch September 23, 2024 14:29
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.

2 participants