Skip to content

Releases: NREL/REopt_API

Energy Resilience Performance tool, IRA defaults updates, CHP defaults, other minor

17 Mar 17:03
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.8.0...v2.9.0

From CHANGELOG.md:

v2.9.0

Minor Updates

Added
  • Energy Resilience and Performance Tool:
    • Uses functionality added to the REopt Julia package in v0.27.0 to calculate outage survival reliability metrics for a DER scenario, which can be based on the results of a REopt optimization
    • Django models ERPMeta, ERPGeneratorInputs, ERPPrimeGeneratorInputs, ERPElectricStorageInputs, ERPPVInputs, ERPOutageInputs, ERPOutputs
    • /erp endpoint to which users POST ERP inputs (calls ERPJob())
    • /erp/<run_uuid>/results endpoint that GETs the results of an ERP job (calls erp_results())
    • /erp/help endpoint that GETs the ERP input field info (calls erp_help())
    • /erp/chp_defaults endpoint that GETs ERP CHP/prime generator input defaults based on parameters prime_mover, is_chp, and size_kw (calls erp_chp_prime_gen_defaults())
    • Tests in resilience+stats/tests/test_erp.py
  • In job/ app (v3), added Financial year_one_om_costs_before_tax_bau, lifecycle_om_costs_after_tax_bau
  • Added field production_factor_series to Django models WindOutputs and PVOutputs
  • In REoptjlMessageOutputs added a has_stacktrace field to denote if response has a stacktrace error or not. Default is False.
  • Added access to the multiple outage stochastic/robust modeling capabilities in REopt.jl. Not all inputs and outputs are exposed, but the following are:
    • SiteInputs: min_resil_time_steps
    • ElectricUtilityInputs: outage_start_time_steps, outage_durations, outage_probabilities
    • OutageOutputs: expected_outage_cost, max_outage_cost_per_outage_duration, unserved_load_series, unserved_load_per_outage, microgrid_upgrade_capital_cost, generator_fuel_used_per_outage
  • Added test using multiple outage modeling
  • Add /dev/schedule_stats endpoint
Changed
  • Update REopt.jl to v0.28.0 for job app (/dev -> v3)
  • /job/chp_defaults endpoint updated to take optional electric load metrics for non-heating CHP (Prime Generator in UI)
    • Changed /chp_defaults input of existing_boiler_production_type to hot_water_or_steam
    • CHP.size_class starting at 0 for average of other size_classes
    • CHP.max_size calculated based on heating load or electric load
  • In job/ app (v3), changed Financial breakeven_cost_of_emissions_reduction_per_tonnes_CO2 to breakeven_cost_of_emissions_reduction_per_tonne_CO2
  • In job/ app (v3), changed default ElectricLoad year to 2022 if user provides load data and 2017 if using CRBD
  • Changed scalar_to_vector helper function to scalar_or_monthly_to_8760
  • Changed GeneratorInputs fields 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 CHPInputs
  • Updated the following default values to job/ app (v3):
    • federal_itc_fraction to 0.3 (30%) in models PVInputs, WindInputs, and CHPInputs
    • total_itc_fraction to 0.3 (30%) in models HotWaterStorageInputs, ColdWaterStorageInputs, and ElectricStorageInputs
    • *macrs_bonus_fraction to 0.8 (80%) in models PVInputs, WindInputs, CHPInputs, PV, HotWaterStorageInputs, ColdWaterStorageInputs, and ElectricStorageInputs
    • macrs_option_years to 7 years in models HotWaterStorageInputs and ColdWaterStorageInputs
  • In reo/nested_inputs.py v2 inputs (defaults_dict[2]), updated the following default values in models ColdThermalStorageInputs, HotThermalStorageInputs
    • macrs_option_years to 7 (years)
    • macrs_bonus_pct to 0.8 (80%)
  • In reo/nested_inputs.py v2 inputs (defaults_dict[2]), updated the following default values:
    • ColdTES, HotTES: macrs_option_years to 7 (years)
    • ColdTES, HotTES: *macrs_bonus_pct to 0.8 (80%)
  • Updated the following default values to job/ app (v3):
    • PV, Wind, Storage, CHP, Hot Water Storage, Cold Water Storage, Electric Storage: federal_itc_fraction(PV,Wind,CHP) and total_itc_fraction(Hot Water Storage, Cold Water Storage, Electric Storage) to 0.3 (30%)
    • PV, Wind, Storage, CHP, Hot Water Storage, Cold Water Storage, Electric Storage: *macrs_bonus_fraction to 0.8 (80%)
    • Hot Water Storage and Cold Water Storage: macrs_option_years to 7 years
      Use TransactionTestCase instead of TestCase (this avoids whole test being wrapped in a transaction which leads to a TransactionManagementError when doing a database query in the middle)
  • Updated ubuntu-18.04 to ubuntu-latest in GitHub push/pull tests because 18.04 was deprecated in GitHub Actions
