".pyc" in formula or \ ".txt" in formula or \ "tmp" in formula or \ "pickle" in formula: continue allcifs = os.listdir('%s/%s' % (jobdir, formula)) for cif in allcifs: if ".cif" in cif: continue icsdno = cif[-6:] if not os.path.exists('%s/%s/icsd_%s' % (jobdir, formula, icsdno)): continue subdirs = os.listdir('%s/%s/icsd_%s' % (jobdir, formula, icsdno)) E = [] dirs = [] for subdir in subdirs: a = vasp.Extract('%s/%s/icsd_%s/%s' % (jobdir, formula, icsdno, subdir)) if a.success: E.append(a.total_energy.magnitude) dirs.append(subdir) #print "%s/%s"%(icsdno,subdir), a.total_energy # if len(E) > 0: print icsdno, min(E) if len(E) > 1: minidx = np.argsort(E)[0] minE = min(E) minEdir = dirs[minidx] E.pop(minidx) dirs.pop(minidx) if minEdir == "non-magnetic": if np.mean( E ) - minE < 1: # print the ones with energy difference smaller than 1 eV
from pylada.crystal import read jobdir = os.getcwd() allcifs = commands.getoutput("ls %s/cifs/*.cif" % (jobdir)).split('\n') print "number of cif files", len(allcifs) for cif in allcifs: icsdno = "icsd_" + cif[-10:-4] if not os.path.exists('%s/%s' % (jobdir, icsdno)): continue subdirs = os.listdir('%s/%s' % (jobdir, icsdno)) E = [] dirs = [] for subdir in subdirs: a = vasp.Extract('%s/%s/%s' % (jobdir, icsdno, subdir)) if a.success: E.append(a.total_energy.magnitude) dirs.append(subdir) if "non-magnetic" not in dirs: continue # print "%6s/%20s"%(icsdno,subdir), a.total_energy # print icsdno, len(E) if len(E) > 1: minidx = np.argsort(E)[0] minE = min(E) minEdir = dirs[minidx] E.pop(minidx) dirs.pop(minidx) if minEdir == "non-magnetic": if np.mean(E) - minE < 1 and np.std( E
elif band_type == "conduction": if np.all(eig[ix, iy, iz, iband] <= E_nghs): Nb += 1 bminidx.append([ix, iy, iz, iband]) #print eig[ix,iy,iz,iband], min(E_nghs), max(E_nghs) else: XX return Nb, bminidx #def get_effective_mass() if __name__ == "__main__": dirname = sys.argv[1] calc = vasp.Extract(dirname) eigenvalues = calc.eigenvalues.magnitude fermi = calc.fermi_energy.magnitude nspin = calc.ispin nk = read_nk(dirname) fraction = 0.5 n_neighbors = np.array([int(np.ceil(nk0 * fraction)) for nk0 in nk]) # get vbm and cbm vbm = max([x for x in eigenvalues.flatten() if float(x) <= fermi]) cbm = min([x for x in eigenvalues.flatten() if float(x) > fermi]) gap = cbm - vbm print "fermi", fermi, vbm, cbm, gap print "nspin", nspin print "nk, number of neighbors", nk, n_neighbors