Skip to content

Add technology overview doc page and technology checking methods #203

@elenya-grant

Description

@elenya-grant

Technology overview doc page and technology checking

As more models are added into H2I, I am finding myself scrolling between h2integrate/core/supported_models.py, h2integrate/core/finances.py, and h2integrate/core/h2integrate_model.py, and various example input files to figure out what technologies are expected to be named, what models (performance, cost, etc) are tied to that technology, and what each technology performance model needs as an input and makes as an output. For example, I may be tempted to call a solar-PV model 'pv' rather than 'solar' - but 'pv' is not included in electricity_producing_techs (defined in h2integrate/core/supported_models.py). I may also not realize that 'ASU' is an abbreviation for 'air_separator' and then may not be able to find the model options I have to make an ASU.

Proposed solution

Create a new file docs/technology_models/index.md that summarizes:

  • table of the expected technology names in the tech_config, the primary input(s) and output(s) of that technology. This is partially because some scripts (like h2integrate/core/finances.py and create_financial_model() in h2integrate/core/h2integrate_model.py) has logic based around specific technology names (ex: if tech == 'electrolyzer').
  • for each technology "type", a list of performance and cost model names (as listed in h2integrate/core/supported_models.py).

Alternatives considered

This is partially relevant to the first bullet point above - it may be nice to have some alternative method of checking technology types than string names, such as checking object types. This may require some additions to h2integrate/core/supported_models.py, such as:

technology_types = {
   'electrolyzer': {
        'cost_models': [ElectrolyzerCostModel, SingliticoCostModel, BasicElectrolyzerCostModel]
        'performance_models': [ElectrolyzerPerformanceModel, ECOElectrolyzerPerformanceModel]
    }
}

OR

technology_types = {
   'electrolyzer': {
        'cost_models': ['pem_electrolyzer_cost', 'singlitico_electrolyzer_cost', 'basic_electrolyzer_cost']
        'performance_models': ['pem_electrolyzer_performance', 'eco_pem_electrolyzer_performance']
    }
}

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions