From 96e8c1b19dedff1a517ff8e3d56a0e737d7b4852 Mon Sep 17 00:00:00 2001 From: hazemakhalek Date: Fri, 18 Oct 2024 17:21:54 +0200 Subject: [PATCH 1/5] update configs and minor bug in prepare_sector_network --- config.bright_BI.yaml | 106 +++-- config.bright_BI_ref.yaml | 123 ++---- config.bright_DE.yaml | 120 +++--- config.bright_DE_ref.yaml | 624 ++++++++++++++++++++++++++++++ config.bright_GH.yaml | 107 +++-- config.bright_GH_ref.yaml | 103 +++-- config.default.yaml | 21 + scripts/prepare_sector_network.py | 17 +- 8 files changed, 895 insertions(+), 326 deletions(-) create mode 100644 config.bright_DE_ref.yaml diff --git a/config.bright_BI.yaml b/config.bright_BI.yaml index 525b3c06..cd75d5c4 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: U_BI_AdaptedScenario 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/U_BI_AdaptedScenario/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: @@ -64,7 +64,7 @@ fossil_reserves: export: - h2export: [200] #[10,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh + h2export: [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" @@ -298,56 +298,46 @@ sector: 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 + BI_2030: 0.006 + GH_2030: 0.036 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 + BI_2035: 0.023 + GH_2035: 0.133 DE_2035: 0.00 - BI_2040: 0.002 - GH_2040: 0.099 + BI_2040: 0.055 + GH_2040: 0.266 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 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 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 + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 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 + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + 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 @@ -357,24 +347,21 @@ sector: 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_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 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 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 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 @@ -635,3 +622,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + land transport biomass: "green" diff --git a/config.bright_BI_ref.yaml b/config.bright_BI_ref.yaml index ff623571..b4e581e4 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: U_BI_AdaptedScenario 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 @@ -311,82 +311,45 @@ sector: 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 + BI_2030: 0.006 + GH_2030: 0.036 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 + BI_2035: 0.023 + GH_2035: 0.133 DE_2035: 0.00 - BI_2040: 0.002 - GH_2040: 0.099 + BI_2040: 0.055 + GH_2040: 0.266 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 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 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 + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 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 + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 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 @@ -396,24 +359,21 @@ sector: 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_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 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 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 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 @@ -674,3 +634,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + land transport biomass: "green" diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index e91a55c5..a8f1cb3d 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -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/092524_test/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,11 @@ fossil_reserves: export: +<<<<<<< Updated upstream h2export: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Yearly export demand in TWh +======= + h2export: [10] #,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh +>>>>>>> Stashed changes 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" @@ -298,80 +302,69 @@ sector: 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 + BI_2030: 0.006 + GH_2030: 0.036 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 + BI_2035: 0.023 + GH_2035: 0.133 DE_2035: 0.00 - BI_2040: 0.002 - GH_2040: 0.099 + BI_2040: 0.055 + GH_2040: 0.266 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 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 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 + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 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 - - co2_network: false - co2_sequestration_potential: 0 #MtCO2/a sequestration potential for Europe + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + 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 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 - GH_2030: 0.00 - DE_2030: 0.00 - AP_2030: 0.00 - NZ_2030: 0.10 - DF_2030: 0.05 - AB_2030: 0.05 - BU_2050: 0.00 - BI_2050: 0.24 + BI_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 + BI_2035: 0.014 + GH_2035: 0.014 + DE_2035: 0.014 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 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 @@ -630,3 +623,6 @@ plotting: biomass EOP: "green" biomass: "green" high-temp electrolysis: "magenta" + oil pipeline: "grey" + agriculture biomass: "green" + land transport biomass: "green" \ No newline at end of file diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml new file mode 100644 index 00000000..d3734b6d --- /dev/null +++ b/config.bright_DE_ref.yaml @@ -0,0 +1,624 @@ +logging_level: INFO +tutorial: false + +results_dir: results/ +summary_dir: results/ +costs_dir: data/ #TODO change to the equivalent of technology data + +run: + name: 092524_test + 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 + + 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 + + land_transport_fuel_cell_share: # 1 means all FCEVs HERE + BI_2030: 0.006 + GH_2030: 0.036 + DE_2030: 0.00 + AB_2030: 0.01 + BI_2035: 0.023 + GH_2035: 0.133 + DE_2035: 0.00 + BI_2040: 0.055 + GH_2040: 0.266 + DE_2040: 0.00 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 + + land_transport_electric_share: # 1 means all EVs # This leads to problems when non-zero HERE + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 + AB_2030: 0.01 + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + 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 + 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 + BI_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 + BI_2035: 0.014 + GH_2035: 0.014 + DE_2035: 0.014 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 + GH_2050: 0.248 + DE_2050: 0.254 + + gadm_level: 1 + marginal_cost_storage: 0 + methanation: true + helmeth: true + dac: false + 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" + land transport biomass: "green" \ No newline at end of file diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index be4f03a7..99fac49f 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: U_GH_AdaptedScenario 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_GH_20kTWkmH2net_oilpipeline_dac_adaptedemissionICEMORE_co2seq70_3H_newscenario/postnetworks/elec_s_11_ec_lv1.0_Co2L_3H_2035_0.071_GH_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/U_GH_AdaptedScenario/postnetworks/elec_s_11_ec_lv1.0_Co2L_3H_2035_0.071_GH_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: [200] #[10,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh + h2export: [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" @@ -299,56 +299,45 @@ sector: 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 + BI_2030: 0.006 + GH_2030: 0.036 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 + BI_2035: 0.023 + GH_2035: 0.133 DE_2035: 0.00 - BI_2040: 0.002 - GH_2040: 0.099 + BI_2040: 0.055 + GH_2040: 0.266 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 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 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 + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 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 + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + 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 @@ -358,22 +347,21 @@ sector: 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 - GH_2030: 0.00 - DE_2030: 0.00 + BI_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 + BI_2035: 0.014 GH_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 + DE_2035: 0.014 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 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 @@ -634,3 +622,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + land transport biomass: "green" \ No newline at end of file diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index cfd1f0d0..0eb0a495 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: U_GH_AdaptedScenario 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 @@ -299,56 +299,45 @@ sector: 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 + BI_2030: 0.006 + GH_2030: 0.036 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 + BI_2035: 0.023 + GH_2035: 0.133 DE_2035: 0.00 - BI_2040: 0.002 - GH_2040: 0.099 + BI_2040: 0.055 + GH_2040: 0.266 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 + BI_2045: 0.102 + GH_2045: 0.410 + DE_2045: 0.021 + BI_2050: 0.188 + GH_2050: 0.584 + DE_2050: 0.056 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 + BI_2030: 0.022 + GH_2030: 0.018 + DE_2030: 0.038 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 + BI_2035: 0.065 + GH_2035: 0.054 + DE_2035: 0.133 + BI_2040: 0.112 + GH_2040: 0.090 + DE_2040: 0.264 + BI_2045: 0.183 + GH_2045: 0.164 + DE_2045: 0.457 + BI_2050: 0.287 + GH_2050: 0.263 + DE_2050: 0.742 + + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + 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 @@ -358,22 +347,21 @@ sector: 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 - GH_2030: 0.00 - DE_2030: 0.00 + BI_2030: 0.0 + GH_2030: 0.0 + DE_2030: 0.0 + BI_2035: 0.014 GH_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 + DE_2035: 0.014 + BI_2040: 0.064 + GH_2040: 0.064 + DE_2040: 0.065 + BI_2045: 0.128 + GH_2045: 0.130 + DE_2045: 0.131 + BI_2050: 0.240 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 @@ -634,3 +622,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" + land transport biomass: "green" \ No newline at end of file diff --git a/config.default.yaml b/config.default.yaml index be87a8c5..f6f64caf 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -253,6 +253,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 @@ -276,6 +289,11 @@ sector: NZ_2050: 0.68 DF_2050: 0.011 + bio_transport_share: # 1 means all EVs # This leads to problems when non-zero HERE + BI_2035: 0.356 + GH_2035: 0.237 + DE_2035: 0.253 + co2_network: true co2_sequestration_potential: 200 #MtCO2/a sequestration potential for Europe co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2 @@ -543,3 +561,6 @@ plotting: biomass EOP: "green" biomass: "green" high-temp electrolysis: "magenta" + oil pipeline: "grey" + agriculture biomass: "green" + land transport biomass: "green" \ No newline at end of file diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 60120612..79d3fbc4 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1929,14 +1929,15 @@ def add_land_transport(n, costs): ) 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], - ) + n.madd( + "Load", + nodes, + suffix=" land transport biomass", + bus=nodes + " solid 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( From b4a96de2591cacc7139e87de68c572ed2f4d4f48 Mon Sep 17 00:00:00 2001 From: Hazem <87850910+hazemakhalek@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:23:25 +0200 Subject: [PATCH 2/5] Update config.bright_DE.yaml --- config.bright_DE.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml index a8f1cb3d..687de628 100644 --- a/config.bright_DE.yaml +++ b/config.bright_DE.yaml @@ -64,11 +64,7 @@ fossil_reserves: export: -<<<<<<< Updated upstream h2export: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # Yearly export demand in TWh -======= - h2export: [10] #,20,30,40,50,60,70,80,90,100] # Yearly export demand in TWh ->>>>>>> Stashed changes 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" @@ -625,4 +621,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" - land transport biomass: "green" \ No newline at end of file + land transport biomass: "green" From 4181efc1700b500927fa7b2876cb6689f1dc6601 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:27:51 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- config.bright_DE_ref.yaml | 2 +- config.bright_GH.yaml | 2 +- config.bright_GH_ref.yaml | 2 +- config.default.yaml | 2 +- scripts/prepare_sector_network.py | 17 ++++++++--------- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/config.bright_DE_ref.yaml b/config.bright_DE_ref.yaml index d3734b6d..416487ca 100644 --- a/config.bright_DE_ref.yaml +++ b/config.bright_DE_ref.yaml @@ -621,4 +621,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" - land transport biomass: "green" \ No newline at end of file + land transport biomass: "green" diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml index 99fac49f..b01fc354 100644 --- a/config.bright_GH.yaml +++ b/config.bright_GH.yaml @@ -622,4 +622,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" - land transport biomass: "green" \ No newline at end of file + land transport biomass: "green" diff --git a/config.bright_GH_ref.yaml b/config.bright_GH_ref.yaml index 0eb0a495..2604a147 100644 --- a/config.bright_GH_ref.yaml +++ b/config.bright_GH_ref.yaml @@ -622,4 +622,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" - land transport biomass: "green" \ No newline at end of file + land transport biomass: "green" diff --git a/config.default.yaml b/config.default.yaml index f6f64caf..1a80f946 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -563,4 +563,4 @@ plotting: high-temp electrolysis: "magenta" oil pipeline: "grey" agriculture biomass: "green" - land transport biomass: "green" \ No newline at end of file + land transport biomass: "green" diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 79d3fbc4..3fab7d15 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1929,15 +1929,14 @@ def add_land_transport(n, costs): ) if bio_transport_share > 0: - n.madd( - "Load", - nodes, - suffix=" land transport biomass", - bus=nodes + " solid biomass", - carrier="land transport biomass", - p_set=bio_transport_share - * transport[nodes], - ) + n.madd( + "Load", + nodes, + suffix=" land transport biomass", + bus=nodes + " solid 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( From 6b0c433cd99888c32b62e99bd4b4e7d45d5bebd0 Mon Sep 17 00:00:00 2001 From: hazemakhalek Date: Sun, 20 Oct 2024 14:09:24 +0200 Subject: [PATCH 4/5] enhance snakefile for custom industry case --- Snakefile | 57 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/Snakefile b/Snakefile index 2ddfbd60..4224488e 100644 --- a/Snakefile +++ b/Snakefile @@ -284,7 +284,7 @@ rule prepare_res_potentials: ), output: **{ - f"{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}.csv" + f"{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{{simpl}}_{{clusters}}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -292,7 +292,7 @@ rule prepare_res_potentials: for clusters in config["scenario"]["clusters"] }, **{ - f"{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}.csv" + f"{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{{simpl}}_{{clusters}}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -310,7 +310,7 @@ rule override_respot: countries=config["countries"], input: **{ - f"custom_res_pot_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}.csv" + f"custom_res_pot_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{{simpl}}_{{clusters}}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -318,7 +318,7 @@ rule override_respot: for clusters in config["scenario"]["clusters"] }, **{ - f"custom_res_ins_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}.csv" + f"custom_res_ins_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{{simpl}}_{{clusters}}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -848,26 +848,35 @@ rule build_industrial_distribution_key: #default data script: "scripts/build_industrial_distribution_key.py" +if config["custom_data"]["industry_demand"]: -rule build_base_industry_totals: #default data - params: - base_year=config["demand_data"]["base_year"], - countries=config["countries"], - other_industries=config["demand_data"]["other_industries"], - input: - #industrial_production_per_country="data/industrial_production_per_country.csv", - #unsd_path="data/demand/unsd/data/", - energy_totals_base="data/energy_totals_base.csv", - transactions_path="data/unsd_transactions.csv", - output: - base_industry_totals="resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv", - threads: 1 - resources: - mem_mb=1000, - benchmark: - "benchmarks/build_base_industry_totals_{planning_horizons}_{demand}" - script: - "scripts/build_base_industry_totals.py" + rule copy_industry_demand: + input: + source="data_custom/industry_demand_{demand}_{planning_horizons}.csv", + output: + destination="resources/demand/industry_demand_{demand}_{planning_horizons}.csv", + shell: + "cp {input.source} {output.destination}" +else: + rule build_base_industry_totals: #default data + params: + base_year=config["demand_data"]["base_year"], + countries=config["countries"], + other_industries=config["demand_data"]["other_industries"], + input: + #industrial_production_per_country="data/industrial_production_per_country.csv", + #unsd_path="data/demand/unsd/data/", + energy_totals_base="data/energy_totals_base.csv", + transactions_path="data/unsd_transactions.csv", + output: + base_industry_totals="resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv", + threads: 1 + resources: + mem_mb=1000, + benchmark: + "benchmarks/build_base_industry_totals_{planning_horizons}_{demand}" + script: + "scripts/build_base_industry_totals.py" rule build_industry_demand: #default data @@ -881,7 +890,7 @@ rule build_industry_demand: #default data industrial_distribution_key="resources/demand/industrial_distribution_key_elec_s{simpl}_{clusters}_{planning_horizons}.csv", #industrial_production_per_country_tomorrow="resources/demand/industrial_production_per_country_tomorrow_{planning_horizons}_{demand}.csv", #industrial_production_per_country="data/industrial_production_per_country.csv", - base_industry_totals="resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv", + base_industry_totals=lambda wildcards: "resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv" if not config["custom_data"]["industry_demand"] else [], industrial_database="data/industrial_database.csv", costs=CDIR + "costs_{planning_horizons}.csv", industry_growth_cagr="data/demand/industry_growth_cagr.csv", From 8381ff3e7af8e545675239bbf46cba8cbc2f1cb5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 20 Oct 2024 12:11:01 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- Snakefile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Snakefile b/Snakefile index 4224488e..bd6aa9dc 100644 --- a/Snakefile +++ b/Snakefile @@ -284,7 +284,7 @@ rule prepare_res_potentials: ), output: **{ - f"{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{{simpl}}_{{clusters}}.csv" + f"{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -292,7 +292,7 @@ rule prepare_res_potentials: for clusters in config["scenario"]["clusters"] }, **{ - f"{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{{simpl}}_{{clusters}}.csv" + f"{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -310,7 +310,7 @@ rule override_respot: countries=config["countries"], input: **{ - f"custom_res_pot_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{{simpl}}_{{clusters}}.csv" + f"custom_res_pot_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_potential_s{simpl}_{clusters}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -318,7 +318,7 @@ rule override_respot: for clusters in config["scenario"]["clusters"] }, **{ - f"custom_res_ins_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{{simpl}}_{{clusters}}.csv" + f"custom_res_ins_{tech}_{year}_{discountrate}_s{simpl}_{clusters}": f"resources/custom_renewables/{tech}/{tech}_{year}_{discountrate}_installable_s{simpl}_{clusters}.csv" for tech in config["custom_data"]["renewables"] for year in config["scenario"]["planning_horizons"] for discountrate in config["costs"]["discountrate"] @@ -848,6 +848,7 @@ rule build_industrial_distribution_key: #default data script: "scripts/build_industrial_distribution_key.py" + if config["custom_data"]["industry_demand"]: rule copy_industry_demand: @@ -857,7 +858,9 @@ if config["custom_data"]["industry_demand"]: destination="resources/demand/industry_demand_{demand}_{planning_horizons}.csv", shell: "cp {input.source} {output.destination}" + else: + rule build_base_industry_totals: #default data params: base_year=config["demand_data"]["base_year"], @@ -890,7 +893,9 @@ rule build_industry_demand: #default data industrial_distribution_key="resources/demand/industrial_distribution_key_elec_s{simpl}_{clusters}_{planning_horizons}.csv", #industrial_production_per_country_tomorrow="resources/demand/industrial_production_per_country_tomorrow_{planning_horizons}_{demand}.csv", #industrial_production_per_country="data/industrial_production_per_country.csv", - base_industry_totals=lambda wildcards: "resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv" if not config["custom_data"]["industry_demand"] else [], + base_industry_totals=lambda wildcards: "resources/demand/base_industry_totals_{planning_horizons}_{demand}.csv" + if not config["custom_data"]["industry_demand"] + else [], industrial_database="data/industrial_database.csv", costs=CDIR + "costs_{planning_horizons}.csv", industry_growth_cagr="data/demand/industry_growth_cagr.csv",