Phân tích kết cấu tấm vật liệu phân lớp chức năng (FGMs) theo lý thuyết biến dạng cắt bậc cao dùng phần tử MITC3 được làm trơn trên cạnh (ES MITC3)

69 24 0
Phân tích kết cấu tấm vật liệu phân lớp chức năng (FGMs) theo lý thuyết biến dạng cắt bậc cao dùng phần tử MITC3 được làm trơn trên cạnh (ES MITC3)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phân tích kết cấu tấm vật liệu phân lớp chức năng (FGMs) theo lý thuyết biến dạng cắt bậc cao dùng phần tử MITC3 được làm trơn trên cạnh (ES MITC3) Phân tích kết cấu tấm vật liệu phân lớp chức năng (FGMs) theo lý thuyết biến dạng cắt bậc cao dùng phần tử MITC3 được làm trơn trên cạnh (ES MITC3) Phân tích kết cấu tấm vật liệu phân lớp chức năng (FGMs) theo lý thuyết biến dạng cắt bậc cao dùng phần tử MITC3 được làm trơn trên cạnh (ES MITC3)

LỜI CẢM ƠN Lời đầu tiên, xin gửi lời cảm ơn chân thành đến Thầy giáo hướng dẫn TS Châu Đình Thành Thầy đưa ý tưởng, lời khuyên, tận tình hướng dẫn, động viên định hướng đắn cho tơi suốt q trình làm luận văn Tôi xin gửi lời cảm ơn đến thầy khoa Kỹ thuật Xây dựng tận tình dạy bảo tơi suốt khóa học cao học trường, giúp đỡ, động viên, đưa lời khun hữu ích giúp tơi hồn thành luận văn Tôi xin gửi lời cảm ơn đến gia đình, đồng nghiệp bạn bè ln động viên tơi suốt thời gian hồn thành luận văn Tơi xin chân thành cảm ơn! Tp Hồ Chí Minh, tháng 04 năm 2017 Nguyễn Văn Hinh iii TÓM TẮT LUẬN VĂN Phân Tích Kết Cấu Tấm Vật Liệu Phân Lớp Chức Năng (FGMs) Theo Lý Thuyết Biến Dạng Cắt Bậc Cao Dùng Phần Tử MITC3 Được Làm Trơn Trên Cạnh (ES-MITC3) Nguyễn Văn Hinh Luận văn trình bày phân tích kết cấu vật liệu phân lớp chức sử dụng lý thuyết biến dạng cắt bậc cao (HSDT) phần tử tam giác ba nút Những thành phần trường biến dạng tấm, sử dụng kỹ thuật MITC3 để khử tượng khóa cắt (shear locking), làm trơn cạnh, gọi phần tử ES-MITC3, dạng liên tục C0 đề xuất, cần thêm hai bậc tự vào nút để giải tốn phân tích vật liệu phân lớp chức sử dụng (HSDT) Sự vượt trội xác phần tử ES-MITC3 đánh giá thơng qua số ví dụ số iv ABSTRACT Static analysis of functionally graded plates using the high-order shear deformation theory by MITC3 plate elements having strains smoothed on edges (ES-MITC3) Nguyen Van Hinh The thesis presents an efficient 3-node triangular finite plate element for static analysis of functionally graded plates using the high-order shear deformation theory (HSDT) The strain fields of the plate elements, which use the MITC3 technique to remove the shear-locking phenomenon, are smoothed on the edges of the elements to improve numerical demonstration The proposed C0type plate elements, namely ES-MITC3, need to two additional degrees of freedom at each node for solving functionally graded plates using the HSDT but shear correction factors of the plates are eliminated The robustness and accuracy of the ES-MITC3 plate elements are evaluated by several numerical examples v MỤC LỤC Quyết Định Giao Đề Tài LÝ LỊCH KHOA HỌC LỜI CAM ĐOAN LỜI CẢM ƠN TÓM TẮT LUẬN VĂN ABSTRACT MỤC LỤC DANH MỤC CHỮ VIẾT TẮT 11 DANH MỤC BẢNG BIỂU DANH MỤC HÌNH VẼ Chương TỔNG QUAN 1.1 Giới Thiệu Chung 1.2 Tổng Quan Tình Hình Nghiên Cứu 1.2.1 Tổng Quan Về Phân Tích Tấm Vật Liệu Phân Lớp Chức Năng FGMs 1.3 Phần Tử Tấm Tam Giác Ba Nút MITC3 1.4 Phương Pháp Phần Tử Hữu Hạn Trơn 1.5 Mục Đích Nghiên Cứu 1.6 Nhiệm Vụ Của Đề Tài Và Giới Hạn Đề Tài 1.7 Phương Pháp Nghiên Cứu Chương LÝ THUYẾT BIẾN DẠNG CẮT BẬC CAO CHO TẤM VẬT LIỆU PHÂN LỚP CHỨC NĂNG (FGMs) 2.1 Tấm Vật Liệu Phân Lớp Chức Năng FGMs 2.2 Lý Thuyết Biến Dạng Cắt Bậc Cao 2.3 Trường Chuyển Vị 2.4 Trường Biến Dạng 12 viii 2.5 Trường Ứng Suất 13 2.6 Nội Lực Trong Tấm 14 Chương 15 PHẦN TỬ HỮU HẠN TRƠN ES-MITC3 15 3.1 Phần Tử Tam Giác Ba Nút Với Phương Pháp MITC3 15 3.2 Phương Pháp Phần Tử Hữu Hạn Trơn ES 19 Chương 22 PHÂN TÍCH CÁC VÍ DỤ SỐ 22 4.1 Phân tích tĩnh 23 4.1.1 Tấm vuông FGMs Al/ZnO2-1 chịu tải trọng phân bố 23 4.1.2 Tấm vuông FGMs Al/Al2O3 chịu tải trọng hình sin 26 4.1.3 Tấm xiên FGMs liên kết gối tựa đơn chịu tải phân bố 30 4.2 Phân tích dao động tự 32 4.2.1 Phân tích FGMs vng với điều kiện biên tựa đơn 32 4.3 Phân Tích Bài Tốn Tải Trọng Nhiệt 36 Chương 38 KẾT LUẬN 38 5.1 Kết đạt đề tài nghiên cứu 38 5.2 Những hạn chế tồn 38 5.3 Đề xuất hướng nghiên cứu 39 TÀI LIỆU THAM KHẢO 40 PHỤ LỤC 44 6.1 Code Phân Tích Độ Võng Và Ứng Suất Tấm FGMs Al2O3 Điều Kiện Biên Tựa Đơn Chịu Tải Trọng Hình Sin: 44 6.2 Code Phân Tích Độ Võng Và Ứng Suất Tấm FGMs ZrO2 Điều Kiện Biên Tựa Đơn Chịu Tải Trọng Phân Bố Đều: 48 6.3 Code Phân Tích Dao Động Riêng Của Tấm 52 6.4 Code Phân Tích Tải Trọng Nhiệt Độ 55 vii DANH MỤC CHỮ VIẾT TẮT  x , y , y Biến dạng dài theo phương x, y, z u, v, w Chuyển vị theo phương x, y, z x ,  y Chuyển vị góc xoay quanh trục y x x ,  y Hàm độ cong x,y Ứng suất pháp tuyến theo trục x y  xy ,  xz , yz Ứng suất tiếp mặt phẳng có vec tơ pháp tuyến x, y, z  Hệ số Poisson vật liệu E Mô đun đàn hồi vật liệu h Chiều dày a, L Bề rộng Dm Ma trận độ cứng vật liệu chịu uốn Ds Ma trận độ cứng vật liệu chịu cắt Bb Ma trận quan hệ biến dạng chuyển vị chịu uốn Bs Ma trận quan hệ biến dạng chuyển vị chịu cắt f Vec tơ lực K Ma trận độ cứng phần tử KMITC3 Ma trận độ cứng phần tử MITC3 εb Biến dạng uốn εb Biến dạng uốn trơn εs Biến dạng cắt vii ε MITC s Biến dạng cắt MITC3 ix DANH MỤC BẢNG BIỂU BẢNG TRANG Bảng 4.1: Đặc trưng vật liệu thành phần FGMs 23 Bảng 4.2: Độ võng không thứ nguyên wc  100wc Emh / (12(1 ) pL 23 Bảng 4.3: Các thành phần độ võng, ứng suất không thứ nguyên Al/Al2O3 27 Bảng 4.4: Các thành phần độ võng không thứ nguyên 30 Bảng 4.5: Kết phân tích tần số dao động riêng ứng với mode số 32 x DANH MỤC HÌNH VẼ HÌNH TRANG Hình 1.1: Vật liệu FGMs với phân bố vật liệu theo phương Hình 2.1: Tấm vật liệu FGMs (Functionally graded materials) Hình 2.2: Đồ thị thể hàm phân phối Vc theo chiều dày Hình 2.3: Đồ thị thể hàm phân phối nhiệt độ dọc theo chiều dày Hình 2.4: Biến dạng mặt cắt ngang theo: (a)(CLPT) cổ điển [24], (b)(FSDT) biến dạng cắt bậc [25], (c)(HSDT) biến dạng cắt bậc ba [26] Hình 2.5: Các chuyển vị u, v, w góc xoay  x ,  y 11 Hình 3.1: Phần tử tam giác (a) hệ toạ độ vật lý; (b) hệ toạ độ tự nhiên 15 Hình 3.2: Cách xác định biến dạng trượt ngang eqt 17 Hình 3.3: Vị trí điểm buộc cho phần tử tam giác ba nút 18 Hình 3.4: Miền trơn k liên kết với cạnh k phần tử tam giác 20 Hình 4.1: Độ võng khơng thứ ngun FGMs với cách chia lưới 24 Hình 4.2: Độ võng không thứ nguyên FGMs với tỷ số L/h thay đổi 26 Hình 4.3: Tấm FGMs loại Al/Al2O3 với liên kết biên gối tựa đơn 26 Hình 4.4: Các thành phần ứng suất thay đổi theo chiều dày Al/Al2O3 29 Hình 4.5: Hệ tọa độ xiên góc ψ 30 Hình 4.6: Kết ứng suất σxx dọc theo chiều dày Al/ZrO2 – (n = 0.5) 31 Hình 4.7: Kết ứng suất σxx dọc theo chiều dày Al/ZrO2 – (n = 2) 31 Hình 4.8: Dạng dao động riêng ứng với mode 33 xi Hình 4.9: Dạng dao động riêng ứng với mode 33 Hình 4.10: Dạng dao động riêng ứng với mode 34 Hình 4.11: Dạng dao động riêng ứng với mode 34 Hình 4.12: Dạng dao động riêng ứng với mode 35 Hình 4.13: Dạng dao động riêng ứng với mode 35 Hình 4.14: Kết độ võng không thứ nguyên chịu tác động 36 xi sdof=nnode*ndof; % total system dofs edof=nnel*ndof; % degrees of freedom per element % plot the mesh plotMesh= 1; if ( plotMesh ) % if plotMesh==1 we will plot the mesh plot_mesh(gcoord,nodes,elemType,'b-'); end % -% boundary conditions % -bcdof=[]; bcval=[]; % lower x-axis (y=0) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(i-1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % upper x-axis (y=L) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(nnx*(nny-1) + i - 1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % left y-axis (x=0) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i-1)*nnx; bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end % right y-axis (x=L) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i*nnx-1); bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end bcdof=unique(bcdof); bcval=zeros(size(bcdof)); % -% initialization of matrices and vectors % -ff=zeros(sdof,1); % system force vector kk=zeros(sdof,sdof); % system matrix % -% force vector % -q0= -1; % distributed load [ff]= N_ff_Sinload_PlateHSDT_7dof('T3',gcoord,nodes,q0,L,L); % % computation of element matrices and vectors and their assembly % nu1=[1/(1-nu^2) 1*nu/(1-nu^2) 0; 1*nu/(1-nu^2) 1/(1-nu^2) 0; 0 1*(1-nu)/(2*(1-nu^2))]; nu2=[1/(2*(1+nu)) 0; 1/(2*(1+nu))]; [AA,BB,DD,EE,FF,HH,As,Bs,Ds]= matmtFGMHSDT7(nu1,nu2,E1,Ez1,Ez2,Ez3,Ez4,Ez6,t); % Cp= [AA BB EE; BB DD FF; EE FF HH]; % Cs= [As Bs; Bs Ds]; % compute B matrix for all elements for iel=1:nel % loop for the total number of elements nd= nodes(iel,:); % extract connected node for (iel)-th element ecoord= gcoord(nd,:); % extract x, y value of the node Ae= cal_area(ecoord(:,1),ecoord(:,2)); a= ecoord(2,1) - ecoord(1,1); % a= x2 - x1 b= ecoord(2,2) - ecoord(1,2); % b= y2 - y1 c= ecoord(3,2) - ecoord(1,2); % c= y3 - y1 d= ecoord(3,1) - ecoord(1,1); % d= x3 - x1 % kinematic matrix for membrane kinmtm= [ b-c 0 0 0 c 0 0 0 -b 0 0 0; d-a 0 0 0 -d 0 0 0 a 0 0 0; d-a b-c 0 0 -d c 0 0 a -b 0 0 ]/2/Ae; Bm_mat{iel}= kinmtm; % kinematic matrix for bending kinmtb1= [ 0 0 b-c 0 0 0 c 0 0 0 -b 0; 0 -d+a 0 0 0 d 0 0 0 -a 0 0; 0 -b+c d-a 0 0 -c -d 0 0 b a 0 ]/2/Ae; Bb1_mat{iel}= kinmtb1; 45 kinmtb2= -4/3/t^2*[ 0 0 b-c b-c 0 0 c c 0 0 -b -b; 0 -d+a -d+a 0 0 d d 0 0 -a -a 0; 0 -b+c d-a -b+c d-a 0 -c -d -c -d 0 b a b a ]/2/Ae; Bb2_mat{iel}= kinmtb2; % kinematic matrix for shearing kinmts1= [0 b-c (b-c)*(b+c)/6 Ae+(d-a)*(b+c)/6 0 0 c -b*c/2+c*(b+c)/6 a*c/2d*(b+c)/6 0 0 -b b*c/2-b*(b+c)/6 -b*d/2+a*(b+c)/6 0; 0 d-a -Ae-(b-c)*(a+d)/6 -(d-a)*(a+d)/6 0 0 -d b*d/2-c*(a+d)/6 a*d/2+d*(a+d)/6 0 0 a -a*c/2+b*(a+d)/6 a*d/2-a*(a+d)/6 0 ]/2/Ae; Bs1_mat{iel}= kinmts1; kinmts2= -4/t^2*[0 0 1/3 1/3; 0 -1/3 1/3 0]; Bs2_mat{iel}= kinmts2; 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 - end % find neighouring cell of each edge of elements [triangle_neighbor] = triangulation_order3_neighbor_triangles(nel,nodes'); [index_edge]= [nodes triangle_neighbor']; % sort connections of edge [edges,area_Ecell,area_elem]= connect_edge('T3',gcoord,nodes,index_edge); for iedge=1:size(edges,1) [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); k= ( + + + + BmL'*AA*BmL + Bb1L'*BB*BmL + Bb2L'*EE*BmL BmL'*BB*Bb1L + Bb1L'*DD*Bb1L + Bb2L'*FF*Bb1L BmL'*EE*Bb2L + Bb1L'*FF*Bb2L + Bb2L'*HH*Bb2L Bs1L'*As*Bs1L + Bs1L'*Bs*Bs2L Bs2L'*Bs*Bs1L + Bs2L'*Ds*Bs2L)*area_Ecell(iedge); index= feeldof(nodL,length(nodL),ndof); element % extract system dofs associated with kk= feasmbl1(kk,k,index); % assemble element matrices end % % apply boundary conditions % [kk,ff]=feaplyc2(kk,ff,bcdof,bcval); % -% solve the matrix equation % -displ=kk\ff; num=1:1:sdof; displace=[num' displ]; % print nodal displacements disp('Maximum displacement') cen_node= (nnode+1)/2; % central node of the squared plate w_mx= displ((cen_node-1)*ndof+3) % maximum displacement at the centre str= sprintf('Normalized displ at centre (10wcEct^3/(q0L^4)): %.4f\n',10*w_mx*Ec*t^3/(q0*L^4)); disp(str) % -% post-processing % -% compute strain at edges for iedge=1:size(edges,1) [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); index= feeldof(nodL,length(nodL),ndof); % extract system dofs associated with element edgedispl= displ(index); memb_edge(:,iedge)= BmL*edgedispl; % esilon0 cur1_edge(:,iedge)= Bb1L*edgedispl; % kappa0 cur2_edge(:,iedge)= Bb2L*edgedispl; % kappa1 she1_edge(:,iedge)= Bs1L*edgedispl; % esilon_s 46 she2_edge(:,iedge)= Bs2L*edgedispl; % kappa_s end % compute strain at nodes memb_node= zeros(3,nnode); cur1_node= zeros(3,nnode); cur2_node= zeros(3,nnode); she1_node= zeros(2,nnode); she2_node= zeros(2,nnode); for inode= 1:nnode area_node= 0; for iedge= 1:size(edges,1) if edges(iedge,1)==inode | edges(iedge,2)==inode memb_node(:,inode)= memb_node(:,inode) + memb_edge(:,iedge)*area_Ecell(iedge); cur1_node(:,inode)= cur1_node(:,inode) + cur1_edge(:,iedge)*area_Ecell(iedge); cur2_node(:,inode)= cur2_node(:,inode) + cur2_edge(:,iedge)*area_Ecell(iedge); she1_node(:,inode)= she1_node(:,inode) + she1_edge(:,iedge)*area_Ecell(iedge); she2_node(:,inode)= she2_node(:,inode) + she2_edge(:,iedge)*area_Ecell(iedge); area_node= area_node + area_Ecell(iedge); end end memb_node(:,inode)= memb_node(:,inode)/area_node; cur1_node(:,inode)= cur1_node(:,inode)/area_node; cur2_node(:,inode)= cur2_node(:,inode)/area_node; she1_node(:,inode)= she1_node(:,inode)/area_node; she2_node(:,inode)= she2_node(:,inode)/area_node; end % compute stress along z-direction numdiv= 32; % number of divisions % central node (a/2,a/2) [sig_cen,ga_cen]= calStressThrgThk_HSDT_FGM(cen_node,numdiv,t,Ec,Em,n,nu, memb_node,cur1_node,cur2_node,she1_node,she2_node); sig_cen_bar= sig_cen*t/q0/L; sigX_cen_bar= sig_cen_bar(1,:)' % node (0,0) pt1= 1; [sig_pt1,ga_pt1]= calStressThrgThk_HSDT_FGM(pt1,numdiv,t,Ec,Em,n,nu, memb_node,cur1_node,cur2_node,she1_node,she2_node); sig_pt1_bar= sig_pt1*t/q0/L; gaXY_pt1_bar= sig_pt1_bar(3,:)' % node (0,L/2) pt2= (numx+1)*(numy/2)+1; [sig_pt2,ga_pt2]= calStressThrgThk_HSDT_FGM(pt2,numdiv,t,Ec,Em,n,nu, memb_node,cur1_node,cur2_node,she1_node,she2_node); ga_pt2_bar= ga_pt2*t/q0/L; gaXZ_pt2_bar= ga_pt2_bar(1,:)' % plot distribution of stress along the thickness zk= []; for i= 1:numdiv+1 if i==1 z_tmp= -t/2; else z_tmp= z_tmp + t/numdiv; end zk= [zk z_tmp]; end zk'/t figure(2) plot(sig_cen_bar(1,:),zk/t,'-k*') % sig_xx title('Normalized sigma_{xx} at (a/2,a/2)') figure(3) plot(sig_pt1_bar(3,:),zk/t,'-k*') % tau_xy title('Normalized tau_{xy} at (0,0)') figure(4) plot(ga_pt2_bar(1,:),zk/t,'-k*') % tau_xz title('Normalized tau_{xz} at (0,L/2)') 47 6.2 Code Phân Tích Độ Võng Và Ứng Suất Tấm FGMs ZrO2 Điều Kiện Biên Tựa Đơn Chịu Tải Trọng Phân Bố Đều: % Variable descriptions % k = element matrix % kb = element matrix for bending stiffness % ks = element matrix for shear stiffness % f = element vector % kk = system matrix % ff = system vector % disp = system nodal displacement vector % gcoord = coordinate values of each node % nodes = nodal connectivity of each element % index = a vector containing system dofs associated with each element % pointb = matrix containing sampling points for bending term % weightb = matrix containing weighting coefficients for bending term % points = matrix containing sampling points for shear term % weights = matrix containing weighting coefficients for shear term % bcdof = a vector containing dofs associated with boundary conditions % bcval = a vector containing boundary condition values associated with % the dofs in 'bcdof' % kinmtpb = matrix for kinematic equation for bending % matmtpb = matrix for material property for bending % kinmtps = matrix for kinematic equation for shear % matmtps = matrix for material property for shear % % -clear; clc; close all; % format long; format short; % % geometric data % L= 1; ratio= 0.2 %0.1 %0.05 t= ratio*L; % -% Functionally grade materials data % -Ec= 200; % ZrO2-1 Em= 70; % Al nu=0.3; syms z; % thickness coordinate, varies from -t/2 to t/2 n= %1 %0.5 %0 %2 % n is the power law index E1=((Ec-Em)*(0.5+z/t)^n+Em); Ez1=((Ec-Em)*(0.5+z/t)^n+Em)*z; Ez2=((Ec-Em)*(0.5+z/t)^n+Em)*z^2; Ez3=((Ec-Em)*(0.5+z/t)^n+Em)*z^3; Ez4=((Ec-Em)*(0.5+z/t)^n+Em)*z^4; Ez6=((Ec-Em)*(0.5+z/t)^n+Em)*z^6; % % meshing data % elemType= 'T3'; nnel= 3; % TRI number of nodes per element ndof= 7; % 7dof-COMPOSITE PLATE number of dofs per node numx= 12; %20; %16; %10; %8; %4; %2; length) numy= 12; %20; %16; %10; %8; %4; %2; length) % number of elements in the x-direction (beam % number of elements in the y-direction (beam nnx=numx+1; % number of nodes in the x-direction nny=numy+1; % number of nodes in the y-direction gcoord=square_node_array([0 0],[L 0],[L L],[0 L],nnx,nny); % nodal coordinates node_pattern1=[ nnx+2 ]; node_pattern2=[ nnx+2 nnx+1 ]; inc_u=1; 48 inc_v=nnx; nodes=[make_elem(node_pattern1,numx,numy,inc_u,inc_v); make_elem(node_pattern2,numx,numy,inc_u,inc_v) ]; % nodal elements nel= size(nodes,1); nnode= size(gcoord,1); sdof=nnode*ndof; edof=nnel*ndof; % % % % number of elements total number of nodes in system total system dofs degrees of freedom per element % plot the mesh plotMesh= 1; if ( plotMesh ) % if plotMesh==1 we will plot the mesh plot_mesh(gcoord,nodes,elemType,'b-'); end % -% boundary conditions % -bcdof=[]; bcval=[]; % lower x-axis (y=0) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(i-1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % upper x-axis (y=L) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(nnx*(nny-1) + i - 1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % left y-axis (x=0) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i-1)*nnx; bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end % right y-axis (x=L) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i*nnx-1); bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end bcdof=unique(bcdof); bcval=zeros(size(bcdof)); % -% initialization of matrices and vectors % -ff=zeros(sdof,1); % system force vector kk=zeros(sdof,sdof); % system matrix % -% force vector % -q0= -1; % distributed load [ff]= N_ff_Uniload_PlateHSDT_7dof('T3',gcoord,nodes,q0); % % computation of element matrices and vectors and their assembly % nu1=[1/(1-nu^2) 1*nu/(1-nu^2) 0; 1*nu/(1-nu^2) 1/(1-nu^2) 0; 0 1*(1-nu)/(2*(1-nu^2))]; nu2=[1/(2*(1+nu)) 0; 1/(2*(1+nu))]; [AA,BB,DD,EE,FF,HH,As,Bs,Ds]= matmtFGMHSDT7(nu1,nu2,E1,Ez1,Ez2,Ez3,Ez4,Ez6,t); % Cp= [AA BB EE; BB DD FF; EE FF HH]; % Cs= [As Bs; Bs Ds]; % compute B matrix for all elements for iel=1:nel % loop for the total number of elements nd= nodes(iel,:); % extract connected node for (iel)-th element ecoord= gcoord(nd,:); % extract x, y value of the node Ae= cal_area(ecoord(:,1),ecoord(:,2)); 49 a= b= c= d= ecoord(2,1) ecoord(2,2) ecoord(3,2) ecoord(3,1) - ecoord(1,1); ecoord(1,2); ecoord(1,2); ecoord(1,1); % % % % a= b= c= d= x2 y2 y3 x3 - x1 y1 y1 x1 % kinematic matrix for membrane kinmtm= [ b-c 0 0 0 c 0 0 0 -b 0 0 0; d-a 0 0 0 -d 0 0 0 a 0 0 0; d-a b-c 0 0 -d c 0 0 a -b 0 0 ]/2/Ae; Bm_mat{iel}= kinmtm; % kinematic matrix for bending kinmtb1= [ 0 0 b-c 0 0 0 c 0 0 0 -b 0; 0 -d+a 0 0 0 d 0 0 0 -a 0 0; 0 -b+c d-a 0 0 -c -d 0 0 b a 0 ]/2/Ae; Bb1_mat{iel}= kinmtb1; kinmtb2= -4/3/t^2*[ 0 0 b-c b-c 0 0 c c 0 0 -b -b; 0 -d+a -d+a 0 0 d d 0 0 -a -a 0; 0 -b+c d-a -b+c d-a 0 -c -d -c -d 0 b a b a ]/2/Ae; Bb2_mat{iel}= kinmtb2; % kinematic matrix for shearing kinmts1= [0 b-c (b-c)*(b+c)/6 Ae+(d-a)*(b+c)/6 0 0 c -b*c/2+c*(b+c)/6 a*c/2d*(b+c)/6 0 0 -b b*c/2-b*(b+c)/6 -b*d/2+a*(b+c)/6 0; 0 d-a -Ae-(b-c)*(a+d)/6 -(d-a)*(a+d)/6 0 0 -d b*d/2-c*(a+d)/6 a*d/2+d*(a+d)/6 0 0 a -a*c/2+b*(a+d)/6 a*d/2-a*(a+d)/6 0 ]/2/Ae; Bs1_mat{iel}= kinmts1; kinmts2= -4/t^2*[0 0 1/3 1/3; 0 -1/3 1/3 0]; Bs2_mat{iel}= kinmts2; 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 - end % find neighouring cell of each edge of elements [triangle_neighbor] = triangulation_order3_neighbor_triangles(nel,nodes'); [index_edge]= [nodes triangle_neighbor']; % sort connections of edge [edges,area_Ecell,area_elem]= connect_edge('T3',gcoord,nodes,index_edge); for iedge=1:size(edges,1) [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); k= ( + + + + BmL'*AA*BmL + Bb1L'*BB*BmL + Bb2L'*EE*BmL BmL'*BB*Bb1L + Bb1L'*DD*Bb1L + Bb2L'*FF*Bb1L BmL'*EE*Bb2L + Bb1L'*FF*Bb2L + Bb2L'*HH*Bb2L Bs1L'*As*Bs1L + Bs1L'*Bs*Bs2L Bs2L'*Bs*Bs1L + Bs2L'*Ds*Bs2L)*area_Ecell(iedge); index= feeldof(nodL,length(nodL),ndof); element kk= feasmbl1(kk,k,index); % extract system dofs associated with % assemble element matrices end % % apply boundary conditions % [kk,ff]=feaplyc2(kk,ff,bcdof,bcval); % -% solve the matrix equation % -displ=kk\ff; 50 num=1:1:sdof; displace=[num' displ]; % print nodal displacements disp('Maximum displacement') cen_node= (nnode+1)/2; % central node of the squared plate w_mx= displ((cen_node-1)*ndof+3) % maximum displacement at the centre str= sprintf('Normalized displ at centre (100wcEmt^3/(12(1-nu^2)q0L^4)): %.4f\n',100*w_mx*Em*t^3/((12*(1-nu^2)*q0*L^4))); disp(str) % -% post-processing % -% compute strain at edges for iedge=1:size(edges,1) [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); index= feeldof(nodL,length(nodL),ndof); % extract system dofs associated with element edgedispl= displ(index); memb_edge(:,iedge)= BmL*edgedispl; % esilon0 cur1_edge(:,iedge)= Bb1L*edgedispl; % kappa0 cur2_edge(:,iedge)= Bb2L*edgedispl; % kappa1 she1_edge(:,iedge)= Bs1L*edgedispl; % esilon_s she2_edge(:,iedge)= Bs2L*edgedispl; % kappa_s end % compute memb_node= cur1_node= cur2_node= she1_node= she2_node= strain at nodes zeros(3,nnode); zeros(3,nnode); zeros(3,nnode); zeros(2,nnode); zeros(2,nnode); for inode= 1:nnode area_node= 0; for iedge= 1:size(edges,1) if edges(iedge,1)==inode | edges(iedge,2)==inode memb_node(:,inode)= memb_node(:,inode) + memb_edge(:,iedge)*area_Ecell(iedge); cur1_node(:,inode)= cur1_node(:,inode) + cur1_edge(:,iedge)*area_Ecell(iedge); cur2_node(:,inode)= cur2_node(:,inode) + cur2_edge(:,iedge)*area_Ecell(iedge); she1_node(:,inode)= she1_node(:,inode) + she1_edge(:,iedge)*area_Ecell(iedge); she2_node(:,inode)= she2_node(:,inode) + she2_edge(:,iedge)*area_Ecell(iedge); area_node= area_node + area_Ecell(iedge); end end memb_node(:,inode)= memb_node(:,inode)/area_node; cur1_node(:,inode)= cur1_node(:,inode)/area_node; cur2_node(:,inode)= cur2_node(:,inode)/area_node; she1_node(:,inode)= she1_node(:,inode)/area_node; she2_node(:,inode)= she2_node(:,inode)/area_node; end % compute stress along z-direction numdiv= 32; % number of divisions % central node (a/2,a/2) [sig_cen,ga_cen]= calStressThrgThk_HSDT_FGM(cen_node,numdiv,t,Ec,Em,n,nu, memb_node,cur1_node,cur2_node,she1_node,she2_node); sig_cen_bar= -sig_cen*t^2/q0/L^2; sigX_cen_bar= sig_cen_bar(1,:)' % plot distribution of stress along the thickness zk= []; for i= 1:numdiv+1 if i==1 z_tmp= -t/2; else 51 z_tmp= z_tmp + t/numdiv; end zk= [zk z_tmp]; end 2*zk'/t figure(2) plot(sig_cen_bar(1,:),2*zk/t,'-k*') % sig_xx title('Normalized sigma_{xx} at (a/2,a/2)') % figure(3) % plot(ga_cen_bar(1,:),2*zk/t,'-k*') % tau_xz % title('Normalized tau_{xz} at (a/2,a/2)') 6.3 Code Phân Tích Dao Động Riêng Của Tấm % Variable descriptions % k = element matrix % kb = element matrix for bending stiffness % ks = element matrix for shear stiffness % f = element vector % kk = system matrix % ff = system vector % disp = system nodal displacement vector % gcoord = coordinate values of each node % nodes = nodal connectivity of each element % index = a vector containing system dofs associated with each element % pointb = matrix containing sampling points for bending term % weightb = matrix containing weighting coefficients for bending term % points = matrix containing sampling points for shear term % weights = matrix containing weighting coefficients for shear term % bcdof = a vector containing dofs associated with boundary conditions % bcval = a vector containing boundary condition values associated with % the dofs in 'bcdof' % kinmtpb = matrix for kinematic equation for bending % matmtpb = matrix for material property for bending % kinmtps = matrix for kinematic equation for shear % matmtps = matrix for material property for shear % % -clear; clc; close all; % format long; format short; % % geometric data % L= 1; ratio=0.05 %0.1 %0.05 t= ratio*L; % -% Functionally grade materials data % -Ec= 380; rhoc= 3800; % Al2O3 %Ec=200; rhoc= 5700; % ZrO2 Em=70; rhom= 2707; % Al nu=0.3; n=10 %0 %2 % n is the power law index syms z; % thickness coordinate, varies from -t/2 to t/2 E1=((Ec-Em)*(0.5+z/t)^n+Em); Ez1=((Ec-Em)*(0.5+z/t)^n+Em)*z; Ez2=((Ec-Em)*(0.5+z/t)^n+Em)*z^2; Ez3=((Ec-Em)*(0.5+z/t)^n+Em)*z^3; Ez4=((Ec-Em)*(0.5+z/t)^n+Em)*z^4; Ez6=((Ec-Em)*(0.5+z/t)^n+Em)*z^6; % % meshing data % elemType= 'T3'; nnel= 3; % TRI number of nodes per element ndof= 7; % 7dof-COMPOSITE PLATE number of dofs per node numx= 16; %20; %16; %10; %8; %4; %2; length) % number of elements in the x-direction (beam 52 numy= 16; %20; %16; %10; %8; %4; %2; length) % number of elements in the y-direction (beam nnx=numx+1; % number of nodes in the x-direction nny=numy+1; % number of nodes in the y-direction gcoord=square_node_array([0 0],[L 0],[L L],[0 L],nnx,nny); % nodal coordinates node_pattern1=[ nnx+2 ]; node_pattern2=[ nnx+2 nnx+1 ]; inc_u=1; inc_v=nnx; nodes=[make_elem(node_pattern1,numx,numy,inc_u,inc_v); make_elem(node_pattern2,numx,numy,inc_u,inc_v) ]; % nodal elements nel= size(nodes,1); nnode= size(gcoord,1); sdof=nnode*ndof; edof=nnel*ndof; % % % % number of elements total number of nodes in system total system dofs degrees of freedom per element % plot the mesh plotMesh= 1; if ( plotMesh ) % if plotMesh==1 we will plot the mesh plot_mesh(gcoord,nodes,elemType,'b-'); end % -% boundary conditions % -bcdof=[]; bcval=[]; % lower x-axis (y=0) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(i-1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % upper x-axis (y=L) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(nnx*(nny-1) + i - 1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % left y-axis (x=0) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i-1)*nnx; bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end % right y-axis (x=L) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i*nnx-1); bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end bcdof=unique(bcdof); bcval=zeros(size(bcdof)); % -% initialization of matrices and vectors % -% ff=zeros(sdof,1); % system force vector % kk=zeros(sdof,sdof); % system matrix % -% force vector % -% q0= -1; % distributed load % [ff]= N_ff_Uniload_PlateHSDT_7dof('T3',gcoord,nodes,q0); % % computation of element matrices and vectors and their assembly % nu1=[1/(1-nu^2) 1*nu/(1-nu^2) 0; 1*nu/(1-nu^2) 1/(1-nu^2) 0; 0 1*(1-nu)/(2*(1-nu^2))]; nu2=[1/(2*(1+nu)) 0; 53 1/(2*(1+nu))]; [AA,BB,DD,EE,FF,HH,As,Bs,Ds]= matmtFGMHSDT7(nu1,nu2,E1,Ez1,Ez2,Ez3,Ez4,Ez6,t); % Cp= [AA BB EE; BB DD FF; EE FF HH]; % Cs= [As Bs; Bs Ds]; % compute B matrix for all elements for iel=1:nel % loop for the total number of elements nd= nodes(iel,:); % extract connected node for (iel)-th element ecoord= gcoord(nd,:); % extract x, y value of the node Ae= cal_area(ecoord(:,1),ecoord(:,2)); a= b= c= d= ecoord(2,1) ecoord(2,2) ecoord(3,2) ecoord(3,1) - ecoord(1,1); ecoord(1,2); ecoord(1,2); ecoord(1,1); % % % % a= b= c= d= x2 y2 y3 x3 - x1 y1 y1 x1 % kinematic matrix for membrane kinmtm= [ b-c 0 0 0 c 0 0 0 -b 0 0 0; d-a 0 0 0 -d 0 0 0 a 0 0 0; d-a b-c 0 0 -d c 0 0 a -b 0 0 ]/2/Ae; Bm_mat{iel}= kinmtm; % kinematic matrix for bending kinmtb1= [ 0 0 b-c 0 0 0 c 0 0 0 -b 0; 0 -d+a 0 0 0 d 0 0 0 -a 0 0; 0 -b+c d-a 0 0 -c -d 0 0 b a 0 ]/2/Ae; Bb1_mat{iel}= kinmtb1; kinmtb2= -4/3/t^2*[ 0 0 b-c b-c 0 0 c c 0 0 -b -b; 0 -d+a -d+a 0 0 d d 0 0 -a -a 0; 0 -b+c d-a -b+c d-a 0 -c -d -c -d 0 b a b a ]/2/Ae; Bb2_mat{iel}= kinmtb2; % kinematic matrix for shearing kinmts1= [0 b-c (b-c)*(b+c)/6 Ae+(d-a)*(b+c)/6 0 0 c -b*c/2+c*(b+c)/6 a*c/2d*(b+c)/6 0 0 -b b*c/2-b*(b+c)/6 -b*d/2+a*(b+c)/6 0; 0 d-a -Ae-(b-c)*(a+d)/6 -(d-a)*(a+d)/6 0 0 -d b*d/2-c*(a+d)/6 a*d/2+d*(a+d)/6 0 0 a -a*c/2+b*(a+d)/6 a*d/2-a*(a+d)/6 0 ]/2/Ae; Bs1_mat{iel}= kinmts1; kinmts2= -4/t^2*[0 0 1/3 1/3; 0 -1/3 1/3 0]; Bs2_mat{iel}= kinmts2; 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 1/3 0 -1/3 0 - end % find neighouring cell of each edge of elements [triangle_neighbor] = triangulation_order3_neighbor_triangles(nel,nodes'); [index_edge]= [nodes triangle_neighbor']; % sort connections of edge [edges,area_Ecell,area_elem]= connect_edge('T3',gcoord,nodes,index_edge); kk=zeros(sdof,sdof); % system matrix for iedge=1:size(edges,1) [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); k= ( + + + + BmL'*AA*BmL + Bb1L'*BB*BmL + Bb2L'*EE*BmL BmL'*BB*Bb1L + Bb1L'*DD*Bb1L + Bb2L'*FF*Bb1L BmL'*EE*Bb2L + Bb1L'*FF*Bb2L + Bb2L'*HH*Bb2L Bs1L'*As*Bs1L + Bs1L'*Bs*Bs2L Bs2L'*Bs*Bs1L + Bs2L'*Ds*Bs2L)*area_Ecell(iedge); index= feeldof(nodL,length(nodL),ndof); element % extract system dofs associated with 54 kk= feasmbl1(kk,k,index); % assemble element matrices end % % compute global mass matrix % [weight,gpt]= quadrature(1,'TRIANGULAR',2); % sampling points enough per element for bending me= massFGMHSDT7(rhoc,rhom,n,t); % mass mm= zeros(sdof,sdof); for iel=1:nel % initialize system matrix % loop for the total number of elements nd= nodes(iel,:); % extract connected node for (iel)-th element ecoord= gcoord(nd,:); % extract x, y value of the node m= zeros(edof,edof); % initialization of mass matrix to zero for ig=1:size(weight) [shape,dNdrds]= lagrange_basis(elemType,gpt(ig,:),2); % compute shape jacob2= dNdrds'*ecoord; % compute Jacobian detjacob= det(jacob2); % determinant of Jacobian [Nmat]= getShapeMat(ndof,shape); % compute shape matrix m= m + Nmat'*me*Nmat*weight(ig)*detjacob; % compute element mass matrix end index= feeldof(nd,nnel,ndof); % extract system dofs associated with element mm= feasmbl1(mm,m,index); % assemble element matrices of mass end % -% computation of natural frequency and modeshapes % -nfreq= 1; [omega2,modeshape]= eigens(nfreq,kk,mm,bcdof); omegaBar= 10*sqrt(omega2)*t*sqrt(rhoc/Ec) % -% plot mode shapes % -for i= 1:nfreq U= modeshape(:,i); scale= 1.5; Z= U(3:ndof:sdof)*scale; figure('color',[1 1]) trisurf(nodes,gcoord(:,1),gcoord(:,2),Z); title(['Mode ',num2str(i),' (\omega = ',num2str(sqrt(omega2(i))),')']) view(37,60) ; axis off; end 6.4 Code Phân Tích Tải Trọng Nhiệt Độ % Variable descriptions % k = element matrix % kb = element matrix for bending stiffness % ks = element matrix for shear stiffness % f = element vector % kk = system matrix % ff = system vector % disp = system nodal displacement vector % gcoord = coordinate values of each node % nodes = nodal connectivity of each element % index = a vector containing system dofs associated with each element % pointb = matrix containing sampling points for bending term % weightb = matrix containing weighting coefficients for bending term % points = matrix containing sampling points for shear term 55 % weights = matrix containing weighting coefficients for shear term % bcdof = a vector containing dofs associated with boundary conditions % bcval = a vector containing boundary condition values associated with % the dofs in 'bcdof' % kinmtpb = matrix for kinematic equation for bending % matmtpb = matrix for material property for bending % kinmtps = matrix for kinematic equation for shear % matmtps = matrix for material property for shear % % -clear; clc; close all; % format long; format short; % % geometric data % L= 0.2; ratio= 0.01/0.2 %0.1 %0.05 t= ratio*L; % % Functionally grade materials data % Ec= 151; % ceramic ZrO2-2 Em= 70; % Aluminum nu=0.3; tc= 300; tm= 20; kc= 2.09; % thermal conductivity ceramic ZrO2-1=2.09 km= 204; % thermal conductivity metal Al=204 alc= 10e-6; % thermal expansion ceramic ZrO2-1= 10e-6 alm= 23e-6; % thermal expansion metal Al= 23e-6 syms z; % thickness coordinate, varies from -t/2 to t/2 n= % n is the power law index E1=((Ec-Em)*(0.5+z/t)^n+Em); Ez1=((Ec-Em)*(0.5+z/t)^n+Em)*z; Ez2=((Ec-Em)*(0.5+z/t)^n+Em)*z^2; Ez3=((Ec-Em)*(0.5+z/t)^n+Em)*z^3; Ez4=((Ec-Em)*(0.5+z/t)^n+Em)*z^4; Ez6=((Ec-Em)*(0.5+z/t)^n+Em)*z^6; % % meshing data % elemType= 'T3'; nnel= 3; % TRI number of nodes per element ndof= 7; % 7dof-COMPOSITE PLATE number of dofs per node numx= 16; %20; %16; %10; %8; %4; %2; length) numy= 16; %20; %16; %10; %8; %4; %2; length) % number of elements in the x-direction (beam % number of elements in the y-direction (beam nnx=numx+1; % number of nodes in the x-direction nny=numy+1; % number of nodes in the y-direction gcoord=square_node_array([0 0],[L 0],[L L],[0 L],nnx,nny); % nodal coordinates node_pattern1=[ nnx+2 ]; node_pattern2=[ nnx+2 nnx+1 ]; inc_u=1; inc_v=nnx; nodes=[make_elem(node_pattern1,numx,numy,inc_u,inc_v); make_elem(node_pattern2,numx,numy,inc_u,inc_v) ]; % nodal elements nel= size(nodes,1); nnode= size(gcoord,1); sdof=nnode*ndof; edof=nnel*ndof; % number of elements % total number of nodes in system % total system dofs % degrees of freedom per element 56 % plot the mesh plotMesh= 1; if ( plotMesh ) % if plotMesh==1 we will plot the mesh plot_mesh(gcoord,nodes,elemType,'b-'); end % -% boundary conditions % -bcdof=[]; bcval=[]; % lower x-axis (y=0) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(i-1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % upper x-axis (y=L) is simple support: u= w= thty= phiy= for i=1:nnx ind=ndof*(nnx*(nny-1) + i - 1); bcdof=[bcdof ind+1 ind+3 ind+5 ind+7]; end % left y-axis (x=0) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i-1)*nnx; bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end % right y-axis (x=L) is simple support: v= w= thtx= phix= for i=1:nny ind=ndof*(i*nnx-1); bcdof=[bcdof ind+2 ind+3 ind+4 ind+6]; end bcdof=unique(bcdof); bcval=zeros(size(bcdof)); % -% force vector % -ff=zeros(sdof,1); % initialize system force vector q0= -0*Em*t^4/L^4; %-1; % distributed load [ff]= N_ff_Uniload_PlateHSDT_7dof('T3',gcoord,nodes,q0); % % computation of element matrices and vectors and their assembly % nu1=[1/(1-nu^2) 1*nu/(1-nu^2) 0; 1*nu/(1-nu^2) 1/(1-nu^2) 0; 0 1*(1-nu)/(2*(1-nu^2))]; nu2=[1/(2*(1+nu)) 0; 1/(2*(1+nu))]; [AA,BB,DD,EE,FF,HH,As,Bs,Ds]= matmtFGMHSDT7(nu1,nu2,E1,Ez1,Ez2,Ez3,Ez4,Ez6,t); % Cp= [AA BB EE; BB DD FF; EE FF HH]; % Cs= [As Bs; Bs Ds]; % temparature load al= ((alc-alm)*(0.5+z/t)^n+alm); % thermal expansion at z Tz= Tzz(tm,tc,km,kc,z,t,n,50); % temparature at z Del_T= Tz - tm; N_th= eval(int(nu1*E1*al*Del_T,z,-t/2,t/2))*[1 0]'; M_th= eval(int(nu1*Ez1*al*Del_T,z,-t/2,t/2))*[1 0]'; P_th= eval(int(nu1*Ez3*al*Del_T,z,-t/2,t/2))*[1 0]'; % a stabilized shear coefficient % alstab=0.1; %T is sign matrix T_tmp= [ 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 T= [T_tmp zeros(ndof,ndof) zeros(ndof,ndof) T_tmp 0; 0; 0; 0; 0; 1; ]; zeros(ndof,ndof) zeros(ndof,ndof) 57 zeros(ndof,ndof) zeros(ndof,ndof) T_tmp]; % compute B matrix for all elements for iel=1:nel % loop for the total number of elements nd= nodes(iel,:); % extract connected node for (iel)-th element ecoord= gcoord(nd,:); % extract x, y value of the node Ae= cal_area(ecoord(:,1),ecoord(:,2)); a= b= c= d= ecoord(2,1) ecoord(2,2) ecoord(3,2) ecoord(3,1) - ecoord(1,1); ecoord(1,2); ecoord(1,2); ecoord(1,1); % % % % a= b= c= d= x2 y2 y3 x3 - x1 y1 y1 x1 % kinematic matrix for membrane kinmtm= [ b-c 0 0 0 c 0 0 0 -b 0 0 0; d-a 0 0 0 -d 0 0 0 a 0 0 0; d-a b-c 0 0 -d c 0 0 a -b 0 0 ]/2/Ae; Bm_mat{iel}= kinmtm; fe_Nth= kinmtm'*N_th*Ae; % thermal loads % kinematic matrix for bending kinmtb1= [ 0 b-c 0 0 0 c 0 0 0 -b 0 0; 0 0 d-a 0 0 0 -d 0 0 0 a 0; 0 d-a b-c 0 0 -d c 0 0 a -b 0 ]/2/Ae; kinmtb1= kinmtb1*T; Bb1_mat{iel}= kinmtb1; fe_Mth= kinmtb1'*M_th*Ae; % thermal load kinmtb2= -4/3/t^2*[ 0 b-c b-c 0 0 c c 0 0 -b -b 0; 0 0 d-a d-a 0 0 -d -d 0 0 a a; 0 d-a b-c d-a b-c 0 -d c -d c 0 a -b a -b ]/2/Ae; kinmtb2= kinmtb2*T; Bb2_mat{iel}= kinmtb2; fe_Pth= kinmtb2'*P_th*Ae; % thermal load % kinematic matrix for shearing kinmts1= [0 b-c (b-c)*(b+c)/6 Ae+(d-a)*(b+c)/6 0 0 c -b*c/2+c*(b+c)/6 a*c/2d*(b+c)/6 0 0 -b b*c/2-b*(b+c)/6 -b*d/2+a*(b+c)/6 0; 0 d-a -Ae-(b-c)*(a+d)/6 -(d-a)*(a+d)/6 0 0 -d b*d/2-c*(a+d)/6 a*d/2+d*(a+d)/6 0 0 a -a*c/2+b*(a+d)/6 a*d/2-a*(a+d)/6 0 ]/2/Ae; Bs1_mat{iel}= kinmts1; kinmts2= -4/t^2*[0 0 1/3 1/3 0 0 1/3 1/3 0 0 1/3 1/3; 0 -1/3 -1/3 0 0 -1/3 -1/3 0 0 -1/3 1/3 0]; Bs2_mat{iel}= kinmts2; % kinmts2= -4/3/thk^2*[0 0 1 0 0 1 0 0 1 0; % 0 0 1 0 0 1 0 0 1]; kinmts2= kinmts2*T; Bs2_mat{iel}= kinmts2; % add thermal load into global load fe_th= fe_Nth + fe_Mth + fe_Pth; index= feeldof(nd,length(nd),ndof); ff(index)= ff(index) + fe_th; - % extract system dofs associated with element end % find neighouring cell of each edge of elements [triangle_neighbor] = triangulation_order3_neighbor_triangles(nel,nodes'); [index_edge]= [nodes triangle_neighbor']; % sort connections of edge [edges,area_Ecell,area_elem]= connect_edge('T3',gcoord,nodes,index_edge); kk=zeros(sdof,sdof); % initialize system matrix for iedge=1:size(edges,1) 58 [nodL,BmL,Bb1L,Bb2L,Bs1L,Bs2L]= BmatPlateHSDT7_ES3(edges(iedge,:),nodes,area_Ecell(iedge),area_elem, Bm_mat,Bb1_mat,Bb2_mat,Bs1_mat,Bs2_mat); k= ( + + + + BmL'*AA*BmL + Bb1L'*BB*BmL + Bb2L'*EE*BmL BmL'*BB*Bb1L + Bb1L'*DD*Bb1L + Bb2L'*FF*Bb1L BmL'*EE*Bb2L + Bb1L'*FF*Bb2L + Bb2L'*HH*Bb2L Bs1L'*As*Bs1L + Bs1L'*Bs*Bs2L Bs2L'*Bs*Bs1L + Bs2L'*Ds*Bs2L)*area_Ecell(iedge); index= feeldof(nodL,length(nodL),ndof); element kk= feasmbl1(kk,k,index); % extract system dofs associated with % assemble element matrices end % % apply boundary conditions % [kk,ff]=feaplyc2(kk,ff,bcdof,bcval); % -% solve the matrix equation % -displ=kk\ff; num=1:1:sdof; displace=[num' displ]; % print nodal displacements disp('Maximum displacement') cen_node= (nnode+1)/2; % central node of the squared plate w_mx= displ((cen_node-1)*ndof+3) % maximum displacement at the centre str= sprintf('Normalized displ at centre (wc/t): %.4f\n',w_mx/t); disp(str) 59 ... VĂN Phân Tích Kết Cấu Tấm Vật Liệu Phân Lớp Chức Năng (FGMs) Theo Lý Thuyết Biến Dạng Cắt Bậc Cao Dùng Phần Tử MITC3 Được Làm Trơn Trên Cạnh (ES -MITC3) Nguyễn Văn Hinh Luận văn trình bày phân tích. .. Tài Phân tích kết cấu vật liệu phân lớp chức (FGMs) sử dụng lý thuyết biến dạng cắt bậc cao phần tử ES -MITC3 Việc phân tích kết cấu vật liệu phân lớp chức dừng lại phân tích kết cấu làm việc giai... LÝ THUYẾT BIẾN DẠNG CẮT BẬC CAO CHO TẤM VẬT LIỆU PHÂN LỚP CHỨC NĂNG (FGMs) 2.1 Tấm Vật Liệu Phân Lớp Chức Năng FGMs 2.2 Lý Thuyết Biến Dạng Cắt Bậc Cao 2.3

Ngày đăng: 26/11/2021, 10:47

Tài liệu cùng người dùng

Tài liệu liên quan