Пример #1
0
    def test_change_angle(self):
        def diff(a, b):
            return abs(a - b)

        mol = Geometry(TestGeometry.benz_NO2_Cl)

        # set angle
        mol.change_angle("13", "12", "14", np.pi / 2, fix=1)
        angle = mol.angle("13", "12", "14")
        self.assertTrue(diff(np.rad2deg(angle), 90) < 10**-8)

        # change angle
        mol.change_angle("13",
                         "12",
                         "14",
                         30,
                         fix=3,
                         adjust=True,
                         radians=False)
        angle = mol.angle("13", "12", "14")
        self.assertTrue(diff(np.rad2deg(angle), 120) < 10**-8)

        mol.change_angle("13", "12", "14", -30, adjust=True, radians=False)
        angle = mol.angle("13", "12", "14")
        self.assertTrue(diff(np.rad2deg(angle), 90) < 10**-8)
Пример #2
0
        if args.input_format is not None:
            infile = FileReader(("from stdin", args.input_format[0], f))
        else:
            infile = FileReader(("from stdin", "xyz", f))

    geom = Geometry(infile)

    #set angle to specified value
    for angle in args.set_ang:
        vals = three_atoms_and_a_float(angle)
        a1 = geom.find(str(vals[0]))[0]
        a2 = geom.find(str(vals[1]))[0]
        a3 = geom.find(str(vals[2]))[0]
        geom.change_angle(a1,
                          a2,
                          a3,
                          vals[3],
                          radians=args.radians,
                          adjust=False)

    #change angle by specified amount
    for angle in args.change:
        vals = three_atoms_and_a_float(angle)
        a1 = geom.find(str(vals[0]))[0]
        a2 = geom.find(str(vals[1]))[0]
        a3 = geom.find(str(vals[2]))[0]
        geom.change_angle(a1,
                          a2,
                          a3,
                          vals[3],
                          radians=args.radians,
                          adjust=True)