def test(): from tempfile import mkdtemp from shutil import rmtree from os.path import join from numpy import mean, abs, sum from pylada.dftcrystal import Crystal, Functional, Shell from pylada.dftcrystal.properties.emass import effective_mass from pylada import default_comm functional = Functional() functional.basis["Si"] = [ Shell( "s", a0=[16120.0, 0.001959], a1=[2426.0, 0.01493], a2=[553.9, 0.07285], a3=[156.3, 0.2461], a4=[50.07, 0.4859], a5=[17.02, 0.325], ), Shell( "sp", a0=[292.7, -0.002781, 0.004438], a1=[69.87, -0.03571, 0.03267], a2=[22.34, -0.115, 0.1347], a3=[8.15, 0.09356, 0.3287], a4=[3.135, 0.603, 0.4496], ), Shell("sp", 4.0, a0=[1.22, 1.0, 1.0]), Shell("sp", 0.0, a0=[0.55, 1.0, 1.0]), Shell("sp", 0.0, a0=[0.27, 1.0, 1.0]), ] functional.dft.pbe0 = True functional.fmixing = 30 functional.shrink = 8, 16 functional.levshift = 5, True functional.maxcycle = 600 functional.dft.spin = False functional.toldee = 12 crystal = Crystal(227, 5.43).add_atom(0.125, 0.125, 0.125, "Si") directory = "/tmp/test/" # mkdtemp() firstdir, seconddir = join(directory, "0"), join(directory, "1") try: emass = effective_mass( functional, crystal, range=0.05, polarpoints=20, nbpoints=10, outdir=directory, comm=default_comm ) assert emass.success print emass.bandstructure.kpoints.shape, emass.bandstructure.eigenvalues.shape print emass.success print emass.tensors([0, 1, 2])[2][11:15] # print emass.kpoints # kpoints = emass.bandstructure.kpoints # ball = abs(sum(kpoints*kpoints, axis=1)-1e0) < 1e-8 # print kpoints[ball] # print mean(kpoints[ball], axis=0) finally: if directory != "/tmp/test/": rmtree(directory)