Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into linopy-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
GbotemiB committed Jul 18, 2024
2 parents 8f69645 + 9c3ec89 commit 83b4cca
Show file tree
Hide file tree
Showing 18 changed files with 2,229 additions and 1,185 deletions.
382 changes: 283 additions & 99 deletions Snakefile

Large diffs are not rendered by default.

139 changes: 50 additions & 89 deletions config.default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ scenario:

policy_config:
hydrogen:
temporal_matching: "no_res_matching" #either "h2_yearly_matching", "h2_monthly_matching", "no_res_matching"
temporal_matching: "no_res_matching" # either "h2_yearly_matching", "h2_monthly_matching", "no_res_matching"
spatial_matching: false
additionality: false # 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_
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.

Expand All @@ -48,20 +48,21 @@ 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.
other_industries: false # Whether or not to include industries that are not specified. some countries have has exaggerated 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
retrieve_irena: true #If true, downloads the IRENA data

fossil_reserves:
oil: 100 #TWh Maybe reduntant
oil: 100 # TWh Maybe redundant


export:
h2export: [10] # Yearly export demand in TWh
store: true # [True, False] # specifies wether an export store to balance demand is implemented
store: true # [True, False] # specifies whether 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: "ship" # use "ship" or "constant"
ship:
Expand All @@ -86,7 +87,7 @@ custom_data:

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
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
Expand All @@ -107,55 +108,10 @@ costs: # Costs used in PyPSA-Earth-Sec. Year depends on the wildcard planning_ho
co2: 0.

lines:
length_factor: 1.25 #to estimate offwind connection costs
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:
Expand All @@ -164,6 +120,17 @@ solar_thermal:
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
Expand All @@ -172,6 +139,7 @@ sector:
network_data_GGIT_status: ['Construction', 'Operating', 'Idle', 'Shelved', 'Mothballed', 'Proposed']
hydrogen:
network: true
H2_retrofit_capacity_per_CH4: 0.6
network_limit: 2000 #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
Expand All @@ -181,20 +149,20 @@ sector:
blue_share: 0.40
pink_share: 0.05

international_bunkers: false #Whether or not to count the emissions of international aviation and navigation
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
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 maximum fraction of urban demand is supplied by district heating
progress: 1
#2020: 0.0
#2030: 0.3
#2040: 0.6
#2050: 1.0
# 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
Expand All @@ -208,13 +176,7 @@ sector:
# 2040: 0.16
# 2045: 0.21
# 2050: 0.29
retrofitting: # co-optimises building renovation to reduce space heat demand
retro_endogen: false # co-optimise space heat savings
cost_factor: 1.0 # weight costs for building renovation
interest_rate: 0.04 # for investment in building components
annualise_cost: true # annualise the investment costs
tax_weighting: false # weight costs depending on taxes in countries
construction_index: true # weight costs depending on labour/material costs per country

tes: true
tes_tau: # 180 day time constant for centralised, 3 day for decentralised
decentral: 3
Expand All @@ -224,31 +186,31 @@ sector:
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
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_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
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: 0.5
transport_internal_combustion_efficiency: 0.3
industry_util_factor: 0.7

biomass_transport: true # biomass transport between nodes
biomass_transport_default_cost: 0.1 #EUR/km/MWh
biomass_transport_default_cost: 0.1 # EUR/km/MWh
solid_biomass_potential: 40 # TWh/a, Potential of whole modelled area
biogas_potential: 0.5 # TWh/a, Potential of whole modelled area

Expand All @@ -257,7 +219,7 @@ sector:
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")
enable: false # If "True", then the BEV and FCEV shares are obtained depending 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
Expand Down Expand Up @@ -308,13 +270,13 @@ sector:
DF_2050: 0.011

co2_network: true
co2_sequestration_potential: 200 #MtCO2/a sequestration potential for Europe
co2_sequestration_cost: 10 #EUR/tCO2 for sequestration of CO2
co2_sequestration_potential: 200 # MtCO2/a sequestration potential for Europe
co2_sequestration_cost: 10 # EUR/tCO2 for sequestration of CO2
hydrogen_underground_storage: true
shipping_hydrogen_liquefaction: false
shipping_average_efficiency: 0.4 #For conversion of fuel oil to propulsion in 2011
shipping_average_efficiency: 0.4 # For conversion of fuel oil to propulsion in 2011

shipping_hydrogen_share: #1.0
shipping_hydrogen_share: # 1.0
BU_2030: 0.00
AP_2030: 0.00
NZ_2030: 0.10
Expand Down Expand Up @@ -342,7 +304,7 @@ sector:

conventional_generation: # generator : carrier
OCGT: gas
#Gen_Test: oil # Just for testing purposes
# Gen_Test: oil # Just for testing purposes

