Exemple #1
0
class StructureTests(unittest.TestCase):
    """Tests for Structure"""

    def setUp(self):
        self.structure=Structure('001')

    def test_unicode(self):
        self.assertEqual(str(self.structure), 'Structure 001')

    def test_add_node(self):
        self.node1=Node2d('001',0.0,0.0)
        self.structure.addNode(self.node1)
        self.assertEqual(self.structure.nodeCount, 1)
class ParticleSpringSystemAlgorithmTests(unittest.TestCase):
    """Tests for Particle Spring System algorithm"""

    def setUp(self):
        self.stiffness = 10.0
        self.original_length = 0.9
        self.spacing = 1.0
        self.mass = 1.0

        # set up the structure
        self.structure = Structure("001")
        for i in range(10):
            self.structure.addNode(MassedNode2d("%s" % str(i + 1), (self.spacing * i), 0.0, self.mass))
        for i in range(9):
            self.structure.addElement(
                Spring2d(
                    "%s" % str(i + 1),
                    self.structure.n[i],
                    self.structure.n[i + 1],
                    self.stiffness,
                    self.original_length,
                )
            )
        self.structure.n[0].cx = True
        self.structure.n[0].cy = True
        self.structure.n[9].cx = True
        self.structure.n[9].cy = True

    def test_nodeCount(self):
        self.assertEqual(self.structure.nodeCount, 10)

    def test_springCount(self):
        self.assertEqual(self.structure.elementCount, 9)

    def test_pssResetForce(self):
        pssResetForce(self.structure)
        for node in self.structure.n:
            self.assertEqual(node.rx, 0.0)
            self.assertEqual(node.ry, 0.0)

    def test_pssCalculateElementForces_horizontal(self):
        pssCalculateElementForces(self.structure)
        for element in self.structure.e:
            self.assertEqual(element.nx, (self.spacing / self.original_length) * self.stiffness)
            self.assertEqual(element.ny, 0.0)

    def test_pssCalculateElementForces_vertical(self):
        self.displacement = self.spacing * 2.0
        self.structure.n[1].y = self.displacement

        self.assertEqual(self.structure.n[1].x, self.spacing)
        self.assertEqual(self.structure.n[1].y, self.displacement)

        self.assertEqual(self.structure.e[0].dx, self.spacing)
        self.assertEqual(self.structure.e[0].dy, self.displacement)

        length = self.structure.e[0].length
        self.assertEqual(length, math.sqrt((self.displacement ** 2) + (self.spacing ** 2)))

        pssCalculateElementForces(self.structure)

        force = math.sqrt(self.structure.e[0].nx ** 2 + self.structure.e[0].ny ** 2)
        self.assertEqual(force, (length / self.original_length) * self.stiffness)

    def test_pssCalculateAccelerations(self):
        xforce = 1.0
        yforce = 2.0
        for node in self.structure.n:
            node.rx = xforce
            node.ry = yforce
        pssCalculateAccelerations(self.structure)
        for node in self.structure.n:
            ax = xforce / self.mass
            ay = yforce / self.mass
            if node.cx:
                ax = 0.0
            if node.cy:
                ay = 0.0
            self.assertEqual(node.ax, ax)
            self.assertEqual(node.ay, ay)

    def test_particleSpringSystemAlgorithm(self):
        self.assertEqual(start_pss(self.structure, 1.0, 0.0001, 1000000), True)
Exemple #3
0
class ParticleSpringSystemAlgorithmTests(unittest.TestCase):
    """Tests for Particle Spring System algorithm"""
    def setUp(self):
        self.stiffness = 10.0
        self.original_length = 0.9
        self.spacing = 1.0
        self.mass = 1.0

        #set up the structure
        self.structure = Structure("001")
        for i in range(10):
            self.structure.addNode(
                MassedNode2d("%s" % str(i + 1), (self.spacing * i), 0.0,
                             self.mass))
        for i in range(9):
            self.structure.addElement(
                Spring2d("%s" % str(i + 1), self.structure.n[i],
                         self.structure.n[i + 1], self.stiffness,
                         self.original_length))
        self.structure.n[0].cx = True
        self.structure.n[0].cy = True
        self.structure.n[9].cx = True
        self.structure.n[9].cy = True

    def test_nodeCount(self):
        self.assertEqual(self.structure.nodeCount, 10)

    def test_springCount(self):
        self.assertEqual(self.structure.elementCount, 9)

    def test_pssResetForce(self):
        pssResetForce(self.structure)
        for node in self.structure.n:
            self.assertEqual(node.rx, 0.0)
            self.assertEqual(node.ry, 0.0)

    def test_pssCalculateElementForces_horizontal(self):
        pssCalculateElementForces(self.structure)
        for element in self.structure.e:
            self.assertEqual(element.nx,
                             (self.spacing / self.original_length) *
                             self.stiffness)
            self.assertEqual(element.ny, 0.0)

    def test_pssCalculateElementForces_vertical(self):
        self.displacement = self.spacing * 2.0
        self.structure.n[1].y = self.displacement

        self.assertEqual(self.structure.n[1].x, self.spacing)
        self.assertEqual(self.structure.n[1].y, self.displacement)

        self.assertEqual(self.structure.e[0].dx, self.spacing)
        self.assertEqual(self.structure.e[0].dy, self.displacement)

        length = self.structure.e[0].length
        self.assertEqual(length,
                         math.sqrt((self.displacement**2) + (self.spacing**2)))

        pssCalculateElementForces(self.structure)

        force = math.sqrt(self.structure.e[0].nx**2 +
                          self.structure.e[0].ny**2)
        self.assertEqual(force,
                         (length / self.original_length) * self.stiffness)

    def test_pssCalculateAccelerations(self):
        xforce = 1.0
        yforce = 2.0
        for node in self.structure.n:
            node.rx = xforce
            node.ry = yforce
        pssCalculateAccelerations(self.structure)
        for node in self.structure.n:
            ax = xforce / self.mass
            ay = yforce / self.mass
            if node.cx: ax = 0.0
            if node.cy: ay = 0.0
            self.assertEqual(node.ax, ax)
            self.assertEqual(node.ay, ay)

    def test_particleSpringSystemAlgorithm(self):
        self.assertEqual(start_pss(self.structure, 1.0, 0.0001, 1000000), True)