コード例 #1
0
def test_cna_adaptive():
    atoms, box = pcs.make_crystal(structure="fcc",
                                  repetitions=(7, 7, 7),
                                  lattice_constant=4.00,
                                  noise=0.1)
    sys = pc.System()
    sys.atoms = atoms
    sys.box = box
    sys.calculate_cna(cutoff=None)
    atoms = sys.atoms
    assert atoms[0].structure == 1

    atoms, box = pcs.make_crystal(structure="hcp",
                                  repetitions=(7, 7, 7),
                                  lattice_constant=4.00,
                                  noise=0.1)
    sys = pc.System()
    sys.atoms = atoms
    sys.box = box
    sys.calculate_cna(cutoff=None)
    atoms = sys.atoms
    assert atoms[0].structure == 2

    atoms, box = pcs.make_crystal(structure="bcc",
                                  repetitions=(7, 7, 7),
                                  lattice_constant=4.00,
                                  noise=0.1)
    sys = pc.System()
    sys.atoms = atoms
    sys.box = box
    sys.calculate_cna(cutoff=None)
    atoms = sys.atoms
    assert atoms[0].structure == 3
コード例 #2
0
ファイル: test_traj_process.py プロジェクト: srmnitc/pyscal
def test_create_multislice_dump():
    """
    Create a multitest dump file and test it
    """
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[6, 6, 6])
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    ptp.write_file(sys, "tests/bcc1.dump")

    atoms2, boxdims2 = pcs.make_crystal('bcc', repetitions=[6, 6, 6])
    #modify the coordinates of one atom
    x = atoms2[0].pos
    x[0] += 0.01
    atoms2[0].pos = x
    assert len(atoms2) == 432
    #write it out
    sys2 = pc.System()
    sys2.box = boxdims2
    sys2.atoms = atoms2

    ptp.write_file(sys2, "tests/bcc2.dump")

    #now cleanup
    if os.path.exists("tests/bcc1.dat"):
        os.remove("tests/bcc1.dat")
    if os.path.exists("tests/bcc2.dat"):
        os.remove("tests/bcc2.dat")
コード例 #3
0
def return_possible_polys(struct):
    if struct=='bcc':
        atoms, box = pcs.make_crystal('bcc', lattice_constant=4, repetitions=[3,3,3])
        sys = pc.System()
        sys.atoms = atoms
        sys.box = box
        sys.find_neighbors(method='voronoi')
        sys.calculate_vorovector()
        voros = [" ".join(np.array(atom.vorovector).astype(str)) for atom in sys.atoms]
        #take unique
        unique_voros = np.unique(voros)
    elif struct=='fcc':
        atoms, box = pcs.make_crystal('fcc', lattice_constant=4, repetitions=[3,3,3])
        sys = pc.System()
        sys.atoms = atoms
        sys.box = box
        sys.find_neighbors(method='voronoi')
        sys.calculate_vorovector()
        voros = [" ".join(np.array(atom.vorovector).astype(str)) for atom in sys.atoms]
        #take unique
        unique_voros = np.unique(voros)
    elif struct=='liquid':
        sys = pc.System()
        sys.read_inputfile('datafiles/lqd.dat')
        sys.find_neighbors(method='voronoi')
        sys.calculate_vorovector()
        voros = [" ".join(np.array(atom.vorovector).astype(str)) for atom in sys.atoms]
        #take unique
        unique_voros = np.unique(voros)
    elif struct=='distorted-bcc':
        sys = pc.System()
        sys.read_inputfile('datafiles/mixed_bcc.dat')
        sys.find_neighbors(method='voronoi')
        sys.calculate_vorovector(edge_cutoff=0.0, area_cutoff=0.0)
        voros = [" ".join(np.array(atom.vorovector).astype(str)) for atom in sys.atoms if atom.vorovector[1] >= 2]
        #take unique
        unique_voros = np.unique(voros)

    elif struct=='distorted-fcc':
        sys = pc.System()
        sys.read_inputfile('datafiles/mixed_fcc.dat')
        sys.find_neighbors(method='voronoi')
        sys.calculate_vorovector()
        voros = [" ".join(np.array(atom.vorovector).astype(str)) for atom in sys.atoms]
        #take unique
        unique_voros = np.unique(voros)

    #now create a dropdown widget with this option
    poly_widget = widgets.Dropdown(
        options=unique_voros,
        value=unique_voros[0],
        description='polyhedra:',
        disabled=False,
    )
    return widgets.interact(visualise_poly, poly=poly_widget, atoms=widgets.fixed(sys.atoms))
