


ADDTOA Adds a term to the decomposed A matrices
[A] = ADDTOA(SDPMAT, WREF_DD, WREF_QQ, WREF_DQ, MATIDX_DD, MATIDX_QQ, MATIDX_DQ, A, SDPVAR, MAXCLIQUE)
Adds a matrix multiplied by a sdp variable to the A matrices.
Inputs:
SDPMAT : A 2*nbus by 2*nbus matrix.
WREF_DD : Matrix with three columns. The first column is a
numbering 1:size(Wref_dd,1). The second and third columns
indicate the row and column indices of the elements of the
matrix sdpmat, with the row of Wref_dd corresponding to the
index of matidx_dd. That is, the element of sdpmat located in
row Wref_dd(i,1), column Wref_dd(i,2) corresponds to
matidx_dd(i).
WREF_QQ : Similar to Wref_dd, except for the qq entries of sdpmat.
WREF_DQ : Similar to Wref_dd, except for the dq entries of sdpmat.
MATIDX_DD : Matrix with three columns. Row i of matidx_dd indicates
the location of sdpmat(Wref_dd(i,1), Wref_dd(i,2)). The first
column indicates the index of the corresponding matrix. The
second and third columns indicate the row and column,
respectively, of the corresponding matrix.
MATIDX_QQ : Similar to matidx_dd, except corresponding to the qq
entries of sdpmat.
MATIDX_DQ : Similar to matidx_dd, except corresponding to the dq
entries of sdpmat.
A : Cell array of decomposed A matrices corresponding to maxclique.
SVAR : SDP variable (sdpvar) that will be multiplied by sdpmat and
added to the decomposed A matrices.
MAXCLIQUE : Cell array of the buses in each maximal clique.
Outputs:
A : Cell array of decomposed A matrices with addition of
svar*sdpmat.

0001 function [A] = addToA(sdpmat, Wref_dd, Wref_qq, Wref_dq, matidx_dd, matidx_qq, matidx_dq, A, svar, maxclique) 0002 %ADDTOA Adds a term to the decomposed A matrices 0003 % [A] = ADDTOA(SDPMAT, WREF_DD, WREF_QQ, WREF_DQ, MATIDX_DD, MATIDX_QQ, MATIDX_DQ, A, SDPVAR, MAXCLIQUE) 0004 % 0005 % Adds a matrix multiplied by a sdp variable to the A matrices. 0006 % 0007 % Inputs: 0008 % SDPMAT : A 2*nbus by 2*nbus matrix. 0009 % WREF_DD : Matrix with three columns. The first column is a 0010 % numbering 1:size(Wref_dd,1). The second and third columns 0011 % indicate the row and column indices of the elements of the 0012 % matrix sdpmat, with the row of Wref_dd corresponding to the 0013 % index of matidx_dd. That is, the element of sdpmat located in 0014 % row Wref_dd(i,1), column Wref_dd(i,2) corresponds to 0015 % matidx_dd(i). 0016 % WREF_QQ : Similar to Wref_dd, except for the qq entries of sdpmat. 0017 % WREF_DQ : Similar to Wref_dd, except for the dq entries of sdpmat. 0018 % MATIDX_DD : Matrix with three columns. Row i of matidx_dd indicates 0019 % the location of sdpmat(Wref_dd(i,1), Wref_dd(i,2)). The first 0020 % column indicates the index of the corresponding matrix. The 0021 % second and third columns indicate the row and column, 0022 % respectively, of the corresponding matrix. 0023 % MATIDX_QQ : Similar to matidx_dd, except corresponding to the qq 0024 % entries of sdpmat. 0025 % MATIDX_DQ : Similar to matidx_dd, except corresponding to the dq 0026 % entries of sdpmat. 0027 % A : Cell array of decomposed A matrices corresponding to maxclique. 0028 % SVAR : SDP variable (sdpvar) that will be multiplied by sdpmat and 0029 % added to the decomposed A matrices. 0030 % MAXCLIQUE : Cell array of the buses in each maximal clique. 0031 % 0032 % Outputs: 0033 % A : Cell array of decomposed A matrices with addition of 0034 % svar*sdpmat. 0035 0036 % MATPOWER 0037 % Copyright (c) 2013-2019, Power Systems Engineering Research Center (PSERC) 0038 % by Daniel Molzahn, PSERC U of Wisc, Madison 0039 % 0040 % This file is part of MATPOWER/mx-sdp_pf. 0041 % Covered by the 3-clause BSD License (see LICENSE file for details). 0042 % See https://github.com/MATPOWER/mx-sdp_pf/ for more info. 0043 0044 [Ykvec] = mat2vec(sdpmat, Wref_dd, Wref_qq, Wref_dq, matidx_dd, matidx_qq, matidx_dq); 0045 0046 Amats = unique(Ykvec(:,1)); 0047 for m=1:length(Amats) 0048 Ykvec_rows = find(Ykvec(:,1) == Amats(m)); 0049 A{Amats(m)} = A{Amats(m)} + svar * sparse(Ykvec(Ykvec_rows,2),Ykvec(Ykvec_rows,3),Ykvec(Ykvec_rows,4),2*length(maxclique{Amats(m)}),2*length(maxclique{Amats(m)})); 0050 end