Home > matpower5.0 > d2ASbr_dV2.m

d2ASbr_dV2

PURPOSE ^

D2ASBR_DV2 Computes 2nd derivatives of |complex power flow|^2 w.r.t. V.

SYNOPSIS ^

function [Haa, Hav, Hva, Hvv] =d2ASbr_dV2(dSbr_dVa, dSbr_dVm, Sbr, Cbr, Ybr, V, lam)

DESCRIPTION ^

D2ASBR_DV2   Computes 2nd derivatives of |complex power flow|^2 w.r.t. V.
   [HAA, HAV, HVA, HVV] = D2ASBR_DV2(DSBR_DVA, DSBR_DVM, SBR, CBR, YBR, V, LAM)
   returns 4 matrices containing the partial derivatives w.r.t. voltage
   angle and magnitude of the product of a vector LAM with the 1st partial
   derivatives of the square of the magnitude of branch complex power flows.
   Takes sparse first derivative matrices of complex flow, complex flow
   vector, sparse connection matrix CBR, sparse branch admittance matrix YBR,
   voltage vector V and nl x 1 vector of multipliers LAM. Output matrices
   are sparse.

   Example:
       f = branch(:, F_BUS);
       Cf =  sparse(1:nl, f, ones(nl, 1), nl, nb);
       [Ybus, Yf, Yt] = makeYbus(baseMVA, bus, branch);
       [dSf_dVa, dSf_dVm, dSt_dVa, dSt_dVm, Sf, St] = ...
               dSbr_dV(branch, Yf, Yt, V);
       Cbr = Cf;
       Ybr = Yf;
       dSbr_dVa = dSf_dVa;
       dSbr_dVm = dSf_dVm;
       Sbr = Sf;
       [Haa, Hav, Hva, Hvv] = ...
             d2ASbr_dV2(dSbr_dVa, dSbr_dVm, Sbr, Cbr, Ybr, V, lam);

   Here the output matrices correspond to:
     Haa = (d/dVa (dASbr_dVa.')) * lam
     Hav = (d/dVm (dASbr_dVa.')) * lam
     Hva = (d/dVa (dASbr_dVm.')) * lam
     Hvv = (d/dVm (dASbr_dVm.')) * lam

   See also DSBR_DV.

   For more details on the derivations behind the derivative code used
   in MATPOWER information, see:

   [TN2]  R. D. Zimmerman, "AC Power Flows, Generalized OPF Costs and
          their Derivatives using Complex Matrix Notation", MATPOWER
          Technical Note 2, February 2010.
             http://www.pserc.cornell.edu/matpower/TN2-OPF-Derivatives.pdf

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [Haa, Hav, Hva, Hvv] = ...
0002     d2ASbr_dV2(dSbr_dVa, dSbr_dVm, Sbr, Cbr, Ybr, V, lam)
0003 %D2ASBR_DV2   Computes 2nd derivatives of |complex power flow|^2 w.r.t. V.
0004 %   [HAA, HAV, HVA, HVV] = D2ASBR_DV2(DSBR_DVA, DSBR_DVM, SBR, CBR, YBR, V, LAM)
0005 %   returns 4 matrices containing the partial derivatives w.r.t. voltage
0006 %   angle and magnitude of the product of a vector LAM with the 1st partial
0007 %   derivatives of the square of the magnitude of branch complex power flows.
0008 %   Takes sparse first derivative matrices of complex flow, complex flow
0009 %   vector, sparse connection matrix CBR, sparse branch admittance matrix YBR,
0010 %   voltage vector V and nl x 1 vector of multipliers LAM. Output matrices
0011 %   are sparse.
0012 %
0013 %   Example:
0014 %       f = branch(:, F_BUS);
0015 %       Cf =  sparse(1:nl, f, ones(nl, 1), nl, nb);
0016 %       [Ybus, Yf, Yt] = makeYbus(baseMVA, bus, branch);
0017 %       [dSf_dVa, dSf_dVm, dSt_dVa, dSt_dVm, Sf, St] = ...
0018 %               dSbr_dV(branch, Yf, Yt, V);
0019 %       Cbr = Cf;
0020 %       Ybr = Yf;
0021 %       dSbr_dVa = dSf_dVa;
0022 %       dSbr_dVm = dSf_dVm;
0023 %       Sbr = Sf;
0024 %       [Haa, Hav, Hva, Hvv] = ...
0025 %             d2ASbr_dV2(dSbr_dVa, dSbr_dVm, Sbr, Cbr, Ybr, V, lam);
0026 %
0027 %   Here the output matrices correspond to:
0028 %     Haa = (d/dVa (dASbr_dVa.')) * lam
0029 %     Hav = (d/dVm (dASbr_dVa.')) * lam
0030 %     Hva = (d/dVa (dASbr_dVm.')) * lam
0031 %     Hvv = (d/dVm (dASbr_dVm.')) * lam
0032 %
0033 %   See also DSBR_DV.
0034 %
0035 %   For more details on the derivations behind the derivative code used
0036 %   in MATPOWER information, see:
0037 %
0038 %   [TN2]  R. D. Zimmerman, "AC Power Flows, Generalized OPF Costs and
0039 %          their Derivatives using Complex Matrix Notation", MATPOWER
0040 %          Technical Note 2, February 2010.
0041 %             http://www.pserc.cornell.edu/matpower/TN2-OPF-Derivatives.pdf
0042 
0043 %   MATPOWER
0044 %   $Id: d2ASbr_dV2.m 1720 2010-11-16 16:05:47Z cvs $
0045 %   by Ray Zimmerman, PSERC Cornell
0046 %   Copyright (c) 2008-2010 by Power System Engineering Research Center (PSERC)
0047 %
0048 %   This file is part of MATPOWER.
0049 %   See http://www.pserc.cornell.edu/matpower/ for more info.
0050 %
0051 %   MATPOWER is free software: you can redistribute it and/or modify
0052 %   it under the terms of the GNU General Public License as published
0053 %   by the Free Software Foundation, either version 3 of the License,
0054 %   or (at your option) any later version.
0055 %
0056 %   MATPOWER is distributed in the hope that it will be useful,
0057 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
0058 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0059 %   GNU General Public License for more details.
0060 %
0061 %   You should have received a copy of the GNU General Public License
0062 %   along with MATPOWER. If not, see <http://www.gnu.org/licenses/>.
0063 %
0064 %   Additional permission under GNU GPL version 3 section 7
0065 %
0066 %   If you modify MATPOWER, or any covered work, to interface with
0067 %   other modules (such as MATLAB code and MEX-files) available in a
0068 %   MATLAB(R) or comparable environment containing parts covered
0069 %   under other licensing terms, the licensors of MATPOWER grant
0070 %   you additional permission to convey the resulting work.
0071 
0072 %% define
0073 nl = length(lam);
0074 
0075 diaglam = sparse(1:nl, 1:nl, lam, nl, nl);
0076 diagSbr_conj = sparse(1:nl, 1:nl, conj(Sbr), nl, nl);
0077 
0078 [Saa, Sav, Sva, Svv] = d2Sbr_dV2(Cbr, Ybr, V, diagSbr_conj * lam);
0079 Haa = 2 * real( Saa + dSbr_dVa.' * diaglam * conj(dSbr_dVa) );
0080 Hva = 2 * real( Sva + dSbr_dVm.' * diaglam * conj(dSbr_dVa) );
0081 Hav = 2 * real( Sav + dSbr_dVa.' * diaglam * conj(dSbr_dVm) );
0082 Hvv = 2 * real( Svv + dSbr_dVm.' * diaglam * conj(dSbr_dVm) );

Generated on Mon 26-Jan-2015 15:21:31 by m2html © 2005