コード例 #4
0
ファイル: test_neighbors.py プロジェクト: qinlene/pyscal
def test_neighbors_system_filter():
    #create some atoms
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[2, 2, 2])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    sys.find_neighbors(method='cutoff', cutoff=0.867)
    #any atom should have 8 neighbors
    atoms = sys.atoms
    assert atoms[0].coordination == 8

    #now we take all the neighbors of atom0 and replace half of
    #them with a different type
    neighs = atoms[0].neighbors

    #replace the neighs
    atoms[neighs[0]].type = 2
    atoms[neighs[1]].type = 2

    #now set these atoms back
    #for atom in atoms:
    sys.set_atom(atoms[neighs[0]])
    sys.set_atom(atoms[neighs[1]])

    #recalculate neighbors with filter
    sys.find_neighbors(method='cutoff', cutoff=0.867, filter='type')
    #any atom should have 8 neighbors
    atoms = sys.atoms
    assert atoms[0].coordination == 6
コード例 #5
0
ファイル: test_q_atom.py プロジェクト: qinlene/pyscal
def test_q_4():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    #sys.get_neighbors(method = 'voronoi')
    sys.find_neighbors(method = 'cutoff', cutoff=0.9)
    sys.calculate_q([4, 6], averaged=True)
    atoms = sys.atoms
    #assert np.round(atoms[0].q[2], decimals=2) == 0.51
    assert np.round(atoms[0].get_q(4, averaged=True), decimals=2) == 0.51
    assert np.round(atoms[0].get_q([4, 6])[0], decimals=2) == 0.51
    assert np.round(atoms[0].get_q([4, 6], averaged=True)[1], decimals=2) == 0.63
    assert np.round(atoms[0].get_q([4, 6]), decimals=2)[0] == 0.51
    assert np.round(atoms[0].get_q([4, 6], averaged=True)[1], decimals=2) == 0.63

    #now change the q4 values
    atoms[0].set_q(4, .23)
    atoms[0].set_q(4, .23, averaged=True)
    assert np.round(atoms[0].get_q(4), decimals=2) == 0.23
    assert np.round(atoms[0].get_q(4, averaged=True), decimals=2) == 0.23

    atoms[0].set_q([4, 6], [.23, .46])
    atoms[0].set_q([4, 6], [.23, .46], averaged=True)
    assert np.round(atoms[0].get_q(4), decimals=2) == 0.23
    assert np.round(atoms[0].get_q(4, averaged=True), decimals=2) == 0.23
    assert np.round(atoms[0].get_q(6), decimals=2) == 0.46
    assert np.round(atoms[0].get_q(6, averaged=True), decimals=2) == 0.46
コード例 #6
0
def test_file_system():

    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [1, 1, 1])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    sys.find_neighbors(method = 'voronoi')

    sys.to_file('tests/tjkf.dat')

    #now try to read in the file
    sys2 = pc.System()
    sys2.read_inputfile('tests/tjkf.dat')
    assert len(sys2.atoms) == 2

    #now add some custom values
    atoms[0].custom = {"velocity":12}
    atoms[1].custom = {"velocity":24}

    #now try to read in the file
    sys3 = pc.System()
    sys3.atoms = atoms
    sys3.box = boxdims
    sys3.to_file('tests/tjkf.dat', custom=['velocity'])

    #now read it again
    sys4 = pc.System()
    sys4.read_inputfile('tests/tjkf.dat', customkeys=['velocity'])
    #now get atoms and check them
    atoms = sys4.atoms
    assert int(atoms[0].custom['velocity']) == 12
    assert int(atoms[1].custom['velocity']) == 24
コード例 #7
0
def test_create_structure():
    structure = ['bcc', 'fcc', 'hcp', 'diamond', 'a15', 'l12', 'b2']
    natoms = [2, 4, 4, 8, 8, 4, 2]

    for count, struct in enumerate(structure):
        #dumpfile = os.path.join(os.getcwd(), "test.dat")
        atoms, boxdims = pcs.make_crystal(struct)
        assert len(atoms) == natoms[count]
