def main(): #import m_kpoints #from m_kpoints import m_kpoints as mod #print(m_kpoints.__doc__) #v1 = np.zeros(3) #v2 = v1 + 1.0 #print(v1, v2) #ans, g0 = mod.isamek(v1, v2) #print(ans,g0) from abipy.core.kpoints import IrredZone, kmesh_from_mpdivs filename = "/Users/gmatteo/Coding/abipy/abipy/data/runs/data_si_ebands/outdata/si_scf_GSR.nc" structure = Structure.from_file(filename) ibz = IrredZone.from_file(filename) #print(ibz) mpdivs = [8, 8, 8] shifts = [0.0, 0.0, 0.0] #tables = map_mesh2ibz(structure, mpdivs, shifts, ibz) bz = kmesh_from_mpdivs(mpdivs, shifts) ktab = slow_map_mesh2ibz(structure, bz, ibz.frac_coords)
def test_unshifted_kmesh(self): """Testing the generation of unshifted kmeshes.""" mpdivs, shifts = [1, 2, 3], [0, 0, 0] # No shift, no pbc. kmesh = kmesh_from_mpdivs(mpdivs, shifts, order="unit_cell") ref_string = \ """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667]]""" self.assertMultiLineEqual(str(kmesh), ref_string) # No shift, with pbc. pbc_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="unit_cell") ref_string = \ """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0. 1. ] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 0. 0.5 1. ] [ 0. 1. 0. ] [ 0. 1. 0.33333333] [ 0. 1. 0.66666667] [ 0. 1. 1. ] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0. 1. ] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667] [ 1. 0.5 1. ] [ 1. 1. 0. ] [ 1. 1. 0.33333333] [ 1. 1. 0.66666667] [ 1. 1. 1. ]]""" self.assertMultiLineEqual(str(pbc_kmesh), ref_string) # No shift, no pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=False, order="bz") ref_string = \ """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333]]""" self.assertMultiLineEqual(str(bz_kmesh), ref_string) # No shift, pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="bz") ref_string = \ """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. -0.5 0.66666667] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 -0.33333333] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 1. -0.5 -0.33333333] [ 1. -0.5 0. ] [ 1. -0.5 0.33333333] [ 1. -0.5 0.66666667] [ 1. 0. -0.33333333] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0.5 -0.33333333] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667]]""" self.assertMultiLineEqual(str(bz_kmesh), ref_string)
def test_unshifted_kmesh(self): """Testing the generation of unshifted kmeshes.""" mpdivs, shifts = [1, 2, 3], [0, 0, 0] # No shift, no pbc. kmesh = kmesh_from_mpdivs(mpdivs, shifts, order="unit_cell") ref_string = """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667]]""" self.assertMultiLineEqual(str(kmesh), ref_string) # No shift, with pbc. pbc_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="unit_cell") ref_string = """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0. 1. ] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 0. 0.5 1. ] [ 0. 1. 0. ] [ 0. 1. 0.33333333] [ 0. 1. 0.66666667] [ 0. 1. 1. ] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0. 1. ] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667] [ 1. 0.5 1. ] [ 1. 1. 0. ] [ 1. 1. 0.33333333] [ 1. 1. 0.66666667] [ 1. 1. 1. ]]""" self.assertMultiLineEqual(str(pbc_kmesh), ref_string) # No shift, no pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=False, order="bz") ref_string = """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333]]""" self.assertMultiLineEqual(str(bz_kmesh), ref_string) # No shift, pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="bz") ref_string = """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. -0.5 0.66666667] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 -0.33333333] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 1. -0.5 -0.33333333] [ 1. -0.5 0. ] [ 1. -0.5 0.33333333] [ 1. -0.5 0.66666667] [ 1. 0. -0.33333333] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0.5 -0.33333333] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667]]""" self.assertMultiLineEqual(str(bz_kmesh), ref_string)
def test_unshifted_kmesh(self): """Testing the generation of unshifted kmeshes.""" def rm_spaces(s): return " ".join(s.split()).replace("[ ", "[") mpdivs, shifts = [1, 2, 3], [0, 0, 0] # No shift, no pbc. kmesh = kmesh_from_mpdivs(mpdivs, shifts, order="unit_cell") ref_string = \ """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667]]""" self.assertMultiLineEqual(rm_spaces(str(kmesh)), rm_spaces(ref_string)) # No shift, with pbc. pbc_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="unit_cell") ref_string = \ """[[ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0. 1. ] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 0. 0.5 1. ] [ 0. 1. 0. ] [ 0. 1. 0.33333333] [ 0. 1. 0.66666667] [ 0. 1. 1. ] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0. 1. ] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667] [ 1. 0.5 1. ] [ 1. 1. 0. ] [ 1. 1. 0.33333333] [ 1. 1. 0.66666667] [ 1. 1. 1. ]]""" self.assertMultiLineEqual(rm_spaces(str(pbc_kmesh)), rm_spaces(ref_string)) # No shift, no pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=False, order="bz") ref_string = \ """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333]]""" self.assertMultiLineEqual(rm_spaces(str(bz_kmesh)), rm_spaces(ref_string)) # No shift, pbc, bz order bz_kmesh = kmesh_from_mpdivs(mpdivs, shifts, pbc=True, order="bz") ref_string = \ """[[ 0. -0.5 -0.33333333] [ 0. -0.5 0. ] [ 0. -0.5 0.33333333] [ 0. -0.5 0.66666667] [ 0. 0. -0.33333333] [ 0. 0. 0. ] [ 0. 0. 0.33333333] [ 0. 0. 0.66666667] [ 0. 0.5 -0.33333333] [ 0. 0.5 0. ] [ 0. 0.5 0.33333333] [ 0. 0.5 0.66666667] [ 1. -0.5 -0.33333333] [ 1. -0.5 0. ] [ 1. -0.5 0.33333333] [ 1. -0.5 0.66666667] [ 1. 0. -0.33333333] [ 1. 0. 0. ] [ 1. 0. 0.33333333] [ 1. 0. 0.66666667] [ 1. 0.5 -0.33333333] [ 1. 0.5 0. ] [ 1. 0.5 0.33333333] [ 1. 0.5 0.66666667]]""" self.assertMultiLineEqual(rm_spaces(str(bz_kmesh)), rm_spaces(ref_string))