def make_SDP_ccc(delta, gap_dict, NSO): delta = context(delta) pvms = [] for sector in ("S", "T", "A"): if sector is not "A": spins = [spin for spin in cbs.keys() if spin % 2 == 0] else: spins = [spin for spin in cbs.keys() if spin % 2 != 0] for spin in spins: pvms.append(make_F(delta, sector, spin, gap_dict, NSO)) norm = make_F(delta, "A", 1, None, NSO, Delta=1 + 2 * context.epsilon) obj = make_F(delta, "S", 0, None, NSO, Delta=0) return context.sumrule_to_SDP(norm, obj, pvms)
def make_SDP_for_cc(delta, gap_dict={0: 1}): delta = context(delta) Fs = [make_F(delta, spin, gap_dict) for spin in cbs.keys()] mat_F = context.F_minus_matrix(delta) norm = context.dot(mat_F, context.gBlock(2, 3, 0, 0)) obj = context.dot(mat_F, context.gBlock(0, 0, 0, 0)) return context.SDP(norm, obj, Fs)
def make_SDP_epsilon_prime(delta, gap_dict): delta = context(delta) Fs = [make_F(delta, spin, gap_dict) for spin in cbs.keys()] mat_F = context.F_minus_matrix(delta) Fs += [context.dot(mat_F, context.gBlock(0, delta, 0, 0))] norm = context.dot(mat_F, context.gBlock(0, 0, 0, 0)) obj = norm * 0 return context.SDP(norm, obj, Fs)
def make_SDP(delta, gap_dict, NSO=2): delta = context(delta) pvms = [] for sector in ("S", "T", "A"): if sector is not "A": spins = [spin for spin in cbs.keys() if spin % 2 == 0] else: spins = [spin for spin in cbs.keys() if spin % 2 != 0] for spin in spins: pvms.append(make_F(delta, sector, spin, gap_dict, NSO)) norm_F = context.F_minus_matrix(delta).dot(context.gBlock(0, 0, 0, 0)) norm_H = context.F_plus_matrix(delta).dot(context.gBlock(0, 0, 0, 0)) norm = np.concatenate((context.null_ftype, norm_F, norm_H)) obj = norm * 0 return context.SDP(norm, obj, pvms)