Exemplo n.º 1
0
def test_steel_fb_aij2005():
    from src.xs_section import make_all_section_db
    db = make_all_section_db()
    assert steel_fb_aij2005('H-200x100x5.5x8', db) == 235 / 1.5
    assert steel_fb_aij2005('H-200x100x5.5x8', db, lb=1000,
                            M3=1) == pytest.approx(144.9, abs=0.1)
    assert steel_fb_aij2005('H-200x100x5.5x8', db, lb=2000,
                            M3=1) == pytest.approx(114.0, abs=0.1)
    assert steel_fb_aij2005('H-200x100x5.5x8', db, lb=4000,
                            M3=1) == pytest.approx(71.8, abs=0.1)
    assert steel_fb_aij2005('H-200x100x5.5x8', db, lb=6000,
                            M3=1) == pytest.approx(45.4, abs=0.1)

    assert steel_fb_aij2005('H-500x200x10x16', db, lb=5000,
                            M3=1) == pytest.approx(96.0, abs=0.1)
    assert steel_fb_aij2005('H-500x200x10x16', db, lb=7000,
                            M3=1) == pytest.approx(72.5, abs=0.1)

    # TODO:チャート出力と比較 2021-1230
    assert steel_fb_aij2005('[-100x50x5x7.5', db, lb=0,
                            M3=1) == pytest.approx(235 / 1.5, abs=0.1)
    assert steel_fb_aij2005('[-100x50x5x7.5', db, lb=3000,
                            M3=1) == pytest.approx(90.53, abs=0.1)
    # TODO:チャート出力と比較
    assert steel_fb_aij2005('C-100x50x20x2.3', db, lb=0,
                            M3=1) == pytest.approx(235 / 1.5, abs=0.1)
    assert steel_fb_aij2005('C-100x50x20x2.3', db, lb=3000,
                            M3=1) == pytest.approx(67.09, abs=0.1)
Exemplo n.º 2
0
def data_plot2():
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)

    x = []
    y = []

    db = make_all_section_db()
    shape = 'H-200x100x5.5x8'
    shape = 'H-300x150x6.5x9'
    # shape = 'H-400x200x8x13'
    # shape = 'H-600x200x11x17'
    # shape = 'H-488x300x11x18'
    L = 6 * 1000  # mm
    pitch = 5
    m1 = 4
    m2 = 2
    m3 = 5

    x.clear()
    y.clear()
    for lb in range(1, L, pitch):
        x.append(lb)
        y.append(steel_fb_aij2005(shape, db, lb=lb, M1=m1, M2=m2, M3=m3))
    ax.plot(x, y, label='aij 2005')

    x.clear()
    y.clear()
    for lb in range(1, L, pitch):
        x.append(lb)
        y.append(steel_fb_aij2002(shape, db, lb=lb, M1=m1, M2=m2, M3=m3))
    ax.plot(x, y, ls='--', label='aij 1973')

    ax.grid(ls='--')
    ax.set_ylim(0, 160)
    ax.set_xlim(0, L)
    ib = db[shape][0]['ib']
    info = '{}\nib={}(cm), C={:.2f}\n lambda=0~{:.0f}'.format(
        shape, ib, calc_C(m1, m2, m3), L / (ib * 10))
    # ax.annotate(info, xy=(0.015, 0.02), xycoords='axes fraction')
    plt.ylabel('fb (N/mm2)')
    plt.xlabel('Lb (mm)')
    # plt.legend(bbox_to_anchor=(1, 1), loc='upper right', title=info)
    plt.legend(bbox_to_anchor=(0, 0), loc='lower left', title=info)

    plt.show()
Exemplo n.º 3
0
def data_plot():
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    F = 235
    i = 1
    Af = 1

    x = []
    y = []
    for lb in range(1, 251, 1):
        x.append(lb)
        y.append(steel_fb_bsl(F=F, lb=lb, i=i, C=1, h=10, Af=Af))
    ax.plot(x, y)

    x.clear()
    y.clear()
    for lb in range(1, 251, 1):
        x.append(lb)
        y.append(steel_fb_bsl(F=F, lb=lb, i=i, C=2.3, h=10, Af=Af))
    # ax.plot(x, y)

    x.clear()
    y.clear()
    for lb in range(1, 251, 1):
        x.append(lb)
        y.append(steel_fb_bsl(F=F, lb=lb, i=i, C=2.3, h=4, Af=Af))
    # ax.plot(x, y)

    db = make_all_section_db()
    x.clear()
    y.clear()
    shape = 'H-200x100x5.5x8'
    for lb in range(1, 251, 1):
        x.append(lb)
        y.append(steel_fb_aij2005(shape, db, lb=lb, M3=1))
    ax.plot(x, y)

    ax.grid()
    ax.set_ylim(0, 160)
    # ax.set_ylim(0, 220)
    ax.set_xlim(0, 250)
    plt.show()
