Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 156 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
156
Dung lượng
3,6 MB
Nội dung
Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN CƠNG MINH TÍNH TỐN TỐI ƯU KẾT CẤU SANDWICH Chuyên ngành: CƠ HỌC KỸ THUẬT LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng năm 2010 ii CƠNG TRÌNH ĐÃ ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa hoc : (Ghi rõ họ, tên, học hàm, học vị chữ ký) Cán chấm nhận xét : (Ghi rõ họ, tên, học hàm, học vị chữ ký) Cán chấm nhận xét : (Ghi rõ họ, tên, học hàm, học vị chữ ký) Luận văn thạc sĩ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 30 tháng năm 2010 TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC ỨNG DỤNG CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, ngày 25 tháng 01 năm 2010 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: NGUYỄN CÔNG MINH Phái: Nam Ngày, tháng, năm sinh: 03-02-1967 Nơi sinh: Bình Định Chuyên ngành: Cơ học kỹ thuật MSHV: 02308222 1- TÊN ĐỀ TÀI: TÍNH TỐN TỐI ƯU KẾT CẤU SANDWICH 2- NHIỆM VỤ LUẬN VĂN - Tính tốn tối ưu kết cấu sandwich dùng hàm mục tiêu độ cứng, hàm mục tiêu sức bền hàm mục tiêu khối lượng phương pháp giải tích - Tính tốn tối ưu kết cấu sandwich dùng hàm mục tiêu độ cứng, hàm mục tiêu sức bền hàm mục tiêu khối lượng phương pháp phần tử hữu hạn - Kiểm tra thực nghiệm để so sánh với kết tính tốn lý thuyết 3- NGÀY GIAO NHIỆM VỤ: 25/01/2010 4- NGÀY HOÀN THÀNH NHIỆM VỤ: 02/07/2010 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: PGS TS PHAN ĐÌNH HUẤN Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên ngành thông qua CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN KHOA QL CHUYÊN NGÀNH (Họ tên chữ ký) QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) (Họ tên chữ ký) iv LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp q trình tơi tích lũy kiến thức giảng dạy nhiệt tình Thầy Cô Trường Đại học Bách Khoa – Đại học Quốc gia Tp.HCM Tôi xin chân thành cảm ơn đến tất Thầy Cô Bộ môn Cơ Kỹ Thuật – Khoa Khoa học Ứng dụng truyền đạt kiến thức chuyên ngành, kinh nghiệm quý báu hai năm học cao học Tôi xin gởi đến Thầy PGS.TS Phan Đình Huấn lời cảm ơn chân thành Thầy tận tình hướng dẫn, giúp tơi chọn phương pháp nghiên cứu đề tài, giới thiệu tài liệu tham khảo cần thiết tạo điều kiện cho thực luận văn này, bên cạnh Thầy phát sai sót, quan niệm chưa đúng, giúp nghiên cứu vấn đề sát với thực tế Tôi xin chân thành cảm đến đến Anh Phịng Thí nghiệm tận tình giúp đỡ tơi q trình thực nghiệm Tơi xin chân thành cảm ơn đến Thầy Cô phản biện; người giành thời gian quý báu để xem cho ý kiến, nhận xét, đánh giá luận văn Tôi xin cảm ơn tất bạn bè, đồng nghiệp cho ý kiến đóng góp tài liệu cần thiết để luận văn hồn thiện Cuối cùng, tơi xin cảm ơn đến gia đình, người thân tơi; họ ủng hộ lớn mặt tinh thần suốt trình học làm luận văn tốt nghiệp tơi Nguyễn Cơng Minh v TĨM TẮT LUẬN VĂN THẠC SĨ Sandwich loại vật liệu composite dùng phổ biến công nghiệp, ngành chế tạo máy bay, tàu thủy kỹ thuật dân dụng Việc tính tốn tối ưu thơng số hình học kết cấu sandwich có ý nghĩa quan trọng việc thiết kế chế tạo nhằm cho kết cấu sandwich có khả làm việc tốt Đề tài nghiên cứu dựa lý thuyết kết cấu sandwich sở lý thuyết tối ưu, tính tốn tối ưu phương pháp giải tích phương pháp PTHH, so sánh kết với thực nghiệm để đưa thông số hình học tối ưu kết cấu sandwich Phương pháp nghiên cứu đề tài xây dựng mô hình tính tốn, từ mơ hình vận dụng phương pháp giải tích (MAPLE) tính tốn tối ưu kết cấu sandwich với hàm mục tiêu độ cứng, hàm mục tiêu sức bền kết cấu với thông số vật liệu cho trước Dùng phương pháp phần tử hữu hạn (ANSYS) tính tốn tối ưu kết cấu sandwich với hàm mục tiêu độ cứng, hàm mục tiêu sức bền kết cấu Cuối so sánh kết tính tốn kiểm chứng với thực nghiệm để đưa kết cấu phù hợp Đề tài xây dựng phần mềm tính tốn tối ưu dầm sandwich Dù thời gian nghiên cứu hạn chế vả phương pháp chưa thống Rất mong nhận đóng góp phê bình bạn đọc vi ABSTRACT Sandwich is a composite material used is common in industry, especially in manufacturing aircraft, ships and even in civil techniques The calculation of optimal parameters and geometry of the sandwich structure has important implications in the design and manufacture to produce sandwich structures are likely to work best This topic was studied based on the theory and basic sandwich structure optimization theory, optimal calculation method and finite element method, compared with experimental results to make the image parameters optimization study of sandwich structures Research methodology of this research is to develop computational model from the model applied analytical methods (MAPLE) calculates optimal sandwich structure with the objective function is hard, objective function is the strength of the link configuration parameters for a given material Using finite element method (ANSYS) to calculate the optimal sandwich structure with the objective function is hard, with the objective function is the structural strength Finally, comparing the results calculated and verified with experimental structures to make appropriate Subject also developed software to calculate the optimal sandwich beams Although time is limited and research methods have not yet agreed We hope the contributions of readers and critics vii MỤC LỤC Trang CHƯƠNG MỞ ĐẦU 1.1 LÝ DO CHỌN ĐỀ TÀI 1.2 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI .1 1.3 NỘI DUNG VÀ PHẠM VI NGHIÊN CỨU CHƯƠNG TỔNG QUAN VỀ VẬT LIỆU SANDWICH 2.1 VẬT LIỆU SANDWICH 2.1.1 Cấu trúc sandwich 2.1.2 Hiệu vật liệu sandwich 2.1.3 Vật liệu lớp mặt 2.1.4 Vật liệu lớp lõi 2.1.4.1 Lõi bọt 2.1.4.2 Lõi tổ ong 2.1.4.3 Lõi sóng 2.1.4.4 Lõi gỗ 2.1.5 Chất dính kết 2.1.6 Các ứng dụng cấu trúc sandwich 11 2.2 TÌNH HÌNH NGHIÊN CỨU VẬT LIỆU SANDWICH TRONG NƯỚC 12 2.3 TÌNH HÌNH NGHIÊN CỨU VẬT LIỆU SANDWICH NGOÀI NƯỚC .13 2.4 KẾT LUẬN 14 CHƯƠNG CƠ SỞ LÝ THUYẾT 15 3.1 KẾT CẤU SANDWICH CHỊU UỐN 15 3.1.1 Dầm sandwich chịu uốn 15 3.1.1.1 Độ cứng dầm sandwich .16 3.1.1.2 Ứng suất dầm sandwich 18 3.1.2 Tấm sandwich chịu uốn 26 3.1.2.1 Lý thuyết composite cổ điển .26 viii 3.1.2.2 Lý thuyết sandwich chịu uốn sử dụng thuyết biến dạng cắt bậc 36 3.1.3 Các dạng hỏng kết cấu sandwich chịu uốn .45 3.2 CÁC PHƯƠNG PHÁP TỐI ƯU HÓA KẾT CẤU 46 3.2.1 Khái niệm 46 3.2.2 Một số phương pháp tối ưu hóa kết cấu 47 3.2.2.1 Qui hoạch tuyến tính 47 3.2.2.2 Qui hoạch phi tuyến có ràng buộc 50 3.2.2.3 Phương pháp tuyến tính hóa 52 3.2.3 Khả tối ưu hóa MAPLE 53 3.2.4 Khả tối ưu hóa ANSYS 53 3.3 KẾT LUẬN 54 CHƯƠNG TÍNH TỐN TỐI ƯU KẾT CẤU SANDWICH 55 4.1 TÍNH TỐN TỐI ƯU DẦM SANDWICH CHIU UỐN BẰNG PHƯƠNG PHÁP GIẢI TÍCH 55 4.1.1 Tính tốn tối ưu dầm sandwich chiu uốn với hàm mục tiêu độ cứng (chuyển vị) 55 4.1.2 Tính tốn tối ưu dầm sandwich chiu uốn với hàm mục tiêu độ bền (ứng suất) 59 4.1.3 Tính tốn tối ưu dầm sandwich chiu uốn với hàm mục tiêu khối lượng 62 4.2 TÍNH TỐN TỐI ƯU TẤM SANDWICH CHIU UỐN BẰNG PHƯƠNG PHÁP GIẢI TÍCH 64 4.2.1 Tính tốn tối ưu sandwich chiu uốn với hàm mục tiêu độ cứng (chuyển vị) 64 4.2.2 Tính tốn tối ưu sandwich chiu uốn với hàm mục tiêu độ bền (ứng suất) .71 4.2.3 Tính tốn tối ưu sandwich chiu uốn với hàm mục tiêu khối lượng 73 ix 4.3 TÍNH TỐN TỐI ƯU KẾT CẤU SANDWICH BẰNG PHƯƠNG PHÁP PHẦN TỬ HỮU HẠN 74 4.3.1 Tính tốn tối ưu dầm sandwich phương pháp phần tử hữu hạn .74 4.3.1.1 Tính tốn tối ưu dầm sandwich với hàm mục tiêu độ cứng (chuyển vị) 74 4.3.12 Tính tốn tối ưu dầm sandwich với hàm mục tiêu độ bền (ứng suất) .81 4.3.13 Tính tốn tối ưu dầm sandwich với hàm mục tiêu khối lượng .82 4.3.2 Tính tốn tối ưu sandwich phương pháp phần tử hữu hạn 86 4.3.2.1 Tính tốn tối ưu sandwich với hàm mục tiêu độ cứng (chuyển vị) 86 4.3.2.2 Tính toán tối ưu sandwich với hàm mục tiêu độ bền (ứng suất) .92 4.3.2.3 Tính tốn tối ưu sandwich với hàm mục tiêu khối lượng 93 4.4 KIỂM CHỨNG KẾT QUẢ 97 4.4.1 Kết cho phương pháp giải tích phương pháp PTHH 97 4.4.2 Chế tạo mơ hình thí nghiệm kiểm chứng kết đo 99 4.4.2.1 Đặt toán tối ưu 99 4.4.2.2 Chế tạo mơ hình thí nghiệm 101 4.5 KẾT LUẬN 107 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 108 5.1 KẾT LUẬN 108 5.2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI .108 TÀI LIỆU THAM KHẢO 109 PHỤ LỤC .112 x DANH MỤC CÁC KÝ HIỆU TOÁN HỌC Ký hiệu A (AG)td Ý nghĩa Diện tích mặt cắt ngang Độ cứng cắt tương đương b Chiều rộng dầm sandwich d Khoảng cách hai tâm lớp bề mặt sandwich dA Phần tử diện tích dF Phần tử lực dM Phần tử moment E Modun đàn hồi Young (EI)c Độ cứng uốn lõi (EI)f Độ cứng uốn lớp bề mặt (EI)td Độ cứng uốn tương đương Ec Modun đàn hồi lớp lõi Ef Modun đàn hồi lớp bề mặt F Lực tác dụng G Modun đàn hồi trượt g(x) Điều kiện ràng buộc h Chiều dày kết cấu sandwich I Moment quán tính mặt cắt ngang k Hệ số cắt K 1, K Hệ số hiệu chỉnh cắt lc Chiều dài cung M Moment Qij Độ cứng hệ tọa độ ij Rx Bán kính cong 126 self.f30=Frame(self.f1_C2,padx=2,pady=4) self.f30.pack(side='bottom',expand='1',fill='x') Button(self.f30, text="Analysis and Plot 3D ",command=self._choose,width=25).pack(side='top') self.f1712=LabelFrame(self.f1_C22,text="Analysis Results") self.f1712.pack(side='top',fill='y') self.label6 = Label(self.f1712, text=' ', width=20) self.label7 = Label(self.f1712, text=' ', width=20) self.label8 = Label(self.f1712, text=' ', width=20) self.label9 = Label(self.f1712, text=' ', width=20) self.label10 = Label(self.f1712, text=' ', width=20) self.label6.pack(side=TOP, anchor=W, expand=YES) self.label7.pack(side=TOP, anchor=W, expand=YES) self.label8.pack(side=TOP, anchor=W, expand=YES) self.label9.pack(side=TOP, anchor=W, expand=YES) self.label10.pack(side=TOP, anchor=W, expand=YES) def _choose(self): self.P = float(self.enter2.get()) self.L = float(self.enter3.get()) self.b = float(self.enter4.get()) self.Ef = float(self.enter5.get()) self.Ec = float(self.enter6.get()) self.vf = float(self.enter7.get()) self.vc = float(self.enter8.get()) self.tau_yc = float(self.enter13.get()) self.sigma_yf = float(self.enter14.get()) self.Displament_Limit =float(self.enter131.get()) self.tf1 = float(self.enter16.get()) self.tf2 = float(self.enter161.get()) self.a1 = float(self.enter17.get()) self.a2 = float(self.enter171.get()) dovong, aa, tff, sigma_ff_max, tau_cc_max, tf, a,delta = toiuu_dovong(self.P, self.L, self.b, self.Ef, self.Ec, self.vf, self.vc, self.B1, self.B2, self.B3, self.B4, self.tau_yc, self.sigma_yf, self.Displament_Limit,self.tf1,self.tf2,self.a1,self.a2) 127 print "Displayment: ", dovong, "\na = ", aa, "\ntf = ", tff, "\nSigma_f = ", sigma_ff_max, "\nTau_c = ", tau_cc_max self.label6.config(text="Uz = "+str(round(dovong,4))) self.label7.config(text="a = "+str(round(aa,4))) self.label8.config(text="tf = "+str(round(tff,4))) self.label9.config(text="Sigma_f = "+str(round(sigma_ff_max,4))) self.label10.config(text="Tau_c = "+str(round(tau_cc_max,4))) fig = plt.figure() ax = Axes3D(fig) Z = delta X, Y = np.meshgrid(tf, a) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel("tf") ax.set_ylabel("a") ax.set_zlabel("Displayment") plt.show() def _cancel(self): self.top.destroy() # Toi uu ung suat mat class nguyencongminh_stress(object): def init (self, B1, B2, B3, B4, duongdan): #self.parent=master self.B1 = float(B1) self.B2 = float(B2) self.B3 = float(B3) self.B4 = float(B4) self.duongdan = duongdan self.top=Toplevel(padx=2,pady=2,takefocus='1') self.top.title("OPTIMIZATION FACE NORMAL STRESS") self.top.resizable(False, False) self.f1=LabelFrame(self.top,text="Input Parameters",relief=FLAT) self.f1.pack(side='left',fill='y') self.f1_C2=LabelFrame(self.top,text="Input Parameters",relief=FLAT) self.f1_C2.pack(side='right',fill='y') self.f1_C22=LabelFrame(self.top,text="",relief=FLAT) 128 self.f1_C22.pack(side='top',fill='y') photo1 = PhotoImage(data=self.duongdan) button1 = Button(self.f1_C2, compound=TOP, width=150, height=80, image=photo1) button1.pack(side='top',fill='y') button1.image = photo1 # Input P self.newn1=StringVar() self.newn1.set("370") self.f2=LabelFrame(self.f1,text="P :") self.f2.pack(side='top',fill='y') self.fx2=Frame(self.f2) self.fx2.pack(fill='y',expand='1') self.enter2 = Entry(self.fx2, bg='green', width=30 , textvariable=self.newn1) self.enter2.pack(side='top' , anchor=W, expand=YES) # Input L self.newn2=StringVar() self.newn2.set("400") self.f3=LabelFrame(self.f1,text="L :") self.f3.pack(side='top',fill='y') self.fx3=Frame(self.f3) self.fx3.pack(fill='y',expand='1') self.enter3 = Entry(self.fx3, bg='green', width=30, textvariable=self.newn2) self.enter3.pack(side='top' , anchor=W, expand=YES) # Input b self.newn3=StringVar() self.newn3.set("100") self.f4=LabelFrame(self.f1,text="b :") self.f4.pack(side='top',fill='y') self.fx4=Frame(self.f4) self.fx4.pack(fill='y',expand='1') self.enter4 = Entry(self.fx4, bg='green', width=30,textvariable=self.newn3) self.enter4.pack(side='top' , anchor=W, expand=YES) # Input Ef self.newn4=StringVar() self.newn4.set("68900") self.f5=LabelFrame(self.f1,text="Ef :") self.f5.pack(side='top',fill='y') self.fx5=Frame(self.f5) 129 self.fx5.pack(fill='y',expand='1') self.enter5 = Entry(self.fx5, bg='green', width=30,textvariable=self.newn4) self.enter5.pack(side='top' , anchor=W, expand=YES) # Input Ec self.newn5=StringVar() self.newn5.set("108.304") self.f6=LabelFrame(self.f1,text="Ec :") self.f6.pack(side='top',fill='y') self.fx6=Frame(self.f6) self.fx6.pack(fill='y',expand='1') self.enter6 = Entry(self.fx6, bg='green', width=30,textvariable=self.newn5) self.enter6.pack(side='top' , anchor=W, expand=YES) # Input vf self.newn6=StringVar() self.newn6.set("0.35") self.f7=LabelFrame(self.f1,text="vf :") self.f7.pack(side='top',fill='y') self.fx7=Frame(self.f7) self.fx7.pack(fill='y',expand='1') self.enter7 = Entry(self.fx7, bg='green', width=30,textvariable=self.newn6) self.enter7.pack(side='top' , anchor=W, expand=YES) # Input vc self.newn7=StringVar() self.newn7.set("0.3") self.f8=LabelFrame(self.f1,text="vc :") self.f8.pack(side='top',fill='y') self.fx8=Frame(self.f8) self.fx8.pack(fill='y',expand='1') self.enter8 = Entry(self.fx8, bg='green', width=30,textvariable=self.newn7) self.enter8.pack(side='top' , anchor=W, expand=YES) self.f151=LabelFrame(self.f1_C2,text="Mode of Loading:") self.f151.pack(side='top',fill='y') # Input B1 self.f9=LabelFrame(self.f151,text="B1 = " + str(self.B1)) self.f9.pack(side='top',fill='y') self.fx9=Frame(self.f9) self.fx9.pack(fill='y',expand='1') #self.enter9 = Entry(self.fx9, bg='yellow', width=20) #self.enter9.pack(side='top' , anchor=W, expand=YES) 130 # Input B2 self.f10=LabelFrame(self.f151,text="B2 = " + str(self.B2)) self.f10.pack(side='top',fill='y') self.fx10=Frame(self.f10) self.fx10.pack(fill='y',expand='1') #self.enter10 = Entry(self.fx10, bg='yellow', width=20) #self.enter10.pack(side='top' , anchor=W, expand=YES) # Input B3 self.f11=LabelFrame(self.f151,text="B3 = "+ str(self.B3)) self.f11.pack(side='top',fill='y') self.fx11=Frame(self.f11) self.fx11.pack(fill='y',expand='1') #self.enter11 = Entry(self.fx11, bg='yellow', width=20) #self.enter11.pack(side='top' , anchor=W, expand=YES) # Input B4 self.f12=LabelFrame(self.f151,text="B4 = "+ str(self.B4)) self.f12.pack(side='top',fill='y') self.fx12=Frame(self.f12) self.fx12.pack(fill='y',expand='1') #self.enter12 = Entry(self.fx12, bg='yellow', width=20) #self.enter12.pack(side='top' , anchor=W, expand=YES) # Input tau_yc self.newn8=StringVar() self.newn8.set("3.9698") self.f13=LabelFrame(self.f1,text="Core Shear Stress Yield:") self.f13.pack(side='top',fill='y') self.fx13=Frame(self.f13) self.fx13.pack(fill='y',expand='1') self.enter13 = Entry(self.fx13, bg='green', width=30,textvariable=self.newn8) self.enter13.pack(side='top' , anchor=W, expand=YES) # Input sigma_yf self.newn9=StringVar() self.newn9.set("255") self.f14=LabelFrame(self.f1,text="Face Normal Stress Yield:") self.f14.pack(side='top',fill='y') self.fx14=Frame(self.f14) self.fx14.pack(fill='y',expand='1') self.enter14 = Entry(self.fx14, bg='green', width=30,textvariable=self.newn9) self.enter14.pack(side='top' , anchor=W, expand=YES) 131 # Input Displayment_Limit self.newn81=StringVar() self.newn81.set("0.5") self.f131=LabelFrame(self.f1,text="Displayment Limit:") self.f131.pack(side='top',fill='y') self.fx131=Frame(self.f131) self.fx131.pack(fill='y',expand='1') self.enter131 = Entry(self.fx131, bg='green', width=30,textvariable=self.newn81) self.enter131.pack(side='top' , anchor=W, expand=YES) # Input Optimization Parameters self.f15=LabelFrame(self.f1_C2,text="Optimization Parameters:") self.f15.pack(side='top',fill='y') #self.fx15=Frame(self.f15) #self.fx15.pack(fill='y',expand='1') #self.enter15 = Entry(self.fx15, bg='yellow', width=20) #self.enter15.pack(side='top' , anchor=W, expand=YES) self.newn10=StringVar() self.newn10.set("1") self.f16=LabelFrame(self.f15,text="tf = [tf1,tf2]") self.f16.pack(side='top',fill='y') self.fx16=Frame(self.f16) self.fx16.pack(fill='y',expand='1') self.enter16 = Entry(self.fx16, bg='green', width=15,textvariable=self.newn10) self.enter16.pack(side='left' , anchor=W, expand=YES) self.newn101=StringVar() self.newn101.set("10") self.fx161=Frame(self.f16) self.fx161.pack(fill='y',expand='1') self.enter161 = Entry(self.fx161, bg='green', width=15,textvariable=self.newn101) self.enter161.pack(side='right' , anchor=W, expand=YES) self.newn11=StringVar() self.newn11.set("0.1") self.f17=LabelFrame(self.f15,text="a = [a1,a2]") self.f17.pack(side='top',fill='y') self.fx17=Frame(self.f17) self.fx17.pack(fill='y',expand='1') self.enter17 = Entry(self.fx17, bg='green', width=15,textvariable=self.newn11) 132 self.enter17.pack(side='top' , anchor=W, expand=YES) self.newn111=StringVar() self.newn111.set("0.5") self.fx171=Frame(self.f17) self.fx171.pack(fill='y',expand='1') self.enter171 = Entry(self.fx171, bg='green', width=15,textvariable=self.newn111) self.enter171.pack(side='top' , anchor=W, expand=YES) self.f30=Frame(self.f1_C2,padx=2,pady=4) self.f30.pack(side='bottom',expand='1',fill='x') Button(self.f30, text="Analysis and Plot 3D ",command=self._choose,width=25).pack(side='top') self.f1712=LabelFrame(self.f1_C22,text="Analysis Results") self.f1712.pack(side='top',fill='y') self.label6 = Label(self.f1712, text=' ', width=20) self.label7 = Label(self.f1712, text=' ', width=20) self.label8 = Label(self.f1712, text=' ', width=20) self.label9 = Label(self.f1712, text=' ', width=20) self.label10 = Label(self.f1712, text=' ', width=20) self.label6.pack(side=TOP, anchor=W, expand=YES) self.label7.pack(side=TOP, anchor=W, expand=YES) self.label8.pack(side=TOP, anchor=W, expand=YES) self.label9.pack(side=TOP, anchor=W, expand=YES) self.label10.pack(side=TOP, anchor=W, expand=YES) def _choose(self): self.P = float(self.enter2.get()) self.L = float(self.enter3.get()) self.b = float(self.enter4.get()) self.Ef = float(self.enter5.get()) self.Ec = float(self.enter6.get()) self.vf = float(self.enter7.get()) self.vc = float(self.enter8.get()) self.tau_yc = float(self.enter13.get()) self.sigma_yf = float(self.enter14.get()) self.Displament_Limit =float(self.enter131.get()) self.tf1 = float(self.enter16.get()) 133 self.tf2 = float(self.enter161.get()) self.a1 = float(self.enter17.get()) self.a2 = float(self.enter171.get()) sigma_ff_max, aa, tff, dovong, tau_cc_max, tf, a,delta = toiuu_stress(self.P, self.L, self.b, self.Ef, self.Ec, self.vf, self.vc, self.B1, self.B2, self.B3, self.B4, self.tau_yc, self.sigma_yf, self.Displament_Limit,self.tf1,self.tf2,self.a1,self.a2) print "Sigma_f = ", sigma_ff_max , "\na = ", aa, "\ntf = ", tff, "\nDisplayment: ", dovong , "\nTau_c = ", tau_cc_max self.label6.config(text="Sigma_f = "+str(round(sigma_ff_max,4))) self.label7.config(text="a = "+str(round(aa,4))) self.label8.config(text="tf = "+str(round(tff,4))) self.label9.config(text="Uz = "+str(round(dovong,4))) self.label10.config(text="Tau_c = "+str(round(tau_cc_max,4))) fig = plt.figure() ax = Axes3D(fig) Z = delta X, Y = np.meshgrid(tf, a) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel("tf") ax.set_ylabel("a") ax.set_zlabel("Face Normal Stress") plt.show() def _cancel(self): self.top.destroy() # Toi uu ung suat loi class nguyencongminh_stressc(object): def init (self, B1, B2, B3, B4, duongdan): #self.parent=master self.B1 = float(B1) self.B2 = float(B2) self.B3 = float(B3) self.B4 = float(B4) self.duongdan = duongdan self.top=Toplevel(padx=2,pady=2,takefocus='1') self.top.title("OPTIMIZATION CORE SHEAR STRESS") 134 self.top.resizable(False, False) self.f1=LabelFrame(self.top,text="Input Parameters",relief=FLAT) self.f1.pack(side='left',fill='y') self.f1_C2=LabelFrame(self.top,text="Input Parameters",relief=FLAT) self.f1_C2.pack(side='right',fill='y') self.f1_C22=LabelFrame(self.top,text="",relief=FLAT) self.f1_C22.pack(side='top',fill='y') photo1 = PhotoImage(data=self.duongdan) button1 = Button(self.f1_C2, compound=TOP, width=150, height=80, image=photo1) button1.pack(side='top',fill='y') button1.image = photo1 # Input P self.newn1=StringVar() self.newn1.set("370") self.f2=LabelFrame(self.f1,text="P :") self.f2.pack(side='top',fill='y') self.fx2=Frame(self.f2) self.fx2.pack(fill='y',expand='1') self.enter2 = Entry(self.fx2, bg='green', width=30 , textvariable=self.newn1) self.enter2.pack(side='top' , anchor=W, expand=YES) # Input L self.newn2=StringVar() self.newn2.set("400") self.f3=LabelFrame(self.f1,text="L :") self.f3.pack(side='top',fill='y') self.fx3=Frame(self.f3) self.fx3.pack(fill='y',expand='1') self.enter3 = Entry(self.fx3, bg='green', width=30, textvariable=self.newn2) self.enter3.pack(side='top' , anchor=W, expand=YES) # Input b self.newn3=StringVar() self.newn3.set("100") self.f4=LabelFrame(self.f1,text="b :") self.f4.pack(side='top',fill='y') self.fx4=Frame(self.f4) self.fx4.pack(fill='y',expand='1') 135 self.enter4 = Entry(self.fx4, bg='green', width=30,textvariable=self.newn3) self.enter4.pack(side='top' , anchor=W, expand=YES) # Input Ef self.newn4=StringVar() self.newn4.set("68900") self.f5=LabelFrame(self.f1,text="Ef :") self.f5.pack(side='top',fill='y') self.fx5=Frame(self.f5) self.fx5.pack(fill='y',expand='1') self.enter5 = Entry(self.fx5, bg='green', width=30,textvariable=self.newn4) self.enter5.pack(side='top' , anchor=W, expand=YES) # Input Ec self.newn5=StringVar() self.newn5.set("108.304") self.f6=LabelFrame(self.f1,text="Ec :") self.f6.pack(side='top',fill='y') self.fx6=Frame(self.f6) self.fx6.pack(fill='y',expand='1') self.enter6 = Entry(self.fx6, bg='green', width=30,textvariable=self.newn5) self.enter6.pack(side='top' , anchor=W, expand=YES) # Input vf self.newn6=StringVar() self.newn6.set("0.35") self.f7=LabelFrame(self.f1,text="vf :") self.f7.pack(side='top',fill='y') self.fx7=Frame(self.f7) self.fx7.pack(fill='y',expand='1') self.enter7 = Entry(self.fx7, bg='green', width=30,textvariable=self.newn6) self.enter7.pack(side='top' , anchor=W, expand=YES) # Input vc self.newn7=StringVar() self.newn7.set("0.3") self.f8=LabelFrame(self.f1,text="vc :") self.f8.pack(side='top',fill='y') self.fx8=Frame(self.f8) self.fx8.pack(fill='y',expand='1') self.enter8 = Entry(self.fx8, bg='green', width=30,textvariable=self.newn7) self.enter8.pack(side='top' , anchor=W, expand=YES) self.f151=LabelFrame(self.f1_C2,text="Mode of Loading:") 136 self.f151.pack(side='top',fill='y') # Input B1 self.f9=LabelFrame(self.f151,text="B1 = " + str(self.B1)) self.f9.pack(side='top',fill='y') self.fx9=Frame(self.f9) self.fx9.pack(fill='y',expand='1') #self.enter9 = Entry(self.fx9, bg='yellow', width=20) #self.enter9.pack(side='top' , anchor=W, expand=YES) # Input B2 self.f10=LabelFrame(self.f151,text="B2 = " + str(self.B2)) self.f10.pack(side='top',fill='y') self.fx10=Frame(self.f10) self.fx10.pack(fill='y',expand='1') #self.enter10 = Entry(self.fx10, bg='yellow', width=20) #self.enter10.pack(side='top' , anchor=W, expand=YES) # Input B3 self.f11=LabelFrame(self.f151,text="B3 = "+ str(self.B3)) self.f11.pack(side='top',fill='y') self.fx11=Frame(self.f11) self.fx11.pack(fill='y',expand='1') #self.enter11 = Entry(self.fx11, bg='yellow', width=20) #self.enter11.pack(side='top' , anchor=W, expand=YES) # Input B4 self.f12=LabelFrame(self.f151,text="B4 = "+ str(self.B4)) self.f12.pack(side='top',fill='y') self.fx12=Frame(self.f12) self.fx12.pack(fill='y',expand='1') #self.enter12 = Entry(self.fx12, bg='yellow', width=20) #self.enter12.pack(side='top' , anchor=W, expand=YES) # Input tau_yc self.newn8=StringVar() self.newn8.set("3.9698") self.f13=LabelFrame(self.f1,text="Core Shear Stress Yield:") self.f13.pack(side='top',fill='y') self.fx13=Frame(self.f13) self.fx13.pack(fill='y',expand='1') self.enter13 = Entry(self.fx13, bg='green', width=30,textvariable=self.newn8) self.enter13.pack(side='top' , anchor=W, expand=YES) # Input sigma_yf 137 self.newn9=StringVar() self.newn9.set("255") self.f14=LabelFrame(self.f1,text="Face Normal Stress Yield:") self.f14.pack(side='top',fill='y') self.fx14=Frame(self.f14) self.fx14.pack(fill='y',expand='1') self.enter14 = Entry(self.fx14, bg='green', width=30,textvariable=self.newn9) self.enter14.pack(side='top' , anchor=W, expand=YES) # Input Displayment_Limit self.newn81=StringVar() self.newn81.set("0.5") self.f131=LabelFrame(self.f1,text="Displayment Limit:") self.f131.pack(side='top',fill='y') self.fx131=Frame(self.f131) self.fx131.pack(fill='y',expand='1') self.enter131 = Entry(self.fx131, bg='green', width=30,textvariable=self.newn81) self.enter131.pack(side='top' , anchor=W, expand=YES) # Input Optimization Parameters self.f15=LabelFrame(self.f1_C2,text="Optimization Parameters:") self.f15.pack(side='top',fill='y') #self.fx15=Frame(self.f15) #self.fx15.pack(fill='y',expand='1') #self.enter15 = Entry(self.fx15, bg='yellow', width=20) #self.enter15.pack(side='top' , anchor=W, expand=YES) self.newn10=StringVar() self.newn10.set("1") self.f16=LabelFrame(self.f15,text="tf = [tf1,tf2]") self.f16.pack(side='top',fill='y') self.fx16=Frame(self.f16) self.fx16.pack(fill='y',expand='1') self.enter16 = Entry(self.fx16, bg='green', width=15,textvariable=self.newn10) self.enter16.pack(side='left' , anchor=W, expand=YES) self.newn101=StringVar() self.newn101.set("10") self.fx161=Frame(self.f16) self.fx161.pack(fill='y',expand='1') self.enter161 = Entry(self.fx161, bg='green', width=15,textvariable=self.newn101) 138 self.enter161.pack(side='right' , anchor=W, expand=YES) self.newn11=StringVar() self.newn11.set("0.1") self.f17=LabelFrame(self.f15,text="a = [a1,a2]") self.f17.pack(side='top',fill='y') self.fx17=Frame(self.f17) self.fx17.pack(fill='y',expand='1') self.enter17 = Entry(self.fx17, bg='green', width=15,textvariable=self.newn11) self.enter17.pack(side='top' , anchor=W, expand=YES) self.newn111=StringVar() self.newn111.set("0.5") self.fx171=Frame(self.f17) self.fx171.pack(fill='y',expand='1') self.enter171 = Entry(self.fx171, bg='green', width=15,textvariable=self.newn111) self.enter171.pack(side='top' , anchor=W, expand=YES) self.f30=Frame(self.f1_C2,padx=2,pady=4) self.f30.pack(side='bottom',expand='1',fill='x') Button(self.f30, text="Analysis and Plot 3D ",command=self._choose,width=25).pack(side='top') self.f1712=LabelFrame(self.f1_C22,text="Analysis Results") self.f1712.pack(side='top',fill='y') self.label6 = Label(self.f1712, text=' ', width=20) self.label7 = Label(self.f1712, text=' ', width=20) self.label8 = Label(self.f1712, text=' ', width=20) self.label9 = Label(self.f1712, text=' ', width=20) self.label10 = Label(self.f1712, text=' ', width=20) self.label6.pack(side=TOP, anchor=W, expand=YES) self.label7.pack(side=TOP, anchor=W, expand=YES) self.label8.pack(side=TOP, anchor=W, expand=YES) self.label9.pack(side=TOP, anchor=W, expand=YES) self.label10.pack(side=TOP, anchor=W, expand=YES) def _choose(self): self.P = float(self.enter2.get()) self.L = float(self.enter3.get()) self.b = float(self.enter4.get()) self.Ef = float(self.enter5.get()) self.Ec = float(self.enter6.get()) 139 self.vf = float(self.enter7.get()) self.vc = float(self.enter8.get()) self.tau_yc = float(self.enter13.get()) self.sigma_yf = float(self.enter14.get()) self.Displament_Limit =float(self.enter131.get()) self.tf1 = float(self.enter16.get()) self.tf2 = float(self.enter161.get()) self.a1 = float(self.enter17.get()) self.a2 = float(self.enter171.get()) tau_cc_max , aa, tff, dovong, sigma_ff_max, tf, a,delta = toiuu_stressc(self.P, self.L, self.b, self.Ef, self.Ec, self.vf, self.vc, self.B1, self.B2, self.B3, self.B4, self.tau_yc, self.sigma_yf, self.Displament_Limit,self.tf1,self.tf2,self.a1,self.a2) print "Tau_c = ", tau_cc_max , "\na = ", aa, "\ntf = ", tff, "\nDisplayment: ", dovong , "\nSigma_f = ", sigma_ff_max self.label6.config(text="Tau_c = "+str(round(tau_cc_max,4))) self.label7.config(text="a = "+str(round(aa,4))) self.label8.config(text="tf = "+str(round(tff,4))) self.label9.config(text="Uz = "+str(round(dovong,4))) self.label10.config(text="Sigma_f = "+str(round(sigma_ff_max,4))) fig = plt.figure() ax = Axes3D(fig) Z = delta X, Y = np.meshgrid(tf, a) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ax.set_xlabel("tf") ax.set_ylabel("a") ax.set_zlabel("Core Shear Stress") plt.show() def _cancel(self): self.top.destroy() class Mnguyen(object): def init (self, master): self.master = master 140 self.top=Toplevel(padx=2,pady=2,takefocus='1') self.top.title("About Eng Nguyen Cong Minh") self.top.resizable(False, False) mmm =\ """ etc """ self.labelframe = LabelFrame(self.top, text="Eng Nguyen Cong Minh") self.labelframe.pack(fill="both", expand="yes") self.left = Label(self.labelframe, justify=LEFT, text=mmm) self.left.pack() self.button = Button(self.top, text="Dismiss", command=self.top.destroy) self.button.pack() # Main chinh root = Tk() root.title("SANDWICH BEAM OPTIMIZATION") root.geometry("750x350+0+0") # 600x400 pixels # Vi tri cua no window icon1='''\ # Hinh anh tren tieu de img1 = PhotoImage(data=icon1) # 136x133 pixels can1 = Canvas(root) can1.place(x=30.0, y=15.0) can1.config(width=img1.width(), height=img1.height( )) can1.create_image(0,0, image=img1, anchor=NW) # x, y coordinates app = App(root) root.mainloop() ... dầm sandwich Hình 4.12: Tấm sandwich chịu uốn Hình 4.13: Kết tính tối ưu với hàm mục tiêu độ cứng sandwich Hình 4.14: Kết tính tối ưu với hàm mục tiêu độ bền sandwich Hình 4.15: Kết tính tối ưu. .. tối ưu hóa ANSYS 53 3.3 KẾT LUẬN 54 CHƯƠNG TÍNH TỐN TỐI ƯU KẾT CẤU SANDWICH 55 4.1 TÍNH TỐN TỐI ƯU DẦM SANDWICH CHIU UỐN BẰNG PHƯƠNG PHÁP GIẢI TÍCH 55 4.1.1 Tính. .. nghiên cứu, tính toán tối ưu kết cấu sandwich lõi bọt (foam), dựa vào phương pháp tính tốn tối ưu giải tích phương pháp phần tử hữu hạn, so sánh kết với thực nghiệm để đưa kết cấu sandwich phù