From 8b4be1f4230f88c61adbca8e531db317fe05e0a5 Mon Sep 17 00:00:00 2001 From: cpschau Date: Mon, 21 Oct 2024 12:05:31 +0200 Subject: [PATCH 1/6] add BtL --- config.bright_BI.yaml | 45 +- config.bright_BI_ref.yaml | 4 +- config.bright_DE.yaml | 66 ++- config.bright_DE_ref.yaml | 676 ++++++++++++++++++++++++++++++ config.bright_GH.yaml | 42 +- config.bright_GH_ref.yaml | 42 +- scripts/prepare_sector_network.py | 53 ++- 7 files changed, 890 insertions(+), 38 deletions(-) create mode 100644 config.bright_DE_ref.yaml diff --git a/config.bright_BI.yaml b/config.bright_BI.yaml index 525b3c06..1e974bec 100644 --- a/config.bright_BI.yaml +++ b/config.bright_BI.yaml @@ -6,7 +6,7 @@ summary_dir: results/ costs_dir: data/ #TODO change to the equivalent of technology data run: - name: TEST_Octoober9th_BI_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario_correctPorts + name: 20241021_biofuels name_subworkflow: "" # scenario name of the pypsa-earth subworkflow shared_cutouts: true # set to true to share the default cutout(s) across runs # Note: value false requires build_cutout to be enabled @@ -40,7 +40,7 @@ policy_config: allowed_excess: 1.0 is_reference: false # Whether or not this network is a reference case network, relevant only if additionality is _true_ remove_h2_load: false #Whether or not to remove the h2 load from the network, relevant only if is_reference is _true_ - path_to_ref: "/nimble/home/haz43975/pypsa-earth-sec/results/TEST_Octoober9th_BI_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario/postnetworks/elec_s_11_ec_lv1.0_Co2L_3H_2035_0.071_BI_0export.nc" # Path to the reference case network for additionality calculation, relevant only if additionality is _true_ and is_reference is _false_ + path_to_ref: "/nimble/home/haz43975/pypsa-earth-sec/results/20241021_biofuels/postnetworks/elec_s_11_ec_lv1.0_Co2L_3H_2035_0.071_BI_0export.nc" # Path to the reference case network for additionality calculation, relevant only if additionality is _true_ and is_reference is _false_ re_country_load: false # Set to "True" to force the RE electricity to be equal to the electricity required for hydrogen export and the country electricity load. "False" excludes the country electricity load from the constraint. clustering_options: @@ -88,7 +88,6 @@ custom_data: add_existing: false custom_sectors: false gas_network: false # If "True" then a custom .csv file must be placed in "resources/custom_data/pipelines.csv" , If "False" the user can choose btw "greenfield" or Model built-in datasets. Please refer to ["sector"] below. - biomass_to_oil_mobility: 0.56 rename_industry_carriers: {"Electricity": "electricity", "Biofuels": "solid biomass", "Heat": "low-temperature heat", "Natural Gas": "gas", "Coal": "coal", "Hydrogen": "hydrogen", "Oil": "oil"} costs: # Costs used in PyPSA-Earth-Sec. Year depends on the wildcard planning_horizon in the scenario section @@ -263,6 +262,7 @@ sector: biomass_transport_default_cost: 0.1 #EUR/km/MWh solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True efficiency_heat_oil_to_elec: 0.9 efficiency_heat_biomass_to_elec: 0.9 @@ -296,6 +296,19 @@ sector: Co2L0.20: 0.01 Co2L0.10: 0.01 Co2L0.00: 0.01 + bio_transport_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 land_transport_fuel_cell_share: # 1 means all FCEVs HERE BU_2030: 0.00 @@ -349,6 +362,32 @@ sector: GH_2050: 0.320 DE_2050: 0.593 + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.50 + GH_2035: 0.33 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 diff --git a/config.bright_BI_ref.yaml b/config.bright_BI_ref.yaml index ff623571..5daeb8a4 100644 --- a/config.bright_BI_ref.yaml +++ b/config.bright_BI_ref.yaml @@ -6,7 +6,7 @@ summary_dir: results/ costs_dir: data/ #TODO change to the equivalent of technology data run: - name: TEST_Octoober9th_BI_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario_correctPorts_addBioTransport + name: 20241021_biofuels name_subworkflow: "" # scenario name of the pypsa-earth subworkflow shared_cutouts: true # set to true to share the default cutout(s) across runs # Note: value false requires build_cutout to be enabled @@ -88,7 +88,6 @@ custom_data: add_existing: false custom_sectors: false gas_network: false # If "True" then a custom .csv file must be placed in "resources/custom_data/pipelines.csv" , If "False" the user can choose btw "greenfield" or Model built-in datasets. Please refer to ["sector"] below. - biomass_to_oil_mobility: 0.0 rename_industry_carriers: {"Electricity": "electricity", "Biofuels": "solid biomass", "Heat": "low-temperature heat", "Natural Gas": "gas", "Coal": "coal", "Hydrogen": "hydrogen", "Oil": "oil"} costs: # Costs used in PyPSA-Earth-Sec. Year depends on the wildcard planning_horizon in the scenario section @@ -263,6 +262,7 @@ sector: biomass_transport_default_cost: 0.1 #EUR/km/MWh solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True efficiency_heat_oil_to_elec: 0.9 efficiency_heat_biomass_to_elec: 0.9 diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index e91a55c5..39c46022 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -6,7 +6,7 @@ summary_dir: results/ costs_dir: data/ #TODO change to the equivalent of technology data run: - name: 092524_test + name: 20241021_biofuels name_subworkflow: "" # scenario name of the pypsa-earth subworkflow shared_cutouts: true # set to true to share the default cutout(s) across runs # Note: value false requires build_cutout to be enabled @@ -28,19 +28,19 @@ scenario: opts: - "Co2L" sopts: - - "8H" + - "3H" demand: - "DE" # BI/DE/GH policy_config: hydrogen: - temporal_matching: "no_res_matching" #either "h2_yearly_matching", "h2_monthly_matching", "no_res_matching" + temporal_matching: "h2_monthly_matching" #either "h2_yearly_matching", "h2_monthly_matching", "no_res_matching" spatial_matching: false additionality: true # RE electricity is equal to the amount required for additional hydrogen export compared to the 0 export case ("reference_case") allowed_excess: 1.0 is_reference: false # Whether or not this network is a reference case network, relevant only if additionality is _true_ remove_h2_load: false #Whether or not to remove the h2 load from the network, relevant only if is_reference is _true_ - path_to_ref: "" # Path to the reference case network for additionality calculation, relevant only if additionality is _true_ and is_reference is _false_ + path_to_ref: "/nimble/home/haz43975/pypsa-earth-sec/results/20241021_biofuels/postnetworks/elec_s_11_ec_lv1.0_Co2L_3H_2035_0.071_DE_0export.nc" # Path to the reference case network for additionality calculation, relevant only if additionality is _true_ and is_reference is _false_ re_country_load: false # Set to "True" to force the RE electricity to be equal to the electricity required for hydrogen export and the country electricity load. "False" excludes the country electricity load from the constraint. clustering_options: @@ -64,7 +64,7 @@ fossil_reserves: export: - h2export: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Yearly export demand in TWh + h2export: [200] #[10,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh store: false # [True, False] # specifies wether an export store to balance demand is implemented store_capital_costs: "no_costs" # ["standard_costs", "no_costs"] # specifies the costs of the export store. "standard_costs" takes CAPEX of "hydrogen storage tank type 1 including compressor" export_profile: "constant" # use "ship" or "constant" @@ -88,7 +88,6 @@ custom_data: add_existing: false custom_sectors: false gas_network: false # If "True" then a custom .csv file must be placed in "resources/custom_data/pipelines.csv" , If "False" the user can choose btw "greenfield" or Model built-in datasets. Please refer to ["sector"] below. - rename_industry_carriers: {"Electricity": "electricity", "Biofuels": "solid biomass", "Heat": "low-temperature heat", "Natural Gas": "gas", "Coal": "coal", "Hydrogen": "hydrogen", "Oil": "oil"} costs: # Costs used in PyPSA-Earth-Sec. Year depends on the wildcard planning_horizon in the scenario section @@ -190,8 +189,8 @@ sector: network_data_GGIT_status: ['Construction', 'Operating', 'Idle', 'Shelved', 'Mothballed', 'Proposed'] hydrogen: network: true - network_limit: 10000 #GWkm - network_routes: gas # "gas or "greenfield". If "gas" -> the network data are fetched from ["sector"]["gas"]["network_data"]. If "greenfield" -> the network follows the topology of electrical transmission lines + network_limit: 25000 #GWkm + network_routes: greenfield # "gas or "greenfield". If "gas" -> the network data are fetched from ["sector"]["gas"]["network_data"]. If "greenfield" -> the network follows the topology of electrical transmission lines gas_network_repurposing: true # If true -> ["sector"]["gas"]["network"] is automatically false underground_storage: false hydrogen_colors: false @@ -263,6 +262,7 @@ sector: biomass_transport_default_cost: 0.1 #EUR/km/MWh solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True efficiency_heat_oil_to_elec: 0.9 efficiency_heat_biomass_to_elec: 0.9 @@ -296,6 +296,19 @@ sector: Co2L0.20: 0.01 Co2L0.10: 0.01 Co2L0.00: 0.01 + bio_transport_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 land_transport_fuel_cell_share: # 1 means all FCEVs HERE BU_2030: 0.00 @@ -349,8 +362,34 @@ sector: GH_2050: 0.320 DE_2050: 0.593 - co2_network: false - co2_sequestration_potential: 0 #MtCO2/a sequestration potential for Europe + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.50 + GH_2035: 0.33 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + + co2_network: true + co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 hydrogen_underground_storage: false shipping_hydrogen_liquefaction: false @@ -359,8 +398,11 @@ sector: shipping_hydrogen_share: #1.0 BU_2030: 0.00 BI_2030: 0.00 + BI_2035: 0.014 GH_2030: 0.00 + GH_2035: 0.014 DE_2030: 0.00 + DE_2035: 0.014 AP_2030: 0.00 NZ_2030: 0.10 DF_2030: 0.05 @@ -377,7 +419,7 @@ sector: marginal_cost_storage: 0 methanation: true helmeth: true - dac: false + dac: true SMR: true SMR CC: true cc_fraction: 0.9 @@ -630,3 +672,5 @@ plotting: biomass EOP: "green" biomass: "green" high-temp electrolysis: "magenta" + oil pipeline: "grey" + agriculture biomass: "green" diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml new file mode 100644 index 00000000..5e001c56 --- /dev/null +++ b/config.bright_DE_ref.yaml @@ -0,0 +1,676 @@ +logging_level: INFO +tutorial: false + +results_dir: results/ +summary_dir: results/ +costs_dir: data/ #TODO change to the equivalent of technology data + +run: + name: 20241021_biofuels + name_subworkflow: "" # scenario name of the pypsa-earth subworkflow + shared_cutouts: true # set to true to share the default cutout(s) across runs + # Note: value false requires build_cutout to be enabled + +foresight: overnight + +# option to disable the subworkflow to ease the analyses +disable_subworkflow: false + +scenario: + simpl: # only relevant for PyPSA-Eur + - "" + clusters: # number of nodes in Europe, any integer between 37 (1 node per country-zone) and several hundred + - 11 + planning_horizons: # investment years for myopic and perfect; or costs year for overnight + - 2035 + ll: + - "v1.0" + opts: + - "Co2L" + sopts: + - "3H" + demand: + - "DE" # BI/DE/GH + +policy_config: + hydrogen: + temporal_matching: "h2_monthly_matching" #either "h2_yearly_matching", "h2_monthly_matching", "no_res_matching" + spatial_matching: false + additionality: true # RE electricity is equal to the amount required for additional hydrogen export compared to the 0 export case ("reference_case") + allowed_excess: 1.0 + is_reference: true # Whether or not this network is a reference case network, relevant only if additionality is _true_ + remove_h2_load: false #Whether or not to remove the h2 load from the network, relevant only if is_reference is _true_ + path_to_ref: "" # Path to the reference case network for additionality calculation, relevant only if additionality is _true_ and is_reference is _false_ + re_country_load: false # Set to "True" to force the RE electricity to be equal to the electricity required for hydrogen export and the country electricity load. "False" excludes the country electricity load from the constraint. + +clustering_options: + alternative_clustering: true + +countries: ['BR'] + +demand_data: + update_data: true # if true, the workflow downloads the energy balances data saved in data/demand/unsd/data again. Turn on for the first run. + base_year: 2019 + + other_industries: false # Whether or not to include industries that are not specified. some countries have has exageratted numbers, check carefully. + aluminium_year: 2019 # Year of the aluminium demand data specified in `data/AL_production.csv` + + +enable: + retrieve_cost_data: true # if true, the workflow overwrites the cost data saved in data/costs again + +fossil_reserves: + oil: 2000 #TWh Maybe reduntant + + +export: + h2export: [0] #[10,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh + store: false # [True, False] # specifies wether an export store to balance demand is implemented + store_capital_costs: "no_costs" # ["standard_costs", "no_costs"] # specifies the costs of the export store. "standard_costs" takes CAPEX of "hydrogen storage tank type 1 including compressor" + export_profile: "constant" # use "ship" or "constant" + ship: + ship_capacity: 0.4 # TWh # 0.05 TWh for new ones, 0.003 TWh for Susio Frontier, 0.4 TWh according to Hampp2021: "Corresponds to 11360 t H2 (l) with LHV of 33.3333 Mwh/t_H2. Cihlar et al 2020 based on IEA 2019, Table 3-B" + travel_time: 288 # hours # From Agadir to Rotterdam and back (12*24) + fill_time: 24 # hours, for 48h see Hampp2021 + unload_time: 24 # hours for 48h see Hampp2021 + +custom_data: + renewables_enertile: ["onwind", "onwind_rest", "solar"] + renewables: ["onwind", "onwind2", "onwind3", "onwind4", "solar"] # ['csp', 'rooftop-solar', 'solar'] + energy_totals: true + elec_demand: true + heat_demand: false + industry_demand: true + industry_database: true + transport_demand: false + water_costs: false + h2_underground: false + add_existing: false + custom_sectors: false + gas_network: false # If "True" then a custom .csv file must be placed in "resources/custom_data/pipelines.csv" , If "False" the user can choose btw "greenfield" or Model built-in datasets. Please refer to ["sector"] below. + rename_industry_carriers: {"Electricity": "electricity", "Biofuels": "solid biomass", "Heat": "low-temperature heat", "Natural Gas": "gas", "Coal": "coal", "Hydrogen": "hydrogen", "Oil": "oil"} + +costs: # Costs used in PyPSA-Earth-Sec. Year depends on the wildcard planning_horizon in the scenario section + version: v0.6.2 + lifetime: 25 #default lifetime + # From a Lion Hirth paper, also reflects average of Noothout et al 2016 + discountrate: [0.071] #, 0.086, 0.111] + # [EUR/USD] ECB: https://www.ecb.europa.eu/stats/exchange/eurofxref/html/eurofxref-graph-usd.en.html # noqa: E501 + USD2013_to_EUR2013: 0.7532 + + # Marginal and capital costs can be overwritten + # capital_cost: + # onwind: 500 + marginal_cost: + solar: 0.01 + onwind: 0.015 + offwind: 0.015 + hydro: 0. + H2: 0. + battery: 0. + + emission_prices: # only used with the option Ep (emission prices) + co2: 0. + + lines: + length_factor: 1.25 #to estimate offwind connection costs + + +industry: + St_primary_fraction: 0.9 # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6 + # 2020: 0.6 + # 2025: 0.55 + # 2030: 0.5 + # 2035: 0.45 + # 2040: 0.4 + # 2045: 0.35 + # 2050: 0.3 + DRI_fraction: 0.5 # fraction of the primary route converted to DRI + EAF + # 2020: 0 + # 2025: 0 + # 2030: 0.05 + # 2035: 0.2 + # 2040: 0.4 + # 2045: 0.7 + # 2050: 1 + H2_DRI: 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2,LHV/ton_Steel from 51kgH2/tSt in Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279 + elec_DRI: 0.322 #electricity consumption in Direct Reduced Iron (DRI) shaft, MWh/tSt HYBRIT brochure https://ssabwebsitecdn.azureedge.net/-/media/hybrit/files/hybrit_brochure.pdf + Al_primary_fraction: 0.2 # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4 + # 2020: 0.4 + # 2025: 0.375 + # 2030: 0.35 + # 2035: 0.325 + # 2040: 0.3 + # 2045: 0.25 + # 2050: 0.2 + MWh_CH4_per_tNH3_SMR: 10.8 # 2012's demand from https://ec.europa.eu/docsroom/documents/4165/attachments/1/translations/en/renditions/pdf + MWh_elec_per_tNH3_SMR: 0.7 # same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3 + MWh_H2_per_tNH3_electrolysis: 6.5 # from https://doi.org/10.1016/j.joule.2018.04.017, around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy) + MWh_elec_per_tNH3_electrolysis: 1.17 # from https://doi.org/10.1016/j.joule.2018.04.017 Table 13 (air separation and HB) + NH3_process_emissions: 24.5 # in MtCO2/a from SMR for H2 production for NH3 from UNFCCC for 2015 for EU28 + petrochemical_process_emissions: 25.5 # in MtCO2/a for petrochemical and other from UNFCCC for 2015 for EU28 + HVC_primary_fraction: 1. # fraction of today's HVC produced via primary route + HVC_mechanical_recycling_fraction: 0. # fraction of today's HVC produced via mechanical recycling + HVC_chemical_recycling_fraction: 0. # fraction of today's HVC produced via chemical recycling + HVC_production_today: 52. # MtHVC/a from DECHEMA (2017), Figure 16, page 107; includes ethylene, propylene and BTX + MWh_elec_per_tHVC_mechanical_recycling: 0.547 # from SI of https://doi.org/10.1016/j.resconrec.2020.105010, Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756. + MWh_elec_per_tHVC_chemical_recycling: 6.9 # Material Economics (2019), page 125; based on pyrolysis and electric steam cracking + chlorine_production_today: 9.58 # MtCl/a from DECHEMA (2017), Table 7, page 43 + MWh_elec_per_tCl: 3.6 # DECHEMA (2017), Table 6, page 43 + MWh_H2_per_tCl: -0.9372 # DECHEMA (2017), page 43; negative since hydrogen produced in chloralkali process + methanol_production_today: 1.5 # MtMeOH/a from DECHEMA (2017), page 62 + MWh_elec_per_tMeOH: 0.167 # DECHEMA (2017), Table 14, page 65 + MWh_CH4_per_tMeOH: 10.25 # DECHEMA (2017), Table 14, page 65 + hotmaps_locate_missing: false + reference_year: 2015 + +solar_thermal: + clearsky_model: simple + orientation: + slope: 45. + azimuth: 180. + +existing_capacities: + grouping_years_power: [1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030] + grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2019] # these should not extend 2020 + threshold_capacity: 10 + default_heating_lifetime: 20 + conventional_carriers: + - lignite + - coal + - oil + - uranium + +sector: + gas: + spatial_gas: true # ALWAYS TRUE + 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'] + hydrogen: + network: true + network_limit: 25000 #GWkm + network_routes: greenfield # "gas or "greenfield". If "gas" -> the network data are fetched from ["sector"]["gas"]["network_data"]. If "greenfield" -> the network follows the topology of electrical transmission lines + gas_network_repurposing: true # If true -> ["sector"]["gas"]["network"] is automatically false + underground_storage: false + hydrogen_colors: false + set_color_shares: false + blue_share: 0.40 + pink_share: 0.05 + coal: + 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 + international_bunkers: false #Whether or not to count the emissions of international aviation and navigation + + oil: + spatial_oil: true + + district_heating: + potential: 0.3 #maximum fraction of urban demand which can be supplied by district heating + #increase of today's district heating demand to potential maximum district heating share + #progress = 0 means today's district heating share, progress=-1 means maxumzm fraction of urban demand is supplied by district heating + progress: 1 + #2020: 0.0 + #2030: 0.3 + #2040: 0.6 + #2050: 1.0 + district_heating_loss: 0.15 + reduce_space_heat_exogenously: true # reduces space heat demand by a given factor (applied before losses in DH) + # this can represent e.g. building renovation, building demolition, or if + # the factor is negative: increasing floor area, increased thermal comfort, population growth + reduce_space_heat_exogenously_factor: 0.29 # per unit reduction in space heat demand + # the default factors are determined by the LTS scenario from http://tool.european-calculator.eu/app/buildings/building-types-area/?levers=1ddd4444421213bdbbbddd44444ffffff11f411111221111211l212221 + # 2020: 0.10 # this results in a space heat demand reduction of 10% + # 2025: 0.09 # first heat demand increases compared to 2020 because of larger floor area per capita + # 2030: 0.09 + # 2035: 0.11 + # 2040: 0.16 + # 2045: 0.21 + # 2050: 0.29 + tes: true + tes_tau: # 180 day time constant for centralised, 3 day for decentralised + decentral: 3 + central: 180 + boilers: true + oil_boilers: false + chp: true + micro_chp: false + solar_thermal: true + heat_pump_sink_T: 55 #Celsius, based on DTU / large area radiators; used un build_cop_profiles.py + time_dep_hp_cop: true #time dependent heat pump coefficient of performance + solar_cf_correction: 0.788457 # = >>>1/1.2683 + bev_plug_to_wheel_efficiency: 0.2 #kWh/km from EPA https://www.fueleconomy.gov/feg/ for Tesla Model S + bev_charge_efficiency: 0.9 #BEV (dis-)charging efficiency + transport_heating_deadband_upper: 20. + transport_heating_deadband_lower: 15. + ICE_lower_degree_factor: 0.375 #in per cent increase in fuel consumption per degree above deadband + ICE_upper_degree_factor: 1.6 + EV_lower_degree_factor: 0.98 + EV_upper_degree_factor: 0.63 + bev_avail_max: 0.95 + bev_avail_mean: 0.8 + bev_dsm_restriction_value: 0.75 #Set to 0 for no restriction on BEV DSM + bev_dsm_restriction_time: 7 #Time at which SOC of BEV has to be dsm_restriction_value + v2g: true #allows feed-in to grid from EV battery + bev_dsm: true #turns on EV battery + bev_energy: 0.05 #average battery size in MWh + bev_availability: 0.5 #How many cars do smart charging + transport_fuel_cell_efficiency: 1 + transport_internal_combustion_efficiency: 1 + industry_util_factor: 0.7 + + biomass_transport: true # biomass transport between nodes + biomass_transport_default_cost: 0.1 #EUR/km/MWh + solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) + biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True + + efficiency_heat_oil_to_elec: 0.9 + efficiency_heat_biomass_to_elec: 0.9 + efficiency_heat_gas_to_elec: 0.9 + + dynamic_transport: + enable: false # If "True", then the BEV and FCEV shares are obtained depening on the "Co2L"-wildcard (e.g. "Co2L0.70: 0.10"). If "False", then the shares are obtained depending on the "demand" wildcard and "planning_horizons" wildcard as listed below (e.g. "DF_2050: 0.08") + land_transport_electric_share: + Co2L2.0: 0.00 + Co2L1.0: 0.01 + Co2L0.90: 0.03 + Co2L0.80: 0.06 + Co2L0.70: 0.10 + Co2L0.60: 0.17 + Co2L0.50: 0.27 + Co2L0.40: 0.40 + Co2L0.30: 0.55 + Co2L0.20: 0.69 + Co2L0.10: 0.80 + Co2L0.00: 0.88 + land_transport_fuel_cell_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 + bio_transport_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 + + land_transport_fuel_cell_share: # 1 means all FCEVs HERE + BU_2030: 0.00 + BI_2030: 0.00 + GH_2030: 0.20 + DE_2030: 0.00 + AP_2030: 0.004 + NZ_2030: 0.02 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.06 + NZ_2050: 0.28 + DF_2050: 0.08 + BI_2035: 0.001 + GH_2035: 0.039 + DE_2035: 0.00 + BI_2040: 0.002 + GH_2040: 0.099 + DE_2040: 0.00 + BI_2045: 0.010 + GH_2045: 0.197 + DE_2045: 0.00 + BI_2050: 0.039 + GH_2050: 0.336 + DE_2050: 0.00 + + land_transport_electric_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.014 + GH_2035: 0.031 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.50 + GH_2035: 0.33 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + + co2_network: true + co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe + co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 + hydrogen_underground_storage: false + shipping_hydrogen_liquefaction: false + shipping_average_efficiency: 0.575 #For conversion of fuel oil to propulsion in 2011 + + shipping_hydrogen_share: #1.0 + BU_2030: 0.00 + BI_2030: 0.00 + BI_2035: 0.014 + GH_2030: 0.00 + GH_2035: 0.014 + DE_2030: 0.00 + DE_2035: 0.014 + AP_2030: 0.00 + NZ_2030: 0.10 + DF_2030: 0.05 + AB_2030: 0.05 + BU_2050: 0.00 + BI_2050: 0.24 + GH_2050: 0.248 + DE_2050: 0.254 + AP_2050: 0.25 + NZ_2050: 0.36 + DF_2050: 0.12 + + gadm_level: 1 + marginal_cost_storage: 0 + methanation: true + helmeth: true + dac: true + SMR: true + SMR CC: true + cc_fraction: 0.9 + cc: true + space_heat_share: 0.6 # the share of space heating from all heating. Remainder goes to water heating. + airport_sizing_factor: 3 + + min_part_load_fischer_tropsch: 0.9 + + conventional_generation: # generator : carrier + OCGT: gas + #Gen_Test: oil # Just for testing purposes + +# snapshots are originally set in PyPSA-Earth/config.yaml but used again by PyPSA-Earth-Sec +snapshots: + # arguments to pd.date_range + start: "2013-01-01" + end: "2014-01-01" + inclusive: "left" # end is not inclusive + +# atlite: +# cutout: ./cutouts/africa-2013-era5.nc + +build_osm_network: # TODO: To Remove this once we merge pypsa-earth and pypsa-earth-sec + force_ac: true # When true, it forces all components (lines and substation) to be AC-only. To be used if DC assets create problem. + +solving: + #tmpdir: "path/to/tmp" + options: + formulation: kirchhoff + clip_p_max_pu: 1.e-2 + load_shedding: false + noisy_costs: true + skip_iterations: true + track_iterations: false + min_iterations: 4 + max_iterations: 6 + + solver: + name: gurobi + threads: 25 + method: 2 # barrier + crossover: 0 + BarConvTol: 1.e-6 + Seed: 123 + AggFill: 0 + PreDual: 0 + GURO_PAR_BARDENSETHRESH: 200 + #FeasibilityTol: 1.e-6 + + mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2 + +plotting: + map: + boundaries: [-11, 30, 34, 71] + color_geomap: + ocean: white + land: whitesmoke + costs_max: 10 + costs_threshold: 0.2 + energy_max: 20000 + energy_min: -20000 + energy_threshold: 15 + vre_techs: + - onwind + - offwind-ac + - offwind-dc + - solar + - ror + renewable_storage_techs: + - PHS + - hydro + conv_techs: + - OCGT + - CCGT + - Nuclear + - Coal + storage_techs: + - hydro+PHS + - battery + - H2 + load_carriers: + - AC load + AC_carriers: + - AC line + - AC transformer + link_carriers: + - DC line + - Converter AC-DC + heat_links: + - heat pump + - resistive heater + - CHP heat + - CHP electric + - gas boiler + - central heat pump + - central resistive heater + - central CHP heat + - central CHP electric + - central gas boiler + heat_generators: + - gas boiler + - central gas boiler + - solar thermal collector + - central solar thermal collector + tech_colors: + SMR CC: "darkblue" + gas for industry CC: "brown" + process emissions CC: "gray" + CO2 pipeline: "gray" + onwind: "dodgerblue" + onwind2: "dodgerblue" + onwind3: "dodgerblue" + onwind4: "dodgerblue" + onshore wind: "#235ebc" + offwind: "#6895dd" + offshore wind: "#6895dd" + offwind-ac: "c" + offshore wind (AC): "#6895dd" + offwind-dc: "#74c6f2" + offshore wind (DC): "#74c6f2" + wave: '#004444' + hydro: '#3B5323' + hydro reservoir: '#3B5323' + ror: '#78AB46' + run of river: '#78AB46' + hydroelectricity: 'blue' + solar: "orange" + solar PV: "#f9d002" + solar thermal: coral + solar rooftop: '#ffef60' + OCGT: wheat + OCGT marginal: sandybrown + OCGT-heat: '#ee8340' + gas boiler: '#ee8340' + gas boilers: '#ee8340' + gas boiler marginal: '#ee8340' + gas-to-power/heat: 'brown' + gas: brown + natural gas: brown + SMR: '#4F4F2F' + oil: '#B5A642' + oil EOP: '#B5A642' + oil boiler: '#B5A677' + lines: k + transmission lines: k + H2: m + H2 electrolysis: m + H2 liquefaction: m + hydrogen storage: m + battery: slategray + battery storage: slategray + home battery: '#614700' + home battery storage: '#614700' + Nuclear: r + Nuclear marginal: r + nuclear: r + uranium: r + Coal: k + coal: k + industry coal emissions: '#444444' + Coal marginal: k + Lignite: grey + lignite: grey + Lignite marginal: grey + CCGT: '#ee8340' + CCGT marginal: '#ee8340' + heat pumps: '#76EE00' + heat pump: '#76EE00' + air heat pump: '#76EE00' + ground heat pump: '#40AA00' + power-to-heat: 'red' + resistive heater: pink + Sabatier: '#FF1493' + methanation: '#FF1493' + power-to-gas: 'purple' + power-to-liquid: 'darkgreen' + helmeth: '#7D0552' + DAC: 'deeppink' + co2 stored: '#123456' + CO2 sequestration: '#123456' + CC: k + co2: '#123456' + co2 vent: '#654321' + agriculture heat: '#D07A7A' + agriculture oil: '#1e1e1e' + agriculture machinery oil: '#1e1e1e' + agriculture machinery oil emissions: '#111111' + agriculture electricity: '#222222' + solid biomass for industry co2 from atmosphere: '#654321' + solid biomass for industry co2 to stored: '#654321' + solid biomass for industry CC: '#654321' + gas for industry co2 to atmosphere: '#654321' + gas emissions: '#654321' + gas for industry co2 to stored: '#654321' + Fischer-Tropsch: '#44DD33' + kerosene for aviation: '#44BB11' + naphtha for industry: '#44FF55' + land transport oil: '#44DD33' + rail transport oil: '#44DD33' + water tanks: '#BBBBBB' + hot water storage: '#BBBBBB' + hot water charging: '#BBBBBB' + hot water discharging: '#999999' + # CO2 pipeline: '#999999' + CHP: r + CHP heat: r + CHP electric: r + PHS: g + Ambient: k + Electric load: b + Heat load: r + heat: darkred + rural heat: '#880000' + central heat: '#b22222' + decentral heat: '#800000' + low-temperature heat for industry: '#991111' + process heat: '#FF3333' + heat demand: darkred + electric demand: k + Li ion: grey + district heating: '#CC4E5C' + retrofitting: purple + building retrofitting: purple + BEV charger: grey + V2G: grey + land transport EV: grey + electricity: k + gas for industry: '#333333' + solid biomass for industry: '#555555' + industry electricity: '#222222' + industry new electricity: '#222222' + process emissions to stored: '#444444' + process emissions to atmosphere: '#888888' + process emissions: '#222222' + oil emissions: '#666666' + industry oil emissions: '#666666' + land transport oil emissions: '#666666' + land transport fuel cell: '#AAAAAA' + biogas: '#800000' + solid biomass: '#DAA520' + today: '#D2691E' + shipping: '#6495ED' + shipping oil: "#6495ED" + shipping oil emissions: "#6495ED" + electricity distribution grid: 'y' + solid biomass transport: green + H2 for industry: "#222222" + H2 for shipping: "#6495ED" + biomass EOP: "green" + biomass: "green" + high-temp electrolysis: "magenta" + oil pipeline: "grey" + agriculture biomass: "green" diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index be4f03a7..7e48cab8 100644 --- a/config.bright_GH.yaml +++ b/config.bright_GH.yaml @@ -6,7 +6,7 @@ summary_dir: results/ costs_dir: data/ #TODO change to the equivalent of technology data run: - name: TEST_Octoober9th_GH_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario_correctPorts + name: 20241021_biofuels name_subworkflow: "" # scenario name of the pypsa-earth subworkflow shared_cutouts: true # set to true to share the default cutout(s) across runs # Note: value false requires build_cutout to be enabled @@ -264,6 +264,7 @@ sector: biomass_transport_default_cost: 0.1 #EUR/km/MWh solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True efficiency_heat_oil_to_elec: 0.9 efficiency_heat_biomass_to_elec: 0.9 @@ -297,6 +298,19 @@ sector: Co2L0.20: 0.01 Co2L0.10: 0.01 Co2L0.00: 0.01 + bio_transport_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 land_transport_fuel_cell_share: # 1 means all FCEVs HERE BU_2030: 0.00 @@ -350,6 +364,32 @@ sector: GH_2050: 0.320 DE_2050: 0.593 + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.50 + GH_2035: 0.33 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index cfd1f0d0..ee4a5768 100644 --- a/config.bright_GH_ref.yaml +++ b/config.bright_GH_ref.yaml @@ -6,7 +6,7 @@ summary_dir: results/ costs_dir: data/ #TODO change to the equivalent of technology data run: - name: TEST_Octoober9th_GH_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario_correctPorts + name: 20241021_biofuels name_subworkflow: "" # scenario name of the pypsa-earth subworkflow shared_cutouts: true # set to true to share the default cutout(s) across runs # Note: value false requires build_cutout to be enabled @@ -264,6 +264,7 @@ sector: biomass_transport_default_cost: 0.1 #EUR/km/MWh solid_biomass_potential: 3604 # 4805 TWh/a for all bioenergy sources according to Welfle (2017), 75% solid, 0.28% gaseous according to IEA (2021) biogas_potential: 13.5 # TWh/a, Potential of whole modelled area + biomass_to_liquid: True efficiency_heat_oil_to_elec: 0.9 efficiency_heat_biomass_to_elec: 0.9 @@ -297,6 +298,19 @@ sector: Co2L0.20: 0.01 Co2L0.10: 0.01 Co2L0.00: 0.01 + bio_transport_share: + Co2L2.0: 0.01 + Co2L1.0: 0.01 + Co2L0.90: 0.01 + Co2L0.80: 0.01 + Co2L0.70: 0.01 + Co2L0.60: 0.01 + Co2L0.50: 0.01 + Co2L0.40: 0.01 + Co2L0.30: 0.01 + Co2L0.20: 0.01 + Co2L0.10: 0.01 + Co2L0.00: 0.01 land_transport_fuel_cell_share: # 1 means all FCEVs HERE BU_2030: 0.00 @@ -350,6 +364,32 @@ sector: GH_2050: 0.320 DE_2050: 0.593 + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BU_2030: 0.00 + BI_2030: 0.002 + GH_2030: 0.002 + DE_2030: 0.005 + AP_2030: 0.075 + NZ_2030: 0.13 + DF_2030: 0.01 + AB_2030: 0.01 + BU_2050: 0.00 + AP_2050: 0.42 + NZ_2050: 0.68 + DF_2050: 0.011 + BI_2035: 0.50 + GH_2035: 0.33 + DE_2035: 0.053 + BI_2040: 0.044 + GH_2040: 0.092 + DE_2040: 0.152 + BI_2045: 0.066 + GH_2045: 0.197 + DE_2045: 0.332 + BI_2050: 0.090 + GH_2050: 0.320 + DE_2050: 0.593 + co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 60120612..fb4f263a 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -815,6 +815,36 @@ def add_biomass(n, costs): p_nom_extendable=True, ) + # Add BtL for biofuel representation in transport sector + if options["biomass_to_liquid"]: + bio_transport_share = get( + options["bio_transport_share"], + demand_sc + "_" + str(investment_year), + ) + ice_efficiency = options["transport_internal_combustion_efficiency"] + p_set = bio_transport_share / ice_efficiency * transport[spatial.nodes] + p_nom = p_set.max() + p_minmax_pu = p_set / p_nom + + n.add( + "Link", + spatial.biomass.nodes, + suffix=" biomass to liquid", + bus0=spatial.biomass.nodes, + bus1=spatial.oil.nodes, + bus2="co2 atmosphere", + carrier="biomass to liquid", + lifetime=costs.at["BtL", "lifetime"], + efficiency=costs.at["BtL", "efficiency"], + efficiency2=-costs.at["solid biomass", "CO2 intensity"] + + costs.at["BtL", "CO2 stored"], + p_nom_extendable=True, + p_min_pu=p_minmax_pu, + p_max_pu=p_minmax_pu, + capital_cost=costs.at["BtL", "fixed"] * costs.at["BtL", "efficiency"], + marginal_cost=costs.at["BtL", "VOM"] * costs.at["BtL", "efficiency"], + ) + if options["biomass_transport"]: # TODO add biomass transport costs transport_costs = pd.read_csv( @@ -1797,10 +1827,6 @@ def add_land_transport(n, costs): options["land_transport_electric_share"], demand_sc + "_" + str(investment_year), ) - bio_transport_share = get( - options["bio_transport_share"], - demand_sc + "_" + str(investment_year), - ) elif options["dynamic_transport"]["enable"] == True: fuel_cell_share = options["dynamic_transport"][ @@ -1809,15 +1835,11 @@ def add_land_transport(n, costs): electric_share = options["dynamic_transport"]["land_transport_electric_share"][ snakemake.wildcards.opts ] - bio_transport_share = options["dynamic_transport"]["bio_transport_share"][ - snakemake.wildcards.opts - ] - ice_share = 1 - fuel_cell_share - electric_share - bio_transport_share + ice_share = 1 - fuel_cell_share - electric_share logger.info("FCEV share: {}".format(fuel_cell_share)) logger.info("EV share: {}".format(electric_share)) - logger.info("BCEV share: {}".format(bio_transport_share)) logger.info("ICEV share: {}".format(ice_share)) assert ice_share >= 0, "Error, more FCEV and EV share than 1." @@ -1928,15 +1950,6 @@ def add_land_transport(n, costs): * transport[nodes], ) - if bio_transport_share > 0: - n.madd( - "Load", - nodes, - suffix=" land transport biomass", - bus=nodes + " biomass", - carrier="land transport biomass", - p_set=bio_transport_share * transport[nodes], - ) if ice_share > 0: if "oil" not in n.buses.carrier.unique(): n.madd( @@ -2760,9 +2773,9 @@ def add_rail_transport(n, costs): ll="v1.0", opts="Co2L", planning_horizons="2035", - sopts="8H", + sopts="365H", discountrate="0.071", - demand="GH", + demand="BI", ) # Load population layout From 28d93cedc490e4d354fdd2c345942917bd3cfa8b Mon Sep 17 00:00:00 2001 From: cpschau Date: Mon, 21 Oct 2024 12:10:46 +0200 Subject: [PATCH 2/6] revert bio_transport_share --- config.bright_BI.yaml | 27 +++------------------------ config.bright_BI_ref.yaml | 27 +++------------------------ config.bright_DE.yaml | 27 +++------------------------ config.bright_DE_ref.yaml | 27 +++------------------------ config.bright_GH.yaml | 27 +++------------------------ config.bright_GH_ref.yaml | 27 +++------------------------ 6 files changed, 18 insertions(+), 144 deletions(-) diff --git a/config.bright_BI.yaml b/config.bright_BI.yaml index 1e974bec..f0d43fc7 100644 --- a/config.bright_BI.yaml +++ b/config.bright_BI.yaml @@ -363,30 +363,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe diff --git a/config.bright_BI_ref.yaml b/config.bright_BI_ref.yaml index 5daeb8a4..0d333ba0 100644 --- a/config.bright_BI_ref.yaml +++ b/config.bright_BI_ref.yaml @@ -363,30 +363,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index 39c46022..0da4916d 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -363,30 +363,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml index 5e001c56..3d472b6b 100644 --- a/config.bright_DE_ref.yaml +++ b/config.bright_DE_ref.yaml @@ -363,30 +363,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index 7e48cab8..ca79c981 100644 --- a/config.bright_GH.yaml +++ b/config.bright_GH.yaml @@ -365,30 +365,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index ee4a5768..789094c6 100644 --- a/config.bright_GH_ref.yaml +++ b/config.bright_GH_ref.yaml @@ -365,30 +365,9 @@ sector: DE_2050: 0.593 bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE - BU_2030: 0.00 - BI_2030: 0.002 - GH_2030: 0.002 - DE_2030: 0.005 - AP_2030: 0.075 - NZ_2030: 0.13 - DF_2030: 0.01 - AB_2030: 0.01 - BU_2050: 0.00 - AP_2050: 0.42 - NZ_2050: 0.68 - DF_2050: 0.011 - BI_2035: 0.50 - GH_2035: 0.33 - DE_2035: 0.053 - BI_2040: 0.044 - GH_2040: 0.092 - DE_2040: 0.152 - BI_2045: 0.066 - GH_2045: 0.197 - DE_2045: 0.332 - BI_2050: 0.090 - GH_2050: 0.320 - DE_2050: 0.593 + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 co2_network: true co2_sequestration_potential: 70 #MtCO2/a sequestration potential for Europe From a485c9a1cece006e685fecbf7797fe506956a245 Mon Sep 17 00:00:00 2001 From: cpschau Date: Mon, 21 Oct 2024 12:12:57 +0200 Subject: [PATCH 3/6] set BtL non-extendable --- scripts/prepare_sector_network.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index fb4f263a..cae93c7a 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -838,7 +838,8 @@ def add_biomass(n, costs): efficiency=costs.at["BtL", "efficiency"], efficiency2=-costs.at["solid biomass", "CO2 intensity"] + costs.at["BtL", "CO2 stored"], - p_nom_extendable=True, + p_nom=p_nom, + p_nom_extendable=False, p_min_pu=p_minmax_pu, p_max_pu=p_minmax_pu, capital_cost=costs.at["BtL", "fixed"] * costs.at["BtL", "efficiency"], From 80b7568f7cc747cb4c790688145b9a4690e1562a Mon Sep 17 00:00:00 2001 From: cpschau Date: Mon, 21 Oct 2024 14:40:15 +0200 Subject: [PATCH 4/6] madd instead of add; remove biomass_to_oil_mobility; add tech color --- config.bright_BI.yaml | 2 ++ config.bright_DE.yaml | 1 + config.bright_DE_ref.yaml | 1 + config.bright_GH.yaml | 1 + config.bright_GH_ref.yaml | 1 + scripts/prepare_sector_network.py | 6 +++--- 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/config.bright_BI.yaml b/config.bright_BI.yaml index f0d43fc7..1f06c78c 100644 --- a/config.bright_BI.yaml +++ b/config.bright_BI.yaml @@ -653,3 +653,5 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + biomass to liquid: "green" + diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index 0da4916d..22c1ced1 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -653,3 +653,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + biomass to liquid: "green" diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml index 3d472b6b..589f4f09 100644 --- a/config.bright_DE_ref.yaml +++ b/config.bright_DE_ref.yaml @@ -653,3 +653,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + biomass to liquid: "green" diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index ca79c981..1461a764 100644 --- a/config.bright_GH.yaml +++ b/config.bright_GH.yaml @@ -653,3 +653,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + biomass to liquid: "green" diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index 789094c6..4d6c8e1c 100644 --- a/config.bright_GH_ref.yaml +++ b/config.bright_GH_ref.yaml @@ -653,3 +653,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + biomass to liquid: "green" diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index cae93c7a..5eb583e2 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -826,9 +826,9 @@ def add_biomass(n, costs): p_nom = p_set.max() p_minmax_pu = p_set / p_nom - n.add( + n.madd( "Link", - spatial.biomass.nodes, + p_nom.index, suffix=" biomass to liquid", bus0=spatial.biomass.nodes, bus1=spatial.oil.nodes, @@ -1973,7 +1973,7 @@ def add_land_transport(n, costs): * transport[spatial.nodes].sum().sum() / 8760 * costs.at["oil", "CO2 intensity"] - ) * snakemake.config["custom_data"]["biomass_to_oil_mobility"] + ) n.add( "Load", From f609b52455e38c37f61a8d4d8456c7c9505da03c Mon Sep 17 00:00:00 2001 From: cpschau Date: Mon, 21 Oct 2024 14:50:13 +0200 Subject: [PATCH 5/6] adjust for BtL efficiency --- scripts/prepare_sector_network.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 5eb583e2..665cd7e6 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -822,7 +822,12 @@ def add_biomass(n, costs): demand_sc + "_" + str(investment_year), ) ice_efficiency = options["transport_internal_combustion_efficiency"] - p_set = bio_transport_share / ice_efficiency * transport[spatial.nodes] + p_set = ( + bio_transport_share + / costs.at["BtL", "efficiency"] + / ice_efficiency + * transport[spatial.nodes] + ) p_nom = p_set.max() p_minmax_pu = p_set / p_nom From bc6a2ca67fdfc30b9b78fe35f58c94d73199bd44 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:57:17 +0000 Subject: [PATCH 6/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- config.bright_DE.yaml | 1 - config.bright_DE_ref.yaml | 1 - config.bright_GH.yaml | 1 - config.bright_GH_ref.yaml | 1 - 4 files changed, 4 deletions(-) diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index e7a26fc6..c1b9e925 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -640,4 +640,3 @@ plotting: oil pipeline: "grey" agriculture biomass: "green" biomass to liquid: "green" - diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml index 63fc6a1e..d0257a5e 100644 --- a/config.bright_DE_ref.yaml +++ b/config.bright_DE_ref.yaml @@ -658,4 +658,3 @@ plotting: oil pipeline: "grey" agriculture biomass: "green" biomass to liquid: "green" - diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index 202d2175..aa3f62ea 100644 --- a/config.bright_GH.yaml +++ b/config.bright_GH.yaml @@ -643,4 +643,3 @@ plotting: oil pipeline: "grey" agriculture biomass: "green" biomass to liquid: "green" - diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index 6f0efa8f..c854ecf8 100644 --- a/config.bright_GH_ref.yaml +++ b/config.bright_GH_ref.yaml @@ -642,4 +642,3 @@ plotting: oil pipeline: "grey" agriculture biomass: "green" biomass to liquid: "green" -