# -*- 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