DEPRECATED This module is not supported as of Hassayampa (Version 3.0)
Introduction
The network module implements a balanced threephase positive sequence power flow solver using the GaussSeidel method (Gauss 1809), as described by Kundur (1993).
Balanced ThreePhase Steadystate Transmission Network Flow Solution Using GaussSeidel Method
The GaussSeidel (GS) method is a linear iterative method (as opposed to the NewtonRaphson (NR) method, which uses a quadratic iterative method). The only differences between the two methods are the rate of convergence and the robustness of convergence when the starting state is bad. Because GridLABD is a quasisteady timeseries simulation, most state changes are small and result in only one or two iterations in either method. However, the GS method can be more easily implemented using parallel processing systems (such as multicore systems). In addition, the GS method is more likely to solve for new conditions that are far from the current solution. However, the GS method can have difficulty computing flows under hightransfer conditions.
The GS method uses an iterative approach proposed by von Seidel (1874). The GS method iterates using the firstorder approximation of the Taylor expansion, and the NR method uses a secondorder approximation. In the GS method the fundamental equation for the kth node can written as
The GS method is often criticized as inferior. This is categorically not true. The GS method has strengths and weaknesses when compared to the NR method. Depending on the circumstances, one method may be preferred over the other. But both, indeed all, valid methods produce the same answers. In fact, many commercial power flow solvers implement both methods concurrently, recognizing the necessity to exploit the appropriate method under any given circumstance. Hence, the implementation of the GS method does not make GridLABD's solution method inferior. It is simply a recognition that the circumstances of the power flow solution needed in GridLABD led to the choice of GS as the default power flow solver. Other power flow solvers can and should be implemented to address different circumstances. We encourage users and developers to consider doing so.
Important note: The solution method requires that the best known voltage be used at all times. This means that each time a voltage is updated, all the branch YV contributions to adjacent busses must be immediately updated.
Bus Solutions
The node is one of the major components of the method used for solving a power flow network. In essence, the distribution network can be seen as a series of nodes and links. A node’s primary responsibility is to act as an aggregation point for the links that are attached to it, and to update the current and voltage values that will be used in the calculations done in the links.
Three types of nodes are defined. Nodes are simply a basic object that exports the voltages for each phase. Triplex nodes export voltages for three lines off a single split phase. All other node objects can have one or more phases defined.
The types of nodes that are supported are the following:
 PQ buses are nodes that have both constant real and reactive power injections.
 PV buses are for nodes that have constant real power injection but can control reactive power injection.
 SWING buses are nodes that are designated to absorb the residual error and are also used for generators that can control both real and reactive power injections.
PQ Bus
The PQ bus is the most commonly found bus type in electric network models. PQ buses are nodes where both the real power (P) and reactive power (Q) are given. In these cases, the updated voltage at a node is found from an existing (nonzero) voltage using
where [math] \overline {Y}_k \gets G_k + \jmath B_k + \sum\limits_{i=1,i\neq k}^n{\overline Y_{ki}} [/math]
PV Bus
The PV bus is the next most common bus type in electric network model. PV buses are nodes where the real power (P) is given, but the reactive power (Q) must be determined at each iteration. In these cases, the updated voltage for a node is found by calculating (3.2) If Q exceeds the Q limits [Qmin, Qmax], then the angle is fixed to the corresponding limit and the bus is solved as a PQ bus.
SWING Bus
The SWING bus occurs at least once in any given island of a network models. Large models may have more than one SWING bus, particularly if areas of the network are only lightly coupled by relatively highimpedance links. SWING bus nodes are nodes where both the real power (P) and reactive power (Q) must be determined each iteration. In these cases, the updated voltage for a node is found by
where [math] P + \jmath Q = \overline S [/math]
Branch Solutions
The link object implements the general solution elements for branches using the GS method. The following sequence of operations is performed on each branch during a bottomup sync event.
The effective admittance Y is calculated by including half of the line charging capacitance B (Kundur 1993):
The admittance coefficient is the inverse of the transformer turns ratio [math]n[/math], if any (Kundur 1993):
The effective line selfadmittance is the product of the admittance coefficient and component admittance:
Add the selfadmittance and the shunt admittances to the busses (Kundur 1993):
Compute the line current injections on the busses:
Add the current injections to the busses:
Network module implementation
The network module implements the GaussSeidel solution method for balanced positivesequence flow power models of transmission systems.
The module global variables are shown in Table 1.
Property

Type

Default

Unit

Description


acceleration_factor  double  1.4  pu  The voltage update gain factor (usually between 1.4 and 1.7) 
convergence_limit  double  0.001  V  The maximum allowable voltage change for iteration to halt 
mvabase  double  1.0  MVA  The megaVoltAmp basis to use in calculating powers 
kvbase  double  12.5  kV  The kiloVolt basis to use calculating voltages 
model_year  int16  2000  CE  The basis year of the model 
model_case  char8  "S"  [WSF]  The basis of the case (e.g., winter, summer, fall) 
model_name  char32  "(unnamed)"  *  The name of the model 
Node class
Network node objects represent busses in the transmission network. Three types of nodes are possible, and selecting using the type property:
 PQ busses are general busses that have constant power (both real and reactive power are invariant);
 PV busses are busses that have constant real power, but reactive power must be computed; and
 SWING busses are busses for which both real and reactive power must be computed and there must be at least one SWING bus per network island.
