Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword or section
Like this
0 of .
Results for:
No results containing your search query
P. 1
Matlab Fem

Matlab Fem

Ratings: (0)|Views: 2,520 |Likes:
Published by sohailrao

More info:

Published by: sohailrao on Mar 24, 2009
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





Programing the Finite Element Method withMatlab
Jack Chessa
3rd October 2002
1 Introduction
The goal of this document is to give a very brief overview and directionin the writing of finite element code using Matlab. It is assumed that thereader has a basic familiarity with the theory of the finite element method,and our attention will be mostly on the implementation. An example finiteelement code for analyzing static linear elastic problems written in Matlabis presented to illustrate how to program the finite element method. Theexample program and supporting files are available at
1.1 Notation
For clarity we adopt the following notation in this paper; the bold italics font
denotes a vector quantity of dimension equal to the spacial dimension of theproblem
the displacement or velocity at a point, the bold non-italicizedfont
denotes a vector or matrix which is of dimension of the number of unknowns in the discrete system
a system matrix like the stiffness matrix,an uppercase subscript denotes a node number whereas a lowercase subscriptin general denotes a vector component along a Cartesian unit vector. So, if 
is the system vector of nodal unknowns,
is a displacement vector of node
is the component of the displacement at node
in the
direction, or
. Often Matlab syntax will be intermixed with mathematical notation
Graduate Research Assistant, Northwestern University (j-chessa@northwestern.edu)
which hopefully adds clarity to the explanation. The typewriter font,
,is used to indicate that Matlab syntax is being employed.
2 A Few Words on Writing Matlab Programs
The Matlab programming language is useful in illustrating how to programthe finite element method due to the fact it allows one to very quickly codenumerical methods and has a vast predefined mathematical library. This isalso due to the fact that matrix (sparse and dense), vector and many linearalgebra tools are already defined and the developer can focus entirely onthe implementation of the algorithm not defining these data structures. Theextensive mathematics and graphics functions further free the developer fromthe drudgery of developing these functions themselves or finding equivalentpre-existing libraries. A simple two dimensional finite element program inMatlab need only be a few hundred lines of code whereas in Fortran or C++one might need a few thousand.Although the Matlab programming language is very complete with re-spect to it’s mathematical functions there are a few finite element specifictasks that are helpful to develop as separate functions. These have beenprogramed and are available at the previously mentioned web site.As usual there is a trade off to this ease of development. Since Matlabis an interpretive language; each line of code is interpreted by the Matlabcommand line interpreter and executed sequentially at run time, the runtimes can be much greater than that of compiled programming languageslike Fortran or C++. It should be noted that the built-in Matlab functionsare already compiled and are extremely efficient and should be used as muchas possible. Keeping this slow down due to the interpretive nature of Matlabin mind, one programming construct that should be avoided at all costs is thefor loop, especially nested for loops since these can make a Matlab programsrun time orders of magnitude longer than may be needed. Often for loopscan be eliminated using Matlab’s vectorized addressing. For example, thefollowing Matlab code which sets the row and column of a matrix
to zeroand puts one on the diagonal
for i=1:size(A,2)A(n,i)=0;endfor i=1:size(A,1)A(i,n)=0;end
should never be used since the following code
does that same in three interpreted lines as opposed to
+1 interpretedlines, where
is a
dimensional matrix. One can easily see that this canquickly add significant overhead when dealing with large systems (as is oftenthe case with finite element codes). Sometimes for loops are unavoidable,but it is surprising how few times this is the case. It is suggested that afterdeveloping a Matlab program, one go back and see how/if they can eliminateany of the for loops. With practice this will become second nature.
3 Sections of a Typical Finite Element Pro-gram
A typical finite element program consists of the following sections1. Preprocessing section2. Processing section3. Post-processing sectionIn the preprocessing section the data and structures that define the particularproblem statement are defined. These include the finite element discretiza-tion, material properties, solution parameters
. The processing section iswhere the finite element objects
stiffness matrices, force vectors
arecomputed, boundary conditions are enforced and the system is solved. Thepost-processing section is where the results from the processing section areanalyzed. Here stresses may be calculated and data might be visualized. Inthis document we will be primarily concerned with the processing section.Many pre and post-processing operations are already programmed in Matlaband are included in the online reference; if interested one can either look di-rectly at the Matlab script files or type
’function name’ 
at the Matlabcommand line to get further information on how to use these functions.3

Activity (31)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Abhishek Kumar liked this
Edg Miranda liked this
Miguelmp liked this
Zoran Dimovski liked this
hunter707 liked this
Bui Thedung liked this
shahirrp liked this
shnpls liked this

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->