Vous êtes sur la page 1sur 18

Composite Laminate Analyzer

Developed by Prad Pathirana Department of Mechanical Engineering University of California Santa Barbara 2011

Composite Laminate Analyzer Users Manual

Table of Contents
Introduction to Composite Analyzer ...................................................................................................... 3 1.1 Program Description .......................................................................................................................... 3 1.2 System requirements ......................................................................................................................... 3 1.3 Program Functionality ........................................................................................................................ 3 Sign Conventions, Terminology, and Theory .......................................................................................... 4 2.1 Variables............................................................................................................................................. 4 2.2 Lamina Coordinate System ................................................................................................................ 4 2.3 Transformation and 2D strain ............................................................................................................ 4 GUI Introduction...................................................................................................................................... 5 3.1 Inputs ................................................................................................................................................. 5 3.2 Outputs .............................................................................................................................................. 6 Code Reliability ........................................................................................................................................ 7 4.1 Compare with examples in Daniel and Ishai ...................................................................................... 7 4.2 Compare with FRC calculator by efunda.com .................................................................................... 8 4.3 Different scenarios Using Composite Analyzer .................................................................................. 9 References ............................................................................................................................................. 11 Appendix ................................................................................................................................................ 11 Matlab code ........................................................................................................................................... 12

Composite Laminate Analyzer Users Manual

Introduction to Composite Analyzer 1.1 Program Description The program uses the user input elastic properties (E1, E2, G12, NU12) of a single ply of material in its principal directions (1, 2, and 3) as well as the ply geometry and stacking sequence to constructs the [A], [B] and [D] matrices of a laminated fiber-reinforced composite. Using these matrices it finds the overall laminate elastic properties (Ex, Ey, Gxy, NUxy, etc). A Basic understanding of composite laminates and its fundamentals are expected in understanding the concepts and results presented in this manual. If youre unfamiliar with such concepts please refer to reference 1 (Daniel and Ishai, 1994). 1.2 System requirements The program requires a computer that has Matlab runtime environment. The M-file LaminateAnalyzer.m can be opened using Matlab and executed using the run command which will bring up the Graphical User Interface. The relevant Matlab code is also presented in the appendix and is shared with the engineering community as freeware, with the clause that appropriate credit is given to the developer in usage. 1.3 Program Functionality The program functionality is given in table 1. Currently the program is not capable of analyzing asymmetric varying thicknesses laminates about the mid-plane. While the laminates with asymmetric stacking sequences with uneven number of plies can be analyzed with the program, the relevant inputs for such a case need to be submitted with special care. This scenario will be addressed in section 4.3.

Symmetric Laminate Orientations Thickness Equal Thickness Varying Thickness


Symmetric Asymmetric

Asymmetric Laminate Orientations


Even # of Plies Uneven # of Plies

P P F

P P F

S S F

Table 1 : Program Capabilities (P-Pass, S-Special Case, F-Fail)

Composite Laminate Analyzer Users Manual

Sign Conventions, Terminology, and Theory 2.1 Variables Ex , Ey ,E1 , E2 - Youngs Modulus in the x- , y-, 1- , and 2- directions respectively NUxy , NU12 Poissons ratios for x-y and 1-2 directions Gxy Shear modulus referred to the x- and y- axes ETAsx , ETAsy Shear coupling coefficients In the Graphical user interface, subscripts are shown as non-capital letters 2.2 Lamina Coordinate System The principal directions of a unidirectionally reinforced lamina can be seen in figure 1. Where the longitudinal direction along the fiber is 1 and the transverse direction perpendicular to the fiber on the plane of the ply is 2. The out of plane direction is designated 3.

Figure 1 Principal Coordinate system of a unidirectional reinforced lamina (ply)

2.3 Transformation and 2D stresses Lamina principal axes dont always coincide with the loading or reference axes(x, y). Figure 2 shows how the x and y directions and 1 and 2 directions are related through the angle

Figure 2 : Stress Components in unidirectional lamina referred to loading and material axes.

Composite Laminate Analyzer Users Manual

