示例#1
0
def test_minus_y_positive_load(app):
    """Simply supported beam with central concentrated force and a non-linear
    -Y support.
    """

    # get pipe objects
    pt10 = app.points(10)
    pt15 = app.points(15)
    pt20 = app.points(20)

    run10 = app.elements(10, 15)
    run20 = app.elements(15, 20)

    # supports
    gblx10 = X('GblX10', 10)
    gblx10.apply([run10])

    gbly10 = Y('GblY10', 10)
    gbly10.apply([run10])

    gblz10 = Z('GblZ10', 10)
    gblz10.apply([run10])

    # constrain torsion
    gblrotx10 = X('GblRotX10', 10, is_rotational=True)
    gblrotx10.apply([run10])

    # nonlinear -Y
    gbly20 = Y('GblY20', 20, direction="-")
    gbly20.apply([run20])

    gblz20 = Z('GblZ20', 20)
    gblz20.apply([run20])

    # loads
    F1 = Force('F1', 1, 15, fy=10000)
    F1.apply([run10])

    # loadcase
    L1 = LoadCase('L1', 'ope', [Force], [1])

    app.models('simple').analyze()

    # check reactions due to fy
    assert compare(L1.reactions[pt10][1], 5000)
    assert compare(L1.reactions[pt20][1], 5000)
    assert compare(L1.movements[pt20][1], 0)
示例#2
0
def test_global_y(app):
    """Simply supported beam with central concentrated force"""

    # get pipe objects
    pt10 = app.points(10)
    pt15 = app.points(15)
    pt20 = app.points(20)

    run10 = app.elements(10, 15)
    run20 = app.elements(15, 20)

    # supports
    gblx10 = X('GblX10', 10)
    gblx10.apply([run10])

    gbly10 = Y('GblY10', 10)
    gbly10.apply([run10])

    gblz10 = Z('GblZ10', 10)
    gblz10.apply([run10])

    # constrain torsion
    gblrotx10 = X('GblRotX10', 10, is_rotational=True)
    gblrotx10.apply([run10])

    gbly20 = Y('GblY20', 20)
    gbly20.apply([run20])

    gblz20 = Z('GblZ20', 20)
    gblz20.apply([run20])

    # loads
    F1 = Force('F1', 1, 15, fy=-10000)
    F1.apply([run10])

    # loadcase
    L1 = LoadCase('L1', 'ope', [Force], [1])

    app.models('simple').analyze()

    # check reactions due to fy
    assert compare(L1.reactions[pt10][1], -5000)
    assert compare(L1.reactions[pt20][1], -5000)

    # check max moment at the middle, mz
    assert compare(L1.forces[pt15][5], -25000)
示例#3
0
def test_guide(app):
    # get pipe objects
    pt10 = app.points(10)
    pt20 = app.points(20)
    run15 = app.elements(10, 15)
    run20 = app.elements(15, 20)

    # supports
    gblx10 = X('GblX10', 10)
    gblx10.apply([run15])

    gbly10 = Y('GblY10', 10)
    gbly10.apply([run15])

    gblz10 = Z('GblZ10', 10)
    gblz10.apply([run15])

    gblrotx10 = X('GblRotX10', 10, is_rotational=True)
    gblrotx10.apply([run15])

    guide20 = Lateral('guide20', 20)
    guide20.apply([run20])
    guide20.flip()  # not required for horizontal elements

    # loads
    T1 = Thermal('T1', 1, 500, 70)
    T1.apply([run15, run20])

    F1 = Force('F1', 1, 15, fz=-10000)
    F1.apply([run15])

    # loadcase
    L1 = LoadCase('L1', 'ope', [Thermal, Force], [1, 1])

    app.models('simple').analyze()

    assert compare(L1.reactions[pt20].fx, 0)
    assert compare(L1.reactions[pt20].fy, 0)
    assert compare(L1.reactions[pt20].fz, -5000)