Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
daf4cf5
draft of integrating helper methods into SLC baseclass
elenya-grant Jul 10, 2026
5c27e98
added example for complex multi-commodity
elenya-grant Jul 10, 2026
b4d729b
merged _find_converter_techs and _get_converter_input_techs into one …
elenya-grant Jul 10, 2026
a182430
wip updated logic in demand following control
elenya-grant Jul 13, 2026
159e4d7
draft update to demand following control
elenya-grant Jul 16, 2026
5e2023c
added homework
elenya-grant Jul 16, 2026
fe43b18
moved getting conversion factors to its own method
elenya-grant Jul 17, 2026
2de15d3
updated demand following for new approach
elenya-grant Jul 17, 2026
a3bc25d
added more difficult example
elenya-grant Jul 17, 2026
fa1d1c8
updated example
elenya-grant Jul 17, 2026
51976d3
updated SLC baseclass and demand following and now example works yay
elenya-grant Jul 17, 2026
6a0325b
moved some logic from compute to setup
elenya-grant Jul 17, 2026
c38cf9a
removed unused functions and make print statements userwarnings
elenya-grant Jul 17, 2026
e019fc2
udpated example and added integration tests
elenya-grant Jul 17, 2026
895de5e
removed unnecessary TODO statement
elenya-grant Jul 17, 2026
d8aa350
removed usage of converter_order and replaced with converters (no nee…
elenya-grant Jul 21, 2026
694e51a
simplified logic for non-converter conversion factor dictionary
elenya-grant Jul 21, 2026
6e7ef18
cleanups to methods in demand following controller
elenya-grant Jul 21, 2026
6753dd8
minor cleanups to demand following control methods
elenya-grant Jul 21, 2026
a9ad427
cleanups to demand following methods
elenya-grant Jul 21, 2026
7a5889e
methodized another part of post_setup_multi_commodity
elenya-grant Jul 21, 2026
6745612
minor cleanups before moving and renaming methods called in post_setu…
elenya-grant Jul 21, 2026
fa810af
renamed methods used in post_setup_multi_commodity
elenya-grant Jul 21, 2026
e64fe3d
moved methods called in post_setup_multi_commodity to SLC base class
elenya-grant Jul 21, 2026
1e06c2c
major bugfix in find_converter_techs - may break example
elenya-grant Jul 22, 2026
e8f87dd
bugfix in _find_group_for_non_input_techs so simple_graph should be m…
elenya-grant Jul 22, 2026
cc6e6b3
notes and fixes to demand following
elenya-grant Jul 22, 2026
9cec8d2
updated and fixed and cleaned conversion ratio stuff
elenya-grant Jul 28, 2026
a9f31e4
updated get_conversion_factors logic to be more simple
elenya-grant Jul 28, 2026
7aa3bb6
removed unused methods from cleanup in demand_following_control
elenya-grant Jul 28, 2026
32c85f7
added post_setup_multi_commodity to SLC baseclass
elenya-grant Jul 28, 2026
e54171f
cleaned up SLC base
elenya-grant Jul 28, 2026
bfcb1d5
added tests for slc baseclass methods in complex multicommod
elenya-grant Jul 29, 2026
0c261d4
updated new example to use pysam wind and updated test values for new…
elenya-grant Jul 29, 2026
4f47406
updated logic in h2i to only give info about the upstream techs to th…
elenya-grant Jul 29, 2026
74c7926
added some docstrings to slc baseclass methods
elenya-grant Jul 29, 2026
b6a11ce
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Jul 29, 2026
57d16db
split new example into two folders
elenya-grant Jul 29, 2026
2ad268d
removed old comments from slc baseclass
elenya-grant Jul 29, 2026
7e520b8
updated create_technology_graph to allow for multiple commodities con…
elenya-grant Jul 31, 2026
36a4dee
added draft of redone _find_converter_techs
elenya-grant Jul 31, 2026
495bab0
updated SLC and h2i to handle more complex systems
elenya-grant Jul 31, 2026
f0f4274
fleshed out some simplifications to SLC baseclass but not done yet
elenya-grant Jul 31, 2026
077b550
minor fix
elenya-grant Jul 31, 2026
ecc7a21
refactored much of _post_setup_multi_commodity_new
elenya-grant Jul 31, 2026
3997586
removed old functions in SLC baseclass
elenya-grant Jul 31, 2026
c765d0b
updated test_slc_baseclass
elenya-grant Jul 31, 2026
6dffb44
fixed demand following so unit tests pass
elenya-grant Jul 31, 2026
69e700e
added more subtests to the new example tests
elenya-grant Aug 3, 2026
6664642
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Aug 3, 2026
5273598
added a few doc strings
elenya-grant Aug 3, 2026
67ac420
moved attributes set in _post_setup_multi_commodity to be hosted as a…
elenya-grant Aug 4, 2026
08f8557
added subtests for more complex system
elenya-grant Aug 4, 2026
c4d2848
added subtests for more complex system
elenya-grant Aug 4, 2026
65d1274
worked on adding big doc string to ChangeNameAttributeClass
elenya-grant Aug 4, 2026
3aa8a6e
minor updates to docstrings but not done yet
elenya-grant Aug 4, 2026
43c2cef
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Aug 4, 2026
fcd4dca
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Aug 5, 2026
d8eec08
updated doc strings in SLC baseclass
elenya-grant Aug 5, 2026
b1c9682
merged in PR 823
elenya-grant Aug 5, 2026
bd9acd3
fixed making simple graph for changes in PR 823
elenya-grant Aug 5, 2026
a8fe9e3
updated how slc topology and technology graph are built in test_slc_c…
elenya-grant Aug 5, 2026
414c38b
fixed _build_slc_topology in test_slc_controllers.py
elenya-grant Aug 5, 2026
bd9c3fb
updated post_setup_multi_commodity to not have embedded method
elenya-grant Aug 5, 2026
59a1af1
hopefully simplified some code while making it more robust to complex…
elenya-grant Aug 5, 2026
d28ad21
added more subtests and some fixes to slc baseclass - clean up is needed
elenya-grant Aug 5, 2026
5d03e9c
minor update to method
elenya-grant Aug 5, 2026
a9a758d
Added more docstrings and worked to clean up some code
elenya-grant Aug 5, 2026
7cc69c4
removed homework.py
elenya-grant Aug 5, 2026
de38141
updated doc strings for SLC base class
elenya-grant Aug 5, 2026
aa03967
renamed some methods
elenya-grant Aug 5, 2026
a68bbff
worked on docs
elenya-grant Aug 6, 2026
a45ca63
updated docstrings to prevent errors
elenya-grant Aug 6, 2026
a79e777
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Aug 11, 2026
f22f5f9
added comments for follow-on work to handle splitters
elenya-grant Aug 11, 2026
6150df5
Merge remote-tracking branch 'h2i_upstream/develop' into slc/helper_m…
elenya-grant Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/control/system_level_control/system_level_control_base.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,13 @@ Helper functions for cost-aware controllers.
:undoc-members:
:show-inheritance:
```


## Heterogeneous Commodity Hybrid System

```{eval-rst}
.. autoclass:: h2integrate.control.control_strategies.system_level.system_level_control_base.HCHSConfig
:members:
:undoc-members:
:show-inheritance:
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: driver_config
description: This analysis runs a hybrid plant to match the first example in H2Integrate
general:
folder_output: outputs
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: plant_config
description: This plant is located in MN, USA...
sites:
site:
latitude: 32.31714
longitude: -100.18
resources:
wind_resource:
resource_model: WTKNLRDeveloperAPIWindResource
resource_parameters:
resource_year: 2013
solar_resource:
resource_model: GOESAggregatedSolarAPI
resource_parameters:
resource_year: 2013
# array of arrays containing left-to-right technology
# interconnections; can support bidirectional connections
# with the reverse definition.
# this will naturally grow as we mature the interconnected tech
technology_interconnections:
- [wind, combiner, electricity, cable]
- [solar, combiner, electricity, cable]
- [combiner, battery, electricity, cable]
# combine the battery output with the wind and solar generation
- [battery, elec_combiner, electricity, cable]
- [combiner, elec_combiner, electricity, cable]
# connect the electricity supply to the electrolyzer
- [elec_combiner, electrolyzer, electricity, cable]
- [electrolyzer, h2_storage, hydrogen, pipe]
# combine the h2 from the electrolyzer and the h2_storage
- [electrolyzer, h2_combiner, hydrogen, pipe]
- [h2_storage, h2_combiner, hydrogen, pipe]
# subtract the hydrogen supplied from the hydrogen demand
# - [h2_combiner, h2_load_demand, hydrogen, pipe]
# connect the hydrogen supplied as the demand to the ammonia model
- [h2_combiner, haber_bosch, hydrogen, pipe]
- [n2_feedstock, haber_bosch, nitrogen, pipe]
- [electricity_feedstock, haber_bosch, electricity, cable]
- [haber_bosch, nh3_load_demand, ammonia, pipe]
# etc
tech_to_dispatch_connections:
- [combiner, battery]
- [battery, battery]
resource_to_tech_connections:
# connect the wind resource to the wind technology
- [site.wind_resource, wind, wind_resource_data]
- [site.solar_resource, solar, solar_resource_data]
system_level_control:
control_strategy: DemandFollowingControl
demand_component: nh3_load_demand
control_parameters:
use_average_conversion_factor: true
solver_options:
solver_name: gauss_seidel
max_iter: 20
convergence_tolerance: 1.0e-6
plant:
plant_life: 30
finance_parameters:
finance_groups:
finance_model: ProFastLCO
model_inputs:
params:
analysis_start_year: 2032
installation_time: 36 # months
inflation_rate: 0.0 # 0 for real analysis
discount_rate: 0.06 # nominal return based on 2024 ATB baseline workbook for land-based wind
debt_equity_ratio: 0.724 # 2024 ATB uses 72.4% debt for land-based wind
property_tax_and_insurance: 0.025 # percent of CAPEX estimated based on https://www.nlr.gov/docs/fy25osti/91775.pdf https://www.house.mn.gov/hrd/issinfo/clsrates.aspx
total_income_tax_rate: 0.2574 # 0.257 tax rate in 2024 atb baseline workbook, value here is based on federal (21%) and state in MN (9.8)
capital_gains_tax_rate: 0.15 # H2FAST default
sales_tax_rate: 0.0 # average combined state and local sales tax https://taxfoundation.org/location/texas/
debt_interest_rate: 0.07 # based on 2024 ATB nominal interest rate for land-based wind
debt_type: Revolving debt # can be "Revolving debt" or "One time loan". Revolving debt is H2FAST default and leads to much lower LCOH
loan_period_if_used: 0 # H2FAST default, not used for revolving debt
cash_onhand_months: 1 # H2FAST default
admin_expense: 0.00 # percent of sales H2FAST default
capital_items:
depr_type: MACRS # can be "MACRS" or "Straight line"
depr_period: 7 # 5 years - for clean energy facilities as specified by the IRS MACRS schedule https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
refurb: [0.]
cost_adjustment_parameters:
cost_year_adjustment_inflation: 0.025 # used to adjust modeled costs to target_dollar_year
target_dollar_year: 2022
finance_subgroups:
h2:
commodity: hydrogen
commodity_stream: electrolyzer
technologies: [wind, solar, battery, electrolyzer, h2_storage]
nh3_produced:
commodity: ammonia
commodity_stream: haber_bosch
technologies:
- wind
- solar
- battery
- electrolyzer
- h2_storage
- haber_bosch
- n2_feedstock
nh3_delivered:
commodity: ammonia
commodity_stream: nh3_load_demand
technologies:
- wind
- solar
- battery
- electrolyzer
- h2_storage
- haber_bosch
- n2_feedstock
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import os

from h2integrate import EXAMPLE_DIR
from h2integrate.core.h2integrate_model import H2IntegrateModel


os.chdir(EXAMPLE_DIR / "35_system_level_control" / "complex_multi_commodity")

##################################
# Create an H2I model with a fixed electricity load demand
h2i = H2IntegrateModel("top_level_config.yaml")

h2i.setup()

# Run the model
h2i.run()
Loading
Loading