Fixed
  • In reo (v2), calculation of net_capital_costs_plus_om was previously missing addition sign for fuel charges. Corrected this equation.

v2.8.0: IRA tax incentive and GhpGhx.jl updates

01 Feb 17:43
Compare
Choose a tag to compare

What's Changed

  • Use GhpGhx.jl in v2 by @Bill-Becker in #411
  • Tax incentives updates from passage of Inflation Reduction Act in v2 by @adfarth in #404
  • master <- dev: IRA incentives and GhpGhx.jl updates to v2 by @adfarth in #412

Full Changelog: v2.7.1...v2.8.0

v2.7.1

13 Jan 22:00
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.6.0...v2.7.1

Error passing from REopt.jl and Add Thermal Storages to job app (/dev)

04 Jan 20:03
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.5.0...v2.6.0

v2.6.0

Minor Updates

Added

  1. REoptjlMessageOutputs model to capture errors and warnings returned by REoptjl during input processing and post optimization
  2. Missing output fields for ExistingBoilerOutputs model
  3. API test job\test\posts\all_inputs_test.json to include all input models in a single API test
  • added HotThermalStorageInputs model
  • added HotThermalStorageOutputs model
  • added ColdThermalStorageInputs model
  • added ColdThermalStorageOutputs model
  • add HotThermalStorageOutputs
  • add ColdThermalStorageOutputs
  • 0012_coldthermalstorageinputs.... file used to add new models to the db

Changed

  1. Default values for the following fields were changed to align them with REopt API v2 (i.e. stable, and REopt.jl) defaults. As-is, these values are aligned with REopt v1 defaults. Units were unchanged.
  • FinancialInputs.elec_cost_escalation_rate_fraction from 0.023 to 0.019
  • FinancialInputs.offtaker_discount_rate_fraction from 0.083 to 0.0564
  • FinancialInputs.owner_discount_rate_fraction from 0.083 to 0.0564
  • PVInputs.installed_cost_per_kw from 1600 to 1592
  • PVInputs.om_cost_per_kw from 16 to 17
  • WindInputs.om_cost_per_kw from 16 to 35
  • ElectricStorageInputs.installed_cost_per_kw from 840 to 775
  • ElectricStorageInputs.installed_cost_per_kwh from 420 to 388
  • ElectricStorageInputs.replace_cost_per_kw from 410 to 440
  • ElectricStorageInputs.replace_cost_per_kwh from 200 to 220
  1. Modified julia_src\http.jl and julia_src\cbc\http.jl to return status 400 when REopt responds with an error
  2. Updated r["Messages"] in views.py to include REoptjlMessageOutputs errors and warnings

Add Cooling and Heating Load Outputs to job app (/dev -> /v3)

20 Dec 02:55
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.4.0...v2.5.0

v2.5.0

Minor Updates

