Package pypower :: Module d2Ibr_dV2
[hide private]
[frames] | no frames]

Source Code for Module pypower.d2Ibr_dV2

 1  # Copyright (C) 2008-2011 Power System Engineering Research Center (PSERC) 
 2  # Copyright (C) 2011 Richard Lincoln 
 3  # 
 4  # PYPOWER is free software: you can redistribute it and/or modify 
 5  # it under the terms of the GNU General Public License as published 
 6  # by the Free Software Foundation, either version 3 of the License, 
 7  # or (at your option) any later version. 
 8  # 
 9  # PYPOWER is distributed in the hope that it will be useful, 
10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
12  # GNU General Public License for more details. 
13  # 
14  # You should have received a copy of the GNU General Public License 
15  # along with PYPOWER. If not, see <http://www.gnu.org/licenses/>. 
16   
17  """Computes 2nd derivatives of complex branch current w.r.t. voltage. 
18  """ 
19   
20  from numpy import ones, arange 
21  from scipy.sparse import csr_matrix as sparse 
22   
23   
24 -def d2Ibr_dV2(Ybr, V, lam):
25 """Computes 2nd derivatives of complex branch current w.r.t. voltage. 26 27 Returns 4 matrices containing the partial derivatives w.r.t. voltage 28 angle and magnitude of the product of a vector LAM with the 1st partial 29 derivatives of the complex branch currents. Takes sparse branch admittance 30 matrix C{Ybr}, voltage vector C{V} and C{nl x 1} vector of multipliers 31 C{lam}. Output matrices are sparse. 32 33 For more details on the derivations behind the derivative code used 34 in PYPOWER information, see: 35 36 [TN2] R. D. Zimmerman, I{"AC Power Flows, Generalized OPF Costs and 37 their Derivatives using Complex Matrix Notation"}, MATPOWER 38 Technical Note 2, February 2010. 39 U{http://www.pserc.cornell.edu/matpower/TN2-OPF-Derivatives.pdf} 40 41 @author: Ray Zimmerman (PSERC Cornell) 42 @author: Richard Lincoln 43 """ 44 nb = len(V) 45 ib = arange(nb) 46 diaginvVm = sparse((ones(nb) / abs(V), (ib, ib))) 47 48 Haa = sparse((-(Ybr.T * lam) * V, (ib, ib))) 49 Hva = -1j * Haa * diaginvVm 50 Hav = Hva.copy() 51 Hvv = sparse((nb, nb)) 52 53 return Haa, Hav, Hva, Hvv
54