33
FEA code in Matlab for a Truss Structure By: Shiwei Zhou

FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

  • Upload
    doanthu

  • View
    270

  • Download
    18

Embed Size (px)

Citation preview

Page 1: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

FEA code in Matlab for a Truss Structure

By: Shiwei Zhou

Page 2: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Outline:

MATLAB programs for 2D trussVerification of the MATLAB code by

Strand72D Truss transmitter towerStrand7 example for 2D truss

transmitter tower

Page 3: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Input Geometrical Model

1. Node coordinate2. Element connection3. Force vector4. Displacement vector5. Boundary conditoins

Page 4: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Element Stiffness Matrix

Page 5: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Element Stiffness Matrix

Page 6: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Assemble Element Stiffness Matrix to Globe Matrix

Page 7: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Boundary Conditions

Page 8: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Calculate Ax=b

Page 9: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Calculate Node Force

Page 10: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Internal force

Page 11: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Internal Force

Page 12: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab
Page 13: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Exercise

Page 14: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Node x y1 4 02 4 33 0 04 0 3

Elem P1 P21 1 22 2 33 4 2

Page 15: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Boundary Conditions:Node 1, 3 ,4 are fixed:D=[0

-0.025D2xD2y0000];

F=[F1xF1y00F3xF3yF4xF4y]

2 kN

D=[00 D2xD2y000

0]

Q=[Q1xQ1y 20Q3xQ3y

Q4xQ4y]

Page 16: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

clc;clear; close all;AE=8e6; % Determine the node coordinates % Determine the truss element N=[]; E=[];%The definitation of loads

F=zeros(2*NN,1);D=zeros(2*NN,1);D(2) = -0.025; U(2) = -0.025;syms U3 U4U =[0 -0.025 U3 U4 0 0 0 0].';%Assembling the global matrix

K=zeros(2*NN,2*NN);for n=1:NE

L = sqrt((N(E(n,1),1)-N(E(n,2),1))^2 + (N(E(n,1),2)-N(E(n,2),2))^2);lx = (N(E(n,2),1) - N(E(n,1),1))/L;ly = (N(E(n,2),2) - N(E(n,1),2))/L;

%element matrixKe = AE*[ lx*lx lx*ly -lx*lx -lx*ly

lx*ly ly*ly -lx*ly -ly*ly-lx*lx -lx*ly lx*lx lx*ly-lx*ly -ly*ly lx*ly ly*ly]/L;

i = E(n,1); j = E(n,2);K([2*i-1 2*i 2*j-1 2*j],[2*i-1 2*i 2*j-1 2*j]) = K([2*i-1 2*i 2*j-1 2*j],[2*i-1 2*i 2*j-1 2*j]) + Ke;

end

Flowchart for Exercise

Page 17: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

T=K*U;Q=solve(T(3),T(4));

D(3) = subs(Q.U3,'x',1);D(4) = subs(Q.U4,'x',1);

F=K*D;%Calculate internal forcefor n=1:NE

L = sqrt((N(E(n,1),1)-N(E(n,2),1))^2 + (N(E(n,1),2)-N(E(n,2),2))^2);

lx = (N(E(n,2),1) - N(E(n,1),1))/L;ly = (N(E(n,2),2) - N(E(n,1),2))/L;P1 = E(n,1); P2 = E(n,2);q(n) = AE*[-lx -ly lx ly]*D([2*P1-1 2*P1 2*P2-1 2*P2])/L;

end

for i=1:2*NNfprintf(['U(%i) = %5.3f\n'],i,D(i));

end

for i=1:2*NNfprintf(['F(%i) = %5.3f\n'],i,F(i));

end

for i=1:NEfprintf(['q(%i) = %5.3f\n'],i,q(i));

end

Flowchart for Exercise

Page 18: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Go to Computer Lab

Develop a MATLAB code for the Exercise!

Page 19: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Verify Homework in Strand7

Create Node Create Beam Set BCs Apply load

