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))
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()
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()
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()
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