h2integrate 0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. h2integrate-0.2/.git-blame-ignore-revs +10 -0
  2. h2integrate-0.2/.github/ISSUE_TEMPLATE/bug_report.md +77 -0
  3. h2integrate-0.2/.github/ISSUE_TEMPLATE/config.yaml +5 -0
  4. h2integrate-0.2/.github/ISSUE_TEMPLATE/feature_request.md +46 -0
  5. h2integrate-0.2/.github/PULL_REQUEST_TEMPLATE.md +78 -0
  6. h2integrate-0.2/.github/workflows/ci.yml +38 -0
  7. h2integrate-0.2/.github/workflows/ci_docs.yml +21 -0
  8. h2integrate-0.2/.github/workflows/gh_pages.yml +52 -0
  9. h2integrate-0.2/.github/workflows/pre-commit.yml +18 -0
  10. h2integrate-0.2/.github/workflows/publish_to_pypi.yml +31 -0
  11. h2integrate-0.2/.github/workflows/publish_to_test_pypi.yml +33 -0
  12. h2integrate-0.2/.gitignore +132 -0
  13. h2integrate-0.2/.pre-commit-config.yaml +34 -0
  14. h2integrate-0.2/CHANGELOG.md +59 -0
  15. h2integrate-0.2/LICENSE +31 -0
  16. h2integrate-0.2/PKG-INFO +361 -0
  17. h2integrate-0.2/README.md +242 -0
  18. h2integrate-0.2/docs/CONTRIBUTING.md +114 -0
  19. h2integrate-0.2/docs/_autosummary/greenheart.simulation.greenheart_simulation.rst +33 -0
  20. h2integrate-0.2/docs/_autosummary/greenheart.tools.optimization.openmdao.rst +23 -0
  21. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.h2integrate_simulation.rst +33 -0
  22. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.rst +31 -0
  23. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.ammonia.ammonia.rst +37 -0
  24. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.ammonia.rst +30 -0
  25. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.desal.desal_model.rst +16 -0
  26. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.desal.desal_model_eco.rst +16 -0
  27. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.desal.rst +31 -0
  28. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.H2_cost_model.rst +16 -0
  29. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer.rst +20 -0
  30. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer_Clusters.rst +26 -0
  31. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model.rst +20 -0
  32. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.PEM_electrolyzer_IVcurve.rst +26 -0
  33. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.PEM_tools.rst +19 -0
  34. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.optimization_utils_linear.rst +16 -0
  35. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint.rst +17 -0
  36. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.rst +41 -0
  37. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.run_PEM_master.rst +20 -0
  38. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.run_h2_PEM.rst +19 -0
  39. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.electrolysis.run_h2_clusters.rst +20 -0
  40. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.lined_rock_cavern.rst +20 -0
  41. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.rst +30 -0
  42. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage.rst +20 -0
  43. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.on_turbine.rst +30 -0
  44. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pipe_storage.rst +30 -0
  45. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage.rst +20 -0
  46. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all.rst +20 -0
  47. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_gas_function.rst +20 -0
  48. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.rst +31 -0
  49. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.rst +32 -0
  50. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.rst +25 -0
  51. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.von_mises.rst +22 -0
  52. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.rst +35 -0
  53. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.salt_cavern.rst +30 -0
  54. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.salt_cavern.salt_cavern.rst +20 -0
  55. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_storage.storage_sizing.rst +16 -0
  56. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_transport.h2_compression.rst +20 -0
  57. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_transport.h2_export_pipe.rst +21 -0
  58. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_transport.h2_pipe_array.rst +17 -0
  59. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.h2_transport.rst +32 -0
  60. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.hydrogen.rst +33 -0
  61. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.offshore.all_platforms.rst +17 -0
  62. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.offshore.fixed_platform.rst +27 -0
  63. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.offshore.floating_platform.rst +27 -0
  64. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.offshore.rst +32 -0
  65. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.rst +33 -0
  66. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.steel.rst +30 -0
  67. h2integrate-0.2/docs/_autosummary/h2integrate.simulation.technologies.steel.steel.rst +37 -0
  68. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.electrolysis.rst +19 -0
  69. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.finance.rst +36 -0
  70. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.hopp_mgmt.rst +17 -0
  71. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.hydrogen_mgmt.rst +20 -0
  72. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.rst +34 -0
  73. h2integrate-0.2/docs/_autosummary/h2integrate.tools.eco.utilities.rst +23 -0
  74. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.fileIO.rst +17 -0
  75. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.gc_PoseOptimization.rst +20 -0
  76. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.gc_run_greenheart.rst +16 -0
  77. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.mpi_tools.rst +19 -0
  78. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.openmdao.rst +23 -0
  79. h2integrate-0.2/docs/_autosummary/h2integrate.tools.optimization.rst +34 -0
  80. h2integrate-0.2/docs/_autosummary/h2integrate.tools.plant_sizing_estimation.rst +17 -0
  81. h2integrate-0.2/docs/_autosummary/h2integrate.tools.rst +32 -0
  82. h2integrate-0.2/docs/_config.yml +94 -0
  83. h2integrate-0.2/docs/_toc.yml +39 -0
  84. h2integrate-0.2/docs/api.md +12 -0
  85. h2integrate-0.2/docs/build_book.sh +2 -0
  86. h2integrate-0.2/docs/developer_guide/adding_a_new_technology.md +159 -0
  87. h2integrate-0.2/docs/developer_guide/class_structure.md +23 -0
  88. h2integrate-0.2/docs/developer_guide/coding_guidelines.md +15 -0
  89. h2integrate-0.2/docs/developer_guide/describing_whats_in_classes.md +36 -0
  90. h2integrate-0.2/docs/developer_guide/features_not_currently_implemented.md +12 -0
  91. h2integrate-0.2/docs/developer_guide/why_make_h2integrate.md +81 -0
  92. h2integrate-0.2/docs/examples/01-green-hydrogen.ipynb +386 -0
  93. h2integrate-0.2/docs/getting_started/expected_user_knowledge.md +34 -0
  94. h2integrate-0.2/docs/getting_started/install.md +166 -0
  95. h2integrate-0.2/docs/getting_started/what_h2integrate_does.md +6 -0
  96. h2integrate-0.2/docs/intro.md +13 -0
  97. h2integrate-0.2/docs/misc_resources/FAQ.md +15 -0
  98. h2integrate-0.2/docs/misc_resources/glossary.md +17 -0
  99. h2integrate-0.2/docs/user_guide/user_guide.md +11 -0
  100. h2integrate-0.2/environment.yml +10 -0
  101. h2integrate-0.2/examples/01-green-hydrogen.ipynb +441 -0
  102. h2integrate-0.2/examples/02-green-steel.ipynb +402 -0
  103. h2integrate-0.2/examples/03-green-ammonia.ipynb +387 -0
  104. h2integrate-0.2/examples/04-PEM_electrolyzer.ipynb +879 -0
  105. h2integrate-0.2/examples/README.md +53 -0
  106. h2integrate-0.2/examples/__init__.py +0 -0
  107. h2integrate-0.2/examples/inputs/floris/floris_input_lbw_6MW.yaml +70 -0
  108. h2integrate-0.2/examples/inputs/plant/default_fin_config.yaml +39 -0
  109. h2integrate-0.2/examples/inputs/plant/h2integrate_config_onshore-ammonia.yaml +360 -0
  110. h2integrate-0.2/examples/inputs/plant/h2integrate_config_onshore-hydrogen.yaml +308 -0
  111. h2integrate-0.2/examples/inputs/plant/h2integrate_config_onshore-steel.yaml +406 -0
  112. h2integrate-0.2/examples/inputs/plant/hopp_config.yaml +73 -0
  113. h2integrate-0.2/examples/inputs/power_profile/renewable_power_signal.csv +8761 -0
  114. h2integrate-0.2/examples/inputs/turbines/lbw_6MW.yaml +173 -0
  115. h2integrate-0.2/examples/inputs/weather/solar/47.5233_-92.5366_psmv3_60_2013.csv +8763 -0
  116. h2integrate-0.2/examples/inputs/weather/wind/47.5233_-92.5366_windtoolkit_2013_60min_100m_120m.srw +8765 -0
  117. h2integrate-0.2/h2integrate/__init__.py +1 -0
  118. h2integrate-0.2/h2integrate/simulation/__init__.py +0 -0
  119. h2integrate-0.2/h2integrate/simulation/h2integrate_simulation.py +2429 -0
  120. h2integrate-0.2/h2integrate/simulation/technologies/__init__.py +0 -0
  121. h2integrate-0.2/h2integrate/simulation/technologies/ammonia/__init__.py +0 -0
  122. h2integrate-0.2/h2integrate/simulation/technologies/ammonia/ammonia.py +711 -0
  123. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/__init__.py +1 -0
  124. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/desal/__init__.py +0 -0
  125. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/desal/desal_model.py +167 -0
  126. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/desal/desal_model_eco.py +136 -0
  127. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py +342 -0
  128. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_BOP/BOP_efficiency_BOL.csv +87 -0
  129. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_BOP/PEM_BOP.py +136 -0
  130. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_BOP/README.md +26 -0
  131. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer.py +516 -0
  132. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer_Clusters.py +1171 -0
  133. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_costs_Singlitico_model.py +400 -0
  134. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_costs_custom.py +24 -0
  135. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_electrolyzer_IVcurve.py +657 -0
  136. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/PEM_tools.py +58 -0
  137. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/__init__.py +13 -0
  138. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/optimization_utils_linear.py +200 -0
  139. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/pem_cost_tools.py +197 -0
  140. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/pem_mass_and_footprint.py +93 -0
  141. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py +289 -0
  142. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py +239 -0
  143. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py +110 -0
  144. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py +233 -0
  145. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb +146 -0
  146. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/Bulk Hydrogen Cost as Function of Capacity.docx +0 -0
  147. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/__init__.py +0 -0
  148. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/__init__.py +0 -0
  149. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py +179 -0
  150. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/on_turbine/README.md +117 -0
  151. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py +3 -0
  152. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/on_turbine/on_turbine_hydrogen_storage.py +527 -0
  153. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py +3 -0
  154. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py +187 -0
  155. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py +8 -0
  156. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_all.py +255 -0
  157. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_gas_function.py +791 -0
  158. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/README.md +54 -0
  159. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Tankinator.xlsx +0 -0
  160. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py +6 -0
  161. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/material_properties.json +503 -0
  162. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py +818 -0
  163. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/pressure_vessel/von_mises.py +97 -0
  164. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/salt_cavern/__init__.py +0 -0
  165. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py +179 -0
  166. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_storage/storage_sizing.py +84 -0
  167. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/__init__.py +0 -0
  168. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/data_tables/pipe_dimensions_metric.csv +44 -0
  169. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/data_tables/steel_costs_per_kg.csv +10 -0
  170. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/data_tables/steel_mechanical_props.csv +11 -0
  171. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/h2_compression.py +206 -0
  172. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/h2_export_pipe.py +436 -0
  173. h2integrate-0.2/h2integrate/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py +126 -0
  174. h2integrate-0.2/h2integrate/simulation/technologies/iron/__init__.py +0 -0
  175. h2integrate-0.2/h2integrate/simulation/technologies/iron/iron.py +365 -0
  176. h2integrate-0.2/h2integrate/simulation/technologies/iron/load_top_down_coeffs.py +74 -0
  177. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/__init__.py +0 -0
  178. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/cost_coeffs.csv +27 -0
  179. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/cost_inputs.csv +27 -0
  180. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/cost_model.py +126 -0
  181. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/finance_model.py +212 -0
  182. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/perf_coeffs.csv +29 -0
  183. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/perf_inputs.csv +29 -0
  184. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_ore/perf_model.py +95 -0
  185. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_transport/__init__.py +0 -0
  186. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_transport/iron_transport.py +146 -0
  187. h2integrate-0.2/h2integrate/simulation/technologies/iron/martin_transport/shipping_coords.csv +13 -0
  188. h2integrate-0.2/h2integrate/simulation/technologies/iron/model_locations.yaml +53 -0
  189. h2integrate-0.2/h2integrate/simulation/technologies/iron/peters/cost_coeffs.csv +3 -0
  190. h2integrate-0.2/h2integrate/simulation/technologies/iron/peters/cost_inputs.csv +3 -0
  191. h2integrate-0.2/h2integrate/simulation/technologies/iron/peters/cost_model.py +8 -0
  192. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/__init__.py +0 -0
  193. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/cost_coeffs.csv +38 -0
  194. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/cost_inputs.csv +72 -0
  195. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/cost_model.py +329 -0
  196. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/finance_model.py +262 -0
  197. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/perf_coeffs.csv +145 -0
  198. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/perf_inputs.csv +145 -0
  199. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner/perf_model.py +106 -0
  200. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner_ore/__init__.py +0 -0
  201. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner_ore/finance_model.py +210 -0
  202. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner_override/__init__.py +0 -0
  203. h2integrate-0.2/h2integrate/simulation/technologies/iron/rosner_override/finance_model.py +265 -0
  204. h2integrate-0.2/h2integrate/simulation/technologies/iron/stinn/cost_coeffs.csv +8 -0
  205. h2integrate-0.2/h2integrate/simulation/technologies/iron/stinn/cost_model.py +126 -0
  206. h2integrate-0.2/h2integrate/simulation/technologies/iron/top_down_coeffs.csv +18 -0
  207. h2integrate-0.2/h2integrate/simulation/technologies/offshore/__init__.py +8 -0
  208. h2integrate-0.2/h2integrate/simulation/technologies/offshore/all_platforms.py +65 -0
  209. h2integrate-0.2/h2integrate/simulation/technologies/offshore/example_fixed_project.yaml +16 -0
  210. h2integrate-0.2/h2integrate/simulation/technologies/offshore/example_floating_project.yaml +16 -0
  211. h2integrate-0.2/h2integrate/simulation/technologies/offshore/fixed_platform.py +311 -0
  212. h2integrate-0.2/h2integrate/simulation/technologies/offshore/floating_platform.py +357 -0
  213. h2integrate-0.2/h2integrate/simulation/technologies/steel/__init__.py +0 -0
  214. h2integrate-0.2/h2integrate/simulation/technologies/steel/steel.py +951 -0
  215. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/2020ATB_NREL_Reference_7MW_200.csv +90 -0
  216. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/H2AModel.py +1323 -0
  217. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/LCA_single_scenario.py +202 -0
  218. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/LCA_single_scenario_ProFAST.py +221 -0
  219. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/__init__.py +0 -0
  220. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/compressor.py +160 -0
  221. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/h2_main.py +728 -0
  222. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/h2_optimize_gf.py +145 -0
  223. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/h2_setup_optimize.py +708 -0
  224. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/hopp_for_h2.py +237 -0
  225. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/hopp_for_h2_floris.py +226 -0
  226. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/hydrogen_steel_pipe_cost_functions.py +230 -0
  227. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/run_h2a.py +97 -0
  228. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/simple_cash_annuals.py +37 -0
  229. h2integrate-0.2/h2integrate/to_organize/H2_Analysis/simple_dispatch.py +64 -0
  230. h2integrate-0.2/h2integrate/to_organize/__init__.py +0 -0
  231. h2integrate-0.2/h2integrate/to_organize/distributed_pipe_cost_analysis.py +265 -0
  232. h2integrate-0.2/h2integrate/to_organize/gradient_free.py +702 -0
  233. h2integrate-0.2/h2integrate/to_organize/hopp_tools_steel.py +3680 -0
  234. h2integrate-0.2/h2integrate/to_organize/hopp_tools_steel_EPR_12oct2023.py +3758 -0
  235. h2integrate-0.2/h2integrate/to_organize/hydrogen_steel_pipe_cost_functions.py +231 -0
  236. h2integrate-0.2/h2integrate/to_organize/inputs_py.py +223 -0
  237. h2integrate-0.2/h2integrate/to_organize/pipelineASME.py +314 -0
  238. h2integrate-0.2/h2integrate/to_organize/plot_battery.py +145 -0
  239. h2integrate-0.2/h2integrate/to_organize/plot_power_to_load.py +154 -0
  240. h2integrate-0.2/h2integrate/to_organize/plot_reopt_results.py +168 -0
  241. h2integrate-0.2/h2integrate/to_organize/plot_results.py +315 -0
  242. h2integrate-0.2/h2integrate/to_organize/plot_shortfall_curtailment.py +99 -0
  243. h2integrate-0.2/h2integrate/to_organize/probably_to_project/__init__.py +0 -0
  244. h2integrate-0.2/h2integrate/to_organize/probably_to_project/landbased_nationwide_LCOH.py +548 -0
  245. h2integrate-0.2/h2integrate/to_organize/probably_to_project/osw-h2.py +21 -0
  246. h2integrate-0.2/h2integrate/to_organize/probably_to_project/osw_h2_LCOH.py +720 -0
  247. h2integrate-0.2/h2integrate/to_organize/probably_to_project/run_generation_only.py +291 -0
  248. h2integrate-0.2/h2integrate/to_organize/probably_to_project/steel_model.py +861 -0
  249. h2integrate-0.2/h2integrate/to_organize/run_RODeO.py +515 -0
  250. h2integrate-0.2/h2integrate/to_organize/run_profast_for_ammonia.py +441 -0
  251. h2integrate-0.2/h2integrate/to_organize/run_profast_for_h2_transmission.py +284 -0
  252. h2integrate-0.2/h2integrate/to_organize/run_profast_for_hydrogen.py +1064 -0
  253. h2integrate-0.2/h2integrate/to_organize/run_profast_for_steel.py +670 -0
  254. h2integrate-0.2/h2integrate/to_organize/run_reopt.py +293 -0
  255. h2integrate-0.2/h2integrate/tools/__init__.py +0 -0
  256. h2integrate-0.2/h2integrate/tools/eco/__init__.py +5 -0
  257. h2integrate-0.2/h2integrate/tools/eco/electrolysis.py +583 -0
  258. h2integrate-0.2/h2integrate/tools/eco/finance.py +1834 -0
  259. h2integrate-0.2/h2integrate/tools/eco/hopp_mgmt.py +198 -0
  260. h2integrate-0.2/h2integrate/tools/eco/hydrogen_mgmt.py +612 -0
  261. h2integrate-0.2/h2integrate/tools/eco/utilities.py +3679 -0
  262. h2integrate-0.2/h2integrate/tools/h2integrate_sim_file_utils.py +260 -0
  263. h2integrate-0.2/h2integrate/tools/inflation/cepci.csv +29 -0
  264. h2integrate-0.2/h2integrate/tools/inflation/cpi.csv +16 -0
  265. h2integrate-0.2/h2integrate/tools/inflation/inflate.py +26 -0
  266. h2integrate-0.2/h2integrate/tools/optimization/__init__.py +0 -0
  267. h2integrate-0.2/h2integrate/tools/optimization/fileIO.py +112 -0
  268. h2integrate-0.2/h2integrate/tools/optimization/gc_PoseOptimization.py +662 -0
  269. h2integrate-0.2/h2integrate/tools/optimization/gc_run_h2integrate.py +238 -0
  270. h2integrate-0.2/h2integrate/tools/optimization/mpi_tools.py +149 -0
  271. h2integrate-0.2/h2integrate/tools/optimization/openmdao.py +463 -0
  272. h2integrate-0.2/h2integrate/tools/plant_sizing_estimation.py +83 -0
  273. h2integrate-0.2/h2integrate/tools/plot.py +250 -0
  274. h2integrate-0.2/h2integrate/tools/profast_reverse_tools.py +122 -0
  275. h2integrate-0.2/h2integrate/tools/profast_tools.py +263 -0
  276. h2integrate-0.2/h2integrate.egg-info/PKG-INFO +361 -0
  277. h2integrate-0.2/h2integrate.egg-info/SOURCES.txt +357 -0
  278. h2integrate-0.2/h2integrate.egg-info/dependency_links.txt +1 -0
  279. h2integrate-0.2/h2integrate.egg-info/requires.txt +61 -0
  280. h2integrate-0.2/h2integrate.egg-info/top_level.txt +1 -0
  281. h2integrate-0.2/pyproject.toml +270 -0
  282. h2integrate-0.2/resource_files/grid/dispatch_factors_ts.csv +8760 -0
  283. h2integrate-0.2/resource_files/grid/pricing-data-2015-IronMtn-002_factors.csv +8760 -0
  284. h2integrate-0.2/resource_files/site_details.csv +2 -0
  285. h2integrate-0.2/resource_files/solar/27.18624_-96.9516_psmv3_60_2013.csv +8763 -0
  286. h2integrate-0.2/resource_files/solar/34.22_-102.75_psmv3_60_2013.csv +8763 -0
  287. h2integrate-0.2/resource_files/solar/34.865371_-116.783023_psmv3_60_tmy.csv +8763 -0
  288. h2integrate-0.2/resource_files/solar/35.2018863_-101.945027_psmv3_60_2012.csv +8763 -0
  289. h2integrate-0.2/resource_files/solar/39.7555_-105.2211_psmv3_60_2012.csv +8763 -0
  290. h2integrate-0.2/resource_files/solar/47.5233_-92.5366_psmv3_60_2013.csv +8763 -0
  291. h2integrate-0.2/resource_files/utility_rate_response.json +1 -0
  292. h2integrate-0.2/resource_files/wave/Wave_resource_timeseries.csv +2923 -0
  293. h2integrate-0.2/resource_files/wind/27.18624_-96.9516_windtoolkit_2013_60min_160m_200m.srw +8765 -0
  294. h2integrate-0.2/resource_files/wind/34.22_-102.75_windtoolkit_2013_60min_100m_120m.srw +8765 -0
  295. h2integrate-0.2/resource_files/wind/35.2018863_-101.945027_windtoolkit_2012_60min_100m.srw +8765 -0
  296. h2integrate-0.2/resource_files/wind/35.2018863_-101.945027_windtoolkit_2012_60min_80m_100m.srw +8765 -0
  297. h2integrate-0.2/resource_files/wind/47.5233_-92.5366_windtoolkit_2013_60min_100m_120m.srw +8765 -0
  298. h2integrate-0.2/setup.cfg +4 -0
  299. h2integrate-0.2/tests/__init__.py +3 -0
  300. h2integrate-0.2/tests/conftest.py +16 -0
  301. h2integrate-0.2/tests/h2integrate/input_files/floris/floris_input_osw_18MW.yaml +118 -0
  302. h2integrate-0.2/tests/h2integrate/input_files/plant/default_fin_config.yaml +39 -0
  303. h2integrate-0.2/tests/h2integrate/input_files/plant/h2integrate_config.yaml +344 -0
  304. h2integrate-0.2/tests/h2integrate/input_files/plant/h2integrate_config_onshore.yaml +368 -0
  305. h2integrate-0.2/tests/h2integrate/input_files/plant/hopp_config.yaml +51 -0
  306. h2integrate-0.2/tests/h2integrate/input_files/plant/hopp_config_wind_wave.yaml +83 -0
  307. h2integrate-0.2/tests/h2integrate/input_files/plant/hopp_config_wind_wave_solar.yaml +88 -0
  308. h2integrate-0.2/tests/h2integrate/input_files/plant/hopp_config_wind_wave_solar_battery.yaml +105 -0
  309. h2integrate-0.2/tests/h2integrate/input_files/plant/orbit-config-osw_18MW-stripped.yaml +68 -0
  310. h2integrate-0.2/tests/h2integrate/input_files/turbines/osw_18MW.yaml +204 -0
  311. h2integrate-0.2/tests/h2integrate/inputs/floris_input.yaml +241 -0
  312. h2integrate-0.2/tests/h2integrate/inputs/hopp_config.yaml +47 -0
  313. h2integrate-0.2/tests/h2integrate/test_ammonia.py +194 -0
  314. h2integrate-0.2/tests/h2integrate/test_finance.py +39 -0
  315. h2integrate-0.2/tests/h2integrate/test_greenheart_system.py +491 -0
  316. h2integrate-0.2/tests/h2integrate/test_greenheart_utilities.py +43 -0
  317. h2integrate-0.2/tests/h2integrate/test_greensteel/input/floris/floris_input_lbw_6MW.yaml +78 -0
  318. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/default_fin_config.yaml +39 -0
  319. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/h2integrate_config_onshore_mn_2030.yaml +318 -0
  320. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/h2integrate_config_onshore_tx_2025.yaml +271 -0
  321. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/h2integrate_config_onshore_tx_2030.yaml +271 -0
  322. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/h2integrate_config_onshore_tx_2035.yaml +271 -0
  323. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/hopp_config_mn_2030.yaml +73 -0
  324. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/hopp_config_tx_2025.yaml +73 -0
  325. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/hopp_config_tx_2030.yaml +73 -0
  326. h2integrate-0.2/tests/h2integrate/test_greensteel/input/plant/hopp_config_tx_2035.yaml +73 -0
  327. h2integrate-0.2/tests/h2integrate/test_greensteel/input/turbines/lbw_6MW.yaml +175 -0
  328. h2integrate-0.2/tests/h2integrate/test_greensteel/test_greensteel.py +451 -0
  329. h2integrate-0.2/tests/h2integrate/test_hydrogen/input_files/GS_gridonly_power_signal.csv +8761 -0
  330. h2integrate-0.2/tests/h2integrate/test_hydrogen/input_files/GS_offgrid_power_signal.csv +8761 -0
  331. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_PEM_bop.py +97 -0
  332. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_PEM_costs_Singlitico_model.py +79 -0
  333. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_PEM_costs_custom.py +24 -0
  334. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_RO_desal.py +72 -0
  335. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_basic_h2_cost.py +190 -0
  336. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_electrolyzer_physics.py +264 -0
  337. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_h2_transport/test_h2_compressor.py +80 -0
  338. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py +132 -0
  339. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_h2_transport/test_h2_pipe_array.py +63 -0
  340. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_lined_rock_storage.py +64 -0
  341. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_pem_mass_and_footprint.py +18 -0
  342. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_pressure_vessel.py +317 -0
  343. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_pressurized_turbine.py +485 -0
  344. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_salt_cavern_storage.py +62 -0
  345. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_tankinator.py +348 -0
  346. h2integrate-0.2/tests/h2integrate/test_hydrogen/test_underground_pipe_storage.py +66 -0
  347. h2integrate-0.2/tests/h2integrate/test_iron/input/default_fin_config.yaml +39 -0
  348. h2integrate-0.2/tests/h2integrate/test_iron/input/h2integrate_config_modular.yaml +403 -0
  349. h2integrate-0.2/tests/h2integrate/test_iron/input/hopp_config.yaml +73 -0
  350. h2integrate-0.2/tests/h2integrate/test_iron/test_full_iron_process.py +51 -0
  351. h2integrate-0.2/tests/h2integrate/test_iron/test_iron_ore.py +191 -0
  352. h2integrate-0.2/tests/h2integrate/test_iron/test_iron_post.py +209 -0
  353. h2integrate-0.2/tests/h2integrate/test_iron/test_iron_win.py +211 -0
  354. h2integrate-0.2/tests/h2integrate/test_offshore/__init__.py +0 -0
  355. h2integrate-0.2/tests/h2integrate/test_offshore/test_fixed_platform.py +80 -0
  356. h2integrate-0.2/tests/h2integrate/test_offshore/test_floating_platform.py +102 -0
  357. h2integrate-0.2/tests/h2integrate/test_openmdao.py +446 -0
  358. h2integrate-0.2/tests/h2integrate/test_openmdao_mpi.py +208 -0
  359. h2integrate-0.2/tests/h2integrate/test_steel.py +298 -0