コード例 #8
0
def test_create_multislice_dump():
    """
    Create a multitest dump file and test it
    """
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[6, 6, 6])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    ptp.write_structure(sys, "tests/bcc1.dump")

    atoms2, boxdims2 = pcs.make_crystal('bcc', repetitions=[6, 6, 6])
    #modify the coordinates of one atom
    x = atoms2[0].pos
    x[0] += 0.01
    atoms2[0].pos = x
    assert len(atoms2) == 432
    #write it out
    sys2 = pc.System()
    sys2.atoms = atoms2
    sys2.box = boxdims2

    ptp.write_structure(sys2, "tests/bcc2.dump")

    #now merge the two dump files
    os.system("cat tests/bcc1.dump tests/bcc2.dump > tests/bcc3.dat")
    #os.remove("tests/bcc1.dump")
    #os.remove("tests/bcc2.dump")

    #now this file should have info of both - read it in
    sys3 = pc.System()
    sys3.read_inputfile("tests/bcc3.dat", frame=1)
    atoms = sys3.atoms
    assert len(atoms) == 432
    assert atoms[0].pos == [0.01, 0, 0]

    #now this file should have info of both - read it in
    sys4 = pc.System()
    sys4.read_inputfile("tests/bcc3.dat", frame=0)
    atoms = sys4.atoms
    assert atoms[0].pos == [0.0, 0, 0]

    #now cleanup
    os.remove("tests/bcc3.dat")
コード例 #9
0
ファイル: test_rdf.py プロジェクト: qinlene/pyscal
def test_rdf():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    rdf, r = sys.calculate_rdf()

    args = np.argsort(rdf)
    assert(np.round(r[args][-1], decimals=2) == 0.87)

    #test for an fcc type
    atoms, boxdims = pcs.make_crystal('fcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    rdf, r = sys.calculate_rdf()

    args = np.argsort(rdf)
    assert(np.round(r[args][-1], decimals=2) == 0.69)
コード例 #10
0
def test_cna_cutoff():
    atoms, box = pcs.make_crystal(structure="fcc",
                                  repetitions=(7, 7, 7),
                                  lattice_constant=4.00,
                                  noise=0.01)
    sys = pc.System()
    sys.atoms = atoms
    sys.box = box
    vec = sys.calculate_cna(cutoff=0.8536 * 4.1)
    assert vec[1] == 7 * 7 * 7 * 4
コード例 #11
0
def test_voro_props():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[10, 10, 10])
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    sys.find_neighbors(method='voronoi')
    sys.calculate_vorovector()
    atoms = sys.atoms
    atom = atoms[0]
コード例 #12
0
ファイル: test_qlist.py プロジェクト: qinlene/pyscal
def test_q_list():
    #this might take a while, it will find all qs
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    sys.find_neighbors(method='voronoi')

    sys.calculate_q([2, 4], averaged=True)
    q = sys.get_qvals([2, 4], averaged=True)
コード例 #13
0
def test_q_10():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    sys.find_neighbors(method = 'voronoi')

    sys.calculate_q(10, averaged=True)
    q = sys.get_qvals(10, averaged=True)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.41
コード例 #14
0
def test_cutoff():
    atoms, box = pcs.make_crystal(structure="fcc",
                                  lattice_constant=4.07,
                                  repetitions=(6, 6, 6))
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms
    sys.find_neighbors(method="cutoff", cutoff=0)
    sys.set_atom_cutoff(factor=2)
    atoms = sys.atoms
    assert (atoms[0].cutoff - 5.755849198858498) < 1E-5
コード例 #15
0
ファイル: test_q4.py プロジェクト: obaica/pyscal
def test_q_4():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    #sys.get_neighbors(method = 'voronoi')
    sys.find_neighbors(method = 'cutoff', cutoff=0.9)
    sys.calculate_q(4, averaged=True)
    q = sys.get_qvals(4, averaged=True)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.51 , "Calculated q4 value is wrong!"
コード例 #16
0
def test_angular():
    atoms, boxdims = pcs.make_crystal('diamond', repetitions=[4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    sys.find_neighbors(method='voronoi')
    sys.calculate_angularcriteria()

    q = [atom.angular for atom in sys.atoms]
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.00
コード例 #17
0
def test_chiparamsbcc():
    atoms, box = pcs.make_crystal('bcc',
                                  repetitions=[3, 3, 3],
                                  lattice_constant=4)
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms
    sys.find_neighbors(method='cutoff', cutoff=0)
    sys.calculate_chiparams()
    atoms = sys.atoms
    chip = atoms[2].chiparams
    assert chip == [3, 0, 0, 0, 36, 12, 0, 36, 0]
コード例 #18
0
ファイル: test_q_atom.py プロジェクト: qinlene/pyscal
def test_q_access():
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    #sys.get_neighbors(method = 'voronoi')
    sys.find_neighbors(method = 'cutoff', cutoff=0.9)
    sys.calculate_q([4, 6], averaged=True)
    atoms = sys.atoms

    assert np.round(sys.get_custom(atoms[1], ["aq4"]), decimals=2)[0] == 0.51
    assert np.round(sys.get_custom(atoms[1], ["q4"]), decimals=2)[0] == 0.51  
コード例 #19
0
ファイル: test_nucsize.py プロジェクト: srmnitc/pyscal
def test_system_nucsize_fraction():
    #create some atoms
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [2, 2, 2], lattice_constant=3.20)
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    #test that atoms are set properly
    assert len(sys.atoms) == 16

    #now calculate nucsize
    sys.find_neighbors(method='cutoff', cutoff=3.63)
    assert 16 == sys.find_solids(bonds=0.8, threshold=0.5, avgthreshold=0.6, cluster=True)
コード例 #20
0
def test_neighbors_adaptive():
    #create some atoms
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [6, 6, 6])
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    #then lets find neighbors
    #SANN algo test
    sys.find_neighbors(method = 'cutoff', cutoff='adaptive')
    #any atom should have 8 neighbors
    atoms = sys.atoms
    assert atoms[0].coordination == 14
