Exemple #1
0
def K2inv_mat22(E,L,a2):
  nklist = defns.list_nnk(E,L)
  K2inv22 = []
  for nkvec in nklist:
    kvec = [i*2*pi/L for i in nkvec]
    K2inv22.append(K2inv(E,kvec,2,0,0,0,0,a2)*np.identity(5))
  return block_diag(*K2inv22)
Exemple #2
0
def P_irrep_subspace_22(E, L, I):
    N = len(defns.list_nnk(E, L))
    Psub = np.zeros((5 * N, 0))
    for shell in defns.shell_list(E, L):
        Psub = np.column_stack(
            (Psub, P_irrep_subspace_o_l(E, L, I, shell, 2, lblock=True)))
    return Psub
Exemple #3
0
def K33Bmat(E, L, a0, a2):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)
    #print(nnk_list)
    #print(N)
    Gfull = []
    for p in range(N):
        nnp = list(nnk_list[p])
        Gp = []
        for k in range(N):
            nnk = list(nnk_list[k])

            Gpk = np.zeros((6, 6))
            for i1 in range(6):
                [l1, m1] = Gmatrix.lm_idx(i1)
                for i2 in range(6):
                    [l2, m2] = Gmatrix.lm_idx(i2)
                    Gpk[i1,
                        i2] = K33B.K3cubicB(E, 2 * math.pi / L * np.array(nnp),
                                            l1, m1,
                                            2 * math.pi / L * np.array(nnk),
                                            l2, m2)

            Gp.append(Gpk)

        Gfull.append(Gp)

    matrix = np.ones_like(chop(np.block(Gfull)))

    print(matrix.shape)

    return pr.irrep_proj(matrix, E, L, "A1")
Exemple #4
0
def Xi00(e, L):
    nklist = list_nnk(e, L)
    res = []
    for nnk in nklist:
        res.append(1. / ktinvroot(e, L, sums.norm(nnk)))

    return np.diag(res)
Exemple #5
0
def K2inv_mat00(E,L,a0,r0,P0):
  nklist = defns.list_nnk(E,L)
  K2inv00 = []
  for nkvec in nklist:
    kvec = [i*2*pi/L for i in nkvec]
    K2inv00.append(K2inv(E,kvec,0,0,a0,r0,P0,0))
  return np.diag(K2inv00)
Exemple #6
0
def Gmat(E, L):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)
    #print(nnk_list)
    #print(N)
    Gfull = []
    for p in range(N):
        nnp = list(nnk_list[p])
        Gp = []
        for k in range(N):
            nnk = list(nnk_list[k])

            Gpk = np.zeros((6, 6))
            for i1 in range(6):
                [l1, m1] = lm_idx(i1)
                for i2 in range(6):
                    [l2, m2] = lm_idx(i2)

                    Gpk[i1, i2] = G(E, L, nnp, nnk, l1, m1, l2, m2)

            Gp.append(Gpk)

        Gfull.append(Gp)

    return chop(np.block(Gfull))
Exemple #7
0
def K3mat(E, L, K0, K1, K2, A, B, Ytype):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)

    K3full = []
    for p in range(N):
        pvec = [i * 2 * pi / L for i in nnk_list[p]]

        K3p = []
        for k in range(N):
            kvec = [i * 2 * pi / L for i in nnk_list[k]]

            K3pk = np.zeros((6, 6))
            for i1 in range(6):
                [lp, mp] = lm_idx(i1)
                for i2 in range(6):
                    [l, m] = lm_idx(i2)

                    K3pk[i1][i2] = K3quad(E, pvec, lp, mp, kvec, l, m, K0, K1,
                                          K2, A, B, Ytype)

            K3p.append(K3pk)

        K3full.append(K3p)

    return chop(np.block(K3full))
Exemple #8
0
def K3mat_old(E, L, K0, K1, K2, A, B, Ytype):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)

    K3_00 = np.zeros((N, N))
    K3_02 = np.zeros((N, 5 * N))
    K3_20 = np.zeros((5 * N, N))
    K3_22 = np.zeros((5 * N, 5 * N))

    for i in range(N):
        pvec = [npi * 2 * pi / L for npi in nnk_list[i]]
        for j in range(N):
            kvec = [nki * 2 * pi / L for nki in nnk_list[j]]

            K3_00[i][j] = K3quad(E, pvec, 0, 0, kvec, 0, 0, K0, K1, K2, A, B,
                                 Ytype)

            for mp in range(-2, 3):
                I = (mp + 2) * N + i
                K3_20[I][j] = K3quad(E, pvec, 2, mp, kvec, 0, 0, K0, K1, K2, A,
                                     B, Ytype)

                for m in range(-2, 3):
                    J = (m + 2) * N + j
                    K3_22[I][J] = K3quad(E, pvec, 2, mp, kvec, 2, m, K0, K1,
                                         K2, A, B, Ytype)

                    if mp == 2:  # only do this once (mp==2 is arbitrary)
                        K3_02[i][J] = K3quad(E, pvec, 0, 0, kvec, 2, m, K0, K1,
                                             K2, A, B, Ytype)

    return full_matrix(K3_00, K3_20, K3_02, K3_22)
