Skip to content

Commit 8aa8100

Browse files
committed
Fix merge duplication
1 parent d02718e commit 8aa8100

File tree

6 files changed

+135
-513
lines changed

6 files changed

+135
-513
lines changed

message_ix_models/data/material/set.yaml

+4-10
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ common:
1414
add:
1515
- extract__freshwater_supply
1616
remove:
17-
# remove deprecated technologies that are sometimes still existent in older MESSAGEix-GLOBIOM versions
18-
- hp_gas_i
19-
- sp_coal_I
20-
- hp_gas_rc
17+
# remove deprecated technologies that are sometimes still existent in older MESSAGEix-GLOBIOM versions
18+
- hp_gas_i
19+
- sp_coal_I
20+
- hp_gas_rc
2121

2222
commodity:
2323
require:
@@ -91,12 +91,6 @@ common:
9191
- Mt/yr
9292
- USD/kW
9393

94-
technology:
95-
remove:
96-
# remove deprecated technologies that are sometimes still existent in older MESSAGEix-GLOBIOM versions
97-
- hp_gas_i
98-
- sp_coal_I
99-
- hp_gas_rc
10094

10195
generic:
10296
commodity:

message_ix_models/model/material/build.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
from message_ix_models.model.material.data_ammonia_new import gen_all_NH3_fert
1010
from message_ix_models.model.material.data_cement import gen_data_cement
1111
from message_ix_models.model.material.data_generic import gen_data_generic
12-
from message_ix_models.model.material.data_methanol_new import gen_data_methanol_new
12+
from message_ix_models.model.material.data_methanol import gen_data_methanol
1313
from message_ix_models.model.material.data_other_industry import (
1414
gen_other_ind_demands,
1515
get_hist_act,
1616
modify_demand_and_hist_activity,
1717
)
18-
from message_ix_models.model.material.data_methanol import gen_data_methanol
1918
from message_ix_models.model.material.data_petro import gen_data_petro_chemicals
2019
from message_ix_models.model.material.data_power_sector import gen_data_power_sector
2120
from message_ix_models.model.material.data_steel import gen_data_steel

message_ix_models/model/material/data_generic.py

-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ def add_ind_therm_link_relations(tecs, years, nodes):
8484
return df
8585

8686

87-
def gen_data_generic(scenario, dry_run=False):
8887
def gen_data_generic(
8988
scenario: Scenario, dry_run: bool = False
9089
) -> dict[str, pd.DataFrame]:

message_ix_models/model/material/data_methanol.py

+78-4
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@
66
from message_ix import make_df
77

88
import message_ix_models.util
9+
from message_ix_models import ScenarioInfo
10+
from message_ix_models.model.material.data_util import (
11+
gen_plastics_emission_factors,
12+
gen_chemicals_co2_ind_factors,
13+
)
914
from message_ix_models.model.material.material_demand import material_demand_calc
10-
from message_ix_models.model.material.util import read_config
11-
from message_ix_models.util import broadcast, same_node
15+
from message_ix_models.model.material.util import combine_df_dictionaries, read_config
16+
from message_ix_models.util import broadcast, same_node, nodes_ex_world
1217

1318
if TYPE_CHECKING:
1419
from message_ix import Scenario
@@ -30,7 +35,7 @@
3035
}
3136

3237

33-
def gen_data_methanol(scenario: "Scenario") -> Dict[str, pd.DataFrame]:
38+
def gen_data_methanol_new(scenario: "Scenario") -> Dict[str, pd.DataFrame]:
3439
"""
3540
Generates data for methanol industry model
3641
@@ -88,6 +93,31 @@ def gen_data_methanol(scenario: "Scenario") -> Dict[str, pd.DataFrame]:
8893
)
8994
pars_dict["demand"] = df_final
9095

96+
s_info = ScenarioInfo(scenario)
97+
downstream_tec_pars = gen_meth_fs_downstream(s_info)
98+
meth_downstream_emi_top_down = gen_plastics_emission_factors(s_info, "methanol")
99+
meth_downstream_emi_bot_up = gen_chemicals_co2_ind_factors(s_info, "methanol")
100+
101+
pars_dict = combine_df_dictionaries(
102+
pars_dict,
103+
downstream_tec_pars,
104+
meth_downstream_emi_top_down,
105+
meth_downstream_emi_bot_up,
106+
)
107+
108+
scen_rel_set = scenario.set("relation")
109+
for par in ["activity", "upper", "lower"]:
110+
df_rel = pars_dict[f"relation_{par}"]
111+
df_rel = df_rel[df_rel["relation"].isin(scen_rel_set.values)]
112+
exc_rels = [
113+
i for i in df_rel["relation"].unique() if i not in scen_rel_set.values
114+
]
115+
print(
116+
f"following relations are dropped from relation_{par} of methanol input "
117+
f"data because they are not compatible with the scenario: {exc_rels}"
118+
)
119+
pars_dict[f"relation_{par}"] = df_rel
120+
91121
return pars_dict
92122

93123

@@ -197,7 +227,7 @@ def broadcast_years(
197227
return df_bc_node
198228

199229

200-
def unpivot_input_data(df: pd.DataFrame, par_name: str) -> pd.DataFrame:
230+
def unpivot_input_data(df: pd.DataFrame, par_name: str):
201231
"""
202232
Unpivot data that is already contains columns for respective MESSAGEix parameter
203233
Parameters
@@ -257,3 +287,47 @@ def unpivot_input_data(df: pd.DataFrame, par_name: str) -> pd.DataFrame:
257287
].index
258288
)
259289
return make_df(par_name, **df_final_full)
290+
291+
292+
def gen_meth_fs_downstream(s_info: "ScenarioInfo") -> Dict[str, pd.DataFrame]:
293+
# input parameter
294+
yv_ya = s_info.yv_ya
295+
year_all = yv_ya["year_act"].unique()
296+
297+
tec_name = "meth_ind_fs"
298+
cols = {
299+
"technology": tec_name,
300+
"commodity": "methanol",
301+
"mode": "M1",
302+
"level": "final_material",
303+
"time": "year",
304+
"time_origin": "year",
305+
"value": 1,
306+
"unit": "Mt",
307+
}
308+
df_in = (
309+
make_df("input", **cols)
310+
.pipe(broadcast, node_loc=nodes_ex_world(s_info.N), year_act=year_all)
311+
.pipe(same_node)
312+
)
313+
df_in["year_vtg"] = df_in["year_act"]
314+
315+
# output parameter
316+
tec_name = "meth_ind_fs"
317+
cols = {
318+
"technology": tec_name,
319+
"commodity": "methanol",
320+
"mode": "M1",
321+
"level": "demand",
322+
"time": "year",
323+
"time_dest": "year",
324+
"value": 1,
325+
"unit": "Mt",
326+
}
327+
df_out = (
328+
make_df("output", **cols)
329+
.pipe(broadcast, node_loc=nodes_ex_world(s_info.N), year_act=year_all)
330+
.pipe(same_node)
331+
)
332+
df_out["year_vtg"] = df_out["year_act"]
333+
return dict(input=df_in, output=df_out)

0 commit comments

Comments
 (0)