Skip to content

Commit bea700d

Browse files
committed
Add 'y' dimension to .transport.exo.pdt_elasticity
- Interpolate on this dimension in .demand. - Duplicate existing data for y in {2020, 2110}.
1 parent 6b9eca9 commit bea700d

File tree

4 files changed

+137
-70
lines changed

4 files changed

+137
-70
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,132 @@
11
# “Elasticity” of PDT-capita with respect to GDP
22
#
3+
# - The code that handles this file interpolates on the ‘year’
4+
# dimension.
5+
#
36
# Units: dimensionless
47
#
5-
scenario, node, value
6-
SSP(2024).1, R12_AFR, 0.85
7-
SSP(2024).1, R12_CHN, 0.75
8-
SSP(2024).1, R12_EEU, 0.75
9-
SSP(2024).1, R12_FSU, 0.75
10-
SSP(2024).1, R12_LAM, 0.75
11-
SSP(2024).1, R12_MEA, 0.75
12-
SSP(2024).1, R12_NAM, 0.5
13-
SSP(2024).1, R12_PAO, 0.75
14-
SSP(2024).1, R12_PAS, 0.75
15-
SSP(2024).1, R12_RCPA, 0.75
16-
SSP(2024).1, R12_SAS, 0.85
17-
SSP(2024).1, R12_WEU, 0.75
8+
scenario, node, year, value
9+
SSP(2024).1, R12_AFR, 2020, 0.85
10+
SSP(2024).1, R12_AFR, 2110, 0.85
11+
SSP(2024).1, R12_CHN, 2020, 0.75
12+
SSP(2024).1, R12_CHN, 2110, 0.75
13+
SSP(2024).1, R12_EEU, 2020, 0.75
14+
SSP(2024).1, R12_EEU, 2110, 0.75
15+
SSP(2024).1, R12_FSU, 2020, 0.75
16+
SSP(2024).1, R12_FSU, 2110, 0.75
17+
SSP(2024).1, R12_LAM, 2020, 0.75
18+
SSP(2024).1, R12_LAM, 2110, 0.75
19+
SSP(2024).1, R12_MEA, 2020, 0.75
20+
SSP(2024).1, R12_MEA, 2110, 0.75
21+
SSP(2024).1, R12_NAM, 2020, 0.5
22+
SSP(2024).1, R12_NAM, 2110, 0.5
23+
SSP(2024).1, R12_PAO, 2020, 0.75
24+
SSP(2024).1, R12_PAO, 2110, 0.75
25+
SSP(2024).1, R12_PAS, 2020, 0.75
26+
SSP(2024).1, R12_PAS, 2110, 0.75
27+
SSP(2024).1, R12_RCPA, 2020, 0.75
28+
SSP(2024).1, R12_RCPA, 2110, 0.75
29+
SSP(2024).1, R12_SAS, 2020, 0.85
30+
SSP(2024).1, R12_SAS, 2110, 0.85
31+
SSP(2024).1, R12_WEU, 2020, 0.75
32+
SSP(2024).1, R12_WEU, 2110, 0.75
1833

