Пример #1
0
def generate(opts):
    l = float(opts['Length'])
    m = int(opts['m'])
    n = int(opts['n'])

    swnt = SWNTGenerator((m, n), Lz=l)
    # need a better random temporary name
    name = 'temp{}.xyz'.format(randrange(32768))
    swnt.save(fname=name)

    with open(name) as f:
        xyzData = f.read()
    os.remove(name)

    return xyzData
Пример #2
0
 def test4(self):
     swnt = SWNTGenerator(n=10, m=5, nz=1)
     bundle = \
         SWNTBundleGenerator(n=10, m=5, nx=3, ny=3, nz=1,
                             bundle_packing='ccp')
     assert_true(bundle.Natoms, bundle.Ntubes * swnt.Natoms)
     assert_equal(bundle.Ntubes, len(set(bundle.mol_ids)))
Пример #3
0
def test3():
    atoms = SWNTGenerator(n=20, m=0, nz=2).atoms
    assert_equal(atoms.Natoms, 160)
    atoms.assign_unique_ids()
    atoms.update_attrs()
    print(np.degrees(atoms.bonds.mean_length))
    print(np.degrees(atoms.bonds.mean_angle))
    atom0 = atoms[0]
    atom0bonds = atom0.bonds
    print("atom0: {}".format(atom0))
    print("atom0.r: {}".format(atom0.r))
    for NN in atom0.NN:
        print("NN.r: {}".format(NN.r))
    print(atom0bonds.atoms.Natoms)
    print(atom0bonds.atoms.CM)
    print("atoms.bonds.Nbonds: {}".format(atoms.bonds.Nbonds))
    print("atoms.bonds.atoms.Natoms: {}".format(atoms.bonds.atoms.Natoms))
 def test_structure_data(self):
     fname = resource_filename('sknano', 'data/nanotubes/1005_5cells.data')
     swnt = SWNTGenerator(n=10, m=5, nz=5)
     swnt_atoms = swnt.atoms
     swnt_atoms.compute_POAVs()
     data = DATAReader(fname)
     atoms = data.atoms
     atoms.compute_POAVs()
     assert_equals(swnt_atoms.Natoms, atoms.Natoms)
Пример #5
0
    def test3(self):

        new_swnt = SWNTGenerator((10, 10))
        new_swnt.atoms.center_centroid()
        test_swnt = \
            XYZReader(resource_filename('sknano',
                                        'data/nanotubes/1010_1cell.xyz'))
        print(new_swnt.atoms.coords)
        print(test_swnt.atoms.coords)
        assert_true(np.allclose(new_swnt.atoms.coords, test_swnt.atoms.coords))
Пример #6
0
def test4():
    atoms = SWNTGenerator(10, 5, nz=2).atoms
    atoms.assign_unique_ids()
    atoms.update_attrs()
    atoms.center_centroid()
    print(atoms.centroid)
    bond = atoms.get_atom(atoms.Natoms // 2).bonds[0]
    print(bond)
    print('bond.atoms.coords:\n{}'.format(bond.atoms.coords))
    bond_centroid = bond.centroid
    print('bond.centroid: {}'.format(bond.centroid))
    rot_axis = Vector(p0=[0, 0, bond_centroid.z], p=bond_centroid.p)
    bond.rotate(angle=np.pi/2, axis=rot_axis)
    print(bond)
    print('bond.atoms.coords:\n{}'.format(bond.atoms.coords))
    assert_true(np.allclose(bond_centroid, bond.centroid))
Пример #7
0
def test_generator_atoms():
    from sknano.generators import SWNTGenerator
    n, m = 5, 5
    nz = 2
    swnt = SWNTGenerator(n=n, m=m, nz=nz)
    assert_equal(swnt.N, 2 * n)
    assert_equal(swnt.Natoms, 2 * swnt.N * swnt.nz)
    assert_equal(swnt.Natoms_per_unit_cell, 2 * swnt.N)
    assert_equal(swnt.nz, nz)
    assert_equal(swnt.Natoms_per_tube, swnt.Natoms_per_unit_cell * swnt.nz)
    atoms = swnt.atoms
    assert_equal(atoms.Natoms, swnt.Natoms_per_tube)
Пример #8
0
def test4():
    atoms = SWNTGenerator(10, 5, nz=2).atoms
    atoms.assign_unique_ids()
    atoms.update_attrs()
    atoms.center_centroid()
    print(atoms.centroid)
    bond = atoms.get_atom(atoms.Natoms // 2).bonds[0]
    print(bond)
    print("bond.atoms.coords:\n{}".format(bond.atoms.coords))
    bond_centroid = bond.centroid
    print("bond.centroid: {}".format(bond.centroid))
    rot_axis = Vector(p0=[0, 0, bond_centroid.z], p=bond_centroid.p)
    bond.rotate(angle=np.pi / 2, axis=rot_axis)
    print(bond)
    print("bond.atoms.coords:\n{}".format(bond.atoms.coords))
    assert_true(np.allclose(bond_centroid, bond.centroid))
Пример #9
0
def test3():
    atoms = SWNTGenerator(n=20, m=0, nz=2).atoms
    assert_equal(atoms.Natoms, 160)
    atoms.assign_unique_ids()
    atoms.update_attrs()
    print(np.degrees(atoms.bonds.mean_length))
    print(np.degrees(atoms.bonds.mean_angle))
    atom0 = atoms[0]
    atom0bonds = atom0.bonds
    print('atom0: {}'.format(atom0))
    print('atom0.r: {}'.format(atom0.r))
    for NN in atom0.NN:
        print('NN.r: {}'.format(NN.r))
    print(atom0bonds.atoms.Natoms)
    print(atom0bonds.atoms.CM)
    print('atoms.bonds.Nbonds: {}'.format(atoms.bonds.Nbonds))
    print('atoms.bonds.atoms.Natoms: {}'.format(atoms.bonds.atoms.Natoms))
Пример #10
0
def test2():
    atoms = SWNTGenerator(n=10, m=10, nz=3).atoms
    atoms.assign_unique_ids()
    atoms.update_attrs()
Пример #11
0
def test2():
    atoms = SWNTGenerator(n=10, m=10, nz=3).atoms
    atoms.assign_unique_ids()
    atoms.update_attrs()
Пример #12
0
 def test2(self):
     swnt = SWNTGenerator(n=10, m=10, Lz=1.0, fix_Lz=True)
     swnt.save()
     self.tmpdata.append(swnt.fname)
     swnt.save(structure_format='data')
     self.tmpdata.append(swnt.fname)
Пример #13
0
 def test1(self):
     swnt = SWNTGenerator(n=10, m=10)
     swnt.save()
     self.tmpdata.append(swnt.fname)
     swnt.save(structure_format='data')
     self.tmpdata.append(swnt.fname)