Ejemplo n.º 1
0
    def get_fcy(self):
        """
        Get fcy of 7075.
        p.25の表参照
        :return:[MPa]
        """
        thickness_in_inch = mm2inch(self.thickness)

        if thickness_in_inch < 0.499:
            return ksi2Mpa(68)
        elif thickness_in_inch < 5.000:
            return ksi2Mpa(69)
        else:
            return math.nan
Ejemplo n.º 2
0
def make_stiffness_row(sta):
    """csv行出力

    :param sta: Rib instance
    :return: EI_w + EI_c + EI_t
    """
    web_t = sta.web.thickness
    he = sta.he
    E = ksi2Mpa(10.3 * 1000)  # ヤング率[N/mm^2]
    area_c = sta.cflange.get_area(web_t)
    area_t = sta.tflange.get_area(web_t)
    I_w = cal_web_I(web_t, sta.hf)
    I_c = cal_flange_I(area_c, he)
    I_t = cal_flange_I(area_t, he)
    EI_w = E * I_w / 10 ** 6  # [N*m^2]
    EI_c = E * I_c / 10 ** 6  # [N*m^2]
    EI_t = E * I_t / 10 ** 6  # [N*m^2]
    value = [sta.y_left, he, web_t, I_w, EI_w, area_c, I_c,
             EI_c, area_t, I_t, EI_t, EI_w + EI_c + EI_t]
    round_value = map(lambda x: round_sig(x), value)
    with open('results/stiffness.csv', 'a', encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow(round_value)

    return EI_w + EI_c + EI_t
Ejemplo n.º 3
0
    def __init__(self, D):
        """Constructor.

        :param D:リベットの鋲径(直径mm)
        """
        self.D = D
        self.F_su = ksi2Mpa(30)  # とりあえずAD鋲を仮定
Ejemplo n.º 4
0
 def get_fsu(self):
     """
     表3のF_suの値を読み取る.
     :return:F_su[Mpa]
     """
     thickness_in_inch = mm2inch(self.thickness)
     if thickness_in_inch <= 0.011:
         print("too small:nan in getFsu in web.py")
         return math.nan
     elif thickness_in_inch <= 0.039:
         return ksi2Mpa(42)
     elif thickness_in_inch <= 0.062:
         return ksi2Mpa(42)
     elif thickness_in_inch <= 0.187:
         return ksi2Mpa(44)
     elif thickness_in_inch <= 0.249:
         return ksi2Mpa(45)
     else:
         print("too large :nan in getFsu in web.py")
         return math.nan
Ejemplo n.º 5
0
    def __init__(self, thickness, b_bottom, b_height, web):
        """ Constructor.

        :param thickness:フランジ厚さ[mm]
        :param b_bottom:フランジ底長さ[mm]
        :param b_height:フランジ高さ[mm]
        :param web:このflangeが属するwebのクラス
        """
        super().__init__(thickness, b_bottom, b_height)
        self.E = ksi2Mpa(10.3 * 10**3)
        self.web = web
Ejemplo n.º 6
0
    def get_f_tu(self):
        """
        引張り許容応力の計算.材料は2024-T3511
        p24の表3参照
        """
        # cross section 云々は無視してます
        thickness_in_inch = mm2inch(self.thickness)

        if thickness_in_inch < 0.249:
            return ksi2Mpa(57)

        elif thickness_in_inch < 0.499:
            return ksi2Mpa(60)

        elif thickness_in_inch < 0.749:
            return ksi2Mpa(60)  # 上と同じ

        elif thickness_in_inch < 1.499:
            return ksi2Mpa(65)

        elif thickness_in_inch < 2.999:
            return ksi2Mpa(70)

        elif thickness_in_inch < 4.499:
            return ksi2Mpa(70)
        else:
            return math.nan
Ejemplo n.º 7
0
    def get_fcy(self):
        """ F_cy of 7075."""
        thickness_in_inch = mm2inch(self.thickness)

        if thickness_in_inch < 0.012:
            print("stiffener thickness too small")
            return math.nan

        elif thickness_in_inch < 0.040:
            return ksi2Mpa(61)

        elif thickness_in_inch < 0.062:
            return ksi2Mpa(62)  # 上と同じ

        elif thickness_in_inch < 0.187:
            return ksi2Mpa(64)

        elif thickness_in_inch < 0.249:
            return ksi2Mpa(65)
        else:
            print("too large in getFcy in stiffener py")
            return math.nan
Ejemplo n.º 8
0
    def __init__(self, thickness, bs1_bottom, bs2_height, web):
        """Constructor.

        :param thickness: stiffener厚さ[mm]
        :param bs1_bottom:stiffener bottom長さ[mm]
        :param bs2_height:stiffener 高さ[mm]
        :param web:このstiffenerが属するwebのクラス
        """
        self.thickness = thickness
        self.bs1_bottom = bs1_bottom
        self.bs2_height = bs2_height
        self.E = ksi2Mpa(10.3 * 10**3)
        self.web = web
Ejemplo n.º 9
0
def cal_EI_sta5000(sta4500):
    """
    翼端部だけ剛性計算用の値が用意されてないので,
    専用関数を作成
    :param sta4500:
    :return:
    """
    web_t = sta4500.web.thickness
    he = sta4500.he + get_hf(5000) - get_hf(4500)
    E = ksi2Mpa(10.3 * 1000)  # ヤング率[N/mm^2]
    area_c = sta4500.cflange.get_area(web_t)
    area_t = sta4500.tflange.get_area(web_t)
    I_w = cal_web_I(web_t, get_hf(5000))
    I_c = cal_flange_I(area_c, he)
    I_t = cal_flange_I(area_t, he)
    return E * (I_w + I_c + I_t) / 10 ** 6  # [N*m^2]
Ejemplo n.º 10
0
 def __init__(self, y_left, y_right, division, thickness):
     """
     heightとwidthのうち長い方をaとするがアルゴリズム的に問題なし
     :param y_left:webの中でstaが一番小さい側の値 [mm]
     :param y_right:webの中でstaが一番大きい側の値 [mm]
     :param division:分割数
     :param thickness:web厚さ[mm] 7075-T6で厚さが規定されている
     width_bはstiffenerで等分割したあとの
     ウェブの長さ(強度計算上ではstiffenerで分割されているので,
     stiffenerの間隔と同じとする) [mm]
     """
     self.y_left = y_left
     self.y_right = y_right
     self.division = division
     self.thickness = thickness
     self.height_a = get_hf(y_left)  # この高さはwebのSTAが一番小さい側の値
     self.width_b = (y_right - y_left) / division
     self.E = ksi2Mpa(10.3 * 1000)  # 表3-3より読み取る [MPa]
Ejemplo n.º 11
0
    def get_clippling_stress(self):
        """
        クリップリング応力を求める
        フランジと同じ
        :return Fcc:Fcc[MPa]
        """
        right_axis = self.get_x_of_graph()

        if right_axis < 0.1:
            return math.nan
        elif right_axis < 0.1 * 5**(27 / 33):
            # 一定部分
            left_axis = 0.5 * 2**(2.2 / 1.5)
        elif right_axis < 10:
            left_axis = 10**(-0.20761) * right_axis**(-0.78427)
        else:
            return math.nan
        lower = mpa2Ksi(self.get_fcy())  # 分母
        upper = left_axis * lower
        Fcc = ksi2Mpa(upper)

        return Fcc
Ejemplo n.º 12
0
    def get_fcc(self):
        """
        7075 graph in page 12.
        :return:[MPa]
        """
        right_axis = self.get_x_of_graph()

        if right_axis < 0.1:
            return math.nan
        elif right_axis < 0.1 * 5**(27 / 33):
            # 一定部分
            # print("フランジ 直線部分")
            left_axis = 0.5 * 2**(2.2 / 1.5)
        elif right_axis < 10:
            left_axis = 10**(-0.20761) * right_axis**(-0.78427)
        else:
            return math.nan
        lower = mpa2Ksi(self.get_fcy())  # 分母
        upper = left_axis * lower  # 分子
        fcc = ksi2Mpa(upper)

        return fcc