forked from MeridianEconomics/pypsa-rsa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.yaml
202 lines (175 loc) · 7.54 KB
/
config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Use of this code assumes you have accepted the license agreements under the license folder
version: 0.1
######################## SETUP INSTRUCTIONS ####################################
# 1. First download all relevant data as outlined in the readme file
# 2. Set the path under the gis section to the location of the GIS data
# 3. Under the scenarios folder you can specify a project folder
# 4. You need to specify the solver to be used. Capacity expansion modelling with multiple periods
# typically requires a commercial solver like Gurobi, CPLEX or XPRESS.
# 5. Dispatch modelling and smaller problems can use an open-source solver such as CBC or HIGHS.
######################## CONFIGURATION FILE ####################################
logging:
level: INFO
format: "%(levelname)s:%(name)s:%(message)s"
scenarios:
folder: ME IRP 2024
setup: "scenarios_to_run.xlsx"
solve_capacity: False
solve_dispatch: True
gis:
path: "/media/pklein/Dropbox SSD/Meridian Dropbox/ME Projects/03 R E S O U R C E S/Modelling data/GIS data"
# definition of the Coordinate Reference Systems
crs:
geo_crs: EPSG:4326 # general geographic projection, not used for metric measures.
distance_crs: EPSG:2049 # projection for distance measurements only
area_crs: ESRI:54009 # projection for area measurements only.
# Specification of relevent years for the model
years:
reference_load_year: 2017 # should be a single year at present, could be extended in the future
reference_weather_years:
# reference years used for solar PV and wind profiles - can be single or multiple years
# if multiple years are specified these are applied sequencially to the simulation years
solar_pv: [2017, 2018, 2019]
solar_pv_low: [2017, 2018, 2019]
solar_pv_rooftop: [2017, 2018, 2019]
wind: [2017, 2018, 2019]
wind_low: [2017, 2018, 2019]
wind_offshore: [2017, 2018, 2019]
# reference years from actual Eskom data published at https://www.eskom.co.za/dataportal/
# can be single or multiple years if multiple years are specified these are applied
# sequencially to the simulation years
solar_csp: [2021]
bioenergy: [2021]
hydro: [2021]
hydro_import: [2021]
electricity:
load_disaggregation: "GVA_2016" # used to split the demand across supply regions in absence of Eskom data
renewable_generators:
apply_grouping: false # if false individual existing plants are specified as separate generators
resource_profiles:
datasets:
wind: "wasa"
wind_offshore: "era5"
solar_pv: "sarah"
solar_pv_rooftop: "sarah"
bioenergy: "eskom"
hydro: "eskom"
hydro_import: "eskom"
single_node_profiles:
wind: [10, ["Eastern Cape", "Northern Cape", "Western Cape"], [1,1,1]]
wind_low: [10, ["Mpumalanga", "Free State", "North West", "KwaZulu Natal"], [0.5, 0.1, 0.2, 0.2]]
wind_offshore: [1, ["RSA"],[1]]
solar_pv: [10, ["Northern Cape", "Hydra Central"], [1,1]]
solar_pv_rooftop: [1, ["RSA"],[1]]
solar_pv_low: [10, ["Mpumalanga", "Free State", "Limpopo", "North West"], [1, 1, 1, 1]]
# stop gap implementation until degradation added into the model for wind and solar PV.
degradation_adj_capacity_factor: # adjust avg plant capacity factor down by given % to account for degradation over lifetime in present value terms at 8.2% discount rate
wind: 0.01 #i.e. 1% reduction in capacity factor over lifetime
wind_low: 0.01
wind_offshore: 0.01
solar_pv: 0.03
solar_pv_low: 0.03
solar_pv_rooftop: 0.03
conventional_generators: # e.g coal, nuclear, gas, diesel, hydro, biomass
apply_grouping: False # if false individual plants are specified as generators - feature still in development use with caution
implement_availability: True # exogenous specification of maximum
# CCGT are modelled as an OCGT + an Aux STG
ccgt_st_to_gt_ratio: 0.427 # ratio of gas turbines output to steam turbines in CCGT plants 2x540MW OCGT for 1x461MW steam turbine
allowable_ocgt_st_carriers: ["ocgt_gas", "ocgt_diesel", "ocgt_gas_h2_40", "ocgt_gas_h2_45", "ocgt_gas_h2_50"] # only these techs can be connected to ST
linearised_unit_committment_in_capacity_expansion: False #[] # can only be included for existing generators
variable_fuel_prices:
fixed: true
extendable: true
storage:
apply_grouping: false # if false indivudal plants are specified
extendable_parameters:
defaults:
discount_rate: 0.082
co2_emissions: 0
max_hours: 0
FOM: 0
VOM: 0
heat_rate: 0
efficiency: 1
fuel: 0
investment: 0
lifetime: 20
min_stable_level: 0
ramp_limit_up: .nan
ramp_limit_down: .nan
ramp_limit_start_up: 1
ramp_limit_shut_down: 1
min_up_time: 0
min_down_time: 0
start_up_cost: 0
shut_down_cost: 0
committable: False
build_phase_in: overnight
adjust_by_p_max_pu: #adjusts ramp limit and p_min_pu by outages representated by p_max_pu
coal: [ramp_limit_up, ramp_limit_down, ramp_limit_start_up, ramp_limit_shut_down]
nuclear: [ramp_limit_up, ramp_limit_down]
clean_pu_profiles: true # if true, if p_max_pu is less than p_min_pu in any hour it is set to p_min_pu
operating_reserves:
spinning: ["coal", "nuclear", "phs", "biomass", "hydro", "hydro_import"]
non_spinning: ["coal", "ocgt_diesel", "ocgt_gas", "ccgt_gas", "phs", "biomass", "hydro", "hydro_import"]
extendable_committable_carriers_for_dispatch:
extended: [coal, nuclear, ccgt_steam]
lines:
threshold: 220 # only voltages >=220kV are considered in network capacity calculations
v_nom: 400. #changed from 380kV from PyPSA-EUR to 400kV for South Africa
type:
400: "Al/St 240/40 4-bundle 380.0" # proxy line properties from pypsa defaults
s_rating: thermal # thermal, SIL, StClair
thermal:
220: 492 #(MW) "Al/St 240/40 2-bundle 220.0" -> np.sqrt(3)*220*1.29
275: 921 #(MW) "Al/St 240/40 3-bundle 300.0" -> np.sqrt(3)*275*1.935
400: 1788 #(MW) "Al/St 240/40 4-bundle 380.0" -> np.sqrt(3)*400*2.58
765: 5512 #(MW) "Al/St 560/50 4-bundle 750.0" -> np.sqrt(3)*765*4.16
SIL: # surge impedance loading
220: 122 #(MW)
275: 245 #(MW)
400: 602 #(MW)
765: 2280 #(MW)
s_max_pu: 0.7 # n-1 approximation
n1_approx_single_lines: 0.7 # in cases where there is a single line between 2 region derate by 30%
s_nom_max: .inf
length_factor: 1.25
no_build_year: 2050 # or set as "drop" to remove lines
losses: 0.06 #per 1000km AC line - requires to links per line unless set to 0 then bi-directional lossless link
dc_type: "DC_custom_linetype"
links:
p_max_pu: 1.0
p_nom_max: .inf
under_construction: "zero" # "zero": set capacity to zero, "remove": remove, "keep": with full capacity
length_factor: 1.25
costs:
discount_rate: 0.082
year: 2030
USD_to_ZAR: 18.24
EUR_to_ZAR: 17.83
load_shedding: true
COUE: 100000 #R100/kWh Cost Of Unserved Energy
emission_prices: # only used with the option Ep (emission prices)
# Externality costs from Integrated Energy Plan by the ZA DOE
co2: 0.27e+3
sox: 7.6e+3
nox: 4.5e+3
hg: 41484.e-6 # is also part of the excel sheet
particulate: 11.3e+3
tsam_clustering:
nprocesses: 10
solver: "cbc" #need to use open source solver here due to parallel processing of years
capacity_solver:
options:
clip_p_max_pu: 1.e-2
solver:
name: xpress
lpflags: 4
crossover: 0
bargapstop: 1.e-6
dispatch_solver:
solver:
name: xpress
lpflags: 4
crossover: 0
bargapstop: 1.e-6