Graphical User Interface (GUI) functionality 3.1 Inputs There are 3 different inputs that are required so that laminate is fully defined. (See figure 3)

Figure 3 : GUI Input section with an equal thickness (0/45/-45/90)s laminate specified

1. Units: You can select which units you want to run the program in, whether it maybe GPa or Psi for stress, and mm or inches for length. 2. Ply Elastic Properties : E-1, E-2, G-12, and NU-12 (in the relevant units) 3. Laminate Characteristics : a. Orientations: enter the angles of orientations of each independent ply starting from the bottom ply upwards; make sure to separate each angle by a space or a comma. (see section 4.3 for examples for usage in different ply stacking sequences) b. Symmetry: leave this as zero if the laminate is asymmetric or enter the value of symmetry. Ex: (0/90) sym=0 , (0/90)s sym=1, (0/45)4s sym=4 c. Aspect ratio: give the aspect ratio of each independent ply. If you want them to be equal in thickness type in the same number. d. Total Height: Enter the total height of the laminate (not the ply). Further Examples: (0/45/-45) equal thickness, with total height of 2mm. a. 0, 45, -45 b. 0 c. 1, 1, 1 or 2, 2, 2 or 3, 3, 3 (these are all equivalent) d. 2 (0/45/90)s equal thickness, with total height of 3mm. a. 0, 45, 90 b. 1 c. 1, 1, 1 d. 3 (0/-45/90)3s equal thickness, with the 0 ply being twice as thick as the -45 and 90 plies. Total thickness is 10mm. a. 0, -45, 90 b. 3 c. 2, 1,1 d. 10 5

Composite Laminate Analyzer Users Manual

3.2 Outputs There are 3 different outputs that portray the overall characteristics of the laminate being analyzed (see figure 4).

Figure 4 : GUI Output section with results for an equal thickness (0/45/-45/90)s laminate.

1. Complete Laminate Ply Orientations/Thickness Matrix: This table will let you check if the orientations of the plies and the corresponding thickness are correct. This table will generate the entire set of ply angles required to generate the laminate, where the first entry is the bottom most ply. If you designated it as a symmetric laminate, the ply orientation symmetry will be represented in this table. 2. The matrix: This is a 9x9 matrix that portray the A, B and D matrices(each a 3x3) for the

laminate in question (See figure 5).

Figure 5 : ABD Matrix in the GUI Output

Where [ A ] : Extensional stiffness matrix (GPa.mm) or (psi.inches) [ B ] : Coupling stiffness matrix (GPa.mm2) or (psi.inches2) [ D ] : Bending or flexural laminate stiffness matrix (GPa.mm3) or (psi.inches2) Note : the units are entirely dependent on which units were picked in the input section. Its possible to get units of GPa.inches or psi.mm2 and so forth. 3. Overall laminate elastic properties : This will give the final result of the program which is the overall laminate properties. 6

Composite Laminate Analyzer Users Manual

Code Reliability The code reliability is very important and thus the code was extensively tested against literature and other available software that are built to perform a similar task.
Note: examples are of an AS4/3501-6 Carbon/Epoxy Laminate, with (E1 = 147GPa, E2 = 10.3GPa, G12 = 7.0GPa, and NU12 = 027).

4.1 Compare with examples in Daniel and Ishai (reference 1) In the book Engineering Mechanics of Composite Materials Daniel and Ishai gave overall laminate properties for [45] play and a [45]s made of Carbon/Epoxy (AS4/3501-6) (see table 2).

Table 2 : Comparison of engineering constants of [45] unidirectional and [45]s Angle-Ply Carbon/Epoxy Laminate

By comparing the boxed values from table 2, with the values in figure 6 (for 45o ply) and with figure 7 for [45] laminate. You can see the numbers are identical accounting for rounding effects.

Figure 6 : GUI Output for a 45 Ply of Carbon/Epoxy Laminate

Figure 7 : GUI Output for a [45]s Carbon/Epoxy Laminate

Composite Laminate Analyzer Users Manual

