-
Notifications
You must be signed in to change notification settings - Fork 40
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
Add electrification profiles to change table #596
Conversation
Not sure I understand why you constrain the scaling factors to be less than 1 |
We can't change more than 100% of e.g. fossil fuel heating to electrified heating, and the profiles that we're getting from the collaborators represent 100% conversion of fossil end uses to 100% of one particular technology. See #574 for more details. |
The scaling factor here is essentially adoption rate. |
c4ad40a
to
b240822
Compare
I like the examples shown in the tests. Being able to scale across the whole grid is a nice addition! |
Should we implement it for other methods? |
Eventually, yeah. There are lots of potential improvements to the ChangeTable logic/interface. |
b240822
to
afd089d
Compare
afd089d
to
d9a3790
Compare
d9a3790
to
71b11d1
Compare
Looking at this, I realize that I specified this feature incompletely. I think we need one more layer of nesting in the change table schema, because we have multiple end uses within each of buildings and transportation. So we would go from info = {
"New York City": {"advanced_heat_pump_v2": 0.7},
"Western North Carolina": {
"standard_heat_pump_v1": 0.5,
"advanced_heat_pump_v2": 0.5,
},
} But I think we need something more like: info = {
"New York City": {
"res_heating": {"advanced_heat_pump_v2": 0.7},
"com_hot_water": {"advanced_heat_pump_v2": 0.7},
"res_cooking": {"mid_efficiency": 0.5, "high_efficiency": 0.3},
},
"Western North Carolina": {
"res_heating": {
"standard_heat_pump_v1": 0.5,
"advanced_heat_pump_v2": 0.5,
},
},
} Adoption rates for various technologies still need to sum to less than one for a given |
2f7a87a
to
90a5fe4
Compare
90a5fe4
to
257fb91
Compare
257fb91
to
51d26e2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice
Purpose
Define/implement new schema for electrification profiles and scaling by grid/zone.
What the code is doing
Define one new function
add_electrification
which can specify profiles and scaling for supported types: currently these are building and transportation. If specifying scaling factors by zone, the zone name is checked against the current grid object. There isn't yet validation for the profile name/version, but I'll add that if the general approach looks good.Depending on expected usage patterns, the schema could also be "inverted" by mapping profiles to zones and scaling factors, but I think either way has trade offs in how easy it is to specify the change table and how much code is required to aggregate the profiles during the preparation phase.
Testing
New unit tests.
Usage Example/Visuals
The tests are the best usage example. The full schema will look like:
Where the
scale_factors
dict has the structure:And
0 <= s_i <= 1
Time estimate
20 min