A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Recent Releases of PowerGenome

PowerGenome - v0.7.0

The major feature bump in this version is formatting outputs to match inputs required for GenX 0.4.. It is still possible to create inputs for GenX 0.3. using a settings parameter old_genx_format: true. Output folder structure has also changed to always follow the format /Inputs/Inputs_p*.

Other non-breaking changes and updates:

  • Directly use hourly demand data when they are available for a planning year. This is not compatible with constructing demand profiles using end-use stock values and hourly demand factors.
  • The case/scenario description file is no longer used. Case/scenario names are set entirely within the scenario definitions file.
  • Resources without an assigned fuel will now have the fuel name No_fuel instead of None. Starting in v2.0 Pandas treats the None string as NaN by default, which can cause data processing issues.

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.6.3...v0.7.0

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 1 month ago

PowerGenome - v0.7.0rc1

The major feature bump in this version is formatting outputs to match inputs required for GenX 0.4.. It is still possible to create inputs for GenX 0.3. using a settings parameter old_genx_format: true. Output folder structure has also changed to always follow the format <case>/Inputs/Inputs_p*.

Other non-breaking changes and updates:

  • Directly use hourly demand data when they are available for a planning year. This is not compatible with constructing demand profiles using end-use stock values and hourly demand factors.
  • The case/scenario description file is no longer used. Case/scenario names are set entirely within the scenario definitions file.
  • Resources without an assigned fuel will now have the fuel name No_fuel instead of None. Starting in v2.0 Pandas treats he None string as NaN by default, which can cause data processing issues.

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.6.3...v0.7.0rc1

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 1 month ago

PowerGenome - v0.6.3

This is a bug-fix release focused on the PyPI package distribution.

What's Changed

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.6.2...v0.6.3

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley 12 months ago

PowerGenome - v0.6.2

Version 0.6.2 release

Major updates in the release include

  • The case_id mapping to scenarios is now optional
  • Existing generator clusters can now stay stable across periods when using the --multi-period command line flag or the settings parameter cluster_with_retired_gens: true
  • Outputs can be structured for GenX multi-period runs using the --multi-period command line flag
  • Allow the key "all_years" in settings_management rather than requiring settings to be copied across all years
  • Reduce and simplify logging messages (full logs are still written to log text file)
  • Modify the costs of each categorical group separately when clustering new-build renewables
  • KMeans clustering for new-build renewables

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.6.1...v0.6.2

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley 12 months ago

PowerGenome - v0.6.1

Overview

This update introduces some major new data inputs to PowerGenome.

  • Build demand profiles from the bottom up using future stocks of final energy demand technologies (EVs, heat pumps, water heaters, etc) and hourly demand profiles from NREL's Energy Futures Study.
  • Automate creating flexible demand resources from future stocks and NREL EFS.
  • Use distributed generation profiles from NREL Cambium scenarios, which use an agent-based model to determine rooftop solar deployment.
  • Users can provide the cost for expanding/building inter-regional transmission lines rather than assuming centroid-to-centroid distance and a cost per mile.
  • Use pre-calculated capital costs for CO₂ pipeline infrastructure attached to CCS plants rather than adding a variable cost per ton captured.

Note

This release is version 0.6.1. Due to an error with releasing the code on PyPi, no official version 0.6.0 was released.

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.6...v0.6.0

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 1 year ago

PowerGenome - v0.5.6

What's Changed

This release primarily fixes a bug in the calculation of how many existing generating units are in each cluster. The number of units is used to calculate existing capacity, so in many cases the existing capacity would be 0.

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.5...v0.5.6

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 2 years ago

PowerGenome - v0.5.5

What's Changed

