Upcoming SlideShare
×

# Stiffness method

1,141
-1

Published on

2 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total Views
1,141
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
98
0
Likes
2
Embeds 0
No embeds

No notes for slide

### Stiffness method

1. 1. MSc Structural Analysis Andrew Phillips MEng PhD Lecturer in Structural Engineering and Structural Biomechanics Imperial College London Structural Biomechanics, Structures Section Department of Civil and Environmental Engineering www.imperial.ac.uk/structuralbiomechanics Implementing the Matrix Stiﬀness Method
2. 2. Implementing the Matrix Stiﬀness Method Previously it was stated that the matrix stiﬀness method could easily be implemented in a program such as Matlab. Here we will look at the implementation for a beam and a frame example. The approach can be used for any structure made up of distinct elements connected together at nodes or joints. Implementing the Matrix Stiﬀness Method
3. 3. Beam Example Implementing the Matrix Stiﬀness Method
4. 4. Node and Element Numbering Implementing the Matrix Stiﬀness Method
5. 5. Matlab Code: Setting Up % Setting up a member stiffness matrix (bending) k = [4 2; 2 4]; % Setting up a matrix of distributed loads w=[40 20 20 60]; % Setting up a matrix of lengths L=[4 6 6 4]; % Setting up a matrix of EI values EI = [1 1.5 1.5 2]; % Assuming use of UB402x140x42 EI = EI.*(2.05*10ˆ8*0.0001569); % kN/mˆ2 * mˆ4 Implementing the Matrix Stiﬀness Method
6. 6. Matlab Code: Moment Stiﬀness Matrix % Setting up the combined structure stiffness matrix % Based on the degree of kinematic indeterminacy (5) ndof=5; K=zeros(ndof,ndof); for n=1:ndof-1 K(n:n+1,n:n+1)=K(n:n+1,n:n+1)+k.*EI(n)./L(n); end Implementing the Matrix Stiﬀness Method
7. 7. Matlab Code: Fixed End Moments % Setting up fixed end moments for each span (FE-M) FEMspan = zeros(ndof-1,2); for n=1:ndof-1 FEMspan(n,1) = +w(n).*L(n)ˆ2./12; FEMspan(n,2) = -w(n).*L(n)ˆ2./12; end % Setting up fixed end moments at each support (FE-M) FEMsupport=zeros(ndof,1); FEMsupport(1,1)=FEMspan(1,1); for n=2:ndof-1 FEMsupport(n,1)=FEMspan(n-1,2)+FEMspan(n,1); end FEMsupport(ndof,1)=FEMspan(ndof-1,2); Implementing the Matrix Stiﬀness Method
8. 8. Matlab Code: Finding θ Values ∆ = K −1 (−R FE ) %%%% Calculation to find values of theta %%%% theta=(Kˆ-1)*(-FEMsupport); fprintf('Theta Values (rad): n'); fprintf('%1.4e, ',theta); fprintf('nn'); Theta Values (rad): -1.8199e-003, 3.2354e-004, 1.1122e-004, -7.6841e-004, 1.6278e-003, Implementing the Matrix Stiﬀness Method
9. 9. Matlab Code: Vertical Reactions Stiﬀness Matrix % Setting up a vertical stiffness matrix % These values can be taken from the 3D member stiffness matrix kvert = [6 6; -6 -6]; Kvert = zeros(ndof,ndof); for n=1:ndof-1 Kvert(n:n+1,n:n+1)=Kvert(n:n+1,n:n+1)+kvert.*EI(n)./L(n).ˆ2; end Implementing the Matrix Stiﬀness Method
10. 10. Matlab Code: Fixed End Vertical Reactions % Setting up fixed end vertical reactions for each span (FE-R2) FER2span = zeros(ndof-1,2); for n=1:ndof-1 FER2span(n,1) = w(n).*L(n)./2; FER2span(n,2) = w(n).*L(n)./2; end % Setting up fixed end vertical reactions for each support (FE-R2) FER2support=zeros(ndof,1); FER2support(1,1)=FER2span(1,1); for n=2:ndof-1 FER2support(n,1)=FER2span(n-1,2)+FER2span(n,1); end FER2support(ndof,1)=FER2span(ndof-1,2); Implementing the Matrix Stiﬀness Method
11. 11. Matlab Code: Vertical Reactions %%%% Calculation to find values for the vertical support reactions (R2) R2 = FER2support+Kvert*theta; fprintf('Vertical Support Reactions (kN): n'); fprintf('%1.4e, ',R2); fprintf('nn'); Vertical Support Reactions (kN): 6.1951e+001, 1.6154e+002, 1.1122e+002, 2.0602e+002, 9.9268e+001, Implementing the Matrix Stiﬀness Method
12. 12. Conclusions The script can be generalised for any continuous beam. Results are found to match those obtained from Oasys GSA excluding shear deformations. Implementing the Matrix Stiﬀness Method
13. 13. Frame Example Implementing the Matrix Stiﬀness Method
14. 14. Node and Element Numbering Implementing the Matrix Stiﬀness Method
15. 15. Matlab Code: Setting Up % Defining the number of elements numelem=13; % Defining the number of nodes numnodes=11; % Defining pinned supports supports=[1 1 1 0; 2 1 1 0; 3 1 1 0; 4 1 1 0]; Implementing the Matrix Stiﬀness Method
16. 16. Matlab Code: Setting Up % E I A Taking a Steel UB406x140x46 = 2.05*10ˆ8; %(kN/mˆ2) = 15685*10ˆ-8; %(mˆ4) = 58.6*10ˆ-4; %(mˆ2) % See the labelling on the diagram L = zeros(numelem,1); %number of elements L(1:12,1)=4; %refer to diagram L(13,1)=4*sqrt(2); %refer to diagram Implementing the Matrix Stiﬀness Method
17. 17. Matlab Code: Member Stiﬀness Matrices % Setting up a reference member stiffness matrix for each member k=zeros(6,6,numelem); for n=1:numelem k(1:6,1:6,n) = [E*A/L(n) 0 0 -E*A/L(n) 0 0;... 0 12*E*I/L(n)ˆ3 6*E*I/L(n)ˆ2 0 -12*E*I/L(n)ˆ3 6*E*I/L(n)ˆ2;... 0 6*E*I/L(n)ˆ2 4*E*I/L(n) 0 -6*E*I/L(n)ˆ2 2*E*I/L(n);... -E*A/L(n) 0 0 E*A/L(n) 0 0;... 0 -12*E*I/L(n)ˆ3 -6*E*I/L(n)ˆ2 0 12*E*I/L(n)ˆ3 -6*E*I/L(n)ˆ2;... 0 6*E*I/L(n)ˆ2 2*E*I/L(n) 0 -6*E*I/L(n)ˆ2 4*E*I/L(n)]; end Implementing the Matrix Stiﬀness Method
18. 18. Matlab Code: Member Stiﬀness Matrices % Rotating the member stiffness matices into the global axes alpha=[90 90 90 90 90 90 90 0 0 0 0 0 45]; alpha=alpha*pi./180; N=zeros(3,3,numelem); kdash=zeros(6,6,numelem); for n=1:numelem; % Setting up a transformation matrix for each of the four quadrants N(1:3,1:3,n)=[cos(alpha(n)) +sin(alpha(n)) 0;... -sin(alpha(n)) cos(alpha(n)) 0;... 0 0 1]; % kdash(1:3,1:3,n)=N(:,:,n)'*k(1:3,1:3,n)*N(:,:,n); kdash(1:3,4:6,n)=N(:,:,n)'*k(1:3,4:6,n)*N(:,:,n); kdash(4:6,1:3,n)=N(:,:,n)'*k(4:6,1:3,n)*N(:,:,n); kdash(4:6,4:6,n)=N(:,:,n)'*k(4:6,4:6,n)*N(:,:,n); end Implementing the Matrix Stiﬀness Method
19. 19. Matlab Code: Member Stiﬀness Matrices Alternative code to transform k to kdash for each element %%%% The same transformation can be achieved using this code block N=zeros(6,6,numelem); kdash=zeros(6,6,numelem); for n=1:numelem; % setting up a transformation matrix for all four quadrants % top-left and bottom-right quadrants of N contain trigonometric terms % top-right and bottom-left quadrants of N contain zero terms N(1:3,1:3,n)=[cos(alpha(n)) +sin(alpha(n)) 0;... -sin(alpha(n)) cos(alpha(n)) 0;... 0 0 1]; N(4:6,4:6,n)=N(1:3,1:3,n); % kdash(1:6,1:6,n)=N(:,:,n)'*k(:,:,n)*N(:,:,n); end Implementing the Matrix Stiﬀness Method
20. 20. Assembling the Structure Stiﬀness Matrix % Setting up connectivity tables for the elements % Refer to the diagram % This will be used to shape the global stiffness matrix connelem=[1 5; 2 6; 3 7; 4 8; 6 9; 7 10; 8 11;... 5 6; 6 7; 7 8; 9 10; 10 11;... 5 9]; % % % % % As mentioned the k matrices can be broken into quadrants 3x3 in size Deriving an initial global stiffness matrix, K Note the final matrix must be symmetrical about the diagonal Taking each of the nodes in turn and working out where the different quadrant of the original kdash matrices should be placed in K K=zeros(numnodes*3,numnodes*3); Klogic=zeros(numnodes,numnodes); Implementing the Matrix Stiﬀness Method
21. 21. Assembling the Structure Stiﬀness Matrix Implementing the Matrix Stiﬀness Method
22. 22. Assembling the Structure Stiﬀness Matrix % placing the top-left quadrant for n=1:numnodes clear a a=find(connelem(:,1)==n); if isempty(a)=1; for m=1:length(a); K(1+(n-1)*3:n*3,1+(n-1)*3:n*3)=... K(1+(n-1)*3:n*3,1+(n-1)*3:n*3)+kdash(1:3,1:3,a(m)); % Klogic(n,n)=Klogic(n,n)+1; end end end Implementing the Matrix Stiﬀness Method
23. 23. Assembling the Structure Stiﬀness Matrix % placing the bottom-right quadrant for n=1:numnodes clear a a=find(connelem(:,2)==n); if isempty(a)=1; for m=1:length(a); K(1+(n-1)*3:n*3,1+(n-1)*3:n*3)=... K(1+(n-1)*3:n*3,1+(n-1)*3:n*3)+kdash(4:6,4:6,a(m)); % Klogic(n,n)=Klogic(n,n)+1; end end end Implementing the Matrix Stiﬀness Method
24. 24. Assembling the Structure Stiﬀness Matrix % placing the top-right and bottom-left quadrant for n=1:numnodes clear a b a=find(connelem(:,1)==n); if isempty(a)=1; b=connelem(a,2); for m=1:length(a); K(1+(n-1)*3:n*3,1+(b(m)-1)*3:b(m)*3)=... K(1+(n-1)*3:n*3,1+(b(m)-1)*3:b(m)*3)+kdash(1:3,4:6,a(m)); K(1+(b(m)-1)*3:b(m)*3,1+(n-1)*3:n*3)=... K(1+(b(m)-1)*3:b(m)*3,1+(n-1)*3:n*3)+kdash(4:6,1:3,a(m)); % Klogic(n,b(m))=Klogic(n,b(m))+1; Klogic(b(m),n)=Klogic(b(m),n)+1; end end end Implementing the Matrix Stiﬀness Method
25. 25. Assembling the Structure Stiﬀness Matrix % Addressing rows and columns in the stiffness matrix associated with % applied support constraints a=size(supports); b=0; Ksupportrefs=zeros(1,sum(sum(supports(:,2:4)=0))); for n=1:a(1) for m=2:a(2) if supports(n,m)==1; b=b+1; Ksupportrefs(b)=(supports(n,1)-1)*3+(m-1); end end end clear a b K(Ksupportrefs(1,:),:)=0; K(:,Ksupportrefs(1,:))=0; for n=1:length(Ksupportrefs) K(Ksupportrefs(1,n),Ksupportrefs(1,n))=1; end Implementing the Matrix Stiﬀness Method
26. 26. Assembling the Fixed End Reactions Matrix %Setting up matrix of distributed loads w=[0 0 0 0 0 0 0 10 10 10 10 10 0]; %Setting up fixed end moments for each element (FE-M) FEMelem = zeros(numelem,2); for n=1:numelem FEMelem(n,1) = +w(n).*L(n)ˆ2./12; FEMelem(n,2) = -w(n).*L(n)ˆ2./12; end %Setting up fixed end x2 reactions for each element (FE-R2) FER2elem = zeros(numelem,2); for n=1:numelem FER2elem(n,1) = w(n).*L(n)./2; FER2elem(n,2) = w(n).*L(n)./2; end Implementing the Matrix Stiﬀness Method
27. 27. Assembling the Fixed End Reactions Matrix %Setting up fixed end moment for each node FEMnode=zeros(numnodes,1); for n=1:numnodes clear a b a = find(connelem(:,1)==n); if isempty(a)=1; for m=1:length(a); FEMnode(n,1)=FEMnode(n,1)+FEMelem(a(m),1); end end b = find(connelem(:,2)==n); if isempty(b)=1; for m=1:length(b); FEMnode(n,1)=FEMnode(n,1)+FEMelem(b(m),2); end end end Implementing the Matrix Stiﬀness Method
28. 28. Assembling the Fixed End Reactions Matrix %Setting up fixed end x2 reactions for each node FER2node=zeros(numnodes,1); for n=1:numnodes clear a b a = find(connelem(:,1)==n); if isempty(a)=1; for m=1:length(a); FER2node(n,1)=FER2node(n,1)+FER2elem(a(m),1); end end b = find(connelem(:,2)==n); if isempty(b)=1; for m=1:length(b); FER2node(n,1)=FER2node(n,1)+FER2elem(b(m),2); end end end Implementing the Matrix Stiﬀness Method
29. 29. Assembling the Fixed End Reactions Matrix %Setting up matrix of FE reactions FERnode=zeros(3*numnodes,1); FERnode(3:3:3*numnodes,1)=FEMnode(1:1:numnodes,1); FERnode(2:3:3*numnodes,1)=FER2node(1:1:numnodes,1); FERnode(Ksupportrefs,1)=0; Implementing the Matrix Stiﬀness Method
30. 30. Finding the Joint Displacements ∆ = K −1 (−R FE ) %Finding the joint displacements displacements=(Kˆ-1)*(-FERnode); reshapedisplacements=reshape(displacements,3,[]); fprintf('nDisplacements at the nodes (m,m,rad):nn'); disp(reshapedisplacements); Implementing the Matrix Stiﬀness Method
31. 31. Results: Joint Displacements Displacements at the nodes (m,m,rad): 1.0e-003 * Columns 1 through 6 0 0 0.0689 0 0 -0.0355 0 0 -0.0198 0 0 -0.0971 0.0672 -0.0661 -0.1882 0.2331 -0.2546 -0.1916 0.2170 -0.4155 -0.0053 0.2021 -0.1922 0.2021 Columns 7 through 11 0.0893 -0.2742 -0.0274 0.1013 -0.1290 0.1182 Implementing the Matrix Stiﬀness Method 0.0760 -0.1966 0.0140
32. 32. Find the Support Reactions R = k ′ ∆ + R FE %Finding the support reactions %Isolating the elements that have restrained ends %This relies on supports being defined for single elements a=size(supports); for n=1:a(1) b=find(connelem(:,1)==n); EndAdisp=displacements(1+(connelem(b,1)-1)*3:3+(connelem(b,1)-1)*3,1); EndBdisp=displacements(1+(connelem(b,2)-1)*3:3+(connelem(b,2)-1)*3,1); Endsdisp(1:3,1)=EndAdisp; Endsdisp(4:6,1)=EndBdisp; reactions(1+(n-1)*3:3+(n-1)*3,1)=kdash(1:3,1:6,b)*Endsdisp+... FERnode(1+(connelem(b,1)-1)*3:3+(connelem(b,1)-1)*3,1); end reshapereactions=reshape(reactions,3,[]); fprintf('nReactions (kN,kN,kNm):nn'); disp(reshapereactions); Implementing the Matrix Stiﬀness Method
33. 33. Results: Support Reactions Reactions (kN,kN,kNm): 1.0333 19.8530 0.0000 -0.1987 59.0480 0.0000 Implementing the Matrix Stiﬀness Method 0.0305 82.3450 -0.0000 -0.8651 38.7540 0.0000
34. 34. Check: Assembled Structure Stiﬀness Matrix Assembly logic of the K matrix: 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 Implementing the Matrix Stiﬀness Method 1 0 0 0 3 1 0 0 1 0 0 0 1 0 0 1 4 1 0 1 0 0 0 0 1 0 0 1 4 1 0 1 0 0 0 0 1 0 0 1 3 0 0 1 0 0 0 0 1 1 0 0 3 1 0 0 0 0 0 0 0 1 0 1 3 1 0 0 0 0 0 0 0 1 0 1 2
35. 35. Conclusions The script can be generalised for any plane frame. The script can be adapted to include diﬀerent cross sections. Results are found to match those obtained from Oasys GSA excluding shear deformations. Implementing the Matrix Stiﬀness Method
36. 36. Ask not what you can do for the matrix stiﬀness method... Ask what the matrix stiﬀness method can do for you. Implementing the Matrix Stiﬀness Method
1. #### A particular slide catching your eye?

Clipping is a handy way to collect important slides you want to go back to later.