19-
SSP(2024).2, R12_AFR, 1.0
20-
SSP(2024).2, R12_CHN, 1.0
21-
SSP(2024).2, R12_EEU, 1.0
22-
SSP(2024).2, R12_FSU, 1.0
23-
SSP(2024).2, R12_LAM, 1.0
24-
SSP(2024).2, R12_MEA, 1.0
25-
SSP(2024).2, R12_NAM, 1.0
26-
SSP(2024).2, R12_PAO, 1.0
27-
SSP(2024).2, R12_PAS, 1.0
28-
SSP(2024).2, R12_RCPA, 1.0
29-
SSP(2024).2, R12_SAS, 1.0
30-
SSP(2024).2, R12_WEU, 1.0
34+
SSP(2024).2, R12_AFR, 2020, 1.0
35+
SSP(2024).2, R12_AFR, 2110, 1.0
36+
SSP(2024).2, R12_CHN, 2020, 1.0
37+
SSP(2024).2, R12_CHN, 2110, 1.0
38+
SSP(2024).2, R12_EEU, 2020, 1.0
39+
SSP(2024).2, R12_EEU, 2110, 1.0
40+
SSP(2024).2, R12_FSU, 2020, 1.0
41+
SSP(2024).2, R12_FSU, 2110, 1.0
42+
SSP(2024).2, R12_LAM, 2020, 1.0
43+
SSP(2024).2, R12_LAM, 2110, 1.0
44+
SSP(2024).2, R12_MEA, 2020, 1.0
45+
SSP(2024).2, R12_MEA, 2110, 1.0
46+
SSP(2024).2, R12_NAM, 2020, 1.0
47+
SSP(2024).2, R12_NAM, 2110, 1.0
48+
SSP(2024).2, R12_PAO, 2020, 1.0
49+
SSP(2024).2, R12_PAO, 2110, 1.0
50+
SSP(2024).2, R12_PAS, 2020, 1.0
51+
SSP(2024).2, R12_PAS, 2110, 1.0
52+
SSP(2024).2, R12_RCPA, 2020, 1.0
53+
SSP(2024).2, R12_RCPA, 2110, 1.0
54+
SSP(2024).2, R12_SAS, 2020, 1.0
55+
SSP(2024).2, R12_SAS, 2110, 1.0
56+
SSP(2024).2, R12_WEU, 2020, 1.0
57+
SSP(2024).2, R12_WEU, 2110, 1.0
3158

32-
SSP(2024).3, R12_AFR, 0.95
33-
SSP(2024).3, R12_CHN, 0.95
34-
SSP(2024).3, R12_EEU, 0.95
35-
SSP(2024).3, R12_FSU, 0.95
36-
SSP(2024).3, R12_LAM, 0.95
37-
SSP(2024).3, R12_MEA, 0.95
38-
SSP(2024).3, R12_NAM, 0.95
39-
SSP(2024).3, R12_PAO, 0.95
40-
SSP(2024).3, R12_PAS, 0.95
41-
SSP(2024).3, R12_RCPA, 0.95
42-
SSP(2024).3, R12_SAS, 0.95
43-
SSP(2024).3, R12_WEU, 0.95
59+
SSP(2024).3, R12_AFR, 2020, 0.95
60+
SSP(2024).3, R12_AFR, 2110, 0.95
61+
SSP(2024).3, R12_CHN, 2020, 0.95
62+
SSP(2024).3, R12_CHN, 2110, 0.95
63+
SSP(2024).3, R12_EEU, 2020, 0.95
64+
SSP(2024).3, R12_EEU, 2110, 0.95
65+
SSP(2024).3, R12_FSU, 2020, 0.95
66+
SSP(2024).3, R12_FSU, 2110, 0.95
67+
SSP(2024).3, R12_LAM, 2020, 0.95
68+
SSP(2024).3, R12_LAM, 2110, 0.95
69+
SSP(2024).3, R12_MEA, 2020, 0.95
70+
SSP(2024).3, R12_MEA, 2110, 0.95
71+
SSP(2024).3, R12_NAM, 2020, 0.95
72+
SSP(2024).3, R12_NAM, 2110, 0.95
73+
SSP(2024).3, R12_PAO, 2020, 0.95
74+
SSP(2024).3, R12_PAO, 2110, 0.95
75+
SSP(2024).3, R12_PAS, 2020, 0.95
76+
SSP(2024).3, R12_PAS, 2110, 0.95
77+
SSP(2024).3, R12_RCPA, 2020, 0.95
78+
SSP(2024).3, R12_RCPA, 2110, 0.95
79+
SSP(2024).3, R12_SAS, 2020, 0.95
80+
SSP(2024).3, R12_SAS, 2110, 0.95
81+
SSP(2024).3, R12_WEU, 2020, 0.95
82+
SSP(2024).3, R12_WEU, 2110, 0.95
4483

