code: def _quadratic_costs(self, generators, ipol, nxyz, base_mva):
          npol = len(ipol)
          rnpol = range(npol)
          gpol = [g for g in generators if g.pcost_model == POLYNOMIAL]
          if [g for g in gpol if len(g.p_cost) > 3]:
              logger.error("Order of polynomial cost greater than quadratic.")
          iqdr = [i for i, g in enumerate(generators)
                  if g.pcost_model == POLYNOMIAL and len(g.p_cost) == 3]
          ilin = [i for i, g in enumerate(generators)
                  if g.pcost_model == POLYNOMIAL and len(g.p_cost) == 2]
          polycf = zeros((npol, 3))
          if npol > 0:
              if len(iqdr) > 0:
                  polycf[iqdr, :] = array([list(g.p_cost)
                                           for g in generators])
              if len(ilin) > 0:
                  polycf[ilin, 1:] = array([list(g.p_cost[:2])
                                            for g in generators])
              polycf = polycf * array([base_mva**2, base_mva, 1])
              Pg = self.om.get_var("Pg")
              Npol = csr_matrix((ones(npol), (rnpol, Pg.i1 + array(ipol))),
                                (npol, nxyz))
              Hpol = csr_matrix((2 * polycf[:, 0], (rnpol, rnpol)), (npol, npol))
              Cpol = polycf[:, 1]
              fparm_pol = (ones(npol) * array([[1], [0], [0], [1]])).T
          else:
              Npol = Hpol = None
              Cpol = array([])
              fparm_pol = zeros((0, 4))
          return Npol, Hpol, Cpol, fparm_pol, polycf, npol