NatLabRockies / NatLabRockies/H2Integrate
Add flexibility in finance models to handle expanded cost model outputs
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 26
- Forks
- 44
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 16
Description
Other cost model outputs and handling in finance models
The commonly used ProFastComp class is currently oriented around and integrated with capex (capital item) and opex (fixed cost) outputs from cost models. (Similarly, the AdjustedCapexOpexComp model is also oriented around capex and opex costs). Some technologies may have other associated costs, such as feedstock costs and variable o&m costs. Also - the refurbishment schedule for capital items is only applied for the electrolyzer system, and this results in a hard-coded check for if the technology is an electrolyzer and to add the refurbishment schedule when creating the capital item entry for the electrolyzer system. Other technologies (or other technology cost models) may also require replacements within the plant life (for example - batteries tend to have a default life of 15 years according to the ATB). As the system's we're modeling grow - it is likely that we'll inevitably want to model the finances of a system with variable operating costs, feedstocks, and components with varying replacement schedules and costs. To handle these costs, I propose adding flexibility to the ProFastComp and AdjustedCapexOpexComp models to handle varying costs associated with each technology.
Proposed solution
In AdjustedCapexOpexComp:
- add input and corresponding outputs to handle feedstocks costs, variable o&m costs, and perhaps production tax credits (see #181 )
In ProFastComp:
- add inputs corresponding to updates in
AdjustedCapexOpexComp - utilize the profast creation tools references in #184 to add feedstocks and variable o&m costs
- make a replacement_schedule an input for each technology, defaulting to [0.]
In technology cost models:
- output the technology replacement schedule, calculate the replacement schedule based on the replacement cost percent (specified in the tech config under cost_parameters) and whatever relevant outputs from the corresponding performance model
- output feedstock usage rate (and/or cost) and units, output variable o&m cost and units.
The goal is that I could make a new cost model for the electrolyzer that could take in technology config below and have that be handled properly by the finance model in ProFastComp
technologies:
electrolyzer:
performance_model:
model: "eco_pem_electrolyzer_performance"
cost_model:
model: "electrolyzer_new_cost_model"
model_inputs:
shared_parameters:
electrolyzer_capex: 1000
water_usage_rate: 3.8 # gal H2O/kg-H2
performance_parameters:
cost_parameters:
fixed_om_per_kw: 12.8
var_om: 1.3
var_om_units: "$/MWh"
water_usage_cost: 4.0 # ideally could be feedstock region or actual cost in $/gal
financial_parameters:
replacement_cost_percent: 0.15 # percent of capex
Some corresponding considerations/baby issues
AdjustedCapexOpexComp: can we make this flexible to different types of inputs (if possible) likeadjust_dollar_yearfunction in h2integrate/tools/eco/finance.py- ability to convert units for the specific commodity (also a consideration for #181 )
- specify feedstock region for feedstocks available in ProFAST
- integrate passing
capacityandlong term utilizationinformation from performance models to finance models. Would be nice to have a somewhat streamlined format for this so that commodity-specific handling doesnt have to be more complex than necessary. It would also be nice if long term utilization could be input as either a single value of list of utilization per year.
This could set us up for more involved performance/financial calculations in the future, such as integrating land area required for the plant design with land costs.
Alternatives considered
Additional context
related to #184 and #181
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the finance helpers in h2integrate/tools/eco/finance.py, especially adjust_dollar_year, then inspect AdjustedCapexOpexComp and ProFastComp and the related proposals in #184 and #181. Done would mean finance models accept the proposed feedstock, variable O&M, and replacement-schedule data from technology cost models, including the example configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100