Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
249 commits
Select commit Hold shift + click to select a range
eec2bc5
first pass at EAF performance model
dakotaramos Mar 27, 2026
1a1da0e
updated to eaf model based on peer programming
dakotaramos Mar 31, 2026
ca6fcc0
current state of eaf scrap perf
dakotaramos Apr 2, 2026
259b895
Adding in compressed gas storage capex (not complete)
jmartin4u Apr 2, 2026
2b5c0ac
scrap only performance model with unit test
kbrunik Apr 7, 2026
34c8b84
update outputs to be based on steel produced
kbrunik Apr 7, 2026
0234060
change output to slag_out
kbrunik Apr 7, 2026
b5fb350
add notes
kbrunik Apr 7, 2026
41307d1
docstrings
kbrunik Apr 7, 2026
2478c22
cmu eaf dri wip
kbrunik Apr 7, 2026
302aef0
Capex finished
jmartin4u Apr 8, 2026
70d5496
Opex added, compressor model crashing
jmartin4u Apr 8, 2026
1524986
wip dri
kbrunik Apr 9, 2026
b159329
Temporarily using pysam wind for speed
jmartin4u Apr 14, 2026
ea3ac03
Calculating storage cost in example, need to fix tests
jmartin4u Apr 15, 2026
6483f76
First test passing
jmartin4u Apr 15, 2026
e3d5d59
Changed compressor types, capex_per_kg test failing
jmartin4u Apr 15, 2026
b27efa3
Merge branch 'develop' into comp_h2_storage
jmartin4u Apr 15, 2026
04aa292
Storage capex per keg test fixed
jmartin4u Apr 15, 2026
0463477
Reverting example tech_config
jmartin4u Apr 15, 2026
34e2e86
Merge pull request #683 from NatLabRockies/main
johnjasa Apr 16, 2026
e3bc32a
Docs + changing h2 storage constants to uninstalled (installed is ca…
jmartin4u Apr 16, 2026
18bc662
Fixing test values
jmartin4u Apr 16, 2026
595c3a5
Merge remote-tracking branch 'origin/develop' into comp_h2_storage
jmartin4u Apr 16, 2026
81db005
Moving images
jmartin4u Apr 16, 2026
ee7701e
Changelog update
jmartin4u Apr 16, 2026
2b76bf5
Update commodity from pig iron to sponge iron (#670)
kbrunik Apr 16, 2026
70ba6a1
Merge branch 'develop' into comp_h2_storage
johnjasa Apr 16, 2026
decda43
bugfix when calling check_inputs when using round trip efficiency
elenya-grant Apr 16, 2026
b5fb068
Added a quick test for the bugfix
johnjasa Apr 17, 2026
680eea8
Merge pull request #684 from elenya-grant/bugfix/rte
johnjasa Apr 17, 2026
66936c0
add nuclear to electricity producing tech and update electricity comm…
jaredthomas68 Apr 17, 2026
31b80ee
Merge branch 'develop' into patch-nuclear
jaredthomas68 Apr 17, 2026
ea23835
update changelog
jaredthomas68 Apr 17, 2026
d56c333
Updating test_hydrogen_storage
jmartin4u Apr 17, 2026
35c33d0
Merge pull request #685 from jaredthomas68/patch-nuclear
johnjasa Apr 17, 2026
c971250
Fixing h2_storage_cost
jmartin4u Apr 17, 2026
93d23d0
Fixing double CEPCI inflation in tank cost
jmartin4u Apr 17, 2026
86d0a4b
Merge remote-tracking branch 'origin/develop' into comp_h2_storage
jmartin4u Apr 17, 2026
a57f0a9
Merge remote-tracking branch 'upstream/develop' into decarbsteel_eaf_…
kbrunik Apr 18, 2026
2a9e99c
unit conversion correction
kbrunik Apr 18, 2026
f262e59
unit test scrap
kbrunik Apr 18, 2026
d2f540d
cmu eaf with dri model and tests
kbrunik Apr 19, 2026
0a69aa4
cost model
kbrunik Apr 19, 2026
c7e9eec
cost model test
kbrunik Apr 19, 2026
a18aad6
more unit tests
kbrunik Apr 19, 2026
2e1d266
clean up and changelog
kbrunik Apr 20, 2026
7a2da29
Added feedstock consumption profiles as outputs to electrolyzer (#690)
elenya-grant Apr 21, 2026
eda03a4
Changed many demands to set_points
johnjasa Apr 22, 2026
425913d
Updated changelog
johnjasa Apr 22, 2026
df99f30
update capex value
kbrunik Apr 22, 2026
bd41181
change dri comp input
kbrunik Apr 22, 2026
2e14c63
removed commodity_name from h2_storage cost config and updated format…
elenya-grant Apr 22, 2026
c7f1055
desc
kbrunik Apr 22, 2026
68ef418
cost model default steel capacity
kbrunik Apr 22, 2026
26c019f
change name to capacity
kbrunik Apr 22, 2026
95ca50b
Merge branch 'develop' into rename_demand
johnjasa Apr 22, 2026
5f22ae5
error for production and capacity
kbrunik Apr 22, 2026
8856359
added inputs
kbrunik Apr 22, 2026
9639301
adjust molar mass constants
kbrunik Apr 22, 2026
410e488
Add PLM optimized dispatch controller, example 34, and tests
vijay092 Apr 22, 2026
cf46abe
Make sure the example runs
vijay092 Apr 22, 2026
690f099
WIP: Addressing minor PR comments
johnjasa Apr 22, 2026
9cfd34a
Adding CMU examples
johnjasa Apr 23, 2026
98dafed
Peak load management heuristic control (#641)
jaredthomas68 Apr 23, 2026
e547599
Added steel CMU doc page
johnjasa Apr 23, 2026
2f2a7cd
Added iron CMU examples
johnjasa Apr 23, 2026
89cb900
Merging
johnjasa Apr 23, 2026
d155a53
Updating test value after fixing cold DRI logic
johnjasa Apr 23, 2026
2bd491b
more sig figs
kbrunik Apr 23, 2026
42a5d1c
doc mods
kbrunik Apr 23, 2026
6a5050e
Merge pull request #686 from kbrunik/decarbsteel_eaf_modeling
johnjasa Apr 23, 2026
4f8be20
Merge branch 'develop' into comp_h2_storage
johnjasa Apr 23, 2026
e32b730
Add docs
vijay092 Apr 23, 2026
e1dc014
minor cleanup to pose_optimization
elenya-grant Apr 23, 2026
23c229d
updated call to make_unique_case_name
elenya-grant Apr 23, 2026
d66659a
Addressing Jasa comments
jmartin4u Apr 23, 2026
561a6da
Update docs and add figure
vijay092 Apr 23, 2026
f9761ec
Merge branch 'develop' into rename_demand
kbrunik Apr 23, 2026
a23ae26
Merge pull request #680 from jmartin4u/comp_h2_storage
johnjasa Apr 23, 2026
6e92ba5
Fully removed DV counting method
johnjasa Apr 23, 2026
06e2174
removed get_number_of_design_variables method
elenya-grant Apr 23, 2026
c89d3a5
Merge branch 'sql/fnames' of github.com:elenya-grant/GreenHEART into …
elenya-grant Apr 23, 2026
bfa00d3
Merge branch 'develop' into sql/fnames
johnjasa Apr 23, 2026
7afb43a
Edit docs page
vijay092 Apr 23, 2026
9b9ac9b
Edit docstrings to include raises
vijay092 Apr 23, 2026
f7487e0
Updating example
johnjasa Apr 23, 2026
b114e4d
Merge pull request #695 from elenya-grant/sql/fnames
johnjasa Apr 23, 2026
c84fb90
Merge branch 'develop' into rename_demand
johnjasa Apr 23, 2026
dc59977
Adding more flexible pricing schemes
johnjasa Apr 24, 2026
3d4735f
Add integartion tests
vijay092 Apr 25, 2026
42b63c3
Add PLM optimized dispatch controller, example 34, and tests
vijay092 Apr 26, 2026
b0a030c
Make sure the example runs
vijay092 Apr 22, 2026
125b48f
Add docs
vijay092 Apr 26, 2026
7903e39
Add docs
vijay092 Apr 23, 2026
eb9b449
Update docs and add figure
vijay092 Apr 23, 2026
053e586
Edit docs page
vijay092 Apr 23, 2026
2f0a325
Edit docstrings to include raises
vijay092 Apr 23, 2026
86c6fc4
Correct formatting
vijay092 Apr 27, 2026
a7fc28c
FIX formatting in supported modesl
vijay092 Apr 27, 2026
057d8fa
Fix formatting in test_all_ex
vijay092 Apr 27, 2026
b00cb65
Addressing PR comments
johnjasa Apr 27, 2026
0810a9a
Fix formatting in supported_models
vijay092 Apr 27, 2026
ac0c0a0
More formatting fixes
vijay092 Apr 27, 2026
878217f
Updated example test values
johnjasa Apr 27, 2026
fa9a4a7
Change code to handle varibale timesteps
vijay092 Apr 27, 2026
7cca483
Reverting errants changes
johnjasa Apr 27, 2026
42c1b47
Merge branch 'rename_demand' of https://github.com/johnjasa/H2Integra…
johnjasa Apr 27, 2026
2822073
Ability to have a user-defined resource model (#698)
elenya-grant Apr 27, 2026
0ca4a20
Merge pull request #691 from johnjasa/rename_demand
johnjasa Apr 27, 2026
f7777f6
Merge branch 'develop' into per_year_grid_feedstock
johnjasa Apr 27, 2026
e7f3188
add setpoint to fuel cell
kbrunik Apr 28, 2026
503e4df
docs and changelog
kbrunik Apr 28, 2026
db9923f
Pre-commit fixes
vijay092 Apr 28, 2026
b25e5dd
Remove notebook
vijay092 Apr 28, 2026
966f75e
Add min separation input and make sure methods run correctly
vijay092 Apr 28, 2026
d224ed0
addressing PR feedback
johnjasa Apr 28, 2026
c33d498
Fix bug in peak window start time definition in example
vijay092 Apr 28, 2026
6ddb79a
Change user defined param fromn_max)hrs to n_max_events
vijay092 Apr 28, 2026
14bc957
rename n_control_window to n_control_window_hours
jaredthomas68 Apr 28, 2026
f3f7ba4
update changelog
jaredthomas68 Apr 28, 2026
11bf482
replace outdated static n2 with dynamic and interactive n2 diagram
jaredthomas68 Apr 28, 2026
ba5cdc5
update changelog
jaredthomas68 Apr 28, 2026
839979a
remove unused image files
jaredthomas68 Apr 28, 2026
5fe0dc9
Merge pull request #714 from jaredthomas68/n2update
johnjasa Apr 29, 2026
263e6b5
Apply suggestions from code review
johnjasa Apr 29, 2026
2efc442
Merge branch 'develop' into cwinhours
johnjasa Apr 29, 2026
b456d44
Merge pull request #712 from jaredthomas68/cwinhours
johnjasa Apr 29, 2026
6cf9bed
Merge branch 'develop' into fuel_cell_update
johnjasa Apr 29, 2026
130f8b0
Merge branch 'develop' into per_year_grid_feedstock
johnjasa Apr 29, 2026
db0c634
Changed buy/sell price mode to user-set instead of inferred
johnjasa Apr 29, 2026
2823c1a
Merge branch 'per_year_grid_feedstock' of https://github.com/johnjasa…
johnjasa Apr 29, 2026
4c94935
Address reviewer comments
vijay092 Apr 29, 2026
aa7d94c
Make description in tech config more specific
vijay092 Apr 29, 2026
e1bd578
Move standard methds to the top and delete demand csv
vijay092 Apr 29, 2026
3281afa
Add figure in docs
vijay092 Apr 29, 2026
34d9cea
Make sure tests run
vijay092 Apr 29, 2026
b0699cf
Made shared variable within fuel cell to simplify and clarify calcs
johnjasa Apr 30, 2026
d7821ce
Merge pull request #709 from kbrunik/fuel_cell_update
johnjasa Apr 30, 2026
d997dec
Make sure test_all_examples runs
vijay092 Apr 30, 2026
33f244f
Run pre-commit on all files
vijay092 Apr 30, 2026
92b8bcf
Address Elenya's comments
vijay092 Apr 30, 2026
5514e0d
Merge remote-tracking branch 'upstream/develop' into peakload-optimized
vijay092 Apr 30, 2026
feaaa70
Change n_control_window to n_control_window_hours
vijay092 Apr 30, 2026
62769ac
Merge pull request #700 from johnjasa/per_year_grid_feedstock
johnjasa Apr 30, 2026
09b8e52
Use methods and existing utils for example
vijay092 Apr 30, 2026
9033691
added full logic to check technology interconnections
elenya-grant May 1, 2026
595ed93
minor cleanups to new methods
elenya-grant May 1, 2026
5f80627
renamed new method
elenya-grant May 1, 2026
e59e04f
Merge remote-tracking branch 'h2i_upstream/develop' into check_tech_i…
elenya-grant May 1, 2026
f0e8fd9
updated changelog
elenya-grant May 1, 2026
bf85591
updated error handling to aggregate error messages
elenya-grant May 1, 2026
f046be2
minor cleanup to new method
elenya-grant May 1, 2026
040e9c9
Solve for optimal power rather than assuming P_max
vijay092 May 1, 2026
7640fb5
Updates to the technology connections check
johnjasa May 1, 2026
c392630
Merge pull request #720 from elenya-grant/check_tech_interconnections
johnjasa May 2, 2026
406fab9
Give user option to either pick inc/event or /kwh
vijay092 May 3, 2026
cb1740c
Add comments for inc/event conversion
vijay092 May 3, 2026
bba953d
Merge remote-tracking branch 'upstream/develop' into peakload-optimized
vijay092 May 3, 2026
2a653e6
bump miniconda action for upgraded node usage
RHammond2 May 4, 2026
91c1cbc
Edit docs to include new definitions
vijay092 May 4, 2026
c127b15
Edit config comments
vijay092 May 4, 2026
6056898
Merge pull request #722 from RHammond2/patch/conda-action
johnjasa May 4, 2026
10aee14
Minor edits to configs
vijay092 May 4, 2026
dec2b05
Add tests for storageperformancemodel
vijay092 May 4, 2026
d2c8ac1
Raise Valueerror if min peak separation < event dur
vijay092 May 4, 2026
4d8656a
Remove Valueerror if min peak separation < event dur
vijay092 May 4, 2026
e024fc8
Merge remote-tracking branch 'upstream/develop' into peakload-optimized
vijay092 May 5, 2026
9e359a3
Update h2integrate/control/control_strategies/storage/plm_optimized_s…
vijay092 May 5, 2026
eda288a
Update h2integrate/control/control_strategies/storage/plm_optimized_s…
vijay092 May 5, 2026
ae7eb89
Update h2integrate/control/control_strategies/storage/plm_optimized_s…
vijay092 May 5, 2026
d4511d2
Apply pre-commit formatting
vijay092 May 5, 2026
a29bb7e
update pyomo n2
johnjasa May 5, 2026
3d2b80e
Updated pyomo N2 in docs
johnjasa May 5, 2026
90f9306
move H2Integrate model to top-level import
RHammond2 May 4, 2026
4f4c5b6
add basic file i/o as top-level imports
RHammond2 May 5, 2026
002624f
consolidate docs imports for updates
RHammond2 May 5, 2026
62398b2
update changelog
RHammond2 May 5, 2026
d7e4fd5
update PR #
RHammond2 May 5, 2026
8f5b1f7
fix typo
RHammond2 May 5, 2026
059f415
update hierarchy
RHammond2 May 5, 2026
4c2f7b4
move erroneously corrected imports out of code block and back to exec…
RHammond2 May 5, 2026
87f6930
add validated yaml loading functions to top-level
RHammond2 May 5, 2026
a290876
Update docs/control/pyomo_controllers.md
vijay092 May 5, 2026
efcc91d
Minor change to trigger CI
johnjasa May 6, 2026
9bd1834
Fix SOC min max notation
vijay092 May 6, 2026
cad9201
Merge branch 'peakload-optimized' of https://github.com/vijay092/H2In…
vijay092 May 6, 2026
b8d8182
Change round to ceil in steps_per_event calc
vijay092 May 6, 2026
05ba4c6
Add subtests
vijay092 May 6, 2026
da34364
Merge pull request #726 from johnjasa/pyomo_n2
johnjasa May 6, 2026
598a341
Ability to use timeseries profiles for finance calcs (#725)
elenya-grant May 7, 2026
6f9417e
Merge branch 'develop' into peakload-optimized
johnjasa May 7, 2026
3c461d7
Merge branch 'develop' into feature/simplified-imports
johnjasa May 7, 2026
060a22a
Minor changes to comments and subtests
vijay092 May 7, 2026
a340622
Change round to ceil when computing n_days
vijay092 May 7, 2026
0831c29
Update h2integrate/control/control_strategies/storage/plm_optimized_s…
vijay092 May 7, 2026
7a63466
Add _time_step_bound and make sure init_sc is within bounds
vijay092 May 7, 2026
f626984
Merge pull request #679 from vijay092/peakload-optimized
johnjasa May 8, 2026
3f53398
Typo fixes based on PR feedback
johnjasa May 8, 2026
75e53d8
Merge pull request #728 from RHammond2/feature/simplified-imports
johnjasa May 8, 2026
a89c674
Merge branch 'develop' into 700_fixes
johnjasa May 8, 2026
87057e9
Merge pull request #736 from johnjasa/700_fixes
johnjasa May 9, 2026
ef0f9f3
bugfix so electrolyzer outputs are real numbers if electrolyzer is ne…
elenya-grant May 11, 2026
3a06482
Merge branch 'main' into develop
RHammond2 May 11, 2026
19fc21e
added tests for bugfix
elenya-grant May 11, 2026
31cd59e
Merge remote-tracking branch 'h2i_upstream/develop' into fix/electrol…
elenya-grant May 11, 2026
310879f
removed out of date TODO statement
elenya-grant May 13, 2026
e8ba12c
Merge pull request #746 from elenya-grant/fix/electrolyzer_outputs
johnjasa May 13, 2026
584b235
Merge branch 'main' into develop
RHammond2 May 14, 2026
b15a1e5
Bugfix on storage so storage can't charge with unavailable input comm…
elenya-grant May 14, 2026
14623c3
added error if technology interconnections is missing (#744)
elenya-grant May 18, 2026
fa4fcbe
Allow for sell and buy price mode of "constant" in grid cost model (#…
elenya-grant May 21, 2026
24e2f27
Added purge gas as a multivariable output (#760)
johnjasa May 21, 2026
6334faa
Defer heavy imports for faster package load times (#762)
johnjasa May 21, 2026
4250dd2
Feature: EIA Natural Gas Price Retrieval for Feedstocks (#719)
RHammond2 May 21, 2026
b9f33f6
Make sure `storage_baseclass` handles arbitrary `dt` (#753)
vijay092 May 21, 2026
85de771
Simplify import pathways for primary models and functionality (#769)
johnjasa May 26, 2026
344347e
Renaming DOE to parameter sweep throughout (#768)
johnjasa Jun 2, 2026
395ab33
System level control framework (#751)
elenya-grant Jun 15, 2026
111deed
Dynamic Operating Constraints for Ammonia Synloop (#770)
elenya-grant Jun 16, 2026
e137a34
Expose common simulation/plant attributes on cost and performance bas…
johnjasa Jun 17, 2026
c8696f2
Reducing examples 01 and 02's run times (#782)
johnjasa Jun 18, 2026
455e92a
more robust api calls, suggested by copilot after all my api calls we…
ptrbortolotti Jun 18, 2026
41de882
Updating ammonia synloop example test values and tolerances to avoid …
johnjasa Jun 30, 2026
42f06cf
Reworked how financial model units and commodity streams are defined …
elenya-grant Jul 2, 2026
d9eb193
Enhancement: Make `check_resource_dir` a general data folder routine …
RHammond2 Jul 6, 2026
c02b177
Fix: Minor update to EIA NG pricing (#777)
RHammond2 Jul 6, 2026
8b054f5
Fix: Apply `temp_copy_of_example` to cleanup OpenMDAO local data crea…
RHammond2 Jul 6, 2026
36201c8
Docs: refresh "add a new technology" guide, auto-generate model overv…
johnjasa Jul 6, 2026
0de8d8e
Added more expansive feedstock tests for SLC (#793)
johnjasa Jul 8, 2026
241c7a4
Updates related to `demand_tech` in SLC framework (#784)
elenya-grant Jul 8, 2026
d336ecf
Feature: Add `feedstock_dir` option for the EIA Natural Gas functiona…
RHammond2 Jul 8, 2026
bceeeb4
Allow for connections including slice specifications (#774)
jaredthomas68 Jul 13, 2026
848e0ea
Reduce Sphinx documentation build warnings (#800)
johnjasa Jul 13, 2026
2f6da92
Multi-year sell-price in ProFAST NPV (#799)
elenya-grant Jul 18, 2026
8f02a90
Azimuth angle warnings and defaults in PySAM solar model (#806)
elenya-grant Jul 21, 2026
280b5e1
Hooking up electricity buy price and more correctly (#792)
johnjasa Jul 21, 2026
7470970
Generalized functions for getting, setting, and finding environment v…
elenya-grant Jul 24, 2026
c8f3293
Correct pipe rate units from galUS to galUS/h (#813)
jaredthomas68 Jul 25, 2026
a96d8e5
Bugfix OpenMeteo Resource Local Timezone (#814)
elenya-grant Jul 30, 2026
b55061d
Nuclear with thermal connection with HTSE (#807)
jaredthomas68 Jul 31, 2026
dcaa2f0
Adding inflation rate to numpy NPV calc (#788)
johnjasa Jul 31, 2026
b7073c7
Updating throughout to remove last of doc warnings (#821)
johnjasa Aug 4, 2026
041a186
Bug fix for output path handling (#820)
tully9000 Aug 4, 2026
7b94d82
Bugfix to `technology_graph` and other minor fixes (#823)
elenya-grant Aug 5, 2026
08c6431
Path type instance check for schema validators (#822)
elenya-grant Aug 7, 2026
d12fd94
Open loop control base remove "storage" naming (#828)
jaredthomas68 Aug 7, 2026
50adb02
Bump version ahead of 0.9 release (#829)
johnjasa Aug 10, 2026
2141215
Merge branch 'main' into develop
johnjasa Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ IMPORTANT NOTES
- [ ] Describe the feature that will be added
- [ ] Fill out TODO list steps
- [ ] Describe requested feedback from reviewers on draft PR
- [ ] Complete Section 7: New Model Checklist (if applicable)
- [ ] Complete Section 8: New Model Checklist (if applicable)
<!-- Describe the feature in this PR and outline next steps -->
### TODO:
- [ ] Step 1
Expand Down Expand Up @@ -113,6 +113,7 @@ failing test cases.
- [ ] Added: `initialize()` method, `setup()` method, `compute()` method
- [ ] If applicable: inherit from `CostModelBaseClass`
- [ ] **Integration**: Model has been properly integrated into H2Integrate
- [ ] Add the new model to the appropriate `__init__.py` file to ensure it is properly imported and used in `supported_models.py`
- [ ] Added to `supported_models.py`
- [ ] If a new commodity_type is added, update `create_financial_model` in `h2integrate_model.py`
- [ ] **Tests**: Unit tests have been added for the new model
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ on:
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -161,3 +161,6 @@ resource_files/solar/*

# Ignore library files
library/*

# Don't ignore docs images
!docs/*/images/*.png
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ repos:
- id: yamlfix
# Exclude YAML files that are used as inputs for testing or examples, or ones for desired schedule in HOPP as they
# expect misformatted YAML files.
exclude: ^(h2integrate/core/test/inputs/.*|examples/11_hybrid_energy_plant/tech_inputs/desired_schedules/.*)$
exclude: ^(h2integrate/core/test/inputs/.*|examples/11_hybrid_energy_plant/tech_inputs/desired_schedules/.*|examples/33_peak_load_management/demand_profiles/.*|examples/34_plm_optimized_dispatch/demand_profiles/.*)$
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.8.1
Expand Down
27 changes: 14 additions & 13 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
version: 2
# https://docs.readthedocs.io/en/stable/config-file/v2.html
#
# We use `build.commands` to fully take over the build so that Read the Docs
# runs the same script developers use locally (docs/build_book.sh). This keeps
# local and hosted builds consistent: any pre-build code generation, jupyter-
# book config, and the final HTML build all live in one place.
build:
os: ubuntu-24.04
tools:
python: '3.11'
jobs:
pre_build:
- python docs/generate_class_hierarchy.py
- jupyter-book config sphinx docs/
python:
install:
- method: pip
path: .
extra_requirements: [develop]
sphinx:
configuration: docs/conf.py
builder: html
fail_on_warning: false
commands:
# Install the package and docs dependencies.
- pip install --upgrade pip
- pip install .[develop]
# Build the book exactly the way we do locally.
- bash docs/build_book.sh
# Read the Docs expects the built HTML under $READTHEDOCS_OUTPUT/html/.
- mkdir -p "$READTHEDOCS_OUTPUT/html"
- cp -R docs/_build/html/. "$READTHEDOCS_OUTPUT/html/"
85 changes: 84 additions & 1 deletion CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ This is a non-exhaustive list, and the library of available technologies is acti

- **Electricity generation**: solar PV, wind, wave, tidal, natural gas combined cycle (NGCC), natural gas combustion turbines (NGCT), nuclear, grid
- **Hydrogen production**: PEM electrolysis, NG-SMR
- **Energy storage**: Li-ion batteries, long-duration energy storage (LDES), pumped storage hydropower (PSH)
- **Energy storage**: Li-ion batteries, long-duration energy storage (LDES), pumped storage hydropower (PSH), hydrogen storage, compressed gas storage
- **Fuel cells**: H2 PEM fuel cells
- **Industrial processes**: ammonia synthesis, iron ore reduction, steel production, and more

Expand Down
40 changes: 39 additions & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ only_build_toc_files: false
# See https://jupyterbook.org/content/execute.html
execute:
execute: null
execute_notebooks: auto
# "cache" uses jupyter-cache to skip re-executing notebooks and MyST cells
# whose source/kernel hasn't changed, so local rebuilds are fast when only
# prose or unrelated Python has changed. Pass --clean to build_book.sh (or
# delete docs/_build) to force a full re-execution.
execute_notebooks: cache
timeout: -1 # better for longer running notebooks
merge_streams: true # keeps unsynchronized cell outputs in a single output cell
exclude_patterns:
Expand Down Expand Up @@ -57,7 +61,41 @@ sphinx:
autodoc_typehints: description
html_static_path:
- _static
# A local ``autosummary/module.rst`` template lives here that filters out
# pytest ``conftest.py`` submodules from the generated stubs (they can't be
# imported outside a pytest session, so autosummary would emit "failed to
# import" warnings for every one).
templates_path:
- _templates
napoleon_use_admonition_for_notes: true
napoleon_use_rtype: false
# Render "Attributes:" sections with the :ivar: role instead of separate
# ".. attribute::" directives. This prevents autodoc from documenting the
# same attribute twice (once from the napoleon-parsed Attributes: block and
# once from autodoc's own member discovery), which was the single largest
# source of "duplicate object description" warnings in the docs build.
napoleon_use_ivar: true
# Teach napoleon about extra Google-style section headings that appear in
# H2Integrate docstrings. Each entry is either a plain string (renders as
# a generic section) or a ``[name, style]`` pair mapping the section to
# an existing napoleon style so its contents are parsed as parameters.
napoleon_custom_sections:
- [Inputs, params_style]
- [Outputs, params_style]
- [Promoted Inputs, params_style]
- [Promoted Outputs, params_style]
- [Subsystems, params_style]
- [Discrete Inputs, params_style]
- [Discrete Outputs, params_style]
- [Options, params_style]
- [Behavior, notes_style]
- [Side Effects, notes_style]
# Suppress the class of warnings emitted by sphinx-external-toc for
# ``.. toctree::`` directives inside autosummary-generated stubs. Those
# toctrees are how ``autosummary :recursive:`` links its child module
# pages together and can't be moved into ``_toc.yml``, so the warnings
# are noise rather than a real problem to fix.
suppress_warnings:
- etoc.toctree
nb_merge_streams: true
nb_execution_raise_on_error: true
6 changes: 3 additions & 3 deletions docs/_static/class_hierarchy.html

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions docs/_templates/autosummary/module.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{{ fullname | escape | underline}}

.. automodule:: {{ fullname }}

{% block attributes %}
{% if attributes %}
.. rubric:: {{ _('Module Attributes') }}

.. autosummary::
{% for item in attributes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}

{% block functions %}
{% if functions %}
.. rubric:: {{ _('Functions') }}

.. autosummary::
{% for item in functions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}

{% block classes %}
{% if classes %}
.. rubric:: {{ _('Classes') }}

.. autosummary::
{% for item in classes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}

{% block exceptions %}
{% if exceptions %}
.. rubric:: {{ _('Exceptions') }}

.. autosummary::
{% for item in exceptions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}

{% block modules %}
{# Filter out pytest conftest modules; they cannot be imported outside a
pytest session (they use `from test.conftest import ...` which requires
the repo-root ``test/`` package to be on ``sys.path``) and so autosummary
raises "failed to import" warnings on them. #}
{% set filtered_modules = modules | reject('equalto', 'conftest') | list %}
{% if filtered_modules %}
.. rubric:: Modules

.. autosummary::
:toctree:
:recursive:
{% for item in filtered_modules %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
28 changes: 21 additions & 7 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ parts:
- file: user_guide/connecting_technologies
- file: user_guide/defining_sites_and_resources
- file: user_guide/design_optimization_in_h2i
- file: user_guide/design_of_experiments_in_h2i
- file: user_guide/parameter_sweep_in_h2i
- file: user_guide/postprocessing_results
- file: user_guide/recording_and_loading_data
- file: user_guide/how_to_interface_with_user_defined_model
Expand All @@ -38,15 +38,18 @@ parts:
- file: technology_models/co2.md
- file: technology_models/methanol.md
- file: technology_models/ammonia.md
- file: technology_models/ammonia_synloop_dynamics
- file: technology_models/wind_plant_ard.md
- file: technology_models/geologic_hydrogen.md
- file: technology_models/grid
- file: technology_models/h2_fuel_cell.md
- file: technology_models/h2_smr.md
- file: technology_models/h2_htse.md
- file: technology_models/iron_ewin.md
- file: technology_models/iron_mine.md
- file: technology_models/iron_dri.md
- file: technology_models/steel_eaf.md
- file: technology_models/steel_eaf_cmu.md
- caption: Storage Models
chapters:
- file: storage/storage_models_index.md
Expand All @@ -69,10 +72,20 @@ parts:
- file: resource/tidal_resource
- caption: Control
chapters:
- file: control/control_overview
- file: control/open-loop_controllers
- file: control/pyomo_controllers
- file: control/controller_demonstrations
- file: control/system_level_control/system_level_control
sections:
- file: control/system_level_control/system_level_control_base
- file: control/system_level_control/control_classifier
- file: control/system_level_control/controllers
sections:
- file: control/system_level_control/slc_demand_following
- file: control/system_level_control/slc_profit_max
- file: control/system_level_control/slc_cost_min
- file: control/technology_level_control/technology_control_overview
sections:
- file: control/technology_level_control/open-loop_controllers
- file: control/technology_level_control/pyomo_controllers
- file: control/technology_level_control/controller_demonstrations
- caption: Demand
chapters:
- file: demand/demand_components
Expand All @@ -94,16 +107,17 @@ parts:
- file: developer_guide/coding_guidelines
- file: developer_guide/why_make_h2integrate
- file: developer_guide/adding_a_new_technology
- file: developer_guide/features_not_currently_implemented
- file: developer_guide/class_structure
- file: developer_guide/describing_whats_in_classes
- file: developer_guide/technology_model_types
- file: developer_guide/testing
- file: developer_guide/features_not_currently_implemented
- caption: Miscellaneous Resources
chapters:
- file: misc_resources/FAQ
- file: misc_resources/glossary
- file: misc_resources/defining_filepaths
- file: misc_resources/turbine_models_library_preprocessing
- file: misc_resources/debugging_environment_variables
- caption: API Reference
maxdepth: 3
chapters:
Expand Down
1 change: 1 addition & 0 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
:recursive:

core
feedstocks
converters
control
finances
Expand Down
34 changes: 32 additions & 2 deletions docs/build_book.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,36 @@
rm -rf _build
#!/usr/bin/env bash
#
# Build the H2Integrate Jupyter Book.
#
# By default this preserves the _build/ directory so jupyter-cache can skip
# re-executing notebooks and MyST cells whose source hasn't changed, which
# makes incremental local rebuilds much faster. Pass --clean to force a
# from-scratch build (e.g. after upgrading Sphinx/jupyter-book or changing
# execution config).
set -euo pipefail

# Always run from the docs/ directory so relative paths below work regardless
# of where the caller invoked this script from (e.g. repo root, CI, RTD).
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

if [[ "${1:-}" == "--clean" ]]; then
rm -rf _build
fi

# Always remove the autosummary-generated stubs before building. These files
# are regenerated from the current package layout by ``autosummary_generate``,
# but sphinx does not delete stubs for modules that were renamed or removed.
# Leaving stale stubs behind produces spurious "failed to import" /
# "document isn't included in any toctree" warnings on every subsequent build.
rm -rf _autosummary

# Generate the interactive class hierarchy diagram
python generate_class_hierarchy.py

jupyter-book build --keep-going .
# Refresh the auto-generated section of docs/user_guide/model_overview.md from
# the live supported_models registry. Run this before jupyter-book so the
# rendered overview always matches what the package actually exposes.
python generate_model_overview.py

jupyter-book build --keep-going --warningiserror .
22 changes: 0 additions & 22 deletions docs/control/control_overview.md

This file was deleted.

Loading
Loading