Skip to content

Releases: NREL/REopt.jl

Simulated_load() addition, CHP cleanup, and AbsorptionChiller defaults logic

21 Nov 21:21
Compare
Choose a tag to compare

v0.22.0

Added

  • Simulated load function which mimicks the REopt_API /simulated_load endpoint for getting commercial reference building load data from annual or monthly energy data, or blended/hybrid buildings
  • AbsorptionChiller default values for costs and thermal coefficient of performance (which depend on maximum cooling load and heat transfer medium)

Changed

  • Pruned the unnecessary chp_defaults data that were either zeros or not dependent on prime_mover or size_class, and reorganized the CHP struct.

What's Changed

  • Update Absorption Chiller Defaults by @zolanaj in #146
  • /simulated_load endpoint function, and CHP clean-up by @Bill-Becker in #148
  • Simulated_load() addition, CHP cleanup, and AbsorptionChiller defaults logic by @Bill-Becker in #150

Full Changelog: v0.21.0...v0.22.0

CHP and SteamTurbine defaults logic

31 Oct 14:04
Compare
Choose a tag to compare

Changed

For CHP and SteamTurbine, the prime_mover and/or size_class is chosen (if not input) based on the average heating load and the type of heating load (hot water or steam).

  • This logic replicates the current REopt webtool behavior which was implemented based on CHP industry experts, effectively syncing the webtool and the REopt.jl/API behavior.
  • This makes prime_mover NOT a required input and avoids a lot of other required inputs if prime_mover is not input.
  • The two functions made for CHP and SteamTurbine are exported in REopt.jl so they can be exposed in the API for communication with the webtool (or other API users).

Removed

ExistingBoiler.production_type_by_chp_prime_mover because that is no longer consistent with the logic added above.

  • The logic from 1. is such that ExistingBoiler.production_type determines the CHP.prime_mover if not specified, not the other way around.
  • If ExistingBoiler.production_type is not input, hot_water is used as the default.

Add Heating and Cooling load results

24 Oct 17:02
Compare
Choose a tag to compare

Add Heating and Cooling load time series results

Add Boiler and SteamTurbine Techs

22 Sep 15:29
Compare
Choose a tag to compare

Added

  • Boiler tech from the REopt_API (known as NewBoiler in API)
  • SteamTurbine tech from the REopt_API

Changed

  • Made some modifications to thermal tech results to be consistent with naming conventions of REopt.jl

Fixed

  • Bug for scalar ElectricTariff.wholesale_rate
  • Bug in which CHP could not charge Hot TES

Input and output name changes, schedule-based loads, and addressable load fraction for heating and cooling

19 Sep 20:50
Compare
Choose a tag to compare

v0.19.0

Changed

The following name changes were made:

  • Change "pct" to "rate_fraction" for "discount", "escalation", names containing "tax_pct" (financial terms)
  • Change "pct" to "fraction" for all other variable names (e.g., "min_soc", "min_turndown_")
  • Change prod_factor_series to production_factor_series and rename some internal methods and variables to match
  • Change four (4) CHP input field names to spell out electric (from elec) and efficiency (from effic) for electric and thermal efficiencies

Added

  • Add schedule-based FlatLoads which take the annual or monthly energy input and create a load profile based on the specified type of schedule. The load is "flat" (the same) for all hours within the chosen schedule.
  • Add addressable_load_fraction inputs for SpaceHeatingLoad and DomesticHotWaterLoad which effectively ignores a portion of the entered loads. These inputs can be scalars (applied to all time steps of the year), monthly (applied to the timesteps of each month), or of length 8760 * time_steps_per_hour.
  • Add a validation error for cooling in the case that the cooling electric load is greater than the total electric load.

Add GHP plus minor emissions and off-grid changes/fixes

16 Aug 17:06
Compare
Choose a tag to compare

