Skip to content

Releases: NREL/REopt.jl

v0.31.0

19 Apr 20:42
Compare
Choose a tag to compare

What's Changed

  • Create and export easiur_data function for the API to use by @hdunham in #214
  • Create and export easiur_data function by @hdunham in #219

Full Changelog: v0.30.0...v0.31.0

Add gen HHV input, few bug fixes

31 Mar 22:34
Compare
Choose a tag to compare

What's Changed

  • Fix bug causing ERP API to not work with CHP/prime gen by @hdunham in #208
  • Input descriptions and small bug fixes by @adfarth in #206
  • Make generator higher heating value an input by @hdunham in #209
  • Add gen HHV, ERP bug fix, add to input descriptions, fix batt_roundtrip_efficiency calculation, push! not append() array in cost_curve.jl by @hdunham in #211

Full Changelog: v0.29.0...v0.30.0

Stochastic/Multi-Outages: add CHP, modify outputs; CHP fixes

23 Mar 17:29
Compare
Choose a tag to compare

What's Changed

  • Make outages output names not dynamic, add units to outages results, microgrid_upgrade_cost_fraction default to 0 by @hdunham in #202
  • Add CHP to stochastic/multi- outages, some CHP tweaks for UI V3 by @Bill-Becker in #201
  • Stochastic/Mulit-Outages: add CHP, modify outputs. Also CHP fixes. by @Bill-Becker in #205

Full Changelog: v0.28.1...v0.29.0

v0.29.0

Added

  • Add CHP FuelUsed and FuelCost modeling/tracking for stochastic/multi-outages
  • Add CHP outputs for stochastic/multi-outages

Changed

  • Made outages output names not dynamic to allow integration into API
  • Add missing units to outages results field names: unserved_load_series_kw, unserved_load_per_outage_kwh, generator_fuel_used_per_outage_gal
  • Default Financial field microgrid_upgrade_cost_fraction to 0
  • Add conditional logic to make CHP.min_allowable_kw 25% of max_kw if there is a conflicting relationship
  • Iterate on calculating CHP heuristic size based on average heating load which is also used to set max_kw if not given: once size_class is determined, recalculate using the efficiency numbers for that size_class.

Fixed

  • Fix non-handling of cost-curve/segmented techs in stochastic outages
  • Fix issues with simulated_load.jl monthly heating energy input to return the heating load profile

Add emissions_profile function for API endpoint

18 Mar 02:57
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.28.0...v0.28.1

v0.28.1

Added

  • emissions_profiles function, exported for external use as an endpoint in REopt_API for the webtool/UI

CHP class size and financial input output updates

16 Mar 23:16
Compare
Choose a tag to compare

Changed

  • Changed Financial breakeven_cost_of_emissions_reduction_per_tonnes_CO2 to breakeven_cost_of_emissions_reduction_per_tonne_CO2
  • Changed CHP.size_class to start at 0 instead of 1, consistent with the API, and 0 represents the average of all size_classs
  • Change CHP.max_kw to be based on either the heuristic sizing from average heating load (if heating) or peak electric load (if no heating, aka Prime Generator in the UI)
    • The "big_number" for max_kw was causing the model to take forever to solve and some erroneous behavior; this is also consistent with the API to limit max_kw to a reasonable number

Added

  • Added previously missing Financial BAU outputs: lifecycle_om_costs_before_tax, lifecycle_om_costs_after_tax, year_one_om_costs_before_tax

Fixed

  • Fixed if statement to determing ElectricLoad "year" from && to ||, so that defaults to 2017 if any CRB input is used

Energy Resilience and Performance Tool

15 Mar 06:28
Compare
Choose a tag to compare

Added

  • Energy Resilience Performance tool: capability to model limited reliability of backup generators and RE, and calculate survival probability metrics during power outages for a DER scenario
  • Exported backup_reliability function to run the reliability based calculations

Changed

  • Changed Generator inputs fuel_slope_gal_per_kwh and fuel_intercept_gal_per_hr to electric_efficiency_full_load and electric_efficiency_half_load to represent the same fuel burn curve in a different way consistent with CHP

Feb 2023 Updates

05 Mar 16:39
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.25.0...v0.26.0

https://github.com/NREL/REopt.jl/blob/master/CHANGELOG.md

v0.26.0

Added

  • Added has_stacktrace boolean which is returned with error messages and indicates if error is of type which contains stacktrace
  • Constraint on wind sizing based on Site.land_acres
  • New Wind input acres_per_kw, defaults to 0.03
  • Descriptions/help text for many inputs and outputs
  • Add and modify the GHP results to align with the existing/expected results from the v2 REopt_API
  • Add CSV and DataFrames packages to REopt.jl dependencies