45-
SSP(2024).4, R12_AFR, 0.95
46-
SSP(2024).4, R12_CHN, 0.95
47-
SSP(2024).4, R12_EEU, 0.95
48-
SSP(2024).4, R12_FSU, 0.95
49-
SSP(2024).4, R12_LAM, 0.95
50-
SSP(2024).4, R12_MEA, 0.95
51-
SSP(2024).4, R12_NAM, 0.95
52-
SSP(2024).4, R12_PAO, 0.95
53-
SSP(2024).4, R12_PAS, 0.95
54-
SSP(2024).4, R12_RCPA, 0.95
55-
SSP(2024).4, R12_SAS, 0.95
56-
SSP(2024).4, R12_WEU, 0.95
84+
SSP(2024).4, R12_AFR, 2020, 0.95
85+
SSP(2024).4, R12_AFR, 2110, 0.95
86+
SSP(2024).4, R12_CHN, 2020, 0.95
87+
SSP(2024).4, R12_CHN, 2110, 0.95
88+
SSP(2024).4, R12_EEU, 2020, 0.95
89+
SSP(2024).4, R12_EEU, 2110, 0.95
90+
SSP(2024).4, R12_FSU, 2020, 0.95
91+
SSP(2024).4, R12_FSU, 2110, 0.95
92+
SSP(2024).4, R12_LAM, 2020, 0.95
93+
SSP(2024).4, R12_LAM, 2110, 0.95
94+
SSP(2024).4, R12_MEA, 2020, 0.95
95+
SSP(2024).4, R12_MEA, 2110, 0.95
96+
SSP(2024).4, R12_NAM, 2020, 0.95
97+
SSP(2024).4, R12_NAM, 2110, 0.95
98+
SSP(2024).4, R12_PAO, 2020, 0.95
99+
SSP(2024).4, R12_PAO, 2110, 0.95
100+
SSP(2024).4, R12_PAS, 2020, 0.95
101+
SSP(2024).4, R12_PAS, 2110, 0.95
102+
SSP(2024).4, R12_RCPA, 2020, 0.95
103+
SSP(2024).4, R12_RCPA, 2110, 0.95
104+
SSP(2024).4, R12_SAS, 2020, 0.95
105+
SSP(2024).4, R12_SAS, 2110, 0.95
106+
SSP(2024).4, R12_WEU, 2020, 0.95
107+
SSP(2024).4, R12_WEU, 2110, 0.95
57108

58-
SSP(2024).5, R12_AFR, 1.0
59-
SSP(2024).5, R12_CHN, 1.0
60-
SSP(2024).5, R12_EEU, 1.0
61-
SSP(2024).5, R12_FSU, 1.0
62-
SSP(2024).5, R12_LAM, 1.0
63-
SSP(2024).5, R12_MEA, 1.0
64-
SSP(2024).5, R12_NAM, 1.0
65-
SSP(2024).5, R12_PAO, 1.0
66-
SSP(2024).5, R12_PAS, 1.0
67-
SSP(2024).5, R12_RCPA, 1.0
68-
SSP(2024).5, R12_SAS, 1.0
69-
SSP(2024).5, R12_WEU, 1.0
109+
SSP(2024).5, R12_AFR, 2020, 1.0
110+
SSP(2024).5, R12_AFR, 2110, 1.0
111+
SSP(2024).5, R12_CHN, 2020, 1.0
112+
SSP(2024).5, R12_CHN, 2110, 1.0
113+
SSP(2024).5, R12_EEU, 2020, 1.0
114+
SSP(2024).5, R12_EEU, 2110, 1.0
115+
SSP(2024).5, R12_FSU, 2020, 1.0
116+
SSP(2024).5, R12_FSU, 2110, 1.0
117+
SSP(2024).5, R12_LAM, 2020, 1.0
118+
SSP(2024).5, R12_LAM, 2110, 1.0
119+
SSP(2024).5, R12_MEA, 2020, 1.0
120+
SSP(2024).5, R12_MEA, 2110, 1.0
121+
SSP(2024).5, R12_NAM, 2020, 1.0
122+
SSP(2024).5, R12_NAM, 2110, 1.0
123+
SSP(2024).5, R12_PAO, 2020, 1.0
124+
SSP(2024).5, R12_PAO, 2110, 1.0
125+
SSP(2024).5, R12_PAS, 2020, 1.0
126+
SSP(2024).5, R12_PAS, 2110, 1.0
127+
SSP(2024).5, R12_RCPA, 2020, 1.0
128+
SSP(2024).5, R12_RCPA, 2110, 1.0
129+
SSP(2024).5, R12_SAS, 2020, 1.0
130+
SSP(2024).5, R12_SAS, 2110, 1.0
131+
SSP(2024).5, R12_WEU, 2020, 1.0
132+
SSP(2024).5, R12_WEU, 2110, 1.0

