diff --git a/Snakefile b/Snakefile index 62afc284..2ddfbd60 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"] diff --git a/config.bright.yaml b/config.bright_BI.yaml similarity index 99% rename from config.bright.yaml rename to config.bright_BI.yaml index 3b799049..9d9ca5aa 100644 --- a/config.bright.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: 0917_integrate_enertile_flh_classes + 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 @@ -28,7 +28,7 @@ scenario: opts: - "Co2L" sopts: - - "144H" + - "8H" demand: - "BI" # BI/DE/GH @@ -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: [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" @@ -365,6 +365,9 @@ sector: NZ_2030: 0.10 DF_2030: 0.05 AB_2030: 0.05 + BU_2035: 0.014 + BI_2035: 0.014 + GH_2035: 0.014 BU_2050: 0.00 BI_2050: 0.24 GH_2050: 0.248 diff --git a/config.bright_DE.yaml b/config.bright_DE.yaml new file mode 100644 index 00000000..aa0c31cb --- /dev/null +++ b/config.bright_DE.yaml @@ -0,0 +1,635 @@ +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: + - "8H" + demand: + - "DE" # BI/DE/GH + +policy_config: + hydrogen: + temporal_matching: "no_res_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_ + 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: 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 + 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 + 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 + + co2_network: false + co2_sequestration_potential: 0 #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.4 #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_2035: 0.014 + BI_2035: 0.014 + GH_2035: 0.014 + 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: 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" diff --git a/config.bright_GH.yaml b/config.bright_GH.yaml new file mode 100644 index 00000000..d6cf3fd3 --- /dev/null +++ b/config.bright_GH.yaml @@ -0,0 +1,635 @@ +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: + - "8H" + demand: + - "GH" # BI/DE/GH + +policy_config: + hydrogen: + temporal_matching: "no_res_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_ + 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: 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 + 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 + 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 + + co2_network: false + co2_sequestration_potential: 0 #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.4 #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_2035: 0.014 + BI_2035: 0.014 + GH_2035: 0.014 + 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: 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" diff --git a/scripts/prepare_heat_data.py b/scripts/prepare_heat_data.py index 99d3397a..811d29a6 100644 --- a/scripts/prepare_heat_data.py +++ b/scripts/prepare_heat_data.py @@ -55,7 +55,7 @@ def prepare_heat_data(n): snakemake.input.energy_totals_name, index_col=0, keep_default_na=False, - na_values=[""], + na_values=["", "x"], ) nodal_energy_totals = energy_totals.loc[pop_layout.ct].fillna(0.0) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 18ef3217..a35491cc 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -2424,9 +2424,11 @@ def add_agriculture(n, costs): suffix=" agriculture biomass", bus=spatial.biomass.nodes, carrier="agriculture biomass", - p_set=nodal_energy_totals.loc[spatial.nodes, "agriculture biomass"] * 1e6 / 8760, + p_set=nodal_energy_totals.loc[spatial.nodes, "agriculture biomass"] + * 1e6 + / 8760, ) - + n.madd( "Load", spatial.nodes, diff --git a/scripts/prepare_transport_data.py b/scripts/prepare_transport_data.py index 91170d97..ceaec3f4 100644 --- a/scripts/prepare_transport_data.py +++ b/scripts/prepare_transport_data.py @@ -65,7 +65,7 @@ def prepare_transport_data(n): snakemake.input.energy_totals_name, index_col=0, keep_default_na=False, - na_values=[""], + na_values=["", "x"], ) # TODO change with real numbers nodal_energy_totals = energy_totals.loc[pop_layout.ct].fillna(0.0) @@ -138,7 +138,9 @@ def prepare_transport_data(n): # divide out the heating/cooling demand from ICE totals # and multiply back in the heating/cooling demand for EVs - ice_correction = (transport_shape * (1 + dd_ICE)).sum() / transport_shape.sum() # currently not used same for dd_EV + ice_correction = ( + transport_shape * (1 + dd_ICE) + ).sum() / transport_shape.sum() # currently not used same for dd_EV # if snakemake.config["custom_data"]["transport_demand"]: energy_totals_transport = nodal_energy_totals["total road"] @@ -206,8 +208,8 @@ def prepare_transport_data(n): "prepare_transport_data", simpl="", clusters="11", - demand="NI", - planning_horizons=2030, + demand="BI", + planning_horizons=2035, ) sets_path_to_root("pypsa-earth-sec") diff --git a/submit.sh b/submit.sh new file mode 100644 index 00000000..c414dfc5 --- /dev/null +++ b/submit.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +micromamba activate pypsa-earth + +cp config.bright_BI.yaml config.yaml +snakemake --profile slurm all + +cp config.bright_DE.yaml config.yaml +snakemake --profile slurm all + +cp config.bright_GH.yaml config.yaml +snakemake --profile slurm all + +NEXTCLOUD_URL="https://tubcloud.tu-berlin.de/remote.php/webdav/BRIGHT/results/" +USERNAME="cpschau" +PASSWORD=$(cat ~/.nextcloud_password) + +# Upload the file to Nextcloud via WebDAV +tar -czf results_0925.tar.gz /results/092524_test/ +curl -u "$USERNAME:$PASSWORD" -T "results_0925.tar.gz" "$NEXTCLOUD_URL"