The node class must clear the admittance and current injection accumulators on the pretopdown pass and compute the new voltage on the bottomup pass of synchronization. The voltage update pseudo code is as follows:
selfadmittance < admittanceaccumulator + complex (conductance + j susceptance)
if type is SWING
power <= conjugate ( conjugate voltage x ( selfadmittance x voltage + currentinjectionaccumulator ) )
newvoltage <= voltage
voltagechange <= complex zero
else if selfadmittance nonzero
if type is PV
imaginary power <= imaginary ( voltage * ( selfadmittance x voltage + currentinjectionaccumulator ) )
if imaginary power lessthan minimum reactivelimit
imaginary power <= minimumreactivelimit
newvoltage <= ( conjugate power / conjugate voltage  currentinjectionaccumulator ) / selfadmittance
else if imaginary power greaterthan maximum reactivelimit
imaginary power <= minimumreactivelimit
newvoltage <= ( conjugate power / conjugate voltage  currentinjectionaccumulator ) / selfadmittance
else
newvoltage <= ( conjugate power / conjugate voltage  currentinjectionaccumulator ) / selfadmittance
magnitude newvoltage <= magnitude voltage
end
end
voltagechange <= newvoltage  voltage
voltage <= newvoltage
end
else
newvoltage <= voltage
voltagechange <= complex zero
end
for each branch in incidentbrancheslist
currentchange <= voltagechange x branch.admittance / branch.turnsratio
if node is branch.frombus
otherbus <= branch.tobus
else
otherbus <= branch.frombus
end
otherbus.currentinjectionaccumulator <+ currentchange
end
if magnitude voltagechange greaterthan convergencelimit
timestep <= zero
else
timestep <= infinity
end
Link class
The network link object represents branches in the transmission network. The link class must compute the initial voltage estimates for the solution during the first bottomup synchronization pass. The link need not update the voltage in subsequent iterations for the same timestep unless the admittance or turnsratio has changed. Changes to the currentinjectionaccumulators resulting from bus voltage changes are handled by the node's bottomup pass. The code for the link bottomup synchronization is as follows:
effectiveadmittance <= admittance + j linesusceptance / 2
admittancecontribution <= effectiveadmittance / turnsratio
frombus.selfadmittanceaccumulator <+ admittancecontribution + admittancecontribution x ( 1/turnsratio  1 )
frombus.currentinjectionaccumulator <+ tobus.voltage x admittance / turnsratio
tobus.selfadmittanceaccumulator <+ admittancecontribution + effectiveadmittance x ( 1  1/turnsratio )
tobus.currentinjectionaccumulator <+ frombus.voltage x admittance / turnsratio
netcurrentflow <= ( frombus.voltage  tobus.voltage ) x admittance / turnsratio
Derived Classes
All derived classes must update the appropriate properties of the link and node classes. The following derivations are recommended/anticipated:
Transformers
The transformer class is derived from the link class, with the value of turns_ratio being nonunitary.
Switches
The switch class is derived from the link class, with the value of the admittance being zero when the switch is open. Attention should be given the possibility that operating a switch can lead to islands, which would require additional SWING busses.
Generators
The generator class is derived from the node class where the real power is positive. If the reactive power is fixed, the node type should be PQ and if the reactive power is variable, it should be PV
Loads
The load class is derived from the node class where the real power is negative. The node type should be PQ.
Others
Consideration should be given to implementing the following
 capacitor banks
 phase shifters
 highvoltage DC lines
 relays
 metering devices and phasor measurement units
Model check procedure
The network model check procedure requires the following properties be verified.
 . Each link must be connected to a bus on both ends (from and to);
 . Each link must have a nonzero admittance (i.e., is must not be normally open);
 . Each node must have at least one incident link;
 . Each flow area must have a SWING bus;
 . Each no must be connected to a SWING bus or to a node that recursively connects to a SWING bus
If each of these can be confirmed for the entire model, then the check is successful. A warning may be emitted if a flow area has more than one SWING bus.
Model import/export
CDF Files
The CDF import routine reads an IEEE CDF file and loads the model into GridLABD.
The IEEE CDF file format is documented at http://www.ee.washington.edu/research/pstca/formats/cdf.txt. Additional information and sample data files are also available at http://www.ee.washington.edu/research/pstca/. For more information on IEEE CDF files, see http://www.google.com/search?hl=en&q=IEEE%20power%20flow%20file%20format%20CDF.
References
Gauss CF. 1809. Theoria motus corporum coelestium in sectionibus conicis solem ambientium. Perthes et Besser, Hamburg, Germany.
Kundur, P. 1993. Power System Stability and Control. McGraw Hill, New York.
Von Seidel, P.L. 1874. Über ein Verfahren, die Gleichungen, auf welche die Methode der kleinsten Quadrate führt, sowie lineare Gleichungen überhaupt, durch successive Annäherung aufzulösen. Abh. bayer Akad. Wiss, Germany.