Download - !Composite Analyzer Users Manual
Composite Laminate Analyzer
Developed by Prad Pathirana
Department of Mechanical Engineering
University of California Santa Barbara
2011
Composite Laminate Analyzer Users Manual
2
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
3
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 you’re
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
Asymmetric Laminate Orientations
Even # of Plies Uneven # of Plies
Thic
kne
ss Equal Thickness P P S
Varying Thickness
Symmetric P P S
Asymmetric F F F
Table 1 : Program Capabilities (P-Pass, S-Special Case, F-Fail)
Composite Laminate Analyzer Users Manual
4
Sign Conventions, Terminology, and Theory
2.1 Variables
Ex , Ey ,E1 , E2 - Young’s Modulus in the x- , y-, 1- , and 2- directions respectively
NUxy , NU12 – Poisson’s 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 don’t 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
5
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
Composite Laminate Analyzer Users Manual
6
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).
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. It’s
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.
Figure 5 : ABD Matrix in the GUI Output
Composite Laminate Analyzer Users Manual
7
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
Figure 6 : GUI Output for a 45 Ply of Carbon/Epoxy Laminate
Figure 7 : GUI Output for a [45]s 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.
Composite Laminate Analyzer Users Manual
8
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
9
[0°/60°/-30°/30°/-60°/0°] Case: Composite Analyzer Results
Figure 8 : Composite Analyzer results.
There’s 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 you’re 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
10
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
Composite Laminate Analyzer Users Manual
11
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
Composite Laminate Analyzer Users Manual
12
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
Composite Laminate Analyzer Users Manual
13
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
Composite Laminate Analyzer Users Manual
14
% --- 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.
Composite Laminate Analyzer Users Manual
15
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,:));
Composite Laminate Analyzer Users Manual
16
% 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
Composite Laminate Analyzer Users Manual
17
% =====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 ];
% Intializing ABD as a 3x3 zero matrix A = zeros(3,3) ; B = zeros(3,3) ; D = 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 to zero numbers to zero for i=1:3 for j=1:3 if abs(A(i,j))< 1.0e-4 A(i,j) = 0; end if abs(B(i,j))< 1.0e-4 B(i,j) = 0; end if abs(D(i,j))< 1.0e-4 D(i,j) = 0; end end
Composite Laminate Analyzer Users Manual
18
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=====