Skip to content

Commit

Permalink
Merge pull request #258 from iiasa/costs/industry-ccs
Browse files Browse the repository at this point in the history
Fix issue with materials and cooling CCS technologies becoming cheaper than non-CCS counterpart
  • Loading branch information
khaeru authored Dec 4, 2024
2 parents c5e275c + f680ed1 commit 04dad58
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 20 deletions.
1 change: 1 addition & 0 deletions doc/whatsnew.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
------
Expand Down
32 changes: 16 additions & 16 deletions message_ix_models/data/costs/cooling/tech_map.csv
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
8 changes: 4 additions & 4 deletions message_ix_models/data/costs/materials/tech_map.csv
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
33 changes: 33 additions & 0 deletions message_ix_models/tests/tools/costs/test_projections.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

0 comments on commit 04dad58

Please sign in to comment.