Example #1
0
    def angles(self):
        angles = []

        for triplet in self.psf.angles:
            c_atom = triplet.atom2
            a_1 = triplet.atom1
            a_2 = triplet.atom3

            v1 = np.array(self.positions[a_1]) - np.array(
                self.positions[c_atom])
            v2 = np.array(self.positions[a_2]) - np.array(
                self.positions[c_atom])

            prod = np.dot(v1, v2)

            if prod == 0:
                angle = np.pi / 2
            else:
                prod /= (np.linalg.norm(v1) * np.linalg.norm(v2))
                prod = np.clip(prod, -1, 1)
                angle = np.arccos(prod)

            angles.append([(a_1.type, c_atom.type, a_2.type),
                           np.degrees(angle)])

        return angles
Example #2
0
    def dihedrals(self):
        d_angles = []

        for quad in self.psf.dihedrals:
            a_1, a_2, a_3, a_4 = quad.atom1, quad.atom2, quad.atom3, quad.atom4
            v1 = np.array(self.positions[a_2]) - np.array(self.positions[a_1])
            v2 = np.array(self.positions[a_3]) - np.array(self.positions[a_1])
            n1 = np.cross(v1, v2)

            v3 = np.array(self.positions[a_4]) - np.array(self.positions[a_3])
            v4 = -v2
            n2 = np.cross(v3, v4)

            prod = np.dot(n1, n2)

            if prod == 0:
                angle = 0
            else:
                prod /= (np.linalg.norm(n1) * np.linalg.norm(n2))
                prod = np.clip(prod, -1, 1)
                angle = np.arccos(prod)

            d_angles.append([(a_1.type, a_2.type, a_3.type, a_4.type),
                             np.degrees(angle)])

        return d_angles
Example #3
0
    def TE_angle(self):
        # Returns the trailing edge angle of the airfoil, in degrees
        upper_TE_vec = self.coordinates[0, :] - self.coordinates[1, :]
        lower_TE_vec = self.coordinates[-1, :] - self.coordinates[-2, :]

        return np.degrees(np.arctan2(
            upper_TE_vec[0] * lower_TE_vec[1] - upper_TE_vec[1] * lower_TE_vec[0],
            upper_TE_vec[0] * lower_TE_vec[0] + upper_TE_vec[1] * upper_TE_vec[1]
        ))
Example #4
0
    def impropers(self):
        i_angles = []

        for quad in self.psf.impropers:  # a_1 bonded to a_2, a_1 is central atom
            a_1, a_2, a_3, a_4 = quad.atom1, quad.atom2, quad.atom3, quad.atom4
            v1 = np.array(self.positions[a_3]) - np.array(self.positions[a_1])
            v2 = np.array(self.positions[a_4]) - np.array(self.positions[a_1])
            n = np.cross(v1, v2)

            v3 = np.array(self.positions[a_2]) - np.array(self.positions[a_1])
            prod = np.dot(n, v3)

            if prod == 0:
                angle = np.pi / 2
            else:
                prod /= (np.linalg.norm(n) * np.linalg.norm(v3))
                prod = np.clip(prod, -1, 1)
                angle = np.pi / 2 - np.arccos(prod)

            i_angles.append([(a_1.type, a_2.type, a_3.type, a_4.type),
                             np.degrees(angle)])

        return i_angles
Example #5
0
def test_degrees():
    fun = lambda x : 3.0 * np.degrees(x)
    d_fun = grad(fun)
    check_grads(fun, 10.0*npr.rand())
    check_grads(d_fun, 10.0*npr.rand())
Example #6
0
def test_degrees():
    fun = lambda x : 3.0 * np.degrees(x)
    d_fun = grad(fun)
    check_grads(fun, 10.0*npr.rand())
    check_grads(d_fun, 10.0*npr.rand())
Example #7
0
def test_degrees(): unary_ufunc_check(lambda x : np.degrees(x)/50.0, test_complex=False)
def test_exp():     unary_ufunc_check(np.exp)
Example #8
0
def test_degrees():
    unary_ufunc_check(lambda x: np.degrees(x) / 50.0, test_complex=False)
Example #9
0
def test_degrees():
    fun = lambda x: 3.0 * np.degrees(x)
    check_grads(fun)(10.0 * npr.rand())
Example #10
0
 def deduce_state(self, s):
     rpy = np.degrees(rowan.to_euler(rowan.normalize(s[6:10]), 'xyz'))
     return rpy
Example #11
0
def test_degrees():
    fun = lambda x : 3.0 * np.degrees(x)
    check_grads(fun)(10.0*npr.rand())