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)
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')
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')