-
Notifications
You must be signed in to change notification settings - Fork 19
Hercules v2.0 #194
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
Merged
Merged
Hercules v2.0 #194
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Add support for ws_mean channel * Add tests for ws_mean * Use specified hercules_float_type * Organize imports * Add ws_mean fnctionality to Wind_MesoToPower class and tests.
* update timing results * Change wind speed names * continue renaming, dont log floris values * update log_channels syntax * update docs * bugfix * update example 0 * update example 02 * update example 02b * update example 03 * update example 04 * linting * bugfix * make copilot review corrections * linting * update wind speed names for clarity * change to yaml-list type input * linting * copilot changes and linting * always generate inputs for CI * Update log channel loops --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov>
* change docs to time_utc first approach * update yamls to utc * update example input generators * convert emulator to starttime_utc instead of zero_time * update hercules output with backwards compatability * update component time validation * input reader requires utc based times * compontents to utc based inputs * consistent names * update tests * update timing tests * remove redundant checks and update tests * Require inputs to be UTC without offset, add to docs * Add UTC help function
* First pass conversion * bugfix * clean up docs * consolidate interpolation functions * update external data handling * combine run and enter execution into one function * simplify runscripts * fix hack in regression timing * linting * Update docs/hercules_model.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add explicit method for assigning controller, update examples and tests accordingly * update docs and docstrings * update timing tests * Address comments * linting * Use passed h_dict until metadata added --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: misi9170 <michael.sinner@nrel.gov>
* first pass * update resource downloading modules
* Consolidate load_hercules_input functions * starttime and endttime only added in HerculesModel version of load_hercules_input
* Add files * Add utility for organizing grid data into DA, RT components for use as external_data_file * Reorganize for compatibility * add an example case * update syntax * Handle hourly DA data * fix deprecated warning * linting * skip time_utc column when constructing external data signals * update docs * update docs * update comment * add links * linting * linting * More explicit TODO items * add info on uv install to docs * Working version; still to clean up * Clean up; use time step * Remove un-needed script and update docs * Add tests and minor updates to code to allow user-specified market names * Update example * Docs update * Rename example script for clarity --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov>
* Add external data logging selection * Remove unrelated formatting * Update hercules/utilities.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * allow other file types * Update external_data signals names for RT, DA LMPs * address comments * implement comments * address comments * change no external data file behavior * linting --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: misi9170 <michael.sinner@nrel.gov>
…e release (#180) * Adding wind and hydrogen example * Initial electrolyzer example * Electrolyzer reference signal * Update with documentation * Adding plots for electrolyzer * Updating example and plotting outputs, adding verbose print out statements * Update readme for example 06 * Remove unused imports * Fix ruff formatting * Fix electrolyzer implementation test * Install main electrolyzer repo (main branch) * Update initialization to not require all electrolyzer input values and update regression test values for better initialization * Fix ruff formatting --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov>
* remove time_log_interval * unite on progress_update_interval * minor update * Update hercules/hercules_model.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update hercules/hercules_model.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* linting and clean up * organize docs * add ruff format check * add other variables back to nsrdb download * apply formatting * Capitalize Faraday --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov>
Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov>
* Update WHOC -> Hycon * NREL -> NLR
* apply dtype to missed locations * linting * apply dtype to time --------- Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov>
* Add in missed dtypes * linting * linting * Declare and use single precision complex type --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov>
* first pass * remove new regression test * rename to no add wakes * remove old components * add scada pass through form * remove turbine input and add example input * Add "WindFarmSCADAPower" to available component types in utilities.py * remove wd_mean requirement * place hold wind direction for now * use iloc * bug fix * linting * fix docstring * Apply ruff format * Minor docs update * Switch to wind_method approach; cleanup to follow * Remove filter from turbine update model * Update wind docs to remove SCADA filter references * Further cleanup * Add warning for SCADAPower version --------- Co-authored-by: misi9170 <michael.sinner@nrel.gov> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov>
* Add test floris input * Add tests of wind sim long term * Update controller standin * Add to utilities test * Add pysims test * Add controller standin test * Remove controller requirement * Add check on time_utc * Update tests * bugfix * update electrolyzer code * update regression test * fix regression tests * Update emulator code * bugfix * fix test * update inputs * linting * input_dict to h_dict * re-org examples * update ignore file * add pysims test * allow ints * must provide at least 1 py_sim * change how logging works * Update example 0 * bugfix * Add option to log extra outputs * linting * rounding * bugfix * Update example 01 * update input generation * remove num_turbines as an input * update * update prep notebook and example 2 * work out n_turbines from FLORIS input * linting * clear out * re-run * remove excess verbose inputs * move to kw standard * close logging files * docstrings * linting * add meta data * add h_dict output reader * add initialization function * limit plant outputs * make h_dict reader smarter * add in extra logs * add initial conditions * linting * rename intro to index * update documentation * Add first regression test * update test syntax * add inf * linting * fix test * linting * simplify * other options * remove rated_power from turbine inputs * style fixes * fix h_dict pattern * remove the run_scripts (shell) * Update example doc * Update READMEs * remove simple solar * Update docs * Add running page to docs * Split pysam pysim * Add progress bar * consolidate meta data * add memoization to wind sims for FLORIS * update examples * linting * refactor pysims to components * update wind component * refactor battery classes * check docs for accuraccy * add cursor to ignore * move util function * rename regression test * refactor example test * add an output helper * update example regression tests * update docs * fixing typo and consistent logging * adding README to wind and solar example * add range * fixing printing * fixing typo * docs updates * removing orig solar_pysam.py file * remove weather_data_input * clean up * remove redundant save * remove commented functions * google style docstrings * get rid of tools sub-dir * rename example folder * remove scripts folder * Update version and add version test * fix example regression tests * remove controller standin from test * remove controller standin from example 0 * linting * remove controller standin * remove controller standin * clean up * Change simulation parameters * switch to solar limiting controller * Add initial power * update plot ouputs * remove controller standin * remove controller standin * lower the interconnect limit * update regression test * update the notebook * Track solar input to make it easier for new users * update readme * remove decimal points * formatting * switch to emguass * update to emgauss * generate timing data * plot generated data * set up wind timing test * initial timing test * add results csv * add readme * Add extra tests to curtailment checks * require power_setpoint for solar * refactor pysam to precompute * add pvsam json * add dependency * change version checks * add update time * change power setpoint style * update output plots * add update time * add update time * add update time * fix floris step and user power setpoints * derating to power setpoint * update tests * update regression tests * update tests * update test dicts * update timing test * update timing * update controller * update controller * update time * update time * update timing tests * vectorize turbine models * Add speed ups * linting * fix clean up * move example 4 * update battery * update batteries * linting * update example 04 * update battery docs * use kW in batteries * add rte tests * linting * log time_utc * move perf function back * move perfunction to utilities * linting * linting * add precompute floris version * update wind docs * add new precom floris * clean up * new example 2b * correct the free stream * add regression test * log floris precomputation * log also to terminal * add timing tests * update docs for new precompute structure * add floris update time back in * make progress logging verbose option * downsample precomputed floris * add new regression test * update tests * update timing * performance improvements * update timing tests * update battery example * dont print out h_dict * update docs * change file output * update utilities * ignore output files * update tests * update example plots * fix tests * fix progress bar * add soc ic * add comments * linting * add battery sign switch * Improve controller for 1dof wind model * Fix the 1dof turbine controller * Fix import of interpolation module for 1dof model * Fix formatting * add polars * add faster low memory interpolation * add tests * more logging and call fast interpolate * make sure to use polars * linting * switch to buffered logging * linting * butfix * update tests * update timing * update timing tests * add in hercules data type * use hercules dtype * chunk output * ruff formatting * linting * Speed up calculation of 1dof model. * Bugfixes after messy merge * Further cleanup * Remove unused perffile (now on 1dof turbine class) * Formatting * Still cleaning up merge... * still.. * Reorganize inputs for consistency with other examples * Update readme. * Rename example for consistency * Add wake method to 01 * Rename 1dof yaml file --------- Co-authored-by: Paul Fleming <paulf81@gmail.com> Co-authored-by: paulf81 <paul.fleming@nrel.gov> Co-authored-by: brookeslawski <brooke.stanislawski@gmail.com> Co-authored-by: misi9170 <michael.sinner@nrel.gov> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hercules v2 brings major changes in the Hercules interface and wind simulation modules which enable much faster simulation and flexible logging. The Hercules interface now exists fully in Python. The wind simulator has four options, based on wake handling, which also enables comparison with SCADA data. Hercules v2 also brings in functionality that downloads and upsamples wind and solar data from WTK and OpenMeteo for wind and the NSRDB for solar data. This streamlines the workflow of the tool and enables Hercules to be applied to more locations. Finally, a grid price module was added to enable the downloading and use of grid prices to simulate the interaction of hybrid plants with energy markets.
What's Changed
find_time_utc_valueby @paulf81 in allow extrapolation infind_time_utc_value#163New Contributors
Full Changelog: v2_beta...v2