This release has a number of updates that have accumulated in develop. Many are related to improving inputs for GenX, such as time clustering or hydro (pumped hydro energy storage and hydro energy to power). Others include:

  • Settings can now be split across multiple files in a single folder, making it easier to find settings related to a specific topic. Examples of these split settings files are now available and have been tested to ensure the outputs work with GenX.
  • Don't cluster existing generators by setting the number of clusters for a technology to None (~ in YAML).
  • Change the default transmission capacity column from nonfirm_ttc_mw to firm_ttc_mw. This change from nonfirm (N-0) to firm (N-1) will reduce transmission capacity between many regions.
  • Add the settings parameter tx_value_col to set the transmission capacity value column used. Set this to nonfirm_ttc_mw to get the same results as previous versions.
  • Miscellaneous values for generator technologies (a user input file) can now be set by region.

Pull request summary

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.4...v0.5.5

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley almost 3 years ago

PowerGenome - v0.5.4

This version bump adds a feature to include user fuels and fixes a number of bugs.

  • Add the option for users to define/assign their own fuels
  • New option for atb_modifiers and modified_gen_atb to directly set parameter values rather than using a python operator
  • Don't force retirement based on age if not specified in settings.
  • Don't retire units unless there is a retirement year before the planning period year -- this is a change from previous behavior, where only units with retirement after the planning year would be kept
  • Add new check for GenX model tags
  • Fix http error for the EIA AEO API
  • Update example system settings file based on results of check for model tags
  • Expand testing

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.3...v0.5.4

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 3 years ago

PowerGenome - v0.5.3

What's Changed

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.2...v0.5.3

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 3 years ago

PowerGenome - v0.5.2

This minor version bump expands testing and fixes a few bugs. The new test clusters existing gens for all technologies in all IPM regions.

What's Changed

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.1...v0.5.2

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 3 years ago

PowerGenome - v0.5.1

What's Changed

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.5.0...v0.5.1

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 3 years ago

PowerGenome - v0.5.0

This is a major release focused on making PG outputs compatible with the open-source version of GenX. It also includes a number of other features and bug fixes.

In addition to the PRs listed below, some of the major features are:

  • Add a second example system
  • Improve example system documentation and change parameters for use with ATB2021
  • Add a link to the wiki, where system documentation is being added
  • Document how to use the newest version of PUDL data and keep data/code versions compatible
  • Improve the settings file checks to catch common setup mistakes

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.4.3.1...v0.5.0

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 3 years ago

PowerGenome - v0.5.0-beta.1

This is the first beta release of PowerGenome with changes that make outputs compatible with the open-source version of GenX. The structure of input files has also changed -- the single sqlite database has been split into PUDL (which can be downloaded from Zenodo) and non-PUDL tables.

What's Changed

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.4.2...v0.5.0-beta.1

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 3 years ago

PowerGenome - v0.4.3.1

Minor update to 0.4.3 that include:

  • Add a helpful error message when a renewable resource group doesn't have capacity in a model region
  • Update precommit hooks so the most current stable versions are used

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.4.3...v0.4.3.1

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 3 years ago

PowerGenome - v0.4.3

What's Changed

This release has many bug fixes and speed improvements. It is also the last version that will keep existing output formats. Versions after this one will shift to outputs compatible with the open-source version of GenX and eventually to a PG specific output format.

  • Reconcile gen IDs in the fgd csv and PUDL
  • Fix bug where the number of existing units < num clusters caused an error
  • Fix missing seasonal capacity values from generators, filling them with nameplate capacity instead (with the exception of combined cycle units, where seasonal capacity is often combined across all of the CT or CS generators)
  • Use the BLS API to get CPI data and store it locally as a CSV instead of using the cpi package (this takes 10-15 seconds off importing PG functions)
  • Save all AEO API data locally (now saving fuel prices, previously had only saved regional demand)
  • Check 860m to make sure that all existing generators are included (not just adding proposed)
  • More checks for the settings file to catch potential user errors

New Contributors

Full Changelog: https://github.com/PowerGenome/PowerGenome/compare/v0.4.2...v0.4.3

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 3 years ago

PowerGenome - v0.4.2

This will be the last release before we start making changes to the output file formats.