@@ -0,0 +1,10 @@
1
+ # Migrate code style to Ruff linting and formatting
2
+ 5010f84683f4e8c46c562c5f9cd9c17cc1459c1f
3
+ 1c9b986be16d87df1b8b0e351c9b839b6a3d8aed
4
+ 6208b1fcdafb48b11048dac173813d80bba6c9d9
5
+ b7ffc2b8e4a821680ce354e59c7362db8aa53197
6
+ 1ebbf6b32435bff565b628cde2a28c599a1a99ef
7
+ ce9f96cd49ff9dbbcf75c3a32ff300515c9fa593
8
+ 3e8d3abd343569833ece0ab4f4048a4bf43d0a94
9
+ 9f3f5c14e406aca284d01d6dd3b9c89e3c439acb
10
+ 36d49ab2c959ff26736c5ee01f5bcc8fd11ec24e
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a bug to help us improve
4
+ title: 'Bug report'
5
+ labels: "Type: Bug"
6
+ ---
7
+
8
+ <!--
9
+ Thank you for taking the time to report a bug. If you aren't certain whether an issue
10
+ is a bug, please first open a Discussion. Before submitting, please reread your
11
+ description to ensure that other readers can reasonably understand the issue
12
+ you're facing and the impact on your workflow or results.
13
+
14
+ IMPORTANT NOTES
15
+
16
+ 1. Replace all example text (contained in "<>") or anywhere specifically commenting to replace the
17
+ text, leaving any guiding HTML comments in place (formatted like this large block so it won't
18
+ show up in your Bug Report text.)
19
+ 2. Use GH flavored markdown: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax,
20
+ especially for code snippets, which should look like the following:
21
+ ```python
22
+ a = 1
23
+ b = 2
24
+ print(a + b)
25
+ ```
26
+ 3. Please be as thorough as possible when describing what went wrong, and what was expected from a
27
+ correct solution. The amount of information required to describe the bug may differ, but more
28
+ information is always helpful to ensure you receive the help you need.
29
+ -->
30
+
31
+ <!--The title should clearly define the issue succinctly.-->
32
+ # Add meaningful title here
33
+
34
+ <!-- Describe your bug/issue here using as much detail as necessary. -->
35
+
36
+
37
+ ## How to reproduce
38
+
39
+ <!-- Describe how another person with no context can recreate this issue. -->
40
+
41
+
42
+ ## Relevant output
43
+
44
+ <!-- Include any output, plots, tracebacks, or other means of communication here to add context to
45
+ the problem. All code and full tracebacks should be properly markdown formatted. -->
46
+
47
+
48
+ ## System Information
49
+ <!-- Add your information here. -->
50
+ - OS: <macOS 12.4>
51
+ <!-- e.g. Ubuntu 20.04 or macOS 10.12 -->
52
+ - Python version: <3.10.4>
53
+ <!-- All OS: `python --version`-->
54
+ - H2Integrate version: <0.1.1>
55
+ <!--
56
+ Unix: pip freeze | grep h2integrate | awk -F"git@" '/git@/{print $2}' | awk -F"#egg" '/#egg/{print $1}'
57
+ Windows: `pip list --format freeze | findstr h2integrate`
58
+ -->
59
+ - <Installed from source using an editable installation with developer tools: `pip install -e .[develop]`>
60
+ - Commit hash: <commit-hash>
61
+ <!--
62
+ Unix: `pip freeze | grep h2integrate | awk -F"git@" '/git@/{print $2}' | awk -F"#egg" '/#egg/{print $1}'`
63
+ Windows: `pip freeze | findstr h2integrate`, then copy the full git hash between "git@" and "#egg"
64
+ -->
65
+
66
+ ### Relevant library versions
67
+ <!--
68
+ Use `pip freeze` to gather the relevant versions, and use the markdown table formatting as
69
+ demonstrated below to replacing all relevant packages and their versions.
70
+ -->
71
+ | Package | Version |
72
+ | ------- | ------- |
73
+ | hopp | <3.1.1> |
74
+ | numpy | <1.26.4> |
75
+ | Pyomo | <6.8.0> |
76
+ | scipy | <1.14.1> |
77
+ | <another-relevant-package> | <version> |
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Usage question
4
+ url: https://github.com/NREL/H2Integrate/discussions
5
+ about: Have any questions about using H2Integrate? Post in Discussions to engage with the NREL team and H2Integrate community.
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: 'Feature request'
5
+ labels: 'Type: Enhancement'
6
+ ---
7
+
8
+ <!--
9
+ Thank you for taking the time to suggest a feature. Before submitting,
10
+ please reread your description to ensure that other readers can reasonably
11
+ understand the motivation and proposed solution.
12
+
13
+ IMPORTANT NOTES
14
+
15
+ 1. Leave all HTML comments in place (formatted like this large block so it won't show up in
16
+ your Feature Request text.)
17
+ 2. Use GH flavored markdown: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax,
18
+ especially for code snippets, which should look like the following:
19
+ ```python
20
+ a = 1
21
+ b = 2
22
+ print(a + b)
23
+ ```
24
+ 3. Please be as thorough as possible when describing what the proposed enhancement or feature should
25
+ do, including any finer details to guide implementation.
26
+ -->
27
+
28
+ <!--The title should clearly define the feature request/enhancement succinctly.-->
29
+ # Add meaningful title here
30
+
31
+ <!-- Describe the desired enhancement. -->
32
+
33
+
34
+ ## Proposed solution
35
+
36
+ <!-- Please include pseudocode (markdown-formatted), images, or any other visual aids to communicate the idea. -->
37
+
38
+
39
+ ## Alternatives considered
40
+
41
+ <!-- Describe workarounds or alternatives even if hacky or incomplete. Sometimes these are the best solution! -->
42
+
43
+
44
+ ## Additional context
45
+
46
+ <!-- Provide anything else that helps to communicate the idea here. -->
@@ -0,0 +1,78 @@
1
+
2
+ <!--
3
+ IMPORTANT NOTES
4
+
5
+ 1. Use GH flavored markdown when writing your description:
6
+ https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
7
+
8
+ 2. If all boxes in the PR Checklist cannot be checked, this PR should be marked as a draft.
9
+
10
+ 3. DO NOT DELTE ANYTHING FROM THIS TEMPLATE. If a section does not apply to you, simply write
11
+ "N/A" in the description.
12
+
13
+ 4. Code snippets to highlight new, modified, or problematic functionality are highly encouraged,
14
+ though not required. Be sure to use proper code higlighting as demonstrated below.
15
+
16
+ ```python
17
+ def a_func():
18
+ return 1
19
+
20
+ a = 1
21
+ b = a_func()
22
+ print(a + b)
23
+ ```
24
+ -->
25
+
26
+ <!--The title should clearly define your contribution succinctly.-->
27
+ # Add meaningful title here
28
+
29
+ <!-- Describe your feature here. Please include any code snippets or examples in this section. -->
30
+
31
+
32
+ ## PR Checklist
33
+
34
+ <!--Tick these boxes if they are complete, or format them as "[x]" for the markdown to render. -->
35
+ - [ ] `CHANGELOG.md` has been updated to describe the changes made in this PR
36
+ - [ ] Documentation
37
+ - [ ] Docstrings are up-to-date
38
+ - [ ] Related `docs/` files are up-to-date, or added when necessary
39
+ - [ ] Documentation has been rebuilt successfully
40
+ - [ ] Examples have been updated
41
+ - [ ] Tests pass (If not, and this is expected, please elaborate in the tests section)
42
+ - [ ] PR description thoroughly describes the new feature, bug fix, etc.
43
+
44
+ ## Related issues
45
+
46
+ <!--If one exists, link to a related GitHub Issue.-->
47
+
48
+
49
+ ## Impacted areas of the software
50
+
51
+ <!--
52
+ Replace the below example with any added or modified files, and briefly describe what has been changed or added, and why.
53
+ -->
54
+ - `path/to/file.extension`
55
+ - `method1`: What and why something was changed in one sentence or less.
56
+
57
+ ## Additional supporting information
58
+
59
+ <!--Add any other context about the problem here.-->
60
+
61
+
62
+ ## Test results, if applicable
63
+
64
+ <!--
65
+ Add the results from unit tests and regression tests here along with justification for any
66
+ failing test cases.
67
+ -->
68
+
69
+
70
+ <!--
71
+ __ For NREL use __
72
+ Release checklist:
73
+ - [ ] Update the version in h2integrate/__init__.py
74
+ - [ ] Verify docs builds correctly
75
+ - [ ] Create a tag on the main branch in the NREL/H2Integrate repository and push
76
+ - [ ] Ensure the Test PyPI build is successful
77
+ - [ ] Create a release on the main branch
78
+ -->
@@ -0,0 +1,38 @@
1
+ name: Testing
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ python-version: ["3.10", "3.11"]
11
+
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - name: Set up Python ${{ matrix.python-version }}
15
+ uses: actions/setup-python@v3
16
+ with:
17
+ python-version: ${{ matrix.python-version }}
18
+ - name: Install dependencies
19
+ env:
20
+ SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL: True
21
+ run: |
22
+ sudo apt-get update && sudo apt-get install -y libglpk-dev glpk-utils coinor-cbc
23
+ python -m pip install --upgrade pip
24
+ pip install git+https://github.com/NREL/HOPP@develop
25
+ pip install ".[develop]"
26
+ - name: Create env file
27
+ run: |
28
+ touch .env
29
+ # echo NREL_API_KEY=${{ secrets.NREL_API_KEY }} >> .env
30
+ # cat .env
31
+ - name: Run tests
32
+ run: |
33
+ PYTHONPATH=. pytest tests
34
+ - name: Lint with flake8
35
+ run: |
36
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
37
+ pip install flake8
38
+ flake8 . --count --exit-zero --statistics --ignore=E501
@@ -0,0 +1,21 @@
1
+ name: Test Documentation Build
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ build:
7
+
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v4
11
+ - name: Set up Python
12
+ uses: actions/setup-python@v5
13
+ with:
14
+ python-version: 3.11
15
+ - name: Install dependencies
16
+ run: |
17
+ pip install git+https://github.com/NREL/HOPP@develop
18
+ pip install ".[develop]"
19
+ - name: Build documentation
20
+ run: |
21
+ jupyter-book build docs/
@@ -0,0 +1,52 @@
1
+ name: deploy-book
2
+
3
+ # Run this when the master or main branch changes
4
+ on:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ jobs:
10
+ deploy-book:
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ pages: write
14
+ id-token: write
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python 3.11
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: 3.11
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ pip install git+https://github.com/NREL/HOPP@develop
26
+ pip install -e ".[develop]"
27
+
28
+ # (optional) Cache your executed notebooks between runs
29
+ # if you have config:
30
+ # execute:
31
+ # execute_notebooks: cache
32
+ # - name: cache executed notebooks
33
+ # uses: actions/cache@v3
34
+ # with:
35
+ # path: _build/.jupyter_cache
36
+ # key: jupyter-book-cache-${{ hashFiles('requirements.txt') }}
37
+
38
+ # Build the book
39
+ - name: Build the book
40
+ run: |
41
+ jupyter-book build docs/
42
+
43
+ # Upload the book's HTML as an artifact
44
+ - name: Upload artifact
45
+ uses: actions/upload-pages-artifact@v3
46
+ with:
47
+ path: "docs/_build/html"
48
+
49
+ # Deploy the book's HTML to GitHub Pages
50
+ - name: Deploy to GitHub Pages
51
+ id: deployment
52
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,18 @@
1
+ name: pre-commit
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ pre-commit:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Set up Python
14
+ uses: actions/setup-python@v5
15
+ with:
16
+ python-version: 3.9
17
+ - name: Run pre-commit
18
+ uses: pre-commit/action@v3.0.1
@@ -0,0 +1,31 @@
1
+ name: Upload to PyPi
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ deploy:
9
+ runs-on: ubuntu-latest
10
+ if: github.event.action == 'published'
11
+ environment:
12
+ name: pypi-publishing
13
+ url: https://pypi.org/p/h2integrate
14
+ permissions:
15
+ id-token: write
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: 3.9
22
+ - name: Build package
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install setuptools build wheel twine
26
+ python -m build
27
+ twine check --strict dist/*
28
+ - name: Publish package to PyPI
29
+ uses: pypa/gh-action-pypi-publish@release/v1
30
+ with:
31
+ verbose: True
@@ -0,0 +1,33 @@
1
+ name: Upload to Test PyPi
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ deploy:
10
+ runs-on: ubuntu-latest
11
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
12
+ environment:
13
+ name: pypi-publishing
14
+ url: https://test.pypi.org/p/h2integrate
15
+ permissions:
16
+ id-token: write
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: 3.9
23
+ - name: Build package
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install setuptools build wheel twine
27
+ python -m build
28
+ twine check --strict dist/*
29
+ - name: Publish package to PyPI
30
+ uses: pypa/gh-action-pypi-publish@release/v1
31
+ with:
32
+ verbose: True
33
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,132 @@
1
+ # Created by .ignore support plugin (hsz.mobi)
2
+ ### Python template
3
+ # Byte-compiled / optimized / DLL files
4
+ *__pycache__/*
5
+ *.py[cod]
6
+ *$py.class
7
+ *.pyc
8
+
9
+ log/
10
+ # needed for h2 test inputs: tests/analysis/results/
11
+ *_disp.txt
12
+
13
+ .idea/*
14
+ .idea/workspace.xml
15
+ .vscode/
16
+
17
+ .vscode/*
18
+
19
+ # Distribution / packaging
20
+ .Python
21
+ env*/*
22
+ build/
23
+ develop-eggs/
24
+ dist/
25
+ downloads/
26
+ eggs/
27
+ .eggs/
28
+ lib/
29
+ lib64/
30
+ parts/
31
+ sdist/
32
+ var/
33
+ *.egg-info/
34
+ .installed.cfg
35
+ *.egg
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *,cover
56
+ .hypothesis/
57
+
58
+ # Translations
59
+ *.mo
60
+ *.pot
61
+
62
+ # Django stuff:
63
+ *.log
64
+ local_settings.py
65
+
66
+ # Flask stuff:
67
+ instance/
68
+ .webassets-cache
69
+
70
+ # Scrapy stuff:
71
+ .scrapy
72
+
73
+ # Sphinx documentation
74
+ docs/_build/
75
+
76
+ # PyBuilder
77
+ target/
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # pyenv
83
+ .python-version
84
+
85
+ # celery beat schedule file
86
+ celerybeat-schedule
87
+
88
+ # dotenv
89
+ .env
90
+ .envrc
91
+
92
+ # virtualenv
93
+ .venv/
94
+ venv/
95
+ ENV/
96
+
97
+ # Spyder project settings
98
+ .spyderproject
99
+
100
+ # Rope project settings
101
+ .ropeproject
102
+
103
+ # Resource data
104
+ #resource_files/solar/*.csv
105
+ #resource_files/wind/*.srw
106
+
107
+ # Images, datafiles
108
+ *.png
109
+ *.xlsx
110
+
111
+ *.pkl
112
+ .DS_Store
113
+ *.val
114
+ *.db
115
+ *.db-shm
116
+ *.gz
117
+ *.db-wal
118
+
119
+ # H2Integrate structure specific
120
+ tests/h2integrate/data/*
121
+ tests/h2integrate/output.txt
122
+ tests/h2integrate/test_hydrogen/data/*
123
+ tests/h2integrate/test_hydrogen/output.txt
124
+ *speed_dir_data.csv
125
+ examples/h2integrate/*/data
126
+ examples/h2integrate/*/figures
127
+ tests/h2integrate/reports/
128
+ tests/h2integrate/test_hydrogen/output/
129
+
130
+ output*
131
+ snopt_history.txt
132
+ reports/*
@@ -0,0 +1,34 @@
1
+ default_language_version:
2
+ python: python3
3
+ repos:
4
+ - repo: https://github.com/pycqa/isort
5
+ rev: 5.12.0
6
+ hooks:
7
+ - id: isort
8
+ name: isort
9
+ stages: [pre-commit]
10
+
11
+ - repo: https://github.com/pre-commit/pre-commit-hooks
12
+ rev: v4.5.0
13
+ hooks:
14
+ - id: trailing-whitespace
15
+ - id: end-of-file-fixer
16
+ - id: check-executables-have-shebangs
17
+ - id: check-json
18
+ - id: check-yaml
19
+ args: [--unsafe] # allow Python constructors
20
+ - id: check-merge-conflict
21
+ - id: check-symlinks
22
+ - id: mixed-line-ending
23
+ - id: pretty-format-json
24
+ args: [--autofix]
25
+
26
+ - repo: https://github.com/astral-sh/ruff-pre-commit
27
+ # Ruff version.
28
+ rev: v0.8.1
29
+ hooks:
30
+ - id: ruff-format
31
+ types_or: [ python, pyi, jupyter ]
32
+ - id: ruff
33
+ types_or: [ python, pyi, jupyter ]
34
+ args: [ --fix, --unsafe-fixes]
@@ -0,0 +1,59 @@
1
+ # CHANGELOG
2
+
3
+ ## 0.2 [7 April 2025]
4
+
5
+ - Allow users to save the H2IntegrateOutput class as a yaml file and read that yaml to an instance of the output class
6
+ - Include new plotting capabilities: (1) hydrogen storage, production, and dispatch; (2) electricity and hydrogen dispatch
7
+ - Remove reference_plants from examples. Reference plants can now be found in the [ReferenceHybridSystemDesigns](https://github.com/NREL/ReferenceHybridSystemDesigns) repository.
8
+ - Use sentence capitalization for plot labels and legends
9
+ - Use "metric ton" instead of "tonne" or "metric tonne" in all internal naming and plots
10
+ - Fix bug in hydrogen dispatch plotting by storing time series of hydrogen demand by hour
11
+ - Update the PEM efficiency to 51.0 kWh/kg from 54.6 kWh/kg
12
+ - Bumped PySAM version to 6+ and HOPP to 3.2.0
13
+ - Removed defunct conda build and upload scripts
14
+ - Return full solution dictionary from ProFAST, allowing access to CRF and WACC
15
+ - Renamed code from GreenHEART to H2Integrate
16
+ - Added iron processing framework and capabilities [PR 90](https://github.com/NREL/H2Integrate/pull/90)
17
+ - Added Martin and Rosner iron ore models, performance and cost for each [PR 90](https://github.com/NREL/H2Integrate/pull/90)
18
+ - Added Rosner direct reduction iron (DRI) model, performance and cost [PR 90](https://github.com/NREL/H2Integrate/pull/90)
19
+ - Added Martin transport module for performance and cost of iron [PR 90](https://github.com/NREL/H2Integrate/pull/90)
20
+ - Added generalized Stinn cost model for electrolysis of arbitrary materials [PR 90](https://github.com/NREL/H2Integrate/pull/90)
21
+
22
+ ## v0.1.4 [4 February 2025]
23
+
24
+ - Adds `CoolProp` to `pyproject.toml`
25
+ - Changes units of `lcoe_real` in `HOPPComponent` from "MW*h" to "kW*h"
26
+ - Adds `pre-commit`, `ruff`, and `isort` checks, and CI workflow to ensure these steps aren't
27
+ skipped.
28
+ - Updates steel cost year to 2022
29
+ - Updates ammonia cost year to 2022
30
+ - Requires HOPP 3.1.1 or higher
31
+ - Updates tests to be compatible with HOPP 3.1.1 with ProFAST integration
32
+ - Removes support for python 3.9
33
+ - Add steel feedstock transport costs (lime, carbon, and iron ore pellets)
34
+ - Allow individual debt rate, equity rate, and debt/equity ratio/split for each subsystem
35
+ - Add initial docs focused on new H2Integrate development
36
+ - New documentation CI pipeline to publish documentation at nrel.github.io/H2Integrate/ and test
37
+ that the documentation site will build on each pull request.
38
+ - Placeholder documentation content has been removed from the site build
39
+
40
+ ## v0.1.3 [1 November 2024]
41
+
42
+ - Replaces the git ProFAST installation with a PyPI installation.
43
+ - Removed dependence on external electrolyzer repo
44
+ - Updated CI to use conda environments with reproducible environment artifacts
45
+ - Rename logger from "wisdem/weis" to "h2integrate"
46
+ - Remove unsupported optimization algorithms
47
+
48
+ ## v0.1.2 [28 October 2024]
49
+
50
+ - Minor updates to examples for NAWEA workshop.
51
+ - Adds `environment.yml` for easy environment creation and H2Integrate installation.
52
+
53
+ ## v0.1.1 [22 October 2024]
54
+
55
+ - ?
56
+
57
+ ## v0.1 [16 October 2024]
58
+
59
+ - Project has been separated from HOPP and moved into H2Integrate, removing all HOPP infrastructure.
@@ -0,0 +1,31 @@
1
+ **Note: The ProFAST model is distributed with H2Integrate but operates under a separate license agreement. Users must agree to the license terms of ProFAST located at `ProFAST/InternalUseTermsForDownloadableSoftware-ProFAST.docx`.**
2
+
3
+ BSD 3-Clause License
4
+
5
+ Copyright (c) 2024, Alliance for Sustainable Energy, LLC
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+
11
+ * Redistributions of source code must retain the above copyright notice, this
12
+ list of conditions and the following disclaimer.
13
+
14
+ * Redistributions in binary form must reproduce the above copyright notice,
15
+ this list of conditions and the following disclaimer in the documentation
16
+ and/or other materials provided with the distribution.
17
+
18
+ * Neither the name of the copyright holder nor the names of its
19
+ contributors may be used to endorse or promote products derived from
20
+ this software without specific prior written permission.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.