Skip to content
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

Distributed pressure vessel computations #120

Merged
merged 8 commits into from
Mar 30, 2023

Conversation

cfrontin
Copy link
Contributor

@cfrontin cfrontin commented Mar 27, 2023

Added distributed pressure vessel functions.

Additive changes only.

All new methods unit tested against gold pyrite values.

@cfrontin cfrontin changed the title Feature/offshore h2 Distributed pressure vessel computations Mar 27, 2023
Copy link
Collaborator

@jaredthomas68 jaredthomas68 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks pretty good.

Note that energy is in kWh/kg, so the energy should not be multiplied by N_sites in the distributed case as I understand it.

Also, it would be good to check the monolithic and distributed results against each other relatively. This is especially important since we don't have any hard values to test against. At least we know the monolithic should be cheaper, use less energy, etc.

@cfrontin
Copy link
Contributor Author

Note that energy is in kWh/kg, so the energy should not be multiplied by N_sites in the distributed case as I understand it.

I'm not sure that that's true? See:

energy_per_kg_h2 = self.compressed_gas_function.energy_function(capacity_kg)/capacity_kg

Also, it would be good to check the monolithic and distributed results against each other relatively.

For this you mean just a >= comparison test? Or perhaps making sure a ratio matches?

@jaredthomas68 jaredthomas68 merged commit caf157b into NREL:feature/offshore-h2 Mar 30, 2023
camirmas added a commit that referenced this pull request Oct 25, 2023
* moved wind plant power generation out of the loop, added solar and storage to profast

* profast for h2 updated for general use

* fully integrated new electrolyzer model and added stack replacement schedule to profast

* run_profast_for_hydrogen modified to use either user-set electrolyzer efficiency or rated electrolyzer model efficiency

* added user-defined electrolyzer parameters to electrolyzer model, hopp_tools_steel has workaround for WY site not added to grid prices and cambium data files

* removed workaround for Wyoming site not added to grid price csv

* Updated a few things in profast for hydrogen interface to make sure grid cases work properly

* moving files into new directory structure and updating __init__.py files

* updating tests to accommodate the new directory structure

* updating h2_analysis script to accommodate new directory structure

* reorganize simple h2 cost model file

* remove degradation boolean as default to function calls

* "fixed up nice path"

* Updated wind farm with new design process (13 percent EOL Degradation and using local wind data for design)

* added user-defined end of life efficiency for electrolyzer, fixed storage cost bug

* added the distributed pressure vessel stuff.

* remove monopile pv storage

* remove monopile test.

* uptime degradation value can be adjusted to reference values

* fixed small typo in uptime recalc call

* Small fix to run_profast_for_hydrogen.py

* Add method for optimizing power

* cleaned up the calls, added new tests per comments on #120

* Corrected typo in output file writing and fixed lcoh breakdown so that it is still correct with stack replacements

* Added solar and battery storage parametric sizing sweep as separate function

* added updates run PEM file

* have optimized PEM controller locally integrated

* fixed optimization script import

* removed unused files, import calls to removed files, and minor bug fix in optimized controller

* working on eco update.

* black reformatting

* Divide optimization into chunks

* Divide a year into chunk

* make pv and battery optional plant compoenents in eco example

* allow user to specify desired mean windspeed

* include onshore substation

* provide mean windspeed at lat lon to ORBIT if user does not speficy

* re-include onshore substation capex

* added changes to make pressure vessel storage at-turbine work.

* eco example should not use hopp_tools

* include test script for h2 cost

* add some plotting code to the pem model for debugging

* electrolyzer/storage nomenclature refactor.

* switch logic on refurbishment costs

* convert to at-turbine storage distinguished by type rather than incorrectly as location.

* continued fixes to get the type/location cleanup done.

* better config setup.

* readding missing files/changes

* updates to CI

* Cleaned up script to function after merge. Still does not report out results for solar-param sweep cases.

* don't allow capacity factor over 1 in cost model, if it is greater than 1 then lower it and raise runtime warning

