Opening Switches

There has been recent interest in how the Open command works. The scanned figure below describes the basic algorithm.

To open Terminal 1 at Bus , we force I1=0 

Perform Kron Reduction to eliminate Row and Column 1 


To prevent Bus 1 from being Inadvertly Isolated we connect a [S] to eah node of BUS 1 by replacling Y11 with a  matrix with [S] on each diagonal. Now, the equation is 

The circuit model for this is : 

This example is for a 3-phase lines or reactors. However, the procedure is the same regardless of the number of phases or whether it has one terminal or 10 terminals.

All circuit elements in OpenDSS are modeled by a "primitive Y" matrix. After the matrix is formed, a Kron reduction is performed for each conductor that is to be opened. This forces the current in that conductor to zero.

The diagonal of the row and column being eliminated is replaced by a tiny admittance (1.0e12 + j0). This effectively places a high resistance to ground, which prevents the node from floating in case there is nothing else connected to it.

One issue to remember with the Open command is that the voltage at the terminal being opened is no longer available. It is eliminated from the problem.

Open a Line By Reconnecting

Instead of using the Open command, you can simply reconnect the element to another bus or set of nodes. For example, if you had a Line object defined as

New Line.MyLine1 Bus1=MyBus1.1.2.3 Bus2=MyBus2.1.2.3 Linecode=MyLinecode Length=5

You can open terminal 1 by


This reconnects the first terminal to nodes 11, 12, and 13. Assuming nothing else is connected to these nodes, this will effectively open the line. One advantage of this is that the voltages at the open terminal nodes (MyBus1.11.12.13) are now available in addition to the voltages at MyBus1.1.2.3, if there was something else connected to nodes MyBus1.1.2.3. If not, these nodes will disappear from the problem until the Line object is reconnected.

Using a High Impedance for an Open Switch

This is usually done with a REACTOR object representing a switch. For example, a closed switch might have an impedance of (0.001 + j0) ohms. And an open switch might have a resistance of 100 Mohms. This will generally work, although you may have to adjust the resistance value if it causes numerical problems.

An example script:

New Reactor.Switch Bus1=TheFirstBus Bus2=TheSecondBus R=0.001 X=0 ! define the switch closed.


// open the switch



// Close it again