Accumulation of improvements and bug fixes.

  • Change from nominal to real WACC when calculating investment annuities
  • Account for coal unit FGD when calculating FOM costs; this uses a CSV data file but I don't expect coal FGD to change much in the future.
  • Use input_folder for the user techs rather than data folder
  • Don't force inclusion of RPS/CES policies in network file
  • Change from Nominal to Real WACC
  • Allow 1:many matches in EIA:ATB/user technologies
  • Update parameter names in settings file
  • Remove unused example settings file
  • Other bug fixes

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 3 years ago

PowerGenome - v0.4.1

A minor release with some bug fixes and feature updates/changes.

  • Fix offshore spur line km to mile conversion
  • Can now read 860m files with different number of header/footer rows
  • Pin xlrd version until we can update to Pandas 1.*
  • Add a settings parameter growth_scenario to select an AEO load growth scenario. The default of REF2020 will be used for now.
  • Change retirement behavior. Plants that retire in a model_year (planning year) will be removed, rather than being retained.

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley about 4 years ago

PowerGenome - v0.4.0

The major update here was to use a new version of the PUDL database with ATB 2020 data. The tables technology_costs_nrelatb and technology_heat_rates_nrelatb now contain data from both the 2019 and 2020 releases of ATB. The tables were changed from wide to long format, and PG code was modified to access only necessary data (rather than loading the whole tables). Other related changes include:

  • Changes to parameter names in the ATB tables, which should also be changed in the settings file.
    • capex_mw for capex (watch out so you don’t get capex_mwmwh from capex_mwh)
    • fixed_o_m_mw for o_m_fixed_mw (same for the mwh version if it shows up anywhere)
    • variable_o_m_mwh for o_m_variable_mwh
  • Add the parameter atb_data_year: 2020

Other changes:

  • Speed up filling null heat rates for existing generators.
  • Modify nuclear fixed O&M to represent multi-unit, large single-unit (at least 900 MW), and small single-unit (less than 900 MW).
  • Add the settings parameter utc_offset. Demand and renewable generation profiles are now shifted from UTC (how they're stored) based on this offset.
  • Add month to long duration storage.
  • Rename long_duration_storage to time_series_mapping in results of time domain reduction.
  • Fill coal/nuclear unit ages where they are missing (median value for plant or 40 years as a heuristic).

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 4 years ago

PowerGenome - v0.3.4

This release adds a couple new features.

  • Check settings file to make sure IPM regions are spelled correctly in region aggregations and model regions are included in cost_multiplier_region_map and aeo_fuel_region_map. These are things that could be easily messed up and might not have been obvious.
  • Add a list of all EIA plant id and PUDL unit ids to results from each cluster (available through the API functions).

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 4 years ago

PowerGenome - v0.3.3

A series of bug fixes and minor upgrades. Adding type hints in new function and functions that are modified.

  • Single region models
    • Demand response (flexible load) bug with a single region
    • No transmission lines created
  • Error when no regions aggregated (or renamed)
  • Example settings file
    • Remove unused parameters in settings
    • Missing IPM regions and wrong name for historical load region
  • Add "R_ID" to gen variability columns to ensure unique names
  • Don't ignore spaces in technology names when applying model tag values (mixed up EIA/ATB names)
  • Reset heat rates that are > 35 mmbtu/MWh (~11% efficency). Set to median value for that technology. This likely catches combined heat & power plants and plants that are doing more ancillary services than generation.
  • Scenario settings
    • When building scenario settings, only raise an error if the full path to a parameter is listed more than once.
    • Allow years to have different case ids.
  • New function to check/fix resource min power value
  • Round min_power to match variable generation profiles. Don't want to have higher min power than generation due to rounding.
  • Fix startup fuel matching. Was previously finding the wrong value for coal power plants.
  • Consolidate most of value rounding into a single function.

Energy Systems - Energy Data Accessibility and Integration - Python
Published by gschivley over 4 years ago