Пример #1
0
    def test_dof_index(self):
        s = System()
        j1 = FreeJoint('j1')
        j2 = FreeJoint('j2')
        s.add_leaf(j1)
        j1.add_leaf(j2)
        s.setup()

        # Prescribe some of the strains:
        #          _____j1____   _____j2____
        # Strain:  0 1 2 3 4 5   0 1 2 3 4 5
        # Prescr:    *     *             *
        # Dofs:    0   1 2   3   4 5 6   7 8
        s.prescribe(j1, 0, part=[1, 4])
        s.prescribe(j2, 0, part=[3])

        self.assertEqual(s.dof_index('j1', 0), 0)
        self.assertEqual(s.dof_index('j1', 2), 1)
        self.assertEqual(s.dof_index('j1', 5), 3)
        self.assertEqual(s.dof_index('j2', 5), 8)

        # Strain index out of range should give IndexError
        with self.assertRaises(IndexError):
            s.dof_index('j1', 6)

        # Asking for index of prescribed strain should give ValueError
        with self.assertRaises(ValueError):
            s.dof_index('j1', 1)