Conditions | 5 |
Total Lines | 100 |
Code Lines | 66 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | # -*- coding: utf-8 -*- |
||
8 | def custom_extra_functionality(n, snapshots, snakemake): |
||
9 | """ |
||
10 | Add custom extra functionality constraints. |
||
11 | """ |
||
12 | n.model.constraints.remove("Generator-e_sum_max") |
||
13 | |||
14 | |||
15 | #if n.meta["wildcards"]['planning_horizons'] == "2045": |
||
16 | # min_wind_onshore = 100e6 |
||
17 | # min_solar = 200e6 |
||
18 | # min_wind_offshore = 50e6 |
||
19 | if n.meta["wildcards"]['planning_horizons'] == "2035": |
||
20 | min_wind_onshore = 111309 |
||
21 | min_solar = 232228 |
||
22 | min_wind_offshore = 39122 |
||
23 | elif n.meta["wildcards"]['planning_horizons'] == "2030": |
||
24 | min_wind_onshore = 86583 |
||
25 | min_solar = 165173 |
||
26 | min_wind_offshore = 27239 |
||
27 | elif n.meta["wildcards"]['planning_horizons'] == "2025": |
||
28 | min_wind_onshore = 61856 |
||
29 | min_solar = 98119 |
||
30 | min_wind_offshore = 15356 |
||
31 | |||
32 | wind_offshore_ext = list( |
||
33 | n.generators.index[ |
||
34 | (n.generators.index.str.contains("offwind") |
||
35 | & (n.generators.bus.str.contains("DE")) |
||
36 | & (n.generators.p_nom_extendable) |
||
37 | ) |
||
38 | ] |
||
39 | ) |
||
40 | |||
41 | wind_offshore_fixed = n.generators[ |
||
42 | (n.generators.index.str.contains("offwind") |
||
43 | & (n.generators.bus.str.contains("DE")) |
||
44 | & (n.generators.p_nom_extendable==False) |
||
45 | ) |
||
46 | ].p_nom.sum() |
||
47 | |||
48 | |||
49 | wind_onshore_ext = list( |
||
50 | n.generators.index[ |
||
51 | (n.generators.index.str.contains("onwind") |
||
52 | & (n.generators.bus.str.contains("DE"))) |
||
53 | & (n.generators.p_nom_extendable) |
||
54 | ] |
||
55 | ) |
||
56 | |||
57 | wind_onshore_fixed = n.generators[ |
||
58 | (n.generators.index.str.contains("onwind") |
||
59 | & (n.generators.bus.str.contains("DE")) |
||
60 | & (n.generators.p_nom_extendable==False) |
||
61 | ) |
||
62 | ].p_nom.sum() |
||
63 | |||
64 | |||
65 | solar_ext = list( |
||
66 | n.generators.index[ |
||
67 | (n.generators.carrier.isin(["solar", "solar-hst", "solar rooftop"]) |
||
68 | & (n.generators.bus.str.contains("DE")) |
||
69 | & (n.generators.p_nom_extendable)) |
||
70 | ] |
||
71 | ) |
||
72 | |||
73 | solar_fixed = n.generators[ |
||
74 | (n.generators.carrier.isin(["solar", "solar-hst", "solar rooftop"]) |
||
75 | & (n.generators.bus.str.contains("DE")) |
||
76 | & (n.generators.p_nom_extendable==False) |
||
77 | ) |
||
78 | ].p_nom.sum() |
||
79 | |||
80 | if n.meta["wildcards"]['planning_horizons'] == "2045": |
||
81 | min_wind_onshore = wind_onshore_fixed |
||
82 | min_solar = solar_fixed |
||
83 | min_wind_offshore = wind_offshore_fixed |
||
84 | |||
85 | |||
86 | define_constraints(n, |
||
87 | get_var(n, "Generator", "p_nom").loc[wind_offshore_ext].sum() , |
||
88 | ">=", |
||
89 | min_wind_offshore - wind_offshore_fixed , |
||
|
|||
90 | "Global", |
||
91 | "min_offwind_de" |
||
92 | ) |
||
93 | |||
94 | define_constraints(n, |
||
95 | get_var(n, "Generator", "p_nom").loc[wind_onshore_ext].sum() , |
||
96 | ">=", |
||
97 | min_wind_onshore - wind_onshore_fixed, |
||
98 | "Global", |
||
99 | "min_onwind_de" |
||
100 | ) |
||
101 | |||
102 | define_constraints(n, |
||
103 | get_var(n, "Generator", "p_nom").loc[solar_ext].sum() , |
||
104 | ">=", |
||
105 | min_solar - solar_fixed, |
||
106 | "Global", |
||
107 | "min_solar_de" |
||
108 | ) |
||
110 |