复合材料力学上机编程作业(计算层合板刚度)要点
- 格式:doc
- 大小:921.00 KB
- 文档页数:15
复合材料层合板MA 02139,剑桥麻省理工学院材料科学与工程系David Roylance2000年2月10日引言本模块旨在概略介绍纤维增强复合材料层合板的力学知识;并推导一种计算方法,以建立层合板的平面内应变和曲率与横截面上内力和内力偶之间的关系。
虽然这只是纤维增强复合材料整个领域、甚至层合板理论的很小一部分,但却是所有的复合材料工程师都应掌握的重要技术。
在下文中,我们将回顾各向同性材料矩阵形式的本构关系,然后直截了当地推广到横观各向同性复合材料层合板。
因为层合板中每一层的取向是任意的,我们随后将说明,如何将每个单层的弹性性能都变换到一个共用的方向上。
最后,令单层的应力与其横截面上的内力和内力偶相对应,从而导出控制整块层合板内力和变形关系的矩阵。
层合板的力学计算最好由计算机来完成。
本文简略介绍了几种算法,这些算法分别适用于弹性层合板、呈现热膨胀效应的层合板和呈现粘弹性响应的层合板。
各向同性线弹性材料如初等材料力学教材(参见罗兰奈斯(Roylance )所著、1996年出版的教材1)中所述,在直角坐标系中,由平面应力状态(0===yz xz z ττσ)导致的应变为由于泊松效应,在平面应力状态中还有沿轴方向的应变:z )(y x z σσνε+−=,此应变分量在下文中将忽略不计。
在上述关系式中,有三个弹性常量:杨氏模量E 、泊松比ν和切变模量。
但对各向同性材料,只有两个独立的弹性常量,例如,G 可从G E 和ν得到上述应力应变关系可用矩阵记号写成 1 参见本模块末尾所列的参考资料。
方括号内的量称为材料的柔度矩阵,记作S 或。
弄清楚矩阵中各项的物理意义十分重要。
从矩阵乘法的规则可知,中第i 行第列的元素表示第个应力对第i 个应变的影响。
例如,在位置1,2上的元素表示方向的应力对j i S j i S j j y x 方向应变的影响:将E 1乘以y σ即得由y σ引起的方向的应变,再将此值乘以y ν−,得到y σ在x 方向引起的泊松应变。
复合材料层合板MA 02139,剑桥麻省理工学院材料科学与工程系David Roylance2000年2月10日引言本模块旨在概略介绍纤维增强复合材料层合板的力学知识;并推导一种计算方法,以建立层合板的平面内应变和曲率与横截面上内力和内力偶之间的关系。
虽然这只是纤维增强复合材料整个领域、甚至层合板理论的很小一部分,但却是所有的复合材料工程师都应掌握的重要技术。
在下文中,我们将回顾各向同性材料矩阵形式的本构关系,然后直截了当地推广到横观各向同性复合材料层合板。
因为层合板中每一层的取向是任意的,我们随后将说明,如何将每个单层的弹性性能都变换到一个共用的方向上。
最后,令单层的应力与其横截面上的内力和内力偶相对应,从而导出控制整块层合板内力和变形关系的矩阵。
层合板的力学计算最好由计算机来完成。
本文简略介绍了几种算法,这些算法分别适用于弹性层合板、呈现热膨胀效应的层合板和呈现粘弹性响应的层合板。
各向同性线弹性材料如初等材料力学教材(参见罗兰奈斯(Roylance )所著、1996年出版的教材1)中所述,在直角坐标系中,由平面应力状态(0===yz xz z ττσ)导致的应变为由于泊松效应,在平面应力状态中还有沿轴方向的应变:z )(y x z σσνε+−=,此应变分量在下文中将忽略不计。
在上述关系式中,有三个弹性常量:杨氏模量E 、泊松比ν和切变模量。
但对各向同性材料,只有两个独立的弹性常量,例如,G 可从G E 和ν得到上述应力应变关系可用矩阵记号写成 1 参见本模块末尾所列的参考资料。
方括号内的量称为材料的柔度矩阵,记作S 或。
弄清楚矩阵中各项的物理意义十分重要。
从矩阵乘法的规则可知,中第i 行第列的元素表示第个应力对第i 个应变的影响。
例如,在位置1,2上的元素表示方向的应力对j i S j i S j j y x 方向应变的影响:将E 1乘以y σ即得由y σ引起的方向的应变,再将此值乘以y ν−,得到y σ在x 方向引起的泊松应变。
复合材料力学上机编程作业学院:School of Civil Engineering专业:Engineering Mechanics小组成员信息:James Wilson(2012031890015)、Tau Young(2012031890011)复合材料力学学了五个星期,这是这门课的第一次编程作业。
我和杨涛结成一个小组,我用的是Fortran编制的程序,Tau Young用的是matlab编制。
其中的算例以我的Fortran计算结果为准。
Matlab作为可视化界面有其独到之处,在附录2中将会有所展示。
作业的内容是层合板的刚度的计算和验算,包括拉伸刚度A、弯曲刚度D以及耦合刚度B。
首先要给定层合板的各个参数,具体有:层合板的层数N;各单层的弹性常数E1、E2、υ21、G12;各单层对应的厚度;各单层对应的主方向夹角θ。
然后就要计算每个单层板的二维刚度矩阵Q,具体公式如下:υ12=υ21E2E1;Q11=E11-υ12υ21;Q22=E21-υ12υ21;Q12=υ12E1; 1-υ12υ21Q66=G12得到Q矩阵后,根据课本上讲到的Q=(T-1)TQ(T-1)得到Q。
然后根据z坐标的定义求出z0到zn,接下来,最重要的一步,根据下式计算A、B、D。
n⎧⎪Aij=∑(Qij)k(zk-zk-1)k=1⎪⎪1n22⎨Bij=∑(Qij)k(zk-zk-1) 2k=1⎪⎪1n33⎪Dij=∑(Qij)k(zk-zk-1)3k=1⎩一、书上P110的几个问题可以归纳为以下几个类型。
第 1 页共 1 页(4)6层反对称角铺设层合板(T5-10)第 2 页共 2 页(5)我还想验证一个书上的例题,在课本P114。
三层层合板,外层厚度t1,内层10t1,正交铺设比m=0.2,。
二、验证Verchery的论文里给出的数值算例。
这里一直到Table5的数据都是从Verchery的论文中截获。
Verchery论文中的18层序列,第(21)式【laminates without bending-extension coupling】的排列有两种材料,一种是Boron-Epoxy,一种是Glass-Epoxy。
而且都给出了最终的计算结果Q,A*,D*。
下面是我的Fortran计算数据文档和结果文档。
(1)Boron-Epoxy材料。
第 3 页共 3 页(2)Glass-Epoxy材料。
第 4 页共 4 页(3)当然我也验证了第(22)【laminates with equal elastic properties in bending and extension】、(23)【quasi-homogeneous laminates】的排序,材料是Boron-Epoxy,下面给出计算的结果。
从下面的两个结果表中可以知道,(22)排序的确是C=0,(23)的排序的确是B=0且C=0。
验证成功。
第 5 页共 5 页附件1:计算所用的程序代码。
PROGRAM COMPOSITE !Coded by James Wilson IMPLICIT NONEREAL(8)::A(3,3),B(3,3),D(3,3),MC(5),TEMP,ROT(3,3) !A拉伸刚度;B耦合刚度;D弯曲刚度; !MC读入材料常数;ROT旋转矩阵REAL(8)::TOTAL_TH,HALF_TH !总厚度;半厚度REAL(8),ALLOCATABLE::Q(:,:,:),AL(:),T(:),Z(:),Z1(:),Z2(:),Z3(:) !Q每层板相应刚度;AL转角;T每层板的厚度;Z坐标量 INTEGER(4)::N,I,J,K,SEQ,L!____IJK循环变量;N板的层数;SEQ序数CHARACTER(50)::CHR(8),TEMPC,filename1,filename2 !CHR、TEMPC:character variablesWRITE(*,*)"Please insert the INP file name(a.txt for example):" READ(*,*)filename1 OPEN(8,file=filename1)!Open data file !Read in dataREAD(8,*)TEMPC,NALLOCATE(Q(3,3,N),AL(N),T(N),Z(N+1),Z1(N),Z2(N),Z3(N)) READ(8,*)CHR(1:8) DO I=1,NREAD(8,*)SEQ,T(I),MC(1:5),AL(I)Q(:,:,I)=0!Calculate stiffness of each layer for the principal axis TEMP=1./(1-MC(3)*MC(4)) Q(1,1,I)=MC(1)*TEMP Q(2,2,I)=MC(2)*TEMP Q(3,3,I)=MC(5)Q(1,2,I)=MC(4)*MC(2)*TEMP Q(2,1,I)=Q(1,2,I)AL(I)=AL(I)*3.1415926535898/180ROT(1,1)=(cos(AL(I)))**2!Work out Rot Matrix ROT(2,2)=ROT(1,1)ROT(3,3)=cos(2*AL(I)) ROT(2,1)=1-ROT(1,1) ROT(1,2)=ROT(2,1)ROT(3,1)=0.5*sin(2*AL(I)) ROT(3,2)=-ROT(3,1) ROT(1,3)=-2*ROT(3,1)ROT(2,3)=-2*ROT(3,2)Q(:,:,I)=MATMUL(MATMUL(ROT,Q(:,:,I)),TRANSPOSE(ROT)) ENDDOTOTAL_TH=sum(T) HALF_TH=TOTAL_TH/2 Z(1)=-HALF_TH !Work out Z DOI=1,NZ(I+1)=Z(I)+T(I) ENDDO!calculate tensor A、B and D DO K=1,NZ1(K)=(Z(K+1)-Z(K))Z2(K)=(Z(K+1)-Z(K))*(Z(K+1)+Z(K))/2 Z3(K)=(Z(K+1)**3-Z(K)**3)/3 ENDDOA=0;B=0;D=0WRITE(*,*)"Please insert the OUP file name(b.txt for example):"READ(*,*)filename2 OPEN(9,file=filename2)!Write in stiffness tensor for each single ply DO K=1,NWRITE(9,100)K100 FORMAT("The stiffness of number",1X,I2,2X,"ply is:") DO I=1,3WRITE(9,200)Q(I,:,K)200 FORMAT(ES12.4,6X,ES12.4,6X,ES12.4) ENDDOWRITE(9,"(/)") A=A+Q(:,:,K)*Z1(K) B=B+Q(:,:,K)*Z2(K) D=D+Q(:,:,K)*Z3(K) ENDDO!Output the actual stiffness of the laminate WRITE(9,"(/)");WRITE(9,"(/)")WRITE(9,*)"The ACTUAL stiffness tensor of the laminate:" WRITE(9,"(/)") WRITE(9,*)"The extension stiffness A equals:" DO I=1,3WRITE(9,200)A(I,1:3) ENDDOWRITE(9,"(/)")WRITE(9,*)"The coupling stiffness B equals:" DO I=1,3WRITE(9,200)B(I,1:3) ENDDOWRITE(9,"(/)")WRITE(9,*)"The bending stiffness D equals:" DO I=1,3WRITE(9,200)D(I,1:3) ENDDO!Normalised tensor output WRITE(9,"(/)");WRITE(9,"(/)")WRITE(9,*)"The NORMALISED stiffness tensor of the laminate:" WRITE(9,"(/)") WRITE(9,*)"The NORMALISED extension stiffness A* equals:" DO I=1,3WRITE(9,200)A(I,1:3)/TOTAL_TH ENDDOWRITE(9,"(/)")WRITE(9,*)"The NORMALISED coupling tensor C equals:" DO I=1,3WRITE(9,200)A(I,1:3)/TOTAL_TH-12*D(I,1:3)/TOTAL_TH**3 ENDDOWRITE(9,"(/)")WRITE(9,*)"The NORMALISED bending stiffness D* equals:" DO I=1,3WRITE(9,200)12*D(I,1:3)/TOTAL_TH**3 ENDDOWRITE(*,*)"OUTPUT successfully,please press any key to end program!" READ(*,*) END PROGRAM COMPOSITE附2杨涛同学的MATLAB(GUI)计算程序。
主要程序:(编了个小界面,程序略长,删掉一些程序自带解释语句,添加了一些对关键语句的解释。
)界面是:第 6 页共 6 页作的一个算例如下:该算例结果与组内同伴James Wilson同学基本一致,其余算例结果也基本一致,仅仅在趋近于零时有略微差异,在此不赘于。
后边附上源代码:function varargout = composit_plate(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @composit_plate_OpeningFcn, ...'gui_OutputFcn', @composit_plate_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction composit_plate_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;guidata(hObject, handles);ha=axes('units','normalized','position',[0 0 1 1]);%嵌入坐标,为嵌入背景图片准备uistack(ha,'down')%作为背景II=imread('武汉大学.jpg');%读入图片信息image(II)第 7 页共 7 页colormap hsvset(ha,'handlevisibility','off','visible','off')function varargout = composit_plate_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit3_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit4_Callback(hObject, eventdata, ~)function edit4_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pushbutton1_Callback(hObject, eventdata, handles) syms e1e2v21g12ang%本程序采用符号运算v12=v21*e2/e1;q=[e1/(1-v12*v21),v21*e2/(1- v12*v21),0v21*e2/(1-v12*v21),e2/(1-v12*v21),00,0,g12];tran=[ cos(ang)^2, sin(ang)^2, -sin(2*ang)sin(ang)^2, cos(ang)^2, sin(2*ang)sin(2*ang)/2, -sin(2*ang)/2, cos(2*ang)];q1=tran*q*tran';%得到Qn=str2num(get(handles.edit2,'string'));%读入层数n=floor(n);nn=0;A=0;B=0;D=0;t=str2num(get(handles.edit3,'string'));%读入每层厚度t1=zeros(1,n+1);t1(1)=0;for nn=1:nt1(nn+1)=t1(nn)+t(nn);endang1=str2num(get(handles.edit4,'string'));%读入每层角度const=str2num(get(handles.edit1,'string'));%读入材料系数t0=sum(t)/2;t1=t1-t0;e1=const(1);e2=const(2);v21=const(3);g12=const(4);q11=subs(q1);for nn=1:nang=ang1(nn);nn=nn+1;A=A+subs(q11*(t1(nn)-t1(nn-1)));B=B+subs(0.5*q11*(t1(nn)^2-t1(nn-1)^2));D=D+subs(1/3*q11*(t1(nn)^3-t1(nn-1)^3));end%累加计算set(handles.edit5,'string',num2str(A(1,:)));%以下为输出结果set(handles.edit6,'string',num2str(A(2,:)));set(handles.edit7,'string',num2str(A(3,:)));set(handles.edit8,'string',num2str(B(1,:)));set(handles.edit9,'string',num2str(B(2,:)));set(handles.edit10,'string',num2str(B(3,:)));set(handles.edit11,'string',num2str(D(1,:)));set(handles.edit12,'string',num2str(D(2,:)));第 8 页共 8 页set(handles.edit13,'string',num2str(D(3,:)));function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit6_Callback(hObject, eventdata, handles) function edit6_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit7_Callback(hObject, eventdata, handles) function edit7_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit8_Callback(hObject, eventdata, handles) function edit8_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit9_Callback(hObject, eventdata, handles) function edit9_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit10_Callback(hObject, eventdata, handles) functionedit10_CreateFcn(hObject, eventdata, handles) if ispc &&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit11_Callback(hObject, eventdata, handles) functionedit11_CreateFcn(hObject, eventdata, handles) if ispc &&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit12_Callback(hObject, eventdata, handles) functionedit12_CreateFcn(hObject, eventdata, handles) if ispc &&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit13_Callback(hObject, eventdata, handles) functionedit13_CreateFcn(hObject, eventdata, handles) if ispc &&isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end第 9 页共 9 页。