Source code for jarvis.tests.testfiles.core.test_kpoints
from jarvis.core.kpoints import (
Kpoints3D,
generate_kpath,
generate_kgrid,
HighSymmetryKpoint3DFactory,
)
from jarvis.analysis.structure.spacegroup import Spacegroup3D
from jarvis.core.atoms import Atoms
from jarvis.io.vasp.inputs import Poscar
import os
import tempfile
s1 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR"
)
).atoms
s2 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR-Aem2"
)
).atoms
s3 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR-C2m"
)
).atoms
s4 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR-Cmcm"
)
).atoms
s5 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR-P-1"
)
).atoms
s6 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__),
"..",
"analysis",
"structure",
"POSCAR-tetragonal",
)
).atoms
s7 = Poscar.from_file(
os.path.join(
os.path.dirname(__file__), "..", "analysis", "structure", "POSCAR-Pc"
)
).atoms
[docs]def test_kp():
box = [[2.715, 2.715, 0], [0, 2.715, 2.715], [2.715, 0, 2.715]]
coords = [[0, 0, 0], [0.25, 0.25, 0.25]]
elements = ["Si", "Si"]
Si = Atoms(lattice_mat=box, coords=coords, elements=elements)
lattice_mat = Si.lattice_mat
kp = Kpoints3D().automatic_length_mesh(lattice_mat=lattice_mat, length=20)
td = kp.to_dict()
fd = Kpoints3D.from_dict(td)
sym = kp.high_symm_path(Si)._path
x, y = kp.interpolated_points(Si)
kpath = generate_kpath(kpath=[[0, 0, 0], [0, 0.5, 0.5]], num_k=5)
kps = generate_kgrid(grid=[5, 5, 5])
new_file, filename = tempfile.mkstemp()
kp.write_file(filename)
sym = kp.high_symm_path(s1)._path
sym = kp.high_symm_path(s2)._path
sym = kp.high_symm_path(s3)._path
sym = kp.high_symm_path(s4)._path
sym = kp.high_symm_path(s5)._path
sym = kp.high_symm_path(s6)._path
sym = kp.high_symm_path(s7)._path
assert (len(x), x[0][0], y[0], kpath[0][0], kps[0][0]) == (
166,
0,
"\Gamma",
0.0,
0.0,
)
kp = Kpoints3D().kpath(atoms=Si, unique_kp_only=True)
[docs]def test_extra_spgs():
from jarvis.db.figshare import data
d = data("dft_3d")
few_spgs = {
"JVASP-4663": 119,
"JVASP-4666": 194,
"JVASP-588": 160,
"JVASP-4669": 191,
"JVASP-4672": 141,
"JVASP-581": 164,
"JVASP-4687": 139,
"JVASP-4693": 62,
"JVASP-4696": 187,
"JVASP-4711": 225,
"JVASP-4714": 2,
"JVASP-4723": 60,
"JVASP-32": 167,
"JVASP-107": 186,
"JVASP-4756": 63,
"JVASP-96": 216,
"JVASP-4334": 123,
"JVASP-4222": 11,
"JVASP-4804": 156,
"JVASP-329": 129,
"JVASP-4852": 163,
"JVASP-155": 61,
"JVASP-4340": 51,
"JVASP-4343": 15,
"JVASP-4361": 14,
"JVASP-137": 72,
"JVASP-4879": 166,
"JVASP-4885": 19,
"JVASP-4894": 31,
"JVASP-4216": 12,
"JVASP-4918": 121,
"JVASP-4948": 25,
"JVASP-4957": 221,
"JVASP-4960": 65,
"JVASP-5059": 189,
"JVASP-5071": 66,
"JVASP-5074": 150,
"JVASP-5086": 74,
"JVASP-4388": 64,
"JVASP-4391": 136,
"JVASP-5155": 127,
"JVASP-5185": 43,
"JVASP-5197": 59,
"JVASP-5212": 29,
"JVASP-164": 176,
"JVASP-5224": 137,
"JVASP-5227": 148,
"JVASP-4234": 193,
"JVASP-5257": 7,
"JVASP-5266": 140,
"JVASP-4397": 33,
"JVASP-5317": 8,
"JVASP-5332": 13,
"JVASP-5353": 16,
"JVASP-5371": 4,
"JVASP-5407": 229,
"JVASP-5416": 147,
"JVASP-5509": 52,
"JVASP-5536": 70,
"JVASP-5560": 71,
"JVASP-5680": 28,
"JVASP-5740": 6,
"JVASP-5839": 162,
"JVASP-5863": 79,
"JVASP-110": 99,
"JVASP-579": 38,
"JVASP-4501": 5,
"JVASP-91": 227,
"JVASP-41": 154,
"JVASP-4516": 96,
"JVASP-4564": 82,
"JVASP-4645": 130,
"JVASP-152": 55,
"JVASP-4792": 88,
"JVASP-5041": 107,
"JVASP-5425": 87,
"JVASP-5464": 115,
"JVASP-5650": 157,
"JVASP-4450": 36,
"JVASP-22520": 152,
"JVASP-22523": 205,
"JVASP-11998": 53,
"JVASP-22528": 58,
"JVASP-22533": 41,
"JVASP-12091": 32,
"JVASP-22541": 215,
"JVASP-22543": 97,
"JVASP-22549": 9,
"JVASP-12103": 138,
"JVASP-22575": 40,
"JVASP-22602": 180,
"JVASP-22611": 182,
"JVASP-12022": 85,
"JVASP-22637": 111,
"JVASP-12139": 10,
"JVASP-22709": 92,
"JVASP-12060": 20,
"JVASP-12064": 1,
"JVASP-12194": 185,
"JVASP-13885": 128,
"JVASP-14096": 56,
"JVASP-14020": 122,
"JVASP-13904": 54,
"JVASP-13783": 135,
"JVASP-14213": 26,
"JVASP-14034": 23,
"JVASP-14158": 113,
"JVASP-14256": 21,
"JVASP-32150": 217,
"JVASP-28392": 224,
"JVASP-32180": 146,
"JVASP-32197": 57,
"JVASP-31813": 67,
"JVASP-31819": 219,
"JVASP-29262": 39,
"JVASP-29281": 102,
"JVASP-31825": 226,
"JVASP-29425": 143,
"JVASP-29441": 42,
"JVASP-29520": 73,
"JVASP-29526": 18,
"JVASP-29555": 149,
"JVASP-29597": 151,
"JVASP-29705": 174,
"JVASP-31921": 199,
"JVASP-33147": 161,
"JVASP-33220": 46,
"JVASP-33344": 114,
"JVASP-30263": 44,
"JVASP-33832": 155,
"JVASP-30458": 69,
"JVASP-30461": 144,
"JVASP-30518": 132,
"JVASP-36540": 198,
"JVASP-36548": 220,
"JVASP-36568": 3,
"JVASP-36573": 145,
"JVASP-35061": 131,
"JVASP-35137": 125,
"JVASP-35222": 204,
"JVASP-35344": 109,
"JVASP-42053": 173,
"JVASP-40216": 91,
"JVASP-38594": 165,
"JVASP-37330": 86,
"JVASP-37573": 84,
"JVASP-36714": 47,
"JVASP-36754": 98,
"JVASP-59313": 230,
"JVASP-46893": 95,
"JVASP-46896": 76,
"JVASP-45779": 30,
"JVASP-45831": 158,
"JVASP-46446": 35,
"JVASP-44393": 159,
"JVASP-44773": 22,
"JVASP-47741": 78,
"JVASP-47811": 181,
"JVASP-48055": 94,
"JVASP-48916": 34,
"JVASP-49907": 190,
"JVASP-50342": 223,
"JVASP-50360": 68,
"JVASP-50431": 37,
"JVASP-52902": 142,
"JVASP-52377": 24,
"JVASP-50791": 214,
"JVASP-54512": 108,
"JVASP-56567": 213,
"JVASP-54867": 126,
"JVASP-55180": 81,
"JVASP-57780": 212,
"JVASP-57807": 118,
"JVASP-57816": 50,
"JVASP-57100": 197,
"JVASP-57138": 116,
"JVASP-58233": 124,
"JVASP-59682": 200,
"JVASP-20180": 206,
"JVASP-21448": 203,
"JVASP-40468": 90,
"JVASP-42914": 17,
"JVASP-21594": 100,
"JVASP-21706": 188,
"JVASP-22783": 218,
"JVASP-24006": 202,
"JVASP-30879": 83,
"JVASP-31186": 49,
"JVASP-21031": 110,
"JVASP-21116": 192,
"JVASP-25245": 134,
"JVASP-7066": 169,
"JVASP-13017": 112,
"JVASP-58953": 105,
"JVASP-8682": 183,
"JVASP-9902": 80,
"JVASP-34882": 208,
"JVASP-34330": 179,
"JVASP-34502": 48,
"JVASP-62982": 178,
}
"""
mem=[]
spgs=[]
pos=[]
info=defaultdict()
for i in d:
a=Atoms.from_dict(i['atoms'])
spg=Spacegroup3D(a).space_group_number
if spg not in spgs:
spgs.append(spg)
pos.append(i['jid'])
info[i['jid']]=spg
print (info)
if len(spgs)==230:
break
"""
for i, j in few_spgs.items():
for ii in d:
if ii["jid"] == i:
a = Atoms.from_dict(ii["atoms"])
spg = Spacegroup3D(a).space_group_number
assert j == spg
lattice_mat = a.lattice_mat
kp = Kpoints3D().automatic_length_mesh(
lattice_mat=lattice_mat, length=40
)
sym = kp.high_symm_path(a)._path
# print (ii['jid'],a)
# TODO: following line failing for JVASP-4222
# x, y = kp.interpolated_points(a)
break
[docs]def test_highsym():
kpts = HighSymmetryKpoint3DFactory().cubic()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().fcc()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().bcc()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().tet()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().bctet1(3, 2)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().bctet2(3, 2)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orc()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orcf1(1, 2, 3)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orcf2(1, 2, 3)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orcf3(1, 2, 3)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orci(1, 2, 3)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().orcc(1, 2, 3)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().hex()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().rhl1(47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().rhl2(47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mcl(2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mclc1(1, 2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mclc2(1, 2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mclc3(1, 2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mclc4(1, 2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().mclc5(1, 2, 3, 47)._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().tria()._kpoints["\\Gamma"]
assert kpts[0] == 0
kpts = HighSymmetryKpoint3DFactory().trib()._kpoints["\\Gamma"]
assert kpts[0] == 0
test_extra_spgs()
# test_highsym()
# test_kp()