Exemple #9
0
def RHO00(e, L):

    nklist = list_nnk(e, L)
    res = []
    for nnk in nklist:
        res.append(rho1mH(e, L, sums.norm(nnk)))

    return np.diag(res)
Exemple #10
0
def RHO22(e, L):

    nklist = list_nnk(e, L)
    res = []
    for i in range(5):
        for nnk in nklist:
            res.append(rho1mH(e, L, sums.norm(nnk)))

    return np.diag(res)
Exemple #11
0
def F2_22_matrix(e, L, m1, m2):

    alpha = 0.5
    nklist = list_nnk(e, L)

    F2_22 = []
    for nnk in nklist:
        #print(nnk)
        res = sums.F2KSS(e, L, nnk, 2, m1, 2, m2, alpha)
        F2_22.append(res)

    return np.diag(F2_22)
Exemple #12
0
def F2_20_matrix(e, L, m):

    nklist = list_nnk(e, L)

    alpha = 0.5

    F2_20 = []
    for nnk in nklist:
        res = sums.F2KSS(e, L, nnk, 2, m, 0, 0, alpha)
        F2_20.append(res)

    return np.diag(F2_20)
Exemple #13
0
def F2_02_matrix(e, L, m):

    nklist = list_nnk(e, L)

    alpha = 0.5

    F2_02 = []
    for nnk in nklist:
        # print(nnk)
        res = sums.F2KSS(e, L, nnk, 0, 0, 2, m, alpha)
        F2_02.append(res)

    return np.diag(F2_02)
Exemple #14
0
def Gmat00(E, L):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)

    Gfull = np.zeros((N, N))
    for p in range(N):
        nnp = list(nnk_list[p])
        for k in range(N):
            nnk = list(nnk_list[k])

            Gfull[p][k] = G(E, L, nnp, nnk, 0, 0, 0, 0)

    return chop(Gfull)
Exemple #15
0
def p_iso00(E, L):
    # No normalization
    p_iso = np.ones((len(defns.list_nnk(E, L)), 1))

    # Steve's convention: each column corresponds to a shell with 1/sqrt(N) normalization (so each vector has length=1)
    # shells = defns.shell_list(E,L)
    # p_iso = np.zeros((len(defns.list_nnk(E,L)),len(shells)))
    # i_k = 0
    # for i_shell in range(len(shells)):
    #   N = len(defns.shell_nnk_list(shells[i_shell]))
    #   p_iso[i_k:i_k+N,i_shell] = 1/sqrt(N)
    #   i_k += N
    return p_iso
Exemple #16
0
def full_F2_00_matrix(e, L):

    alpha = 0.5

    nklist = list_nnk(e, L)

    F2_00 = []

    for nnk in nklist:

        res = sums.F2KSS(e, L, nnk, 0, 0, 0, 0, alpha)
        F2_00.append(res)

    return np.diag(F2_00)
Exemple #17
0
def A22(e, L, a2):

    nklist = list_nnk(e, L)
    #    q = np.sqrt(1-sums.E2a2(e,k))
    #    nklist = list_nnk(e,L)
    #    matrixa =  np.diag(np.ones(len(nklist)*5)*(-1/(a2**5*q**4)))
    res = []

    for i in range(5):
        for nnk in nklist:
            q4 = (1 - sums.E2a2(e, 2 * math.pi * sums.norm(nnk) / L))**4
            res.append(-1 / (a2**5 * q4))

#   print(res)
    return np.diag(res)
Exemple #18
0
def G00(e, L):

    nklist = list_nnk(e, L)
    G_00 = np.zeros((len(nklist), len(nklist)))
    #G_00 = np.zeros((len(nklist),len(nklist)),dtype=complex)

    i = 0
    for nnp in nklist:  # TB: I reversed nnp and nnk
        j = 0
        for nnk in nklist:
            # print(nnk, nnp)
            G_00[i][j] = G(e, L, nnp, nnk, 0, 0, 0, 0)
            j += 1
        i += 1

    return G_00
Exemple #19
0
def G22m(e, L, m1, m2):

    nklist = list_nnk(e, L)
    G_22 = np.zeros((len(nklist), len(nklist)))
    #G_22 = np.zeros((len(nklist),len(nklist)),dtype=complex)

    i = 0
    for nnp in nklist:  # TB: I reversed nnp and nnk
        j = 0
        for nnk in nklist:
            # print(nnk, nnp)
            G_22[i][j] = G(e, L, nnp, nnk, 2, m1, 2, m2)
            j += 1
        i += 1

    return G_22
