-
Notifications
You must be signed in to change notification settings - Fork 27
Removing more of old GreenHEART #384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Removing more of old GreenHEART #384
Conversation
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
elenya-grant
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think all these changes are awesome! Thanks so much for taking on this big clean-up effort! This looks good to me!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for removing the stuff under if __name__ == "__main__" part!
jaredthomas68
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on this clean up. I hate to see some of these things go, particularly since some of them are essential to the reference design work. I recognize we can't maintain them right now though.
| hydrogen_dmd: | ||
| n_clusters: 4 | ||
| cluster_rating_MW: 40 | ||
| pem_control_type: 'basic' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like the control type is pretty important. @elenya-grant has this been handled satisfactorily?
| # TODO: add control type as input! | ||
| clusters = self.create_clusters() # initialize clusters | ||
| if optimize: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why remove this? It seems like it could still be used
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would prefer to not remove things that still work
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was not tested or used in any code in the repo; unclear if it works. We could keep it but I'd want to add a test. @elenya-grant could you please weigh in how you want to handle or include different pem control types here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hate to deprecate this, but I guess we can't maintain it right now
…move_more_of_old_greenheart
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR performs a significant cleanup of the legacy GreenHEART framework by removing the simulation/technologies folder structure and reorganizing code into the new paradigm. The changes include:
- Deleting numerous test files for old technology models (steel, offshore platforms, hydrogen storage, electrolysis, finance)
- Moving iron-related tests and code from
simulation/technologies/irontoconverters/iron - Inlining hydrogen storage implementations into the new storage cost models
- Removing deprecated
pem_control_typeparameter from configuration files - Deleting finance and electrolysis modules from
tools/eco - Minor spelling corrections in compression module documentation
Reviewed changes
Copilot reviewed 125 out of 167 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/h2integrate/test_steel.py | Deleted - steel model tests removed (entire file) |
| tests/h2integrate/test_offshore/*.py | Deleted - offshore platform tests removed |
| tests/h2integrate/test_hydrogen/*.py | Deleted - multiple hydrogen technology tests removed |
| tests/h2integrate/test_iron/*.py | Updated import paths from simulation.technologies.iron to converters.iron |
| tests/h2integrate/test_iron/input/*.yaml | Removed deprecated pem_control_type parameter |
| h2integrate/storage/hydrogen/h2_storage_cost.py | Inlined storage implementations, added new tests, fixed unit conversion note |
| h2integrate/storage/hydrogen/h2_transport/h2_compression.py | Fixed spelling: "oulet" → "outlet" |
| h2integrate/storage/hydrogen/h2_transport/data_tables/*.csv | Added line numbers (cosmetic diff only) |
| h2integrate/tools/eco/*.py | Deleted finance and electrolysis modules |
| tests/h2integrate/input_files/plant/*.yaml | Deleted large test configuration files |
Comments suppressed due to low confidence (1)
h2integrate/converters/hydrogen/wombat_model.py:65
- This method requires 5 positional arguments, whereas overridden ElectrolyzerPerformanceBaseClass.compute requires 3.
This method requires 5 positional arguments, whereas overridden ECOElectrolyzerPerformanceModel.compute requires 3.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # # IF GRID CONNECTED | ||
| # if plant_config["plant"]["grid_connection"]: | ||
| # # NOTE: if grid-connected, it assumes that hydrogen demand is input and there is not | ||
| # # multi-cluster control strategies. | ||
| # This capability exists at the cluster level, not at the | ||
| # # system level. | ||
| # if config["sizing"]["hydrogen_dmd"] is not None: | ||
| # grid_connection_scenario = "grid-only" | ||
| # hydrogen_production_capacity_required_kgphr = config[ | ||
| # "sizing" | ||
| # ]["hydrogen_dmd"] | ||
| # energy_to_electrolyzer_kw = [] | ||
| # else: | ||
| # grid_connection_scenario = "off-grid" | ||
| # hydrogen_production_capacity_required_kgphr = [] | ||
| # energy_to_electrolyzer_kw = np.ones(8760) * electrolyzer_size_mw * 1e3 | ||
| # # IF NOT GRID CONNECTED | ||
| # else: |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment appears to contain commented-out code.
| # # IF GRID CONNECTED | |
| # if plant_config["plant"]["grid_connection"]: | |
| # # NOTE: if grid-connected, it assumes that hydrogen demand is input and there is not | |
| # # multi-cluster control strategies. | |
| # This capability exists at the cluster level, not at the | |
| # # system level. | |
| # if config["sizing"]["hydrogen_dmd"] is not None: | |
| # grid_connection_scenario = "grid-only" | |
| # hydrogen_production_capacity_required_kgphr = config[ | |
| # "sizing" | |
| # ]["hydrogen_dmd"] | |
| # energy_to_electrolyzer_kw = [] | |
| # else: | |
| # grid_connection_scenario = "off-grid" | |
| # hydrogen_production_capacity_required_kgphr = [] | |
| # energy_to_electrolyzer_kw = np.ones(8760) * electrolyzer_size_mw * 1e3 | |
| # # IF NOT GRID CONNECTED | |
| # else: |
| # else: | ||
| # grid_connection_scenario = "off-grid" | ||
| # hydrogen_production_capacity_required_kgphr = [] | ||
| # energy_to_electrolyzer_kw = np.ones(8760) * electrolyzer_size_mw * 1e3 |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment appears to contain commented-out code.
| # energy_to_electrolyzer_kw = np.ones(8760) * electrolyzer_size_mw * 1e3 |
| useful_life = plant_config["plant"]["plant_life"] | ||
| electrical_generation_timeseries_kw = inputs["electricity_in"] | ||
| electrolyzer_capex_kw = self.config.electrolyzer_capex | ||
| time_between_replacement = self.config.time_between_replacement |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable time_between_replacement is not used.
| time_between_replacement = self.config.time_between_replacement |
|
|
||
| # Capital costs provide by Hydrogen Production Cost From PEM Electrolysis - 2019 (HFTO | ||
| # Program Record) | ||
| stack_capital_cost = 342 # [$/kW] |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable stack_capital_cost is not used.
| stack_capital_cost = 342 # [$/kW] |
| permitting = 15 / 100 # [%] | ||
| land = 250000 # [$] | ||
|
|
||
| stack_replacment_cost = 15 / 100 # [% of installed capital cost] |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable stack_replacment_cost is not used.
| stack_replacment_cost = 15 / 100 # [% of installed capital cost] |
| outlet_pressure, system_flow_rate, n_compressors=n_compressors | ||
| ) | ||
| storage_compressor.compressor_power() | ||
| motor_rating, power = storage_compressor.compressor_system_power() |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable motor_rating is not used.
| outlet_pressure, system_flow_rate, n_compressors=n_compressors | ||
| ) | ||
| storage_compressor.compressor_power() | ||
| motor_rating, power = storage_compressor.compressor_system_power() |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Variable power is not used.
| if program_record: | ||
| total_direct_electrolyzer_cost_kw = ( | ||
| (stack_capital_cost * (1 + stack_installation_factor)) | ||
| + mechanical_bop_cost | ||
| + (electrical_bop_cost * (1 + elec_installation_factor)) | ||
| ) | ||
| else: | ||
| total_direct_electrolyzer_cost_kw = ( | ||
| (electrolyzer_capex_kw * (1 + stack_installation_factor)) | ||
| + mechanical_bop_cost | ||
| + (electrical_bop_cost * (1 + elec_installation_factor)) | ||
| ) |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This statement is unreachable.
| if program_record: | |
| total_direct_electrolyzer_cost_kw = ( | |
| (stack_capital_cost * (1 + stack_installation_factor)) | |
| + mechanical_bop_cost | |
| + (electrical_bop_cost * (1 + elec_installation_factor)) | |
| ) | |
| else: | |
| total_direct_electrolyzer_cost_kw = ( | |
| (electrolyzer_capex_kw * (1 + stack_installation_factor)) | |
| + mechanical_bop_cost | |
| + (electrical_bop_cost * (1 + elec_installation_factor)) | |
| ) | |
| total_direct_electrolyzer_cost_kw = ( | |
| (electrolyzer_capex_kw * (1 + stack_installation_factor)) | |
| + mechanical_bop_cost | |
| + (electrical_bop_cost * (1 + elec_installation_factor)) | |
| ) |
| else: | ||
| amortized_refurbish_cost = ( | ||
| (total_direct_electrolyzer_cost_kw * stack_replacment_cost) | ||
| * max(((useful_life * 8760 * cap_factor) / time_between_replacement - 1), 0) | ||
| / useful_life | ||
| / 8760 | ||
| / cap_factor | ||
| * 1000 | ||
| ) |
Copilot
AI
Dec 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This statement is unreachable.
| else: | |
| amortized_refurbish_cost = ( | |
| (total_direct_electrolyzer_cost_kw * stack_replacment_cost) | |
| * max(((useful_life * 8760 * cap_factor) / time_between_replacement - 1), 0) | |
| / useful_life | |
| / 8760 | |
| / cap_factor | |
| * 1000 | |
| ) |
…move_more_of_old_greenheart
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Thanks @johnjasa , this was a tricky bit of work.
| from h2integrate.converters.hydrogen.electrolyzer_baseclass import ElectrolyzerPerformanceBaseClass | ||
|
|
||
|
|
||
| def ceildiv(a, b): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there a reason to (1) put this directly in the pem_electrolyzer.py instead of in utilities or (2) not use math.ceil()?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No reason not to use ceil(), was a holdover from HOPP code. Updated accordingly, thanks Jared!
| capacity_factor: float = field() | ||
|
|
||
|
|
||
| @define |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason the cost and financial model config is at the top now instead of by the cost and finance model?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No reason, just got reshuffled. I moved it back so the config is right before the component that uses it.
I want to get this PR in before others; was previously reviewed and modified by Kaitlin
* Example set up to use doc co2, need to updated mcm locally * Running with co2 connection (not correctly) * Running example with plots * Making tighter plots * Plot colors * Making new folder for methanol doc example * Repopulating co2h example * Methanol doc with financials * Config updates from merge * Getting tests passing * Example chart set up * Changelog update * Tests fixes * Fix test * Adding line to skip mcm test if not installed * update comments * Splitting electricity * CO2 storage working, need to check timeseries * Remove wind file * Reasonable asset sizing * Optimized * Test fix * Fix precommit * Removed co2 capture rate mt * Switching lots of tech config values from a .csv (#242) * Switching HB cases * Docstring updates * Running while checking data types * Test getting there * Test working * Docs * Updated docs and tests * pre-commit fix --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Custom Finance Model (#247) * intermediate udpates to h2integrate_model for user defined custom finance models * added ability to have user defined custom finance model and showcased in example 8 * updated docs * updated CHANGELOG * Minor reordering in docs * Fix pre-commit spacing * simplified simple_lco finance model in example 8 * updated doc page based on feedback * updated example 8 test value because of prior changes to wind resource --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Throw error for missing resource or missing resource connection (#284) * added errors for missing resource connection or missing resource * indented assert statements in new tests * Minor error message updates --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * minor clean up * minor clean up * Removing commented out config block * Fix local test failures on test_hybrid_energy_plant_example (#283) * Test fixed * Fix precommit * Adding iterations in driver_config * commodity-neutral transporters and basic operations (#293) * added generic combiner, splitter and summer models * updated combiner and splitter to power_combiner and power_splitter * added tests for generic splitter and combiner * removed electricity combiner and spliter from supported models * removed electricity combiner and electricity splitter * updated invalid mode splitter test * Minor typo fexes * update docs * fix example test * Added tests for consumption summer * Combined generic summers for production and consumption * remove extra unused code --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Updated/Fixed SQL Recording (#291) * updated set_recorders and added call to it in h2integrate_model.py * updated changelog * added tests for updates to recorder * updated conftest to prevent errors * removed env variables from test_recorder in attempt to fix CI tests --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Flexible Finance Streams (#294) * wip commodity streams * minor update, wip * updated example 22 to use commodity stream and updated test * added another example based on example 16 to show commodity stream usage * fixed bug causing test failures * added documentation of commodity_stream * removed old examples from ng firming work * updated example 19 and tests for commodity stream and updated generic summer units * updated technologies in battery finance subgroup in example 19 * added commodity stream to ex 15 to test functionality with combiner * fixed bug with doc and oae * made subtest for ex 19 more clear * added comments to plant configs --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> * GOES Solar Resource Models (#279) * added solar resource draft * started adding doc strings for solar resource * added solar resource api calls * added solar resource api calls * added solar resource docs * added solar resource data file from goes api call * added solar resource dir to gitignore * added tests for solar resource and updated pysam solar tests * updated solar cost model tests * added docstrings and inline comments to pysam pvwatts model * Adding init file * removed legacy solar resource tests * removed legacy solar resource files * updated year for solar resource test * added all goes api models * added all solar resource datasets to supported models * renamed goes_v4_solar_api to goes_aggregated_v4_solar_api * updated solar resource imports for tests * updated solar resource docs * removed old solar resource model * added tests for other goes solar resource models * updated changelog * cleaned up docs * added regions covered to docs * doc clean up * fix typos * remove commented code * renamed solar resource models * updated docs to explain tmy tgy and tdy * Minor doc changes and streamlined setup methods for GOES * fixed breaking tests --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: Jasa <jjasa@nrel.gov> * Sprucing up plots for white paper * Add a bool to driver_config for creating OM reports (#308) * Added bool for turning off OM reports * Reverting framework test * Added test for create_om_reports * Minor opt formulation fixes (#317) * Pyomo dispatch (#211) * refactor open loop controller classes * update inputs for control model functionality * refactor model processing * pre-commit formatting updates * missing driver_config from refactor * pre-commit formatting fix * adding missing driver_config declaration to open loop controller base class * shift from generic to * correct incorrect comment * new controller directory structure * add *_out/ to .gitignore to avoid clutter * edit change log * demand controller working and tested in single-tech system * add h2 dispatch example * working with pass through * complete h2 dispatch example and corresponding example test * h2 dispatch example plot * add doc strings and other comments/explanations * update docs * rename control_model to control_strategy * update changelog and test_all_examples * update example for h2 rule-based dispatch * add PyXDSM output to .gitignore * rename control_methods to control_strategies * rename * rename * restore openloop_controllers.py from develop * replace old openloop contents with new * remove control_strategies/openloop_controllers.py * move openloop_controllers.py to control_strategies directory * move openloop_controllers.py back to controllers/ * fix typo * revert cost_coeffs.csv changes * update examples for financial group default naming and control naming changes * typing adjustment reverted by hook * Removed time_steps as an input to controllers * minor refactor to demand controller * create base class for Pyomo dispatch rules for individual technologies * Made demand profile available as an OpenMDAO input * Added back persistent variables * add infrastructure for pyomo dispatch * input files for pyomo dispatch test * remove debugging artifacts * remove copy shape from demand profile to allow users to specify the demand profile in the config * revert base class start * enable passing of pyomo objects for pyomo dispatch * add battery baseclass * add initial pysam battery wrapper; note, not fully functional * add heuristic dispatch controller for battery from HOPP * include dispatch rule framework * add heuristic dispatch test * generalize heuristic dispatch and change battery units to kW from MW * update for financial input rework * restructuring control and dispatch folders * split out pyomo comtrol tests * move previously missed pyomo test * wip * move storage pyomo rules to storage rules base class * propogate use of baseclass for pyomo rules to technologies * successfully pass rules * dynamically set pyomo rule names * allow dispatch rules in dispatch tech * pass pyomo_dispatch_solver to storage performance model * reorder so control and dispatch rules are put into tech groups first * updating pysam battery model * add more pseudo code * update pysam battery model * update pyomo controller, separating from openloop controller * WIP: heuristic controller test update * a step to generalize matching dispatch techs group names * update heuristic load following battery dispatch test * generalize the return of pyomo blocks * bring in changes from elenya-grant/dev/battery to allow battery tests to run * add logic for over charging/dischargin and move demand to be an openMDAO input * update test values for new logic and add demand as openMDAO input * updated battery dispatch tests to included min and max SOC tests * Battery cost model and updates to performance model (#3) * added battery cost model and updated pysam battery so capacity is input --------- Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> * run pre-commit hooks back to fc3bbde * precommit adjustments * update heuristic battery dispatch * update h2storage naming * increase grid limit value so it is not a limiting factor * set default value for grid_limit to be high * remove grid limit from test input file * update test for heuristic battery controller * rename test input folder for h2_storage * generalize naming to be technology agnostic * update to get n_timesteps and dt from plant_config * update electricity out from battery to remove charged energy * WIP: example 18; NOTE: mod in h2integrate_model is stand-in for demand module * fix typo Co-authored-by: John Jasa <john.jasa@nrel.gov> * fix typo Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update h2integrate/storage/battery/pysam_battery.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update h2integrate/core/h2integrate_model.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * Reworked setup order in H2I * update pysam battery logic to finally be correct, plus example * updating test and example * WIP: update h2storage to use new heuristic structure * battery control pyomo tests all passing * refactor demand no longer required by performance model * wip: separation of dispatch and simulate * Removed policy_parameters throughout * removed unused tech_config_heuristic in test_controllers * removed cost_year from WindPlantCostModelConfig * removed unused battery baseclasses * removed policy parameters from test_controllers plant configs * wip: fix pysam battery usage * wip: debug p_chargeable * wip: adding local checks * Making pyomo control options a config * Updating after merge * Merging; pre-commit fix * finance fix * correct logic and update tests * swap np.max for np.maximum * Working on testing (#4) * units fix and merge_shared_inputs * Update SOC start value * Update battery power output keys and adjust tolerances * update tests --------- Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> * get all tests passing * update example 14 * update names from 'resource' to 'commodity' * add abs_tol for max SOC test * add rtol to max SOC test * adjust tol * adjust tol for unmet demand test * add more checks on how much power the battery can charge or discharge * update tolerance * adjust tol * adjust expected values * rename resource to commodity for dispatch and battery. print warning if unable to generate xdsm diagram rather than raising an error * remove internal battery sizing method in favor of using the builtin one from PySAM. * remove commented code * update comments and doc strings based on feedback * update doc strings and validators * add test for example 18 * remove code from usage: pyomo [-h] [--version] {build-extensions,convert,download-extensions,help,install-extras,model-viewer,run,solve,test-solvers} ... This is the main driver for the Pyomo optimization software. options: -h, --help show this help message and exit --version show program's version number and exit subcommands: {build-extensions,convert,download-extensions,help,install-extras,model-viewer,run,solve,test-solvers} build-extensions Build compiled extension modules convert Convert a Pyomo model to another format download-extensions Download compiled extension modules help Print help information. install-extras Install "extra" packages that Pyomo can leverage. model-viewer Run the Pyomo model viewer run Execute a command from the Pyomo bin (or Scripts) directory. solve Optimize a model test-solvers Test Pyomo solvers ------------------------------------------------------------------------- Pyomo supports a variety of modeling and optimization capabilities, which are executed either as subcommands of 'pyomo' or as separate commands. Use the 'help' subcommand to get information about the capabilities installed with Pyomo. Additionally, each subcommand supports independent command-line options. Use the -h option to print details for a subcommand. For example, type pyomo solve -h to print information about the `solve` subcommand. branch that will be saved for the pr later * fix example 14 plant input * remove changes that have been saved in for later pr * roll back h2 pyomo dispatch - save for later in 'pyomo_h2' for another pr * pull dt and n_timesteps from plant_config * move h2 pyomo test inputs out of pyomo and into pyomo_h2 for a later pr * move input_power from being a discrete_input for openmdao to being in the input yaml and config * make names in battery and control more explicit * create pysam battery with pyomo heuristic system test * include generic converter rules * change 'excess' to 'unused' in accordance with naming discussion * remove h2 storage rules * shift to generic dispatch for pyomo with storage techs * adjust test from battery dispatch rules to generic dispatch rules * update modify_tech_config function to run model.setup() internally by default, with the option to not run model.setup() * change location for example 18 (wind battery dispatch) to match example 19 (simple dispatch) to avoid saving more resource files in git * remove TODOs that are not needed in this PR anymore. * update doc strings * generalize pyomo storage rules * remove comments specific to pyomo_opt * edit doc string * include notebook version of example 18 * remove notebook version * add control framework documentation * repair errors arising due to renaming * update changelog * rename test, rename example 18 input yaml * unify unit specifications to rates and unify names between all techs * update resource_name to commodity_name, resource_units to commodity_units, and kg to kg/h * revert switch from excess_acid to unused_acid * update docs after bringing in commodity stream PR (#294) * update links in control docs * update doc strings to clarify what is included in commodity_out for storage and control * correct naming for h2 storage input for electrolyzer rating * change from battery_electricity_out to battery_electricity_discharge and add some test cleanup * correct naming typo and add pyomo comment in docs * Update docs/control/control_overview.md Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update docs/technology_models/pysam_battery.md Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update docs/technology_models/pysam_battery.md Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update examples/18_pyomo_heuristic_dispatch/18_run_pyomo_heuristic_dispatch.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update examples/18_pyomo_heuristic_dispatch/18_run_pyomo_heuristic_dispatch.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * put error in place for compute method of PyomoRuleBaseClass * remove incorrect error raising and correct comment * change from _demand_in to _demand * rename run script for example 18 * add comments * Update h2integrate/storage/battery/battery_baseclass.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update h2integrate/storage/battery/battery_baseclass.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * update pysam battery call without controller to have a pseudo control option * Update h2integrate/storage/battery/pysam_battery.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * Update h2integrate/storage/battery/pysam_battery.py Co-authored-by: John Jasa <john.jasa@nrel.gov> * remove finance parameters because they are unused - we are only testing control and battery outputs here * update docs * Update h2integrate/storage/battery/battery_baseclass.py Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * Update h2integrate/control/control_rules/converters/generic_converter.py Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * move battery tests to battery directory * open loop html * Apply suggested doc updates from code review Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * updating formatting to fix tests * fixing formatting for pre-commit hooks * fixing formatting from including suggestions from code reivew * more pre-commit fixes * add error message if provided tech_name does not match the actual tech name * Consolidated pyomo controller test files * include file for testing that was left out * include file for testing that was left out * update docs to clarify system_commodity_interface_limit * update min/max storage fraction handling to use provided limits * remove unused battery themal function (it is in PySAM BatteryTools) --------- Co-authored-by: bayc <christopher.j.bay@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: Chris Bay <12664940+bayc@users.noreply.github.com> Co-authored-by: John Jasa <john.jasa@nrel.gov> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> * added conftest files to prevent clutter (#311) Co-authored-by: John Jasa <johnjasa11@gmail.com> * Updated recorder to be attached to driver or model (#295) * updated recorder to be attached to driver or model * Minor cleanup to recorder logic --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * updated api docs to include more useful information (#323) * Sync battery cost model and controller inputs (#290) * synced up battery cost model inputs and demand openloop controller inputs * cleaned up battery cost model * updated battery cost model and openloop controller tests * added test for battery cost with demand openloop controller * updated changelog * merging * Renaming resource rate units to commodity units * Updated example 18 * updated demand openloop controller and atb battery cost model * added generic storage cost model * Updating to remove battery mentions in generic cost model comments * updated based on reviewer feedback * added user warning to atb battery cost model * updated failing tests * fixed example 3 input file to prevent failing tests --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * PySAM Wind and Basic Turbine Layout (#306) * added intermediate wind plant refactor with new validator * updated wind plant and added layout method * merged wind_plant_pysam * updated compute method of wind plant pysam * added test for wind plant performance * bugfix in layout and added layout tests * minor additions to docstrings * added example using pysam wind and added tests * updated keyname in pysam wind test * Minor syntax changes * added layout test and added inputs for pysam powercurve recalc function * added atb wind cost model * added wind atb cost model to supported models * update docstrings * update docs * updated example 26 to use wind ATB cost model * Fixing some tests; added example 22 in * WIP; reworking examples * add turbine plotting for pysam wind model * Removing errant examples * pre-commit fixes * remove default turbine spacing for basic grid layout * Added wind plant doc page * Removed natural gas examples test script * Updating example 16 * update examples to run pysam wind converter and use wind atb cost model * remove basic windplant performance and cost models * update docs * update docs tech overview * tests * Fixing test_tools.py * Updated pyomo example due to wind plant changes --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: bayc <christopher.j.bay@gmail.com> * Added CsvGenerator option for design of experiments (#314) * added example input files * added csv generator as doe option and new methods to check the csv file beforehand * minor bugfixes and updates * added jupyter notebook for example 20 * Added doc page and updated pyproject.toml * added test for unique filename function * updated CHANGELOG.md * updated example 20 jupyter notebook * added test for new example with csv gen * Minor changes during review * added inline comments to utilities function --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Net Present Value Financial Models (#310) * added ProFAST NPV to supported models and put in example 26 and tests * updated npv calc inputs * added draft version of NPV financial calc * update commodity * example with NPV * fixed cost breakdown column renaming * add var om * update integration test * add npv integration test * Moved commodity sell price to an input * updated finance models so npv has model and commodity specific inputs and outputs to prevent errors and no unused outputs in npv * fixed lco breakdown function and added tests for some profast tools * added lco breakdown output to profast and simple profast test * add integration test for profast npv * added tests for profast npv and moved prexisting finance tests * added test for simple npv model * updating naming convention in simple npv * updated commodity sell price input name for simple npv * update naming to finance * change units for clarity * base ProFAST baseclass and added new finance models to supported models * added coproduct to ProFAST base class * Adding comments and a test from PR reviews * update documentation * reduce naming logic for outputting results * update pathname * remove discount rate comments that were not quite right --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> * Added functionality for loading yamls and finding files (#313) * moved some functions from validation to utilities and added new functions * updated load_yaml import * added tests for new functions * updated load_config and collect_custom_models in H2IntegrateModel * bugfix in yaml dump * updated changelog * attempted bugfix for test_geologic_h2 * updated find_file to fix failing tests * updated find_file() * added error for unexpected situation in find_file * added more detailed error message for debugging * added more detailed value error response * hopefully added bugfix * Adding docstring and comments * minor cleanup to utilities * added docs on file searching * changed title for new doc page * updated logic for handling absolute paths * Docs updates * Minor refactoring and docstring updates for filepath handling * minor clarification in docs and updated config_file to config_input * minor bug fix in find file function --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> Co-authored-by: kbrunik <kbrunik@gmail.com> * Recording and Loading SQL Files: Example and Doc page (#322) * added recorder to example 8 and added docs for sql files * Minor docs edits * Minor docs edits * added clarification to doc --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * Merge Geologic Hydrogen Branch into Develop (#354) * Synced up with spreadsheet model * Fixing test assert values --------- Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Merge Iron Branch into Develop (#360) * Switching HB cases * Getting through to plot * Fixing hydrogen ratio * Running plots * Changing TX site back to default * Fix plot * Removing methanol * Made iron example files, no code to run them * Creating wrapper * It runs! * Fixes to lca * run_iron reproducing number from old setup * added more inputs to iron wrapper, changed lcoe to be in USD per MWh * minor cleanups to tech config and iron wrapper * added test for baseline case * added more iron tests and added docstring to IronConfig * connected taconite pellet input * added iron ore cost and performance model * iron ore tests are passing * cleaned up iron ore tests * Renaming iron config inputs * added init file * added test init file * added iron electrowinning model * All iron cases being tested * rename files * Added iron to CI * added iron transport model * Updated ammonia synloop example * Reverting changes to 12 example * Fixes for some examples * Reverting some HOPP wrapper changes * updated test value for chicago iron ore transport * added geopy to dependencies * eaf wip * finish testing * Running iron_mine as example * Old and new closely matching * Getting ready to merge * Reverting example * Run all cases in example * Fixing tests * Fixing om test assertions * Merge branch 'iron-dev2' into iron-merge2 (#341) * remove ammonia changes * update example number * Removing h2integrate_simulation --------- Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Open-Meteo Wind Resource (#332) * changed C to degC in wind resource baseclass * added open-meteo wind resource model and tests * updated pytest skiptest decorator for mcm package --------- Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com> * Natural Gas Plant operation with electricity demand (#334) * pull update ng files * updated natural gas example, tests and model * update ng test * update documentation * Correctin NG test values * updated system_capacity to system_capacity_mw --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Improving the readability of the `post_process` method (#361) * Removing the need for boundaries * WIP: checkpointing potential print changes * Using rich instead, looks nice * Using rich instead, looks nice * Cleaned up printing a bit * Moved method to function * Removed extra lines from plant_configs * Apply suggestions from code review Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com> * Fixes based on input * Added back solar resource after merge * Added back solar resource after merge --------- Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com> * Fixing ammonia stoichiometry (#363) * Fixing ammonia stoichiometry * Updating changelog * Removing size_mode --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Minor bugfix to ProFAST output naming (#368) * minor fix to profast output naming * actually fixed output naming and added subtest to check * Decoupled H2 Storage Performance and Cost Models (#324) * split out h2 storage cost models * updated cost models and made h2 storage auto sizing model * updated h2 storage cost tests * updated example 12 and remaining models using old h2 storage * updated failing tests and removed old h2 storage model from supported models * moved and updated mch tests * added tests for mch wrapper but failing * intermediate change * updated and added tests for mch storage * added doc strings for MCH model * changed h2 storage autosizing and updated example input files * generalized h2 storage auto sizing * moved autosizing storage model * removed h2sam as model option * added docstrings and minor cleanups to h2_storage_cost * added docstrings and updated docs * fixed test_framework failing test * update h2 storage model names * added sizing_mode input to h2 cost models --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * Post-processing: summarize data in .sql file and export to csv (#366) * added methods to summarize data from sql file * added recorder_path as attribute to h2i and added sql summarizing to post_process * updated convert_sql_to_csv_summary to work if run in parallel * added sbutests to example 20 to check csv summarizing * minor fixes --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Added library folder for commonly used inputs (#369) * added library folder for pysam option files * renamed pysam input files * updated filenames in examples * Update GeoH2 Subsurface Modeling (#367) * update performance and cost models * small mods * modify outputs to fit h2i framework * integrated finance * remove old test value * add cost tests * change from well_lifetime to plant_life * use cepci and cpi in mathur model * documentation --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Standalone Iron Mine (#364) * Switching HB cases * Getting through to plot * Fixing hydrogen ratio * Running plots * Changing TX site back to default * Fix plot * Removing methanol * Made iron example files, no code to run them * Creating wrapper * It runs! * Fixes to lca * run_iron reproducing number from old setup * added more inputs to iron wrapper, changed lcoe to be in USD per MWh * minor cleanups to tech config and iron wrapper * added test for baseline case * added more iron tests and added docstring to IronConfig * connected taconite pellet input * added iron ore cost and performance model * iron ore tests are passing * cleaned up iron ore tests * Renaming iron config inputs * added init file * added test init file * added iron electrowinning model * All iron cases being tested * rename files * Added iron to CI * added iron transport model * Updated ammonia synloop example * Reverting changes to 12 example * Fixes for some examples * Reverting some HOPP wrapper changes * updated test value for chicago iron ore transport * added geopy to dependencies * eaf wip * finish testing * Running iron_mine as example * Old and new closely matching * Getting ready to merge * Reverting example * Run all cases in example * Fixing tests * Fixing om test assertions * added performance model for martin ore * added cost model for martin ore * added test for martin ore cost model * added the start of some doc strings and comments * added comments to test * removed duplicate iron example * fixed bug that was introduced in output_txt of profast_base * added standalone iron mine performance models * another profast bugfix to fix failing tests * removed added ammonia example files * removed commented out code and added docstrings * Comparing old and new mine * Adding cpi back in to cost_model * updated handling cost year in martin mine cost model * updated cost model to handle target dollar years outside of cpi range * removed duplicate coefficient files --------- Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> Co-authored-by: kbrunik <kbrunik@gmail.com> * Ability to sweep sites in design of experiments (DOEs) (#336) * attempted adding latitude and longitude as inputs * made example for lat lon sweep * got sweeping sites to work in example 22 * added test for new example * added solar resource file for example 22 * added lat and lon to river resource to prevent errors * added subtest for example 15 on resource filepaths * added logic on whether or not to change resource location * added new approach for resolving complex logic to handle edge-cases * minor updates * updated openmeteo wind api wrapper to take lat/lon as inputs * updated doc page and changelog [skip ci] * Minor changes * minor changes based on feedback * updated resource variable to determine whether to update resource data * updated example 22 run script to write csv summary of sql file * minor comments added to resource_base * updated docstring in resource base * edgecase bugfix in resource_base * actually fixed edgecase bug --------- Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * prettified postprocessing outputs a little bit (#378) * NSRDB Solar Resource Models for Himawari and Meteosat Prime Meridian (#377) * added meteosat prime meridian models * added himawari solar api models * added himawari tmy dataset * added tests and new resource files for added new solar resource models * added pvwatts integration tests with resource * added new solar resource models to supported_models.py * added doc pages for new models * updated changelog * finished updating doc pages * renamed file and class for solar api baseclass and updated imports * Corrected 'himwari' -> 'himawari' throughout --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Pin jupyter-book version in pyproject.toml * Fix typo in CONTRIBUTING.md note section (#383) * Load Demand Component (#328) * added flexible load demand component * Update h2integrate/core/load_demand.py clean up ramping constraint flexibility Co-authored-by: John Jasa <john.jasa@nrel.gov> * change upper bound on some demand inputs * Minor changes to flexible demand * minor change from feedback * added flexibility constraints as inputs to load demand * updated recorder * cherry-pick smash; fix bad merging * updated load demand inputs and outputs to align with controllers * removed lines in pose_optimization that arent relevant to this PR * aligned demand input naming * updated ex 19 to define demand w load_demand component * minor change to validator in demand openloop controller * moved and renamed controllers * reverted changes to example 19 * added some docstrings to converter openloop controllers * added some more minor docstrings * inheritance reorg * rename files * move tests * converter test * homogenize naming * docstrings * docs * example * remove unused files * flexible example * added unit tests for flexible demand * minor updates to docs for flexible load * Fix desc for ramp up * added rated_commodity_demand as input to flexible demand controller * docs reorg * typo * minor updates to comments and docstrings [skip ci] * Modifications based on PR feedback --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <john.jasa@nrel.gov> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Grid Components (#340) * grid models * Added grid as feedstock * update examples * add grid buying converter * clarify units with parentheses * Adding singular grid component * Cleaning up grid files * Removed unnecessary tests * add grid to elec producing techs list * Updated tests due to changes from develop * added coproduct test and bugfix in profast base * Minor updates based on PR feedback * Iterations based on PR feedback * Updated names in test * docs wip * Updated example path * Added readme for example 23 * docs * fix tests * Updates to grid doc * Updated grid example * Updating grid example number * Grid updates based on PR feedback --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> * geo h2 doc page (#380) * geo h2 doc page * Updated geoh2 docs minorly --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * New PR Template (#390) * update PR template * update based on PR feedback * PR feedback * Removing more of old GreenHEART (#384) * Removing unneeded files and tests * WIP working through steel * Removed offshore * Deleting more old files * Removed simple unused files * Moving basic H2 cost * Removed defunct pressure vessel and pem_control_type * Removed old tests * Updated test values * moved singlitico model * Removing unused electrolyzer files * Added back pem master * Moving PEM model * Big refactor and removal of hydrogen storage from simulation/technologies * Shifting more electrolyzer files * Fixed and noted behavior * Fixed bug in steel calc config for o2 heat integration * Moving iron files and adding back singlitico test * Fixed iron transport * Reverted steel example test values * Reverted hydrogen storage test values * fixing iron paths * Updates for PR * Updating based on PR comments * removed h2 pipe code and tests * Added back many more docstrings and comments for the hydrogen storage * fix tests * Removing defunct code per PR review * Minor refactoring based on PR feedback * Added note on primary commodity electricity tech --------- Co-authored-by: kbrunik <kbrunik@gmail.com> * Allow for starts-with matching for technology names in electricity producing techs (#397) * allow starts with matching and not just exact matching in electricity_producing_techs * add tests for is_electricity_producer * add error check that custom models are not created with the same name and different class definitions * update doc * Added note on primary commodity electricity tech --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Correct name spelling from 'Corey' to 'Cory' * Update LICENSE to remove ProFAST note Removed note about ProFAST model license agreement. * add zenodo citation * Update CHANGELOG with new features and improvements corresponding to PR #397 (#411) Updated changelog to include new features and improvements relevant to PR #397 that were accidentally not push prior to merging. * Allow generic combiner to handle as many inflow streams as desired (#406) * make generic combiner able to handle as many inflows as desired * update changelog, docstrings, and combiner test for multiple inflow streams >2 * update docs * update docs --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Demonstrating different sizing modes with H2 electrolyzer (#198) * Attempting standalone pem * feedstock_size mode working with profiles * Working all 3 modes * Added demo notebook * Typographical changes in ex 14 doc * Restoring electrolyzer_size_mw_cost name * Updating example post-merge * Renaming for smaller PR * Removing feedstock and product profiles to simplify PR * Defining sizing modes in electrolyzer * Getting modes properly named * Need access to full tech_config * Example working * Solving all the way to pf.solve_price in iterative mode * Notebook updated * Added iterative mode * WIP: working on iterative grouping * Updating tech_configs * Updated to work in H2I 0.4 * Attempting to get all tests passing * Tests be passin * Fixing notebook * Iterative mode 'working' * Updates to make iterative mode work * Minor changes based on chat with Jonathan * Removing whole tech config * Updating new example * Renaming electrolyzer size variable * COBYLA working with one converter... * Removing resize_by_tech * Optimizer running with multiple converters * Co-optimizing successfully * Adding capacity factors * Clarify capacity factors, fix wombat test * Docs, changelog, docstrings * Example number change * Added tests for sizing modes * PR cleanup * Attempting JSONDecodeError fix * Again attempting to fix JSONDecodeError * Fix JSONDecodeError for real this time * Fine I'll make separate config files * Try moving the tests to test_all_examples? * Revert "Try moving the tests to test_all_examples?" This reverts commit bf1d7e3. * Revert "Fine I'll make separate config files" This reverts commit c032aca. * Adding solar and wind resource filepaths * Changes for elenya * Added require_connection to profast total commodity inputs * Minor typographical changes to sizing modes docs * Minor changes to the sizing mode setup() * Minor changes to the sizing mode setup() * updated example 22 python script * Changes for John's review * Renaming resize_by_flow to flow_used_for_sizing * Fixed failing finance tests by connecting total commodity produced * Cleaning up example files * Accidentally deleted a "t" * Added IVC for total produced electricity * Updated example number * Resolving example name change * Added back missing files from merge * Moving size_mode to attr * Updated size_modes throughout * Updated ci to run * Made all config classes kw_only * Updated tests after kw_only change * Fixed EAF test * reverted CI branch change * Added docstrings to hydrogen utilities --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> * Moved last of the high-level tests (#412) * Move h2 compressor test * Moved iron tests * Removed defunct files in tests * Moved test all examples * Removed last test folder at high level * Reverted rosner cost coeffs * Updated changelog * Added back conftest * Fixed test folder naming * Added back init file * Moved test * Prepping for v0.5.0 release (#414) * Updating changelog for v0.5.0 * Minor changelog modification --------- Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: Jasa <jjasa@nrel.gov> Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com> Co-authored-by: bayc <christopher.j.bay@gmail.com> Co-authored-by: Chris Bay <12664940+bayc@users.noreply.github.com> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com>
Removing more of old GreenHEART
This is more cleanup of the older organization from the prior GreenHEART framework.
Specifically, we had the
simulation/technologiesfolder still there despite it not fitting within the new paradigm.I've reorganized these files in a few different ways:
dropped_featurelabelI'm especially looking for feedback or issue creation on capabilities that are not represented in the current framework to ensure we capture the lack of those capabilities.
Type of Contribution
General PR Checklist
CHANGELOG.mdhas been updated to describe the changes made in this PRdocs/files are up-to-date, or added when necessaryRelated issues
#355
#356
#388
#389
#391
#392
#394
#395
#396
#397
#398
#399
#400
#401
#403
Impacted areas of the software
Simulation Technologies & Computations
simulation/technologies/hydrogen/electrolysis/*converters/hydrogenmodule. This centralizes thepem_masterand related logic, removing the need for the deprecatedpem_control_typeswitching logic.basic_h2_costandsinglitico_modelcomputations were explicitly moved and refactored to align with the new flat file structure, replacing the unnecessarily nested legacy implementations.simulation/technologies/hydrogen/storage/*simulation/technologies/steel/*(and related)simulation/technologiesfolder.Configuration & Documentation
examples/*/tech_config.yaml: Removed the unusedpem_control_typeparameter from all example configurations to reflect the deprecated logic.docs/*: Pruned references to deprecated electrolyzer cost/performance models and updated the developer guide to match current standards.Additional supporting information
A future PR will remove or replace the prior test structure and integrate it within the new framework's paradigm.
Test results, if applicable
Prior tests for individual technologies were moved directly to the folders where the converters or storage technologies live.