From c95bb213f70de7091cddc43ea93303cb6c97410f Mon Sep 17 00:00:00 2001 From: adfarth Date: Wed, 13 Nov 2024 14:05:04 -0700 Subject: [PATCH 01/21] initial commit --- CHANGELOG.md | 5 +++++ julia_src/http.jl | 8 ++++---- reoptjl/test/test_http_endpoints.py | 12 ++++++------ reoptjl/urls.py | 2 +- reoptjl/views.py | 4 ++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6e33c1d1..e0b9e207d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,11 @@ Classify the change according to the following categories: ##### Removed ### Patches +## gridRE +### Minor Updates +#### Changed +- Changed v3 endpoint "cambium_emissions_profile" to "cambium_profile" + ## v3.10.2 ### Minor Updates ##### Changed diff --git a/julia_src/http.jl b/julia_src/http.jl index fc91cabc9..2aea79099 100644 --- a/julia_src/http.jl +++ b/julia_src/http.jl @@ -348,9 +348,9 @@ function avert_emissions_profile(req::HTTP.Request) return HTTP.Response(200, JSON.json(data)) end -function cambium_emissions_profile(req::HTTP.Request) +function cambium_profile(req::HTTP.Request) d = JSON.parse(String(req.body)) - @info "Getting Cambium CO2 emissions profile..." + @info "Getting emissions or clean energy data from Cambium..." data = Dict() error_response = Dict() try @@ -360,7 +360,7 @@ function cambium_emissions_profile(req::HTTP.Request) lifetime = typeof(d["lifetime"]) == String ? parse(Int, d["lifetime"]) : d["lifetime"] load_year = typeof(d["load_year"]) == String ? parse(Int, d["load_year"]) : d["load_year"] - data = reoptjl.cambium_emissions_profile(;scenario= d["scenario"], + data = reoptjl.cambium_profile(;scenario= d["scenario"], location_type = d["location_type"], latitude=latitude, longitude=longitude, @@ -597,7 +597,7 @@ HTTP.register!(ROUTER, "POST", "/erp", erp) HTTP.register!(ROUTER, "POST", "/ghpghx", ghpghx) HTTP.register!(ROUTER, "GET", "/chp_defaults", chp_defaults) HTTP.register!(ROUTER, "GET", "/avert_emissions_profile", avert_emissions_profile) -HTTP.register!(ROUTER, "GET", "/cambium_emissions_profile", cambium_emissions_profile) +HTTP.register!(ROUTER, "GET", "/cambium_profile", cambium_profile) HTTP.register!(ROUTER, "GET", "/easiur_costs", easiur_costs) HTTP.register!(ROUTER, "GET", "/simulated_load", simulated_load) HTTP.register!(ROUTER, "GET", "/absorption_chiller_defaults", absorption_chiller_defaults) diff --git a/reoptjl/test/test_http_endpoints.py b/reoptjl/test/test_http_endpoints.py index d844fd513..0c6ef8f62 100644 --- a/reoptjl/test/test_http_endpoints.py +++ b/reoptjl/test/test_http_endpoints.py @@ -231,8 +231,8 @@ def test_avert_emissions_profile_endpoint(self): self.assertTrue("error" in view_response) - def test_cambium_emissions_profile_endpoint(self): - # Call to the django view endpoint v3/cambium_emissions_profile which calls the http.jl endpoint + def test_cambium_profile_endpoint(self): + # Call to the django view endpoint v3/cambium_profile which calls the http.jl endpoint #case 1: location in CONUS (Seattle, WA) inputs = { "load_year": 2021, @@ -245,7 +245,7 @@ def test_cambium_emissions_profile_endpoint(self): "metric_col": "lrmer_co2e", "grid_level": "enduse" } - resp = self.api_client.get(f'/v3/cambium_emissions_profile', data=inputs) + resp = self.api_client.get(f'/v3/cambium_profile', data=inputs) self.assertHttpOK(resp) view_response = json.loads(resp.content) self.assertEquals(view_response["metric_col"], "lrmer_co2e") @@ -254,21 +254,21 @@ def test_cambium_emissions_profile_endpoint(self): #case 2: location off shore of NJ (works for AVERT, not Cambium) inputs["latitude"] = 39.034417 inputs["longitude"] = -74.759292 - resp = self.api_client.get(f'/v3/cambium_emissions_profile', data=inputs) + resp = self.api_client.get(f'/v3/cambium_profile', data=inputs) self.assertHttpBadRequest(resp) view_response = json.loads(resp.content) self.assertTrue("error" in view_response) #case 3: Honolulu, HI (works for AVERT but not Cambium) inputs["latitude"] = 21.3099 inputs["longitude"] = -157.8581 - resp = self.api_client.get(f'/v3/cambium_emissions_profile', data=inputs) + resp = self.api_client.get(f'/v3/cambium_profile', data=inputs) self.assertHttpBadRequest(resp) view_response = json.loads(resp.content) self.assertTrue("error" in view_response) #case 4: location well outside of US (does not work) inputs["latitude"] = 0.0 inputs["longitude"] = 0.0 - resp = self.api_client.get(f'/v3/cambium_emissions_profile', data=inputs) + resp = self.api_client.get(f'/v3/cambium_profile', data=inputs) self.assertHttpBadRequest(resp) view_response = json.loads(resp.content) self.assertTrue("error" in view_response) diff --git a/reoptjl/urls.py b/reoptjl/urls.py index a0ffe3536..89617a7cf 100644 --- a/reoptjl/urls.py +++ b/reoptjl/urls.py @@ -11,7 +11,7 @@ re_path(r'^chp_defaults/?$', views.chp_defaults), re_path(r'^absorption_chiller_defaults/?$', views.absorption_chiller_defaults), re_path(r'^avert_emissions_profile/?$', views.avert_emissions_profile), - re_path(r'^cambium_emissions_profile/?$', views.cambium_emissions_profile), + re_path(r'^cambium_profile/?$', views.cambium_profile), re_path(r'^easiur_costs/?$', views.easiur_costs), re_path(r'^simulated_load/?$', views.simulated_load), re_path(r'^user/(?P[0-9a-f-]+)/summary/?$', views.summary), diff --git a/reoptjl/views.py b/reoptjl/views.py index a110631c8..55fcd44b8 100644 --- a/reoptjl/views.py +++ b/reoptjl/views.py @@ -1452,7 +1452,7 @@ def avert_emissions_profile(request): log.error(debug_msg) return JsonResponse({"Error": "Unexpected Error. Please check your input parameters and contact reopt@nrel.gov if problems persist."}, status=500) -def cambium_emissions_profile(request): +def cambium_profile(request): try: inputs = { "scenario": request.GET['scenario'], @@ -1471,7 +1471,7 @@ def cambium_emissions_profile(request): "julia" ) http_jl_response = requests.get( - "http://" + julia_host + ":8081/cambium_emissions_profile/", + "http://" + julia_host + ":8081/cambium_profile/", json=inputs ) response = JsonResponse( From 98ec478202d9c42f1add5fb95fb853e96f2037bb Mon Sep 17 00:00:00 2001 From: adfarth Date: Tue, 10 Dec 2024 16:09:24 -0700 Subject: [PATCH 02/21] change names --- CHANGELOG.md | 2 ++ reoptjl/models.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0b9e207d..67105b961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ Classify the change according to the following categories: ### Minor Updates #### Changed - Changed v3 endpoint "cambium_emissions_profile" to "cambium_profile" +- Changed name of ElectricUtility input **cambium_metric_col** to **cambium_co2_metric**, to distinguish between the CO2 and clean energy fraction metrics +- Changed name of ElectricUtility **cambium_emissions_region** to **cambium_region** ## v3.10.2 ### Minor Updates diff --git a/reoptjl/models.py b/reoptjl/models.py index 35c3d96d0..38f79805f 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -1743,7 +1743,7 @@ class ElectricUtilityInputs(BaseModel, models.Model): default = "GEA Regions", help_text=("Geographic boundary at which emissions are calculated. Options: ['Nations', 'GEA Regions', 'States'].") ) - cambium_metric_col = models.TextField( + cambium_co2_metric = models.TextField( blank=True, default = "lrmer_co2e", help_text=("Emissions metric used. Default is Long-run marginal emissions rate for CO2-equivalant, combined combustion and pre-combustion emissions rates. Options: See metric definitions and names in the Cambium documentation.") @@ -2038,7 +2038,7 @@ class ElectricUtilityOutputs(BaseModel, models.Model): null=True, blank=True, help_text=("Distance in meters from the site to the nearest AVERT emissions region.") ) - cambium_emissions_region = models.TextField( + cambium_region = models.TextField( blank=True, help_text=("Name of the Cambium emissions region used for climate emissions for grid electricity. " "Determined from site longitude and latitude and the cambium_location_type if " From 20d9bfbeaea640a227b5170b17a742bd674ade01 Mon Sep 17 00:00:00 2001 From: adfarth Date: Wed, 11 Dec 2024 14:16:03 -0700 Subject: [PATCH 03/21] Update models.py --- reoptjl/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reoptjl/models.py b/reoptjl/models.py index 38f79805f..be6ef1065 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -1736,7 +1736,7 @@ class ElectricUtilityInputs(BaseModel, models.Model): blank=True, default = "Mid-case", help_text=("Cambium Scenario for evolution of electricity sector (see Cambium documentation for descriptions)." - "Options: ['Mid-case', 'Mid-case with tax credit expiration', 'Low renewable energy cost', 'Low renewable energy cost with tax credit expiration', 'High renewable energy cost', 'High electrification', 'Low natrual gas prices', 'High natrual gas prices', 'Mid-case with 95% decarbonization by 2050', 'Mid-case with 100% decarbonization by 2035']") + "Options: ['Mid-case', 'Mid-case with tax credit expiration', 'Low renewable energy cost', 'Low renewable energy cost with tax credit expiration', 'High renewable energy cost', 'High electrification', 'Low natural gas prices', 'High natural gas prices', 'Mid-case with 95% decarbonization by 2050', 'Mid-case with 100% decarbonization by 2035']") ) cambium_location_type = models.TextField( blank=True, From a4788137e4272cfae56091e936ccbcd3f39db29b Mon Sep 17 00:00:00 2001 From: adfarth Date: Wed, 11 Dec 2024 15:30:32 -0700 Subject: [PATCH 04/21] Update models.py --- reoptjl/models.py | 88 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 12 deletions(-) diff --git a/reoptjl/models.py b/reoptjl/models.py index be6ef1065..c1eac63ae 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -406,6 +406,13 @@ class SiteInputs(BaseModel, models.Model): null=True, blank=True, help_text="Maximum allowed percentage of site electric consumption met by renewable energy on an annual basis." ) + + include_grid_renewable_fraction_in_RE_constraints = models.BooleanField( + default=True, + blank=True, + help_text=("If True, then the renewable energy content of energy from the grid is included in any min or max renewable energy requirements.") + ) + include_exported_elec_emissions_in_total = models.BooleanField( default=True, blank=True, @@ -437,14 +444,15 @@ class SiteOutputs(BaseModel, models.Model): primary_key=True ) - annual_renewable_electricity_kwh = models.FloatField( + annual_onsite_renewable_electricity_kwh = models.FloatField( null=True, blank=True, help_text=( "Electricity consumption (incl. electric heating/cooling loads) that is derived from on-site renewable resource generation." "Calculated as total annual RE electric generation, minus storage losses and curtailment, with the user selecting whether exported renewable generation is included). " ) ) - renewable_electricity_fraction = models.FloatField( + # TODO: I think "incl. electric heating/cooling loads" is not currently true + onsite_renewable_electricity_fraction_of_elec_load = models.FloatField( null=True, blank=True, help_text=( "Portion of electricity consumption (incl. electric heating/cooling loads) that is derived from on-site renewable resource generation." @@ -452,17 +460,31 @@ class SiteOutputs(BaseModel, models.Model): "divided by total annual electric consumption." ) ) - total_renewable_energy_fraction = models.FloatField( + onsite_renewable_energy_fraction_of_elec_and_thermal_load = models.FloatField( null=True, blank=True, help_text=( "Portion of annual total energy consumption that is derived from on-site renewable resource generation." - "The numerator is calculated as total annual RE electricity consumption (calculation described for annual_renewable_electricity_kwh output)," + "The numerator is calculated as total annual RE electricity consumption (calculation described for annual_onsite_renewable_electricity_kwh output)," "plus total annual thermal energy content of steam/hot water generated from renewable fuels (non-electrified heat loads)." "The thermal energy content is calculated as total energy content of steam/hot water generation from renewable fuels," "minus waste heat generated by renewable fuels, minus any applicable hot water thermal energy storage efficiency losses." "The denominator is calculated as total annual electricity consumption plus total annual thermal steam/hot water load." ) ) + onsite_and_grid_renewable_electricity_fraction_of_elec_load = models.FloatField( + null=True, blank=True, + help_text=( + "Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load, but additionally includes the renewable energy" + "content of grid-purchased electricity, accounting for any battery efficiency losses." + ) + ) + onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load = models.FloatField( + null=True, blank=True, + help_text=( + "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" + "content of grid-purchased electricity, accounting for any battery efficiency losses." + ) + ) annual_emissions_tonnes_CO2 = models.FloatField( null=True, blank=True, help_text="Average annual total tons of emissions associated with the site's grid-purchased electricity and on-site fuel consumption." @@ -527,14 +549,14 @@ class SiteOutputs(BaseModel, models.Model): null=True, blank=True, help_text="Total tons of PM2.5 emissions associated with the site's onsite fuel burn over the analysis period." ) - annual_renewable_electricity_kwh_bau = models.FloatField( + annual_onsite_renewable_electricity_kwh_bau = models.FloatField( null=True, blank=True, help_text=( "Electricity consumption (incl. electric heating/cooling loads) that is derived from on-site renewable resource generation in the BAU case." "Calculated as total RE electric generation in the BAU case, minus storage losses and curtailment, with the user selecting whether exported renewable generation is included). " ) ) - renewable_electricity_fraction_bau = models.FloatField( + onsite_renewable_electricity_fraction_of_elec_load_bau = models.FloatField( null=True, blank=True, help_text=( "Electricity consumption (incl. electric heating/cooling loads) that is derived from on-site renewable resource generation in the BAU case." @@ -542,17 +564,31 @@ class SiteOutputs(BaseModel, models.Model): "divided by total annual electric consumption." ) ) - total_renewable_energy_fraction_bau = models.FloatField( + onsite_renewable_energy_fraction_of_elec_and_thermal_load_bau = models.FloatField( null=True, blank=True, help_text=( "Portion of annual total energy consumption that is derived from on-site renewable resource generation in the BAU case." - "The numerator is calculated as total annual RE electricity consumption (calculation described for annual_renewable_electricity_kwh_bau output)," + "The numerator is calculated as total annual RE electricity consumption (calculation described for annual_onsite_renewable_electricity_kwh_bau output)," "plus total annual thermal energy content of steam/hot water generated from renewable fuels (non-electrified heat loads)." "The thermal energy content is calculated as total energy content of steam/hot water generation from renewable fuels," "minus waste heat generated by renewable fuels, minus any applicable hot water thermal energy storage efficiency losses." "The denominator is calculated as total annual electricity consumption plus total annual thermal steam/hot water load." ) ) + onsite_and_grid_renewable_electricity_fraction_of_elec_load_bau = models.FloatField( + null=True, blank=True, + help_text=( + "Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load, but additionally includes the renewable energy" + "content of grid-purchased electricity, accounting for any battery efficiency losses." + ) + ) + onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load_bau = models.FloatField( + null=True, blank=True, + help_text=( + "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" + "content of grid-purchased electricity, accounting for any battery efficiency losses." + ) + ) annual_emissions_tonnes_CO2_bau = models.FloatField( null=True, blank=True, help_text="Total tons of CO2e emissions associated with the site's energy consumption in an average year in the BAU case." @@ -1741,7 +1777,7 @@ class ElectricUtilityInputs(BaseModel, models.Model): cambium_location_type = models.TextField( blank=True, default = "GEA Regions", - help_text=("Geographic boundary at which emissions are calculated. Options: ['Nations', 'GEA Regions', 'States'].") + help_text=("Geographic boundary at which emissions and clean energy fraction are calculated. Options: ['Nations', 'GEA Regions'].") ) cambium_co2_metric = models.TextField( blank=True, @@ -1749,9 +1785,9 @@ class ElectricUtilityInputs(BaseModel, models.Model): help_text=("Emissions metric used. Default is Long-run marginal emissions rate for CO2-equivalant, combined combustion and pre-combustion emissions rates. Options: See metric definitions and names in the Cambium documentation.") ) cambium_start_year = models.IntegerField( - default=2024, + default=2025, validators=[ - MinValueValidator(2023), + MinValueValidator(2025), MaxValueValidator(2050) ], blank=True, @@ -1765,7 +1801,7 @@ class ElectricUtilityInputs(BaseModel, models.Model): blank=True, null=True, help_text=("Expected lifetime or analysis period of the intervention being studied. " - "Emissions will be averaged over this period. Default: analysis_years (from Financial struct)") + "Emissions and clean energy fraction will be averaged over this period. Default: analysis_years (from Financial struct)") ) cambium_grid_level = models.TextField( blank=True, @@ -1848,6 +1884,20 @@ class ElectricUtilityInputs(BaseModel, models.Model): help_text="Annual percent decrease in the total annual PM2.5 marginal emissions rate of the grid. A negative value indicates an annual increase." ) + cambium_cef_metric = models.TextField( + blank=True, + default = "cef_load", + help_text=("Options = ['cef_load', 'cef_gen']. cef_load is the fraction of generation that is clean, for the generation that is allocated to a region’s end-use load; cef_gen is the fraction of generation that is clean within a region.") + ) + + renewable_energy_fraction_series = ArrayField( + models.FloatField( + blank=True, + ), + default=list, blank=True, + help_text=("Fraction of energy supplied by the grid that is renewable. Can be scalar or timeseries (aligned with time_steps_per_hour).") + ) + def clean(self): error_messages = {} @@ -1928,6 +1978,14 @@ class ElectricUtilityOutputs(BaseModel, models.Model): null=True, blank=True, help_text=("Average annual energy supplied from grid to load") ) + annual_renewable_electricity_supplied_kwh = models.FloatField( + null=True, blank=True, + help_text=("Total renewable electricity supplied from the grid in an average year.") + ) + annual_renewable_electricity_supplied_kwh_bau = models.FloatField( + null=True, blank=True, + help_text=("Total renewable electricity supplied from the grid in an average year.") + ) annual_emissions_tonnes_CO2 = models.FloatField( null=True, blank=True, help_text=("Total tons of CO2 emissions associated with the site's grid-purchased electricity in an average year. " @@ -3446,6 +3504,12 @@ class ElectricStorageInputs(BaseModel, models.Model): help_text="Rebate based on installed energy capacity" ) + optimize_soc_init_fraction = models.BooleanField( + default=False, + blank=True, + help_text="If true, soc_init_fraction will not apply. Model will optimize initial SOC and constrain initial SOC = final SOC." + ) + class ElectricStorageOutputs(BaseModel, models.Model): key = "ElectricStorageOutputs" From e04f71d632c0623ee956dc76bf4c65cdbd84b19b Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 10:22:28 -0700 Subject: [PATCH 05/21] align with emissions updates --- julia_src/http.jl | 3 ++- reoptjl/models.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/julia_src/http.jl b/julia_src/http.jl index 2aea79099..ae576c59d 100644 --- a/julia_src/http.jl +++ b/julia_src/http.jl @@ -72,7 +72,8 @@ function reopt(req::HTTP.Request) ] inputs_with_defaults_from_avert_or_cambium = [ :emissions_factor_series_lb_CO2_per_kwh, :emissions_factor_series_lb_NOx_per_kwh, - :emissions_factor_series_lb_SO2_per_kwh, :emissions_factor_series_lb_PM25_per_kwh + :emissions_factor_series_lb_SO2_per_kwh, :emissions_factor_series_lb_PM25_per_kwh, + :renewable_energy_fraction_series ] if haskey(d, "CHP") inputs_with_defaults_from_chp = [ diff --git a/reoptjl/models.py b/reoptjl/models.py index c1eac63ae..2aac3beef 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -1772,7 +1772,7 @@ class ElectricUtilityInputs(BaseModel, models.Model): blank=True, default = "Mid-case", help_text=("Cambium Scenario for evolution of electricity sector (see Cambium documentation for descriptions)." - "Options: ['Mid-case', 'Mid-case with tax credit expiration', 'Low renewable energy cost', 'Low renewable energy cost with tax credit expiration', 'High renewable energy cost', 'High electrification', 'Low natural gas prices', 'High natural gas prices', 'Mid-case with 95% decarbonization by 2050', 'Mid-case with 100% decarbonization by 2035']") + "Options: ['Mid-case', 'Low renewable energy cost', 'High renewable energy cost', 'High demand growth', 'Low natural gas prices', 'High natural gas prices', 'Mid-case with 95% decarbonization by 2050', 'Mid-case with 100% decarbonization by 2035']") ) cambium_location_type = models.TextField( blank=True, From 74bd9f666da0c532648c19c9fe5f544d57e63965 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 11:03:21 -0700 Subject: [PATCH 06/21] GEA Regions 2023 --- reoptjl/models.py | 4 ++-- reoptjl/test/posts/ashp_defaults_update.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reoptjl/models.py b/reoptjl/models.py index 2aac3beef..6f958d7ad 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -1776,8 +1776,8 @@ class ElectricUtilityInputs(BaseModel, models.Model): ) cambium_location_type = models.TextField( blank=True, - default = "GEA Regions", - help_text=("Geographic boundary at which emissions and clean energy fraction are calculated. Options: ['Nations', 'GEA Regions'].") + default = "GEA Regions 2023", + help_text=("Geographic boundary at which emissions and clean energy fraction are calculated. Options: ['Nations', 'GEA Regions 2023'].") ) cambium_co2_metric = models.TextField( blank=True, diff --git a/reoptjl/test/posts/ashp_defaults_update.json b/reoptjl/test/posts/ashp_defaults_update.json index d3302c1d6..1d54d290f 100644 --- a/reoptjl/test/posts/ashp_defaults_update.json +++ b/reoptjl/test/posts/ashp_defaults_update.json @@ -27,7 +27,7 @@ "blended_annual_demand_rate": 0.0 }, "ElectricUtility": { - "cambium_location_type": "GEA Regions", + "cambium_location_type": "GEA Regions 2023", "cambium_metric_col": "lrmer_co2e", "cambium_scenario": "Mid-case", "cambium_grid_level": "enduse" From da6abda10e547517a376c0b934986acb619bf41b Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 11:09:44 -0700 Subject: [PATCH 07/21] Update CHANGELOG.md --- CHANGELOG.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67105b961..2f5d9db10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,10 +28,26 @@ Classify the change according to the following categories: ## gridRE ### Minor Updates -#### Changed +### Added +- Added the following inputs to account for the clean or renewable energy fraction of grid-purchased electricity: + - ElectricUtility **cambium_cef_metric** to utilize clean energy data from NREL's Cambium database + - **renewable_energy_fraction_series** to supply a custom grid clean or renewable energy scalar or series + - Site **include_grid_renewable_fraction_in_RE_constraints** - to allow user to choose whether to include grid RE in min max constraints +- Added the following outputs: + - ElectricUtility **annual_renewable_electricity_supplied_kwh** + - Site **onsite_and_grid_renewable_electricity_fraction_of_elec_load** + - Site **onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load** +- Added input option optimize_soc_init_fraction (defaults to false) to ElectricStorage, which makes the optimization choose the inital SOC (equal to final SOC) instead of using soc_init_fraction. The initial SOC is also constrained to equal the final SOC, which eliminates the "free energy" issue. We currently do not fix SOC when soc_init_fraction is used because this has caused infeasibility. +### Changed +- Changed name of the following inputs: + - ElectricUtility input **cambium_metric_col** changed to **cambium_co2_metric**, to distinguish between the CO2 and clean energy fraction metrics +- Changed name of the following outputs: + - ElectricUtility **cambium_emissions_region** changed to **cambium_region** + - Site **annual_renewable_electricity_kwh** changed to **annual_onsite_renewable_electricity_kwh** + - Site **renewable_electricity_fraction** changed to **onsite_renewable_electricity_fraction_of_elec_load** + - Site **total_renewable_energy_fraction** changed to **onsite_renewable_energy_fraction_of_elec_and_thermal_load** - Changed v3 endpoint "cambium_emissions_profile" to "cambium_profile" -- Changed name of ElectricUtility input **cambium_metric_col** to **cambium_co2_metric**, to distinguish between the CO2 and clean energy fraction metrics -- Changed name of ElectricUtility **cambium_emissions_region** to **cambium_region** +- In REopt.jl: Updated Cambium API call to Cambium 2023 dataset, Updated AVERT emissions data to v4.3, which uses Regional Data Files for year 2023 for CONUS. For Alaska and Hawaii (regions AKGD, HIMS, HIOA), updated eGRID data to eGRID2022 datafile, adjusted to CO2e values. ## v3.10.2 ### Minor Updates From 0f30a7998dc80ad79fdbe98cf0fbbc96ed890e32 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 12:25:32 -0700 Subject: [PATCH 08/21] update EMISSIONS_DECREASE_DEFAULTS --- CHANGELOG.md | 2 +- reoptjl/models.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f5d9db10..6bc45a148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,7 @@ Classify the change according to the following categories: ### Patches ## gridRE -### Minor Updates +### Major Updates ### Added - Added the following inputs to account for the clean or renewable energy fraction of grid-purchased electricity: - ElectricUtility **cambium_cef_metric** to utilize clean energy data from NREL's Cambium database diff --git a/reoptjl/models.py b/reoptjl/models.py index 6f958d7ad..ae1eb94d9 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -69,10 +69,10 @@ class MACRS_YEARS_CHOICES(models.IntegerChoices): } EMISSIONS_DECREASE_DEFAULTS = { # year over year decrease in grid emissions rate - "CO2e" : 0.02163, - "NOx" : 0.02163, - "SO2" : 0.02163, - "PM25" : 0.02163 + "CO2e" : 0.0459, + "NOx" : 0.0459, + "SO2" : 0.0459, + "PM25" : 0.0459 } WIND_COST_DEFAULTS = { # size_class_to_installed_cost From bf8bdaba2d7204f1ac2f0ac5692a3e929fdb1e78 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 14:04:24 -0700 Subject: [PATCH 09/21] stay under 63 char limit --- CHANGELOG.md | 2 +- reoptjl/models.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bc45a148..0a3819d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,7 +36,7 @@ Classify the change according to the following categories: - Added the following outputs: - ElectricUtility **annual_renewable_electricity_supplied_kwh** - Site **onsite_and_grid_renewable_electricity_fraction_of_elec_load** - - Site **onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load** + - Site **onsite_and_grid_renewable_energy_fraction_of_total_load** - Added input option optimize_soc_init_fraction (defaults to false) to ElectricStorage, which makes the optimization choose the inital SOC (equal to final SOC) instead of using soc_init_fraction. The initial SOC is also constrained to equal the final SOC, which eliminates the "free energy" issue. We currently do not fix SOC when soc_init_fraction is used because this has caused infeasibility. ### Changed - Changed name of the following inputs: diff --git a/reoptjl/models.py b/reoptjl/models.py index ae1eb94d9..3a999ef64 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -478,7 +478,7 @@ class SiteOutputs(BaseModel, models.Model): "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) - onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load = models.FloatField( + onsite_and_grid_renewable_energy_fraction_of_total_load = models.FloatField( null=True, blank=True, help_text=( "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" @@ -582,7 +582,7 @@ class SiteOutputs(BaseModel, models.Model): "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) - onsite_and_grid_renewable_energy_fraction_of_elec_and_thermal_load_bau = models.FloatField( + onsite_and_grid_renewable_energy_fraction_of_total_load_bau = models.FloatField( null=True, blank=True, help_text=( "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" From 4c67ad51631c860228fdae2a6ebac9b9c9cd2d19 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 12 Dec 2024 14:27:36 -0700 Subject: [PATCH 10/21] align names --- CHANGELOG.md | 2 +- reoptjl/models.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a3819d59..eede85b8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,7 +45,7 @@ Classify the change according to the following categories: - ElectricUtility **cambium_emissions_region** changed to **cambium_region** - Site **annual_renewable_electricity_kwh** changed to **annual_onsite_renewable_electricity_kwh** - Site **renewable_electricity_fraction** changed to **onsite_renewable_electricity_fraction_of_elec_load** - - Site **total_renewable_energy_fraction** changed to **onsite_renewable_energy_fraction_of_elec_and_thermal_load** + - Site **total_renewable_energy_fraction** changed to **onsite_renewable_energy_fraction_of_total_load** - Changed v3 endpoint "cambium_emissions_profile" to "cambium_profile" - In REopt.jl: Updated Cambium API call to Cambium 2023 dataset, Updated AVERT emissions data to v4.3, which uses Regional Data Files for year 2023 for CONUS. For Alaska and Hawaii (regions AKGD, HIMS, HIOA), updated eGRID data to eGRID2022 datafile, adjusted to CO2e values. diff --git a/reoptjl/models.py b/reoptjl/models.py index 3a999ef64..1c7553f1d 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -460,7 +460,7 @@ class SiteOutputs(BaseModel, models.Model): "divided by total annual electric consumption." ) ) - onsite_renewable_energy_fraction_of_elec_and_thermal_load = models.FloatField( + onsite_renewable_energy_fraction_of_total_load = models.FloatField( null=True, blank=True, help_text=( "Portion of annual total energy consumption that is derived from on-site renewable resource generation." @@ -481,7 +481,7 @@ class SiteOutputs(BaseModel, models.Model): onsite_and_grid_renewable_energy_fraction_of_total_load = models.FloatField( null=True, blank=True, help_text=( - "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" + "Calculation is the same as onsite_renewable_energy_fraction_of_total_load, but additionally includes the renewable energy" "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) @@ -564,7 +564,7 @@ class SiteOutputs(BaseModel, models.Model): "divided by total annual electric consumption." ) ) - onsite_renewable_energy_fraction_of_elec_and_thermal_load_bau = models.FloatField( + onsite_renewable_energy_fraction_of_total_load_bau = models.FloatField( null=True, blank=True, help_text=( "Portion of annual total energy consumption that is derived from on-site renewable resource generation in the BAU case." @@ -585,7 +585,7 @@ class SiteOutputs(BaseModel, models.Model): onsite_and_grid_renewable_energy_fraction_of_total_load_bau = models.FloatField( null=True, blank=True, help_text=( - "Calculation is the same as onsite_renewable_energy_fraction_of_elec_and_thermal_load, but additionally includes the renewable energy" + "Calculation is the same as onsite_renewable_energy_fraction_of_total_load, but additionally includes the renewable energy" "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) From 8c3a606a359fb0e3190bb435b93eba17cbbc551b Mon Sep 17 00:00:00 2001 From: adfarth Date: Fri, 24 Jan 2025 14:40:05 -0700 Subject: [PATCH 11/21] temp point to feature branch --- julia_src/Manifest.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/julia_src/Manifest.toml b/julia_src/Manifest.toml index 1803c1732..55fd3376d 100644 --- a/julia_src/Manifest.toml +++ b/julia_src/Manifest.toml @@ -929,9 +929,11 @@ uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.REopt]] deps = ["ArchGDAL", "CSV", "CoolProp", "DataFrames", "Dates", "DelimitedFiles", "HTTP", "JLD", "JSON", "JuMP", "LinDistFlow", "LinearAlgebra", "Logging", "MathOptInterface", "Requires", "Roots", "Statistics", "TestEnv"] -git-tree-sha1 = "324394f21cb7e2db3d9e7ebde19c4e83c5a64e0f" +git-tree-sha1 = "b58ddeb73296aadfb077c2bb41229fec4091834f" +repo-rev = "gridRE-dev" +repo-url = "https://github.com/NREL/REopt.jl.git" uuid = "d36ad4e8-d74a-4f7a-ace1-eaea049febf6" -version = "0.50.0" +version = "0.49.1" [[deps.Random]] deps = ["SHA"] From 2f9edd609a60982746e90329c65caa42a1cb5094 Mon Sep 17 00:00:00 2001 From: adfarth Date: Fri, 24 Jan 2025 15:03:20 -0700 Subject: [PATCH 12/21] migrations and name updates --- reoptjl/custom_table_config.py | 4 +- ...ilityinputs_cambium_co2_metric_and_more.py | 133 ++++++++++++++++++ reoptjl/test/posts/all_inputs_test.json | 3 +- reoptjl/test/posts/ashp_defaults_update.json | 2 +- reoptjl/test/test_job_endpoint.py | 2 +- 5 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 reoptjl/migrations/0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more.py diff --git a/reoptjl/custom_table_config.py b/reoptjl/custom_table_config.py index bfafcaea5..c363e6c43 100644 --- a/reoptjl/custom_table_config.py +++ b/reoptjl/custom_table_config.py @@ -453,8 +453,8 @@ { "label" : "Annual % Renewable Electricity (%)", "key" : "annual_renewable_electricity", - "bau_value" : lambda df: safe_get(df, "outputs.Site.renewable_electricity_fraction_bau"), - "scenario_value": lambda df: safe_get(df, "outputs.Site.renewable_electricity_fraction") + "bau_value" : lambda df: safe_get(df, "outputs.Site.onsite_renewable_electricity_fraction_of_elec_load_bau"), + "scenario_value": lambda df: safe_get(df, "outputs.Site.onsite_renewable_electricity_fraction_of_elec_load") }, { "label" : "Annual CO2 Emissions (tonnes)", diff --git a/reoptjl/migrations/0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more.py b/reoptjl/migrations/0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more.py new file mode 100644 index 000000000..1ff0eca46 --- /dev/null +++ b/reoptjl/migrations/0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more.py @@ -0,0 +1,133 @@ +# Generated by Django 4.0.7 on 2025-01-24 22:02 + +import django.contrib.postgres.fields +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('reoptjl', '0076_ashpspaceheaterinputs_force_dispatch_and_more'), + ] + + operations = [ + migrations.RenameField( + model_name='electricutilityinputs', + old_name='cambium_metric_col', + new_name='cambium_co2_metric', + ), + migrations.RenameField( + model_name='electricutilityoutputs', + old_name='cambium_emissions_region', + new_name='cambium_region', + ), + migrations.RenameField( + model_name='siteoutputs', + old_name='annual_renewable_electricity_kwh', + new_name='annual_onsite_renewable_electricity_kwh', + ), + migrations.RenameField( + model_name='siteoutputs', + old_name='annual_renewable_electricity_kwh_bau', + new_name='annual_onsite_renewable_electricity_kwh_bau', + ), + migrations.RenameField( + model_name='siteoutputs', + old_name='renewable_electricity_fraction', + new_name='onsite_renewable_electricity_fraction_of_elec_load', + ), + migrations.RenameField( + model_name='siteoutputs', + old_name='renewable_electricity_fraction_bau', + new_name='onsite_renewable_electricity_fraction_of_elec_load_bau', + ), + migrations.RemoveField( + model_name='siteoutputs', + name='total_renewable_energy_fraction', + ), + migrations.RemoveField( + model_name='siteoutputs', + name='total_renewable_energy_fraction_bau', + ), + migrations.AddField( + model_name='electricstorageinputs', + name='optimize_soc_init_fraction', + field=models.BooleanField(blank=True, default=False, help_text='If true, soc_init_fraction will not apply. Model will optimize initial SOC and constrain initial SOC = final SOC.'), + ), + migrations.AddField( + model_name='electricutilityinputs', + name='cambium_cef_metric', + field=models.TextField(blank=True, default='cef_load', help_text="Options = ['cef_load', 'cef_gen']. cef_load is the fraction of generation that is clean, for the generation that is allocated to a region’s end-use load; cef_gen is the fraction of generation that is clean within a region."), + ), + migrations.AddField( + model_name='electricutilityinputs', + name='renewable_energy_fraction_series', + field=django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(blank=True), blank=True, default=list, help_text='Fraction of energy supplied by the grid that is renewable. Can be scalar or timeseries (aligned with time_steps_per_hour).', size=None), + ), + migrations.AddField( + model_name='electricutilityoutputs', + name='annual_renewable_electricity_supplied_kwh', + field=models.FloatField(blank=True, help_text='Total renewable electricity supplied from the grid in an average year.', null=True), + ), + migrations.AddField( + model_name='electricutilityoutputs', + name='annual_renewable_electricity_supplied_kwh_bau', + field=models.FloatField(blank=True, help_text='Total renewable electricity supplied from the grid in an average year.', null=True), + ), + migrations.AddField( + model_name='siteinputs', + name='include_grid_renewable_fraction_in_RE_constraints', + field=models.BooleanField(blank=True, default=True, help_text='If True, then the renewable energy content of energy from the grid is included in any min or max renewable energy requirements.'), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_electricity_fraction_of_elec_load', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_electricity_fraction_of_elec_load_bau', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_energy_fraction_of_total_load', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_energy_fraction_of_total_load, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_energy_fraction_of_total_load_bau', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_energy_fraction_of_total_load, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_renewable_energy_fraction_of_total_load', + field=models.FloatField(blank=True, help_text='Portion of annual total energy consumption that is derived from on-site renewable resource generation.The numerator is calculated as total annual RE electricity consumption (calculation described for annual_onsite_renewable_electricity_kwh output),plus total annual thermal energy content of steam/hot water generated from renewable fuels (non-electrified heat loads).The thermal energy content is calculated as total energy content of steam/hot water generation from renewable fuels,minus waste heat generated by renewable fuels, minus any applicable hot water thermal energy storage efficiency losses.The denominator is calculated as total annual electricity consumption plus total annual thermal steam/hot water load.', null=True), + ), + migrations.AddField( + model_name='siteoutputs', + name='onsite_renewable_energy_fraction_of_total_load_bau', + field=models.FloatField(blank=True, help_text='Portion of annual total energy consumption that is derived from on-site renewable resource generation in the BAU case.The numerator is calculated as total annual RE electricity consumption (calculation described for annual_onsite_renewable_electricity_kwh_bau output),plus total annual thermal energy content of steam/hot water generated from renewable fuels (non-electrified heat loads).The thermal energy content is calculated as total energy content of steam/hot water generation from renewable fuels,minus waste heat generated by renewable fuels, minus any applicable hot water thermal energy storage efficiency losses.The denominator is calculated as total annual electricity consumption plus total annual thermal steam/hot water load.', null=True), + ), + migrations.AlterField( + model_name='electricutilityinputs', + name='cambium_levelization_years', + field=models.IntegerField(blank=True, help_text='Expected lifetime or analysis period of the intervention being studied. Emissions and clean energy fraction will be averaged over this period. Default: analysis_years (from Financial struct)', null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)]), + ), + migrations.AlterField( + model_name='electricutilityinputs', + name='cambium_location_type', + field=models.TextField(blank=True, default='GEA Regions 2023', help_text="Geographic boundary at which emissions and clean energy fraction are calculated. Options: ['Nations', 'GEA Regions 2023']."), + ), + migrations.AlterField( + model_name='electricutilityinputs', + name='cambium_scenario', + field=models.TextField(blank=True, default='Mid-case', help_text="Cambium Scenario for evolution of electricity sector (see Cambium documentation for descriptions).Options: ['Mid-case', 'Low renewable energy cost', 'High renewable energy cost', 'High demand growth', 'Low natural gas prices', 'High natural gas prices', 'Mid-case with 95% decarbonization by 2050', 'Mid-case with 100% decarbonization by 2035']"), + ), + migrations.AlterField( + model_name='electricutilityinputs', + name='cambium_start_year', + field=models.IntegerField(blank=True, default=2025, help_text='First year of operation of system. Emissions will be levelized starting in this year for the duration of cambium_levelization_years.', validators=[django.core.validators.MinValueValidator(2025), django.core.validators.MaxValueValidator(2050)]), + ), + ] diff --git a/reoptjl/test/posts/all_inputs_test.json b/reoptjl/test/posts/all_inputs_test.json index fbc26998a..03206b3e5 100644 --- a/reoptjl/test/posts/all_inputs_test.json +++ b/reoptjl/test/posts/all_inputs_test.json @@ -145,7 +145,8 @@ "emissions_factor_CO2_decrease_fraction": 0.01174, "emissions_factor_NOx_decrease_fraction": 0.01174, "emissions_factor_SO2_decrease_fraction": 0.01174, - "emissions_factor_PM25_decrease_fraction": 0.01174 + "emissions_factor_PM25_decrease_fraction": 0.01174, + "cambium_co2_metric": "lrmer_co2e" }, "ElectricStorage": { "min_kw": 100.0, diff --git a/reoptjl/test/posts/ashp_defaults_update.json b/reoptjl/test/posts/ashp_defaults_update.json index 1d54d290f..0a937aa55 100644 --- a/reoptjl/test/posts/ashp_defaults_update.json +++ b/reoptjl/test/posts/ashp_defaults_update.json @@ -28,7 +28,7 @@ }, "ElectricUtility": { "cambium_location_type": "GEA Regions 2023", - "cambium_metric_col": "lrmer_co2e", + "cambium_co2_metric": "lrmer_co2e", "cambium_scenario": "Mid-case", "cambium_grid_level": "enduse" }, diff --git a/reoptjl/test/test_job_endpoint.py b/reoptjl/test/test_job_endpoint.py index 579e16806..5dfe67391 100644 --- a/reoptjl/test/test_job_endpoint.py +++ b/reoptjl/test/test_job_endpoint.py @@ -59,7 +59,7 @@ def test_pv_battery_and_emissions_defaults_from_julia(self): self.assertAlmostEqual(results["ElectricStorage"]["size_kw"], 49.05, places=1) self.assertAlmostEqual(results["ElectricStorage"]["size_kwh"], 83.32, places=1) - self.assertIsNotNone(results["Site"]["total_renewable_energy_fraction"]) + self.assertIsNotNone(results["Site"]["onsite_renewable_energy_fraction_of_total_load"]) self.assertIsNotNone(results["Site"]["annual_emissions_tonnes_CO2"]) self.assertIsNotNone(results["Site"]["lifecycle_emissions_tonnes_NOx"]) From d739c13eacbfb3e2031e070d5590626d747865d2 Mon Sep 17 00:00:00 2001 From: adfarth Date: Sat, 25 Jan 2025 08:04:32 -0700 Subject: [PATCH 13/21] Update test_http_endpoints.py --- reoptjl/test/test_http_endpoints.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reoptjl/test/test_http_endpoints.py b/reoptjl/test/test_http_endpoints.py index 0c6ef8f62..264c600d2 100644 --- a/reoptjl/test/test_http_endpoints.py +++ b/reoptjl/test/test_http_endpoints.py @@ -237,7 +237,7 @@ def test_cambium_profile_endpoint(self): inputs = { "load_year": 2021, "scenario": "Mid-case", - "location_type": "States", + "location_type": "GEA Regions 2023", "latitude": 47.606211, # Seattle "longitude": -122.336052, # Seattle "start_year": 2024, @@ -249,7 +249,7 @@ def test_cambium_profile_endpoint(self): self.assertHttpOK(resp) view_response = json.loads(resp.content) self.assertEquals(view_response["metric_col"], "lrmer_co2e") - self.assertEquals(view_response["location"], "Washington") + self.assertEquals(view_response["location"], "Northern Grid West") self.assertEquals(len(view_response["emissions_factor_series_lb_CO2_per_kwh"]), 8760) #case 2: location off shore of NJ (works for AVERT, not Cambium) inputs["latitude"] = 39.034417 From 67be8263561bfc19d468082e8da157016e6679c1 Mon Sep 17 00:00:00 2001 From: adfarth Date: Sat, 25 Jan 2025 08:29:47 -0700 Subject: [PATCH 14/21] Update test_http_endpoints.py --- reoptjl/test/test_http_endpoints.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reoptjl/test/test_http_endpoints.py b/reoptjl/test/test_http_endpoints.py index 264c600d2..8b0e25ad6 100644 --- a/reoptjl/test/test_http_endpoints.py +++ b/reoptjl/test/test_http_endpoints.py @@ -250,7 +250,7 @@ def test_cambium_profile_endpoint(self): view_response = json.loads(resp.content) self.assertEquals(view_response["metric_col"], "lrmer_co2e") self.assertEquals(view_response["location"], "Northern Grid West") - self.assertEquals(len(view_response["emissions_factor_series_lb_CO2_per_kwh"]), 8760) + self.assertEquals(len(view_response["data_series"]), 8760) #case 2: location off shore of NJ (works for AVERT, not Cambium) inputs["latitude"] = 39.034417 inputs["longitude"] = -74.759292 From 5e25f4338dd0b9ad1e67d2ee9b25a2f2fcfaabca Mon Sep 17 00:00:00 2001 From: adfarth Date: Tue, 28 Jan 2025 08:41:29 -0700 Subject: [PATCH 15/21] Create 0078_merge_20250128_1541.py --- reoptjl/migrations/0078_merge_20250128_1541.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 reoptjl/migrations/0078_merge_20250128_1541.py diff --git a/reoptjl/migrations/0078_merge_20250128_1541.py b/reoptjl/migrations/0078_merge_20250128_1541.py new file mode 100644 index 000000000..c25b30900 --- /dev/null +++ b/reoptjl/migrations/0078_merge_20250128_1541.py @@ -0,0 +1,14 @@ +# Generated by Django 4.0.7 on 2025-01-28 15:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('reoptjl', '0077_electricstorageinputs_max_duration_hours_and_more'), + ('reoptjl', '0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more'), + ] + + operations = [ + ] From eba4d407997ee796a3d1eb150a1c9b4b77d7c9c1 Mon Sep 17 00:00:00 2001 From: adfarth Date: Thu, 30 Jan 2025 15:36:15 -0700 Subject: [PATCH 16/21] updt julia_src Dockerfile and Manifest --- julia_src/Dockerfile | 2 +- julia_src/Manifest.toml | 300 ++++++++++++++++++++++------------------ 2 files changed, 170 insertions(+), 132 deletions(-) diff --git a/julia_src/Dockerfile b/julia_src/Dockerfile index e75b58da6..609ff1abb 100644 --- a/julia_src/Dockerfile +++ b/julia_src/Dockerfile @@ -1,4 +1,4 @@ -FROM julia:1.10.2 +FROM julia:1.11.2 # Install NREL root certs for machines running on NREL's network. ARG NREL_ROOT_CERT_URL_ROOT="" diff --git a/julia_src/Manifest.toml b/julia_src/Manifest.toml index 55fd3376d..9b181170d 100644 --- a/julia_src/Manifest.toml +++ b/julia_src/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.2" +julia_version = "1.11.2" manifest_format = "2.0" project_hash = "b3c6037c53375dada9e36c23f668bcd0efac8f34" @@ -25,24 +25,24 @@ version = "1.5.0" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] -git-tree-sha1 = "96bed9b1b57cf750cca50c311a197e306816a1cc" +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "0ba8f4c1f06707985ffb4804fdad1bf97b233897" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.39" +version = "0.1.41" [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsDatesExt = "Dates" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - AccessorsTestExt = "Test" - AccessorsUnitfulExt = "Unitful" + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" [deps.Accessors.weakdeps] AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Requires = "ae029012-a4dd-5104-9daa-d747884805df" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" @@ -57,10 +57,11 @@ version = "0.9.4" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.AxisArrays]] deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] @@ -70,12 +71,13 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "f1dff6729bc61f4d49e140da1af55dcd1ac97b2f" +deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "e38fbc49a620f5d0b660d7f543db1009fe0f8336" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.5.0" +version = "1.6.0" [[deps.BitFlags]] git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" @@ -90,15 +92,15 @@ version = "0.7.3" [[deps.Blosc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "c5acdf7065862659dd4245494c40c90a66308651" +git-tree-sha1 = "ef12cdd1c7fb7e1dfd6fa8fd60d4db6bc61d2f23" uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" -version = "1.21.6+1" +version = "1.21.6+2" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "35abeca13bc0425cff9e59e229d971f5231323bf" +git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+3" +version = "1.0.8+4" [[deps.CEnum]] git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" @@ -195,7 +197,7 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.0+0" +version = "1.1.1+0" [[deps.CompositionsBase]] git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" @@ -269,6 +271,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.DelimitedFiles]] deps = ["Mmap"] @@ -319,14 +322,14 @@ version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f42a5b1e20e009a43c3646635ed81a9fcaccb287" +git-tree-sha1 = "e51db81749b0777b2147fbe7b783ee79045b8e99" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.4+2" +version = "2.6.4+3" [[deps.Extents]] -git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5" +git-tree-sha1 = "063512a13dbe9c40d999c439268539aa552d1ae6" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.4" +version = "0.1.5" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] @@ -351,6 +354,7 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FixedPointNumbers]] deps = ["Statistics"] @@ -373,6 +377,7 @@ version = "0.10.38" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GDAL]] deps = ["CEnum", "GDAL_jll", "NetworkOptions", "PROJ_jll"] @@ -395,18 +400,18 @@ version = "3.11.2+0" [[deps.GMP_jll]] deps = ["Artifacts", "Libdl"] uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" -version = "6.2.1+6" +version = "6.3.0+0" [[deps.GeoFormatTypes]] -git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271" +git-tree-sha1 = "8e233d5167e63d708d41f87597433f59a0f213fe" uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" -version = "0.4.2" +version = "0.4.4" [[deps.GeoInterface]] deps = ["DataAPI", "Extents", "GeoFormatTypes"] -git-tree-sha1 = "f4ee66b6b1872a4ca53303fbb51d158af1bf88d4" +git-tree-sha1 = "294e99f19869d0b0cb71aef92f19d03649d028d5" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.4.0" +version = "1.4.1" [[deps.GeoInterfaceRecipes]] deps = ["GeoInterface", "RecipesBase"] @@ -415,7 +420,7 @@ uuid = "0329782f-3d07-4b52-b9f6-d3137cf03c7a" version = "1.0.2" [[deps.GhpGhx]] -git-tree-sha1 = "bddcbcddc9a4ae7ae4f1ea7d4d8ccf38507d4071" +git-tree-sha1 = "c2f3becdf925f287778fa088da6da01e307f6ce8" repo-rev = "main" repo-url = "https://github.com/NREL/GhpGhx.jl.git" uuid = "7ce85f02-24a8-4d69-a3f0-14b5daa7d30c" @@ -452,28 +457,28 @@ uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" version = "1.14.2+1" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "c67b33b085f6e2faf8bf79a61962e7339a81129c" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.1" +version = "1.10.15" [[deps.HiGHS]] deps = ["HiGHS_jll", "MathOptInterface", "PrecompileTools", "SparseArrays"] -git-tree-sha1 = "fce13308f09771b160232903cad57be39a8a0ebb" +git-tree-sha1 = "b07cf87cb3bcbd65d1d3fcf4143d4a44abe33d20" uuid = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" -version = "1.7.5" +version = "1.13.0" [[deps.HiGHS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "f596ee3668df8587158bcaef1ae47bf75bc0fe39" +git-tree-sha1 = "26694f04567e584b054b9f33a810cec52adafa38" uuid = "8fd58aa0-07eb-5a78-9b36-339c94fd15ea" -version = "1.6.0+1" +version = "1.9.0+0" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "290232556f4ffb60ac3e476acf28e1a46e764742" +git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.2+2" +version = "2.11.2+3" [[deps.ImageCore]] deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] @@ -497,6 +502,7 @@ version = "1.4.2" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.IntervalSets]] git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" @@ -526,14 +532,14 @@ version = "1.3.1" [[deps.Ipopt_jll]] deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] -git-tree-sha1 = "4f55ad688c698a4f77d892a1cb673f7e8a30f178" +git-tree-sha1 = "546c40fd3718c65d48296dd6cec98af9904e3ca4" uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" -version = "300.1400.1700+0" +version = "300.1400.1400+0" [[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" +version = "0.2.4" [[deps.IterTools]] git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" @@ -563,17 +569,29 @@ git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "1d322381ef7b087548321d3f878cb4c9bd8f8f9b" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.14.1" + + [deps.JSON3.extensions] + JSON3ArrowExt = ["ArrowTypes"] + + [deps.JSON3.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3447a92280ecaad1bd93d3fce3d408b6cfff8913" +git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.1.0+1" +version = "3.1.1+0" [[deps.JuMP]] -deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "Printf", "SnoopPrecompile", "SparseArrays"] -git-tree-sha1 = "cd161958e8b47f9696a6b03f563afb4e5fe8f703" +deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] +git-tree-sha1 = "02b6e65736debc1f47b40b0f7d5dfa0217ee1f09" uuid = "4076af6c-e467-56ae-b986-b466b2749572" -version = "1.17.0" +version = "1.23.6" [deps.JuMP.extensions] JuMPDimensionalDataExt = "DimensionalData" @@ -610,6 +628,7 @@ version = "1.4.0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -619,16 +638,17 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" +version = "8.6.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" +version = "1.7.2+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -637,6 +657,7 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] @@ -653,6 +674,7 @@ version = "0.1.4" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LittleCMS_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg"] @@ -678,6 +700,7 @@ version = "0.3.29" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -687,15 +710,15 @@ version = "1.1.0" [[deps.Lz4_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "dbd00758ab9d8f454b2feadb6071eb50af62c824" +git-tree-sha1 = "191686b1ac1ea9c89fc52e996ad15d1d241d1e33" uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.0+2" +version = "1.10.1+0" [[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "1c20a46719c0dc4ec4e7021ca38f53e1ec9268d9" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.2+1" +version = "5.1.3+0" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] @@ -711,21 +734,20 @@ version = "0.1.11" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "4e6c1eb421039b0d26e0fd483fa87651da0f3f57" +git-tree-sha1 = "70e830dab5d0775183c99fc75e4c24c614ed7142" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.5.1+1" +version = "5.5.1+2" [[deps.MUMPS_seq_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "0eab12f94948ca67908aec14b9f2ebefd17463fe" +git-tree-sha1 = "840b83c65b27e308095c139a457373850b2f5977" uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" -version = "500.700.301+0" +version = "500.600.201+0" [[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" +git-tree-sha1 = "72aebe0b5051e5143a079a4685a46da330a40472" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" +version = "0.5.15" [[deps.MappedArrays]] git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" @@ -735,12 +757,13 @@ version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MathOptInterface]] -deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "362ae34a5291a79e16b8eb87b5738532c5e799ff" +deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON3", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] +git-tree-sha1 = "f5f67affb675630421d169ffd5dfa00cffcc07ca" uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.23.0" +version = "1.35.2" [[deps.MbedTLS]] deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] @@ -751,7 +774,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -767,6 +790,7 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -776,19 +800,19 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "806eea990fb41f9b36f1253e5697aa645bf6a9f8" +git-tree-sha1 = "43122df26d27424b23577d59e2d8020f28386516" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.4.0" +version = "1.6.2" [[deps.NaNMath]] deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +git-tree-sha1 = "fe891aea7ccd23897520db7f16931212454e277e" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" +version = "1.1.1" [[deps.Ncurses_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -813,14 +837,14 @@ version = "1.15.0" [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" +git-tree-sha1 = "ece4587683695fe4c5f20e990da0ed7e83c351e7" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.24+0" +version = "0.3.29+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" +version = "0.3.27+1" [[deps.OpenJpeg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll", "LittleCMS_jll", "Pkg", "libpng_jll"] @@ -847,20 +871,20 @@ version = "1.4.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f58782a883ecbf9fb48dcd363f9ccd65f36c23a8" +git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.15+2" +version = "3.0.15+3" [[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "418e63d434f5ca12b188bbb287dfbe10a5af1da4" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+1" +version = "0.5.6+0" [[deps.OrderedCollections]] -git-tree-sha1 = "12f1439c4f986bb868acda6ea33ebc78e19b95ad" +git-tree-sha1 = "cc4054e898b852042d7b503313f7ad03de99c3dd" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.7.0" +version = "1.8.0" [[deps.Osi_jll]] deps = ["Artifacts", "CoinUtils_jll", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Pkg"] @@ -887,9 +911,15 @@ uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.8.1" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" +version = "1.11.0" + + [deps.Pkg.extensions] + REPLExt = "REPL" + + [deps.Pkg.weakdeps] + REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] @@ -918,26 +948,24 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.Profile]] -deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.REopt]] deps = ["ArchGDAL", "CSV", "CoolProp", "DataFrames", "Dates", "DelimitedFiles", "HTTP", "JLD", "JSON", "JuMP", "LinDistFlow", "LinearAlgebra", "Logging", "MathOptInterface", "Requires", "Roots", "Statistics", "TestEnv"] -git-tree-sha1 = "b58ddeb73296aadfb077c2bb41229fec4091834f" +git-tree-sha1 = "05b961aeb4f795ecbae0894260b9ac1ed27eb1dc" repo-rev = "gridRE-dev" repo-url = "https://github.com/NREL/REopt.jl.git" uuid = "d36ad4e8-d74a-4f7a-ace1-eaea049febf6" -version = "0.49.1" +version = "0.50.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.RangeArrays]] git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" @@ -969,9 +997,9 @@ version = "1.3.0" [[deps.Roots]] deps = ["Accessors", "CommonSolve", "Printf"] -git-tree-sha1 = "8e3694d669323cdfb560e344dc872b984de23b71" +git-tree-sha1 = "f233e0a3de30a6eed170b8e1be0440f732fdf456" uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.2.2" +version = "2.2.4" [deps.Roots.extensions] RootsChainRulesCoreExt = "ChainRulesCore" @@ -988,22 +1016,22 @@ version = "2.2.2" SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" [[deps.SCIP]] -deps = ["Ipopt_jll", "Libdl", "LinearAlgebra", "MathOptInterface", "SCIP_PaPILO_jll", "SCIP_jll"] -git-tree-sha1 = "ac0512c46cd91744f62463514f2c581025ea5b93" +deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "SCIP_PaPILO_jll", "SCIP_jll"] +git-tree-sha1 = "7ffb27b6b9b15fd68ef9cf100a04ba55a340384d" uuid = "82193955-e24f-5292-bf16-6f2c5261a85f" -version = "0.11.6" +version = "0.12.2" [[deps.SCIP_PaPILO_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Pkg", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll", "oneTBB_jll"] -git-tree-sha1 = "7705b5779724f35d78351548f24c7f7656e61bc2" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll", "oneTBB_jll"] +git-tree-sha1 = "eae0c39353b20f918100248179a36395d5e56cb5" uuid = "fc9abe76-a5e6-5fed-b0b7-a12f309cf031" -version = "0.1.0+3" +version = "900.200.0+0" [[deps.SCIP_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "Pkg", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll"] -git-tree-sha1 = "4a23f926d711535640963aea90a3f5d931ae52c7" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "Readline_jll", "Zlib_jll", "boost_jll"] +git-tree-sha1 = "2d9c6386b885d181208a0b3863087361c1bfa136" uuid = "e5ac4fe4-a920-5659-9bf8-f9f73e9e79ce" -version = "0.2.1+0" +version = "900.200.0+0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -1011,15 +1039,15 @@ version = "0.7.0" [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "11f3da4b25efacd1cec8e263421f2a9003a5e8e0" +git-tree-sha1 = "34b9dacd687cace8aa4d550e3e9bb8615f1a61e9" uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" -version = "2024.5.8+0" +version = "2024.1.18+0" [[deps.SQLite_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "7b5b0b963000117848dfe9199bbe4f528e37c5fd" +git-tree-sha1 = "9a325057cdb9b066f1f96dc77218df60fe3007cb" uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8" -version = "3.47.2+1" +version = "3.48.0+0" [[deps.SentinelArrays]] deps = ["Dates", "Random"] @@ -1029,20 +1057,16 @@ version = "1.4.8" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.SimpleBufferStream]] git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" version = "1.2.0" -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -1053,7 +1077,7 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.11.0" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] @@ -1079,9 +1103,14 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] [[deps.StringManipulation]] deps = ["PrecompileTools"] @@ -1089,10 +1118,16 @@ git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.4.0" +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "159331b30e94d7b11379037feeb9b690950cace8" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.11.0" + [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" +version = "7.7.0+0" [[deps.TOML]] deps = ["Dates"] @@ -1125,6 +1160,7 @@ version = "0.1.1" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" [[deps.TestEnv]] deps = ["Pkg"] @@ -1145,15 +1181,17 @@ version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "01915bfcd62be15329c9a07235447a89d588327c" +git-tree-sha1 = "c0667a8e676c53d390a09dc6870b3d8d6650e2bf" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.21.1" +version = "1.22.0" weakdeps = ["ConstructionBase", "InverseFunctions"] [deps.Unitful.extensions] @@ -1172,10 +1210,10 @@ uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" version = "1.6.1" [[deps.Xpress]] -deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "SparseArrays"] -git-tree-sha1 = "29c47b54b6938852a598fc6761ed927aad61f10e" +deps = ["Libdl", "MathOptInterface"] +git-tree-sha1 = "f48ea69baa747f63b0d08c89ce7bc38d8ef62bd4" uuid = "9e70acf3-d6c9-5be6-b5bd-4e2c73e3e054" -version = "0.16.2" +version = "0.17.1" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1184,9 +1222,9 @@ version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7dc5adc3f9bfb9b091b7952f4f6048b7e37acafc" +git-tree-sha1 = "622cf78670d067c738667aaa96c553430b65e269" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+2" +version = "1.5.7+0" [[deps.bliss_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1196,20 +1234,20 @@ version = "0.77.0+1" [[deps.boost_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "7a89efe0137720ca82f99e8daa526d23120d0d37" +git-tree-sha1 = "d9484c66c733c1c84f1d4cfef538d3c7b9d32199" uuid = "28df3c45-c428-5900-9ff8-a3135698ca75" -version = "1.76.0+1" +version = "1.79.0+3" [[deps.libaec_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "648c439c8643710976b4c8b30dccbbe6439fb4db" +git-tree-sha1 = "f5733a5a9047722470b95a81e1b172383971105c" uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.1.2+1" +version = "1.1.3+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" +version = "5.11.0+0" [[deps.libgeotiff_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "Libtiff_jll", "PROJ_jll", "Pkg"] @@ -1219,14 +1257,14 @@ version = "100.700.100+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "9c42636e3205e555e5785e902387be0061e7efc1" +git-tree-sha1 = "055a96774f383318750a1a5e10fd4151f04c29c5" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.44+1" +version = "1.6.46+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.59.0+0" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] From d44e123d58ce1870da0d13914ec173ad61e5c0bc Mon Sep 17 00:00:00 2001 From: adfarth Date: Fri, 31 Jan 2025 11:44:02 -0700 Subject: [PATCH 17/21] fix more inputs in ghp tests --- reoptjl/test/posts/central_plant_ghp.json | 7 ++++++- reoptjl/test/posts/hybrid_ghp.json | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/reoptjl/test/posts/central_plant_ghp.json b/reoptjl/test/posts/central_plant_ghp.json index 942942a22..4aa266c7a 100644 --- a/reoptjl/test/posts/central_plant_ghp.json +++ b/reoptjl/test/posts/central_plant_ghp.json @@ -53,7 +53,12 @@ "tess_ghx_minimum_timesteps_per_hour": 1, "max_sizing_iterations": 10, "init_sizing_factor_ft_per_peak_ton": 300.0, - "heat_pump_configuration": "WWHP" + "heat_pump_configuration": "WWHP", + "ghx_header_depth_ft": 4.0, + "borehole_diameter_inch": 5.0, + "ghx_pipe_thermal_conductivity_btu_per_hr_ft_f": 0.25, + "ghx_shank_space_inch": 2.5, + "grout_thermal_conductivity_btu_per_hr_ft_f": 1.0 }] }, "PV": { diff --git a/reoptjl/test/posts/hybrid_ghp.json b/reoptjl/test/posts/hybrid_ghp.json index 5a5b45595..69114e2c5 100644 --- a/reoptjl/test/posts/hybrid_ghp.json +++ b/reoptjl/test/posts/hybrid_ghp.json @@ -45,7 +45,12 @@ "tess_ghx_minimum_timesteps_per_hour": 1, "max_sizing_iterations": 10, "init_sizing_factor_ft_per_peak_ton": 300.0, - "heat_pump_configuration": "WSHP" + "heat_pump_configuration": "WSHP", + "ghx_header_depth_ft": 4.0, + "borehole_diameter_inch": 5.0, + "ghx_pipe_thermal_conductivity_btu_per_hr_ft_f": 0.25, + "ghx_shank_space_inch": 2.5, + "grout_thermal_conductivity_btu_per_hr_ft_f": 1.0 }] }, "PV": { From e64adb3f82a468d465f58191eee11787c04a8715 Mon Sep 17 00:00:00 2001 From: Hallie Dunham <70401017+hdunham@users.noreply.github.com> Date: Sun, 2 Feb 2025 18:57:52 -0700 Subject: [PATCH 18/21] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66ef8bbe4..02cb528e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,7 @@ Classify the change according to the following categories: ### Added - Added the following inputs to account for the clean or renewable energy fraction of grid-purchased electricity: - ElectricUtility **cambium_cef_metric** to utilize clean energy data from NREL's Cambium database - - **renewable_energy_fraction_series** to supply a custom grid clean or renewable energy scalar or series + - ElectricUtility **renewable_energy_fraction_series** to supply a custom grid clean or renewable energy scalar or series - Site **include_grid_renewable_fraction_in_RE_constraints** - to allow user to choose whether to include grid RE in min max constraints - Added the following outputs: - ElectricUtility **annual_renewable_electricity_supplied_kwh** From fefcfd46935d02a16949db5cce286209604cc068 Mon Sep 17 00:00:00 2001 From: adfarth Date: Wed, 5 Feb 2025 10:45:46 -0700 Subject: [PATCH 19/21] add to all_inputs_test.json and fix default --- reoptjl/models.py | 2 +- reoptjl/test/posts/all_inputs_test.json | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/reoptjl/models.py b/reoptjl/models.py index b1834a7ce..debfebdb7 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -408,7 +408,7 @@ class SiteInputs(BaseModel, models.Model): ) include_grid_renewable_fraction_in_RE_constraints = models.BooleanField( - default=True, + default=False, blank=True, help_text=("If True, then the renewable energy content of energy from the grid is included in any min or max renewable energy requirements.") ) diff --git a/reoptjl/test/posts/all_inputs_test.json b/reoptjl/test/posts/all_inputs_test.json index fd9a25dd3..6811af43c 100644 --- a/reoptjl/test/posts/all_inputs_test.json +++ b/reoptjl/test/posts/all_inputs_test.json @@ -55,7 +55,8 @@ "renewable_electricity_max_fraction": null, "include_exported_elec_emissions_in_total": true, "include_exported_renewable_electricity_in_total": true, - "min_resil_time_steps": 100 + "min_resil_time_steps": 100, + "include_grid_renewable_fraction_in_RE_constraints": false }, "Settings": { "timeout_seconds": 420, @@ -146,7 +147,9 @@ "emissions_factor_NOx_decrease_fraction": 0.01174, "emissions_factor_SO2_decrease_fraction": 0.01174, "emissions_factor_PM25_decrease_fraction": 0.01174, - "cambium_co2_metric": "lrmer_co2e" + "cambium_co2_metric": "lrmer_co2e", + "cambium_cef_metric": "cef_load", + "renewable_energy_fraction_series": [] }, "ElectricStorage": { "min_kw": 100.0, @@ -173,7 +176,8 @@ "macrs_itc_reduction": 0.5, "total_itc_fraction": 0.0, "total_rebate_per_kw": 0.0, - "total_rebate_per_kwh": 0.0 + "total_rebate_per_kwh": 0.0, + "optimize_soc_init_fraction": false }, "Generator": { "existing_kw": 0.0, From ecd9e7d5467a9fc5d50f1cd050b7d953887de608 Mon Sep 17 00:00:00 2001 From: adfarth Date: Wed, 5 Feb 2025 11:28:05 -0700 Subject: [PATCH 20/21] migrations and updated help text --- ...ble_fraction_in_re_constraints_and_more.py | 28 +++++++++++++++++++ reoptjl/models.py | 5 ++-- 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 reoptjl/migrations/0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more.py diff --git a/reoptjl/migrations/0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more.py b/reoptjl/migrations/0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more.py new file mode 100644 index 000000000..0bd74bc3e --- /dev/null +++ b/reoptjl/migrations/0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.7 on 2025-02-05 18:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('reoptjl', '0078_merge_20250128_1541'), + ] + + operations = [ + migrations.AlterField( + model_name='siteinputs', + name='include_grid_renewable_fraction_in_RE_constraints', + field=models.BooleanField(blank=True, default=False, help_text='If True, then the renewable energy content of energy from the grid is included in any min or max renewable energy requirements.'), + ), + migrations.AlterField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_electricity_fraction_of_elec_load_bau', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load_bau, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + migrations.AlterField( + model_name='siteoutputs', + name='onsite_and_grid_renewable_energy_fraction_of_total_load_bau', + field=models.FloatField(blank=True, help_text='Calculation is the same as onsite_renewable_energy_fraction_of_total_load_bau, but additionally includes the renewable energycontent of grid-purchased electricity, accounting for any battery efficiency losses.', null=True), + ), + ] diff --git a/reoptjl/models.py b/reoptjl/models.py index debfebdb7..b931f830a 100644 --- a/reoptjl/models.py +++ b/reoptjl/models.py @@ -451,7 +451,6 @@ class SiteOutputs(BaseModel, models.Model): "Calculated as total annual RE electric generation, minus storage losses and curtailment, with the user selecting whether exported renewable generation is included). " ) ) - # TODO: I think "incl. electric heating/cooling loads" is not currently true onsite_renewable_electricity_fraction_of_elec_load = models.FloatField( null=True, blank=True, help_text=( @@ -578,14 +577,14 @@ class SiteOutputs(BaseModel, models.Model): onsite_and_grid_renewable_electricity_fraction_of_elec_load_bau = models.FloatField( null=True, blank=True, help_text=( - "Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load, but additionally includes the renewable energy" + "Calculation is the same as onsite_renewable_electricity_fraction_of_elec_load_bau, but additionally includes the renewable energy" "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) onsite_and_grid_renewable_energy_fraction_of_total_load_bau = models.FloatField( null=True, blank=True, help_text=( - "Calculation is the same as onsite_renewable_energy_fraction_of_total_load, but additionally includes the renewable energy" + "Calculation is the same as onsite_renewable_energy_fraction_of_total_load_bau, but additionally includes the renewable energy" "content of grid-purchased electricity, accounting for any battery efficiency losses." ) ) From 2883d26e440d9ab9b27dbd00c5e763db21361f03 Mon Sep 17 00:00:00 2001 From: adfarth Date: Fri, 7 Feb 2025 09:07:10 -0700 Subject: [PATCH 21/21] Revert "updt julia_src Dockerfile and Manifest" This reverts commit eba4d407997ee796a3d1eb150a1c9b4b77d7c9c1. --- julia_src/Dockerfile | 2 +- julia_src/Manifest.toml | 300 ++++++++++++++++++---------------------- 2 files changed, 132 insertions(+), 170 deletions(-) diff --git a/julia_src/Dockerfile b/julia_src/Dockerfile index 609ff1abb..e75b58da6 100644 --- a/julia_src/Dockerfile +++ b/julia_src/Dockerfile @@ -1,4 +1,4 @@ -FROM julia:1.11.2 +FROM julia:1.10.2 # Install NREL root certs for machines running on NREL's network. ARG NREL_ROOT_CERT_URL_ROOT="" diff --git a/julia_src/Manifest.toml b/julia_src/Manifest.toml index 9b181170d..55fd3376d 100644 --- a/julia_src/Manifest.toml +++ b/julia_src/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.2" +julia_version = "1.10.2" manifest_format = "2.0" project_hash = "b3c6037c53375dada9e36c23f668bcd0efac8f34" @@ -25,24 +25,24 @@ version = "1.5.0" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] -git-tree-sha1 = "0ba8f4c1f06707985ffb4804fdad1bf97b233897" +deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] +git-tree-sha1 = "96bed9b1b57cf750cca50c311a197e306816a1cc" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.41" +version = "0.1.39" [deps.Accessors.extensions] - AxisKeysExt = "AxisKeys" - IntervalSetsExt = "IntervalSets" - LinearAlgebraExt = "LinearAlgebra" - StaticArraysExt = "StaticArrays" - StructArraysExt = "StructArrays" - TestExt = "Test" - UnitfulExt = "Unitful" + AccessorsAxisKeysExt = "AxisKeys" + AccessorsDatesExt = "Dates" + AccessorsIntervalSetsExt = "IntervalSets" + AccessorsStaticArraysExt = "StaticArrays" + AccessorsStructArraysExt = "StructArrays" + AccessorsTestExt = "Test" + AccessorsUnitfulExt = "Unitful" [deps.Accessors.weakdeps] AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Requires = "ae029012-a4dd-5104-9daa-d747884805df" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" @@ -57,11 +57,10 @@ version = "0.9.4" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" +version = "1.1.1" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" [[deps.AxisArrays]] deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] @@ -71,13 +70,12 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" [[deps.BenchmarkTools]] -deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "e38fbc49a620f5d0b660d7f543db1009fe0f8336" +deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "f1dff6729bc61f4d49e140da1af55dcd1ac97b2f" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.6.0" +version = "1.5.0" [[deps.BitFlags]] git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" @@ -92,15 +90,15 @@ version = "0.7.3" [[deps.Blosc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Lz4_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "ef12cdd1c7fb7e1dfd6fa8fd60d4db6bc61d2f23" +git-tree-sha1 = "c5acdf7065862659dd4245494c40c90a66308651" uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9" -version = "1.21.6+2" +version = "1.21.6+1" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" +git-tree-sha1 = "35abeca13bc0425cff9e59e229d971f5231323bf" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+4" +version = "1.0.8+3" [[deps.CEnum]] git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" @@ -197,7 +195,7 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" +version = "1.1.0+0" [[deps.CompositionsBase]] git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" @@ -271,7 +269,6 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" [[deps.DelimitedFiles]] deps = ["Mmap"] @@ -322,14 +319,14 @@ version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e51db81749b0777b2147fbe7b783ee79045b8e99" +git-tree-sha1 = "f42a5b1e20e009a43c3646635ed81a9fcaccb287" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.4+3" +version = "2.6.4+2" [[deps.Extents]] -git-tree-sha1 = "063512a13dbe9c40d999c439268539aa552d1ae6" +git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.5" +version = "0.1.4" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] @@ -354,7 +351,6 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" [[deps.FixedPointNumbers]] deps = ["Statistics"] @@ -377,7 +373,6 @@ version = "0.10.38" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" [[deps.GDAL]] deps = ["CEnum", "GDAL_jll", "NetworkOptions", "PROJ_jll"] @@ -400,18 +395,18 @@ version = "3.11.2+0" [[deps.GMP_jll]] deps = ["Artifacts", "Libdl"] uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" -version = "6.3.0+0" +version = "6.2.1+6" [[deps.GeoFormatTypes]] -git-tree-sha1 = "8e233d5167e63d708d41f87597433f59a0f213fe" +git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271" uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" -version = "0.4.4" +version = "0.4.2" [[deps.GeoInterface]] deps = ["DataAPI", "Extents", "GeoFormatTypes"] -git-tree-sha1 = "294e99f19869d0b0cb71aef92f19d03649d028d5" +git-tree-sha1 = "f4ee66b6b1872a4ca53303fbb51d158af1bf88d4" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.4.1" +version = "1.4.0" [[deps.GeoInterfaceRecipes]] deps = ["GeoInterface", "RecipesBase"] @@ -420,7 +415,7 @@ uuid = "0329782f-3d07-4b52-b9f6-d3137cf03c7a" version = "1.0.2" [[deps.GhpGhx]] -git-tree-sha1 = "c2f3becdf925f287778fa088da6da01e307f6ce8" +git-tree-sha1 = "bddcbcddc9a4ae7ae4f1ea7d4d8ccf38507d4071" repo-rev = "main" repo-url = "https://github.com/NREL/GhpGhx.jl.git" uuid = "7ce85f02-24a8-4d69-a3f0-14b5daa7d30c" @@ -457,28 +452,28 @@ uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" version = "1.14.2+1" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "c67b33b085f6e2faf8bf79a61962e7339a81129c" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "abbbb9ec3afd783a7cbd82ef01dcd088ea051398" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.15" +version = "1.10.1" [[deps.HiGHS]] deps = ["HiGHS_jll", "MathOptInterface", "PrecompileTools", "SparseArrays"] -git-tree-sha1 = "b07cf87cb3bcbd65d1d3fcf4143d4a44abe33d20" +git-tree-sha1 = "fce13308f09771b160232903cad57be39a8a0ebb" uuid = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" -version = "1.13.0" +version = "1.7.5" [[deps.HiGHS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "26694f04567e584b054b9f33a810cec52adafa38" +git-tree-sha1 = "f596ee3668df8587158bcaef1ae47bf75bc0fe39" uuid = "8fd58aa0-07eb-5a78-9b36-339c94fd15ea" -version = "1.9.0+0" +version = "1.6.0+1" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" +git-tree-sha1 = "290232556f4ffb60ac3e476acf28e1a46e764742" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.2+3" +version = "2.11.2+2" [[deps.ImageCore]] deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] @@ -502,7 +497,6 @@ version = "1.4.2" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" [[deps.IntervalSets]] git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" @@ -532,14 +526,14 @@ version = "1.3.1" [[deps.Ipopt_jll]] deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] -git-tree-sha1 = "546c40fd3718c65d48296dd6cec98af9904e3ca4" +git-tree-sha1 = "4f55ad688c698a4f77d892a1cb673f7e8a30f178" uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" -version = "300.1400.1400+0" +version = "300.1400.1700+0" [[deps.IrrationalConstants]] -git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.4" +version = "0.2.2" [[deps.IterTools]] git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" @@ -569,29 +563,17 @@ git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "1d322381ef7b087548321d3f878cb4c9bd8f8f9b" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.14.1" - - [deps.JSON3.extensions] - JSON3ArrowExt = ["ArrowTypes"] - - [deps.JSON3.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" +git-tree-sha1 = "3447a92280ecaad1bd93d3fce3d408b6cfff8913" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.1.1+0" +version = "3.1.0+1" [[deps.JuMP]] -deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] -git-tree-sha1 = "02b6e65736debc1f47b40b0f7d5dfa0217ee1f09" +deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "Printf", "SnoopPrecompile", "SparseArrays"] +git-tree-sha1 = "cd161958e8b47f9696a6b03f563afb4e5fe8f703" uuid = "4076af6c-e467-56ae-b986-b466b2749572" -version = "1.23.6" +version = "1.17.0" [deps.JuMP.extensions] JuMPDimensionalDataExt = "DimensionalData" @@ -628,7 +610,6 @@ version = "1.4.0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -638,17 +619,16 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.6.0+0" +version = "8.4.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.7.2+0" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -657,7 +637,6 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] @@ -674,7 +653,6 @@ version = "0.1.4" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" [[deps.LittleCMS_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg"] @@ -700,7 +678,6 @@ version = "0.3.29" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -710,15 +687,15 @@ version = "1.1.0" [[deps.Lz4_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "191686b1ac1ea9c89fc52e996ad15d1d241d1e33" +git-tree-sha1 = "dbd00758ab9d8f454b2feadb6071eb50af62c824" uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.1+0" +version = "1.10.0+2" [[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1c20a46719c0dc4ec4e7021ca38f53e1ec9268d9" uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.3+0" +version = "5.1.2+1" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] @@ -734,20 +711,21 @@ version = "0.1.11" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "70e830dab5d0775183c99fc75e4c24c614ed7142" +git-tree-sha1 = "4e6c1eb421039b0d26e0fd483fa87651da0f3f57" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.5.1+2" +version = "5.5.1+1" [[deps.MUMPS_seq_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "840b83c65b27e308095c139a457373850b2f5977" +git-tree-sha1 = "0eab12f94948ca67908aec14b9f2ebefd17463fe" uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" -version = "500.600.201+0" +version = "500.700.301+0" [[deps.MacroTools]] -git-tree-sha1 = "72aebe0b5051e5143a079a4685a46da330a40472" +deps = ["Markdown", "Random"] +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.15" +version = "0.5.13" [[deps.MappedArrays]] git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" @@ -757,13 +735,12 @@ version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" [[deps.MathOptInterface]] -deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON3", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "f5f67affb675630421d169ffd5dfa00cffcc07ca" +deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] +git-tree-sha1 = "362ae34a5291a79e16b8eb87b5738532c5e799ff" uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.35.2" +version = "1.23.0" [[deps.MbedTLS]] deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] @@ -774,7 +751,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.6+0" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -790,7 +767,6 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -800,19 +776,19 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" +version = "2023.1.10" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "43122df26d27424b23577d59e2d8020f28386516" +git-tree-sha1 = "806eea990fb41f9b36f1253e5697aa645bf6a9f8" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.6.2" +version = "1.4.0" [[deps.NaNMath]] deps = ["OpenLibm_jll"] -git-tree-sha1 = "fe891aea7ccd23897520db7f16931212454e277e" +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.1.1" +version = "1.0.2" [[deps.Ncurses_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -837,14 +813,14 @@ version = "1.15.0" [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ece4587683695fe4c5f20e990da0ed7e83c351e7" +git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.29+0" +version = "0.3.24+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" +version = "0.3.23+4" [[deps.OpenJpeg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll", "LittleCMS_jll", "Pkg", "libpng_jll"] @@ -871,20 +847,20 @@ version = "1.4.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" +git-tree-sha1 = "f58782a883ecbf9fb48dcd363f9ccd65f36c23a8" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.15+3" +version = "3.0.15+2" [[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "418e63d434f5ca12b188bbb287dfbe10a5af1da4" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.6+0" +version = "0.5.5+1" [[deps.OrderedCollections]] -git-tree-sha1 = "cc4054e898b852042d7b503313f7ad03de99c3dd" +git-tree-sha1 = "12f1439c4f986bb868acda6ea33ebc78e19b95ad" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.8.0" +version = "1.7.0" [[deps.Osi_jll]] deps = ["Artifacts", "CoinUtils_jll", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Pkg"] @@ -911,15 +887,9 @@ uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.8.1" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" - - [deps.Pkg.extensions] - REPLExt = "REPL" - - [deps.Pkg.weakdeps] - REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.10.0" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] @@ -948,24 +918,26 @@ version = "2.4.0" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" [[deps.Profile]] +deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" -version = "1.11.0" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.REopt]] deps = ["ArchGDAL", "CSV", "CoolProp", "DataFrames", "Dates", "DelimitedFiles", "HTTP", "JLD", "JSON", "JuMP", "LinDistFlow", "LinearAlgebra", "Logging", "MathOptInterface", "Requires", "Roots", "Statistics", "TestEnv"] -git-tree-sha1 = "05b961aeb4f795ecbae0894260b9ac1ed27eb1dc" +git-tree-sha1 = "b58ddeb73296aadfb077c2bb41229fec4091834f" repo-rev = "gridRE-dev" repo-url = "https://github.com/NREL/REopt.jl.git" uuid = "d36ad4e8-d74a-4f7a-ace1-eaea049febf6" -version = "0.50.0" +version = "0.49.1" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" [[deps.RangeArrays]] git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" @@ -997,9 +969,9 @@ version = "1.3.0" [[deps.Roots]] deps = ["Accessors", "CommonSolve", "Printf"] -git-tree-sha1 = "f233e0a3de30a6eed170b8e1be0440f732fdf456" +git-tree-sha1 = "8e3694d669323cdfb560e344dc872b984de23b71" uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.2.4" +version = "2.2.2" [deps.Roots.extensions] RootsChainRulesCoreExt = "ChainRulesCore" @@ -1016,22 +988,22 @@ version = "2.2.4" SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" [[deps.SCIP]] -deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "SCIP_PaPILO_jll", "SCIP_jll"] -git-tree-sha1 = "7ffb27b6b9b15fd68ef9cf100a04ba55a340384d" +deps = ["Ipopt_jll", "Libdl", "LinearAlgebra", "MathOptInterface", "SCIP_PaPILO_jll", "SCIP_jll"] +git-tree-sha1 = "ac0512c46cd91744f62463514f2c581025ea5b93" uuid = "82193955-e24f-5292-bf16-6f2c5261a85f" -version = "0.12.2" +version = "0.11.6" [[deps.SCIP_PaPILO_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll", "oneTBB_jll"] -git-tree-sha1 = "eae0c39353b20f918100248179a36395d5e56cb5" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Pkg", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll", "oneTBB_jll"] +git-tree-sha1 = "7705b5779724f35d78351548f24c7f7656e61bc2" uuid = "fc9abe76-a5e6-5fed-b0b7-a12f309cf031" -version = "900.200.0+0" +version = "0.1.0+3" [[deps.SCIP_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "Readline_jll", "Zlib_jll", "boost_jll"] -git-tree-sha1 = "2d9c6386b885d181208a0b3863087361c1bfa136" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "Pkg", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll"] +git-tree-sha1 = "4a23f926d711535640963aea90a3f5d931ae52c7" uuid = "e5ac4fe4-a920-5659-9bf8-f9f73e9e79ce" -version = "900.200.0+0" +version = "0.2.1+0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -1039,15 +1011,15 @@ version = "0.7.0" [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "34b9dacd687cace8aa4d550e3e9bb8615f1a61e9" +git-tree-sha1 = "11f3da4b25efacd1cec8e263421f2a9003a5e8e0" uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" -version = "2024.1.18+0" +version = "2024.5.8+0" [[deps.SQLite_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "9a325057cdb9b066f1f96dc77218df60fe3007cb" +git-tree-sha1 = "7b5b0b963000117848dfe9199bbe4f528e37c5fd" uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8" -version = "3.48.0+0" +version = "3.47.2+1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] @@ -1057,16 +1029,20 @@ version = "1.4.8" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" [[deps.SimpleBufferStream]] git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" version = "1.2.0" +[[deps.SnoopPrecompile]] +deps = ["Preferences"] +git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" +uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" +version = "1.0.3" + [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -1077,7 +1053,7 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" +version = "1.10.0" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] @@ -1103,14 +1079,9 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] +version = "1.10.0" [[deps.StringManipulation]] deps = ["PrecompileTools"] @@ -1118,16 +1089,10 @@ git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.4.0" -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "159331b30e94d7b11379037feeb9b690950cace8" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.11.0" - [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" +version = "7.2.1+1" [[deps.TOML]] deps = ["Dates"] @@ -1160,7 +1125,6 @@ version = "0.1.1" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -version = "1.11.0" [[deps.TestEnv]] deps = ["Pkg"] @@ -1181,17 +1145,15 @@ version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "c0667a8e676c53d390a09dc6870b3d8d6650e2bf" +git-tree-sha1 = "01915bfcd62be15329c9a07235447a89d588327c" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.22.0" +version = "1.21.1" weakdeps = ["ConstructionBase", "InverseFunctions"] [deps.Unitful.extensions] @@ -1210,10 +1172,10 @@ uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" version = "1.6.1" [[deps.Xpress]] -deps = ["Libdl", "MathOptInterface"] -git-tree-sha1 = "f48ea69baa747f63b0d08c89ce7bc38d8ef62bd4" +deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "SparseArrays"] +git-tree-sha1 = "29c47b54b6938852a598fc6761ed927aad61f10e" uuid = "9e70acf3-d6c9-5be6-b5bd-4e2c73e3e054" -version = "0.17.1" +version = "0.16.2" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -1222,9 +1184,9 @@ version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "622cf78670d067c738667aaa96c553430b65e269" +git-tree-sha1 = "7dc5adc3f9bfb9b091b7952f4f6048b7e37acafc" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.7+0" +version = "1.5.6+2" [[deps.bliss_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1234,20 +1196,20 @@ version = "0.77.0+1" [[deps.boost_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d9484c66c733c1c84f1d4cfef538d3c7b9d32199" +git-tree-sha1 = "7a89efe0137720ca82f99e8daa526d23120d0d37" uuid = "28df3c45-c428-5900-9ff8-a3135698ca75" -version = "1.79.0+3" +version = "1.76.0+1" [[deps.libaec_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f5733a5a9047722470b95a81e1b172383971105c" +git-tree-sha1 = "648c439c8643710976b4c8b30dccbbe6439fb4db" uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" -version = "1.1.3+0" +version = "1.1.2+1" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" +version = "5.8.0+1" [[deps.libgeotiff_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "Libtiff_jll", "PROJ_jll", "Pkg"] @@ -1257,14 +1219,14 @@ version = "100.700.100+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "055a96774f383318750a1a5e10fd4151f04c29c5" +git-tree-sha1 = "9c42636e3205e555e5785e902387be0061e7efc1" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.46+0" +version = "1.6.44+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" +version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"]