* fix logic for running with turbine storage capacity as the capacity

* let max in-tower h2 storage determine h2 storage capacity

* set default storage type back to none

* provide access to alternate PEM cost model from Singlitico 2021

* add plotting code to PEM cost model. include minor corrections elsewhere

* include energy from correct sources (grid vs renewable)

* refactoring

* Got solar-storage param sweep cases writing to output files

* partially fixed bug when running parametric sweep with PySAM

* updated local copy of run_PEM_master for optimization code bug fix from previous commit

* Fixed issue causing problems with hybrid-grid cases with both wind and solar

* refactoring, put floris/sam model option in input file, minor cleanup

* Cleaned up a few minor things

* update eco example

* get onshore costs through automatic ORBIT conection. Onshore substation included in export system costs

* Added Wyoming wholesale and retail grid prices

* save precent breakdown of wind farm capex

* var name fix

* Corrected a file to enable WY cases to run; re-defined electrolyzer capacity factor with better definition; added wind plant size estimates as a function of location and grid connectivity scenario for PySAM runs; normalized steel production to 1 M TPY and reported out steel production margin

* added in stack replacement schedule creation, checking if stack has reached end of life during the simulation, and removed bug in fatigue degradation calculation if stack is never turned on

* partially re-organized electrolyzer script to replace current electrolyzer model in the future, hopefully will improve flexibility and readability

* initial skeleton for power electronics model in the future

* modified optimize function of electrolyzer control script to be compatible with HOPP inputs

* reformat plots, generate paths for plots, add onshore substation to plots

* Add new optimization module with cbc solver

* Updated storage costs to make geologic storage costs more accurate at high storage capacities

* Updated electrolyzer costs

* Fix shapes of outputs

* Add test nb

* updating setup.py for new directory structure

* adding ORBIT to requirements

* removing unecessary import

* updating import statements

* updating tests

* updating output typing

* further updating of output types

* Got new off-grid floris cases working and did a substantial overhaul on file naming and output writing

* added grid connected cases to electrolyzer model and removed production delay at start of simulation

* [model] Added ren frac in hybrid cases and ITC for solar & battery

* updated electrolyzer sizing based on wind size and minor fixes for grid-connected electrolysis

* define scenarios adjusted for debuging purposes, no major changes

* implemented a specific grid-connected run function in electrolyzer as temporary workaround

* Added hydrogen production to energy profiles file output

* in debug-format, no major changes

* cleaned up comments

* removed unnecessary personal files

* fixed solar parametric sweep for changes made in hopp_tools_steel.run_H2_PEM_sim and run_profast_for_hydrogen

* define scenarios parameters reset to defaults

