The HELM Algorithm - SanPen/GridCal GitHub Wiki
Holomorphic Embedding Power Flow
First introduced by Antonio Trias in 2012, promises to be a non-divergent power flow method. Trias originally developed a version with no voltage controlled nodes (PV), in which the convergence properties are excellent.
The version programmed in the file HelmVect_ASU.py
has been adapted from the master thesis of Muthu Kumar Subramanian at the Arizona State University. This version includes a formulation of the voltage controlled nodes. My experience indicates that the introduction of the PV control deteriorates the convergence properties of the holomorphic embedding method. However, in many cases, it is the best approximation to a solution. especially when Newton-Raphson does not provide one.
The HelmVect_ASU.py
file contains a vectorized version of the algorithm. This means that the execution in python is much faster than the version that uses loops. There are other versions of the algorithm in that folder as well.
Concepts
All the power flow algorithms until the HELM method was introduced were iterative and recursive. The helm method is iterative but not recursive. A simple way to think of this is that traditional power flow methods are exploratory, while the HELM method is a planned journey. In theory the HELM method is superior, but in practice the numerical degeneration makes it less ideal.
The fundamental idea of the recursive algorithms is that given a voltage initial point (1 p.u. at every node, usually) the algorithm explores the surroundings of the initial point until a suitable voltage solution is reached or no solution at all is found because the initial point is supposed to be "far" from the solution.
On the HELM methods, we form a "curve" that departures from a known mathematically exact solution that is obtained from solving the grid with no power injections. This is possible because with no power injections, the grid equations become linear and straight forward to solve. The arriving point of the "curve" is the solution that we want to achieve. That "curve" is best approximated by a Padè approximation. To compute the Padè approximation we need to compute coefficient of the unknown variables, in our case the voltage (and possibly the reactive power).
The HELM formulation consists in the derivation of formulas that enable the calculation of the coefficients of the series that describes the "curve" from the mathematically know solution to the unknown solution. Once the coefficients are obtained, the Padè approximation computes the voltage solution at the "end of the curve", providing the desired voltage solution. The more coefficients we compute the more exact the solution is (this is true until the numerical precision limit is reached).
All this sounds very strange, but it works ;)
If you want to get familiar with this concept, you should read about the homotopy concept. In practice the continuation power flow does the same as the HELM algorithm, it takes a known solution and changes the loading factors until a solution for another state is reached.
Check the documentation to see the formulas (unfortunately I cannot display formulas using markup...)
Note on the PV nodes implementation
Up to the date, I have not seen any formulation on the literature (IEEE papers, of PhD/MSc thesis) that can compete with Newton-Raphson / Levenberg-Marquardt. All of them exhibit degradation in the convergence properties.
To be continued...