message_ix_models/data/transport/pdt-elasticity.csv

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
#
33
# Units: dimensionless
44
#
5-
scenario, value
6-
SSP(2024).2, 1.0
5+
scenario, year, value
6+
SSP(2024).2, 2020, 1.0
7+
SSP(2024).2, 2110, 1.0

message_ix_models/model/transport/demand.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545

4646
log = logging.getLogger(__name__)
4747

48+
EXTRAPOLATE = dict(kwargs=dict(fill_value="extrapolate"))
49+
4850

4951
def dummy(
5052
commodities: list, nodes: list[str], y: list[int], config: dict
@@ -117,10 +119,7 @@ def dummy(
117119
# Smooth prices to avoid zig-zag in share projections
118120
(price.base, "smooth", price[2]),
119121
# Interpolate speed data
120-
(
121-
("speed:scenario-n-t-y:0", "interpolate", exo.speed, "y::coords"),
122-
dict(kwargs=dict(fill_value="extrapolate")),
123-
),
122+
(("speed:scenario-n-t-y:0", "interpolate", exo.speed, "y::coords"), EXTRAPOLATE),
124123
# Select speed data
125124
("speed:n-t-y", "select", "speed:scenario-n-t-y:0", "indexers:scenario"),
126125
# Cost of transport (n, t, y)
@@ -276,10 +275,14 @@ def _delta(qty: "AnyQuantity", y0: int) -> "AnyQuantity":
276275
c.add("pdt slope:n", "div", pdt["delta"] / "y", gdp["delta"] / "y")
277276

278277
# Select 'elasticity' from "pdt elasticity:scenario-n:exo"
279-
c.add("pdt elasticity:n", "select", exo.pdt_elasticity, "indexers:scenario")
278+
k_e = genno.Key(exo.pdt_elasticity.name, "ny")
279+
c.add(k_e[0], "select", exo.pdt_elasticity, "indexers:scenario")
280+
281+
# Interpolate on "y" dimension
282+
c.add(k_e[1], "interpolate", k_e[0], "y::coords", **EXTRAPOLATE)
280283

281284
# Adjust GDP by multiplying by 'elasticity'
282-
c.add(gdp[2], "mul", gdp[1], "pdt elasticity:n")
285+
c.add(gdp[2], "mul", gdp[1], k_e[1])
283286

284287
# Projected PDT = m × adjusted GDP
285288
c.add(pdt["proj"], "mul", gdp[2], "pdt slope:n")

message_ix_models/model/transport/files.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ def read_structures() -> "sdmx.message.StructureMessage":
556556
)
557557

558558
pdt_elasticity = add(
559-
key="pdt elasticity:scenario-n:exo",
559+
key="pdt elasticity:scenario-n-y:exo",
560560
name="“Elasticity” of PDT-capita with respect to GDP",
561561
units="dimensionless",
562562
)

0 commit comments

Comments
 (0)