コード例 #21
0
ファイル: test_q2.py プロジェクト: qinlene/pyscal
def test_q_2():
    #this might take a while, it will find all qs
    atoms, boxdims = pcs.make_crystal('bcc', repetitions = [6, 6, 6])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims
    #sys.read_inputfile("tests/bcc.dat")
    sys.find_neighbors(method = 'voronoi')
    #sys.get_neighbors(method = 'cutoff', cutoff=0.9)

    sys.calculate_q(2)
    q = sys.get_qvals(2)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.00
コード例 #22
0
ファイル: test_q6.py プロジェクト: qinlene/pyscal
def test_q_6_voro():
    atoms, boxdims = pcs.make_crystal('fcc', repetitions = [4, 4, 4])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    sys.find_neighbors(method = 'voronoi')
    sys.calculate_q(6)
    q = sys.get_qvals(6)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.57 , "Calculated q4 value is wrong!"

    sys.calculate_q(6, only_averaged=True)
    q = sys.get_qvals(6, averaged=True)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.57 , "Calculated q4 value is wrong!"
コード例 #23
0
ファイル: test_neighbors.py プロジェクト: srmnitc/pyscal
def test_neighbors_diamond():
    atoms, box = pcs.make_crystal(structure="diamond",
                                  lattice_constant=5.67,
                                  repetitions=(6, 6, 6))
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms

    sys.find_diamond_neighbors()
    sys.calculate_q([4, 6], averaged=True)
    assert (np.mean(sys.get_qvals(4)) - 0.19094065395649326) < 1E-2
    assert (np.mean(sys.get_qvals(6)) - 0.5745242597140696) < 1E-2

    atoms, box = pcs.make_crystal(structure="fcc",
                                  lattice_constant=4.07,
                                  repetitions=(6, 6, 6))
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms

    sys.find_neighbors(method="cutoff", cutoff=0)
    sys.calculate_q([4, 6], averaged=True)
    assert (np.mean(sys.get_qvals(4)) - 0.19094065395649326) < 1E-2
    assert (np.mean(sys.get_qvals(6)) - 0.5745242597140696) < 1E-2

    atoms, box = pcs.make_crystal(structure="fcc",
                                  lattice_constant=4.07,
                                  repetitions=(6, 6, 6))
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms

    sys.find_diamond_neighbors()
    sys.calculate_q([4, 6], averaged=True)
    assert (np.mean(sys.get_qvals(4)) - 0.210287193019979) < 1E-2
    assert (np.mean(sys.get_qvals(6)) - 0.2350776015575979) < 1E-2
コード例 #24
0
def test_q4_condition():
    atoms, boxdims = pcs.make_crystal('l12', repetitions = [8, 8, 8])
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    sys.find_neighbors(method = 'cutoff', cutoff=0.9)
    sys.find_solids()
    sys.calculate_q(4, condition="solid")
    q = sys.get_qvals(4)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.19 , "Calculated q4 value is wrong!"

    sys.calculate_q(4, clear_condition=True, only_averaged=True)
    q = sys.get_qvals(4, averaged=True)
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.19 , "Calculated q4 value is wrong!"
コード例 #25
0
def test_file_system():

    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[1, 1, 1])
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms
    sys.find_neighbors(method='voronoi')

    sys.to_file('tests/tjkf.dat')

    #now try to read in the file
    sys2 = pc.System()
    sys2.read_inputfile('tests/tjkf.dat')
    assert len(sys2.atoms) == 2

    #now add some custom values
    atoms[0].custom = {"velocity": 12}
    atoms[1].custom = {"velocity": 24}

    #now try to read in the file
    sys3 = pc.System()
    sys3.box = boxdims
    sys3.atoms = atoms
    sys3.to_file('tests/tjkf.dat', customkeys=['velocity'])

    #now read it again
    sys4 = pc.System()
    sys4.read_inputfile('tests/tjkf.dat', customkeys=['velocity'])
    #now get atoms and check them
    atoms = sys4.atoms
    assert int(atoms[0].custom['velocity']) == 12
    assert int(atoms[1].custom['velocity']) == 24
    sys4.to_file('tests/tjkf.dat.gz', customkeys=['velocity'], compressed=True)

    #now read it again
    sys5 = pc.System()
    sys5.read_inputfile('tests/tjkf.dat.gz', customkeys=['velocity'])
    #now get atoms and check them
    atoms = sys5.atoms
    assert int(atoms[0].custom['velocity']) == 12
    assert int(atoms[1].custom['velocity']) == 24

    sys6 = pc.System()
    sys6.read_inputfile('tests/tjkf.dat')
    sys6.to_file('tests/poscar_1', format="poscar", species=['Mo'])
    sys6.to_file('tests/data_1', format="lammps-data", species=['Mo'])
