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
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
def __init__(self, D): """Constructor. :param D:リベットの鋲径(直径mm) """ self.D = D self.F_su = ksi2Mpa(30) # とりあえずAD鋲を仮定
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
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
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
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
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
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]
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]
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
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