Exemplo n.º 4
0
def allowable_bending_moment(sec,
                             M1=0,
                             M2=0,
                             M3=1,
                             direc='X',
                             lb=0.,
                             F=235.,
                             term='LONG'):
    """
    部材の許容曲げ耐力を返す。

    :param sec: 断面名
    :param M1: 座屈補剛区間端部の大きい方のM
    :param M2: 座屈補剛区間端部の小さい方のM
    :param M3: 座屈補剛区間内の最大のM
    :param direc: 断面の軸指定 強軸/弱軸まわり "X" / "Y"
    :param lb: 圧縮フランジの支点間距離 (mm)
    :param F: F値 [N/mm2]
    :param term: 荷重種別(短期・長期)str "LONG" / "SHORT"
    :return: Ma 許容曲げモーメント [kN*m]
    """

    # TODO:断面による処理の違いを実装
    from src.xs_section import make_all_section_db
    db = make_all_section_db()
    section_full_name = xs_section_name(sec)

    # H形鋼
    if section_full_name.startswith('H-'):
        z, fb = 0, 0
        if direc == 'X':
            z = xs_section_property(sec, 'Zx', db)
            fb = alws.steel_fb_aij2005(sec,
                                       db,
                                       lb=lb,
                                       M1=M1,
                                       M2=M2,
                                       M3=M3,
                                       F=F)

        if direc == 'Y':
            z = xs_section_property(sec, 'Zy', db)
            # 弱軸曲げ 横座屈なし fb=ft
            fb = alws.steel_ft()

        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.

    # 角形鋼菅
    if section_full_name.startswith('□P-'):
        z, fb = 0, 0
        if direc == 'X':
            z = xs_section_property(sec, 'Zx', db)
        if direc == 'Y':
            z = xs_section_property(sec, 'Zy', db)
        # 横座屈なし fb=ft
        fb = alws.steel_ft()
        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.

    # 鋼菅
    if section_full_name.startswith('P-'):
        z, fb = 0, 0
        z = xs_section_property(sec, 'Zx', db)
        # 横座屈なし fb=ft
        fb = alws.steel_ft()
        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.

    # 溝形鋼
    if section_full_name.startswith('[-'):
        z, fb = 0, 0

        if direc == 'X':
            z = xs_section_property(sec, 'Zx', db)
            fb = alws.steel_fb_aij2005(section_full_name,
                                       db,
                                       lb=lb,
                                       M1=M1,
                                       M2=M2,
                                       M3=M3,
                                       F=F)

        if direc == 'Y':
            z = xs_section_property(sec, 'Zy', db)
            # 横座屈なし fb=ft
            fb = alws.steel_ft()
        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.

    # TODO:C形鋼  fbの計算を確認 WIP fb=ftとする場合も用意するか?
    # C形鋼
    if section_full_name.startswith('C-'):
        z, fb = 0, 0
        if direc == 'X':
            z = xs_section_property(sec, 'Zx', db)
            fb = alws.steel_fb_aij2005(section_full_name,
                                       db,
                                       lb=lb,
                                       M1=M1,
                                       M2=M2,
                                       M3=M3,
                                       F=F)
        if direc == 'Y':
            z = xs_section_property(sec, 'Zy', db)
            # 横座屈なし fb=ft
            fb = alws.steel_ft()
        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.

    # 山形鋼
    if section_full_name.startswith('L-'):
        # TODO 主軸が傾いているため、u,v方向への分解が必要 u,v方向のそれぞれのMaを返す?
        z, fb = 0, 0
        if direc == 'X':
            z = xs_section_property(sec, 'Zx', db)
        if direc == 'Y':
            z = xs_section_property(sec, 'Zy', db)
        if direc == 'U':
            z, _ = get_Zu_Zv_of_angle(sec, db)
        if direc == 'V':
            _, z = get_Zu_Zv_of_angle(sec, db)

        # 横座屈なし fb=ft
        fb = alws.steel_ft()
        term_factor = 1.0 if term == 'LONG' else 1.5

        return term_factor * z * (fb / 10.) / 100.