4.2 Compare with FRC calculator by efunda.com Efunda is a popular website with many engineers for its useful apps that let you calculate a myriad of engineering related properties. Its Fiber Reinforced Composites (FRC) calculator has a function which allows you to find the A, B, D matrix for any laminate. I have attached a few scenarios analyzed using both the Efunda FRC calculator and the Composite Analyzer. [0/60/-30/30/-60/0] Case: Efunda FRC Calculator Results

Composite Laminate Analyzer Users Manual

[0/60/-30/30/-60/0] Case: Composite Analyzer Results

Figure 8 : Composite Analyzer results.

Theres a negative difference between the B matrices, but this is due to the fact that Efunda FRC calculator counts plies from top down, while the Composite Analyzer counts plies from the bottom ply up. If youre unsure as to how to read the above results in figure 8, see figure 5 which shows which sections of the above matrix is matrix A, B and D. 4.3 Looking at different scenarios using Composite Laminate Analyzer Case 1 : AS4/3501-6 Carbon/Epoxy Laminate [0/45/60/30] with 45, 60 plies twice as thick as the 0 and 30 plies

Figure 9 : AS4/3501-6 Carbon/Epoxy Laminate [0/45/60/30] varying thickness.

Composite Laminate Analyzer Users Manual

Case 2 : AS4/3501-6 Carbon/Epoxy Laminate [0/45/90]3s with equal thickness.

Figure 10: AS4/3501-6 Carbon/Epoxy Laminate [0/45/90]3s equal ply thickness

Case 3 : AS4/3501-6 Carbon/Epoxy Laminate [0/45/-30] with equal thickness.. Even though it has an uneven number of plies it can be analyzed using this model since we can treat the middle 45 ply as two plies of equal length. This is the only way to accurately model uneven number of plies using this model.

Figure 11 : AS4/3501-6 Carbon/Epoxy Laminate [0/45/-30] equal ply thickness, uneven number of plies

10

Composite Laminate Analyzer Users Manual

References 1. Daniel, Isaac M., and Ori Ishai. Engineering Mechanics of Composite Materials. New York: Oxford UP, 1994. Print. 2. "Calculator for Stiffness and Compliance of Laminate: Layout." EFunda: The Ultimate Online Reference for Engineers. Web. 28 Apr. 2011. <http://www.efunda.com/formulae/solid_mechanics/composites/calc_ufrp_abd_go.cfm>. 3. Matlab 7.8.0 (R2009a) Reference Manual

11

Composite Laminate Analyzer Users Manual

Appendix Matlab code