Page 20: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Set up Young’s Modulus Set up area of cross section

Page 21: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Linear Static Analysis Log File

Page 22: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Model

Page 23: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Results

Page 24: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

/ ______________________________________________________________________________/ Strand7 MODEL EXCHANGE FILE/ TIMESTAMP: 10:50:08 am, 18 August 2014

/ ______________________________________________________________________________/ MODEL INFORMATION

FileFormat Strand7.2.4.4ModelName "HOMEWORK"Title ""Project ""Author ""Reference ""Comments ""

/ ______________________________________________________________________________/ UNITS

LengthUnit mMassUnit kgEnergyUnit JPressureUnit PaForceUnit NTemperatureUnit K

/ ______________________________________________________________________________/ GROUP DEFINITIONS

Group 1 16711680 "\\Model"

/ ______________________________________________________________________________/ FREEDOM CASE DEFINITIONS

FreedomCase 1 0 1 "Freedom Case 1"

Output Strand7 Model in Txt Format

Page 25: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

/ ______________________________________________________________________________/ LOAD CASE DEFINITIONS

LoadCase 1 0 "Load Case 1"LCInclude 3

/ ______________________________________________________________________________/ COORDINATE SYSTEM DEFINITIONS

CoordSys 1 "Global XYZ" GlobalXYZ

/ ______________________________________________________________________________/ NODE COORDINATES

Node 1 0 4.00000000000000E+0 0.00000000000000E+0 0.00000000000000E+0 Node 2 0 4.00000000000000E+0 3.00000000000000E+0 0.00000000000000E+0 Node 3 0 0.00000000000000E+0 0.00000000000000E+0 0.00000000000000E+0 Node 4 0 0.00000000000000E+0 3.00000000000000E+0 0.00000000000000E+0

/ ______________________________________________________________________________/ BEAM ELEMENTS

Beam 1 0 1 1 1 2 Beam 2 0 1 1 2 3 Beam 3 0 1 1 4 2

/ ______________________________________________________________________________/ NODE RESTRAINTS (ROTATION AS RADIAN)/ Freedom Case 1

NdFreedom 1 1 1 DX NdFreedom 1 3 1 DX DY NdFreedom 1 4 1 DX DY

/ ______________________________________________________________________________/ NODE FORCES/ Load Case 1

NdForce 1 2 -1.92000000000000E+4 -1.44000000000000E+4 0.00000000000000E+0

Page 26: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

/ BEAM PROPERTIESTrussProp 1 16737843 "Beam Property 1"MaterialName "Unknown Material - Modified"Modulus 8.00000000000000E+10 UsePoisson TRUEInstantAlpha FALSEArea 1.00000000000000E-4 MomentJ 1.40700000000000E-9 SectionType SolidRectB 1.00000000000000E-2 D 1.00000000000000E-2 CT FALSE

IncludeTorsion FALSENonLinType ElasticplasticHardening Isotropic

________________/ LINEAR STATIC SOLVER DATA

LoadFreedomSetLSA 1 ON1

/ LINEAR BUCKLING SOLVER DATABuckNumModes 4 BuckShift 0.00000000000000E+0

/ LOAD INFLUENCE SOLVER DATA

LoadFreedomSetLIA 1 ON1

/ GENERAL SOLVER DATA

SolverTempDependence None

SolverLoadCaseTempDependence 0

SolverActiveStage 0

SturmCheck FALSE

SolverFreedomCase 1

Page 27: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

A Matlab Code for 2D Transmitter tower

Page 28: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Flow Chart clc;clear;close all;

% read node and element information

N = textread('node.txt'); E = textread('elem.txt');

FN = [11 12 17 18 23 24]; F(2*FN-1) = -920*sin(20/180*pi); F(2*FN) = -920*cos(20/180*pi);

%Assembling the global matrix

K=zeros(2*NN,2*NN);

for n=1:NE

