CHAPTER
23 ●
MATLAB Programs for Finite Element Analysis CHAPTER OUTLINE 23.1 Solution Solution of Linear System of Equations Equat ions Using Choles Choleski ki Meth Me thod od 68 684 4 23.2 Incorp Incorporation oration of Boundary Boundary Condit Con dition ions s 686 23.3 23. 3 Ana Analys lysis is of of Space Space Tru Trusse sses s 687 23.4 Analys Analysis is of Plates Subjected Subjected to In-plane Loads Using CST Elem El emen ents ts 69 691 1 23.5 Analys Analysis is of ThreeThree-Dimensi Dimensional onal Structures Using CST Elem El emen ents ts 69 694 4
23.6 Temperature Temperature Distribution Distribution in One-Di One -Dimen mensio sional nal fins 697 23.7 Tempe Temperature rature Distribution Distribution in One-Dimensio One-Di mensional nal Fins Includin Including g Radiat Rad iation ion Heat Tra Transf nsfer er 698 23.8 Two-Di Two-Dimensio mensional nal Heat Transfer Analy An alysi sis s 69 699 9 23.9 Confine Confined d Fluid Flow around a Cylinder Using Potential Function Appro Ap proac ach h 70 701 1 23.10 23. 10 Tor Torsion sion Ana Analysi lysis s of Shaf Shafts ts 702
MATLAB1 is a popular software currently being used for solving a variety of engineering analysis problems. This chapter presents 10 MATLAB programs for the finite element analysis of different types of problems discussed in Chapters 1 to 20. The programs are given in the form of m-files. Each program requires subprograms, again in the form of m-files, for solving a problem. In addition, depending on the problem to be solved, the user needs to create a main program, in the form of an m-file, to specify the input data, call the relev relevant ant program (m-file), (m-file), and display the resul results. ts. Sample main progra programs ms are given for all 10 programs described in this chapter. The m-files of the programs and all the subprograms needed for executing the programs are available at the web site of the book. The programs and the purpose or use of the programs are given below.
1
MATLAB is a registered trademark of The MathWorks, Inc., 3 Apple Hill drive, Natick, MA 01760-2098.
The Finite Element Method in Engineering. DOI: 10.1016/B978-1-85617-661-3.00023-4 © 2011 Elsevier Inc. All rights reserved.
683
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
Program Number
Program Name
Relevant Location in the Book (Sec (S ecti tion on Nu Numb mber er))
1
choleski.m
7.2.2
Use Us e of th the e Pr Prog ogra ram m
To solve a symmetric system of algebraic equations with several
! ! ! ! right-side vectors, ½A X = b 1 , b 2 , ::: , b M ; ½A can be stored in
h
2
adjust.m
i
banded form To incorporate boundary conditions (specified values to boundary
6.3
!
3
truss3D.m
9.2
4
cst.m
10.3.1
5
CST3D.m
10.3.3
6
heat1.m
14.2
7
radiat.m
14.6
8
heat2.m
15.2
9
phiflo.m
18.3
10
torson.m
20.3
684
!
degrees of freedom) in matrix equations ½A X = b where the matrix ½A can be stored in banded form Analysis of 3D trusses (to find displacements of nodes and stresses in bar elements) Displacement and stress analysis of plates lying in XY plane subjected to in-plane loads using linear triangular (CST) elements Displacement and stress analysis of three-dimensional box-type of structures subjected to nodal loads using linear triangular (CST) elements Temperature distribution in 1D fins (by considering conduction and convection) Temperature distribution in 1D fins by considering radiation heat transfer (along with conduction and convection) Temperature distribution in 2D plates with arbitrary geometry using linear triangular elements (by considering conduction and convection) Confined fluid flow around a cylinder (or any shaped body) for inviscid and incompressible fluids using potential function approach using linear triangular elements Stress function variation in a cross-section of a solid prismatic shaft subjected to twisting moment using linear triangular elements
23.1 SOLUTION SOLUTION OF LINEAR SYSTEM OF EQUATIONS EQUATIONS USING CHOLESKI METHOD Two MATLAB subprograms, called decomp.m and solve.m, are developed for the solution of linear algebraic equations using the Choleski decomposition method (details given in Section 7.2.2): ! ! ½ A X = b (23.1) where [ A] is a symmetric banded matrix of order N . It is assumed that the elements of the matrix [ A] are stored in band form in the first N rows rows and NB columns of the array A A , where NB denotes the semi-bandwidth of the matrix [ A]. Thus, the diagonal terms aii of [ A] occupy the locations A (I , 1). The subprog subprogram ram decomp. decomp.m m decompo decomposes ses the matrix [ A] (stored in the form of an array A ) T into [ A] = ½ U ½U and the elements of the upper triangular matrix [ U ] are stored in the array A subprogram am solve.m solves Eq. (23.1) by using the decomposed coefficient coefficient matrix A. The subprogr ! [ A]. This subprogra subprogram m can solve Eq. (23.1) for sever several al right-hand-side right-hand-side vectors b : If ! ! ! 2 corresponding ding solutions b 1 , b 2 , , b M indicate the right-hand-side vectors for which the correspon ! ! ! ! ! ! column-wise in the X 1 , X 2 , , X M are to be found, all the vectors b 1 , b 2 , , b M are stored column-wise ! array B ), J = 1, 2, , N . The equations B. Thus, the j-th element of b i will be stored as B ( J , I ), …
…
…
…
! ! The right-hand-side vectors b 1 , b 2 , , repre represent sent different load vectors (correspond (corresponding ing to differ different ent load conditions) in a static structural or solid mechanics problem. 2
…
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
! ! ! ! to be solved for any right-h right-hand-si and-side de vector b can be expressed as ½ A X = ½ U T ½U X = b : These equations can be solved as ! ! ! (23.2) ½U X = ð½ U T Þ 1 b ≡ Z and ! 1! X = ½ U Z ! ! In the subprogram, solve.m, the vectors Z i for different b i are found in the forward pass ! ! and are stored in the array B . The solutions X i corresponding to different b i are found in the backward pass and are stored in the array B . Thus, the columns of the array B returned ! from solve.m will give the desired solutions X i , i = 1, 2, , M . A main program, named main_choleski.m, is created to provide the input data, call the subprograms decomp.m and solve.m, solv e.m, and obtai obtain n the results. The procedu procedure re is illu illustrat strated ed with the foll following owing example. example. –
–
…
EXAMPLE 23.1 Solve the following system of equations:
2 66 66 64
1 −1 0 0 0
1 2 −1 0 0 −
0 −1 2 −1 0
0 0 −1 2 −1
0 0 ! 0 X i −1 2
3 77 77 75
=
! bi
(E.1)
where
8> x 9> >> x >> < = >> x >>, >: x >; 1
! X i
2
=
! b1
3 4
x 5
Here the number of equations ! vectors b i = M = 3.
0
i
=
=
8> 1 9> >> 0 >> < = >> 0 >>, >: 0 >;
! b2
=
8> 0 9> >> 0 >> < = >> 0 >>, >: 0 >;
and
! b3
=
1
N = 5, the semi-bandwidth of [ A]
8> 1 9> >> 1 >> < = >> 1 >> >: 1 >;
685
1
=
NB
=
2, and the number of
Solution A listing of the program main_choleski.m created for solving the system of Eq. (E.1) and the results obtained are shown below. clear all; close all; clc; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------% Input data A = [1 2 2 2 2; − 1 − 1 − 1 − 1 0]’; B = [1 0 0 0 0; 0 0 0 0 1; 1 1 1 1 1]
;
’
N = 5; NB = 2; M = 3; % End of input data [A, DIFF] = decomp (N, NB, A); P = solve (N, NB, M, A, B, DIFF); for j = 1:M fprintf ( ‘%s’, ‘solution’) fprintf ( ‘%2. 0f ’, j’) fprintf ( ‘%s\n’,‘:’)
(Continued )
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
EXAMPLE 23.1
(Continued )
fprintf ( ‘%8.0f %8.0f %8.0f %8.0f %8.0f\n ’, P(: , j) ’) end Solution 1: 5
4
3
2
1
1
1
1
1
14
12
9
5
Solution 2: 1 Solution 3: 15
23.2 INCORP INCORPORATIO ORATION N OF BOUNDA BOUNDARY RY CONDITIONS CONDITIONS
! ! To incorporate the boundary conditions for solving the equations ½A X = B , a MATLAB program, called adjust.m, is created. This program assumes that the global characteristic or stiffness matrix [ A] is stored in a band form. If the degree of freedom or the component II ! of the vector X is specified as a constant value CONST, the following statement modifies the matrix A and the vector B incorporate orate the stat stated ed bounda boundary ry condition: B to incorp “
function [A, B] = adjust [A,B,NN,NB,II,CONST]
where NN is the total number of degrees of freedom, NB is the bandwidth of A , B is the global vector of nodal actions or load (size: NN ) and A is the global characteristic or stiffness matrix (size: NN × NB ).
NOTES 686
1. If the prescribed values of several degrees of freedom are to be incorporated, the program adjust.m
is to be used once for each prescribed degree of freedom. 2. The program adjust.m incorporates the boundary conditions using the procedure described in Method 2 of Section 6.3. program works even when the matrix matrix [ A] is not stored in band form. If [ A] is not stored in 3. The program band form, then the bandwidth of A can be defined as N B = NN and and the full original matrix [ A] can be treated as if it is in band form. The following example illustrates the use of the program adjust.m.
EXAMPLE 23.2 Consider the following system of equations:
2 66 66 64
1:9 2:1 5:7 0:0 0:0
–
2:1 3:4 1:5 3:3 0:0
5:7 1:5 2:2 4:5 2:8
0:0 3:3 4:5 5:6 1:8
–
0:0 0:0 2:8 1:8 4:7
–
–
38> 77>>< 77 75>> >:
Φ1 Φ2 Φ3 Φ4 Φ5
9> >>= >> >;
=
8> 0 9> >>< 0 >>= >> 00 >> >: >;
(E.1)
0
! ! By renaming the characteristic matrix [ A] as [GK ] and the characteristic vector B as P , the arrays [GK ] ! and P can be identified from Eq. (E.1) as
½GK =
2 1:9 66 3:4 66 2:2 66 4 5:6 4:7
with NN = 5 and NB
=
2:1 1:5 4:5 1:8
–
0:0
5:7
3 3:3 7 77 2:8 7 77, 0:0 5
–
0:0
! P =
8> 0 9> >> 0 >> < = >> 0 >> >: 0 >; 0
3.
Modify the arrays GK and P to incorporate the boundary condition,
Φ3 = Φ3 = 2 :0:
”
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
Solution The stated boundary condition gives II = 3 and CONST = 2.0. The main program, named main_adjust.m, which calls the subprogram adjust.m as well as the results (modified arrays GK and P ), ), is shown below. clear all; close all; clc; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------GK = [1.9 [1.9 2.1 5.7 5.7; ; 3.4 3.4 1.5 3.3 3.3; ; 2.2 2.2 4.5 2.8 2.8; ; 5.6 5.6 −1.8 0.0 0.0; ; 4.7 0.0 0.0 0.0]; ]; P = [0 0 0 0 0] ’; NN = 5; NB = 3; M = 3; CONST = 2; [GK, P] = Adjust (GK, P, NN, NB, M, CONST); fprintf(‘
Modified characteristic matrix (GK) \n ’)
for i = 1:NN fprintf ( ‘% 12.4f % 12.4f %12.4f\n ’, GK (i, 1), GK(i, 2), GK(i, 3)) end fprintf(‘
Modified characteristic vector (P) \n ’)
for j = 1:NN fprintf ( ‘% 12.4f\n ’, P(j)) end Modified characteristic matrix (GK) 1.9000
2.1000
0.0000
3.4000
0.0000
3.3000
1.0000
0.0000
0.0000
5.6000
−1.8000
0.0000
4.7000
0.0000
0.0000
687
Modified characteristic vector (P)
−11.4000 −3.0000 2.0000
−9.0000 −5.6000
23.3 ANALY ANALYSIS SIS OF SPACE TRUSSES TRUSSES A MATLAB program, called truss3D.m, is developed for the analysis of space trusses (details given in Section 9.2). The program requires the following data: nn ne nd nb nfix nf ix e ifix if ix ifre if ree e loc lo c
number of nodes number of bar elements numb nu mber er of de degr gree ees s of fr free eedo dom m of th the e tr trus uss, s, in incl clud udin ing g th the e fix fixed ed de degr gree ees s of freedom ban ba ndw dwid idth th of th the e sys yste tem m st stif iffn fnes ess s ma matr trix ix num umb ber of fi fixe xed d deg egre rees es of fr free eedo dom m Young s modulus degr de gree ee of fr free eedo dom m nu numb mber ers s th that at ar are e fi fixe xed d numb nu mber er of fr free ee de degr gree ees s of fr free eedo dom; m; nf nfre ree e = nd nfix nod odal al co conn nnec ecttiv ivit ity y ar arrray of si siz ze ne × 2; loc ( i , j ) denotes the node number of end ( j = 1, 2) of bar element i ( ( i , ne) j ( i = 1, 2, ’
–
…
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
x y z A p
array of size array of size array of size array of size array of size condition 1 array of size condition 2
p1
nn; x ( ( i ) is the x -coordinate -coordinate of node i nn; y ( ( i ) is the y -coordinate -coordinate of node i nn; z ( ( i ) is the z -coordinat -coordinate e of node i ne; A( i ) is the cross-sectional area of bar element i nfree; p ( i ,1) ,1) is the load applied at i -th -th degree of freedom in load nfree; p 1( i ,1) ,1) is the load applied i -th -th degree of freedom in load
Note: The fixed nodes are to be numbered after numbering the free nodes. Thus, the last nfix dof of the nd dof of the system represent fixed dof.
The following example illustrates the application of the program truss3D.m.
EXAMPLE 23.3 Find the deflections of nodes and the axial stresses developed in the space truss shown in Figure 21.8 under the following two load conditions: Load condition 1: Non zero components of the load vector are p(2,1) = 88,960 N, p(3,1) = 22,240 N, p (5,1) = 88,960 N, p (6,1) = 22,240 N Load condition 2: Non zero components of the load vector are p 1(1,1) = 4448 N, p1(2,1) = 44,480 N, p 1(3,1) = 22,240 N, p 1(5,1) = 44,480 N, p 1(6,1) = 22,240 N, p1(7,1) = 2224 N, p 1(16,1) = 2224 N –
–
–
–
Other data are E
688
=
–
6.9 × 1010 Pa, and area of cross-section
=
1 mm2 for every bar element.
Solution Each bar of the truss shown in Figure 21.8 is modeled as a bar element in 3D space. A main program, called main_truss3D.m, is created to define the input data, call the program truss3D.m, and display the results. A listing of the program main_truss3D.m and the results given by the program are shown below. % FEM analysis of space truss 25-bar truss % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------clear all; close all; clc; % **************** % Input Parameters %**************** % units (MKS meter (distance), Newton (load)) nn=10;
% number of nodes
ne=25;
% number of elements (bars)
nd=30;
% total number of system degrees of freedom
nb=30; nfix=12;
% number of fixed degrees of freedom
e=6.9*10^10;
% Young ’s modulus of elasticity (Pa)
rho=2770;
% density of the material (kg/m3)
ifix=[19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]; %fixed degrees of freedom loc=[1 2; 1 4; 2 3; 1 5; 2 6; 2 4; 2 5; 1 3; 1 6;. . . 3 6; 4 5; 3 4; 6 5; 3 10; 6 7; 4 9; 5 8; 4 7; 3 8;. . . 5 10 10; ; 6 9; 6 10 10; ; 3 7; 4 8; 5 9] 9]; ;
%nod %n odal al co conn nnec ecti tivi vity ty ma matr trix ix
x=[−952.5 952.5 − 952.5 952.5 952.5 − 952.5 − 2540 2540 2540 − 2540]*le−3; % nodal coordinates y=[0 0 952.5 952.5 − 952.5 − 952.5 2540 2540 − 2540 − 2540]*le−3;
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
z=[5080 5080 2540 2540 2540 2540 0 0 0 0]*le −3; A=ones (1, ne); % areas of cross-section % *************** % load vector (p) % condition 1 % *************** p=zeros (18, 1); p(2, 1)=88,960; p(3, 1)= −22,240; p(5, 1)= −88,960; p(6, 1)= −22,240; p; % ************* % condition 2 % ************* p1=zeros (18, 1); p1(1, 1)=4448; p1(2, 1)=44,480; p1(3, 1)= −22,240; p1(5, 1)=44,480; p1(6, 1)= −22,240; p1(7, 1)=2224; p1(16, 1)=2224; p1; [D,D1, st, st1]=truss3D (nn, ne, nd, nb, nfix, e, ifix, loc, x, y, z, A, p, p1); fprintf ( ‘
Load condition 1:
\n ’);
fprintf ( ‘
Nodeal Node al displ displacem acements: ents:
\n ’);
fprintf ( ‘ Node
X-disp
Y-disp
689
Z-disp\n ’);
for i=1 : 6 fprintf ( ‘%1d
%4.4e
%4.4e
%4.4e\n ’, i, D (3*i −2), D
%4.4e
%4.4e
%4.4e\n ’, i, 0, 0, 0) ;
(3*i−1), D(3*i) ); end for i=7: nn fprintf ( ‘%1d end fprintf ( ‘
\n’);
fprintf ( ‘
Load condition 2:
\n ’);
fprintf ( ‘
Nodeal Node al displ displacem acements: ents:
\n ’);
fprintf ( ‘Node
X-disp
Y-disp
Z-disp\n ’) ;
for i=1 : 6 fprintf ( ‘% 1d
% 4.4e
% 4.4e
% 4.4e\n ’,i,D1 (3*i −
% 4.4e
% 4.4e\n ’, i, 0, 0, 0) ;
2), D1 (3*i −1), D1 (3*i)); end for i=7 : nn fprintf ( ‘% 1d
% 4.4e
end fprintf ( ‘
\n’);
fprintf ( ‘ fprintf ( ‘
Loa oad d co cond ndit itio ion n 1:
Element Stress:
fprintf ( ‘ El Elem emen ent t
\n ’); \n ’);
Axia Ax ial l st stre ress ss \n ’);
for i=1 : ne fprintf ( ‘% 1d
% 4.4e \n ’, i, st (i)) ;
end
(Continued )
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
EXAMPLE 23.3
(Continued )
fprintf ( ‘
\n’);
fprintf ( ‘
Load Lo ad con ond dit iti ion 2:
fprintf ( ‘
Elem El eme ent Str tre ess ss: :
fprintf ( ‘ El Elem emen ent t
\n’); \n ’);
Axia Ax ial l st stre ress ss \n ’);
for i=1 : ne fprintf ( ‘ %1d
%4.4e \n ’, i, st1 (i) );
end Load condition 1: Nodeal displacements: Node
X-disp
Y-disp
Z-disp
1
−7.1742e−008
1.2450e −005
−8.8742e−007
2
7.1742e −008
−1.2450e−005
−8.8742e−007
3
2.9731e −006
−5.2279e−007
−2.2515e−006
4
2.9891e −006
5.7343e −007
1.1822e −006
5
−2.9731e−006
5.2279e −007
−2.2515e−006
6
−2.9891e−006
−5.7343e−007
1.1822e −006
7
0.0000e+000
0.0000e+000
0.0000e+000
8
0.0000e+000
0.0000e+000
0.0000e+000
9
0.0000e+000
0.0000e+000
0.0000e+000
10
0.0000e+000
0.0000e+000
0.0000e+000
Load condition 2: Nodeal displacements: Node 1
690
X-disp
Y-disp
Z-disp
6.5910e −007
1.2726e −005
−6.8846e−007
7.5028e −007
1.2726e −005
−1.0704e−006
3
3.2594e −008
8.4982e −007
−3.1324e−006
4
2.1198e −007
8.7459e −007
5
2.6689e −008
8.0020e −007
−3.3721e−006 2.0590e −006
6
2.1789e −007
8.2497e −007
2.2987e −006
7
0.0000e+000
0.0000e+000
0.0000e+000
8
0.0000e+000
0.0000e+000
0.0000e+000
2
9
0.0000e+000
0.0000e+000
0.0000e+000
10
0.0000e+000
0.0000e+000
0.0000e+000
Load condition 1: Element Stress: Ele El eme men nt
Axia Ax ial l str tre ess
1
5.1971e+003
2
−6.7431e+004
3
5.8388e+004
4
5.8388e+004
5
−6.7431e+004
6
6.7020e+004
7
−8.3372e+004
8
−8.3372e+004
9
6.7020e+004
10
1.8344e+003
11
1.8344e+003
12
5.7966e+002
13
5.7966e+002
14
−9.2069e+003
15
8.4817e+002
16
8.4817e+002
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
17
−9.2069e+003
18
4.0847e+004
19
−4.9780e+004
20
−4.9780e+004
21
4.0847e+004
22 23
−1.5928e+004 −1.0143e+003
24
−1.5928e+004
25
−1.0143e+003 Load condition 2: Element Stress:
Ele lem men ent t
Axi xia al st stre res ss
1
3.3027e+003
2
−3.3429e+004
3
−2.9559e+004
4
1.9943e+004
5
2.3812e+004
6
−5.1025e+004
7
3.1976e+004
8
−4.7858e+004
9
3.5143e+004
10
9.0003e+002
11
2.6945e+003
12
6.4976e+003
13
−6.9254e+003
14
−1.6090e+004
15
1.0767e+004
16
−1.9058e+004
17
7.7990e+003
18
−3.0030e+004
19
−3.0701e+004
20
2.1491e+004
21
2.0819e+004
22
4.4997e+004
23
−5.5561e+004
24
−6.1784e+004
25
3.8774e+004
EDU>>
23.4 ANALYSIS ANALYSIS OF PLATES SUBJECTED SUBJECTED TO IN-PL IN-PLANE ANE LOADS USING CST ELEMENTS A program, called cst.m, is developed for the deflection and stress analysis of plates (in -plane) using CST elements. The program requires the following data: XY -plane) NN = total number of nodes (including the fixed nodes). NE = number of triangular elements. ND = total number of degrees of freedom (including the fixed degrees of freedom). Two degrees of freedom (one parallel to X axis and the other parallel to Y axis) are considered cons idered at each node. NB = bandwidth of the overall stiffness matrix. M = number of load condition. LOC = an array of size NE × 3. LOC(I , J ) denotes the global node number corresponding to J -th -th corner of element I .
691
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
CX,CY = vector arrays of size NN each. CX( I ) and CY(I ) denote the global X and and Y coordinate coordi natess of node I . E = Young s modulus of the material. ANU = Poisson s ratio of the material. T = thickness of the plate. NFIX = number of fixe fixed d degre degrees es of freedo freedom m (zero displacemen displacements). ts). IFIX = a vector array of sixe NFIX. IFIX( I ) denotes the I -th -th fixed degree of freedom number. P = an array of size ND × M representing the global load vectors. ’
’
The array P returned returned from the program cst.m to the main program represents the global displacement vectors with P( I , J ) denoting the I -th -th component of global load in input (or displacement in output) vector in the J -th -th load condition. The program cst.m requires the following subprograms: lambda.m, decomp.m, and solve.m. The following example illustrates the application of the program cst.m.
EXAMPLE 23.4 Find the nodal deflections and element stresses in the plate under tension described in Section 10.3.1 and shown in Figure 10.4(a) using CST elements.
Solution Due to the double symmetry of the plate and the loading, only a quadrant of the plate is used for idealization. The finite element idealization and the node numbers used are indicated in Figure 10.4(b). Two degrees of freedom are considered at each node as shown in Figure 10.4(c). 692
The boundary (symmetry) conditions follow: Q5 = Q 7 = Q 9 = 0 ( X component component of displacement of nodes 3, 4, and 5 is zero) Q10 = Q 12 = Q 14 = 0 (Y component component of displacement of nodes 5, 6, and 7 is zero)
The only load condition is (6, 1) = 1000.0 N P (6, P (4, (4, 1) = 2000.0 N P (2, (2, 1) = 1000.0 N Note
The node numbering scheme used in Figure 10.4(b) leads to a high bandwidth (NB = 18). We can reduce NB to 10 by relabeling the nodes 8, 9, 4, 7, 6, and 5 of Figure 10.4(b) as 4, 5, 6, 7, 8, and 9, respectively. A main program, called main_cst.m, is created to define the input data, call the program cst.m, and display the results. A listing of the program main_cst.m and the results of the analysis are shown below. % Main_CST % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------clear all; close all; clc; format short NN = 9; NE = 8; ND = 18; NB = 18;
% Input data
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
NFIX = 6; M = 1; E = 2e6; ANU = 0.1; LOC = [9, 1, 9, 3, 9, 5, 9, 7; 1, 9, 3, 9, 5, 9, 7, 9; 8, 2, 2, 4, 4, 6, 6, 8]
;
’
CX = [20 10 0 0 0 10 20 20 10] ’; CY = [20 20 20 10 0 0 0 10 10] ’; T = 0.1; IFIX = [5 7 9 10 12 14] ’; P = zeros (18, 1); P(6, 1) = 1000; P(4, 1) = 2000; P(2, 1) = 1000; % End of input data [P, DIFF, SLOC, STRES] = CST (NN, NE, ND, NB, M, LOC, CX, CY, E, ANU, T, NFIX, IFIX, P); % output results fprintf(‘
Noda No dal l di disp spla lace ceme ment nts: s:
fprintf(‘Node
X–component
\n ’); Y –component\n’);
for i=1:NN fprintf(‘%1d
%6.4f
%6.4f\n ’, i, P(2*i –1), P(2*i));
end fprintf(‘\n’); fprintf(‘Stresses in elements:\n ’); fprintf(‘Element
sigma xx
sigma yy
sigma xy\n ’);
for i = 1:NE fprintf(‘%1d
%6.4f
%6.4f
% 6.4f\n ’, i, STRES
(i, 1), STRES (i, 2), STRES (i, 3)); end Nodal displacements: Node
X-component
1
–
2
–
3
–
4
–
5
–
6
–
7
–
8
–
9
–
Y-component
0.0020
0.0200
0.0010
0.0200
0.0000
0.0200
0.0000
0.0100
0.0000
0.0000
0.0010
0.0000
0.0020
0.0000
0.0020
0.0100
0.0010
0.0100
Stresses on elements: Element
sigma xx
sigma yy
sigma xy
1
0.0000
2000.0000
–
2
0.0000
2000.0000
–
0.0000
2000.0000
0.0000
0.0000
2000.0000
0.0000
0.0000
2000.0000
0.0000
2000.0000
–
0.0000
2000.0000
–
0.0000
2000.0000
–
3
–
4
–
5
–
6
–
7
–
8
0.0000 0.0000
0.0000 0.0000 0.0000 0.0000
The results given by the program cst.m can be seen to be identical to the results obtained with hand computations (shown in Table 10.1).
693
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
23.5 ANALYSIS ANALYSIS OF THREE THREE-DIME -DIMENSIONA NSIONAL L STRUC STRUCTURES TURES USING CST ELEMENTS A program, called CST3D.m, is developed for the deflection and stress analysis of 3D boxtype of structures using CST elements. The program requires the following data: nelt lto ot nel elm m nel els s nnel ndof nnode sdof effd ef fdof of topdof e do f emodule poisson NB FF CX, CY, CZ gcoord nodes
694
ISTRES bcdof nmod nm ode e
total number of triangula larr elements numb nu mber er of me mem mbr bran ane e el elem emen ents ts (us used ed in top an and d bo bott ttom om su surf rfac aces es)) numb nu mber er of sh shea earr el elem emen ents ts (us used ed in ve vert rtic ical al si side de pa pane nels ls)) number of nodes per element number of degrees of freedom per node total number of nodes in the structure total number of degrees of freedom in the structure ( =nn nnod ode e * nd ndof) of) tota to tall nu numb mber er of fr free ee de degr gree ees s of fr free eedo dom m (e (exc xclu ludi ding ng fi fixe xed d do dof) f) number of free dof on top surface number of degrees of freedom per element (= nnel * ndof) Young s modulus Poisson s ratio numb nu mber er of el elem emen entts nea earr ro root ot (in whi hich ch st stre ress sses es ar are e re req qui uire red d) applied loads; FF( I , J ) ) = load applied along I -th degree of freedom in J -th -th load condition global X , Y , Z coordinates of nodes; CX( I ), CY( I ), CZ( I ) = global X , Y , Z coordinates coord inates of node I global X , Y , Z coordinates of nodes 1, 2, , nnode j -th nodal connectivity array; nodes( i , j ) ) = global node number of j -th local node (corner) of element i ISTRES(I ) = I -th element number in which stress is required fixed dof numbers numb nu mber er of ei eige genv nval alue ues s re requ quir ired ed (n (not ot co comp mput uted ed in th this is pr prog ogra ram) m) ’
’
…
CST elements with three degrees of freedom per node as shown in Figure 10.2 are considered in the modeling. To illustrate the application of the program CST3D.m, the following example is considered.
EXAMPLE 23.5 Find the nodal deflections and element stresses in the box-beam described in Section 10.3.3 and shown in Figure 10.7 using CST elements.
Solution The finite element idealization using CST elements is shown in Figure 10.8. A main program, called main_cst3D.m, is created to define the input data, call the program cst3D.m, and display the results. A listing of the program main_CST3D. main_CST3D.m m and the results of the analysis are shown below. % FEM analysis of 3_D STRUCTURE USING CST ELEMENT % MAIN_CST3D.m % SUBPART: CST3D.m % ------------------------------------------------% WRITTEN BY SINGIRESU S. RAO % THE FINITE ELEMENT METHOD IN ENGINEERING % ------------------------------------------------% dof ARE 3 PER NODE % INPUT PARAMETER DATA clear all; close all; clc; %units: inch (distance) and Ib (force) neltot=40;
% total no. of elements
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
nelm=20;
% no. of membrane elements
nemp=10;
% element of top plane surfaces
nels=20;
% no. of shear elements
nnel=3;
% no. of nodes per element
ndof=3;
% no. of dofs per node
nnode=24;
% total number of nodes in system
sdof sd of=n =nno node de*n *ndo dof; f;
% to tota tal l sy syst stem em do dofs fs
effdof=60;
% total no. of free dofs
topdof=30;
% no. of free dofs on top surface
edof ed of=n =nne nel* l*nd ndof of; ;
% do dof f pe per r el elem emen ent t
emodule=30e6;
% Young ’s modulus
poisson=0.3;
% Poisson ’s ratio
for ii=1:nelm; tt (ii) = 1;
% thickness
end for ii= (nel (nelm+1) m+1) :nel :neltot; tot; tt(ii)= 1;
% thickness
end rho=0. rho =0.28/ 28/384 384; ;
% wei weight ght den densit sity y (un (unit it wei weight ght/gr /gravi avitat tation ional al con consta stant) nt)
nmode=3; NB=4;
% No. of elements near root (for stress)
FF=zeros FF=z eros (effdof, (effdof, 1); % applied applied forces along along free dofs FF (3, 1) =
–
5000;
FF (6, 1) =
–
5000;
% % FF (i, 1) = Load applied along dof i (1 = load condition number)
695
% % --------------------------------------% input data for nodal coordinates (only CST elements) % --------------------------------------% model 1 % CX = X coordinates of all nodes % CY = Y coordinates of all nodes % CZ = Z coordinates of all nodes CX= [60, 60, 48, 48, 36, 36, 24, 24, 12, 12, 0, 0, 60, 60, 48, 48, 36, 36, 24, 24, 12, 12, 0, 0]; CY=[18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0, 18, 0]; CZ=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]; % % ---------------------------------------------------------------% input data for nodal coordinates in vector from------% gcood = (X, Y, Z ) coordinates of nodes 1, 2..., nnode % ---------------------------------------------------------------gcoord=[60 18 0;60 0 0;48 18 0;48 0 0;36 18 0;36 0 0;24 18 0;24 0 0;12 18 0;12 0 0;0 18 0;0 0 0;... 60 18 12;60 0 12;48 18 12;48 0 12;36 18 12;36 0 12;24 18 12;24 0 12; ... 12 18 12;12 0 12;0 18 12;0 0 12]; % ---------------------------------------------------------------% input data for nodal connectivity for each element % nodes (i, j), i=element no., j=global nodes of local corners 1, 2, 3 of % elements 1, 2, ..., neltot % ----------------------------------------------------------------
(Continued )
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
EXAMPLE 23.5
(Continued )
nodes=[3 2 1; 2 3 4; 5 4 3; 4 5 6; 7 6 5; 6 7 8; 9 8 7; 8 9 10; 11 10 9; 10 11 12; ... 15 14 13; 14 15 16; 17 16 15; 16 17 18; 19 18 17; 18 19 20; 21 20 19; 20 21 22; 23 22 21; 22 23 24; ... 4 14 2; 14 4 16; 6 16 4; 16 6 18; 8 18 6; 18 8 20; 10 20 8; 20 10 22; 12 22 10; 22 12 24; ... 3 13 1; 13 3 15; 5 15 3; 15 5 17; 7 17 5; 17 7 19; 9 19 7; 19 9 21; 11 21 9; 21 11 23]; % ISTRES=array of element numbers in which stresses are to be found ISTRES=[10 20 30 40]; % -----------------------------------------% input data for boundary conditions % -----------------------------------------bcdof=[31 32 33 34 35 36 67 68 69 70 71 72]; % bedof = fixed dof numbers-------% en e nd of o f da d ata----------------------------[disp, STRESS]=CST3D (neltot, nelm, nemp, nels, nnel, ndof, nnode, sdof, effdof, topdof, edof, emodule, p oisson, tt, ... rho, nmode, NB, FF, CX, CY, CZ, gcoord, nodes, ISTRES, bcdof); % ************************ % OUTPUT:= fprintf ( ‘
Nodal Nod al dis displa placem cement ents s
fprintf ( ‘No Node de
X-di Xdisp sp
Y-di Ydisp sp
\n ’);
Z-di Zdisp sp\n \n ’);
for i=1:1:20
696
fprintf ( ‘%1d
%6.8f
%6.8f
%6.8f\n ’,
i, disp (3* (i –1)+1), disp (3*(i –1)+2), disp (3* (i –1)+3)); end fprintf ( ‘
\n’);
fprintf ( ‘
Stre St ress ss in th the e st stru ruct ctur ure e
fprintf ( ‘El Elem emen ent t
\n ’);
Prin Pr inci cipa pal l St Stre ress ss 1
Prin Pr inci cipa pal l St Stre ress ss 2
\n’); for IJK=1:1:NB; ii=ISTRES (IJK); %%% ISTRES is the array of element numbers in which stresses are to be found for jj=1:1:3; stressp (IJK, jj) = STRESS (jj, IJK); end A1=(STRESS (1, IJK) + STRESS (2, IJK))/2; A2=sqrt (((STRESS (1, IJK) − STRESS (2, IJK))/2) ^2+STRESS (3, IJK) ^2); boxbeam_stress (IJK, 1) = A1+A2; boxbeam_stress (IJK, 2) = A1 −A2; boxbeam_stress; fprintf ( ‘ %1d
% 6.8f
% 6.8f\n ’, ii,
boxbeam_stress (IJK, 1), boxbeam_stress (IJK, 2)); end Nodal displacements Node
X-disp X-
Y-disp
Z-disp
1
−0.00143909
0.00009891
−0.01149128
2
−0.00142851
0.00005433
−0.01128080
3
−0.00135326
0.00009942
−0.00824795
4
−0.00133865
0.00003701
−0.00805697
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
5
−0.00118348
0.00010738
−0.00530461
6
−0.00115996
0.00000364
−0.00514629
7
−0.00090429
0.00011121
−0.00280302
8
−0.00087101
−0.00003803
−0.00269616
9
−0.00051266
0.00009874
−0.00096246
10
−0.00047439
11
0.00137522
−0.00007322 −0.00008099
−0.00091898 −0.01131236
12
0.00136999
−0.00004809
−0.01109938
13
0.00131777
−0.00008645
−0.00820368
14
0.00130824
−0.00003279
−0.00801115
15
0.00115913
−0.00009939
−0.00526670
16
0.00114000
−0.00000073
−0.00510831
17
0.00088969
−0.00010641
−0.00276502
18
0.00086045
0.00003853
−0.00266030
19
0.00050770
−0.00009675
−0.00092457
20
0.00047142
0.00007256
−0.00089349
Element
Principal Stress 1
Principal Stress 2
10
−799.42490921
−1313.09508435
20
1304.82999848
794.41165622
30
1295.10699450
850.47289482
40
1394.79009474
897.81264906
Stress in the structure
The results given by the program CST3D.m can be seen to be identical to the results shown in Table 10.3.
697
23.6 TEMPE TEMPERATURE RATURE DISTRIBUTION DISTRIBUTION IN ONE-DI ONE-DIMENSI MENSIONAL ONAL FINS To find the temperature distribution in a 1D fin (details given in Section 14.2), a program called heat1.m is developed. The program requires the following quantities: NN = number of nodes (input). NE = number of elements (input). NB = semiba semibandwid ndwidth th of the overall matrix GK (input (input). ). IEND = 0: means no heat convection from free end. IEND = any nonzero integer: means that heat convection occurs from the free end (input). CC = thermal conductivity of the material, k (input). H = convection heat transfer coefficient, h (input). TINF = atmospheric temperature, T (input). QD = strength of heat source, q (input). Q = boundary heat flux, q (input). NODE = array of size NE × 2; NODE(I , J ) = global node number corresponding to J -th -th (right-hand side) end of element I (input). XC = array of size NN; XC( I ) = x coordinate coordinate of node I (input). A = array of size NE; A( I ) = area of cross-section of element I (input). (input). PERI = array of size NE; PERI( I ) = perimeter of element I (input). TS = array of size NN; TS( I ) = prescribed value of temperature of node I (input). (input). If the temperature tempe rature of node I is not specified, then the value of TS( I ) is to be given as 0.0. ∞
The program heat1.m requires the following subprograms: adjust.m, decomp.m, and solve.m. The following example illustrates the use of the program heat1.f.
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
EXAMPLE 23.6 Find the temperature distribution in the 1D fin considered in Example 14.4 and shown in Figure 14.1 with two finite elements.
Solution A main program called main_heat1.m is created for solving the problem. The listing of the program main_heat1.m and the nodal temperatures given by the program are shown below. The results can be seen to agree with the results obtained in Example 14.4 with hand computations. clc; clear all; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------NN=3; NE=2; NB=2; IEND=1; CC=70; H=5; TINF=40; QD=0; Q=0; NODE=[1 2; 2 3] ; XC= [0; 2.5; 5]; A=[3.1416; 3.1416]; PERI=[6.2832; 6.2832];
698
TS=[140; 0; 0]; PLOAD = HEAT1 (NN, NE, NB, IEND, CC, H, TINF, QD, Q, NODE, XC, A, PERI, TS); fprintf ( ‘%s\n’, ‘Node Temperature ’) for i = 1:NN fprintf ( ‘%2.0f %15.4f\n ’, i, PLOAD (i)) end Node
Temperature
1
140.0000
2
80.4475
3
63.3226
23.7 TEMPERATURE TEMPERATURE DISTRIBUTION DISTRIBUTION IN ONE-D ONE-DIMENS IMENSIONAL IONAL FINS INCLUDING RADIATION HEAT TRANSFER To find the temperature distribution in a 1D fin including radiation heat transfer (details given in Section 14.6), a program called radiat.m is developed. The program requires the following quantities: EPSIL = emissivity of the surface (input) EPS = a small number of the order of 10 6 for testing the convergence of the method (input) SIG = Stefan Boltzmann constant = 5.7 × 10 8 W/m2-K 4 (input) ITER = number of iterations used for obtaining convergence of the solution (output) –
–
–
The other quantities NN, NE, NB, IEND, CC, H, TINF, QD, NODE, P, PLOAD, XC, A, PERI, and TS have the same meaning as in the case of the subprogram heat1.m.
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
The program radiat.m requires the following subprogr subprograms: ams: adjust.m, decomp.m, and solve.m. The following example illustrates the use of the program radiat.f.
EXAMPLE 23.7 Find the temperature distribution in the 1D fin considered in Example 14.13 using one finite element.
Solution A main program called main_radiat.m is created for solving the problem. The listing of the program main_radiat.m and the nodal temperatures given by the program are given below. It can be seen that the present results agree with those obtained in Example 14.13 using hand computations. clear all; clc; close all; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------fprintf(‘%s\n’, ‘Iteration Error Nodal Tempature ’) P = zeros (2, 1); PLOAD = zeros (2, 1); GK = zeros (2, 2); EL = zeros (1, 1); PERI = zeros (1, 1); NN = 2; NE = 1; NB = 2; IEND = 0; CC = 70; H = 5; TINF = 40; QD = 0; Q=0; EPSIL = 0.1; EPS = 0.0001; SIG = 5.7e –8; NODE = [1, 2]; XC = [0;5];
699
A = 3.1416; PERI = 6.2832; TS = [140;0]; PLOAD = radiat (NN, NE, NB, IEND, CC, H, TINF, QD, Q, EPSIL, EPS, SIG, NODE, XC, A, PERI, TS, P, PLOAD, GK,EL); Iteration
Error
Nodal
Temperature
1
1.0000
140.0000
58.4783
2
0.0145
140.0000
52.2292
3
0.0002
140.0000
52.3106
4
0.0000
140.0000
52.3095
23.8 TWO-D TWO-DIMENS IMENSIONAL IONAL HEAT TRANSFER ANALYSIS ANALYSIS To find the solution of a 2D heat transfer problem, such as the temperature distribution in a plate (details given in Section 15.2), a program called heat2.m is developed using linear triangular elements. The program requires the following quantities: NN = number of nodes (input). NE = number of triangular elements (input). NB = semibandwidth of the overall matrix (input). NODE = array of size NE × 3; NODE( I , J ) = global node number corresponding to the -th corner of element I J -th I (input). XC, YC = array of size NN, XC( I ), ), YC(I ) = x and and y coordinates coordinates of node I (input). (input). CC = thermal conductivity of the material, k (input). q for element I I (input). QD = array of size NE; QD( I ) = value of q ICON = array of size NE; ICON = 1 if element I lies on convection boundary and = 0 otherwise (input).
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
NCON = array of size NE × 2; NCON(I , J ) = J -th -th node of element I I that lies on convection boundary (input). Need not be given if ICON( I ) = 0 for all I . I (input). Q = array of size NE; Q( I ) = magnitude of heat flux for element I TS = array of size NN; TS( I ) = specified temperature for node I (input). (input). If the temperature of node I is is not specified, then the value of TS( I ) is to be set equal to 0.0. H = array of size NE; H( I ) = convective heat transfer coefficient for element I (input). (input). TINF = array of size NE; TINF( I ) = ambient temperature for element I (input). The progra program m heat2. heat2.m m require requiress the followi following ng subprog subprograms: rams: adjust.m, decomp.m, and solve solve.m. .m. The follow following ing exam example ple illus illustrates trates the use of the program heat2.f.
EXAMPLE 23.8 Find the temperature distribution in the square plate with uniform heat generation considered in Example 15.2 using triangular finite elements.
Solution A main program called main_heat2.m is created for solving the problem. The listing of the program main_ heat2.m and the nodal temperatures given by the program are shown below. clear all; clc; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------NN = 9; NE = 8;
700
NB = 4; CC = 30; Node = [1, 4, 2, 5, 4, 7, 5, 8; 2, 2, 3, 3, 5, 5, 6, 6; 4, 5, 5, 6, 7, 8, 8, 9]
;
’
XC = [0.0, 5.0, 10.0, 0.0, 5.0, 10.0, 0.0, 5.0, 10.0] ’; YC = [0.0, 0.0, 0.0, 5.0, 5.0, 5.0, 10.0, 10.0, 10.0] ’; QD = [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]
;
’
ICON = [0, 0, 0, 0, 0, 0, 0, 0] ’; Q = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
;
’
TS = [0.0, 0.0, 50.0, 0.0, 0.0, 50.0, 50.0, 50.0, 50.0] H = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
;
’
;
’
TINF = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ’; PLOAD = HEAT2(NN, NE, NB, NODE, XC, YC, CC, QD, ICON, Q, TS, H, TINF); fprintf(‘
Noda No dal l No No. .
Noda No dal l te temp mper erat atur ure\ e\n n ’)
for i=1:length (PLOAD) fprintf(‘%8.0f %20.4f\n ’, i, PLOAD(i)) end Nodal Nod al No.
Nodal Nod al tem temper peratu ature re
1
133.3333
2
119.4444
3
50.0000
4
119.4444
5
105.5556
6
50.0000
7
50.0000
8
50.0000
9
50.0000
The results can be seen to be identical to those obtained in Example 15.2 using hand computations.
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
23.9 CONFINED CONFINED FLUID FLOW AROUND AROUND A CYLIN CYLINDER DER USING POTENTIAL FUNCTION APPROACH To find the potential function distribution for confined inviscid and incompressible fluid flow around a cylinder (details given in Section 18.3), a program called phiflo.m is developed. The potential function approach with linear triangular elements is used. The program requires the following quantities: NN = number of nodes (input). NE = number of elements (input). NB = semiba semibandwid ndwidth th of the overall matrix GK (input (input). ). XC, YC = array of size NN; XC( I ), ), YC(I ) = x and and y coordinates of node I (input). (input). NODE = array of size NE × 3; NODE( I , J ) = global node number corresponding to J -th -th cornerr of elem corne element ent I I (input). GK = array of size NN × NB used to store the matrix ½ K . ! ~ P = array of size NN used to store the vector P . ~ leaving the element I through one of Q = array of size NE; Q( I ) = velocity of the fluid its edges (input). A = array of size NE; A( I ) = area of element I . PS = array of size NN; PS( I ) = specified value of ϕ at node I . If the value of ϕ is not specified at node I , then the value of PS( I ) is to be set equal to 1000.0 (input). ICON = array of size NE; ICON( I ) = 1 if element lies along the boundary on which the velocity is specified, and = 0 otherwise (input). NCON = array of size NE × 2; NCON(I , J ) = J -th -th node of element I I that lies on the boundary on which the velocity is specified. Need not be given if ICON( I ) = 0 for all (input). I (input). PLOAD = array of size NN × 1 used to store the final right-hand-side vector. It represents repres ents the solu solution tion vector (nodal values values of ϕ) upon return from the subroutine PHIFLO. –
The program phiflo.m requires requires the follow following ing subprograms: subprograms: adjust.m, adjust.m, decomp.m, and solve.m. solve.m. The following example example illustrates illustrates the use of the program phiflo.f.
EXAMPLE 23.9 Find the potential function distribution in the confined flow around a cylinder considered in Example 18.4 using triangular finite elements.
Solution A main program called main_phiflo.m is created for solving the problem. The listing of the program main_phiflo.m and the nodal values of potential function given by the program are shown below. clear all; clc; close all; % ------------------------------------------------% Written by Singiresu S. Rao % The Finite Element Method in Engineering % ------------------------------------------------A = zeros (13, 1) ; PLOAD = zeros (13, 1) ; P = zeros (13, 1) ; NN = 13; NE = 13; NB = 7; XC = [0.0, 5.0, 9.17, 12.0, 0.0, 5.0, 9.17, 12.0, 0.0, 5.0, 8.0, 9.17, 12.0] ; YC = [8.0, 8.0, 8.0, 8.0, 4.0, 4.0, 5.5, 5.5, 0.0, 0.0, 0.0, 2.83, 4.0] ; ICON = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] ;
(Continued )
701
PART 7 ABAQUS and ANSYS Software and MATLAB®Programs for Finite Element Analysis
EXAMPLE 23.9
(Continued )
NODE = [5, 6, 6, 7, 7, 7, 5, 9, 10, 11, 6, 7, 7; . . . 1, 1, 2, 2, 3, 4, 6, 6, 6, 6, 7, 12, 8; . . . 6, 2, 7, 3, 4, 8, 9, 10, 11, 12, 12, 13, 13] ’; NCON = [5, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0; . . . 1, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0; . . . 0 0 0 0 0 0 0 0 0 0 0 0 0 ] ’; GK = zeros (NN, NB) ; for I = 1:NN PS (I) =
1000.0;
–
end PS (4)=0.0; PS (8)=0.0; PS (13)=0.0; Q = [–1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
–
PLOAD = Phiflo (XC, YC, NODE, ICON, NCON, GK, A, PS, PLOAD, Q, P, NN, NE, NB); fprintf ( ‘%s\n’, ‘Node Potential function ’) for i = 1:NN fprintf ( ‘%4.0f %15.4f\n ’, i, PLOAD (i)) end Node No de
702
Pote Po tent ntia ial l fu func ncti tion on
1
14.9004
2
9.6754
3
4.4818
4
0.0000
5
15.0443
6
10.0107
7
4.7838
8
0.0000
9
15.2314
10
10.5237
11
8.4687
12
6.2288
13
0.0000
23.10 TORSIO TORSION N ANALYSIS OF SHAFTS SHAFTS To find the stress function distribution in a solid prismatic shaft subjected to a twisting moment (details given in Section 20.3), a program called torson.m is developed. Linear triangular elements are used for modeling the cross-section of the shaft. The program requires the following quantities: NN = number of nodes. NE = number of elements. NB = semibandwidth of the overall matrix GK. XC, YC = array of size NN; XC( I ), YC(I ) = x and y coordinates of node I . NFIX = number of nodes lying on the outer boundary (number of nodes at which 0).. ϕ = 0) NODE = array of size NE × 3; NODE(I , J ) = global node number corresponding to J -th -th corner of eleme element nt I . G = shear modulus of the material. THETA = angle of twist in degrees per 100-cm length.
CHAPTER 23 CHAPTER MATLAB Programs for Finite Element Analysis
IFIX = array of sixe NFIX; IFIX( I ) = I -th -th node number at which ϕ = 0. A = array of size NE denoting the areas of elements; A( I ) = area of I -th triangular I -th element. The program torson.m requires the following subprograms: adjust.m, decomp.m, and solve.m. solv e.m. The follo following wing program illustrates illustrates the use of the program torson.f.
EXAMPLE 23.10 Find the stresses developed in prismatic shaft with a 4 cm × 4 cm cross-section that is subjected to a twist of 2 degrees per meter length using triangular finite elements. This example is the same as Example 20.1.
Solution A main program called main_torson.m is created for solving the problem. The listing of the program main_torson.m, the nodal values of stress function, and the shear stresses developed in the elements given by the program are shown below. clear all; clc; close all; %
——————————————————————————————————————————————————
% Written by Singiresu S. Rao % The Finite Element Method in Engineering %
——————————————————————————————————————————————————
NN = 6; NE = 4; NB = 5; NFIX = 3; G = 0.8e6; THETA = 2.0; NODE = [2 4 5 6;3 5 6 3;1 2 2 2] ’; XC = [2 1 2 0 1 2]; YC = [2 1 1 0 0 0]; IFIX = [1 3 6]; A = zeros (4, 1); PLOAD = Torson (NN, NE, NB, NFIX, G, THETA, NODE, XC, YC, IFIX, A); fprintf ( ‘%s\n’, ‘Node Value of stress stress funct function ion ’) for i = 1:NN fprintf ( ‘%4.0f %15.4f\n ’, i, PLOAD (i)) end Node No de
Valu Va lue e of st stre ress ss fu func ncti tion on
1
0.0000
2
418.8482
3
0.0000
4
651.5416
5
465.3869
6
0.0000
PROBLEMS 23.1 Solve Problem Problem 7.11 7.11 using the MATLAB program program choleski.m choleski.m.. 23.2 Modify Modify the matrix and the right hand side vector considered considered in Problem Problem 6.22 to incorporate incorporate the boundary conditions T 5 = T 6 = 50°C. Use the MATLAB program adjust.m. 23.3 Find the nodal displacemen displacements ts and element stresses stresses in the truss considere considered d in Probl Problem em 9.7 and Figure 9.18 using the MATLAB program truss3D.m. 23.4 Find the stresses stresses developed developed in the plate shown shown in Figure 10.16 10.16 using at least 10 CST elements. elements. Use the MATLAB program cst.m. 23.5 Find the nodal displacemen displacements ts and element stresses stresses developed developed in the box beam described described in Section 10.3.3 10.3.3 and Figure 10.7 using the finite element model shown in Figure 10.8. Use the MATLAB program CST3D.m. 23.6 Solve Problem Problem 14.8 14.8 using the MATLAB MATLAB program program heat1.m. heat1.m. 23.7 Solve Problem Problem 14.8 by including including radiation radiation heat transfer from the lateral lateral and end surfaces of the fin using the MATLAB program radiat.m. Assume ε = 0.1.
703