Exemplo n.º 5
0
def test_steel_fb():
    assert steel_fb2_aij(F=235, lb=0) == 235 / 1.5
    assert steel_fb2_aij(F=235, lb=1000, h=200, Af=800) == 235 / 1.5
    assert steel_fb2_aij(F=235, lb=2000, h=200,
                         Af=800) == pytest.approx(235 / 1.5)
    assert steel_fb2_aij(F=235, lb=3000, h=200,
                         Af=800) == pytest.approx(118.6666)
    assert steel_fb2_aij(F=235, lb=4000, h=200, Af=800) == pytest.approx(89.0)
    assert steel_fb2_aij(F=235, lb=5000, h=200, Af=800) == pytest.approx(71.2)
    assert steel_fb2_aij(F=235, lb=6000, h=200,
                         Af=800) == pytest.approx(59.3333)
    assert steel_fb2_aij(F=235, lb=7000, h=200,
                         Af=800) == pytest.approx(50.8571)
    assert steel_fb2_aij(F=235, lb=8000, h=200,
                         Af=100 * 8) == pytest.approx(44.5)
    assert steel_fb2_aij(F=235, lb=1000, h=500, Af=3200) == 235 / 1.5
    assert steel_fb2_aij(F=235, lb=5000, h=500,
                         Af=200 * 16) == pytest.approx(113.92)

    assert steel_fb1_aij(F=235, lb=1000, i=26.3,
                         C=1) == pytest.approx(150.3529)
    assert steel_fb1_aij(F=235, lb=2000, i=26.3,
                         C=1) == pytest.approx(131.4115)
    assert steel_fb1_aij(F=235, lb=3000, i=26.3, C=1) == pytest.approx(99.8425)
    assert steel_fb1_aij(F=235, lb=4000, i=26.3, C=1) == pytest.approx(55.6459)
    assert steel_fb1_aij(F=235, lb=5000, i=26.3,
                         C=1) == pytest.approx(-1.1783, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=26.3,
                         C=1) == pytest.approx(-70.63, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=26.3,
                         C=1.75) == pytest.approx(26.7828, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=26.3,
                         C=2.3) == pytest.approx(57.8420, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=52,
                         C=2.3) == pytest.approx(131.3871, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=52,
                         C=1.75) == pytest.approx(123.4421, abs=0.001)
    assert steel_fb1_aij(F=235, lb=6000, i=52, C=1) == pytest.approx(98.5236,
                                                                     abs=0.001)

    assert steel_fb1_aij(F=325, lb=6000, i=52, C=1) == pytest.approx(105.4605,
                                                                     abs=0.001)

    assert steel_fb_aij(F=235, lb=2000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(235 / 1.5)
    assert steel_fb_aij(F=235, lb=3000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(118.6667)
    assert steel_fb_aij(F=235, lb=4000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(89.0)
    assert steel_fb_bsl(F=235, lb=4000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(89.0)

    assert steel_fb_aij(F=235, lb=5000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(71.2)
    assert steel_fb_aij(F=235, lb=6000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(59.3333)
    assert steel_fb_aij(F=235, lb=7000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(50.8571)
    assert steel_fb_aij(F=235, lb=8000, i=26.3, C=1, h=200,
                        Af=100 * 8) == pytest.approx(44.5)

    assert steel_fb_aij(F=235, lb=5000, i=52, C=1, h=500,
                        Af=200 * 16) == pytest.approx(116.2895)
    assert steel_fb_aij(F=235, lb=7000, i=52, C=1, h=500,
                        Af=200 * 16) == pytest.approx(81.3714)

    from src.xs_section import make_all_section_db
    db = make_all_section_db()

    assert steel_fb_aij2002('H-500x200x10x16', db, lb=5000,
                            M3=1) == pytest.approx(116.2895)
    assert steel_fb_aij2002('H-500x200x10x16', db, lb=7000,
                            M3=1) == pytest.approx(81.3714)
    assert steel_fb_aij2002('H-200x100x5.5x8', db, lb=7000,
                            M3=1) == pytest.approx(50.8571)
Exemplo n.º 6
0
from src.xs_section import make_all_section_db, xs_section_property

db = make_all_section_db()

sec_name = 'H24'
a = xs_section_property(sec_name, 'An')
print(a)