示例#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
        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)

    #print specified angles
    out = ""
    for angle in args.measure:
        a1 = geom.find(str(angle[0]))[0]
        a2 = geom.find(str(angle[1]))[0]
        a3 = geom.find(str(angle[2]))[0]
        val = geom.angle(a1, a2, a3)
        if not args.radians:
            val *= 180 / np.pi

        out += "%f\n" % val

    out = out.rstrip()

    if len(args.set_ang) + len(args.change) > 0:
        if args.outfile:
            outfile = args.outfile
            if "$INFILE" in outfile:
                outfile = outfile.replace("$INFILE", get_filename(f))
            geom.write(append=True, outfile=outfile)
        else:
            print(geom.write(outfile=False))
示例#3
0
 def test_angle(self):
     mol = Geometry(TestGeometry.benz_NO2_Cl)
     angle = mol.angle("13", "12", "14")
     self.assertTrue(is_close(np.rad2deg(angle), 124.752, 10**-2))