# Network simulator

Hello,
I plan to create a simplified electrical network simulator.
The goal is only to provide power nodes (in and out) and lines through those
nodes and to compute lines charges in regard of power production and consumption.
Algorithms found on the web are too complicated for my purpose.
Is an algorithm based on "shortest way path" is convenient ?
Is power producted goes to all consumption nodes regarless of their distance or is the "near" production node giving power at consumption node?
Regards,
Louis
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
----------------------------

It would be nice to know what you are talking about. If you are looking at power systems , then this is well established (see Load flow). How simple an algorithm do you want? The basic ones now in use are not inherently complex in concept. Simplifying these would lead to results that might well be meaningless (one could ignore line resistance for example). How the "power flow" is distributed depends on several parameters so one cannot simply use shortest path methods.
--

Don Kelly snipped-for-privacy@shawcross.ca
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hello Don,
Did you know any reference on the web at a "simple" low fload algorithm? (all those I have found are too many complex for my own use...)
Many thanks again,
Louis.

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
I don't know what is on the net. Most references use a form of Newton-Raphson iteration and some older ones use Gauss-Seidel. Both are basically root finding iterative algorithms. Beyond this there are methods of reducing the size of the problem or even subdividing it for large systems. These mainly are aimed at reduction of storage needs for solution. The same approaches ignoring line resistance may offer some advantage in programming and speed but will also ignore any line losses. You have not indicated how large a system that you want to deal with and how good do you want the results to be.
--

Don Kelly snipped-for-privacy@shawcross.ca
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

I've seen some numerical methods for such networks that try to re-arrange the equations to try and keep the non-zero terms close to the major diagonal. Then a form of LU decomposition can be used to eliminate a lot of the 'wasted' multiplication/addition operations (with sparse matrices, something like Gauss spends a lot of time with 'zero' terms that just don't impact the result).
These were mostly 'fixed' networks that had to be solved repeatedly with varying inputs so although the non-zero coefficients would change values, all the zero-coefficients pretty much stayed in place. By doing a sort of pseudo-solution off-line, the software would identify all the unimportant steps and eliminate them from the on-line solution.
daestrom
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
----------------------------

Matrix re-ordering, at least rowwise is simple and quick. Sparsity techniques are generally used along with Newton-Raphson rather than Gauss-Seidel. N-R generally does the job with fewer iterations while there is more work per iteration, there is still an advantage. I believe that the original writer was looking for something simpler. One such is a simplified N-R method where the Jacobean doesn't change (as it normally does in the full blown version) so that the work per iteration is reduced. This might be closer to what he wanted. Stott& Alsac " Fast Decoupled Load Flows", Trans IEEE (PAS), Vol PAS93, May-June 1974, pp859-69
Some approximations are involved to gain speed. Nowadays, computers are considerably faster but for rapidly repeated solutions any speed advantage with reasonable accuracy is beneficial and the fixed Jacobean helps a lot there as its inverse can be found once and re-used. By the way- I said 5 simultaneous non-linear equations- only 4 required (breaking two complex equations into 4 real equations is the normal approach).
--

Don Kelly snipped-for-privacy@shawcross.ca
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hello,
In fact the goal is a simulation of a simple network (about 10 power sources and 50 power consumption).
I look for a "fast" method beacause I want to simulate line broken and so on with an high rate of occurrence.
So the perfect algorithm is not truely need... A "approximate" method will be fine, and that's why I wrote about "shortest path" in my first message.
Another ask is: power from "power sources" is it going to all consumption points or only to nearest points of consumption.
As can I obtain a apparent good result with those type of algortithm?
Thanks again,
Louis.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

You may be able to find the IEEE 14-bus system. This is a system diagram with generators, loads, lines, and a solution to the power flow. You can use it to validate, somewhat, any method you are trying. Searching on that term may also turn up some load flow methodologies. IIRC, when I learned load flows, we iterated, solving for V, then for Q, then for V, then for Q, etc., until the answers were 'close enough'. One can assume V=1 angle=0 at all nodes to get started. There was a trick to get a closer first voltage iteration but I do not remember it, and it's probably not important.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
----------------------------

The trick is to use a Gause Seidel first iteration -then switch to the faster converging Newto-Raphson or some simplified variation of it. However, for a small system as indicated, there are many programs available. It is not hard to write one to suit one's purposes. As for broken line (assuming that this means the line is out of service -not faulted) -there are methods to handle changes to the system admittance matrix. For a decent computer, it is easy enough to simply rebuild the admittance matrix from modified input data -as needed and solve accordingly without getting wound up in complexity. After all the concept involved is the same for 5 busses as for 5000 busses- the difference being the methods to keep storage and array manipulation down-which is not of concern in this case.
--

Don Kelly snipped-for-privacy@shawcross.ca
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>