Exemple #20
0
def Gmat00(E, L):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)
    #  print(nnk_list)
    #  print(list(nnk_list[0]))

    Gfull = np.zeros((N, N))
    for p in range(N):
        #    nnp = list(nnk_list[p])
        nnp = nnk_list[p]
        for k in range(N):
            #      nnk = list(nnk_list[k])
            nnk = nnk_list[k]
            Gfull[p, k] = G(E, L, np.array(nnp), np.array(nnk), 0, 0, 0, 0)

    return chop(Gfull)
Exemple #21
0
def K2inv_mat(E,L,a0,r0,P0,a2):
  nnk_list = defns.list_nnk(E,L)
  N = len(nnk_list)

  K2i_full = []
  for k in range(N):
    kvec = [ ki*2*pi/L for ki in nnk_list[k] ]

    K2i_k_diag = []
    for i in range(6):
      [l,m] = defns.lm_idx(i)
      K2i_k_diag.append(K2inv(E,kvec,l,m,a0,r0,P0,a2))

    K2i_k = np.diag(K2i_k_diag)
    K2i_full.append(K2i_k)

  return block_diag(*K2i_full)
Exemple #22
0
def P_irrep_subspace(E, L, I):
    # P_I = P_irrep_full(E,L,I)
    # elist, vlist = LA.eig(P_I)
    # # eigenvalues should all be 0 or 1; only want 1's
    # ivec = [i for i,e in enumerate(elist) if abs(e-1)<1e-13]
    # if len(ivec) != int(round(np.trace(P_I))):
    #   print('Error in P_irrep_subspace: wrong subspace dimension')
    # Psub = defns.chop(vlist[:,ivec].real)
    # if Psub.shape[1]==0:
    #   return Psub
    # else:
    #   return defns.chop(LA.qr(Psub)[0]) # orthonormalize

    N = len(defns.list_nnk(E, L))
    Psub = np.zeros((6 * N, 0))
    for shell in defns.shell_list(E, L):
        Psub = np.column_stack((Psub, P_irrep_subspace_o(E, L, I, shell)))
    return Psub
Exemple #23
0
def K2inv_mat2(E, L, a2):
    nklist = defns.list_nnk(E, L)

    K2inv2 = []
    for nkvec in nklist:
        kvec = [i * 2 * pi / L for i in nkvec]
        K2inv2.append(K2inv(E, kvec, 2, 0, 0, 0, 0, a2))

    # Potentially faster method (pre-allocates memory)
    # blocksize = len(nklist)
    # K2inv2 = [None]*blocksize
    # for i in range(0,blocksize):
    #   kvec = [j*2*pi/L for j in nklist[i]]
    #   K2inv2[i] = K2inv(E,kvec,2,0,0,0,0,a2)

    K2_block = np.diag(K2inv2)

    return np.kron(np.identity(5), K2_block)
Exemple #24
0
def Gmat22(E, L):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)

    Gfull = []
    for p in range(N):
        nnp = list(nnk_list[p])
        Gp = []
        for k in range(N):
            nnk = list(nnk_list[k])

            Gpk = np.zeros((5, 5))
            for mp in range(-2, 3):
                for m in range(-2, 3):
                    Gpk[mp, m] = G(E, L, nnp, nnk, 2, mp, 2, m)
            Gp.append(Gpk)
        Gfull.append(Gp)
    return chop(np.block(Gfull))
Exemple #25
0
def Gmat22(E, L):
    nnk_list = list_nnk(E, L)
    N = len(nnk_list)

    Gfull = []
    for p in range(N):
        nnp = list(nnk_list[p])
        Gp = []
        for k in range(N):
            nnk = list(nnk_list[k])

            Gpk = np.zeros((5, 5))
            for i in range(5):
                for j in range(5):
                    mp = i - 2
                    m = j - 2
                    Gpk[i, j] = G(E, L, nnp, nnk, 2, mp, 2, m)
            Gp.append(Gpk)
        Gfull.append(Gp)
    return chop(np.block(Gfull))
Exemple #26
0
npsqrt = np.sqrt
exp = np.exp
def getnmax(cutoff,alpha,x2,gamma):
    eqn = lambda l : -cutoff + 2*math.pi*npsqrt(math.pi/alpha) * exp(alpha*x2)*erfc(npsqrt(alpha)*l)
    n0=1
    solution=fsolve(eqn, n0)
    print(max(solution*gamma,1)+3)

    return int(np.round(max(solution*gamma,1)+3))



L=84
E=2.9972794820231976
print(len(defns.list_nnk(E,L)))

exit()



a0=25
r0=8.34
E=3.1
L=10
k=2.25
IPV=-1
print(K2.K2inv(E,np.array([0.,0.,k*2*math.pi/L]),0,0,a0,r0,0.,0.,IPV))
    

exit()
Exemple #27
0
def A00(e, L, a):

    nklist = list_nnk(e, L)
    matrixa = np.diag(np.ones(len(nklist)) * (-1 / a))
    return matrixa