L = sqrt((N(E(n,1),1)-N(E(n,2),1))^2 + (N(E(n,1),2)-N(E(n,2),2))^2);

i = E(n,1); j = E(n,2);

K([2*i-1 2*i 2*j-1 2*j],[2*i-1 2*i 2*j-1 2*j]) = K([2*i-1 2*i 2*j-1 2*j],[2*i-1 2*i 2*j-1 2*j]) + Ke;

end

fixeddofs = [1 2 3 4]; % Fix end supports with zero deformation

alldofs = [1:2*NN];

freedofs = setdiff(alldofs,fixeddofs);

U(freedofs,:) = K(freedofs,freedofs)\F(freedofs,:);

U(fixeddofs,:)= 0;

for n=1:NE

P1 = E(n,1); P2 = E(n,2);

P(n) = A0*E0*[-lx -ly lx ly]*U([2*P1-1 2*P1 2*P2-1 2*P2])/L;

end

%Calculate the stress and strain

stress = P/A0;

strain = stress/E0;

Page 29: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Displacement

Page 30: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Strain Distribution

Page 31: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Result Comparison Between Matlab and Strand 7

1.000000000000000 0 02.000000000000000 0 03.000000000000000 -0.056705187259539 -0.0576968260678554.000000000000000 -0.020358528001983 0.0125597822448235.000000000000000 -0.045999647171697 -0.1727331924041316.000000000000000 -0.053109054594353 0.0302022273735127.000000000000000 -0.263157875158521 -0.2377748339796678.000000000000000 -0.251268324026876 0.0588360635482129.000000000000000 -0.521945256702415 -0.290906572903267

10.000000000000000 -0.530747504449517 0.07596093293729111.000000000000000 -0.693619429698391 -1.00875692279681712.000000000000000 -0.681789204532035 0.52192282179440313.000000000000000 -0.848748038328659 -0.33209434637371014.000000000000000 -0.825251678313140 0.08427213350532615.000000000000000 -1.165271291297121 -0.36005349681014516.000000000000000 -1.183802187560931 0.08753814231897217.000000000000000 -1.358028554905666 -1.54354170320105018.000000000000000 -1.352392698081489 0.67629163903515919.000000000000000 -1.540139025658684 -0.37879029354935520.000000000000000 -1.514214220162403 0.08688591697876921.000000000000000 -1.877909261927200 -0.38969398160077122.000000000000000 -1.894365603525534 0.08378851873987423.000000000000000 -2.069597330694618 -1.18092861598961124.000000000000000 -2.067850950761376 0.61204378049250725.000000000000000 -2.254750932371863 -0.39417439839425926.000000000000000 -2.236519903204394 0.081969337109746

Strand7 Matlab

Page 32: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab

Debug and Helps for MATLA Code clc;clear;close all;

% read node and element information

N = textread('node.txt');

E = textread('elem.txt');

%the numbers of nodes and elements

NN = length(N);

NE = length(E);

%Young's Modulus and cross section area

E0 = 2.1e6;

A0 = 6.91;

%plot the element

hold on;

for i=1:NE

plot([N(E(i,1),1),N(E(i,2),1)],[N(E(i,1),2),N(E(i,2),2)],'k','linewidth',2);

text((N(E(i,1),1)+N(E(i,2),1))/2,(N(E(i,1),2)+N(E(i,2),2))/2,num2str(i),'color','b','fontsize',12);

end

%plot the nodes

for i=1:NN

if i<3

plot(N(i,1),N(i,2),'r^','markersize',12,'markerfacecolor','r'); %plot fixed supports

else

plot(N(i,1),N(i,2),'ko','markersize',8,'markerfacecolor','k');

end

t t(N(i 1) N(i 2) 2 t (i) ' l ' ' ' 'f t i ' 12)

Page 33: FEA code in Matlab for a Truss StructureA.ppt - MathWorks · Assemble Element Stiffness Matrix to Globe Matrix. ... %Assembling the global matrix ... Result Comparison Between Matlab