-
Notifications
You must be signed in to change notification settings - Fork 66
Updated Grid RE and Emissions #628
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from all commits
Commits
Show all changes
28 commits
Select commit
Hold shift + click to select a range
c95bb21
initial commit
98ec478
change names
4827d9f
Merge branch 'develop' into gridRE
20d9bfb
Update models.py
a478813
Update models.py
e04f71d
align with emissions updates
74bd9f6
GEA Regions 2023
da6abda
Update CHANGELOG.md
0f30a79
update EMISSIONS_DECREASE_DEFAULTS
bf8bdab
stay under 63 char limit
4c67ad5
align names
d0bc212
Merge branch 'develop' into gridRE
312aefc
Merge branch 'develop' into gridRE
8c3a606
temp point to feature branch
2f9edd6
migrations and name updates
d739c13
Update test_http_endpoints.py
67be826
Update test_http_endpoints.py
9fdfffb
Merge branch 'develop' into gridRE
5e25f43
Create 0078_merge_20250128_1541.py
eba4d40
updt julia_src Dockerfile and Manifest
d44e123
fix more inputs in ghp tests
e64adb3
Update CHANGELOG.md
hdunham fefcfd4
add to all_inputs_test.json and fix default
ecd9e7d
migrations and updated help text
2883d26
Revert "updt julia_src Dockerfile and Manifest"
a8a8fec
add new output and migrations
39cdf33
Update CHANGELOG.md
77521e9
Update Manifest.toml
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
133 changes: 133 additions & 0 deletions
133
...tions/0077_rename_cambium_metric_col_electricutilityinputs_cambium_co2_metric_and_more.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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)]), | ||
| ), | ||
| ] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 = [ | ||
| ] |
28 changes: 28 additions & 0 deletions
28
...tions/0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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), | ||
| ), | ||
| ] |
29 changes: 29 additions & 0 deletions
29
...ns/0080_electricloadoutputs_annual_electric_load_with_thermal_conversions_kwh_and_more.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # Generated by Django 4.0.7 on 2025-02-13 15:16 | ||
|
|
||
| import django.contrib.postgres.fields | ||
| from django.db import migrations, models | ||
|
|
||
|
|
||
| class Migration(migrations.Migration): | ||
|
|
||
| dependencies = [ | ||
| ('reoptjl', '0079_alter_siteinputs_include_grid_renewable_fraction_in_re_constraints_and_more'), | ||
| ] | ||
|
|
||
| operations = [ | ||
| migrations.AddField( | ||
| model_name='electricloadoutputs', | ||
| name='annual_electric_load_with_thermal_conversions_kwh', | ||
| field=models.FloatField(blank=True, help_text='Total end-use electrical load, including electrified heating and cooling end-use load.', null=True), | ||
| ), | ||
| migrations.AlterField( | ||
| model_name='electricloadoutputs', | ||
| name='annual_calculated_kwh', | ||
| field=models.FloatField(blank=True, help_text='Annual energy consumption calculated by summing up load_series_kw. Does not include electric load for any new heating or cooling techs.', null=True), | ||
| ), | ||
| migrations.AlterField( | ||
| model_name='electricloadoutputs', | ||
| name='load_series_kw', | ||
| field=django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(blank=True, null=True), default=list, help_text='Annual time series of BAU electric load. Does not include electric load for any new heating or cooling techs.', size=None), | ||
| ), | ||
| ] |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.