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
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, andh2integrate/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 inelectricity_producing_techs(defined inh2integrate/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.mdthat summarizes:tech_config, the primary input(s) and output(s) of that technology. This is partially because some scripts (likeh2integrate/core/finances.pyandcreate_financial_model()inh2integrate/core/h2integrate_model.py) has logic based around specific technology names (ex:if tech == 'electrolyzer').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:OR
Additional context