Skip to content

Commit d5d4fd5

Browse files
committed
Merge remote-tracking branch 'origin/hybit' into feature/modeling_on_interest_area
# Conflicts: # etrago/appl.py # etrago/network.py # etrago/tools/utilities.py
2 parents 1d954ce + e18367b commit d5d4fd5

File tree

13 files changed

+1694
-246
lines changed

13 files changed

+1694
-246
lines changed

etrago/analyze/calc_results.py

Lines changed: 838 additions & 1 deletion
Large diffs are not rendered by default.

etrago/appl.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -712,9 +712,6 @@ def run_etrago(args, json_path):
712712
# adjust network regarding eTraGo setting
713713
etrago.adjust_network()
714714

715-
#import pdb
716-
#pdb.set_trace()
717-
718715
# ehv network clustering
719716
etrago.ehv_clustering()
720717

@@ -730,31 +727,6 @@ def run_etrago(args, json_path):
730727

731728
print(datetime.datetime.now())
732729

733-
for comp in etrago.network.iterate_components():
734-
for key in comp.pnl:
735-
comp.pnl[key].where(
736-
comp.pnl[key].abs()>1e-5, other=0., inplace=True)
737-
for comp in etrago.network_tsa.iterate_components():
738-
for col in comp.df.columns:
739-
if comp.df[col].dtype == "float64":
740-
comp.df[col].where(
741-
comp.df[col].abs()>1e-5, other=0., inplace=True)
742-
for key in comp.pnl:
743-
comp.pnl[key].where(
744-
comp.pnl[key].abs()>1e-5, other=0., inplace=True)
745-
for n in [etrago.network, etrago.network_tsa]:
746-
n.mremove("Generator", n.generators[
747-
(n.generators.p_nom_extendable == False) &
748-
(n.generators.p_nom < 100)].index)
749-
import numpy as np
750-
n.stores.e_nom_max = np.inf
751-
n.links.loc[n.links.carrier == "central_gas_boiler", "p_nom"] = 1e7
752-
753-
n.links.ramp_limit_up = np.nan
754-
n.links.ramp_limit_down = np.nan
755-
n.generators.ramp_limit_up = np.nan
756-
n.generators.ramp_limit_down = np.nan
757-
758730
# set interest components to extendable and add additional components
759731

760732
etrago.print_capital_costs()

etrago/cluster/electrical.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def find_de_closest(network, bus_ne):
159159
# resp: Buses that are aggregated only based on the AC bus they are
160160
# connected to via a link (carriers in map_carrier)
161161
network2 = network.copy(with_time=False)
162-
162+
163163
if etrago.args["scn_name"] == "eGon100RE":
164164
map_carrier = {
165165
"dsm": "dsm",
@@ -174,8 +174,8 @@ def find_de_closest(network, bus_ne):
174174
"O2": "PtH2_O2",
175175
"rural_heat": "rural_heat_pump",
176176
}
177-
178-
# network2 contains all busses that will be clustered only based on AC
177+
178+
# network2 contains all busses that will be clustered only based on AC
179179
# connection
180180
network2.buses = network2.buses[
181181
network2.buses["carrier"].isin(map_carrier.keys())
@@ -240,11 +240,11 @@ def find_de_closest(network, bus_ne):
240240
f"""There are {len(no_elec_conex)} buses that have no direct
241241
connection to the electric network: {no_elec_conex}"""
242242
)
243-
243+
244244
busmap4 = {}
245245
if "rural_heat" in map_carrier.keys():
246-
# rural_heat_store buses are clustered based on the AC buses connected to
247-
# their corresponding rural_heat buses. Results saved in busmap4
246+
# rural_heat_store buses are clustered based on the AC buses connected
247+
# to their corresponding rural_heat buses. Results saved in busmap4
248248
links_rural_store = etrago.network.links[
249249
etrago.network.links.carrier == "rural_heat_store_charger"
250250
].copy()
@@ -257,7 +257,8 @@ def find_de_closest(network, bus_ne):
257257
# Add the buses not related to AC to the busmap and map them to themself
258258
for no_ac_bus in network.buses[
259259
~network.buses["carrier"].isin(
260-
np.append(network2.buses.carrier.unique(), "AC"))
260+
np.append(network2.buses.carrier.unique(), "AC")
261+
)
261262
].index:
262263
busmap2[no_ac_bus] = no_ac_bus
263264

