diff --git a/config.default.yaml b/config.default.yaml index ed8554002..1a46a0d0e 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -511,6 +511,9 @@ sector: network: false # ALWAYS FALSE for now (NOT USED) network_data: GGIT # Global dataset -> 'GGIT' , European dataset -> 'IGGIELGN' network_data_GGIT_status: ["Construction", "Operating", "Idle", "Shelved", "Mothballed", "Proposed"] + gas_NGCC: false # if true, Natural Gas 2-on-1 Combined Cycle (F-Frame) plant is added + CC: false # enable gas carbon capture technologies + gas_CC_techs: ["NG 2-on-1 Combined Cycle (F-Frame) 95% CCS", "NG 2-on-1 Combined Cycle (F-Frame) 97% CCS"] # Natural Gas 2-on-1 Combined Cycle (F-Frame) plants with 95% and 97% capture rate hydrogen: network: true H2_retrofit_capacity_per_CH4: 0.6 @@ -525,6 +528,9 @@ sector: coal: spatial_coal: true shift_to_elec: true # If true, residential and services demand of coal is shifted to electricity. If false, the final energy demand of coal is disregarded + coal_IGCC: false # If true, coal integrated gas combined-cycle (IGCC) plants are added + CC: false # enable coal carbon capture technologies + coal_CC_techs: ["Coal-95%-CCS", "Coal-99%-CCS", "Coal-IGCC-90%-CCS"] # coal plant with 95% capture rate, coal plant with 99% capture rate, coal integrated gas combined-cycle plant with 90% capture rate lignite: spatial_lignite: false diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 880dafef7..26e5cfba7 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -157,6 +157,102 @@ def add_generation( # set the "co2_emissions" of the carrier to 0, as emissions are accounted by link efficiency separately (efficiency to 'co2 atmosphere' bus) n.carriers.loc[carrier, "co2_emissions"] = 0 + # add coal CC technologies + if options["coal"].get("CC", False): + coal_CC_techs = options["coal"].get("coal_CC_techs", list()) + + for cc_tech in coal_CC_techs: + n.madd( + "Link", + spatial.nodes + " " + cc_tech, + bus0=spatial.coal.nodes, + bus1=spatial.nodes, + bus2="co2 atmosphere", + bus3=spatial.co2.nodes, + marginal_cost=costs.at[cc_tech, "efficiency"] + * costs.at[cc_tech, "VOM"], # NB: VOM is per MWel + # NB: fixed cost is per MWel + capital_cost=costs.at[cc_tech, "efficiency"] + * costs.at[cc_tech, "fixed"], + p_nom_extendable=True, + carrier="coal", + efficiency=costs.at[cc_tech, "efficiency"], + efficiency2=costs.at["coal", "CO2 intensity"] + * (1 - costs.at[cc_tech, "capture_rate"]), + efficiency3=costs.at["coal", "CO2 intensity"] + * costs.at[cc_tech, "capture_rate"], + lifetime=costs.at[cc_tech, "lifetime"], + ) + + # add coal integrated gas combined-cycle (IGCC) plant if enabled + if options["coal"].get("coal_IGCC", False): + n.madd( + "Link", + spatial.nodes + " " + "coal IGCC", + bus0=spatial.coal.nodes, + bus1=spatial.nodes, + bus2="co2 atmosphere", + marginal_cost=costs.at["Coal-IGCC", "efficiency"] + * costs.at["Coal-IGCC", "VOM"], # NB: VOM is per MWel + # NB: fixed cost is per MWel + capital_cost=costs.at["Coal-IGCC", "efficiency"] + * costs.at["Coal-IGCC", "fixed"], + p_nom_extendable=True, + carrier="coal", + efficiency=costs.at["Coal-IGCC", "efficiency"], + efficiency2=costs.at["coal", "CO2 intensity"], + lifetime=costs.at["Coal-IGCC", "lifetime"], + ) + + # add natural gas CC technologies + if options["gas"].get("CC", False): + gas_CC_techs = options["gas"].get("gas_CC_techs", list()) + + for cc_tech in gas_CC_techs: + n.madd( + "Link", + spatial.nodes + " " + cc_tech, + bus0=spatial.gas.nodes, + bus1=spatial.nodes, + bus2="co2 atmosphere", + bus3=spatial.co2.nodes, + marginal_cost=costs.at[cc_tech, "efficiency"] + * costs.at[cc_tech, "VOM"], # NB: VOM is per MWel + # NB: fixed cost is per MWel + capital_cost=costs.at[cc_tech, "efficiency"] + * costs.at[cc_tech, "fixed"], + p_nom_extendable=True, + carrier="gas", + efficiency=costs.at[cc_tech, "efficiency"], + efficiency2=costs.at["gas", "CO2 intensity"] + * (1 - costs.at[cc_tech, "capture_rate"]), + efficiency3=costs.at["gas", "CO2 intensity"] + * costs.at[cc_tech, "capture_rate"], + lifetime=costs.at[cc_tech, "lifetime"], + ) + + # add Natural Gas 2-on-1 Combined Cycle (F-Frame) plants if enabled + if options["gas"].get("gas_NGCC", False): + n.madd( + "Link", + spatial.nodes + " " + "gas NGCC", + bus0=spatial.gas.nodes, + bus1=spatial.nodes, + bus2="co2 atmosphere", + marginal_cost=costs.at["NG 2-on-1 Combined Cycle (F-Frame)", "efficiency"] + * costs.at[ + "NG 2-on-1 Combined Cycle (F-Frame)", "VOM" + ], # NB: VOM is per MWel + # NB: fixed cost is per MWel + capital_cost=costs.at["NG 2-on-1 Combined Cycle (F-Frame)", "efficiency"] + * costs.at["NG 2-on-1 Combined Cycle (F-Frame)", "fixed"], + p_nom_extendable=True, + carrier="gas", + efficiency=costs.at["NG 2-on-1 Combined Cycle (F-Frame)", "efficiency"], + efficiency2=costs.at["gas", "CO2 intensity"], + lifetime=costs.at["NG 2-on-1 Combined Cycle (F-Frame)", "lifetime"], + ) + def H2_liquid_fossil_conversions(n, costs): """