Skip to content

Python Implementation Of Carson's Equations

License

Notifications You must be signed in to change notification settings

kdheepak/carsons

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

carsons

latest release on pypi versons of python supported by carsons GitHub license build passing or failing test coverage Maintainability

This is an implementation of Carson's Equations, a mathematical model for deriving the equivalent impedance of an AC transmission or distribution line.

Implementation

carsons is developed using python 3.6 support for unicode characters like π, ƒ, ρ, μ, ω etc. This feature allows us to avoid translating the problem into a more typical programming syntax, so the code is dense and can easily be compared to published formulations of the problem.

For example, we implement the kron reduction, a matrix decomposition step, using unicode notation to indicate the slightly different meaning of impedance values before and after a kron reduction:

def perform_kron_reduction(z_primitive):
     Ẑpp, Ẑpn = z_primitive[0:3, 0:3], z_primitive[0:3, 3:]
     Ẑnp, Ẑnn = z_primitive[3:,  0:3], z_primitive[3:,  3:]
     Z_abc = Ẑpp - Ẑpn @ inv(Ẑnn) @ Ẑnp
     return Z_abc

Take a look at the source code to see more cool unicode tricks!

Installation

~/$ pip install carsons

Usage

Carsons model requires a line model object that maps each phase to properties of the conductor for that phase.

from carsons import CarsonsEquations, perform_kron_reduction

 class Line:
    gmr: {
        'A': geometric_mean_radius_A
        ...
    }
    r: {
         'A' => per-length resistance of conductor A in ohms
         ...
    }
    phase_positions: {
         'A' => (x, y) cross-sectional position of the conductor in meters
         ...
    }
    phases: {'A', ... }
      # map of phases 'A', 'B', 'C' and 'N<>' which are described in the
      # gmr, r and phase_positions attributes


 z_primitive = CarsonsEquations(Line()).build_z_primitive()
 z_abc = perform_kron_reduction(z_primitive)

The model supports any combination of ABC phasings (for example BC, BCN etc...) including systems with multiple neutral cables; any phases that are not present in the model will have zeros in the columns and rows corresponding to that phase.

Multiple neutrals are supported, as long as they have unique labels starting with N (e.g. Neutral1, Neutral2).

For examples of how to use the model, see the tests.

carsons is tested against several cable configurations from the IEEE 4-bus test network.

Problem Description

Carsons equations model an AC transmission or distribution line into an equivalent set of phase-phase impedances, which can be used to model the line in a power flow analysis.

For example, say we have a 4-wire system on a utility pole, with A, B, C phase conductors as well as a neutral cable N. We know that when conductors carry electrical current, they exhibit a magnetic field --- so its pretty easy to imagine that, e.g., the magnetic field produced by A would interact with the B, C, and N conductors.

                        B
                          O
                          |
                          |
              A        N  |       C
                O        O|         O
                ----------|-----------
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
                          |
    ==============[Ground]============================
    /     /     /     /     /     /     /     /     /
         /     /     /     /     /     /     /
              /     /     /     /     /










                 A*       N*          C*
                   0        0           0

                           B*
                             0

Figure: Cross-section of a 4-wire distribution line, with
        ground return.

However, each conductor also has a ground return path (or 'image') --- shown as A*, B*, C*, and N* in the figure above --- which is a magnetically induced current path in the ground. When A produceds a magnetic field, that field also interacts with B*, C*, N*, and A*. Carsons equations model all these interactions and reduce them to an equivalent impedance matrix that makes it much easier to model this system.

In addition carsons implements the kron reduction, a conversion that approximates the impedances caused by neutral cables by incorporating them into the impedances for phase A, B, and C. Since most AC and DC powerflow formulations don't model the neutral cable, this is a valuable simplification.

References

The following works were used to produce this formulation:

About

Python Implementation Of Carson's Equations

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%