| 123456789101112131415161718192021222324252627282930313233343536373839 |
- # -*- coding: utf-8 -*-
- # =============================================================================
- # Copyright (C) 2018 Mercados Electricos de Centroamérica. All rights reserved
- # =============================================================================
- """Construye las matrices PTDF (Matriz H) para el cálculo de flujos DC
- """
- from numpy import zeros
- from numpy.linalg import solve
- from simsdt.red.makeBdc import makeBdc
- def makePTDF(bus, branch):
- """Construye la matriz PTDF DC
- Toma como nodo slack el primer nodo.
- La matriz es de dimensiones C{nbr x nb}, en donde C{nbr} es el numero de
- lineas y C{nb} es el numero de buses o nodos. El nodo slack siempre es el
- primer nodo.
- @author: Oscar A. Leiva (MERELEC)
- """
- # constantes
- nb = bus.shape[0]
- nbr = branch.shape[0]
- Bbus, Bf, _ = makeBdc(bus, branch)
- Bbus, Bf = Bbus.todense(), Bf.todense()
- H = zeros((nbr, nb))
- H[:, 1:] = solve(Bbus[1:, 1:].T, Bf[:, 1:].T).T
- # = Bf[:,1:] * inv(Bbus[1:,1:])
- return H
|