From c24f76ca03a19a03097423b9766d8ff96b284177 Mon Sep 17 00:00:00 2001 From: Measrainsey Meng Date: Tue, 3 Dec 2024 13:16:53 +0100 Subject: [PATCH 1/4] Change mapped technology for NH3 CCS technologies Now both CCS and non-CCS variants are mapped to MESSAGE technology `igcc` --- message_ix_models/data/costs/materials/tech_map.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/message_ix_models/data/costs/materials/tech_map.csv b/message_ix_models/data/costs/materials/tech_map.csv index 4f61fd3d58..f528fba592 100644 --- a/message_ix_models/data/costs/materials/tech_map.csv +++ b/message_ix_models/data/costs/materials/tech_map.csv @@ -13,7 +13,7 @@ agg_ref,"","",,, atm_distillation_ref,"","",30.25954286,0.021,1980 bf_steel,"","",90.65,0.1,1990 biomass_NH3,energy,igcc,3646.957331,0.036,1995 -biomass_NH3_ccs,energy,igcc_ccs,3876.680306,0.038,1995 +biomass_NH3_ccs,energy,igcc,3876.680306,0.038,1995 bof_steel,"","",160.71,0.089,1990 catalytic_cracking_ref,"","",181.5572571,0.022,1980 catalytic_reforming_ref,"","",181.5572571,0.003,1980 @@ -22,7 +22,7 @@ clinker_dry_cement,"","",131.5,0.001,1980 clinker_wet_ccs_cement,"","",180,0.167,1980 clinker_wet_cement,"","",131.5,0.001,1980 coal_NH3,energy,igcc,2917.565865,0.036,1995 -coal_NH3_ccs,energy,igcc_ccs,3087.128546,0.038,1995 +coal_NH3_ccs,energy,igcc,3087.128546,0.038,1995 cokeoven_steel,"","",21.51,0.001,1990 coking_ref,"","",235.4813143,0.021,1980 dheat_aluminum,energy,heat_i,27.69,0.271,2030 @@ -50,7 +50,7 @@ feedstock_t/d,"","",,, finishing_aluminum,"","",,, finishing_steel,"","",228.92,0.1,1990 fueloil_NH3,energy,igcc,3282.261598,0.036,1995 -fueloil_NH3_ccs,energy,igcc_ccs,3473.019614,0.038,1995 +fueloil_NH3_ccs,energy,igcc,3473.019614,0.038,1995 furnace_biomass_aluminum,energy,biomass_i,154.32,0.267,1980 furnace_biomass_cement,energy,biomass_i,154.32,0.267,1980 furnace_biomass_petro,energy,biomass_i,154.32,0.267,1980 @@ -108,7 +108,7 @@ furnace_methanol_refining,energy,meth_i,57.4099999999999,0.165,2020 furnace_methanol_resins,energy,meth_i,57.4099999999999,0.165,2020 furnace_methanol_steel,energy,meth_i,57.4099999999999,0.165,2020 gas_NH3,energy,igcc,2188.174399,0.036,1995 -gas_NH3_ccs,energy,igcc_ccs,2935.967579,0.038,1995 +gas_NH3_ccs,energy,igcc,2935.967579,0.038,1995 gas_processing_petro,"","",,, grinding_ballmill_cement,"","",65.75,0.001,1980 grinding_vertmill_cement,"","",85.75,0.001,1980 From 2d1e11da9a849fb87569ceb4ab64843934f72860 Mon Sep 17 00:00:00 2001 From: Measrainsey Meng Date: Tue, 3 Dec 2024 17:02:16 +0100 Subject: [PATCH 2/4] Add #258 to doc/whatsnew --- doc/whatsnew.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/whatsnew.rst b/doc/whatsnew.rst index e8afcfbbd8..6226e09783 100644 --- a/doc/whatsnew.rst +++ b/doc/whatsnew.rst @@ -62,6 +62,7 @@ Investment and fixed costs - Change cost decay to reach reduction percentage specified on the year 2100 (:pull:`227`). - Add `cooling` technology variant/module (:pull:`222`). - Add functionality to specify cost reduction values and cost reduction scenarios in a module (:issue:`251`, :pull:`255`). +- Fix technology mapping of ammonia CCS technologies in materials module (:pull:`258`). Others ------ From f6b205556552b55026a98bc16c0722d827c34c6b Mon Sep 17 00:00:00 2001 From: Measrainsey Meng Date: Wed, 4 Dec 2024 14:00:34 +0100 Subject: [PATCH 3/4] Add test for checking cost of CCS vs non-CCS --- .../tests/tools/costs/test_projections.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/message_ix_models/tests/tools/costs/test_projections.py b/message_ix_models/tests/tools/costs/test_projections.py index 99005d1244..8744f826f6 100644 --- a/message_ix_models/tests/tools/costs/test_projections.py +++ b/message_ix_models/tests/tools/costs/test_projections.py @@ -114,3 +114,36 @@ def test_bare_res(request, test_context, node): # Scenario solves with the added data scenario.solve() + + +@pytest.mark.parametrize("module", ("energy", "materials", "cooling")) +def test_ccs_costs(module): + cfg = Config(module=module, method="gdp") + + # Function runs without error + result = create_cost_projections(cfg) + + # Get inv cost + inv = result["inv_cost"] + + # Get list of technologies with "ccs" in the name + ccs_tech = inv[inv.technology.str.contains("ccs")].technology.unique() + + # Create array with "_ccs" removed from the technology names + tech = [t.replace("_ccs", "") for t in ccs_tech] + + # Compare investment costs for technologies with and without CCS + non_ccs = ( + inv[inv.technology.isin(tech)] + .drop(columns=["scenario_version", "unit"]) + .set_index(["scenario", "node_loc", "year_vtg", "technology"]) + ) + ccs = ( + inv[inv.technology.isin(ccs_tech)] + .assign(technology=lambda x: x.technology.str.replace("_ccs", "")) + .drop(columns=["scenario_version", "unit"]) + .set_index(["scenario", "node_loc", "year_vtg", "technology"]) + ) + + # Assert that costs for CCS technologies are greater than for non-CCS technologies + assert ccs.sub(non_ccs).dropna().ge(0).all().all() From f680ed1f8e8cc83a2864651717b5b6a0fdac4710 Mon Sep 17 00:00:00 2001 From: Measrainsey Meng Date: Wed, 4 Dec 2024 14:09:21 +0100 Subject: [PATCH 4/4] Change mapping of CCS technologies in cooling module --- .../data/costs/cooling/tech_map.csv | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/message_ix_models/data/costs/cooling/tech_map.csv b/message_ix_models/data/costs/cooling/tech_map.csv index 2c2d3e7439..dcf98daf59 100644 --- a/message_ix_models/data/costs/cooling/tech_map.csv +++ b/message_ix_models/data/costs/cooling/tech_map.csv @@ -7,10 +7,10 @@ bio_istig__air,energy,bio_istig,220,0,2015 bio_istig__cl_fresh,energy,bio_istig,100,0,2015 bio_istig__ot_fresh,energy,bio_istig,0.4,0,2015 bio_istig__ot_saline,energy,bio_istig,0.3,0,2015 -bio_istig_ccs__air,energy,bio_istig_ccs,220,0,2015 -bio_istig_ccs__cl_fresh,energy,bio_istig_ccs,100,0,2015 -bio_istig_ccs__ot_fresh,energy,bio_istig_ccs,0.4,0,2015 -bio_istig_ccs__ot_saline,energy,bio_istig_ccs,0.3,0,2015 +bio_istig_ccs__air,energy,bio_istig,220,0,2015 +bio_istig_ccs__cl_fresh,energy,bio_istig,100,0,2015 +bio_istig_ccs__ot_fresh,energy,bio_istig,0.4,0,2015 +bio_istig_ccs__ot_saline,energy,bio_istig,0.3,0,2015 bio_ppl__air,energy,bio_ppl,220,0,2015 bio_ppl__cl_fresh,energy,bio_ppl,100,0,2015 bio_ppl__ot_fresh,energy,bio_ppl,0.4,0,2015 @@ -19,10 +19,10 @@ coal_adv__air,energy,coal_adv,220,0,2015 coal_adv__cl_fresh,energy,coal_adv,100,0,2015 coal_adv__ot_fresh,energy,coal_adv,0.4,0,2015 coal_adv__ot_saline,energy,coal_adv,0.3,0,2015 -coal_adv_ccs__air,energy,coal_adv_ccs,220,0,2015 -coal_adv_ccs__cl_fresh,energy,coal_adv_ccs,160,0,2015 -coal_adv_ccs__ot_fresh,energy,coal_adv_ccs,0.4,0,2015 -coal_adv_ccs__ot_saline,energy,coal_adv_ccs,0.3,0,2015 +coal_adv_ccs__air,energy,coal_adv,220,0,2015 +coal_adv_ccs__cl_fresh,energy,coal_adv,160,0,2015 +coal_adv_ccs__ot_fresh,energy,coal_adv,0.4,0,2015 +coal_adv_ccs__ot_saline,energy,coal_adv,0.3,0,2015 coal_ppl__air,energy,coal_ppl,220,0,2015 coal_ppl__cl_fresh,energy,coal_ppl,100,0,2015 coal_ppl__ot_fresh,energy,coal_ppl,0.4,0,2015 @@ -43,10 +43,10 @@ gas_cc__air,energy,gas_cc,140,0,2015 gas_cc__cl_fresh,energy,gas_cc,50,0,2015 gas_cc__ot_fresh,energy,gas_cc,0.2,0,2015 gas_cc__ot_saline,energy,gas_cc,0.15,0,2015 -gas_cc_ccs__air,energy,gas_cc_ccs,220,0,2015 -gas_cc_ccs__cl_fresh,energy,gas_cc_ccs,160,0,2015 -gas_cc_ccs__ot_fresh,energy,gas_cc_ccs,0.4,0,2015 -gas_cc_ccs__ot_saline,energy,gas_cc_ccs,0.3,0,2015 +gas_cc_ccs__air,energy,gas_cc,220,0,2015 +gas_cc_ccs__cl_fresh,energy,gas_cc,160,0,2015 +gas_cc_ccs__ot_fresh,energy,gas_cc,0.4,0,2015 +gas_cc_ccs__ot_saline,energy,gas_cc,0.3,0,2015 gas_hpl__air,energy,gas_hpl,220,0,2015 gas_hpl__cl_fresh,energy,gas_hpl,100,0,2015 gas_hpl__ot_fresh,energy,gas_hpl,0.4,0,2015 @@ -67,10 +67,10 @@ igcc__air,energy,igcc,140,0,2015 igcc__cl_fresh,energy,igcc,50,0,2015 igcc__ot_fresh,energy,igcc,0.4,0,2015 igcc__ot_saline,energy,igcc,0.3,0,2015 -igcc_ccs__air,energy,igcc_ccs,220,0,2015 -igcc_ccs__cl_fresh,energy,igcc_ccs,100,0,2015 -igcc_ccs__ot_fresh,energy,igcc_ccs,0.4,0,2015 -igcc_ccs__ot_saline,energy,igcc_ccs,0.3,0,2015 +igcc_ccs__air,energy,igcc,220,0,2015 +igcc_ccs__cl_fresh,energy,igcc,100,0,2015 +igcc_ccs__ot_fresh,energy,igcc,0.4,0,2015 +igcc_ccs__ot_saline,energy,igcc,0.3,0,2015 loil_cc__air,energy,loil_cc,140,0,2015 loil_cc__cl_fresh,energy,loil_cc,50,0,2015 loil_cc__ot_fresh,energy,loil_cc,0.2,0,2015