コード例 #26
0
ファイル: test_volume.py プロジェクト: qinlene/pyscal
def test_q_2():
    #this might take a while, it will find all qs
    atoms, boxdims = pcs.make_crystal('bcc', repetitions=[6, 6, 6])
    sys = pc.System()
    sys.atoms = atoms
    sys.box = boxdims

    #sys.read_inputfile("tests/bcc.dat")
    sys.find_neighbors(method='voronoi')
    atoms = sys.atoms
    vols = []
    avgvols = []
    for atom in atoms:
        vols.append(atom.volume)
        avgvols.append(atom.avg_volume)
    assert np.mean(np.array(vols)) == 0.5
    assert np.mean(np.array(avgvols)) == 0.5
コード例 #27
0
ファイル: test_basic_system.py プロジェクト: srmnitc/pyscal
def test_system_atom_access():
    #create some atoms
    atoms, boxdims = pcs.make_crystal('bcc')
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    #fetch an atom
    xoxo = sys.get_atom(0)
    assert xoxo.pos == [0, 0, 0]

    #change pos pf ayom
    xoxo.pos = [1.1, 2.1, 3.1]
    sys.set_atom(xoxo)

    atom = sys.get_atom(0)
    assert atom.pos == [1.1, 2.1, 3.1]
コード例 #28
0
ファイル: test_formats_system.py プロジェクト: jwz360/pyscal
def test_neighbors_number():
    atoms, box = pcs.make_crystal(structure="fcc",
                                  repetitions=(3, 3, 3),
                                  lattice_constant=4.00)
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms

    sys.find_neighbors(method="number", nmax=8)
    atoms = sys.atoms
    nns = np.mean([atom.coordination for atom in atoms])
    assert nns == 8

    sys.find_neighbors(method="number", nmax=12)
    atoms = sys.atoms
    nns = np.mean([atom.coordination for atom in atoms])
    assert nns == 12
コード例 #29
0
ファイル: test_centrosymmetry.py プロジェクト: srmnitc/pyscal
def test_cs_ges():
    atoms, boxdims = pcs.make_crystal('bcc',
                                      repetitions=[4, 4, 4],
                                      lattice_constant=4.00)
    sys = pc.System()
    sys.box = boxdims
    sys.atoms = atoms

    sys.calculate_centrosymmetry(nmax=8)
    atoms = sys.atoms
    q = [atom.centrosymmetry for atom in atoms]
    assert np.round(np.mean(np.array(q)), decimals=2) == 0.00

    sys.calculate_centrosymmetry(nmax=12)
    atoms = sys.atoms
    q = [atom.centrosymmetry for atom in atoms]
    assert np.round(np.mean(np.array(q)), decimals=2) > 0.00
コード例 #30
0
def test_sro():
    atoms, box = pcs.make_crystal('l12', lattice_constant=4.00, repetitions=[2,2,2])
    sys = pc.System()
    sys.box = box
    sys.atoms = atoms

    sys.find_neighbors(method='cutoff', cutoff=4.5)
    sro = sys.calculate_sro(reference_type=1, average=True)
    assert np.round(sro[0], decimals=2) == -0.33
    assert sro[1] == 1.0

    atoms = sys.atoms
    sro = atoms[4].sro
    assert np.round(sro[0], decimals=2) == -0.33
    assert sro[1] == 1.0

    sys.find_neighbors(method='cutoff', cutoff=4.5)
    sro = sys.calculate_sro(reference_type=1, average=True, shells=1)
    assert np.round(sro[0], decimals=2) == 0.11