Added

  • Add geothermal heat pump (GHP), also known as ground-source heat pump (GSHP), to the REopt model for serving heating and cooling loads (typically the benefits include electrifying the heating load and improving the efficiency of cooling).
    • The unregistered GhpGhx package (https://github.com/NREL/GhpGhx.jl) is a "conditional" dependency of REopt by using the Requires.jl package, and this package sizes the ground heat exchanger (GHE) and gets the hourly electric consumption of the GHP for the specified heating and cooling loads that it serves.
    • The GhpGhx module calls for sizing the GHE can only be done if you first "add https://github.com/NREL/GhpGhx.jl" to the environment and then load the package by "using GhpGhx" before running REopt with GHP.
    • The GHP size and dispatch of the different GHP options is pre-determined by the GhpGhx package, so the REopt model just chooses one or none of the GHP options with a binary decision variable.

Changed

  • Change default value for wind.jl operating_reserve_required_pct from 0.1 to 0.5 (only applicable when off_grid_flag=True.)
  • allow user to specify emissions_region in ElectricUtility, which is used instead of lat/long to look up AVERT data if emissions factors aren't provided by the user

Fixed

  • Add wholesale_rate and emissions_factor_series_lb_<pollutant>_per_kwh inputs to the list of inputs that dictkeys_tosymbols() tries to convert to type Array{Real}. Due to serialization, when list inputs come from the API, they are of type Array{Any} so must be converted to match type required by the constructors they are passed to.

Emissions and RE% capabilities, plus some smaller changes and bug fixes

04 Aug 05:20
Compare
Choose a tag to compare

Added

  • Emissions
    • add emissions factors for CO2, NOx, SO2, and PM25 to inputs of all fuel burning technologies
    • add emissions factor series for CO2, NOx, SO2, and PM25 to ElectricUtility inputs and use AVERT v3.2 (2021 data) if not provided
    • add include_climate_in_objective and include_health_in_objective to Settings inputs
    • constrain CO2 emissions based on CO2_emissions_reduction_min_pct, CO2_emissions_reduction_max_pct, and include_exported_elec_emissions_in_total added to Site inputs
    • add emissions costs to Financial inputs and use EASIUR data for NOx, SO2, and PM25 if not provided
    • report emissions and their cost in Site (on-site and total) and ElectricUtility (grid) results
    • calculate breakeven_cost_of_emissions_reduction_per_tonnes_CO2 for Financial results
  • Renewable energy percentage
    • calculate renewable energy percentage (electric only and total) and add to Site results
    • add renewable_electricity_min_pct, renewable_electricity_max_pct, and include_exported_renewable_electricity_in_total to Site inputs
    • add fuel_renewable_energy_pct input for all fuel burning technologies
    • constrain renewable electricity percentage based on user inputs
  • Add "Emissions and Renewable Energy Percent" testset

Changed

  • Allow Wind tech to be included when off_grid_flag is true
  • Add operating_reserve_required_pct to Wind struct and incorporate wind into operating reserve constraints
  • Add hot, cold TES results for MPC model
  • Update documentation and add docs/devdeploy.jl to locally host the REopt.jl documentation
  • Make ExistingBoiler fuel_cost_per_mmbtu a required input
  • In prodfactor.jl, include lat-long coordinates if-statement to determine whether the "nsrdb" dataset should be used in call to PVWatts. Accounts for recent updates to NSRDB data used by PVWatts (v6). If outside of NSRDB range, use "intl" (international) dataset.
  • Don't trigger GitHub 'Run test' workflow on a push that only changes README.md and/or CHANGELOG.md
  • Avoid triggering duplicate GitHub workflows. When pushing to a branch that's in a PR, only trigger tests on the push not on the PR sync also.

Fixed

  • Bug fix to constrain dvCurtail in time_steps_without_grid
  • Bug fix to report accurate wind ["year_one_to_load_series_kw"] in results/wind.jl (was previously not accounting for curtailed wind)

Update PV defaults, generator inputs bug fix, Float64 arg types to Real

07 Jul 22:17
Compare
Choose a tag to compare
  • Update PV defaults to tilt=10 for rooftop, tilt = abs(lat) for ground mount, azimuth = 180 for northern lats, azimuth = 0 for southern lats.
  • bug fix for Generator inputs to allow for time_steps_per_hour > 1
  • change various Float64 argument types to Real to allow integers too

bug fix for outage_simulator with microgrid_only=true

06 Jun 16:14
Compare
Choose a tag to compare

v0.16.0 add offgrid capability, many name changes

20 May 17:13
Compare
Choose a tag to compare

Allows users to model "off-grid" systems as a year-long outage:

  • add flag to "turn on" off-grid modeling Settings.off_grid_flag
  • when off_grid_flag is "true", adjust default values in core/ electric_storage, electric_load, financial, generator, pv
  • add operating reserve requirement inputs, outputs, and constraints based on load and PV generation
  • add minimum load met percent input and constraint
  • add generator replacement year and cost (for off-grid and on-grid)
  • add off-grid additional annual costs (tax deductible) and upfront capital costs (depreciable via straight line depreciation)

Name changes:

  • consistently append _before_tax and _after_tax to results names
  • change all instances of timestep to time_step and timesteps to time_steps

Other changes:

  • report previously missing lcc breakdown components, all reported in results/financial.jl
  • change variable types from Float to Real to allow users to enter Ints (where applicable)
  • year_one_coincident_peak_cost_after_tax is now correctly multiplied by (1 - p.s.financial.offtaker_tax_pct)