Changed

  • Update REopt.jl environment to Julia v1.8
  • Changed default year in ElectricLoad to be 2017 if using a CRB model and 2022 otherwise.
  • Removed default year in URDBrate() functions, since year is always supplied to this function.
  • In scenario.jl, change heating_thermal_load_reduction_with_ghp_kw to space_heating_thermal_load_reduction_with_ghp_kw to be more explicit
  • Round Hot and Cold TES size result to 0 digits
  • Use CoolProp to get water properties for Hot and Cold TES based on average of temperature inputs

Fixed

  • Wind evaluations with BAU - was temporarily broken because of an unconverted year_one -> annual expected name
  • Fixed calculation of year_one_coincident_peak_cost_before_tax in ElectricTariff results to correctly calculate before-tax value. Previously, the after-tax value was being calculated for this field instead.
  • Fixed outage_simulator to work with sub-hourly outage simulation scenarios
  • Fixed a bug which threw an error when providing time-series thermal load inputs in a scenario inputs .json.
  • Fixed calculation of ["Financial"]["lifecycle_om_costs_before_tax_bau"] (was previously showing after tax result)
  • Added bau_annual_emissions_tonnes_SO2 to the bau_outputs dict in results.jl and removed duplicate bau_annual_emissions_tonnes_NOx result

Removed

  • Removed duplicate thermal_production_hot_water_or_steam field from the absorption chiller defaults response dictionary.

update multiple outage modeling, multi-node MPC, and IRA tax incentives

03 Feb 06:33
Compare
Choose a tag to compare

v0.25.0

Added

  • multi-node MPC modeling capability
  • more MPC outputs (e.g. Costs, ElectricStorage.to_load_series_kw)
  • throw error if outage_durations and outage_probabilities not the same length
  • throw error if length of outage_probabilities is >= 1 and sum of outage_probabilities is not equal to 1
  • small incentive to minimize unserved load in each outage, not just the max over outage start times (makes expected outage results more realist and fixes same inputs giving different results)
  • add Outages output generator_fuel_used_per_outage which is the sum over backup generators

Changed

  • remove _series from non-timeseries outage output names
  • make the use of _ in multiple outages output names consistent
  • updates multiple outage test values that changed due to fixing timestep bug
  • Updated the following default values:
    • PV, Wind, Storage, CHP, GHP, Hot Water Storage, Cold Water Storage, Electric Storage: federal_itc_fraction(PV,Wind, CHP,GHP) and total_itc_fraction(Hot Water Storage, Cold Water Storage, Electric Storage) to 0.3 (30%)
    • PV, Wind, Storage, CHP, GHP, Hot Water Storage, Cold Water Storage, Electric Storage: *macrs_bonus_fraction to 0.8 (80%)
    • Hot Water Storage and Cold Water Storage: macrs_itc_reduction to 0.5 (50%)
    • Hot Water Storage and Cold Water Storage: macrs_option_years to 7 years

Fixed

  • PV results for all multi-node scenarios
  • MPC objective definition w/o ElectricStorage
  • fixed mulitple outages timestep off-by-one bug

Removed

  • Wind ITC no longer determined based on size class. Removed all size class dependencies from wind.jl

Output naming changes

06 Jan 21:34
Compare
Choose a tag to compare

v0.24.0

Current behavior

Currently, we use the "year_one" naming convention for many outputs (scalars and time series) that include degradation, making them not a true "year_one" metrics.
We also have some inconsistencies in naming of outputs.

Changes

  • Name changes shown in table below
  • Generally, changes are for energy outputs (not costs) that include "year_one", and are changed to annual_ for scalars and to electric_to_, thermal_to_ etc. for time series.
  • Changed to_tes and to_battery outputs to to_storage for consistency
  • Included help text to this end in results page for relevant output keys
  • Added output: [CHP][thermal_production_series_mmbtu_per_hour]
  • Removed outputs: [Wind][year_one_energy_produced_kwh] and [Generator][year_one_energy_produced_kwh]
Key SubKey Series or Total Cost or Energy New Name
AbsorptionChiller year_one_to_tes_series_ton Series Energy thermal_to_storage_series_ton
  year_one_to_load_series_ton Series Energy thermal_to_load_series_ton
  year_one_thermal_consumption_series_mmbtu_per_hour Series Energy thermal_consumption_series_mmbtu_per_hour
  year_one_thermal_consumption_mmbtu Total Energy annual_thermal_consumption_mmbtu
  year_one_thermal_production_tonhour Total Energy annual_thermal_production_tonhour
  year_one_electric_consumption_series_kw Series Energy electric_consumption_series_kw
  year_one_electric_consumption_kwh Total Energy annual_electric_consumption_kwh