% COMPOSITE LAMINATE PROPERTY FINDER % This code was developed by Prad Pathirana 2011 % University of California Santa Barbara % Description : Given individual lamina/ply properties along with ply % orientations/stacking sequence and height this program finds the overall % laminate properties. % =====START OF SCRIPT===== function varargout = LaminateAnalyzer(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @LaminateAnalyzer_OpeningFcn, ... 'gui_OutputFcn', @LaminateAnalyzer_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before LaminateAnalyzer is made visible. function LaminateAnalyzer_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % Choose default command line output for LaminateAnalyzer handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes LaminateAnalyzer wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = LaminateAnalyzer_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure varargout{1} = handles.output;

% =====START OF INPUT ARGUMENTS===== % --- Input Ply orientations for each ply

12

Composite Laminate Analyzer Users Manual function inputPlyOri_Callback(hObject, eventdata, handles) guidata(hObject, handles); function inputPlyOri_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input Ply Aspect ratios for each ply function inputPlyAR_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputPlyAR_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input Total height of laminate. function inputTotHeight_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputTotHeight_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input Ply symmetry (must be an integer value) function inputSym_Callback(hObject, eventdata, handles) % Hints: contents = get(hObject,'String') returns inputSym contents as cell array % contents{get(hObject,'Value')} returns selected item from inputSym % --- Executes during object creation, after setting all properties. function inputSym_CreateFcn(hObject, eventdata, handles) % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Input E1 function inputE1_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputE1_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

13

Composite Laminate Analyzer Users Manual % --- Input E2 function inputE2_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputE2_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input G12 function inputG12_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputG12_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input NU12 function inputNU12_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function inputNU12_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Input Stress units % --- Executes on selection change in popupmenuLength. function popupmenuStress_Callback(hObject, eventdata, handles) switch get(handles.popupmenuStress,'Value') case 1 set(handles.outputUnits1,'String','GPa'); case 2 set(handles.outputUnits1,'String','psi'); end % --- Executes during object creation, after setting all properties. function popupmenuStress_CreateFcn(hObject, eventdata, handles) % --- Input length units % --- Executes on selection change in popupmenuLength. function popupmenuLength_Callback(hObject, eventdata, handles) switch get(handles.popupmenuLength,'Value') case 1 set(handles.outputUnits2,'String','mm'); case 2 set(handles.outputUnits2,'String','inches'); end % --- Executes during object creation, after setting all properties. function popupmenuLength_CreateFcn(hObject, eventdata, handles) % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER.

14

Composite Laminate Analyzer Users Manual if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % =====END OF INPUT ARGUMENTS=====

% =====START OF INPUT DATA CHECK===== % --- Executes on button press in "Submit for Analysis". function commandSubmit_Callback(hObject, eventdata, handles) set(handles.tableABD,'Data',eye(6)) % ---Define Inputs % Ply Properties E1 = str2num(get(handles.inputE1,'String')); E2 = str2num(get(handles.inputE2,'String')); G12 = str2num(get(handles.inputG12,'String')); NU12 = str2num(get(handles.inputNU12,'String')); % Symmetry sym = str2num(get(handles.inputSym,'String')); % Total Height htotal= str2num(get(handles.inputTotHeight,'String')); % Independent ply orientations O = str2num(get(handles.inputPlyOri,'String')); % Independent ply Aspect ratios AR = str2num(get(handles.inputPlyAR,'String')); % --- Error statements if (isempty(E1)) errordlg('Please enter a numerical value for E1.','Missing Parameter') end if (isempty(E2)) errordlg('Please enter a numerical value for E2.','Missing Parameter') end if (isempty(G12)) errordlg('Please enter a numerical value for G12.','Missing Parameter') end if (isempty(NU12)) errordlg('Please enter a numerical value for NU12.','Missing Parameter') end if (isempty(AR)) errordlg('Please enter values separated by spaces or comas for the Independent Ply Aspect Ratios.','Missing Parameter') end if (isempty(O)) errordlg('Please enter values separated by spaces or comas for the Independent Ply Orientations.','Missing Parameter') end if (isempty(htotal)) errordlg('Please enter a numerical value for Total Height.','Missing Parameter') end % Counting number of rows and columns in AR and O inputs for comparison [ARrows,ARcols] = size(AR(1,:)); [orows,ocols] = size(O(1,:));

15

Composite Laminate Analyzer Users Manual % AR and O number count needs to be the same if ocols~=ARcols errordlg('Number of entries in the ply orientations field should equal the number of entries in aspect ratios field.','Check Independent Ply Orientation/Aspect Ratio fields') end % =====END OF INPUT DATA CHECK===== % =====START OF PREPROCESSING STATE===== % --- Developing the complete laminate geometry % Getting NU21 NU21 = (NU12*E2)/E1 ; % Considering symmetry input counting the total number plies in laminate if sym==0 plycount = ocols; else plycount= ocols*2*(sym); end % Considering symmetry input developing the the bottom half of the laminate % orientations(O) and aspect ratios(AR) if sym >= 2 Oini = O; ARini = AR; for i= 2:sym O = [O Oini]; AR = [AR ARini]; end end % Applying symmetry(if needed) and developing the complete O and AR array if sym>0 k=0; for i = (plycount/2)+1 : plycount AR(1,i) = AR(1, i-(1+2*k)); O(1,i) = O(1, i-(1+2*k)); k=k+1; end end % Finding the Height(H) of each ply using the AR and total height (htotal) sumAR = sum(AR); H = htotal*(AR/sumAR); % Developing the Z matrix Z=zeros(1,plycount+1); hindex = -(htotal)/2 ; for i=1:plycount+1 if i==1 Z(:,i) = hindex; else Z(:,i) = Z(:,i-1)+ H(i-1); end % Rounding small values of Z to zero if abs(Z(:,i)) <1.0e-4 Z(:,i)=0; end end

16

Composite Laminate Analyzer Users Manual % =====END OF PREPROCESSING STATE===== % =====START OF CALCULATIONS===== % Finding the components of Q matrix in the principal directions % reference: Engineering mechanics of composites, second edition % Daniel and Ishai P77, eq. 4.56 Q11 = E1/(1- NU12*NU21) ; Q22 = E2/(1- NU12*NU21) ; Q12 = (NU21*E1)/(1- NU12*NU21) ; Q66 = G12; % note that Q21 = Q12 Qp = [ Q11, Q12 , 0 ; Q12, Q22 , 0 ; 0 , 0 , Q66 ];

% A B D

Intializing ABD as a 3x3 zero matrix = zeros(3,3) ; = zeros(3,3) ; = zeros(3,3) ;

% Calculating the A, B, D Matrices for each ply Qp(3,3) = Qp(3,3)*2 ; for l = 1 : plycount thetar = (O(l)/180)*pi; % define "m" and "n" as m = cos(thetar); n = sin(thetar); % 2D Transformation matrix T(Daniel and Ishai P76) : T = [m^2 , n^2 , 2*m*n ; n^2 , m^2 , -2*m*n ; -m*n , m*n , m^2 - n^2 ]; % Correcting for engineering strain-true strain(Daniel and Ishai P79) Q = T\Qp*T ; Q(:,3) = Q(:,3)*.5 ; for i=1:3 for j=1:3 A(i,j)= A(i,j) + (Q(i,j))*( Z(l+1) - Z(l) ); B(i,j)= B(i,j) + 0.5* ((Q(i,j))*( (Z(l+1))^2 - (Z(l))^2 )); D(i,j)= D(i,j) + (1/3)*((Q(i,j))*( (Z(l+1))^3 - (Z(l))^3 )); end end end % Filter to round close for i=1:3 for j=1:3 if abs(A(i,j))< A(i,j) = 0; end if abs(B(i,j))< B(i,j) = 0; end if abs(D(i,j))< D(i,j) = 0; end end to zero numbers to zero 1.0e-4 1.0e-4 1.0e-4

17

Composite Laminate Analyzer Users Manual end %Finding AB-BD matrix and its inverse ABDmatrix = [A B ; B D]; abcdmatrix = inv(ABDmatrix); a = abcdmatrix(1:3, 1:3); % Define matrix with ply orientations as row one and corresponding height % as row two for display purposes OHmatrix = [O;H]; % Find Overall laminate elastic properties Ex = 1/((htotal)*a(1,1)); Ey = 1/((htotal)*a(2,2)); Gxy = 1/((htotal)*a(3,3)); NUxy = -a(2,1)/a(1,1); NUyx = -a(1,2)/a(2,2); ETAsx = a(1,3)/a(3,3); ETAxs = a(3,1)/a(1,1); ETAys = a(3,2)/a(2,2); ETAsy = a(2,3)/a(3,3); % =====END OF CALCULATIONS===== % =====START OUTPUT RESULTS TO GUI===== % Display the OHmatrix in GUI table set(handles.tableOH,'Data',OHmatrix) % Display the [A B ; B D] matrix in GUI table set(handles.tableABD,'Data',ABDmatrix) % Display the overall Laminate properties in Gui set(handles.outputEx,'String',Ex); set(handles.outputEy,'String',Ey); set(handles.outputGxy,'String',Gxy); set(handles.outputNUxy,'String',NUxy); set(handles.outputNUyx,'String',NUyx); set(handles.outputETAxs,'String',ETAxs); set(handles.outputETAsx,'String',ETAsx); set(handles.outputETAys,'String',ETAys); set(handles.outputETAsy,'String',ETAsy); % =====END OUTPUT RESULTS TO GUI===== guidata(hObject, handles); % =====END OF SCRIPT=====

18

Vous aimerez peut-être aussi