Closed SeptimusBoshoff closed 1 year ago
[x] 1. Generate random power system (if not specified by user)
[x] 2. Calculate characteristic impedance Z_0
for cables
[x] 3. Calculate SIL (->P_max
) for cables using 2.
[x] 4. Solve power flow
[x] 5. Replace cables
[x] 6. Go to 4. until no more violations
Problem: With power flow equations we would have too many unknowns and too less equations.
Idea: Use 'compressed Sensing' to consider the design of the cables as kind of optimization problem (Compare e.g. Data-Driven Science and Engineering chapter 3.2).
Maybe that can be extended to optimize the power it at all, too, in case of where to place a cable (could be used to construct the CM matrix if not defined)
Since we would have somehow to solve the power flow equations (PFE) to figure out - depending on the power demand - which source would deliver what power and where is it flowing, let's try to solve the PFE with a lot of unknows and see where it goes.
Always fixed:
P_load
(?)Vbus
(?) the magnitude is typically a range from 0.95 to 1.05Sometimes fixed:
Variable:
P_sources
(?)G
(conductance; real part of Y)B
(Suceptance; imag part of Y)delta
(bus angle)Notes:
Solutions:
List to be defined in the parameter-dict in thenodeconstructor
before cable rating funtion
is called:
-parameters["load"]
pwr -> to be added to passive loads? (maybe for specific vltg level and impendance(2 pi f_grid)
How to handle active source? -> would sit in sources with negative ref...
To be defined by the cable rating funtion
and set in the nc:
Added power flow equation(pfe) to Power_System_theory script Left todos:
Used PFE in NC and overwrite ALL cable parameters if one is not defined to ensure that it fits pfe (to be changed and keep defined cable parameters??) - https://github.com/upb-lea/dare/blob/b501c1914959f9e4b1722cbbe1685d5011e8c5fc/src/nodeconstructor.jl#L638
The limits for the cable were calculated using the equations in the text book Power System Analysis and Design (Glover and Sarma), particularly equation number 5.5.3.
todo: put this result to be included into the environment
(I1 -> limit_array[idx_I1])
layout_cabels(CM, num_source, num_load, parameters)
function in Power_System_Theory.jl
which gets called in the nodeconstructor to fill up the parameter dict with missing cable entries.
The problem can be stated as follows. Given a power system, a system with sources, loads and cables, what is the power flow through the cables in steady state, and is the power limit for the cable exceeded?
The cable limit is defined by its Surge Impedance Loading (SIL) and the operating voltage (Line to Line). Typically the maximum operating voltage is taken as 1.05 p.u. A related quantity which has to be computed as an intermediary step to the SIL is the characteristic impedance, which is a function of the cable capacitance and inductance. Therefore, the problem becomes; if a network topology is given, that is, the connectivity matrix, the number of sources, and the number of loads, (including the power ratings) what should the capacitance and inductance of the cable be? This is a different formulation of the problem, when compared to how a utility would design its system, but for our goals so be it.
The first thing to do would be to randomly generate the CM (with sources, loads, and cables). The next step would be to solve the power flow equations for the randomly generated network. This would employ an iterative algorithm (e.g. Newton-Rhapson, Gaus-Seidel, Decoupled, etc.). The solution would tell us what the power flows are through the cables. All the cables, for which the SIL is exceeded should be identified. Now it we have a choice, either replace all of the exceeded cables with better cables, or only replace, say the first 2 maximally exceeded cables. In either case, the power flow algorithm should be run again, and the steps repeated until there are no more violations.