@@ -627,6 +628,7 @@ def preprocessing(etrago, apply_on="grid_model"):
627628
"sub_network",
628629
"s_max_pu",
629630
"lifetime",
631+
"s_nom_extendable",
630632
],
631633
]
632634
.assign(

etrago/cluster/gas.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
kmedoids_dijkstra_clustering,
4444
strategies_buses,
4545
strategies_generators,
46-
strategies_lines,
4746
strategies_one_ports,
4847
)
4948
from etrago.tools.utilities import find_buses_area, set_control_strategies

etrago/cluster/spatial.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def strategies_one_ports():
139139
"p_min_pu": "min",
140140
"p_nom_extendable": ext_storage,
141141
"p_nom_max": sum_with_inf,
142-
"scn_name": "first"
142+
"scn_name": "first",
143143
},
144144
"Store": {
145145
"marginal_cost": "mean",
@@ -186,8 +186,8 @@ def strategies_links():
186186
"efficiency": "mean",
187187
"p_nom_min": "sum",
188188
"p_set": "mean",
189-
"p_min_pu": "min",
190-
"p_max_pu": "max",
189+
"p_min_pu": "mean",
190+
"p_max_pu": "mean",
191191
"marginal_cost": "mean",
192192
"terrain_factor": _make_consense_links,
193193
"p_nom_opt": "mean",

etrago/execute/__init__.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,6 @@ def run_lopf(etrago, extra_functionality, method):
218218
solver_name=etrago.args["solver"],
219219
solver_options=etrago.args["solver_options"],
220220
extra_functionality=extra_functionality,
221-
formulation=etrago.args["model_formulation"],
222221
)
223222
if status != "ok":
224223
logger.warning(
@@ -429,32 +428,32 @@ def optimize(self):
429428
"""
430429

431430
if self.args["method"]["market_optimization"]["active"]:
432-
self.market_optimization()
433-
434-
self.network = self.adjust_PtH2_model(apply_on='grid_model')
431+
self.market_optimization()
432+
433+
self.network = self.adjust_PtH2_model(apply_on="grid_model")
435434
logger.info("PtH2-Model adjusted in network")
436435

437-
self.network = self.adjust_chp_model(apply_on='grid_model')
436+
self.network = self.adjust_chp_model(apply_on="grid_model")
438437
logger.info("CHP model in foreign countries adjusted in network")
439438
# self.market_results_to_grid()
440439

441440
self.grid_optimization()
442441

443442
elif self.args["method"]["type"] == "lopf":
444-
445-
self.network = self.adjust_PtH2_model(apply_on='grid_model')
443+
444+
self.network = self.adjust_PtH2_model(apply_on="grid_model")
446445
logger.info("PtH2-Model adjusted in network")
447446

448-
self.network = self.adjust_chp_model(apply_on='grid_model')
447+
self.network = self.adjust_chp_model(apply_on="grid_model")
449448
logger.info("CHP model in foreign countries adjusted in network")
450449

451450
self.lopf()
452451

453452
elif self.args["method"]["type"] == "sclopf":
454-
455-
self.network = self.adjust_PtH2_model(apply_on='grid_model')
453+
454+
self.network = self.adjust_PtH2_model(apply_on="grid_model")
456455
logger.info("PtH2-Model adjusted in network")
457-
456+
458457
self.sclopf(
459458
post_lopf=False,
460459
n_process=4,

etrago/execute/grid_optimization.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,20 +95,21 @@ def grid_optimization(
9595

9696
# Replacevery small values with zero to avoid numerical problems
9797
self.network.generators_t.p_max_pu.where(
98-
self.network.generators_t.p_max_pu.abs() > 1e-7,
98+
self.network.generators_t.p_max_pu.abs() > 1e-5,
9999
other=0.0,
100100
inplace=True,
101101
)
102102
self.network.generators_t.p_min_pu.where(
103-
self.network.generators_t.p_min_pu.abs() > 1e-7,
103+
self.network.generators_t.p_min_pu.abs() > 1e-5,
104104
other=0.0,
105105
inplace=True,
106106
)
107107
self.network.links_t.p_max_pu.where(
108-
self.network.links_t.p_max_pu.abs() > 1e-7, other=0.0, inplace=True
108+
self.network.links_t.p_max_pu.abs() > 1e-5, other=0.0, inplace=True
109109
)
110+
110111
self.network.links_t.p_min_pu.where(
111-
self.network.links_t.p_min_pu > 1e-7, other=0.0, inplace=True
112+
self.network.links_t.p_min_pu.abs() > 1e-5, other=0.0, inplace=True
112113
)
113114

114115
self.network.links.loc[
@@ -164,30 +165,30 @@ def fix_chp_generation(self):
164165
# model
165166
self.network.generators_t.p_max_pu.loc[:, gens_fixed] = (
166167
self.market_model.generators_t.p[gens_fixed].mul(
167-
1 / self.market_model.generators.p_nom[gens_fixed]
168+
1.01 / self.market_model.generators.p_nom[gens_fixed]
168169
)
169170
)
170171

171172
# Set p_min_pu of generators using results from (disaggregated) market
172173
# model
173174
self.network.generators_t.p_min_pu.loc[:, gens_fixed] = (
174175
self.market_model.generators_t.p[gens_fixed].mul(
175-
1 / self.market_model.generators.p_nom[gens_fixed]
176+
0.99 / self.market_model.generators.p_nom[gens_fixed]
176177
)
177178
)
178179

179180
# Fix link dispatch (gas turbines) from market simulation
180181
# Set p_max_pu of links using results from (disaggregated) market model
181182
self.network.links_t.p_max_pu.loc[:, links_fixed] = (
182183
self.market_model.links_t.p0[links_fixed].mul(
183-
1 / self.market_model.links.p_nom[links_fixed]
184+
1.01 / self.market_model.links.p_nom[links_fixed]
184185
)
185186
)
186187

187188
# Set p_min_pu of links using results from (disaggregated) market model
188189
self.network.links_t.p_min_pu.loc[:, links_fixed] = (
189190
self.market_model.links_t.p0[links_fixed].mul(
190-
1 / self.market_model.links.p_nom[links_fixed]
191+
0.99 / self.market_model.links.p_nom[links_fixed]
191192
)
192193
)
193194

@@ -243,7 +244,7 @@ def add_redispatch_generators(
243244

244245
links_redispatch = self.network.links[
245246
(
246-
self.network.links.carrier.isin(["OCGT"])
247+
self.network.links.carrier.isin(["OCGT", "CCGT"])
247248
& (~self.network.links.index.str.contains("ramp"))
248249
)
249250
].index
@@ -253,6 +254,7 @@ def add_redispatch_generators(
253254
data=management_cost,
254255
)
255256
management_cost_carrier["OCGT"] = management_cost
257+
management_cost_carrier["CCGT"] = management_cost
256258
if fre_mangement_fee:
257259
management_cost_carrier[
258260
["wind_onshore", "wind_offshore", "solar", "solar_rooftop"]
@@ -310,16 +312,16 @@ def add_redispatch_generators(
310312
# Fix link dispatch (gas turbines) from market simulation
311313
# Set p_max_pu of links using results from (disaggregated) market model
312314
self.network.links_t.p_max_pu.loc[:, links_redispatch] = (
313-
self.market_model.links_t.p0[links_redispatch].mul(
314-
1 / self.market_model.links.p_nom[links_redispatch]
315-
)
315+
self.market_model.links_t.p0[links_redispatch]
316+
.clip(lower=0.0)
317+
.mul(1 / self.market_model.links.p_nom[links_redispatch])
316318
)
317319

318320
# Set p_min_pu of links using results from (disaggregated) market model
319321
self.network.links_t.p_min_pu.loc[:, links_redispatch] = (
320-
self.market_model.links_t.p0[links_redispatch].mul(
321-
1 / self.market_model.links.p_nom[links_redispatch]
322-
)
322+
self.market_model.links_t.p0[links_redispatch]
323+
.clip(lower=0.0)
324+
.mul(1 / self.market_model.links.p_nom[links_redispatch])
323325
)
324326

325327
# Calculate costs for redispatch

0 commit comments

Comments
 (0)