Boiler year_one_fuel_consumption_series_mmbtu_per_hour Series Energy fuel_consumption_series_mmbtu_per_hour
  year_one_fuel_consumption_mmbtu Total Energy annual_fuel_consumption_mmbtu
  year_one_thermal_production_series_mmbtu_per_hour Series Energy thermal_production_series_mmbtu_per_hour
  year_one_thermal_production_mmbtu Total Energy annual_thermal_production_mmbtu
  year_one_thermal_to_tes_series_mmbtu_per_hour Series Energy thermal_to_storage_series_mmbtu_per_hour
  year_one_thermal_to_steamturbine_series_mmbtu_per_hour Series Energy thermal_to_steamturbine_series_mmbtu_per_hour
  year_one_thermal_to_load_series_mmbtu_per_hour Series Energy thermal_to_load_series_mmbtu_per_hour
  lifecycle_fuel_cost Total Cost lifecycle_fuel_cost_after_tax
CHP year_one_fuel_used_mmbtu Total Energy annual_fuel_consumption_mmbtu
  year_one_electric_energy_produced_kwh Total Energy annual_electric_production_kwh
  year_one_thermal_energy_produced_mmbtu Total Energy annual_thermal_production_mmbtu
  year_one_electric_production_series_kw Series Energy electric_production_series_kw
  year_one_to_grid_series_kw Series Energy electric_to_grid_series_kw
  year_one_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_thermal_to_tes_series_mmbtu_per_hour Series Energy thermal_to_storage_series_mmbtu_per_hour
  year_one_thermal_to_waste_series_mmbtu_per_hour Series Energy thermal_curtailed_series_mmbtu_per_hour
  year_one_thermal_to_load_series_mmbtu_per_hour Series Energy thermal_to_load_series_mmbtu_per_hour
  year_one_thermal_to_steamturbine_series_mmbtu_per_hour Series Energy thermal_to_steamturbine_series_mmbtu_per_hour
  add Total Energy thermal_production_series_mmbtu_per_hour
  year_one_chp_fuel_cost_before_tax Total Cost year_one_fuel_cost_before_tax
  year_one_chp_standby_cost_before_tax Total Cost year_one_standby_cost_before_tax
  lifecycle_chp_fuel_cost_after_tax Total Cost lifecycle_fuel_cost_after_tax
  lifecycle_chp_standby_cost_after_tax Total Cost lifecycle_standby_cost_after_tax
ElectricStorage year_one_soc_series_fraction Series Energy soc_series_fraction
  year_one_to_load_series_kw Series Energy storage_to_load_series_kw
ElectricUtility year_one_energy_supplied_kwh Total Energy annual_energy_supplied_kwh
  year_one_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_emissions_tonnes_CO2 Total Energy annual_emissions_tonnes_CO2
  year_one_emissions_tonnes_NOx Total Energy annual_emissions_tonnes_Nox
  year_one_emissions_tonnes_SO2 Total Energy annual_emissions_tonnes_SO2
  year_one_emissions_tonnes_PM25 Total Energy annual_emissions_tonnes_PM25
ExistingBoiler year_one_fuel_consumption_series_mmbtu_per_hour Series Energy fuel_consumption_series_mmbtu_per_hour
  year_one_fuel_consumption_mmbtu Total Energy annual_fuel_consumption_mmbtu
  year_one_thermal_production_series_mmbtu_per_hour Series Energy thermal_production_series_mmbtu_per_hour
  year_one_thermal_production_mmbtu Total Energy annual_thermal_production_mmbtu
  year_one_thermal_to_tes_series_mmbtu_per_hour Series Energy thermal_to_storage_series_mmbtu_per_hour
  year_one_thermal_to_steamturbine_series_mmbtu_per_hour Series Energy thermal_to_steamturbine_series_mmbtu_per_hour
  year_one_thermal_to_load_series_mmbtu_per_hour Series Energy thermal_to_load_series_mmbtu_per_hour
ExistingChiller year_one_to_tes_series_ton Series Energy thermal_to_storage_series_ton
  year_one_to_load_series_ton Series Energy thermal_to_load_series_ton
  year_one_electric_consumption_series_kw Series Energy electric_consumption_series_kw
  year_one_electric_consumption_kwh Total Energy annual_electric_consumption_kwh
  year_one_thermal_production_tonhour Total Energy annual_thermal_production_tonhour
Generator year_one_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_to_grid_series_kw Series Energy electric_to_grid_series_kw
  year_one_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_energy_produced_kwh Total Energy Keep as-is for now
  average_annual_energy_produced_kwh Total Energy annual_energy_produced_kwh
  average_annual_fuel_used_gal Total Energy annual_fuel_consumption_gal
