Releases: NREL/REopt.jl
Releases · NREL/REopt.jl
Simulated_load() addition, CHP cleanup, and AbsorptionChiller defaults logic
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
orsize_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
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 ifprime_mover
is not input. - The two functions made for
CHP
andSteamTurbine
are exported inREopt.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 theCHP.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
Add Heating and Cooling load time series results
Add Boiler and SteamTurbine Techs
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
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
toproduction_factor_series
and rename some internal methods and variables to match - Change four (4) CHP input field names to spell out
electric
(fromelec
) andefficiency
(fromeffic
) for electric and thermal efficiencies
Added
- Add schedule-based
FlatLoad
s 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 forSpaceHeatingLoad
andDomesticHotWaterLoad
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
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 theGHP
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 withGHP
. - The
GHP
size and dispatch of the differentGHP
options is pre-determined by theGhpGhx
package, so the REopt model just chooses one or none of theGHP
options with a binary decision variable.
- The unregistered
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
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
andinclude_health_in_objective
toSettings
inputs - constrain CO2 emissions based on
CO2_emissions_reduction_min_pct
,CO2_emissions_reduction_max_pct
, andinclude_exported_elec_emissions_in_total
added toSite
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) andElectricUtility
(grid) results - calculate
breakeven_cost_of_emissions_reduction_per_tonnes_CO2
forFinancial
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
, andinclude_exported_renewable_electricity_in_total
toSite
inputs - add
fuel_renewable_energy_pct
input for all fuel burning technologies - constrain renewable electricity percentage based on user inputs
- calculate renewable energy percentage (electric only and total) and add to
- 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
- 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 toReal
to allow integers too
bug fix for outage_simulator with microgrid_only=true
v0.16.1 Merge branch 'develop'
v0.16.0 add offgrid capability, many name changes
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
totime_step
andtimesteps
totime_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)