* added back in the unused electrolyzer model files (unused electrolyzer code is in hybrid/Electrolyzer_Models, the most recent electrolzyer models are in hybrid/PEM_Model_2Push

* [model] LCA improvements

- typo in run_profast_for_steel.py
- parameters added to definitions in run_profast_for_hydrogen.py and _green_steel_ammonia...py

* [model] changes so that no conflicts with Elenya's merge occur

* First attempt at resolving merge conflicts with Elenya's PR

* Second attempt at resolve conflicts with Elenya's PR

* Third attempt to resolve conflicts with Elenya's PR

* [model] Post-processing LCA script update

* Various updates to improve accuracy of hybrid-grid cases and policy implementations

* Rounded up electrolyzer capacity to nearest 40 MW, and rounded up PySAM wind farm size to nearest multiple of turbine rating

* updating testing requirements for python version

* adding CoolProp to requirements

* adding missing Tankinator file

* adding missing test file for results

* Added grid-connected floris files

* updating pandas method used in test

* limiting CI to python 3.8

* Modified grid-connected floris files to match 516.3MW rating (with 13 percent degradation included)

* Added capex to output files, changed depreciation period, re-ran SMR cases, restructured output file naming, updated stack optimizer to work for Windows machines

* Updated optimization PEM controller so that switching cost is a function of electrolzyer cost and not hard-coded

* Some initial runs

* Some more results

* Distributed scenarios

* adding model input taml template for code sprint

* updating import statements

* updating test_run_hopp_calc.py

* updating pandas append to concat

* Adding input file for dispatch

* Adding dispatch/power_sources input file

* adding fixed_platform.yaml input structure

* updating yaml name

* adding yaml input structures for resource directory

* Updating yaml files to use class names

* Fixed some bugs in ammonia and steel profast scripts and added results database files

* Adding inputs for dispatch power storage

* Adding input file for battery.py

* Adding input file for grid.py

* Adding input file for power_source.py

* Add input file for wind_source.py

* Updated lcoh vs time plot and cleaned up output folder

* Adding input files for hybrid_simulation.py and pv_source.py

* updating hybrid_simulation.yaml

* Adding input file for clustering.py

* Adding input files for layout files

* Adding flicker input files

* Adding input files for reopt and utility_rate

* Adding input file for desal model

* Adding input files for h2 compression

* Adding input files for hydrogen storage modules

* Adding final electrolyzer input files

* update h2 input file

* Updated plotting scripts

* Added electrical losses back into energy_to_electrolyzer for distributed cases

* Base policy and a few sensitivity cases

* Re-ran distributed cases adding back 4.24% of turbine losses

* Updated databases and plotting scripts

* Fixed issue with solar param sweep and updated plotting script to include base policy

* add utilities.py with yaml include capability

* Re-ran wind-PV cases and centralized off-grid wind cases

* Combined new results with relevant old results

* Added hybrid grid wind only cases

* Storage and degradation sensitivity cases

* Updated plotting scripts and results files

* Added profiles and profast outputs for LCA

* Minor changes to LCA script

* Added mid-electrolyzer cost scenario results

* Couple more mid-cost scenario results

* Updated a few plotting scripts and some results

* [model] modified labor cost savings

* Added natural gas price error bars to LCOH barcharts

* updating more import paths

* adding attrs as a requirement

* adding base class structure

* adding base hopp class

* adding a skeleton for hopp_interface

* changing "Examples" directory reference to "examples"

* adding outputs so that the script doesn't break on future runs; will want to update to automatically create results folders if they don't exist

* updating import paths

* updating models from changes in green steel

* building out hopp_interface

* building out hopp.py to use input yaml

* Renaming floris class and moving into directory

* moving example floris input file

* updating CI to run python 3.10; fixing import statement

* adding base classes

* adding logging manager based on floris logging manager

* adding attrs type declaration file

* changing multiprocessing back to multiprocessing_on_dill

* rolling the CI back to pyython 3.8 from 3.10

* Changing typing syntax to be compatible with python 3.8

* Update __init__.py (#194)

I think this line is obsolete

* Test fixes + `green_steel_cleanup` merge (#198)

* Added ORBIT citation and references. Commented each function, citing section/equations used or repurposed from this analysis.

* last comment changes

* reformat plots, generate paths for plots, add onshore substation to plots

* on-turbine pressure vessel visualization. updates to grid only

* fix plot. fix grid-only

* correct power, correct technology usage

* Added Floating Platform Model and testsl

* initial code for custom orbit layout

* use custome layout for ORBIT and FLORIS - IN PROGRESS

* correct visualization given different h2 storage types on turbine

* updates to example simulation file

* Updated Floating Platform Model and tests

* Update to fixed and floating platform models, Add test for Floating, Add example yaml file for floating

* Updated test section to work with ORBIT 1.06

* Fixed equation ref. comment

* Call to SemiTaut Branch in Orbit to pull mooring costs, Update to the variable names to match Orbit Nomenclature in yamls in .py

* Added new plotting script to show all years and locations on the same figure

* Add sources to test files, Update floating cost to match ORBIT Technical report and update to test file

* Added a script to plot regional sensitivity

* Improved regional sensitivity plotting script

* Update to source information for test files

* minor modifications to example

* Remove Project code

* working on refactor... broken scripts.

* examples/H2_Analysis removed, replaced with temp hopp/to_organize submodules.

pushed along to the point that green_steel_ammonia_define_scenarios.py
runs.

* Move LCA_green_steel and ProFAST files to Project repo

* changes induced by move to project repo

* improved project/software splits, coupled with greensteel commit: c9f1eb729dfc824e35e717feb518e902fd0387c1

* Add clarity to depth limitation on example_floating_project.yaml and floating_platform.py

* Remove project codes and move software codes into HOPP/hopp/to_organize or respective directories

* Update import statements and import files that other files depend on

* removing duplicate base.py

* reinstante hopp_for_h2_floris.py

* hotfix to make refactored floris compatible with old run scripts.

* fix hopp_tools_steel

* Update import statements to paths already in repo

* Restore LCA_single_scenario_Profast.py as run_profast_for_hydrogen.py needs it

* Remove Duplicates, update import statements

* Test file restore with history

* Delete Test move

* Rename of Test file move

* Test

* Test 2

* Test

* Move H2_Analysis files to this branch with history

* Test

* Test

* test

* Move H2_Analysis files that keep history from feature/green_steel_ammonia branch

* Test

* Restore run_profast scripts with history

* Move LCA_single_scenario files into to organize and keep history

* Removed files that had no history and replaced them in commit before this

* Updated import statments to restored files with history

* Deleted duplicate files that had no history with them/Replaced in to_organize2

* Update import statements to direct to files in to_organize2

* comments

* moving towards better separation.

* correct how the fixed platform is being used

* check ORBIT for already registered FlexPlatformDesign and FixedPlatformInstallation phases

* Update CI Action to run on PRs (#151)

* Update CI Action to run on PRs

* Add CI Badge to README.md

* Fix failing hybrid test

* correct typo

* remove old print statements

* i think green steel openmdao version is working.

* Revised comments on floating project depth limitations

* sanitizing my branch to match upstream

* restore run rodeo

* move run rodeo

* break out distributed pipe cost.

* mv dist pipe cost.

* working on getting tests running

* working toward reconciliation w/ ckiefer

* removed all of to_organize2, history preserved in to_organize with .

* trying to get tests to run under pytest

* typo fix

* getting more tests running

* improved nrel api handling, trailing whitespace removal.

* add orbit to requirements

* working on getting Avangrid code to run

* correct orbit requirement line

* add pyaml-include to requirements

* adding charles's fix.

* update hopp for h2 floris

* enable scaling wind farm costs to expected wind farm capex

* ignore all pycache directories at all levels

* remove obsolete shapely version spec

* change which desal model is being called

* allow expected_plant_costs to be missing in plant_config

* added option for run_h2_PEM model to use IVcurve model.

* fix conflict w/ pull

* update .gitignore

* less some plots, eco example working.

* remove comments

* Added and changed some files to get green steel code to work

* Fixed an issue with storage ITC in run_profast_for_hydrogen.py

* Cleanup + test fixes (#189)

* Remove redundant resource files

* Fix clustering tests

* Remove unneeded tests

We determined in our last Refactor meeting that these are not real tests and should be removed.

* Limit shapely version

There's currently a range of shapely versions that work for HOPP, and this is reflected in `master`. If we want to loosen this constraint, we'll need to figure out why the tests fail on current versions of the package.

* Fix test_csp imports

* Revert PySAM to 3.0.0

This change broke tests in tests/hopp/test_hybrid, I'm not sure why, but we'll need to revisit if we want to upgrade.

* Fix documentation build

* Disable test_pressure_vessel

* Fix test_custom_financial

* Reorganize tests into tests/hopp

* Disable analysis tests

Met with Kaitlin Brunik (@kbrunik) today to discuss these particular analysis tests. These are based on outdated examples, and need to be re-assessed alongside the code in the holdover `to_organize` directory, which contains a number of files that likely belong as project code rather than usage examples for the repository.

* Update Custom Financial Model (#195)

* pull in changes from pysam_update_capacity

* fix import

* update tests

* undo a commenting

* BatteryStateless (#196)

* pull in changes from pysam_update_capacity

* fix import

* update tests

* add batttery_stateless

* break out create_max_gross_profit_objective by tech

* fix tests

* fix minor comments

* update .gitignore

* Remove more resource files

Another attempt at removing files that are not explicitly used in the code.

* Re-add clobbered changes and fix imports

---------

Co-authored-by: Darice L Guittet <dguittet@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>

* Revert "Update __init__.py (#194)"

This reverts commit 12ba476.

---------

Co-authored-by: nriccobo <Nicholas.Riccobono@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>
Co-authored-by: Kiefer <ckiefer@nrel.gov>
Co-authored-by: Charles Kiefer <107942102+ckiefer14@users.noreply.github.com>
Co-authored-by: Evan <Evan.Reznicek@nrel.gov>
Co-authored-by: Cory Frontin <cory.frontin@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com>
Co-authored-by: bayc <christopher.j.bay@gmail.com>
Co-authored-by: Darice L Guittet <dguittet@nrel.gov>

* Refactor SiteInfo (#202)

* Refactor SiteInfo class

* Remove double-negatives in SiteInfo

Everything works the same, but now users will need to specify `wind=False` or `solar=False` in the initialization of `SiteInfo`, rather than modifying the data dictionary with `no_wind` or `no_solar`.

* Update SiteInfo fields and add converter doc

* Merge recent changes on `master` (#209)

* Update CI Action to run on PRs (#151)

* Update CI Action to run on PRs

* Add CI Badge to README.md

* Fix failing hybrid test

* Update Custom Financial Model (#195)

* pull in changes from pysam_update_capacity

* fix import

* update tests

* undo a commenting

* BatteryStateless (#196)

* pull in changes from pysam_update_capacity

* fix import

* update tests

* add batttery_stateless

* break out create_max_gross_profit_objective by tech

* fix tests

* fix minor comments

* Remove nlopt from requirements.txt (#199)

* Modify Wind Layout Parameters (#157)

* change get_evenly_spaced_points_along_border

* update ci.yml

* update ci.yml

* update requirements

* fix flicker heatmap indexing

* Battery max cycles (#203)

* pull in changes from pysam_update_capacity

* fix import

* update tests

* add batttery_stateless

* break out create_max_gross_profit_objective by tech

* fix tests

* fix minor comments

* add battery cycle limits

* fix tests

* fix tests

* fix mutable defaults

---------

Co-authored-by: Darice L Guittet <dguittet@nrel.gov>

* Small updates to get things working with Green Steel

* Small changes to get working with latest version of ProFAST

* Remove network calls from tests (#205)

* Remove network calls from tests

This update removes network calls wherever they exist, and also adds new unit tests for functionality related to API calls.

* Clean up

* Updates so that incentives are applied per year for first 10 years rather than just first year

* Wave model integration (#133)

* reformat plots, generate paths for plots, add onshore substation to plots

* on-turbine pressure vessel visualization. updates to grid only

* fix plot. fix grid-only

* correct power, correct technology usage

* initial code for custom orbit layout

* use custome layout for ORBIT and FLORIS - IN PROGRESS

* correct visualization given different h2 storage types on turbine

* updates to example simulation file

* Adding MHK capabilities, still has bugs.

* Fixed reading resource data in.

* Setting system values in __init__

* Can run system_model

* System model and tests for MHK Wave

* Added cost model to MHKWavePlant

* Added no_wave to dict

* Added wave to HybridSimulation

* Initial attempt at wave dispatch model

* update ci.yml

* add missing requirements

* fix import error

* fix requirements

* fix requirements

* fix requirements

* fix requirements

* fix requirements

* fix requirements

* retire 3.7 in ci.yml

* Removed newline spaces

* Moved wave device config to yaml for tests.

* Fixed hybrid_outputs method for all technologies.

* fixed mhk_wave_source formatting. added checks for power matrix. updated power matrix test.

* added description of file format.

* created seperate mhk cost class.

* Added unit tests and subtests for wave source.

* Updated hybrid test with mhk_wave source reconfiguration.

* updated resource call for clarity.

* removed comments for obsolete dict keys.

* update test_wave.py for recent changes in dev/refactor

* address merge conflict messages in requirements.txt

* update path definition for wave_device.yaml

* use path to test file to begin relative path definition

* use absolute path

* use top hopp path

* expect NotImplementedError when running wave

* updated simulate() to calculate cost and financials for wave.

* updated test_wave with fixtures.

* updating test_hybrid with wave.

* added wave to power_sources in HybridSimulation.

* add check

* changed grid to CustomFinancialModel in test_hybrid_wave_only().

* use owned parameters for aep in power_source.simulate_financials over _system_model parameters to allow override in inherited clases

* added pytest-subtests for CI tests

* use for loops to assign attributes

* created new file for MHKCosts

* remove duplicate code

* generalized  for all technologies.

* Update documentation for MHK

* fixed spacing

---------

Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>
Co-authored-by: dguittet <dguittet@nrel.gov>
Co-authored-by: Darice <darice.guittet@nrel.gov>
Co-authored-by: Cameron Irmas <cirmas@protonmail.com>

* bulk hydrogen storage models (#191)

* Added ORBIT citation and references. Commented each function, citing section/equations used or repurposed from this analysis.

* last comment changes

* reformat plots, generate paths for plots, add onshore substation to plots

* on-turbine pressure vessel visualization. updates to grid only

* fix plot. fix grid-only

* correct power, correct technology usage

* Added Floating Platform Model and testsl

* initial code for custom orbit layout

* use custome layout for ORBIT and FLORIS - IN PROGRESS

* correct visualization given different h2 storage types on turbine

* updates to example simulation file

* Updated Floating Platform Model and tests

* Update to fixed and floating platform models, Add test for Floating, Add example yaml file for floating

* Updated test section to work with ORBIT 1.06

* Fixed equation ref. comment

* Call to SemiTaut Branch in Orbit to pull mooring costs, Update to the variable names to match Orbit Nomenclature in yamls in .py

* Added new plotting script to show all years and locations on the same figure

* Add sources to test files, Update floating cost to match ORBIT Technical report and update to test file

* Added a script to plot regional sensitivity

* Improved regional sensitivity plotting script

* Update to source information for test files

* minor modifications to example

* Remove Project code

* working on refactor... broken scripts.

* examples/H2_Analysis removed, replaced with temp hopp/to_organize submodules.

pushed along to the point that green_steel_ammonia_define_scenarios.py
runs.

* Move LCA_green_steel and ProFAST files to Project repo

* changes induced by move to project repo

* improved project/software splits, coupled with greensteel commit: c9f1eb729dfc824e35e717feb518e902fd0387c1

* Add clarity to depth limitation on example_floating_project.yaml and floating_platform.py

* Remove project codes and move software codes into HOPP/hopp/to_organize or respective directories

* Update import statements and import files that other files depend on

* removing duplicate base.py

* reinstante hopp_for_h2_floris.py

* hotfix to make refactored floris compatible with old run scripts.

* fix hopp_tools_steel

* Update import statements to paths already in repo

* Restore LCA_single_scenario_Profast.py as run_profast_for_hydrogen.py needs it

* Remove Duplicates, update import statements

* Test file restore with history

* Delete Test move

* Rename of Test file move

* Test

* Test 2

* Test

* Move H2_Analysis files to this branch with history

* Test

* Test

* test

* Move H2_Analysis files that keep history from feature/green_steel_ammonia branch

* Test

* Restore run_profast scripts with history

* Move LCA_single_scenario files into to organize and keep history

* Removed files that had no history and replaced them in commit before this

* Updated import statments to restored files with history

* Deleted duplicate files that had no history with them/Replaced in to_organize2

* Update import statements to direct to files in to_organize2

* comments

* moving towards better separation.

* correct how the fixed platform is being used

* check ORBIT for already registered FlexPlatformDesign and FixedPlatformInstallation phases

* Update CI Action to run on PRs (#151)

* Update CI Action to run on PRs

* Add CI Badge to README.md

* Fix failing hybrid test

* correct typo

* remove old print statements

* i think green steel openmdao version is working.

* Revised comments on floating project depth limitations

* sanitizing my branch to match upstream

* restore run rodeo

* move run rodeo

* break out distributed pipe cost.

* mv dist pipe cost.

* working on getting tests running

* working toward reconciliation w/ ckiefer

* removed all of to_organize2, history preserved in to_organize with .

* trying to get tests to run under pytest

* typo fix

* getting more tests running

* improved nrel api handling, trailing whitespace removal.

* add orbit to requirements

* working on getting Avangrid code to run

* correct orbit requirement line

* add pyaml-include to requirements

* adding charles's fix.

* update hopp for h2 floris

* enable scaling wind farm costs to expected wind farm capex

* ignore all pycache directories at all levels

* remove obsolete shapely version spec

* change which desal model is being called

* allow expected_plant_costs to be missing in plant_config

* added option for run_h2_PEM model to use IVcurve model.

* fix conflict w/ pull

* update .gitignore

* less some plots, eco example working.

* remove comments

* Adding storage models, tests failing.

* updated tests with fixtures.

* fixed compressor test.

* updated imports

* updated notation for bulk h2 storage models

* changed underground_pipe_storage syntax back to fix import error.

* updated examples

* updated underground pipe storage.

* remove resource files

---------

Co-authored-by: nriccobo <Nicholas.Riccobono@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>
Co-authored-by: Kiefer <ckiefer@nrel.gov>
Co-authored-by: Charles Kiefer <107942102+ckiefer14@users.noreply.github.com>
Co-authored-by: Evan <Evan.Reznicek@nrel.gov>
Co-authored-by: Cory Frontin <cory.frontin@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com>
Co-authored-by: bayc <christopher.j.bay@gmail.com>
Co-authored-by: Cameron Irmas <9358681+camirmas@users.noreply.github.com>

* fixed bug in URL in wind_resource.py for API calls when using a user-specified hub-height (#238)

* HOPP Jupyter Examples (#233)

* updated doc string in site info.

* example Jupyter notebooks.

* add battery spec to technology model

* Electrolyzer degradation impacts - added features and fixes (#219)

* modified run_h2_PEM function for updates made to PEM_H2_LT_electrolyzer_clusters model and moved imports into functions

* updated electrolyzer model to correctly reduce h2 production when degraded and lifetime performance calculations

* removed unused imports

* fixed edge-case bug in fatigue degradation calculation if stack is off for entire week, removed some old functions

* fixed minor bug in new_H2_Results output

* added lifetime performance estimate for grid connected case

* added performance per year of plant life, need to adust for cases when simulation isn't one year

* reformats yearly performance to be aggregated over all clusters

* removed function calls to old functions and removed unnecessary outputs

* adjusted to not throw errors with recent changes in PEM, added more comments and cleaned up

* fixed bug in grid-connected case with new changes

* deleted some old comments maybe?

* updated filepath to run_pem_master

* moved from to_organize/PEM_Model_2Push/ to hydrogen/electrolysis

* deleted to_organize/PEM_Model_2Push files since moved to new location

* removed Electrolyzer_Models/run_h2_clusters.py because it was outdated and incompatible with electrolyzer model it uses

* removed cbc.exe from PEM_Model_2Push folder, will need to point to correct location in optimization_utils_linear

* removed other unused electrolyzer run files

* removed some unused functions and nondescriptive comments

* added turndown ratio as input

* updated a few typos and comments

* Refactored classes + examples (#241)

* Changes to use the TAP API as an alternative option to WTK

* Refactor PVPlant

* Refactor DetailedPVPlant

* Add pytest-subtests

* Update documentation

* Update tests

Opting to leave out tests related to property getters and setters, which are highly coupled with PySAM.

* Update tests

- Removed instance checking, since it's enforcing coupling that we might not have in the future
- Began adding validators

* Update wind_resource.py to correct automatically setting success variable to false

* Update setup

Fixes an issue with pip installs for HOPP when using python >3.8

* Update PV Config interface

* Refactor Grid class

* Add Grid tests

* Update docs to include GridConfig

* updated doc string in site info.

* example Jupyter notebooks.

* Refactor Battery

* Refactor BatteryStateless

* Update Battery/BatteryStateless docs

* Update tests

* Refactor CSP classes

* add battery spec to technology model

* Remove redundant resource files

* Add TAP test; allow users to specify API call

Previously, a resource download would only take place if a file was not found. This change adds a field, `use_api`, that will override to always run the API call even if a file is found.

* remove examples from setup.py

* update floris examples with visuals

* Refactor wave model

* Update Wave docs

* updated floris visualization.

* start of example

* Refactor WindPlant

* Update to convert nested dicts

* Update tests

* Update config structure and tests

* Update WindPlant docs

* Rework configs and set up wind plant for pysam input

I didn't really like the post init hooks in the config classes,
so I moved that code back into the plant classes.

* WIP allow PySAM wind system input file

* WIP update examples

* Add ppa_price and dc_degradation configs

These were previously not configurable via HoppInterface

* Move hopp_interface.py

* Fix Floris financial issue in WindPlant

Fixed a bug where we were accidentally setting the financial
model to None when Floris was being used. We really need tests
for Floris functionality.

* Update dev environment details

* WIP update examples

* added electrolyzer example

* updated examples documentation

* modified wave costs class instance

* updated example 06 config

---------

Co-authored-by: Ruzekowicz <jennaruzekowicz@gmail.com>
Co-authored-by: Jenna Ruzekowicz <70097453+jruzekowicz@users.noreply.github.com>
Co-authored-by: Cameron Irmas <cirmas@protonmail.com>
Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>

* Update documentation

* Update README

* Add more Python versions to CI

* Fix battery chemistry config

* Remove ECO files and outdated examples, tests

Ultimately the plan is to bring some of these back in as we revamp the examples and complete features related to the ECO project.

* wind_source -> wind_plant

* csp_source -> csp_plant

* wave_source -> wave_plant

* pv_source -> pv_plant

* move plot_tools modules to hopp.tools

* Move battery files; update imports

* Update reqs and RTD config

---------

Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
Co-authored-by: ereznicek <47402810+ereznicek@users.noreply.github.com>
Co-authored-by: Evan <Evan.Reznicek@nrel.gov>
Co-authored-by: bayc <christopher.j.bay@gmail.com>
Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>
Co-authored-by: Cory Frontin <cory.frontin@nrel.gov>
Co-authored-by: AbhineetGupta <abhineet.gupta@nrel.gov>
Co-authored-by: svijaysh <svijaysh@nrel.gov>
Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com>
Co-authored-by: Masha <mkoleva@nrel.gov>
Co-authored-by: Cory Frontin <charlievictorfoxtrot@gmail.com>
Co-authored-by: Evan Reznicek <evanreznicek@gmail.com>
Co-authored-by: Genevieve Starke <Genevieve.Starke@nrel.gov>
Co-authored-by: nriccobo <Nicholas.Riccobono@nrel.gov>
Co-authored-by: Kiefer <ckiefer@nrel.gov>
Co-authored-by: Charles Kiefer <107942102+ckiefer14@users.noreply.github.com>
Co-authored-by: Darice L Guittet <dguittet@nrel.gov>
Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com>
Co-authored-by: Darice <darice.guittet@nrel.gov>
Co-authored-by: Ruzekowicz <jennaruzekowicz@gmail.com>
Co-authored-by: Jenna Ruzekowicz <70097453+jruzekowicz@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants