def test_structural__crimped_simplesupported_crimped_beam(): material = Material(E=1, poisson=0.3, alpha=1) section = Rectangle(12, 1) f1 = Load.PontualLoad(-200, x=700) n1 = Node.Crimp(x=0) n2 = Node.SimpleSupport(x=1000) n3 = Node.Crimp(x=1500) bar1 = BeamElement([n1, n2], section, material) bar2 = BeamElement([n2, n3], section, material) beam = Beam( loads=[f1], beam_elements=[bar1, bar2], ) support_reaction = beam.nodal_efforts assert support_reaction[0] == approx(57.9, abs=0.1) assert support_reaction[1] == approx(17500, abs=10) assert support_reaction[-4] == approx(200.9, abs=0.1) assert support_reaction[-3] == approx(0, abs=10) assert support_reaction[-2] == approx(-58.8, abs=0.1) assert support_reaction[-1] == approx(9800, abs=10) assert beam.getInternalShearStrength(100) == approx(57.9, abs=0.1) assert beam.getInternalShearStrength(800) == approx(-142.1, abs=0.1) assert beam.getInternalShearStrength(1200) == approx(58.8, abs=0.1) assert beam.getInternalMomentumStrength(e) == approx(-17500, abs=1) assert beam.getInternalMomentumStrength(100) == approx(-11710, abs=1) assert beam.getInternalMomentumStrength(800) == approx(8820, abs=1) assert beam.getInternalMomentumStrength(1200) == approx(-7840, abs=1) assert beam.getInternalMomentumStrength(1500 - e) == approx(9800, abs=1)
def create_crimped_beam(): material = Material(E=1, poisson=0.3, alpha=1) section = Rectangle(12, 1) f1 = Load.PontualLoad(-1, x=500) n1 = Node.Crimp(x=0) n2 = Node.Crimp(x=1000) bar1 = BeamElement([n1, n2], section, material) return Beam(loads=[f1], beam_elements=[bar1], solve_structural=False)
def test_structural_double_crimped_beam(): material = Material(E=1, poisson=0.3, alpha=1) section = Rectangle(12, 1) f1 = Load.PontualLoad(-200, x=200) n1 = Node.Crimp(x=0) n2 = Node.Crimp(x=1000) bar1 = BeamElement([n1, n2], section, material) beam = Beam(loads=[f1], beam_elements=[bar1]) support_reaction = beam.nodal_efforts assert support_reaction[0] == approx(179.2, abs=0.1) assert support_reaction[1] == approx(25600, abs=10) assert support_reaction[-2] == approx(20.8, abs=0.1) assert support_reaction[-1] == approx(-6400, abs=10) assert beam.getInternalShearStrength(150) == approx(179.2, abs=0.1) assert beam.getInternalShearStrength(300) == approx(-20.8, abs=0.1) assert beam.getInternalMomentumStrength(e) == approx(-25600, abs=10) assert beam.getInternalMomentumStrength(200) == approx(+10240, abs=10) assert beam.getInternalMomentumStrength(170) == approx(4860, abs=10) assert beam.getInternalMomentumStrength(210) == approx(10030, abs=10) assert beam.getInternalMomentumStrength(1000 - e) == approx(-6400, abs=10)
def test_crimped_free(): material = Material(E='27000 MPa', poisson=1, alpha=1) section = Rectangle(25, 44.6) f1 = Load.UniformDistributedLoad(-0.1622, x_begin=0, x_end=113) n1 = Node.Crimp(x=0) n2 = Node.Free(x=113) bar1 = BeamElement([n1, n2], section, material) beam = Beam(loads=[f1], beam_elements=[bar1]) compare(beam=beam, name="crimped_free", ftool_displacement_in_mm=True)
def test_structural__crimped_simple_supported_beam(): material = Material(E=1, poisson=0.3, alpha=1) section = Rectangle(12, 1) f1 = Load.PontualLoad(-200, x=700) n1 = Node.Crimp(x=0) n2 = Node.SimpleSupport(x=1000) bar1 = BeamElement([n1, n2], section, material) beam = Beam(loads=[f1], beam_elements=[bar1]) support_reaction = beam.nodal_efforts assert support_reaction[0] == approx(87.3, abs=0.1) assert support_reaction[1] == approx(27300, abs=10) assert support_reaction[-2] == approx(112.7, abs=0.1) assert support_reaction[-1] == approx(0, abs=10) assert beam.getInternalShearStrength(100) == approx(87.3, abs=0.1) assert beam.getInternalShearStrength(800) == approx(-112.7, abs=0.1) assert beam.getInternalMomentumStrength(e) == approx(-27300, abs=10) assert beam.getInternalMomentumStrength(100) == approx(-18570, abs=10) assert beam.getInternalMomentumStrength(800) == approx(+22540, abs=10) assert beam.getInternalMomentumStrength(1000 - e) == approx(0, abs=10)