ElectricTariff.NEM
boolean is now determined byElectricUtility.net_metering_limit_kw
(true if limit > 0)- added
ElectricUtility
inputs fornet_metering_limit_kw
andinterconnection_limit_kw
- added binary choice for net metering vs. wholesale export
- added
ElectricTariff.export_rate_beyond_net_metering_limit
input (scalar or vector allowed) - added
can_net_meter
,can_wholesale
,can_export_beyond_nem_limit
tech inputs (PV
,Wind
,Generator
)
- added
Wind
module, relying on System Advisor Model Wind module for production factors and Wind Toolkit for resource data - new
ElectricTariff
input options:urdb_utility_name
andurdb_rate_name
blended_annual_energy_rate
andblended_annual_demand_rate
- added two capabilities that require binary variables:
- tax, production, and capacity incentives for PV (compatible with any energy generation technology)
- technology cost curve modeling capability
- both of these capabilities are only used for the technologies that require them (based on input values), unlike the API which always models these capabilities (and therefore always includes the binary variables).
cost_per_kw[h]
input fields are nowinstalled_cost_per_kw[h]
to distinguish it from other costs likeom_cost_per_kw[h]
- Financial input field refactored:
two_party_ownership
->third_party_ownership
total_itc_pct
->federal_itc_pct
on technology inputs- Three new tests: Wind, Blended Tariff and Complex Incentives (which aligns with API results)
- outage results processing would fail sometimes when an integer variable was not exact (e.g. 1.000000001)
- fixed
simulate_outages
for revised results formats (key names changed to align with the REopt Lite API)
- added PV.prod_factor_series_kw input (can skip PVWatts call)
- added
run_mpc
capability, which dispatches DER for minimum energy cost over an arbitrary time horizon
- ElectricLoad.city default is empty string, must be filled in before annual_kwh look up
- removed Storage.can_grid_export
- add optional integer constraint to prevent simultaneous export and import of power
- add warnings when adding integer variables
- add ability to add LinDistFlow constraints to multinode models
- no longer require
ElectricLoad.city
input (look up ASHRAE climate zone from lat/lon) - compatible with Julia 1.6
- Added multi-node (site) capability for PV and Storage
- started documentation process using Github Pages and Documenter.jl
- restructured outputs to align with the input structure, for example top-level keys added for
ElectricTariff
andPV
in the outputs
- compatible with Julia 1.5
- outage_simulator.jl had bug with summing over empty
Any[]
- add optional
microgrid_only
arg to simulate_outages
- added outage dispatch outputs and sped up their derivation
- removed redundant generator minimum turn down constraint
- handle missing input key for
year_one_soc_series_pct
inoutage_simulator
- remove erroneous
total_unserved_load = 0
output dvUnservedLoad
definition was allowing microgrid production to storage and curtailment to be double counted towards meeting critical load
- add
unserved_load_per_outage
output
- removed
total_unserved_load
output because it can take hours to generate and can error out when outage indices are not consecutive
- add @info for time spent processing results
- add
simulate_outages
function (similar to REopt Lite API outage simulator) - removed MutableArithmetics package from Project.toml (since JuMP now has method for
value(::MutableArithmetics.Zero)
) - added outage related outputs:
- Generator_mg_kw
- mg_Generator_upgrade_cost
- mg_Generator_fuel_used
- mg_PV_upgrade_cost
- mg_storage_upgrade_cost
- dvUnservedLoad array
- max_outage_cost_per_outage_duration
- allow VoLL values to be subtype of Real (rather than only Real)
- add
run_reopt
method for scenario Dict
- add separate decision variables and constraints for microgrid tech capacities
- new Site input
mg_tech_sizes_equal_grid_sizes
(boolean), whenfalse
the microgrid tech capacities are constrained to be <= the grid connected tech capacities
- new Site input
- allow non-integer
outage_probabilities
- correct
total_unserved_load
output - don't
add_min_hours_crit_ld_met_constraint
unlessmin_resil_timesteps <= length(elecutil.outage_timesteps)
- add support for custom ElectricLoad
loads_kw
input - include existing capacity in microgrid upgrade cost
- previously only had to pay to upgrade new capacity
- implement ElectricLoad
loads_kw_is_net
andcritical_loads_kw_is_net
- add existing PV production to raw load profile if
true
- add existing PV production to raw load profile if
- add
min_resil_timesteps
input and optional constraint for minimum timesteps that critical load must be met in every outage
- enforce storage cannot grid charge
deps/build.jl had a relative path dependency, fixed with an absolute path.
This package is currently under development and only has a subset of capabilities of the REopt Lite model used in the REopt Lite API. For example, the Wind model, tiered electric utility tariffs, and piecewise linear cost curves are not yet modeled in this code. However this code is easier to use than the API (only dependencies are Julia and a solver) and has a novel model for uncertain outages.