PV year_one_energy_produced_kwh Total Energy Keep as-is for now
  average_annual_energy_produced_kwh Total Energy annual_energy_produced_kwh
  year_one_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_to_grid_series_kw Series Energy electric_to_grid_series_kw
  year_one_curtailed_production_series_kw Series Energy electric_curtailed_series_kw
  average_annual_energy_exported_kwh Total Energy annual_energy_exported_kwh
Site year_one_emissions_tonnes_CO2 Total Energy annual_emissions_tonnes_CO2
  year_one_emissions_tonnes_NOx Total Energy annual_emissions_tonnes_Nox
  year_one_emissions_tonnes_SO2 Total Energy annual_emissions_tonnes_SO2
  year_one_emissions_tonnes_PM25 Total Energy annual_emissions_tonnes_PM25
  year_one_emissions_from_fuelburn_tonnes_CO2 Total Energy annual_emissions_from_fuelburn_tonnes_CO2
  year_one_emissions_from_fuelburn_tonnes_NOx Total Energy annual_emissions_from_fuelburn_tonnes_NOx
  year_one_emissions_from_fuelburn_tonnes_SO2 Total Energy annual_emissions_from_fuelburn_tonnes_SO2
  year_one_emissions_from_fuelburn_tonnes_PM25 Total Energy annual_emissions_from_fuelburn_tonnes_PM25
SteamTurbine year_one_thermal_consumption_mmbtu Total Energy annual_thermal_consumption_mmbtu
  year_one_electric_energy_produced_kwh Total Energy annual_electric_production_kwh
  year_one_thermal_energy_produced_mmbtu Total Energy annual_thermal_production_mmbtu
  year_one_thermal_consumption_series_mmbtu_per_hour Series Energy thermal_consumption_series_mmbtu_per_hour
  year_one_electric_production_series_kw Series Energy electric_production_series_kw
  year_one_electric_to_grid_series_kw Series Energy electric_to_grid_series_kw
  year_one_electric_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_electric_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_thermal_to_tes_series_mmbtu_per_hour Series Energy thermal_to_storage_series_mmbtu_per_hour
  year_one_thermal_to_load_series_mmbtu_per_hour Series Energy thermal_to_load_series_mmbtu_per_hour
HotThermalStorage year_one_soc_series_fraction Series Energy soc_series_fraction
  year_one_to_load_series_mmbtu_per_hour Series Energy storage_to_load_series_mmbtu_per_hour
ColdThermalStorage year_one_soc_series_fraction Series Energy soc_series_fraction
  year_one_to_load_series_ton Series Energy storage_to_load_series_ton
Wind year_one_to_battery_series_kw Series Energy electric_to_storage_series_kw
  year_one_to_grid_series_kw Series Energy electric_to_grid_series_kw
  average_annual_energy_exported_kwh Total Energy annual_energy_exported_kwh
  year_one_to_load_series_kw Series Energy electric_to_load_series_kw
  year_one_energy_produced_kwh Total Energy Keep as-is for now
  average_annual_energy_produced_kwh Total Energy annual_energy_produced_kwh
  year_one_curtailed_production_series_kw Series Energy electric_curtailed_series_kw

Create custom REopt logger, Fix URDB handling

16 Dec 17:08
Compare
Choose a tag to compare

v0.23.0

Added

  • Add REoptLogger type of global logger with a standard out to the console and to a dictionary
    • Instantiate logREopt as the global logger in __init()__ function call as a global variable
    • Handle Warn or Error logs to save them along with information on where they occurred
    • Try-catch core/reopt.jl -> run_reopt() functions. Process any errors when catching the error.
    • Add Warnings and Errors from logREopt to results dictionary. If error is unhandled in REopt, include a stacktrace
    • Add a status of error to results for consistency
    • Ensure all error text is returned as strings for proper handling in the API
  • Add handle_errors(e::E, stacktrace::V) where {E <: Exception, V <: Vector} and handle_errors() to core/reopt.jl to include info, warn and errors from REopt input data processing, optimization, and results processing in the returned dictionary.
  • Tests for user-inputs of ElectricTariff demand_lookback_months and demand_lookback_range

Changed

  • core/reopt.jl added try-catch statements to call handle_errors() when there is a REopt error (handled or unhandled) and return it to the requestor/user.

Fixed

  • URDB lookback was not incorporated based on the descriptions of how the 3 lookback variables should be entered in the code. Modified parse_urdb_lookback_charges function to correct.
  • TOU demand for 15-min load was only looking at the first 8760 timesteps.
  • Tiered energy rates jsons generated by the webtool errored and could not run.
  • Aligned lookback parameter names from URDB with API