code: def d2AIbr_dV2(self, dIbr_dVa, dIbr_dVm, Ibr, Ybr, V, lam):
          
          il = range(len(lam))
  
          diaglam = csr_matrix((lam, (il, il)))
          diagIbr_conj = csr_matrix((conj(Ibr), (il, il)))
  
          Iaa, Iav, Iva, Ivv = self.d2Ibr_dV2(Ybr, V, diagIbr_conj * lam)
  
          Haa = 2 * ( Iaa + dIbr_dVa.T * diaglam * dIbr_dVa.conj() ).real
          Hva = 2 * ( Iva + dIbr_dVm.T * diaglam * dIbr_dVa.conj() ).real
          Hav = 2 * ( Iav + dIbr_dVa.T * diaglam * dIbr_dVm.conj() ).real
          Hvv = 2 * ( Ivv + dIbr_dVm.T * diaglam * dIbr_dVm.conj() ).real
  
          return Haa, Hav, Hva, Hvv
docs: Based on d2AIbr_dV2.m from MATPOWER by Ray Zimmerman, developed
          at PSERC Cornell. See U{http://www.pserc.cornell.edu/matpower/} for
          more information.
  
          @rtype: tuple
          @return: The 2nd derivatives of |complex current|**2 w.r.t. V.