Example #1
0
    def setUp(self):
        """Setup the tests. Creates various beams with known solutions and force moment plots."""

        self.beams = []
        self.beams.append(Beam(10))

        self.beams[0].add_interaction(Force(5, -10))
        self.beams[0].add_interaction(Force(0, 0, False))
        self.beams[0].add_interaction(Force(10, 0, False))

        self.beams.append(Beam(5.5))

        self.beams[1].add_interaction(Force(0, 0, False))
        self.beams[1].add_interaction(Moment(0, 0, False))
        self.beams[1].add_interaction(Force(5.5, 10))
        self.beams[1].add_interaction(Moment(4, 40))

        self.beams.append(Beam(30))

        self.beams[2].add_interaction(Force(0, 0, False))
        self.beams[2].add_interaction(Force(20, 0, False))
        self.beams[2].add_interaction(Dist_Force(0, -1, 10))
        self.beams[2].add_interaction(Force(15, -20))
        self.beams[2].add_interaction(Force(30, -10))

        self.beams.append(Beam(10))

        self.beams[3].add_interaction(Force(1, 7))
        self.beams[3].add_interaction(Dist_Force(2, -5, 7))
        self.beams[3].add_interaction(Moment(8, 10))
        self.beams[3].add_interaction(Force(8, 0, False))
        self.beams[3].add_interaction(Moment(0, 0, False))
Example #2
0
def clear_clicked():
    """Clear the beam of all interactions. Update the tree and clear the force moment plot."""

    global beam
    beam = Beam(beam.length)
    update_tree(beam)
    plt.clf()
    canvas.draw()
Example #3
0
def make_first_beam():
    """Make the first beam. This is required. If it is not done, exit the app."""

    ok = False
    length, ok = QtGui.QInputDialog.getDouble(window, "Beam Length",
                                              "Enter the length of the beam:",
                                              0, 0, sys.float_info.max, 5)

    if ok:
        return Beam(length)
    else:
        sys.exit()
Example #4
0
def new_clicked():
    """Prompt for a new beam length. If input is ok, clear the beam, tree, and plot. 
    Create a new beam of the given length."""

    global beam
    length, ok = QtGui.QInputDialog.getDouble(window, "Beam Length",
                                              "Enter the length of the beam:",
                                              0, 0, sys.float_info.max, 5)
    if ok:
        beam = Beam(length)
        update_tree(beam)
        plt.clf()
        canvas.draw()
Example #5
0
    def preloop(self):
        """Before the loop starts: Request the beam length from the 
        user and create a new beam.
        """

        valid = False

        while not valid:
            try:
                length = float(input('Enter the length of the beam: '))
            except ValueError:
                print('Length must be a positive number.')
                continue

            if length > 0:
                self.beam = Beam(length)
                valid = True
            else:
                print('Length must be a positive number.')
def gen_sub_beam(beam, sub_length):
    """Generates a subbeam of the given length for purposes
    of generating internal shear and moment points.
    """

    sub_beam = Beam(sub_length)

    for item in beam.interactions:
        if not isinstance(item, Dist_Force):
            if item.location <= sub_length:
                sub_beam.add_interaction(item)

        elif item.location <= sub_length:
            if item.end <= sub_length:
                sub_beam.add_interaction(item)
            else:
                sub_beam.add_interaction(
                    Dist_Force(item.location, item.magnitude, sub_length))

    return sub_beam