# snapshots are originally set in PyPSA-Earth/config.yaml but used again by PyPSA-Earth-Sec
snapshots:
Expand All @@ -358,7 +320,7 @@ build_osm_network: # TODO: To Remove this once we merge pypsa-earth and pypsa-e
force_ac: false # 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"
# tmpdir: "path/to/tmp"
options:
formulation: kirchhoff
clip_p_max_pu: 1.e-2
Expand Down Expand Up @@ -428,7 +390,7 @@ solving:
cbc-default: {} # Used in CI
glpk-default: {} # Used in CI

mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2
mem: 30000 # memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2
runtime: "12:00:00"

plotting:
Expand Down Expand Up @@ -622,4 +584,3 @@ plotting:
biomass EOP: "green"
biomass: "green"
high-temp electrolysis: "magenta"

8 changes: 4 additions & 4 deletions config.pypsa-earth.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ atlite:
dy: 0.3 # cutout resolution
# The cutout time is automatically set by the snapshot range. See `snapshot:` option above and 'build_cutout.py'.
# time: ["2013-01-01", "2014-01-01"] # to manually specify a different weather year (~70 years available)
# The cutout spatial extent [x,y] is automatically set by country selection. See `countires:` option above and 'build_cutout.py'.
# The cutout spatial extent [x,y] is automatically set by country selection. See `countries:` option above and 'build_cutout.py'.
# x: [-12., 35.] # set cutout range manual, instead of automatic by boundaries of country
# y: [33., 72] # manual set cutout range

Expand Down Expand Up @@ -352,8 +352,8 @@ monte_carlo:
add_to_snakefile: false # When set to true, enables Monte Carlo sampling
samples: 9 # number of optimizations. Note that number of samples when using scipy has to be the square of a prime number
sampling_strategy: "chaospy" # "pydoe2", "chaospy", "scipy", packages that are supported
seed: 42 # set seedling for reproducibilty
# Uncertanties on any PyPSA object are specified by declaring the specific PyPSA object under the key 'uncertainties'.
seed: 42 # set seedling for reproducibility
# Uncertainties on any PyPSA object are specified by declaring the specific PyPSA object under the key 'uncertainties'.
# For each PyPSA object, the 'type' and 'args' keys represent the type of distribution and its argument, respectively.
# Supported distributions types are uniform, normal, lognormal, triangle, beta and gamma.
# The arguments of the distribution are passed using the key 'args' as follows, tailored by distribution type
Expand Down Expand Up @@ -530,4 +530,4 @@ plotting:
battery: "Battery Storage"
H2: "Hydrogen Storage"
lines: "Transmission Lines"
ror: "Run of River"
ror: "Run of River"
32 changes: 32 additions & 0 deletions data/existing_infrastructure/existing_heating_raw.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
,gas boiler,coal boiler,oil boiler,resistive heater,air heat pump,ground heat pump
Austria,9.32,0.4,15.42,0,0.72,1.077
Belgium,28.39,1.19,19.53,3.14,0.17,0.061
Bulgaria,0.16,3.68,0.04,3.46,1.01,0.045
Croatia,8.39,0.03,2.88,1.53,0,0
Czech Republic,9.26,1.02,0.1,2.73,0.35,0.263
Denmark,4.82,0,3.67,2.19,1.9,0.381
Estonia,0.22,0.02,0.12,0.27,0.33,0.1
Finland,0,0.04,3.79,10.3,1.98,0.58
France,76.85,1.03,46.03,87.24,26.14,1.97
Germany,131.09,0.44,132.04,0,2.38,3.29
Greece,2.17,0.03,18.13,5.91,0,0
Hungary,21.21,1.3,0.04,0.06,0.03,0.035
Ireland,4.32,0.8,4.85,1.03,0.03,0.03
Italy,112.68,1.89,3.33,6.61,54.98,0.6
Latvia,1.53,0.4,0,0.03,0,0
Lithuania,0,0,0,0,0.01,0.02
Luxembourg,0.79,0,0.77,0.09,0.01,0.001
Netherlands,81.41,0,0.1,0.1,1.82,0.849
Poland,8.25,24.75,9.04,5.96,0.01,0.04
Portugal,4.79,0,0.2,21.26,1.58,0.064
Romania,16.56,0.32,0.03,0.72,0,0
Slovakia,8.05,0.19,0.01,0.55,0.06,0.015
Slovenia,0.4,0,1.08,0.4,0.03,0.056
Spain,48.99,0.51,17.95,56.58,1.15,0.016
Sweden,1.01,0,0.77,3.76,3.42,4.813
United Kingdom,160.49,1.26,7.39,13.81,0.81,0.21
Norway,,,,,2.91,0.334
Switzerland,,,,,1,0.849
Serbia,,,,,,
Bosnia Herzegovina,,,,,,
DEFAULT,,,,,,
Loading

0 comments on commit 83b4cca

Please sign in to comment.