Returns the linear problem constraints.

def _linear_constraints(self, om):
        """ Returns the linear problem constraints.
        """
        A, l, u = om.linear_constraints() # l <= A*x <= u

        # Indexes for equality, greater than (unbounded above), less than
        # (unbounded below) and doubly-bounded box constraints.
#        ieq = flatnonzero( abs(u - l) <= EPS )
#        igt = flatnonzero( (u >=  1e10) & (l > -1e10) )
#        ilt = flatnonzero( (l <= -1e10) & (u <  1e10) )
#        ibx = flatnonzero( (abs(u - l) > EPS) & (u < 1e10) & (l > -1e10) )

        # Zero-sized sparse matrices not supported.  Assume equality
        # constraints exist.
##        AA = A[ieq, :]
##        if len(ilt) > 0:
##            AA = vstack([AA, A[ilt, :]], "csr")
##        if len(igt) > 0:
##            AA = vstack([AA, -A[igt, :]], "csr")
##        if len(ibx) > 0:
##            AA = vstack([AA, A[ibx, :], -A[ibx, :]], "csr")
#
#        if len(ieq) or len(igt) or len(ilt) or len(ibx):
#            sig_idx = [(1, ieq), (1, ilt), (-1, igt), (1, ibx), (-1, ibx)]
#            AA = vstack([sig * A[idx, :] for sig, idx in sig_idx if len(idx)])
#        else:
#            AA = None
#
#        bb = r_[u[ieq, :], u[ilt], -l[igt], u[ibx], -l[ibx]]
#
#        self._nieq = ieq.shape[0]
#
#        return AA, bb

        return A, l, u