NatLabRockies / NatLabRockies/H2Integrate

Add flexibility in finance models to handle expanded cost model outputs

Open
#185 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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) like adjust_dollar_year function 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 capacity and long term utilization information 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.