Added
  • 0011_coolingloadinputs.... file used to add new models to the db
    In job/models.py:
  • added ExistingChillerInputs model
  • added ExistingChillerOutputs model
  • added CoolingLoadInputs model
  • added CoolingLoadOutputs model
  • added HeatingLoadOutputs model
    In job/process_results.py:
  • add ExistingChillerOutputs
  • add CoolingLoadOutputs
  • add HeatingLoadOutputs
    In `job/validators.py:
  • add time series length validation on CoolingLoadInputs->thermal_loads_ton and CoolingLoadInputs->per_time_step_fractions_of_electric_load
    In job/views.py:
  • add new input/output models to properly save the inputs/outputs

Add CHP, /chp_defaults, and /simulated_load end to /dev for v3

29 Nov 16:52
Compare
Choose a tag to compare

v2.4.0

Minor Updates

Added
  • In job/models.py:
    • add CHPInputs model
    • add CHPOutputs model
  • In job/process_results.py add CHPOutputs
  • In job/validators.py add new input models
  • In job/views.py:
    • add new input/output models to properly save the inputs/outputs
    • add /chp_defaults endpoint which calls the http.jl chp_defaults endpoint
    • add /simulated_load endpoint which calls the http.jl simulated_load endpoint

What's Changed

  • add capability to job/ app (API v3 using REopt.jl backend) to handle CHP by @hdunham in #340
  • Add CHP, /chp_defaults, and /simulated_load end to /dev for v3 by @Bill-Becker in #382

Full Changelog: v2.3.1...v2.4.0

Fix Lookback

10 Nov 20:26
Compare
Choose a tag to compare

Fix lookback parameter naming and timesteps, see #379.

/job REopt.jl version update, incl name changes (e.g. pct -> fraction), add Boiler, and SteamTurbine

26 Sep 22:23
Compare
Choose a tag to compare

v2.3.0

Minor Updates

Changed

The following name changes were made in the job/ endpoint and julia_src/http.jl:

  • Change "_pct" to "_rate_fraction" for input and output names containing "discount", "escalation", and "tax_pct" (financial terms)
  • Change "pct" to "fraction" for all other input and output names (e.g., "min_soc", "min_turndown")
  • Change prod_factor_series to production_factor_series
  • Updated the version of REopt.jl in /julia_src to v0.20.0 which includes the addition of:
    • Boiler tech from the REopt_API (known as NewBoiler in API)
    • SteamTurbine tech from the REopt_API

See PR #367.

Deployment updates and dev/job/v3 additions

21 Sep 02:31
Compare
Choose a tag to compare

Kubernetes deployment updates and memory allocation adjustments to mitigate memory overload on servers, as well as:

From CHANGELOG.md:

Minor Updates

Fixed
  • Require ElectricTariff key in inputs when Settings.off_grid_flag is false
  • Create and save ElectricUtilityInputs model if ElectricUtility key not provided in inputs when Settings.off_grid_flag is false, in order to use the default inputs in job/models.py
  • Added message to messages() to alert user if valid ElectricUtility input is provided when Settings.off_grid_flag is true
  • Register
  • Make all urls available from stable/ also available from v2/. Includes registering OutageSimJob() and GHPGHXJob() to the 'v2' API and adding missing paths to urlpatterns in urls.py.
Changed
  • job/models.py:
    • remove Generator fuel_slope_gal_per_kwh and fuel_intercept_gal_per_hr defaults based on size, keep defaults independent of size
    • changed get_input_dict_from_run_uuid to accomodate new models
    • changed ElectricLoadInputs.wholesale_rate to use scalar_to_vector function
  • job/validators.py: Align PV tilt and aziumth defaults with API v2 behavior, based on location and PV type
Added
  • 0005_boilerinputs.... file used to add new models to the db
  • job/ endpoint: Add inputs and validation to model off-grid wind
    In job/models.py:
  • added ExistingBoilerInputs model
  • added ExistingBoilerOutputs model
  • added SpaceHeatingLoadInputs model
  • added scalar_to_vector to convert scalars of vector of 12 elements to 8760 elements
  • GeneratorInputs (must add to CHP and Boiler when implemented in v3)
    • added emissions_factor_lb_<pollutant>_per_gal for CO2, NOx, SO2, and PM25
    • add fuel_renewable_energy_pct
  • ElectricUtilityInputs
    • add emissions_factor_series_lb_<pollutant>_per_kwh for CO2, NOx, SO2, and PM25
  • Settings
    • add include_climate_in_objective and include_health_in_objective
  • SiteInputs
    • add renewable_electricity_min_pct, renewable_electricity_max_pct, and include_exported_renewable_electricity_in_total
    • add CO2_emissions_reduction_min_pct, CO2_emissions_reduction_max_pct, and include_exported_elec_emissions_in_total
  • FinancialInputs
    • add CO2_cost_per_tonne, CO2_cost_escalation_pct
    • add <pollutant>_grid_cost_per_tonne, <pollutant>_onsite_fuelburn_cost_per_tonne, and <pollutant>_cost_escalation_pct for NOx, SO2, and PM25
  • FinancialOutputs
    • add lifecycle_fuel_costs_after_tax
  • SiteOutputs
    • add renewable_electricity_pct, total_renewable_energy_pct
    • add year_one_emissions_tonnes_<pollutant>, year_one_emissions_from_fuelburn_tonnes_<pollutant>, lifecycle_emissions_tonnes_<pollutant>, and lifecycle_emissions_from_fuelburn_tonnes_<pollutant> for CO2, NOx, SO2, and PM25
  • FinancialOutputs
    • add breakeven_cost_of_emissions_reduction_per_tonnes_CO2
      In job/process_results.py:
  • add ExistingBoilerOutputs
    In job/test/test_job_endpoint.py:
  • test that AVERT and EASIUR defaults for emissions inputs not provided by user are passed back from REopt.jl and saved in database
  • add a testcase to validate that API is accepting/returning fields related to new models.
    In 'job/validators.py:
  • add new input models
    In job/views.py:
  • Added SiteInputs to help endpoint
  • Added SiteOutputs to outputs endpoint
  • add new input/output models to properly save the inputs/outputs

Point /stable/job to v2 of reo app

26 Jul 22:06
Compare
Choose a tag to compare

The /stable/job endpoint was erroneously pointing to v1 of the reo app still, and it was meant to point to v2 (new default values for some inputs).

Also, many updates to the in-development job endpoint (/dev/job URL) which integrates the REopt Julia Package (REopt.jl).

See PR #342 for more details and links to other PRs that are part of this merge.

See CHANGELOG.md for more details of changes made.