Ejemplo n.º 1
0
V_knM, H_kMM, S_kMM, P_aqMi = get_phs(calc, s=0)
H_kMM -= S_kMM*Ef

pwf = ProjectedWannierFunctions(V_knM, 
                                h_lcao=H_kMM, 
                                s_lcao=S_kMM, 
                                eigenvalues=eps_kn, 
                                fixedenergy=1.0,
                                kpoints=ibzk_kc)

t1 = time()
h_kMM, s_kMM = pwf.get_hamiltonian_and_overlap_matrix(useibl=True)
t2 = time()

print "\nTime to construct PWF: %.3f seconds "  % (t2 - t1)
print "max condition number:", pwf.get_condition_number().max()
eigs_kn = pwf.get_eigenvalues()
fd2 = open('bands_al_sz.dat','w')
fd1 = open('bands_al_exact.dat', 'w')
for eps1_n, eps2_n, k in zip(eps_kn, eigs_kn, ibzk_kc[:,0]):
    for e1 in eps1_n:
        print >> fd1, k, e1
    for e2 in eps2_n:
        print >> fd2, k, e2
fd1.close()            
fd2.close()
h_skMM = h_kMM[None]
n = 2
w_k = calc.wfs.weight_k
h_n, s_n = get_realspace_hs(h_skMM, s_kMM, ibzk_kc, w_k, (n, 0, 0),
                            usesymm=False)
Ejemplo n.º 2
0
pwf = ProjectedWannierFunctions(V_knM,
                                h_lcao=H_kMM,
                                s_lcao=S_kMM,
                                eigenvalues=eps_kn,
                                kpoints=ibzk_kc,
                                fixedenergy=5.0)
t1 = time()
h, s = pwf.get_hamiltonian_and_overlap_matrix(useibl=True)
t2 = time()

print "\nTime to construct PWF: %.3f seconds " % (t2 - t1)
norm_kn = pwf.get_norm_of_projection()
eps1_kn = pwf.get_eigenvalues()
print "band | deps/eV |  norm"
print "-------------------------"
for n in range(norm_kn.shape[1]):
    norm = norm_kn[0, n]
    if n >= eps1_kn.shape[1]:
        print "%4i |    -    | %.1e " % (n, norm)
    else:
        deps = np.around(abs(eps1_kn[0, n] - eps_kn[0, n]), 13)
        print "%4i | %.1e | %.1e " % (n, deps, norm)

for M, norm_n in zip(pwf.M_k, norm_kn):
    assert np.all(abs(norm_n[:M] - 1.0) < 1.0e-15)

print pwf.get_condition_number()

#os.remove('C6H6.gpw')
Ejemplo n.º 3
0
pwf = ProjectedWannierFunctions(V_knM, 
                                h_lcao=H_kMM, 
                                s_lcao=S_kMM, 
                                eigenvalues=eps_kn,
                                kpoints=ibzk_kc,
                                fixedenergy=5.0)
t1 = time()
h, s = pwf.get_hamiltonian_and_overlap_matrix(useibl=True)
t2 = time()

print "\nTime to construct PWF: %.3f seconds "  % (t2 - t1)
norm_kn = pwf.get_norm_of_projection()
eps1_kn = pwf.get_eigenvalues()
print "band | deps/eV |  norm"
print "-------------------------"
for n in range(norm_kn.shape[1]):
    norm = norm_kn[0, n]
    if n >= eps1_kn.shape[1]:
        print "%4i |    -    | %.1e " % (n, norm)
    else:
        deps = np.around(abs(eps1_kn[0,n] - eps_kn[0, n]), 13)
        print "%4i | %.1e | %.1e " % (n, deps, norm)

for M, norm_n in zip(pwf.M_k, norm_kn):
    assert np.all(abs(norm_n[:M]-1.0) < 1.0e-15)

print pwf.get_condition_number()

#os.remove('C6H6.gpw')