Introduction To Finite Element Method-University of Colorado at Boulder
Introduction To Finite Element Method-University of Colorado at Boulder
Introduction To Finite Element Method-University of Colorado at Boulder
Overview
11
Chapter 1: OVERVIEW
TABLE OF CONTENTS
Page
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.
1.
1.
Book Scope
. . . . . . . . . . . . . . . . . . . . .
Where the Material Fits
. . . . . . . . . . . . . . . .
1.2.1
Top Level Classification . . . . . . . . . . . . . .
1.2.2
Computational Mechanics . . . . . . . . . . . . .
1.2.3
Statics versus Dynamics . . . . . . . . . . . . . .
1.2.4
Linear versus Nonlinear
. . . . . . . . . . . . .
1.2.5
Discretization Methods . . . . . . . . . . . . . .
1.2.6
FEM Formulation Levels . . . . . . . . . . . . .
1.2.7
FEM Choices
. . . . . . . . . . . . . . . . .
1.2.8
Finally: What The Book Is About . . . . . . . . . .
What Does a Finite Element Look Like? . . . . . . . . . . .
The FEM Analysis Process
. . . . . . . . . . . . . . .
1.4.1
The Physical FEM . . . . . . . . . . . . . . . .
1.4.2
The Mathematical FEM
. . . . . . . . . . . . .
1.4.3
Synergy of Physical and Mathematical FEM . . . . . . .
1.4.4
Streamlined Idealization and Discretization . . . . . . .
Method Interpretations
. . . . . . . . . . . . . . . . .
1.5.1
Physical Interpretation . . . . . . . . . . . . . .
1.5.2
Mathematical Interpretation
. . . . . . . . . . . .
Keeping the Course . . . . . . . . . . . . . . . . . .
*What is Not Covered
. . . . . . . . . . . . . . . . .
The Origins of the Finite Element Method . . . . . . . . . .
Recommended Books for Linear FEM . . . . . . . . . . . .
1.9.1
Hasta la Vista, Fortran . . . . . . . . . . . . . .
Notes and Bibliography
. . . . . . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . . . . . . . . . . .
12
13
13
13
13
15
15
15
16
17
17
17
19
19
111
111
113
113
113
114
115
115
116
116
116
117
118
119
1.2
The branch of Physics that studies the effect of forces and energy on physical bodies.1
The practical application of that science to the design, construction or operation of material
systems or devices, such as machines, vehicles or structures.
These flavors are science and engineering oriented, respectively. But dictionaries are notoriously
archaic. For our objectives it will be convenient to distinguish four flavors:
Theoretical
Applied
Mechanics
Computational
Experimental
(1.1)
Theoretical mechanics deals with fundamental laws and principles studied for their intrinsic scientific value. Applied mechanics transfers this theoretical knowledge to scientific and engineering
applications, especially as regards the construction of mathematical models of physical phenomena.
Computational mechanics solves specific problems by model-based simulation through numerical
methods implemented on digital computers. Experimental mechanics subjects the knowledge derived from theory, application and simulation to the ultimate test of observation.
Remark 1.1. Paraphrasing an old joke about mathematicians, one may define a computational mechanician
as a person who searches for solutions to given problems, an applied mechanician as a person who searches
for problems that fit given solutions, and a theoretical mechanician as a person who can prove the existence
of problems and solutions. As regards experimentalists, make up your own joke.
1
Here the term bodies includes all forms of matter, whether solid, liquid or gaseous; as well as all physical scales, from
subatomic through cosmic.
13
Chapter 1: OVERVIEW
COMPUTATIONAL MECHANICS
Finite
Element
Methods
Theoretical
and Applied
Mechanics
Applied
Mathematics
& Numerical
Analysis
Computer &
Information
Sciences
Nanomechanics
Micromechanics
Computational Mechanics
Continuum mechanics
Systems
(1.2)
Nanomechanics deals with phenomena at the molecular and atomic levels. As such, it is closely
related to particle physics and chemistry. At the atomic scale it transitions to quantum mechanics.
Micromechanics looks primarily at the crystallographic and granular levels of matter. Its main
technological application is the design and fabrication of materials and microdevices.
Continuum mechanics studies bodies at the macroscopic level, using continuum models in which the
microstructure is homogenized by phenomenological averaging. The two traditional areas of application are solid and fluid mechanics. Structural mechanics is a conjoint branch of solid mechanics,
since structures, for obvious reasons, are fabricated with solids. Computational solid mechanics favors a applied-sciences approach, whereas computational structural mechanics emphasizes
technological applications to the analysis and design of structures.
Computational fluid mechanics deals with problems that involve the equilibrium and motion of
liquid and gases. Well developed related subareas are hydrodynamics, aerodynamics, atmospheric
physics, propulsion, and combustion.
Multiphysics is a more recent newcomer.2 This area is meant to include mechanical systems that
transcend the classical boundaries of solid and fluid mechanics. A key example is interaction
2
This unifying term is in fact missing from most dictionaries, as it was introduced by computational mechanicians in the
1970s. Several multiphysics problems, however, are older. For example, aircraft aeroelasticity emerged in the 1920s.
14
1.2
between fluids and structures, which has important application subareas such as aeroelasticity and
hydroelasticity. Phase change problems such as ice melting and metal solidification fit into this
category, as do the interaction of control, mechanical and electromagnetic systems.
Finally, system identifies mechanical objects, whether natural or artificial, that perform a distinguishable function. Examples of man-made systems are airplanes, building, bridges, engines, cars,
microchips, radio telescopes, robots, roller skates and garden sprinklers. Biological systems, such
as a whale, amoeba, virus or pine tree are included if studied from the viewpoint of biomechanics.
Ecological, astronomical and cosmological entities also form systems.3
In the progression of (1.2), system is the most general concept. Systems are studied by decomposition: its behavior is that of its components plus the interaction between the components. Components are broken down into subcomponents and so on. As this hierarchical process continues
the individual components become simple enough to be treated by individual disciplines, but their
interactions may get more complex. Thus there are tradeoff skills in deciding where to stop.4
1.2.3. Statics versus Dynamics
Continuum mechanics problems may be subdivided according to whether inertial effects are taken
into account or not:
Time Invariant
Statics
(1.3)
Continuum mechanics
Quasi-static
Dynamics
In statics inertial forces are ignored or neglected. These problems may be subclassified into time
invariant and quasi-static. For the former time need not be considered explicitly; any time-like
response-ordering parameter (should one be needed) will do. In quasi-static problems such as
foundation settlements, creep flow, rate-dependent plasticity or fatigue cycling, a more realistic
estimation of time is required but inertial forces are ignored as long as motions remain slow.
In dynamics the time dependence is explicitly considered because the calculation of inertial (and/or
damping) forces requires derivatives respect to actual time to be taken.
1.2.4. Linear versus Nonlinear
A classification of static problems that is particularly relevant to this book is
Statics
Linear
Nonlinear
(1.4)
Linear static analysis deals with static problems in which the response is linear in the cause-andeffect sense. For example: if the applied forces are doubled, the displacements and internal stresses
also double. Problems outside this domain are classified as nonlinear.
3
Except that their function may not be clear to us. What is it that breathes fire into the equations and makes a universe
for them to describe? The usual approach of science of constructing a mathematical model cannot answer the questions
of why there should be a universe for the model to describe. Why does the universe go to all the bother of existing?
(Stephen Hawking).
Thus in breaking down a car engine, say, the decomposition does not usually proceed beyond the components that may
be bought at a automotive shop.
15
Chapter 1: OVERVIEW
Spectral Method
Mesh-Free Method
(1.5)
For linear problems finite element methods currently dominate the scene, with boundary element
methods posting a strong second choice in selected application areas. For nonlinear problems the
dominance of finite element methods is overwhelming.
Classical finite difference methods in solid and structural mechanics have virtually disappeared
from practical use. This statement is not true, however, for fluid mechanics, where finite difference discretization methods are still important although their dominance has diminished over
time. Finite-volume methods, which focus on the direct discretization of conservation laws, are
favored in highly nonlinear problems of fluid mechanics. Spectral methods are based on global
transformations, based on eigendecomposition of the governing equations, that map the physical
computational domain to transform spaces where the problem can be efficiently solved.
A recent newcomer to the scene are the mesh-free methods. These are finite different methods on
arbitrary grids constructed using a subset of finite element techniques
1.2.6. FEM Formulation Levels
The term Finite Element Method actually identifies a broad spectrum of techniques that share
common features. Since its emergence in the framework of the Direct Stiffness Method (DSM)
over 19561964, [765,768] FEM has expanded like a tsunami, surging from its origins in aerospace
structures to cover a wide range of nonstructural applications, notably thermomechanics, fluid
dynaamics, and electromagnetics. The continuously expanding range makes taxology difficult.
Restricting ourselves to applications in computational solid and structural mechanics (CSSM), one
classificaation of particular relevance to this book is
(1.6)
The MoM formulation is applicable to simple structural elements such as bars and beams, and does
not require any knowledge of variational methods. This level is accesible to undergraduate students,
as only require some elementary knowledge of linear algebra and makes no use of variational
calculus. The second level is characterized by two features: the use of standard work and energy
16
1.3
methods (such as the Total Potential Energy principle), and focus on full compliance with the
requirements of the classical Ritz-Galerkin direct variational methods (for example, interelement
continuity). It is approriate for first year (master level) graduate students with basic exposure to
variational methods. The two lower levels were well established by 1970, with no major changes
since, and are those used in the present book.
The next two levels are covered in the Advanced Finite Element Methods book [255]. The third
one requires a deeper exposure to variational methods in mechanics, notably multifield and hybrid
principles. The last level (templates) is the pinnacle where the rivers of our wisdom flow into
one another. Reaching it requires both mastery of advanced variational principles, as well as the
confidence and fortitude to discard them along the way to the top.
1.2.7. FEM Choices
A more down to earth classification considers two key selection attributes: Primary Unknown
Variable(s), or PUV, and solution method:5
Solution Choice
Stiffness
Flexibility
Combined
(1.7)
Here PUV Choice governs the variational framework chosen to develop the discrete equations; if
one works at the two middle levels of (1.6). It is possible, however, to develop those completely
outside a variational framework, as noted there. The solution choice is normally dictated by the
PUV, but exceptions are possible.
1.2.8. Finally: What The Book Is About
Using the classification of (1.1) through (1.5) we can now state the book topic more precisely:
(1.8)
Of the FEM variants listed in (1.7) emphasis will be placed on the displacement PUV choice and
stiffness solution, just like in [257]. This particular combination is called the Direct Stiffness Method
or DSM.
The alternative PUV terms: primal, dual or primal-dual, are those used in FEM non-structural applications, as well as in
more general computational methods.
17
Chapter 1: OVERVIEW
(a)
(b)
(c)
3
2
2r sin(/n)
r
d
(d)
i
2/n
6
7
Figure 1.2. The find problem treated with FEM concepts: (a) continuum object, (b) a discrete
approximation by inscribed regular polygons, (c) disconnected element, (d) generic element.
n = n sin(/n)
0.000000000000000
2.000000000000000
2.828427124746190
3.061467458920718
3.121445152258052
3.136548490545939
3.140331156954753
3.141277250932773
3.141513801144301
Extrapolated by Wynn-
Exact to 16 places
3.414213562373096
3.141418327933211
3.141592658918053
3.141592653589786
3.141592653589793
Values of n obtained for n = 1, 2, 4, . . . 256 and r = 1 are listed in the second column of
Table 1.1. As can be seen the convergence to is fairly slow. However, the sequence can be
transformed by Wynns algorithm6 into that shown in the third column. The last value displays
15-place accuracy.
6
A widely used lozenge extrapolation algorithm that speeds up the convergence of many sequences. See, e.g, [812].
18
1.4
Some key ideas behind the FEM can be identified in this example. The circle, viewed as a source
mathematical object, is replaced by polygons. These are discrete approximations to the circle.
The sides, renamed as elements, are specified by their end nodes. Elements can be separated by
disconnecting nodes, a process called disassembly in the FEM. Upon disassembly a generic element
can be defined, independently of the original circle, by the segment that connects two nodes i
and j. The relevant element property: side length L i j , can be computed in the generic element
independently of the others, a property called local support in the FEM. The target property: polygon
perimeter, is obtained by reconnecting n elements and adding up their length; the corresponding
steps in the FEM being assembly and solution, respectively. There is of course nothing magic about
the circle; the same technique can be be used to rectify any smooth plane curve.7
This example has been offered in the FEM literature, e.g. in [476], to aduce that finite element ideas
can be traced to Egyptian mathematicians from circa 1800 B.C., as well as Archimedes famous
studies on circle rectification by 250 B.C. But comparison with the modern FEM, as covered in
following Chapters, shows this to be a stretch. The example does not illustrate the concept of degrees
of freedom, conjugate quantities and local-global coordinates. It is guilty of circular reasoning: the
compact formula = limn n sin(/n) uses the unknown in the right hand side.8 Reasonable
people would argue that a circle is a simpler object than, say, a 128-sided polygon. Despite these
flaws the example is useful in one respect: showing a fielders choice in the replacement of one
mathematical object by another. This is at the root of the simulation process described next.
1.4. The FEM Analysis Process
Processes that use FEM involve carrying out a sequence of steps in some way. Those sequences
take two canonical configurations, depending on (i) the environment in which FEM is used and (ii)
the main objective: model-based simulation of physical systems, or numerical approximation to
mathematical problems. Both are reviewed below to introduce terminology used in the sequel.
1.4.1. The Physical FEM
A canonical use of FEM is simulation of physical systems. This requires models of such systems.
Consequenty the methodology is often called model-based simulation.
The process is illustrated in Figure 1.3. The centerpiece is the physical system to be modeled.
Accordingly, this configuration is called the Physical FEM. The processes of idealization and
discretization are carried out concurrently to produce the discrete model. The solution step is
handled by an equation solver often customized to FEM, which delivers a discrete solution (or
solutions).
Figure 1.3 also shows an ideal mathematical model. This may be presented as a continuum limit or
continuification of the discrete model. For some physical systems, notably those well modeled
by continuum fields, this step is useful. For others, such as complex engineering systems (say, a
flying aircraft) it makes no sense. Indeed Physical FEM discretizations may be constructed and
adjusted without reference to mathematical models, simply from experimental measurements.
7
A similar limit process, however, may fail in three dimensions for evaluation of surface areas.
The circularity
is bypassed if n is advanced as a power of two, as in Table 1.1, by using the half-angle recursion
objection
19
Chapter 1: OVERVIEW
Ideal
Mathematical
model
CONTINUIFICATION
FEM
Physical
system
occasionally
relevant
SOLUTION
Discrete
model
IDEALIZATION &
DISCRETIZATION
Discrete
solution
VERIFICATION
solution error
Figure 1.3. The Physical FEM. The physical system (left box) is the source
of the simulation process. The ideal mathematical model (should one go to the
trouble of constructing it) is inessential.
The concept of error arises in the Physical FEM in two ways. These are known as verification and
validation, respectively.9 Verification is done by replacing the discrete solution into the discrete
model to get the solution error. This error is not generally important. Substitution in the ideal
mathematical model in principle provides the discretization error. This step is rarely useful in
complex engineering systems, however, because there is no reason to expect that the continuum
model exists, and even if it does, that it is more physically relevant than the discrete model.
Validation tries to compare the discrete solution against observation by computing the simulation
error, which combines modeling and solution errors. As the latter is typically unimportant, the
simulation error in practice can be identified with the modeling error. In real-life applications this
error overwhelms the others.10
One way to adjust the discrete model so that it represents the physics better is called model updating.
The discrete model is given free parameters. These are determined by comparing the discrete
solution against experiments, as illustrated in Figure 1.4. Inasmuch as the minimization conditions
are generally nonlinear (even if the model is linear) the updating process is inherently iterative.
Physical
system
Experimental
database
FEM
EXPERIMENTS
Parametrized
discrete
model
Discrete
solution
simulation error
10
Programming analogs: static and dynamic testing are called verification and validation, respectively. Static testing is
carried at the source level (e.g., code walkthroughs, compilation) whereas dynamic testing is done by running the code.
All models are wrong; some are useful (George Box)
110
1.4
Mathematical
model
IDEALIZATION
VERIFICATION
FEM
REALIZATION
SOLUTION
Ideal
physical
system
Discrete
model
IDEALIZATION &
DISCRETIZATION
Discrete
solution
VERIFICATION
solution error
ocassionally relevant
Figure 1.5. The Physical FEM. The physical system (left box) is the source
of the simulation process. The ideal mathematical model (should one go to the
trouble of constructing it) is inessential.
12
13
The distinction between strong, weak and variational forms is discussed in advanced FEM courses. In the present book
such forms will be largely stated (and used) as recipes.
This error can be computed in several ways, the details of which are of no importance here.
Such interplay is not exactly a new idea: The men of experiment are like the ant, they only collect and use; the reasoners
resemble spiders, who make cobwebs out of their own substance. But the bee takes the middle course: it gathers its
material from the flowers of the garden and field, but transforms and digests it by a power of its own. (Francis Bacon).
111
Chapter 1: OVERVIEW
a
atic
hem
Matmodel
FEM
ry
ibra
en
pon e
et
Com
r
c
s
di del
mo
NT
ONE
P
COMEVEL
L
ent
ponns
o
Com
i
t
a
equ
TEM
SYS EL
LEV e
plet
Comution
l
so
l
sica
Phy tem
s
y
s
em
Systrete
disc del
mo
first one to be developed to model complex physical systems such as aircraft, as narrated in 1.7.
The Mathematical FEM came later and, among other things, provided the necessary theoretical
underpinnings to extend FEM beyond structural analysis.
A glance at the schematics of a commercial jet aircraft makes obvious the reasons behind the Physical
FEM. There is no simple differential equation that captures, at a continuum mechanics level,14 the
structure, avionics, fuel, propulsion, cargo, and passengers eating dinner. There is no reason for
despair, however. The time honored divide and conquer strategy, coupled with abstraction, comes
to the rescue.
First, separate the structure out and view the rest as masses and forces. Second, consider the aircraft
structure as built up of substructures (a part of a structure devoted to a specific function): wings,
fuselage, stabilizers, engines, landing gears, and so on.
Take each substructure, and continue to break it down into components: rings, ribs, spars, cover
plates, actuators, etc. Continue through as many levels as necessary. Eventually those components
become sufficiently simple in geometry and connectivity that they can be reasonably well described
by the mathematical models provided, for instance, by Mechanics of Materials or the Theory of
Elasticity. At that point, stop. The component level discrete equations are obtained from a FEM
library based on the mathematical model.
The system model is obtained by going through the reverse process: from component equations
to substructure equations, and from those to the equations of the complete aircraft. This system
14
Of course at the (sub)atomic level quantum mechanics works for everything, from landing gears to passengers. But
it would be slightly impractical to represent the aircraft by, say, 1036 interacting particles modeled by the Schrodinger
equations. More seriously, Truesdell and Toupin correctly note that Newtonian mechanics, while not appropriate to the
corpuscles making up a body, agrees with experience when applied to the body as a whole, except for certain phenomena
of astronomical scale [759, p. 228].
112
1.5
METHOD INTERPRETATIONS
member
Physical System
support
joint
IDEALIZATION
;;
;
;;
;
Idealized and
Discrete System
Figure 1.7. The idealization process for a simple structure. The physical system here
a conventional roof truss is directly idealized by the mathematical model: a pin-jointed
bar assembly. For this particular structure idealized and discrete models coalesce.
assembly process is governed by the classical principles of Newtonian mechanics, which provide
the necessary inter-component glue. The multilevel decomposition process is diagramed in
Figure 1.6, in which intermediate levels are omitted for simplicity
Remark 1.2. More intermediate decomposition levels are used in systems such as offshore and ship structures,
which are characterized by a modular fabrication process. In that case multilevel decomposition mimics the
way the system is actually fabricated. The general technique, called superelements, is discussed in Chapter 10.
Remark 1.3. There is no point in practice in going beyond a certain component level while considering the
complete system. The reason is that the level of detail can become overwhelming without adding relevant
information. Usually that point is reached when uncertainty impedes further progress. Further refinement
of specific components is done by the so-called global-local analysis technique outlined in Chapter 10. This
technique is an instance of multiscale analysis.
Chapter 1: OVERVIEW
imation. The concept of element-by-element breakdown and assembly, while convenient in the computer
implementation, is not theoretically necessary. The mathematical interpretation permits a general approach
114
15
Oliver Heaviside took heavy criticism from the lotus eaters, which he returned with gusto. His legacy is a living proof
that England is the paradise of individuality, eccentricity, heresy, anomalies, hobbies and humors (George Santayana).
Paul Dirac was luckier: he was shielded as member of the physics establishment and eventually received a Nobel Prize.
Gilbert Strang, the first mathematician to dwelve in the real FEM (the one created by engineers) was kind to the founders.
16
With the gradual disappearance of Fortran as a live programming language, noted in 1.7.7, changes at the implementation level have recently accelerated. E.g., C++, Python, Java and Matlab wrappers are becoming more common.
115
Chapter 1: OVERVIEW
9.
10.
11.
Topics 15 belong to what may be called Advanced Linear FEM, which is covered in the book [255].
Topics 67 pertain to Nonlinear FEM, which is covered in the book [258]. Topics 810 fall into advanced
applications, covrede in other books in preparation, whereas 11 is an interdisciplinary topic that interweaves
with computer science.
Chemistry departments because of large amounts of legacy code.) So one end of the pipeline is
drying up. Low-level scientific programming17 is moving to C and C++, mid-level to Java, Perl and
Python, high-level to Matlab, Mathematica and their free-source Linux equivalents. How attractive
can a book teaching in a dead language be?
To support this argument with some numbers, here is a September-2003 snapshot of ongoing open
source software projects listed in http://freshmeat.net. This conveys the relative importance
of various languages (a mixed bag of newcomers, going-strongs, have-beens and never-was) in the
present environment.
Lang
Projects
Perc
Ada
38
0.20%
Assembly
170
0.89%
C
5447 28.55%
Cold Fusion
10
0.05%
Dylan
2
0.01%
Erlang
11
0.06%
Forth
15
0.08%
Java
2332 12.22%
Logo
2
0.01%
Object Pascal
9
0.05%
Other
160
0.84%
Pascal
38
0.20%
Pike
3
0.02%
PROGRESS
2
0.01%
Rexx
7
0.04%
Simula
1
0.01%
Tcl
356
1.87%
Xbasic
1
0.01%
Total Projects: 19079
Lang
Projects
Perc
Lang
Projects
APL
3
0.02%
ASP
25
Awk
40
0.21%
Basic
15
C#
41
0.21%
C++
2443
Common Lisp 27
0.14%
Delphi
49
Eiffel
20
0.10%
Emacs-Lisp
33
Euler
1
0.01%
Euphoria
2
Fortran
45
0.24%
Haskell
28
JavaScript 236
1.24%
Lisp
64
ML
26
0.14%
Modula
7
Objective C 131
0.69%
Ocaml
20
Other Scripting Engines 82 0.43%
Perl
2752
14.42%
PHP
2020
PL/SQL
58
0.30%
Pliant
1
Prolog
8
0.04%
Python
1171
Ruby
127
0.67%
Scheme
76
Smalltalk
20
0.10%
SQL
294
Unix Shell 550
2.88%
Vis Basic
15
YACC
11
0.06%
Zope
34
Perc
0.13%
0.08%
12.80%
0.26%
0.17%
0.01%
0.15%
0.34%
0.04%
0.10%
10.59%
0.01%
6.14%
0.40%
1.54%
0.08%
0.18%
A programming language is low level when its programs require attention to the irrelevant (Alan Perlis).
117
Chapter 1: OVERVIEW
Spurred by this disappointment, I decided to return to Boeing for the summer faculty program in 1953. During
the winter, I stayed in touch with Jon Turner so I was able to rejoin the structural dynamics unit in June. The most
important development during the winter was that Jon suggested we try to formulate the stiffness property of the
wing by assembling plane stress plates of either triangular or rectangular shapes. So I developed stiffness matrices
for plates of both shapes, but I decided the triangular form was much more useful because such plates could be
assembled to approximate structures of any configuration. Moreover, the stiffness properties of the individual
triangular plates could be calculated easily based on assumptions of uniform states of normal stress in the X and
the Y directions combined with an uniform state of shear stress. Then the stiffness of the complete structure was
obtained by appropriate addition of the contributions from the individual pieces. The Boeing group called this
procedure the direct stiffness method.
The remainder of the summer of 1953 was spent in demonstrating that deflections calculated for structures formed
as assemblages of triangular elements agreed well with laboratory measurements on the actual physical models.
Also, it became apparent that the precision of the calculated results could be improved asymptotically by continued
refinement of the finite element mesh. The conclusions drawn from that summers work were presented in a paper
given by Jon Turner at the annual meeting of the Institute of Aeronautical Sciences in January 1954. However, for
reasons I never understood Jon did not submit the paper for publication until many months later. So this paper,
which often is considered to be the first published description of the FEM, was not published until September 1956
more than two years after the verbal presentation.
It is important to note that the basic purpose of the work done by Jon Turners structural dynamics unit was vibration
and flutter analysis. They were not concerned with stress analysis because that was the responsibility of the stress
analysis unit. However, it was apparent that the model formed by the direct stiffness method could be used for
stress analysis as well as for vibration analysis, and I made plans to investigate this stress analysis application as
soon as possible. However, because of my other research responsibilities, I was not able to spend any significant
time on the stress analysis question until I went on my sabbatical leave to Trondheim, Norway in September 1956.
Then, when I arrived in Norway all I could do was to outline the procedures for carrying out the analysis, and to
do calculations for very small systems using a desk calculator because the Norwegian Institute of Technology did
not yet have an automatic digital computer.
The presentation of the paper to the Institute of Aeronautical Sciences was the first introduction of the principles
of the FEM to a technical audience; although some of the basic concepts of the method were stated a short time
later in a series of articles published in Aircraft Engineering by Dr. John H. Argyris during October 1954 to May
1955. However, the rectangular element presented in those articles is only a minor part of that contribution. The
Argyris work came to my attention during my sabbatical leave in Norway, and I considered it then (as I still do
now) to be the most important series of papers ever published in the field of Structural Mechanics. I credit that
work for extending the scope of my understanding of structural theory to the level it eventually attained.
From my personal point of view, the next important event in finite element history was the coining of the name
FEM. My purpose in choosing that name was to distinguish clearly the relatively large size pieces of the structure
that make up a finite element assemblage as contrasted with the infinitesimal contributions that go into evaluation of
the displacements of a structure in a typical virtual work analysis. The name first appeared in a publication that was
written to demonstrate the finite element procedure for the civil engineering profession. A much more significant
application of the method was presented at the Symposium on the use of Computers in Civil Engineering, held in
Lisbon, Portugal in 1962, where it was used to evaluate the stress concentrations developed in a gravity dam that
had cracked at its mid-section.
References
Referenced items have been moved to Appendix R.
118
Exercises
When idealized as an assemblage of appropriately shaped two- and three-dimensional elements in this manner,
an elastic continuum can be analyzed by standard methods of structural analysis. It should be noted that the
approximation which is employed in this case is of physical nature; a modified structural system is substituted
for the actual continuum. There need be no approximation in the mathematical analysis of this structural
system. This feature distinguishes the finite element technique from finite difference methods, in which the
exact equations of the actual physical system are solved by approximate mathematical procedures.
Discuss critically the contents of this paragraph while placing it in the context of time of writing (early 1960s).
Is the last sentence accurate?
119
The Direct
Stiness Method I
21
TABLE OF CONTENTS
Page
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.
2.
2.
Foreword
. . . . . . . . . . . . . . . . . . . . . .
Why A Plane Truss?
. . . . . . . . . . . . . . . . .
Truss Structures . . . . . . . . . . . . . . . . . . . .
Idealization . . . . . . . . . . . . . . . . . . . . .
The Example Truss . . . . . . . . . . . . . . . . . . .
Members, Joints, Forces and Displacements
. . . . . . . . .
The Master Stiness Equations
. . . . . . . . . . . . . .
The DSM Steps
. . . . . . . . . . . . . . . . . . .
Breakdown Stage
. . . . . . . . . . . . . . . . . . .
2.9.1
Disconnection
. . . . . . . . . . . . . . . .
2.9.2
Localization . . . . . . . . . . . . . . . . . .
2.9.3
Member Stiffness Equations . . . . . . . . . . . .
Assembly and Solution Stage: Globalization . . . . . . . . . .
2.10.1
Displacement and Force Transformations . . . . . . . .
2.10.2
Global Member Stiffness Equations . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
22
23
23
23
24
25
26
27
28
210
210
211
211
212
212
214
215
215
216
2.3
TRUSS STRUCTURES
2.1. Foreword
This Chapter begins the exposition of the Direct Stiffness Method (DSM) of structural analysis.
The DSM is by far the most common implementation of the Finite Element Method (FEM). In
particular, all major commercial FEM codes are based on the DSM.
The exposition is done by following the DSM steps applied to a simple plane truss structure. The
method has two major stages: breakdown, and assembly+solution. This Chapter covers primarily
the breakdown stage.
2.2. Why A Plane Truss?
The simplest structural finite element is the two-node bar (also called linear spring) element, which
is illustrated in Figure 2.1(a). A six-node triangle that models thin plates, shown in Figure 2.1(b)
displays intermediate complexity. Perhaps the most geometrically complex finite element (at least
as regards number of degrees of freedom) is the curved, three-dimensional, 64-node brick element
depicted in Figure 2.1(c).
Yet the remarkable fact is that, in the DSM, all elements, regardless of complexity, are treated alike!
To illustrate the basic steps of this democratic method, it makes educational sense to keep it simple
and use a structure composed of bar elements.
(a)
(b)
(c)
Figure 2.1. From the simplest through progressively more complex structural finite elements:
(a) two-node bar element for trusses, (b) six-node triangle for thin plates, (b) 64-node tricubic,
brick element for three-dimensional solid analysis.
A simple yet nontrivial structure is the pin-jointed plane truss, whose members may be modeled as
two-node bars.1 Using a plane truss to teach the stiffness method offers two additional advantages:
(a) Computations can be entirely done by hand as long as the structure contains just a few elements.
This allows various steps of the solution procedure to be carefully examined and understood
(learning by doing) before passing to the computer implementation. Doing hand computations
on more complex finite element systems rapidly becomes impossible.
(b) The computer implementation on any programming language is relatively simple and can be
assigned as preparatory computer homework before reaching Part III.
1
A one dimensional bar assembly would be even simpler. That kind of structure would not adequately illustrate some of
the DSM steps, however, notably the back-and-forth transformations from global to local coordinates.
23
member
support
joint
Figure 2.2. An actual plane truss structure. That shown is typical of a roof
truss used in building construction for rather wide spans, say, over 10 meters. For
shorter spans, as in residential buildings, trusses are simpler, with fewer bays.
24
2.5
(a) Physical System
member
support
joint
IDEALIZATION
;;
;;
;;
;;
;;
;;
Figure 2.3. Idealization of roof truss: (a) physical system, (b) idealization
as FEM discretized mathematical model.
In this and following Chapter we will go over the basic steps of the DSM in a hand-computer calculation mode. This means that although the steps are done by hand, whenever there is a procedural
choice we shall either adopt the way that is better suited towards the computer implementation, or
explain the difference between hand and computer computations. The actual computer implementation using a high-level programming language is presented in Chapter 4.
2.5. The Example Truss
To keep hand computations manageable we will use just about the simplest structure that can be
called a plane truss, namely the three-member truss illustrated in Figure 2.4(a). The idealized
model of this physical truss as a pin-jointed assemblage of bars as shown in Figure 2.4(b), In this
idealization truss members carry only axial loads, have no bending resistance, and are connected
by frictionless pins.
Geometric, material and fabrication properties of the idealized truss are given in Figure 2.4(c),2
while idealized loads and support conditions are provided in Figure 2.4(d).
It should be noted that as a practical structure the example truss is not particularly useful that
shown in Figure 2.2 is more common in construction. But with the example truss we can go over
the basic DSM steps without getting mired into too many members, joints and degrees of freedom.
Member mass densities are given in Figure 2.4(c) so that this truss can be used later for examples in vibration and dyamics
analysis.
25
(a)
(b)
fy3 , uy3
3(10,10)
(3)
y
fx1 , ux1
1(0,0)
fy1 , uy1
45 o
(d)
f x3 = 2
45o
E (2) = 50, A(2) = 1,
(2)
L = 10, (2) = 1/5
(2)
(1)
(3)
y
fx2 , ux2
2(10,0)
fy2 , uy2
(1)
(2)
;
;
f y3 = 1
fx3 , ux3
;
;
(c)
;;
;;
;;
;;
Figure 2.4. The three-member example truss: (a) physical structure; (b) idealization as a pin-jointed bar
assemblage; (c) geometric, material and fabrication properties; (d) support conditions and applied loads.
2.7
The key ingredients of the stiffness method of analysis are the forces and displacements at the joints.
In a idealized pin-jointed truss, externally applied forces as well as reactions can act only at the
joints. All member axial forces can be characterized by the x and y components of these forces,
denoted by f x and f y , respectively. The components at joint i will be identified as f xi and f yi ,
respectively. The set of all joint forces can be arranged as a 6-component column vector called f.
The other key ingredient is the displacement field. Classical structural mechanics tells us that the
displacements of the truss are completely defined by the displacements of the joints. This statement
is a particular case of the more general finite element theory. The x and y displacement components
will be denoted by u x and u y , respectively. The values of u x and u y at joint i will be called u xi
and u yi . Like joint forces, they are arranged into a 6-component vector called u. Here are the two
vectors of nodal forces and nodal displacements, shown side by side:
u x1
f x1
u y1
f y1
u x2
f x2
u=
(2.1)
f=
,
.
u y2
f y2
f x3
u x3
f y3
u y3
In the DSM these six displacements are the primary unknowns. They are also called the degrees of
freedom or state variables of the system.3
How about the displacement boundary conditions, popularly called support conditions? This data
will tell us which components of f and u are actual unknowns and which ones are known a priori. In
pre-computer structural analysis such information was used immediately by the analyst to discard
unnecessary variables and thus reduce the amount of hand-carried bookkeeping.
The computer oriented philosophy is radically different: boundary conditions can wait until the
last moment. This may seem strange, but on the computer the sheer volume of data may not be so
important as the efficiency with which the data is organized, accessed and processed. The strategy
save the boundary conditions for last will be followed here also for the hand computations.
Remark 2.1. Often column vectors such as (2.1) will be displayed in row form to save space, with a transpose
Primary unknowns is the correct mathematical term whereas degrees of freedom has a mechanics flavor: any of a limited
number of ways in which a body may move or in which a dynamic system may change (Merrian-Webster). The term
state variables is used more often in nonlinear analysis, material sciences and statistics.
This assumption implies that the so-called initial strain effects, also known as prestress or initial stress effects, are
neglected. Such effects are produced by actions such as temperature changes or lack-of-fit fabrication, and are studied
in Chapter 29.
27
Globalization
Breakdown
(Section 2.9)
Disconnection
Localization
Element Formation
Merge
Assembly &
Solution
Application of BCs
Solution
Recovery of Derived Quantities
conceptual
steps
processing
steps
post-processing
steps
K x1x1 K x1y1
f x1
f y1 K y1x1 K y1y1
f x2 K x2x1 K x2y1
=
f y2 K y2x1 K y2y1
f x3
K x3x1 K x3y1
f y3
K y3x1 K y3y1
K x1x2
K y1x2
K x2x2
K y2x2
K x3x2
K y3x2
K x1y2
K y1y2
K x2y2
K y2y2
K x3y2
K y3y2
K x1x3
K y1x3
K x2x3
K y2x3
K x3x3
K y3x3
K x1y3
u x1
K y1y3 u y1
K x2y3 u x2
.
K y2y3 u y2
K x3y3
u x3
K y3y3
u y3
(2.2)
In matrix notation:
f = K u.
(2.3)
Here K is the master stiffness matrix, also called global stiffness matrix, assembled stiffness matrix,
or overall stiffness matrix. It is a 6 6 square matrix that happens to be symmetric, although this
attribute has not been emphasized in the written-out form (2.2). The entries of the stiffness matrix
are often called stiffness coefficients and have a physical interpretation discussed below.
The qualifiers (master, global, assembled and overall) convey the impression that there
is another level of stiffness equations lurking underneath. And indeed there is a member level or
element level, into which we plunge in the Breakdown section.
Remark 2.2. Interpretation of Stiffness Coefficients. The following interpretation of the entries of K is valuable
for visualization and checking. Choose a displacement vector u such that all components are zero except the
i th one, which is one. Then f is simply the i th column of K. For instance if in (2.3) we choose u x2 as unit
displacement,
u = [ 0 0 1 0 0 0 ]T ,
(2.4)
Thus K y1x2 , say, represents the y-force at joint 1 that would arise on prescribing a unit x-displacement at
joint 2, while all other displacements vanish. In structural mechanics this property is called interpretation of
stiffness coefficients as displacement influence coefficients. It extends unchanged to the general finite element
method.
2.8
;;
;;
FEM model:
Remove loads
& supports:
Disassemble:
battens
Localize:
longerons
diagonals
longerons
Generic element:
Figure 2.6. Visualization of the DSM breakdown stage.
Form
elements:
battens
longerons
diagonals
longerons
Globalize:
Merge:
;;
;
;; ;
;;
;
;; ;
Apply loads
and supports:
29
The first three DSM steps are: (1) disconnection, (2) localization, and (3) computation of member
stiffness equations. Collectively these form the breakdown stage. The first two are flagged as conceptual in Figure 2.5 because they are not actually programmed as such: they are implicitly carried
out either through the user-provided problem definition, or produced by separate preprocessing programs such as CAD front ends. DSM processing actually begins at the element-stiffness-equation
forming step.
Before starting with the detailed, step by step description of the DSM, it is convenient to exhibit the
whole process through a graphic sequence. This is done in Figures 2.6 and 2.7, which are shown
to students as animated slides. The sequence starts with the FEM model of the typical roof truss
displayed in Figure 2.3(b). Thus the idealization step pictured there is assumed to have been carried
out.5
2.9. Breakdown Stage
The three breadown steps: disconnection, localization and formation of the element stiffness equations, are covered next.
(a)
(b)
3
Remove loads and supports,
_
and disconnect pins
y (3)
x (3)
x (2)
(3)
(2)
_
y (2)
y (1)
1
;
;
;
;
;
x (1)
x
(1)
Figure 2.8. Disconnection step: (a) idealized example truss; (b) removal of loads and support,
disconnection into members (1), (2) and (3), and selection of local coordinate systems. The
latter are drawn offset from member axes for visualization convenience.
2.9.1. Disconnection
To carry out the first breakdown step we begin by discarding all loads and supports (the so-called
boundary conditions). Next we disconnect or disassemble the structure into its components. For a
pin-jointed truss disconnection can be visualized as removing the pin connectors. This is illustrated
for the example truss in Figure 2.8. To each member e = 1, 2, 3 assign a Cartesian system {x e , y e }.
Axis x e is aligned along the axis of the eth member. Actually x e runs along the member longitudinal
axis; it is drawn offset in Figure 2.8 (b) for clarity.
By convention the positive direction of x e runs from joint i to joint j, where i < j. The angle
formed by x e and x is the orientation angle e , positive CCW. The axes origin is arbitrary and may
be placed at the member midpoint or at one of the end joints for convenience.
5
The sequence depicted in Figures 2.6 and 2.7 uses the typical roof truss of Figures 2.2 and 2.3, rather than the 3-member
example truss. Reason: those pictures are more representative of actual truss structures, as seen often by students.
210
2.9
(a)
_ _
fyi, u yi
_ _
fxi , uxi
_
y
k s = EA / L
_ _
fyj, u yj
_ _
fxj , uxj
_
x
(b)
BREAKDOWN STAGE
F
L
Figure 2.9. Generic truss member referred to its local coordinate system {x,
y }: (a) idealization as 2-node bar
element, (b) interpretation as equivalent spring. Element identification number e dropped to reduce clutter.
(2.5)
K xi yi
K yi yi
K x j yi
K y j yi
K xi x j
K yi x j
K x j x j
K y j x j
K xi y j u xi
K yi y j
u yi
u x j
Kx jyj
u y j
K y j y j
(2.6)
Vectors f and u are called the member joint forces and member joint displacements, respectively,
is the member stiffness matrix or local stiffness matrix. When these relations are
whereas K
interpreted from the standpoint of the general FEM, member is replaced by element and joint
by node.
in terms of L, E and A. The most
There are several ways to construct the stiffness matrix K
straightforward technique relies on the Mechanics of Materials approach covered in undergraduate
courses. Think of the truss member in Figure 2.9(a) as a linear spring of equivalent stiffness ks , an
211
interpretation illustrated in Figure 2.9(b). If the member properties are uniform along its length,
Mechanics of Materials bar theory tells us that6
EA
,
L
ks =
(2.7)
F = ks d =
(2.8)
where F is the internal axial force and d the relative axial displacement, which physically is the
bar elongation. The axial force and elongation can be immediately expressed in terms of the joint
forces and displacements as
F = fx j = fxi ,
d = u x j u xi ,
(2.9)
which express force equilibrium7 and kinematic compatibility, respectively. Combining (2.8) and
(2.9) we obtain the matrix relation8
f xi
1
yi
E
A
0
f
f =
=
fx j
1
L
fy j
0
Hence
1
0
1
0
0
0
0
0
1
E
A
0
=
K
1
L
0
0
0
0
0
0
u xi
0 u yi
u,
=K
u x j
0
u y j
0
1
0
1
0
0
0
.
0
0
(2.10)
(2.11)
212
(a) Displacement
transformation
uyj
uyj
(b) Force
transformation
fyj
fyj
uxj
_
y
_
uyi
u yi
x
_
uxi
fxj
_
uxj
y
_
fyi
fyi
uxi
x
_
fxj
fxi
fxi
u xi
c s 0 0
u xi
u yi s c 0 0 u yi
(2.13)
=
.
u x j
ux j
0 0 c s
u y j
uyj
0 0 s c
The 4 4 matrix that appears above is called a displacement transformation matrix and is denoted9
by T. The node forces transform as f xi = fxi c fyi s, etc., which in matrix form become
f xi
c
f
yi s
=
fx j
0
fyj
0
s
c
0
0
0
0
c
s
0
0
s
c
fxi
fyi
.
fx j
fy j
(2.14)
The 4 4 matrix that appears above is called a force transformation matrix. A comparison of (2.13)
and (2.14) reveals that the force transformation matrix is the transpose TT of the displacement
transformation matrix T. This relation is not accidental and can be proved to hold generally.10
9
10
This matrix will be called Td when its association with displacements is to be emphasized, as in Exercise 2.5.
A simple proof that relies on the invariance of external work is given in Exercise 2.5. However this invariance was only
checked by explicit computation for a truss member in Exercise 2.4. The general proof relies on the Principle of Virtual
Work, which is discussed later.
213
Remark 2.3. Note that in (2.13) the local system (barred) quantities appear on the left-hand side, whereas in
(2.14) they show up on the right-hand side. The expressions (2.13) and and (2.14) are discrete counterparts
of what are called covariant and contravariant transformations, respectively, in continuum mechanics. The
continuum counterpart of the transposition relation is called adjointness. Colectively these relations, whether
discrete or continuous, pertain to the subject of duality.
Remark 2.4. For this particular structural element T is square and orthogonal, that is, TT = T1 . But
this property does not extend to more general elements. Furthermore in the general case T is not even a
square matrix, and consequently does not possess an ordinary inverse. However the congruent transformation
relations (2.15)(2.17) given below do hold generally.
u e = Te ue ,
(2.16)
e
e
Inserting these matrix expressions into f = K u e and comparing with (2.15) we find that the
e in the
member stiffness in the global system {x, y} can be computed from the member stiffness K
local system {x,
y } through the congruent transformation11
e Te .
Ke = (Te )T K
(2.17)
Carrying out the matrix multiplications in closed form (Exercise 2.8) we get
c2
e e
E A sc
Ke =
2
c
Le
sc
sc
s2
sc
s 2
c2
sc
c2
sc
sc
s 2
,
sc
s2
(2.18)
in which c = cos e , s = sin e , with e superscripts of c and s suppressed to reduce clutter. If the
orientation angle e is zero we recover (2.10), as may be expected. Ke is called a member stiffness
matrix in global coordinates. The proof of (2.17) and verification of (2.18) is left as Exercise 2.8.
The globalized member stiffness equations for the example truss can now be easily obtained by
inserting appropriate values provided in Figure 2.4(c). into (2.18).
For member (1), with end joints 12, E (1) A(1) = 100, L (1) = 10, and (1) = 0 :
f (1)
x1
1
(1)
f y1
f (1) = 10 1
x2
(1)
0
f y2
11
0
0
0
0
1
0
1
0
u (1)
x1
0
u (1)
0
y1
.
(1)
0
u x2
0
u (1)
y2
Also known as congruential transformation and congruence transformation in linear algebra books.
214
(2.19)
2.
For member (2), with end joints 23, E (2) A(2) = 50, L (2) = 10, and (2) = 90 :
f (2)
x2
0
(2)
f y2
0
f (2) = 5 0
x3
(2)
0
f y3
0
1
0
1
0
0
0
0
u (2)
x2
0
u (2)
1
y2
.
(2)
0
u x3
1
u (2)
(2.20)
y3
For member (3), with end joints 13, E (3) A(3) = 200 2, L (3) = 10 2, and (3) = 45 :
f (3)
u (3)
x1
x1
0.5
0.5 0.5 0.5
(3)
f y1
u (3)
0.5
0.5 0.5 0.5
y1
= 20
f (3)
.
0.5 0.5
0.5
0.5 u (3)
x3
x3
(3)
0.5 0.5
0.5
0.5
f y3
u (3)
y3
(2.21)
In the following Chapter we complete the DSM steps by putting the truss back together through the
merge step, and solving for the unknown forces and displacements.
Notes and Bibliography
The Direct Stiffness Method has been the dominant FEM version since the mid-1960s, and is the procedure
followed by all major commercial codes in current use. The general DSM was developed at Boeing in the
mid and late 1950s, through the leadership of Jon Turner [766,768], and had defeated its main competitor, the
Force Method, by 1970 [240].
All applications-oriented FEM books cover the DSM, although the procedural steps are sometimes not clearly
delineated. In particular, the textbooks recommended in 1.9 offer adequate expositions.
Trusses, also called bar assemblies, are usually the first structures treated in Mechanics of Materials books
written for undergraduate courses in Aerospace, Civil and Mechanical Engineering. Two widely used textbooks
at this level are [68] and [595].
Steps in the derivation of stiffness matrices for truss elements are well covered in a number of early treatment
of finite element books, of which Chapter 5 of Przemieniecki [603] is a good example.
Force and displacement transformation matrices for structural analysis were introduced by G. Kron [428].
References
Referenced items have been moved to Appendix R.
215
plane truss, before application of any support conditions, must be zero. [Hint: apply translational rigid body
motions at nodes.] Does the property hold also for the columns of that matrix?
EXERCISE 2.3 [A:15] Using matrix algebra derive (2.10) from (2.8) and (2.9). Note: Place all equations in
matrix form first and eliminate d and F by matrix multiplication. Deriving the final form with scalar algebra
and rewriting it in matrix form gets no credit.
EXERCISE 2.4 [A:15] By direct multiplication verify that for the truss member of Figure 2.9(a), f u = F d.
T
Intepret this result physically. (Hint: what is a force times displacement in the direction of the force?)
EXERCISE 2.5 [A:20] The transformation equations between the 1-DOF spring and the 4-DOF generic truss
member may be written in compact matrix form as
d = Td u,
f = F T f ,
(E2.1)
where Td is 1 4 and T f is 4 1. Starting from the identity f u = F d proven in the previous exercise, and
using compact matrix notation, show that T f = TdT . Or in words: the displacement transformation matrix and
the force transformation matrix are the transpose of each other. (This can be extended to general systems)
T
EXERCISE 2.6 [A:20] Derive the equivalent spring formula F = (E A/L) d of (2.8) by the Theory of
Elasticity relations e = d u(
x)/d
Finally, u(
x)
denotes the axial displacement of the cross section at a distance x from node i, which is linearly
interpolated as
x
x
+ u x j
(E2.2)
u(
x)
= u xi 1
L
L
Justify that (E2.2) is correct since the bar differential equilibrium equation: d[A(d/d x)]/d
x = 0, is verified
for all x if A is constant along the bar.
EXERCISE 2.7 [A:20] Derive the equivalent spring formula F = (E A/L) d of (2.8) by the principle of
Minimum Potential Energy (MPE). In Mechanics of Materials it is shown that the total potential energy of the
axially loaded bar is
A e d x Fd,
1
2
(E2.3)
where symbols have the same meaning as the previous Exercise. Use the displacement interpolation (E2.2),
the strain-displacement equation e = d u/d
x and Hookes law = Ee to express
as a function
(d) of the
relative displacement d only. Then apply MPE by requiring that
/d = 0.
e u e = fe , (2.15) and (2.17). (Hint: premultiply both sides of
EXERCISE 2.8 [A:20] Derive (2.17) from K
e u e = fe by an appropriate matrix). Then check by hand that using that formula you get (2.18). Falks
K
scheme is recommended for the multiplications.12
12
216
Exercises
EXERCISE 2.9 [D:5] Why are disconnection and localization labeled as conceptual steps in Figure 2.5?
EXERCISE 2.10 [C:20] (Requires thinking) Notice that the expression (2.18) of the globalized bar stiffness
matrix may be factored as
c2
e e
E A sc
Ke =
c2
Le
sc
sc
s2
sc
s 2
c2
sc
c2
sc
sc
c
s 2 s E e Ae
=
[ c
sc c L e
s2
s
s]
(E2.4)
Interpret this relation physically as a chain of global-to-local-to-global matrix operations: global displacements
axial strain, axial strain axial force, and axial force global node forces.
217
The Direct
Stiness Method II
31
TABLE OF CONTENTS
Page
3.1
3.2
3.3
3.4
3.5
3.6
3.
3.
3.
32
33
33
33
34
36
36
37
37
37
38
39
310
310
311
311
311
313
314
314
315
316
3.2
ASSEMBLY: MERGE
(a)
(b)
(3)
y
1
(2)
1
(1)
Figure 3.1. Physical meaning of merge operation: (a) disconnected example truss after
globalization; (b) reconnected truss with the pins put back into the joints.
(a)
f(3)
3
f3
(b)
3
f(3)
3
f(2)
3
(3)
f(2)
3
(2)
Figure 3.2. The force equilibrium of joint 3 of the example truss, depicted as an FBD in (a). Here
(3)
f3 is the known external joint force applied on the joint. Internal forces f(2)
3 and f3 are applied by
the joint on the members, as illustrated in (b). Thus the forces applied by the members on the joint
(3)
are f(2)
3 and f3 . These forces would act in the directions shown in (a) if members (2) and (3)
(3)
(2)
(3)
were in tension. The free-body equilibrium statement is f3 f(2)
3 f3 = 0 or f3 = f3 + f3 . This
(2)
(3)
(2)
(3)
translates into the two component equations: f x3 = f x3 + f x3 and f y3 = f y3 + f y3 , of (3.2).
fabricating the complete structure. For a pin-jointed (model of a) truss structure, reconnection
means inserting the pins back into the joints. See Figure 3.1.
Merge logic is mathematically governed by two rules of structural mechanics:
1.
2.
Force equilibrium: The sum of internal forces exerted by all members that
meet at a joint balances the external force applied to that joint.
(3.1)
The first rule is physically obvious: reconnected joints must move as one entity. The second one
can be visualized by doing the free body diagram (FBD) of the joint, although some care is required
in the separation of external and internal forces, and their signs. Notational conventions to this
effect are explained in Figure 3.2 for joint 3 of the example truss, at which members (2) and (3)
meet. Application of the foregoing rules at that particular joint gives
Rule 1:
(3)
u (2)
x3 = u x3 ,
(3)
u (2)
y3 = u y3 .
(2)
(3)
(1)
(2)
(3)
f y3 = f y3
+ f y3
= f y3
+ f y3
+ f y3
.
(3.2)
(1)
(2)
(3)
(1)
(2)
(3)
to f x3
+ f x3
and of f y3
to f y3
+ f y3
, respectively, changes nothing because
The addition of f x3
member (1) is not connected to joint 3. We are simply adding zeros. But appending those terms
enables us to write the compact matrix relation for the complete structure:
Rule 2:
(2)
(3)
(1)
(2)
(3)
f x3 = f x3
+ f x3
= f x3
+ f x3
+ f x3
,
34
(3.3)
3.2
ASSEMBLY: MERGE
(1)
f x1
10
(1)
f y1 0
(1)
f x2
10
=
(1)
0
f y2
(1)
0
f x3
0
(1)
f y3
(2)
f x1
0
(2)
f y1 0
(2)
f x2
0
=
(2)
0
f y2
(2)
0
f x3
0
(2)
f y3
10 0 0
0
0 0
10 0 0
0
0 0
0
0 0
0
0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
5
0
5
0
0
0
0
0
0
u (1)
x1
0
(1)
0 u y1
(1)
0 u x2
.
0 u (1)
y2
(1)
0 u
x3
0
u (1)
y3
(2)
u x1
0
(2)
0 u y1
(2)
0 u x2
.
5 u (2)
y2
(2)
0 u
x3
5
u (2)
y3
(3.4)
(3.5)
(3)
(3)
f x1
u x1
10
10
0
0
10
10
(3)
(3)
f y1
10 0 0 10 10 u y1
10
(3)
f (3)
0
0 0
0
0 u x2
x2 0
=
(3.6)
.
(3)
0
0 0
0
0 u (3)
f y2 0
y2
(3)
10 10 0 0 10
10 u (3)
f
x3
x3
10 10 0 0 10
10
(3)
f y3
u (3)
y3
According to the first rule, we can drop the member identifier in the displacement vectors that
appear in the foregoing matrix equations. Hence the reconnected member equations are
(1)
f x1
10 0 10 0 0 0
u x1
(1)
f y1
0
0
0 0 0 u y1
0
f (1)
10
0
10
0
0 0 u x2
x2
(3.7)
(1) =
,
0
0
0 0 0 u y2
f y2 0
(1)
u x3
0
0
0
0 0 0
f
x3
u y3
0
0
0
0 0 0
(1)
f y3
(2)
f x1
0 0 0 0 0 0
u x1
(2)
f y1
0 0 0 0 0 0 u y1
f (2)
x2 0 0 0 0 0 0 u x2
(3.8)
,
(2) =
f y2 0 0 0 5 0 5 u y2
(2)
u x3
0 0 0 0 0 0
f
x3
u y3
0 0 0 5 0 5
(2)
f y3
35
(3)
f x1
10
10 0 0 10 10
u x1
(3)
f y1
10 0 0 10 10 u y1
10
f (3)
0
0
0 0
0
0 u x2
x2
.
(3) =
0
0 0
0
0 u y2
f y2 0
(3)
u x3
10 10 0 0 10
10
f
x3
u y3
10 10 0 0 10
10
(3)
f y3
These three equations can be represented in compact matrix notation as
f(1) = K(1) u,
f(2) = K(2) u,
f(3) = K(3) u.
(3.9)
(3.10)
(3.11)
so all we have to do is add the three stiffness matrices that appear in (3.7) through (3.9), and we
arrive at the master stiffness equations:
f x1
20
10 10 0 10 10
u x1
10
0
0 10 10 u y1
f y1 10
0
10
0
0
0 u x2
f x2 10
(3.12)
=
.
0
0
5
0
5 u y2
f y2 0
f x3
u x3
10 10
0
0
10
10
f y3
u y3
10 10
0
5 10
15
Using this technique member merging becomes simply matrix addition.
This explanation of the assembly process is conceptually the easiest to follow and understand. It
is virtually foolproof for hand computations. However, this is not the way the process is carried
out on the computer because it would be enormously wasteful of storage for large systems. A
computer-oriented procedure is discussed in 3.5.
3.3. Solution
Having formed the master stiffness equations we can proceed to the solution phase. To prepare the
equations for a linear solver we need to separate known and unknown components of f and u. In
this Section a technique suitable for hand computation is described.
3.3.1. Applying Boundary Conditions by Reduction
If one attempts to solve the system (3.12) numerically for the displacements, surprise! The solution
blows up because the coefficient matrix (the master stiffness matrix) is singular. The mathematical
interpretation of this behavior is that rows and columns of K are linear combinations of each other
(see Remark 3.1 below). The physical interpretation of singularity is that there are unsuppressed
rigid body motions: the truss still floats in the {x, y} plane.
To eliminate rigid body motions and render the system nonsingular we must apply the physical
support conditions as displacement boundary conditions. From Figure 2.4(d) we observe that the
support conditions for the example truss are
u x1 = u y1 = u y2 = 0,
36
(3.13)
3.4
POSTPROCESSING
f x3 = 2,
f y3 = 1.
(3.14)
When solving the overall stiffness equations by hand, the simplest way to account for support
conditions is to remove equations associated with known zero joint displacements from the master
system. To apply (3.13) we have to remove equations 1, 2 and 4. This can be systematically
accomplished by deleting or striking out rows and columns number 1, 2 and 4 from K and the
corresponding components from f and u. The reduced three-equation system is
10
0
0
0
10
10
0
10
15
u x2
u x3
u y3
f x2
f x3
f y3
0
= 2 .
1
(3.15)
Equation (3.15) is called the reduced master stiffness system. The coefficient matrix of this system
is no longer singular.
Remark 3.1. In mathematical terms, the free-free master stiffness matrix K in (3.12) has order N = 6, rank
r = 3 and a rank deficiency of d = N r = 6 3 = 3 (these concepts are summarized in Appendix C.) The
dimension of the null space of K is d = 3. This space is spanned by three independent rigid body motions:
the two rigid translations along x and y and the rigid rotation about z.
Remark 3.2. Conditions (3.13) represent the simplest type of support conditions, namely specified zero
displacements. More general constraint forms, such as prescribed nonzero displacements and multifreedom
constraints, are handled as described in 3.6 and Chapters 89, respectively.
u x2
u x3
u y3
0
0.4 .
0.2
(3.16)
This is called a partial displacement solution (also reduced displacement solution) because it
excludes known displacement components. This solution vector is expanded to six components by
including the three specified values (3.13) in the appropiate slots:
0
u x1
u y1 0
u 0
u = x2 =
.
u y2 0
u x3
0.4
u y3
0.2
(3.17)
3.4. PostProcessing
The last processing step of the DSM is the solution for joint displacements. But often the analyst
needs information on other mechanical quantities; for example the reaction forces at the supports, or
the internal member forces. Such quantities are said to be derived because they are recovered from
the displacement solution. The recovery of derived quantities is part of the so-called postprocessing
steps of the DSM. Two such steps are described below.
3.4.1. Recovery of Reaction Forces
Premultiplying the complete displacement solution (3.17) by K we get
0
2
20
10 10
0 10 10
10
0
0 10 10 0 2
10
0
10
0
0
0 0 0
10
f = Ku =
0
0
5
0 5 0 1
0
0.4
2
10 10
0
0
10
10
0.2
1
10 10
0 5
10
15
(3.18)
This vector recovers the known applied forces (3.14), as can be expected. Furthermore we get
three reaction forces: f x1 = f y1 = 2 and f y2 = 1 that are associated with the support conditions
(3.13). It is easy to check that the complete force system is in self equilibrium for the free-free
structure; this is the topic of Exercise 3.1. For a deeper look at reaction recovery, study 3.4.3.
3.4.2. Recovery of Internal Forces and Stresses
Often the structural engineer is not so much interested in displacements as in internal forces and
stresses. These are in fact the most important quantities for preliminary structural design. In pinjointed trusses the only internal forces are the axial member forces. For the example truss these
forces, denoted by F (1) , F (2) and F (3) , are depicted in Figure 3.3. The average axial stress e is
obtained on dividing F e by the cross-sectional area of the member.
The axial force F e in member e can be obtained as follows. Extract the displacements of member
e from the complete displacement solution u to form ue . Then recover local joint displacements
from u e = Te ue .
Compute the member elongation d e (relative axial displacement) and recover the axial force from
the equivalent spring constitutive relation:
d e = u ex j u exi ,
Fe =
E e Ae e
d .
Le
(3.19)
the global displacements of the member from (3.17): u(2) = [ u x2 u y2 u x3 u y3 ]T = [ 0 0 0.4 0.2 ]T .
Convert to local displacements using u (2) = T(2) u(2) :
u x2
cos 90 sin 90
0
0
u x2
0
0
0 u y2 1
u y2 sin 90 cos 90
=
u =
0
0
cos 90 sin 90 u x3 0
x3
u y3
0
0
sin 90 cos 90
u y3
0
38
1
0
0
0
0
0
0
1
0
0
0
0 0 0
=
.
1 0.4 0.2
0
0.2
0.4
(3.20)
3.4 POSTPROCESSING
uy3 =0.2
(a)
(3)
F (3)
ux3 =0.4
(b)
3
(2)
(2)
F (2)
F (2)
Disconnect
F (1)
(1)
Figure 3.3. Internal force recovery for example truss: (a) member axial forces F (1) , F (2) and
F (3) , with arrow directions pertaining to tension; (b) details of computation for member (2).
The member elongation is d (2) = u x3 u x2 = 0.2 0 = 0.2, whence F (2) = (50/10) (0.2) = 1, a
compressive axial force.
Follwing his procedure for all members provides F (1) = 0, F (2) = 1, and F (3) = 2 2 = 2.82843.
Remark 3.3. An alternative interpretation of (3.19) is to regard ee = d e /L e as the (average) member axial
strain, e = E e ee as (average) axial stress, and F e = Ae e as the axial force. This is more in tune with the
Theory of Elasticity viewpoint discussed in Exercise 2.6.
3.4.3. *Reaction Recovery: General Case
Node forces at supports recovered from f = Ku, where u is the complete displacement solution, were called
reactions in 3.4.1. Although the statement is correct for the example truss, it oversimplifies the general case.
To cover it, consider f as the superposition of applied and reaction forces:
K u = f = fa + fr.
(3.21)
Here f a collects applied forces, which are known before solving, whereas f r collects unknown reaction forces
to be recovered in post-processing. Entries of f r that are not constrained are set to zero. For the example truss,
upon assembly
f 0
x1
f
y1 0
0 0
f=
f y2 = 0 +
2
1
2
1
f x1
f y1
0
f y2
0
0
upon recovery
2 0 2
0 0 0
f=
1 = 0 + 1 .
2
1
2
1
(3.22)
0
0
There is a clean separation in (3.22). Every nonzero entry in f comes from either f a or f r . This allows us to
r
r
r
, f y1 = f y1
and f y2 = f y2
as reactions. If nonzero applied forces act directly on supported
interpret f x1 = f x1
freedoms, however, a reinterpretation is in order. This often occurs when distributed loads such as pressure or
own weight are lumped to the nodes. The adjustment can be more easily understood by following the simple
example illustrated in Figure 3.4.
The fixed-free prismatic bar pictured in Figure 3.4(a) is subjected to a uniformly line load q per unit length.
The bar has length L, elastic modulus E and cross-section area A. It is discretized by two equal-size elements
as shown in Figure 3.4(b). The three x node displacements u 1 = u x1 , u 2 = u x2 and u 3 = u x3 are taken as
39
(c)
qL 1 qL/4
(b)
;;
;;
;;
(a) E, A constant
q (uniform)
1 qL/4
1
2 qL/2
L/2
L/2
3 qL/4
2 qL/2
3 qL/4
Figure 3.4. A simple problem to illustrate reaction recovery of support reactions when nonzero
applied loads act on supports. (a) bar under distributed load; (b) two-element FEM idealization;
(c) free body diagram showing applied node forces in blue and support reaction in red.
2E A
L
1 1 0
1 2 1
0 1 1
u1
u2
u3
qL
= f = fa + fr =
4
1
2
1
f 1r
0
0
(3.23)
Applying the displacement BC u 1 = 0 and solving gives u 2 = 3q L 2 /(8E A) and u 3 = q L 2 /(2E A). Force
recovery yields
qL
f = Ku =
4
3
2
1
qL
fr = f fa =
4
3
2
1
qL
1
2
1
q L
0
0
(3.24)
The fixed-end reaction emerges as f 1r = q L, the correctness of which may be verified on examining the FBD
of Figure 3.4(c). Note that taking f 1 = 3q L/4 as reaction would be in error by 25%. This general recovery
procedure should always be followed when reaction values are used in the design of structural supports.
3.5.
Member stiffness matrices are not expanded. Their entries are directly merged into those of K through
the use of a freedom pointer array called the Element Freedom Table or EFT.
(II) The master stiffness matrix K is stored using a special format that takes advantage of symmetry and
sparseness.
Difference (II) is a more advanced topic that is deferred to the last part of the book. For simplicity we shall
assume here that K is stored as a full square matrix, and study only (I). For the example truss the freedom-pointer
technique expresses the entries of K as the sum
K pq =
K iej
(3.25)
e=1
Here K iej denote the entries of the 4 4 globalized member stiffness matrices in (3.7) through (3.9). Entries
K pq that do not get any contributions from the right hand side remain zero. EFTe denotes the Element Freedom
Table for member e. For the example truss these tables are
EFT(1) = {1, 2, 3, 4},
310
(3.26)
3.6
Physically these tables map local freedom indices to global ones. For example, freedom number 3 of member
(2) is u x3 , which is number 5 in the master equations; consequently EFT(2) (3) = 5. Note that (3.25) involves
three nested loops: over e (outermost), over i, and over j. The ordering of the last two is irrelevant. Advantage
may be taken of the symmetry of Ke and K to roughly halve the number of additions. Exercise 3.5 follows
the scheme (3.25) by hand.
The assembly process for general structures using this technique is studied in Chapter 25.
3.5.2. *Applying DBC by Modification
In 3.3.1 the support conditions (3.13) were applied by reducing (3.12) to (3.15). Reduction is convenient for
hand computations because it cuts down on the number of equations to solve. But it has a serious flaw for
computer implementation: the equations must be rearranged. It was previously noted that on the computer the
number of equations is not the only important consideration. Rearrangement can be as or more expensive than
solving the equations, particularly if the coefficient matrix is stored in sparse form or on secondary storage.1
To apply support conditions without rearranging the equations we clear (set to zero) rows and columns
corresponding to prescribed zero displacements as well as the corresponding force components, and place
ones on the diagonal to maintain non-singularity. The resulting system is called the modified set of master
stiffness equations. For the example truss this approach yields
1 0 0 0
0 1 0 0
0 0 10 0
0 0 0 1
0
0
0
0
0
0
0
0
0
0
0
0
10
10
0
u x1
0
0 u y1 0
0
u x2 = 0 ,
0 u y2 0
u x3
10
2
u y3
15
1
(3.27)
in which rows and columns for equations 1, 2 and 4 have been cleared. Solving this modified system produces
the complete displacement solution (3.17) directly.
Remark 3.4. In a smart stiffness equation solver the modified system need not be explicitly constructed by
storing zeros and ones. It is sufficient to mark the equations that correspond to displacement BCs. The solver
is then programmed to skip those equations. However, if one is using a standard solver from, say, a library
of scientific routines or a commercial program such as Matlab or Mathematica, such intelligence cannot be
expected, and the modified system must be set up explicitly.
On most modern computers, reading a floating-point number from memory at a random address takes 100 to 1000 times
as long as performing a floating-point arithmetic operation on numbers that are already in registers.
311
fy3 = 1
fx3 = 2
u y2 = +0.4
going up
u y1 = 0.5
going down
;;
;;
;;
;;
ux1 = 0
no horizontal motion
Figure 3.5. The example truss with prescribed nonzero vertical displacements at joints 1 and 2.
u x1
20
10 10
0 10 10
f x1
10
0
0 10 10 u y1 f y1
10
0
10
0
0
0 u x2 f x2
10
(3.28)
0
0
5
0
5 u y2 f y2
0
10 10
0
0
10
10
u x3
f x3
10 10
0 5
10
15
u y3
f y3
Suppose that the applied forces are again (3.14) but the prescribed displacements change to
u x1 = 0,
u y1 = 0.5,
u y2 = 0.4
(3.29)
This means that joint 1 goes down vertically whereas joint 2 goes up vertically, as depicted in
Figure 3.5. Inserting the known data into (3.28) we get
20
10 10
0 10 10
0
f x1
10
0
0 10 10 0.5 f y1
10
0
10
0
0
0 u x2 0
10
(3.30)
=
0
0
5
0
5 0.4 f y2
0
10 10
0
0
10
10
u x3
2
10 10
0 5
10
15
u y3
1
The first, second and fourth rows of (3.30) are removed, leaving only
0.5
10
0 10
0 0 0
0
u
10 10 0
0 10 10 x2 = 2
0.4
10 10 0 5 10 15
1
u x3
u y3
312
(3.31)
Columns 1, 2 and 4 are removed by transferring all known terms from the left to the right hand side:
10 0
0
u x2
0
(10) 0 + 0 (0.5) + 0 0.4
0
= 3 .
0 10 10
(10) 0 + (10) (0.5) + 0 0.4
u x3 = 2
0 10 15
u y3
1
(10) 0 + (10) (0.5) + (5) 0.4
2
(3.32)
These are the reduced stiffness equations. Note that its coefficient matrix of (3.32) is exactly the
same as in the reduced system (3.15) for prescribed zero displacements. The right hand side,
however, is different. It consists of the applied joint forces modified by the effect of known nonzero
displacements. These are called the modified node forces or effective node forces. Solving the
reduced system yields
0
u x2
(3.33)
u x3 = 0.5 .
u y3
0.2
Filling the missing entries with the known values (3.29) yields the complete displacement solution
(listed as row vector to save space):
u = [0
0.5
0.5
0.4
0.2 ]T .
(3.34)
Taking the solution (3.34) and going through the postprocessing steps discussed in 3.4, we can
find that reaction forces and internal member forces do not change. This is a consequence of the
fact that the example truss is statically determinate. The force systems (internal and external) in
such structures are insensitive to movements such as foundation settlements.
3.6.2. *Application of Nonzero-DBCs by Modification
The computer-oriented modification approach follows the same idea outlined in 3.5.2. As there, the main
objective is to avoid rearranging the master stiffness equations. To understand the process it is useful to think
of being done in two stages. First equations 1, 2 and 4 are modified so that they become trivial equations, as
illustrated for the example truss and the displacement boundary conditions (3.29):
1
0
0
0
0
0
u x1
0
1
0
0
0
0 u x2 0.5
0
10
0 10
0
0
0
u x2 = 0
(3.35)
0
0
0
1
0
0 u y2 0.4
u x3
10 10 0
0 10 10
2
u y3
10 10 0 5 10 15
1
The solution of this system recovers (3.30) by construction (for example, the fourth equation is simply 1u y2 =
0.4). In the next stage, columns 1, 2 and 4 of the coefficient matrix are cleared by transferring all known terms
to the right hand side, following the same procedure explained in (3.33). We thus arrive at
1 0 0 0
0 1 0 0
0 0 10 0
0 0 0 1
0
0
0
0
0
0
0
0
0
0
0
0
10
10
0
u x1
0
0 u x2 0.5
0
u x2 = 0
0
u y2 0.4
u x3
10
3
u y3
15
2
(3.36)
As before, these are called the modified master stiffness equations. Note that (3.36) retains the original number
and order as well as matrix symmetry. Solving this system yields the complete displacement solution (3.34).
If all prescribed displacements are zero, forces on the right hand side are not modified, and one would get
(3.27) as may be expected.
313
Remark 3.5. The modification is not actually programmed as discussed above. First the applied forces
in the right-hand side are modified for the effect of nonzero prescribed displacements, and the prescribed
displacements stored in the reaction-force slots. This is called the force modification step. Second, rows and
columns of the stiffness matrix are cleared as appropriate and ones stored in the diagonal positions. This is
called the stiffness modification step. It is essential that the procedural steps be executed in the indicated order,
because stiffness terms must be used to modify forces before they are zeroed out.
3.6.3. *Matrix Forms of Nonzero-DBC Application Methods
The reduction and modification techniques for applying DBCs can be presented in compact matrix form. First,
the free-free master stiffness equations Ku = f are partitioned as follows:
K11
K21
K12
K22
u1
u2
f1
.
f2
(3.37)
In this matrix equation, subvectors u2 and f1 collect displacement and force components, respectively, that are
known, given or prescribed. Subvectors u1 and f2 collect force and displacement components, respectively,
that are unknown. Forces in f2 represent reactions on supports; consequently f2 is called the reaction vector.
On transferring the known terms to the right hand side the first matrix equation becomes
K11 u1 = f1 K12 u2 .
(3.38)
This is the reduced master equation system. If the support B.C.s are homogeneous (that is, all prescribed
displacements are zero), u2 = 0, and we do not need to change the right-hand side:
K11 u1 = f1 .
(3.39)
Examples that illustrate (3.38) and (3.39) are (3.32) and (3.27), respectively.
The computer-oriented modification technique retains the same joint displacement vector as in (3.38) through
the following rearrangement:
K11 0
u1
f K12 u2
= 1
.
(3.40)
u2
u2
0
I
This modified system is simply the reduced equation (3.38) augmented by the trivial equation Iu2 = u2 . This
system is often denoted as
Ku = f.
(3.41)
Solving (3.41) yields the complete displacement solution, including the specified displacements u2 .
For the computer implementation it is important to note that the partitioned form (3.37) is only used to allow
use of compact matrix notation. In actual programming the equations are not explicitly rearranged: they retain
their original numbers. For instance, in the example truss
u1 =
u x1
u y1
u y2
DOF #1
DOF #2
DOF #4
u2 =
u x2
u x3
u y3
DOF #3
DOF #5
DOF #6
(3.42)
The example shows that u1 and u2 are generally interspersed throughout u. Thus, matrix operations such as
K12 u2 involve indirect (pointer) addressing so as to avoid explicit array rearrangement.
314
3.
Some treatments apply support conditions during merge, explicitly eliminating known displacement
freedoms as the elements are processed and merged into K. The output of the assembly process is what
is called here a reduced stiffness matrix.2
(2)
In the frontal solution method of Irons [399,401], assembly and solution are done concurrently. More
precisely, as elements are formed and merged, displacement boundary conditions are applied, and Gauss
elimination and reduction of the right hand side starts once the assembler senses (by tracking an element
wavefront) that no more elements contribute to a certain node.
Both variants appeared in FEM programs written during the 1960s and 1970s. They were motivated by
computer resource limitations of the time: memory was scarce and computing time expensive.3 On the
negative side, interweaving leads to unmodular programming (which easily becomes spaghetti code in lowlevel languages such as Fortran). Since a frontal solver has to access the element library, which is typically
the largest component of a general-purpose FEM program, it has to know how to pass and receive information
about each element. A minor change deep down the element library can propagate and break the solver.
Squeezing storage and CPU savings on present computers is of less significance. Modularity, which simplifies
scripting in higher order languages such as Matlab is desirable because it increases plug-in operational
flexibility, allows the use of built-in solvers, and reduces the chance for errors. These priority changes reflect
economic reality: human time is nowadays far more expensive than computer time.
A side benefit of modular assembly-solution separation is that often the master stiffness must be used in a
different way than just solving Ku = f; for example in dynamics, vibration or stability analysis. Or as input
to a model reduction process. In those cases the solution stage can wait.
Both the hand-oriented and computer-oriented application of boundary conditions have been presented here,
although the latter is still considered an advanced topic. While hand computations become unfeasible beyond
fairly trivial models, they are important from a instructional standpoint.
The augment-and-add procedure for hand assembly of the master stiffness matrix is due to H. Martin [474].
The general-case recovery of reactions, as described in 3.4.3, is not covered in any FEM textbook.
References
Referenced items have been moved to Appendix R.
For the example truss, the coefficient matrix in (3.15) is a reduced stiffness whereas that in (3.27) is a modified one.
As an illustration, the first computer used by the writer, the classical mainframe IBM 7094, had a magnetic-core
memory of 32,768 36-bit words ( 0.2 MB), and was as fast as an IBM PC of the mid 1980s. One mainframe, with
the processing power of an iPhone, served the whole Berkeley campus. Ph.D. students were allocated 2 CPU hours per
semester. Getting a moderately complex FE model through involved heavy use of slower secondary storage such as disk
(or magnetic tape) in batch jobs.
315
pointer technique (3.25). Note: start from K initialized to the null matrix, then cycle over e = 1, 2, 3.
f y2 = 0
u y2
E, A(1)
(1)
;;
f x2 = P
u x2
(2)
S/2
;;
3
x
S/2
E, A(2)
EXERCISE 3.6 [N:25] Consider the two-member arch-truss structure shown in Figure E3.1. Take span
S = 8, height H = 3, elastic modulus E = 1000, cross section areas A(1) = 2 and A(2) = 4, and horizontal
crown force P = f x2 = 12. Using the DSM carry out the following steps:
(a)
Assemble the master stiffness equations. Any method: augment-and-add, or the more advanced freedom
pointer technique explained in 3.5.1, is acceptable.
(b)
Apply the displacement BCs and solve the reduced system for the crown displacements u x2 and u y2 .
Partial result: u x2 = 9/512 = 0.01758.
(c)
Recover the node forces at all joints including reactions. Verify that overall force equilibrium (x forces,
y forces, and moments about any point) is satisfied.
(d)
Recover the axial forces in the two members. Result should be F (1) = F (2) = 15/2.
A matrix is singular if its determinant is zero; cf. C.2 of Appendix C for a refresher in that topic.
316
Exercises
;;
;;
;;
(2)
(1)
(3)
H
P
2cs 2
EA
0
1 + 2c3
cs 2
c2 s
cs 2
c2 s
c3
c2 s
c3
0 0
0 1
0 0
0 0
0 0
1
symm
cs 2
c2 s
0
0
0
0
cs 2
c2 s
u x1
H
3
c u y1 P
0
u x2 0
0 u y2 0
u x3 = 0 ,
0
0 u y3 0
c2 s
u x4
0
u y4
c3
0
(E3.1)
in which c = cos and s = sin . Explain from physics why the 5th row and column contain only zeros.
(b)
Apply the BCs and show the 2-equation modified stiffness system.
(c)
Solve for the displacements u x1 and u y1 . Check that the solution makes physical sense for the limit cases
0 and /2. Why does u x1 blow up if H = 0 and 0?
(d)
Recover the axial forces in the three members. Partial answer: F (3) = H/(2s) + Pc2 /(1 + 2c3 ). Why
do F (1) and F (3) blow up if H = 0 and 0?
317
Analysis
of Example Truss
by a CAS
41
TABLE OF CONTENTS
Page
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.
4.
4.
42
43
43
43
44
45
46
47
47
48
49
49
49
411
411
413
414
414
415
417
417
418
4.1
Availability on a wide range of platforms that range from PCs and Macs through Unix workstations. At CU Boulder, it is available through a free campus license (see 4.1).
2.
Up-to-date user interface. On all machines Mathematica offers a graphics user interface
called the Notebook front-end. This is mandatory for serious work. It provides professional
typesetting for results.
3.
4.
Some CAS vendors call that kind of activity doing mathematics by computer. It is more appropriate to regard such
programs as enabling tools that help humans with complicated and error-prone manipulations. Mettle and metal. As of
now, only humans can do mathematics.
Another commonly used program for engineering computations: Matlab, does only numerical computations although a
[poorly done] interface to Maple can be purchased as a toolbox. Historical notes: Macsyma died as a commercial product
in 1999, although the Lisp source code of some versions is freely available. The Maple developer company Waterloo
Maple Inc., also known as Maplesoft, was purchased in 2009 by the Japanese software retailer Cybernet Systems. As a
result, the Matlab symbolic toolbox is likely to be replaced.
43
This was written in 2001; this option does not seem to exist anymore.
44
4.1
to C.4 You can exploit this similarity if you are proficient in that language. But Mathematica
functions do have some unique aspects, such as matching arguments by pattern, and the fact that
internal variables are global unless otherwise made local.5
Modification of function arguments should be avoided because it may be difficult to trace side
effects. The programming style enforced here outlaws output arguments and a function can only
return its name. But since the name can be a list of arbitrary objects the restriction is not serious.6
Our objective is to develop a symbolic program written in Mathematica that solves the example
plane truss as well as some symbolic versions thereof. The program will rely heavily on the
development and use of functions implemented using the Module construct of Mathematica. Thus
the style will be one of procedural programming.7 The program will not be particularly modular
(in the computer science sense) because Mathematica is not suitable for that programming style.8
The code presented in 4.2 through 4.8 uses a few language constructs that may be deemed as
advanced, and these are briefly noted in the text so that appropriate reference to the Mathematica
reference manual can be made.
4.1.4. Class Demo Scripts
The cell scripts shown in Figures 4.2 and 4.3 will be used to illustrate the organization of a Notebook file and the look and feel of some basic Mathematica commands. These scripts will be
demonstrated in class from a laptop.
Simple functions can be implemented in Mathematica directly, for instance DotProduct[x ,y ]:=x.y; more complicated functions are handled by the Module construct. These constructs are called rules by computer scientists.
Such restrictions on arguments and function returns are closer in spirit to C than Fortran although you can of course
modify C-function arguments using pointers exceedingly dangerous but often unavoidable.
The name Module should not be taken too seriously: it is far away from the concept of modules in Ada, Modula, Oberon
or Fortran 90. But such precise levels of interface control are rarely needed in symbolic languages.
Indeed none of the CAS packages in popular use is designed for strong modularity because of historical and interactivity
constraints.
45
Integration example
f[x_,_,_]:=(1+*x^2)/(1+*x+x^2);
F=Integrate[f[x,-1,2],{x,0,5}];
F=Simplify[F];
Print[F]; Print[N[F]];
F=NIntegrate[f[x,-1,2],{x,0,5}];
Print["F=",F//InputForm];
10 + Log[21]
13.0445
F=13.044522437723455
Figure 4.2. Example cell for class demo.
10
1
5
0
0
-5
-1
-10
Figure 4.3. Another example cell for class demo. (Note: displayed results were obtained
with Mathematica version 4.2. Integration answers from versions 5 and up are quite different.)
46
4.3
(a)
Stiffness
Assembler
Problem
Driver
Application of
Support BCs
(b)
User prepared
script
Built in
Equation
Solver
Cell 7
Internal
Force Recovery
Merge of
Bar Stiffness
Bar
Stiffness
AssembleMasterStiffOfExampleTruss
ModifiedMasterStiffForDBC
Cell 3
Cell 4
Built in
Equation
Solver
IntForcesOfExampleTruss
Cell 6
MergeElemIntoMasterStiff
Cell 2
Derived in
Chapter 2
Bar Internal
Force
IntForces2DTwoNodeBar
ElemStiff2DTwoNodeBar
Cell 5
Cell 1
Element Library
Element Library
Figure 4.4. Example truss program: (a) organization by function; (b) organization by cell and module names.
A level-one list is a sequence of items enclosed in curly braces. For example: { x1,y1 } is a list of two items. A level-two
list is a list of level-one lists. An important example of a level-two list is a matrix.
47
ElemStiff2DTwoNodeBar[{{x1_,y1_},{x2_,y2_}},{Em_,A_}] :=
Module[{c,s,dx=x2-x1,dy=y2-y1,L,Ke},
L=Sqrt[dx^2+dy^2]; c=dx/L; s=dy/L;
Ke=(Em*A/L)* {{ c^2, c*s,-c^2,-c*s},
{ c*s, s^2,-s*c,-s^2},
{-c^2,-s*c, c^2, s*c},
{-s*c,-s^2, s*c, s^2}};
Return[Ke]
];
Ke= ElemStiff2DTwoNodeBar[{{0,0},{10,10}},{100,2*Sqrt[2]}];
Print["Numerical elem stiff matrix:"]; Print[Ke//MatrixForm];
Ke= ElemStiff2DTwoNodeBar[{{0,0},{L,L}},{Em,A}];
Ke=Simplify[Ke,L>0];
Print["Symbolic elem stiff matrix:"]; Print[Ke//MatrixForm];
Numerical elem stiff matrix:
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A Em
2 2 L
A one-level list containing the bar elastic modulus, E and the member
cross section area, A. See 4.3.3 as to why name E cannot be used.
The use of the underscore after argument item names in the declaration of the Module is a requirement for pattern-matching in Mathematica. If, as recommended, you have learned functions and
modules this language-specific feature should not come as a surprise.
The module name returns the 4 4 member stiffness matrix internally called Ke. The logic that
leads to the formation of that matrix is straightforward and need not be explained in detail. Note,
however, the elegant direct declaration of the matrix Ke as a level-two list, which eliminates the
fiddling around with array indices typical of low-level programming languages. The specification
format in fact closely matches the mathematical expression given as (2.18) in Chapter 2.
4.3.2. Programming Remarks
The function in Figure 4.5 uses several intermediate variables with short names: dx, dy, s, c and
L. It is strongly advisable to make these symbols local to avoid potential names clashes somewhere
else.11 In the Module[ ...] construct this is done by listing those names in a list immediately
10
These are called the local node numbers, and replace the i, j of previous Chapters. This is a common FEM programming
practice.
11
The global by default choice is the worst one, but we must live with the rules of the language.
48
4.4
after the opening bracket. Local variables may be initialized when they are constants or simple
functions of the argument items; for example on entry to the module dx=x2-x1 initializes variable
dx to be the difference of x node coordinates, namely x = x2 x1 .
The Return statement fulfills the same purpose as in C or Fortran 90. Mathematica guides and
textbooks advise against the use of that and other C-like constructs. The writer strongly disagrees:
the Return statement makes clear what the Module gives back to its invoker and is self-documenting.
4.3.3. Case Sensitivity
Mathematica, like most recent computer languages, is case sensitive so that for instance E is not the
same as e. This is fine. But the language designer decided that names of system-defined objects
such as built-in functions and constants must begin with a capital letter. Consequently the liberal
use of names beginning with a capital letter may run into clashes. For example you cannot use E
because of its built-in meaning as the base of natural logarithms.12
In the code fragments presented throughout this book, identifiers beginning with upper case are used
for objects such as stiffness matrices, modulus of elasticity, and cross section area. This follows
established usage in Mechanics. When there is danger of clashing with a protected system symbol,
additional lower case letters are used. For example, Em is used for the elastic modulus instead of E
because (as noted above) the latter is a reserved symbol.
4.3.4. Testing the Member Stiffness Module
Following the definition of ElemStiff2DTwoNodeBar in Figure 4.5 there are several statements
that constitute the module test script. This script calls the module and prints returned results. Two
cases are tested. First, the stiffness of member (3) of the example truss, using all-numerical values.
Next, some of the input arguments for the same member are given symbolic names so they stand
for variables. For example, the elastic module is given as Em instead of 100 as in the foregoing test.
The print output of the test is shown in the lower portion of Figure 4.5.
The first test returns the member stiffness matrix (?), as may be expected. The second test returns a
symbolic form in which three symbols appear: the coordinates of end node 2, which is taken to be
located at { L,L } instead of {10, 10}, A, which is the cross-section area and Em, which is the elastic
modulus. Note that the returning matrix Ke is subject to a Simplify step before printing it, the
reason for which is the subject of an Exercise. The ability to carry along variables is of course a
fundamental capability of any CAS, and the main reason for which such programs are used.
4.4. Merging a Member into the Master Stiffness
The next code fragment, listed in Figure 4.6, is used in the assembly step of the DSM.
Module MergeElemIntoMasterStiff receives the 4 4 element stiffness matrix formed by
FormElemStiff2DNodeBar and merges it into the master stiffness. It takes three arguments:
12
Ke
eftab
The column of the Element Freedom Table or EFT, defined in 3.5.1, appropriate
to the member being merged. Recall that the EFT lists the global equation numbers
In retrospect this appears to have been a highly questionable decision. System defined names should have been identified
by a reserved prefix or postfix to avoid surprises, as done in Macsyma or Maple. Mathematica issues a warning message,
however, if an attempt to redefine a protected symbol is made.
49
10
10
0
0
10
10
0
0
0
0
0
0
0 10 10
0 10 10
0
0
0
0
0
0
0
10 10
0
10 10
for the four member degrees of freedom, cf. (3.26) in Chapter 3. This is a level-one
list consisting of 4 integers.
Kinp
MergeElemIntoMasterStiff returns, as module name, the updated master stiffness matrix internally called K with the member stiffness merged in. We encounter here a novelty: an input-output
argument. Because a formal argument cannot be modified, the situation is handled by copying the
incoming Kinp into K (a local variable declared in the list that follows the Module name) on entry.
That is the copy updated and returned via the Return statement. The implementation has a strong
C flavor with two nested For loops. Because the iterators are very simple, nested Do loops could
have been used as well.
The statements after the module provide a simple test. Before the first call to this function, the
master stiffness matrix must be initialized to a zero 66 array. This is done in the first test statement
using the Table function. The test member stiffness matrix is that of member (3) of the example
truss, and is obtained by calling ElemStiff2DTwoNodeBar. The EFT is { 1,2,5,6 } since element
freedoms 1,2,3,4 map into global freedoms 1,2,5,6. Running the test statements yields the listing
410
4.6
AssembleMasterStiffOfExampleTruss[]:=
Module[{Ke,K=Table[0,{6},{6}]},
Ke=ElemStiff2DTwoNodeBar[{{0,0},{10,0}},{100,1}];
K= MergeElemIntoMasterStiff[Ke,{1,2,3,4},K];
Ke=ElemStiff2DTwoNodeBar[{{10,0},{10,10}},{100,1/2}];
K= MergeElemIntoMasterStiff[Ke,{3,4,5,6},K];
Ke=ElemStiff2DTwoNodeBar[{{0,0},{10,10}},{100,2*Sqrt[2]}];
K= MergeElemIntoMasterStiff[Ke,{1,2,5,6},K];
Return[K]
];
K=AssembleMasterStiffOfExampleTruss[];
Print["Master stiffness of example truss:"]; Print[K//MatrixForm];
Master
20
10
10
0
10
10
A list of the prescribed degrees of freedom identified by their global number. For
the example truss this list contains three entries: {1, 2, 4}.
ModifiedMasterStiffForDBC[pdof_,K_] := Module[
{i,j,k,nk=Length[K],np=Length[pdof],Kmod=K},
For [k=1,k<=np,k++, i=pdof[[k]];
For [j=1,j<=nk,j++, Kmod[[i,j]]=Kmod[[j,i]]=0];
Kmod[[i,i]]=1];
Return[Kmod]
];
ModifiedMasterForcesForDBC[pdof_,f_] := Module[
{i,k,np=Length[pdof],fmod=f},
For [k=1,k<=np,k++, i=pdof[[k]]; fmod[[i]]=0];
Return[fmod]
];
K=Array[Kij,{6,6}]; Print["Assembled master stiffness:"];
Print[K//MatrixForm];
K=ModifiedMasterStiffForDBC[{1,2,4},K];
Print["Master stiffness modified for displacement B.C.:"];
Print[K//MatrixForm];
f=Array[fi,{6}]; Print["Force vector:"]; Print[f];
f=ModifiedMasterForcesForDBC[{1,2,4},f];
Print["Force vector modified for displacement B.C.:"]; Print[f];
Assembled master stiffness:
Kij 1, 1 Kij 1, 2 Kij 1,
Kij 2, 1 Kij 2, 2 Kij 2,
Kij 3, 1 Kij 3, 2 Kij 3,
Kij 4, 1 Kij 4, 2 Kij 4,
Kij 5, 1 Kij 5, 2 Kij 5,
Kij 6, 1 Kij 6, 2 Kij 6,
3
3
3
3
3
3
Kij
Kij
Kij
Kij
Kij
Kij
1,
2,
3,
4,
5,
6,
4
4
4
4
4
4
Kij
Kij
Kij
Kij
Kij
Kij
1,
2,
3,
4,
5,
6,
5
5
5
5
5
5
Kij
Kij
Kij
Kij
Kij
Kij
1,
2,
3,
4,
5,
6,
6
6
6
6
6
6
The function clears appropriate rows and columns of K, places ones on the diagonal, and returns the modified K as function value. The only slightly fancy thing in this module is the use
of the Mathematica function Length to extract the number of prescribed displacement components: Length[pdof] here will return the value 3, which is the length of the list pdof. Similarly
nk=Length[K] assigns 6 to nk, which is the order of matrix K. Although for the example truss
these values are known a priori, the use of Length serves to illustrate a technique that is heavily
used in more general code.
Module ModifiedMasterForcesForDBC has similar structure and logic and need not be described
in detail. It is important to note that for homogeneous BCs the modules are independent of each other
and may be called in any order. On the other hand, if there were nonzero prescribed displacements
present the force modification must be done before the stiffness modification. This is because
stiffness coefficients that are cleared in the latter are needed for modifying the force vector.
412
4.7
IntForce2DTwoNodeBar[{{x1_,y1_},{x2_,y2_}},{Em_,A_},eftab_,u_]:=
Module[ {c,s,dx=x2-x1,dy=y2-y1,L,ix,iy,jx,jy,ubar,e},
L=Sqrt[dx^2+dy^2]; c=dx/L; s=dy/L; {ix,iy,jx,jy}=eftab;
ubar={c*u[[ix]]+s*u[[iy]],-s*u[[ix]]+c*u[[iy]],
c*u[[jx]]+s*u[[jy]],-s*u[[jx]]+c*u[[jy]]};
e=(ubar[[3]]-ubar[[1]])/L; Return[Em*A*e]
];
p =IntForce2DTwoNodeBar[{{0,0},{10,10}},{100,2*Sqrt[2]},
{1,2,5,6},{0,0,0,0,0.4,-0.2}];
Print["Member int force (numerical):"]; Print[N[p]];
p =IntForce2DTwoNodeBar[{{0,0},{L,L}},{Em,A},
{1,2,5,6},{0,0,0,0,ux3,uy3}];
Print["Member int force (symbolic):"]; Print[Simplify[p]];
Member int force (numerical):
2.82843
Member int force (symbolic):
A Em ( ux3 + uy3)
2L
The test statements are purposedly chosen to illustrate another feature of Mathematica: the use of
the Array function to generate subscripted symbolic arrays of one and two dimensions. The test
output is shown in the bottom box of Figure 4.8, which should be self explanatory. The force vector
and its modified form are printed as row vectors to save space.
4.7. Recovering Internal Forces
Since Mathematica provides built-in matrix operations for solving a linear system of equations and
multiplying matrices by vectors, we do not need to write application functions for the solution of
the modified stiffness equations, and for the recovery of nodal forces as f = Ku. Consequently, the
last application functions we need are those for internal force recovery.
Function IntForce2DTwoNodeBar listed in the top box of Figure 4.9 computes the internal
force in an individual bar element. It is somewhat similar in argument sequence and logic to
ElemStiff2DTwoNodeBar of Figure 4.5. The first two arguments are identical. Argument eftab
provides the Element Freedom Table array for the element. The last argument, u, is the vector of
computed node displacements.
The logic of IntForce2DTwoNodeBar is straightforward and follows the method outlined in 3.2.1.
y } are recovered in array ubar, then the
Member joint displacements u (e) in local coordinates {x,
longitudinal strain e = (u x j u xi )/L and the internal (axial) force p = E Ae is returned as function
value. As coded the function contains redundant operations because entries 2 and 4 of ubar (that
is, components u yi and u y j ) are not actually needed to get p, but were kept to illustrate the general
backtransformation of global to local displacements.
Running this function with the test statements shown after the module produces the output shown
in the bottom box of Figure 4.9. The first test is for member (3) of the example truss using the
actual nodal displacements (3.17). It also illustrates the use of the Mathematica built in function
N to produce output in floating-point form. The second test does a symbolic calculation in which
several argument values are fed in variable form.
413
IntForcesOfExampleTruss[u_]:= Module[{f=Table[0,{3}]},
f[[1]]=IntForce2DTwoNodeBar[{{0,0},{10,0}},{100,1},{1,2,3,4},u];
f[[2]]=IntForce2DTwoNodeBar[{{10,0},{10,10}},{100,1/2},{3,4,5,6},u];
f[[3]]=IntForce2DTwoNodeBar[{{0,0},{10,10}},{100,2*Sqrt[2]},
{1,2,5,6},u];
Return[f]
];
f=IntForcesOfExampleTruss[{0,0,0,0,0.4,-0.2}];
Print["Internal member forces in example truss:"];Print[N[f]];
Internal member forces in example truss:
{0., -1., 2.82843}
The top box of Figure 4.10 lists a higher-level function, IntForceOfExampleTruss, which has
a single argument: u. This is the complete 6-vector of joint displacements u. This function calls
IntForce2DTwoNodeBar three times, once for each member of the example truss, and returns the
three member internal forces thus computed as a 3-component list.
The test statements listed after IntForcesOfExampleTruss feed the displacement solution (3.24)
to the module. Running the test produces the output
shown in the lower box of Figure 4.10. The
(1)
(2)
(3)
internal forces are F = 0, F = 1 and F = 2 2 = 2.82843, in agreement with the values
found in 3.4.2.
4.8. Putting the Pieces Together
After all this development and testing effort, documented in Figures 4.5 through 4.10, we are ready
to make use of all these bits and pieces of code to analyze the example plane truss. This is actually
done with the logic shown in Figure 4.11. This particular piece of code is called the driver script.
Note that it is not a Module. It uses the seven previously described modules
ElemStiff2DTwoNodeBar
MergeElemIntoMasterStiff
AssembleMasterStiffOfExampleTruss
ModifiedMasterStiffForDBC
ModifiedMasterForcesForDBC
IntForce2DTwoNodeTruss
IntForcesOfExampleTruss
(4.1)
These functions must have been defined (compiled) at the time the driver scripts described below
are run. A simple way to making sure that all of them are defined is to put all these functions in
the same Notebook file and to mark them as initialization cells. These cells may be executed by
picking up Kernel Initialize Execute Initialization.13 (An even simpler scheme would to
group them all in one cell, but that would make placing separate test statements messy.)
For a hierarchical version of (4.1), see the last CAETE slide.
13
414
4.8
f={0,0,0,0,2,1};
K=AssembleMasterStiffOfExampleTruss[];
Kmod=ModifiedMasterStiffForDBC[{1,2,4},K];
fmod=ModifiedMasterForcesForDBC[{1,2,4},f];
u=Simplify[Inverse[Kmod].fmod];
Print["Computed nodal displacements:"]; Print[u];
f=Simplify[K.u];
Print["External node forces including reactions:"]; Print[f];
p=Simplify[IntForcesOfExampleTruss[u]];
Print["Internal member forces:"]; Print[p];
Computed nodal displacements:
{0, 0, 0, 0, 25 , 51 }
External node forces including reactions:
{-2, -2, 0, 1, 2, 1}
Internal member forces:
{0, -1, 2 2}
Figure 4.11. Driver script for numerical analysis of example truss and its output.
This is a highly inefficient way to solve Ku = f if the linear system becomes large. It is done here for simplicity.
415
2 fx3}
Figure 4.12. Driver script for symbolic analysis of example truss and its output.
computations, the cross-over typically appearing for 10 to 20 equations. For up to about 500
equations and using floating-point arithmetic, Mathematica gives answers within minutes on a fast
PC or Mac with sufficient memory but eventually runs out of steam at about 1000 equations. For
a range of 1000 to about 50000 equations, Matlab, using built-in sparse solvers, would be the best
compromise between human and computer flow time. Beyond 50000 equations a program in a
low-level language, such as C or Fortran, would be most efficient in terms of computer time.15
One distinct advantage of computer algebra systems emerges when you need to parametrize a
small problem by leaving one or more problem quantities as variables. For example suppose that
the applied forces on node 3 are to be left as f x3 and f y3 . You replace the last two components of array
p as shown in the top box of Figure 4.12, execute the cell and shortly get the symbolic answer shown
in the bottom box of that figure. This is the answer to an infinite number of numerical problems.
Although one may try to undertake such studies by hand, the likelyhood of errors grows rapidly with
the complexity of the system. Symbolic manipulation systems can amplify human abilities in this
regard, as long as the algebra does not explode because of combinatorial complexity. Examples
of such nontrivial calculations will appear throughout the following Chapters.
Remark 4.1.
The combinatorial explosion danger of symbolic computations should be always
kept in mind. For example, the numerical inversion of a N N matrix is a O(N 3 ) process,
whereas symbolic inversion goes as O(N !).
For N = 48 the floating-point numerical inverse
will be typically done in a fraction of a second.
But the symbolic adjoint will have 48! =
12413915592536072670862289047373375038521486354677760000000000 terms, or O(1061 ). There may
be enough electrons in our Universe to store that, but barely ...
15
The current record for FEM structural applications is about 100 million equations, done on a massively parallel supercomputer (ASCI Red at SNL). Fluid mechanics problems with over 500 million equations have been solved.
416
4.
16
The fifth edition, covering version 5, lists for $49.95 but older editions are heavily discounted on the web, some under
$2. There are no printed manual versions for versions 6 and higher.
417
of Figure 4.6. What does the operator += do? (If you are a C programmer, all of this should be easy.)
EXERCISE 4.3 [C:10] Explain the reason behind the use of Length in the modules of Figure 4.6. Why not
IntForcesOfExampleTruss, and the driver script of Figure 4.11, to solve numerically the three-node, twomember truss of Exercise 3.6. Verify that the output reproduces the solution given for that problem. Procedural
recommendation: modify cells but keep a copy of the original Notebook handy in case things go wrong.
EXERCISE 4.6 [C:25] Expand the logic of ModifiedMasterForcesForDBC to permit specified nonzero
displacements. Specify these in a second argument called pval, which contains a list of prescribed values
paired with pdof.
xynode={{0,0},{10,0},{10,10}}; elenod={{1,2},{2,3},{3,1}};
unode={{0,0},{0,0},{2/5,-1/5}}; amp=5; p={};
For [t=0,t<=1,t=t+1/5,
For [e=1,e<=Length[elenod],e++, {i,j}=elenod[[e]];
xyi=xynode[[i]];ui=unode[[i]];xyj=xynode[[j]];uj=unode[[j]];
p=AppendTo[p,Graphics[Line[{xyi+amp*t*ui,xyj+amp*t*uj}]]];
];
];
Show[p,Axes->False,AspectRatio->Automatic];
418
Exercises
EXERCISE 4.7 [C:20] Explain what the program of Figure E4.1 does, and the logic behind what it does.
(You may want to put it in a cell and execute it.) What modifications would be needed so it can be used for
any plane struss?
419
Constructing
MoM Members
51
TABLE OF CONTENTS
Page
5.1
5.2
5.3
5.4
5.
5.
5.
Introduction
. . . . . . . . . . . . . . . . . . . . .
Formulation of MoM Members . . . . . . . . . . . . . .
5.2.1
What They Look Like
. . . . . . . . . . . . . .
5.2.2
End Quantities, Degrees of Freedom, Joint Forces . . . . .
5.2.3
Internal Quantities . . . . . . . . . . . . . . . .
5.2.4
Discrete Field Equations, Tonti Diagram . . . . . . . .
Simplex MoM Members . . . . . . . . . . . . . . . . .
5.3.1
The Bar Element Revisited
. . . . . . . . . . . .
5.3.2
The Spar Element . . . . . . . . . . . . . . . .
5.3.3
The Shaft Element
. . . . . . . . . . . . . . .
*Non-Simplex MoM Members . . . . . . . . . . . . . . .
5.4.1
*Formulation Rules . . . . . . . . . . . . . . .
5.4.2
*Examples
. . . . . . . . . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
52
53
53
53
54
54
55
56
57
58
59
511
511
512
513
513
514
5.2
5.1. Introduction
The truss member used as example in Chapters 24 is an instance of a structural element. Such elements may be formulated directly using concepts and modeling techniques developed in Mechanics
of Materials (MoM).1 The construction does not involve more advanced tools, such as variational
principles, which are required for the continuum-based finite elements that appear in Part II.
This Chapter presents an overview of the technique to construct the element stiffness equations of
MoM members using simple matrix operations. These simplified equations come in handy for
a surprisingly large number of applications, particularly in skeletal structures. Focus is on simplex
elements, which may be formed directly as a sequence of matrix operations. Non-simplex elements
are presented as a recipe because their proper formulation requires work theorems not yet studied.
The physical interpretation of the FEM is still emphasized. Consequently we continue to speak of
structures built up of members (elements) connected at joints (nodes).
5.2. Formulation of MoM Members
5.2.1. What They Look Like
MoM-based formulations are largely restricted to intrinsically one-dimensional members. These
are structural components one of whose dimensions, called longitudinal, is significantly larger than
the other two, called the transverse dimensions. Such members are amenable to the simplified
structural theories developed in MoM textbooks. This Chapter covers only straight members with
geometry defined by the two end joints.2 The member cross sections are defined by the intersection
of planes normal to the longitudinal dimension with the member. See Figure 5.1. Note that although
the individual member will be idealized as being one-dimensional in its intrinsic or local coordinate
system, it often functions as component of a two- or three-dimensional structure.
This class of structural components embodies bars, beams, beam-columns, shafts and spars. Although geometrically similar, the names distinguish the main type of internal forces the member
resists and transmits: axial forces for bars, bending and shear forces for beams, axial compression
and bending for beam-columns, torsion forces for shafts, and shear forces for spars.
Members are connected at their end joints by displacement degrees of freedom. For truss (bar) and
spar members those freedoms are translational components of the joint displacements. For other
types, notably beams and shafts, nodal rotations are chosen as additional degrees of freedom.
Structures fabricated with MoM members are generally three-dimensional. Their geometry is defined with respect to a global Cartesian coordinate system {x, y, z}. Two-dimensional idealizations
are useful simplifications should the nature of the geometry and loading allow the reduction of the
structural model to one plane of symmetry, which is chosen to be the {x, y} plane. Plane trusses
and plane frameworks are examples of such simplifications.
1
Mechanics of Materials was called Strength of Materials in older texts. It covers bars, beams, shafts, arches, thin plates
and shells, but only one-dimensional models are considered in introductory undergraduate courses. MoM involves ab
initio phenomenological assumptions such as plane sections remain plane or shear effects can be neglected in thin
beams. These came about as the byproduct of two centuries of structural engineering practice, justified by success.
A similar acronym (MOM) is used in Electrical Engineering for something completely different: the Method of Moments.
Advanced Mechanics of Materials includes curved members. Plane arch elements are studied in Chapter 13.
53
In this Chapter we study generic structural members that fit the preceding class. An individual
member is identified by e but this superscript will be usually suppressed in the equations below to
reduce clutter. The local axes are denoted by {x,
y , z }, with x along the longitudinal direction. See
Figure 5.1.
The mathematical model of a MoM member is obtained by an idealization process. The model
represents the member as a line segment that connects the two end joints, as depicted in Figure 5.2.
5.2.2. End Quantities, Degrees of Freedom, Joint Forces
The set of mathematical variables used to link members are called end quantities or connectors. In
the Direct Stiffness Method (DSM) these are joint displacements (the degrees of freedom) and the
joint forces. These quantities are related by the member stiffness equations.
The degrees of freedom at the end joints i and j are collected in the joint displacement vector u.
This may include translations only, rotations only, or a combination of translations and rotations.
Component
The vector of joint forces f groups components in one to one correspondence with u.
pairs must be conjugate in the sense of the Principle of Virtual Work. For example if the x-translation
5.2
(e)
i
z
x
axial deformation, or with the total elongation. Pairs that mutually correspond in the sense of the
Principle of Virtual Work are called conjugate. Unlike the case of end quantities, conjugacy of
internal quantities is not a mandatory requirement although it simplifies some expressions.
5.2.4. Discrete Field Equations, Tonti Diagram
v, p and f are called the discrete field equations. There are
The matrix equations that connect u,
three of them.
The member deformations v are linked to the joint displacements u by the kinematic compatibility
conditions, also called the deformation-displacement or strain-displacement equations:
v = B u.
(5.1)
The internal member forces are linked to the member deformations by the constitutive equations.
In the absence of initial strain effects those equations are homogeneous:
p = S v.
(5.2)
Finally, the internal member forces are linked to the joint forces by the equilibrium equations. If
the internal forces p are constant over the member, the relation is simply
f = AT p.
(5.3)
55
Stiffness
f = AT S B u = K
u
Kinematic
v = B u
Equilibrium
f = AT p
p=Sv
Constitutive
Figure 5.3. Tonti diagram of the three discrete field equations (5.1)(5.3) and the stiffness
equation (5.4) fora simplex MoM member. Internal and end quantities appear inside the orange
and yellow boxes, respectively.
Equilibrium, leverage
Rigidity, material, constitutive4
Compatibility, deformation-displacement, strain-displacement
If the element is sufficiently simple, the determination of these three matrices can be carried out
through MoM techniques. If the construction requires more advanced tools, however, recourse to
the general methodology of finite elements and variational principles is necessary.
5.3. Simplex MoM Members
Throughout this section we assume that the internal quantities are constant over the member length.
Such members are called simplex elements. If so the matrices A, B and S are independent of member
cross section. For simplex elements the derivation of the element stiffness equations reduces to a
straightforward sequence of matrix multiplications.
Under the constancy-along-x assumption, elimination of the interior quantities p and v from (5.1)
through (5.3) yields the element stiffness relation
u,
f = AT S B u = K
(5.4)
= AT S B.
K
(5.5)
(5.6)
is a symmetric matrix. Symmetry is computationally desirable for reasons outlined in Part III.
4
The name rigidity matrix for S is preferable. It is a member integrated version of the cross section constitutive equations.
The latter are usually denoted by symbol R, as in 5.4.
56
5.3
(a)
z
(b)
y
fxi , uxi i
(e)
EA
j fxj , u xj
Figure 5.4. The prismatic bar (also called truss) member: (a) individual member shown
in 3D space, (b) idealization as generic member.
symmetric even if S is unsymmetric and A = B. However there are more opportunities to go wrong.
d = S d,
f=
= Bu,
F=
=
F = AT F.
d = [ 1 1 ]
u x j
1
fx j
L
(5.7)
Consequently
EA
1
1 1
T
T
=
.
(5.8)
K = A SB = SB B = S [ 1 1 ]
1
1
L 1
Note that A = B because F and d are conjugate: F d is work. The foregoing equations can be
represented graphyically with the discrete Tonti diagram of Figure 5.5.
Derivation Using Mean Axial Strain and Axial Force. Instead of d we may use the mean axial strain
e = d/L as deformation measure whereas F is kept as internal force measure. The only change
is that B becomes [ 1 1 ] /L whereas S becomes E A. Matrix A does not change. The product
as in (5.8), as can be expected. Now AT is not equal to B because F and
AT SB gives the same K
e are not conjugate, but they differ only by a factor 1/L.
Derivation Using Mean Axial Strain and Axial Stress. We keep the mean axial strain e = d/L
as deformation measure but take the mean axial stress = F/A (which is not conjugate to e)
as
57
Stiffness
EA
1 1 _
u
f=
1
1
L
_
_
u
f
_
d=
Kinematic
u xi
= Bu
1 1
u x j
fxi
fx j
f =
EA
d = Sd
L
Constitutive
Equilibrium
1
=
F = AT F
1
F=
Figure 5.5. Tonti diagram for the bar element discrete equations (5.7)(5.8).
1 ]. The product AT SB
Transformation to Global Coordinates. Since u yi and u y j are not part of (5.7) and (5.8) the
displacement transformation matrix from local to global {x, y} coordinates is 2 4, instead of 4 4
as in 2.8.1. On restoring the element identifier e the appropriate local-to-global transformation is
u e =
u exi
u ex j
=
c
0
s
0
0
c
u exi
e
0
u yi = Te ue ,
s u ex j
u ey j
(5.9)
u yi
1]
u y j
= Bu,
V = G As = S ,
58
f =
fyi
fy j
1
=
V = AT V,
1
(5.10)
5.3
(a)
(b)
fyi , u yi GA
s
(e)
i
z
x
fyj , u yj
j
x
Figure 5.6. The prismatic spar (also called shear-web) member: (a) individual member
shown in 3D space, (b) idealization as generic member in local system.
Note that A = B because V and are not work-conjugate. (This difference is easily adjusted for,
however; see Exercise 5.1.) The local stiffness equations follow as
f =
fyi
fy j
G As
= A S Bu =
L
1
1
1
1
u yi
u y j
u.
=K
(5.11)
If the spar member is used in a two dimensional context, the displacement transformation from
local to global coordinates {x, y} is
u eyi
u =
u ey j
e
=
s
0
c
0
0
s
u exi
e
0
u yi = Te ue ,
c u ex j
u ey j
(5.12)
COVER
PLATES
SPAR
RIB
Figure 5.7. Spar members in aircraft wing (Piper Cherokee). For more
impressive aircraft structures see CAETE slides.
(a)
x
_ _
m xj , xj
y
z
T
_ _
m xi , xi
(b)
m xi, xi
GJ
(e)
j mxj, xj
Figure 5.8. The prismatic shaft (also called torque member): (a) individual member
shown in 3D space, (b) idealization as generic member in the local system.
shear modulus and G J the effective torsional rigidity.5 As deformation measure pick the relative
twist angle = x j xi . The kinematic, constitutive, and equilibrium equations provided by
Mechanics of Materials are
GJ
xi
m
1
xi
= Bu,
T =
=
T = BT T. (5.13)
= S , f =
= [ 1 1 ]
x j
1
m x j
L
From these the local stiffness equations follow as
f =
m xi
m x j
GJ
= B S Bu =
L
1
1
1
1
xi
x j
u.
=K
(5.14)
If the shaft is used in a two-dimensional context, the displacement transformation to global coordi5
J has dimension of (length)4 . For a circular or annular cross section it reduces to the polar moment of inertia about x.
The determination of J for noncircular cross sections is covered in Mechanics of Materials textbooks.
510
c s 0 0 yie
= Te e ,
=
u e = xi
xej
0 0 c s xej
yej
(5.15)
The straightforward formulation of simplex MoM elements does not immediately carry over to the case in
which internal quantities p and v vary over the member; that is, depend on x.
The dependence may be due to
element type, varying cross section, or both. As a result, one or more of the matrices A, B and S depend on
x.
Such members are called non-simplex.
e of non-simplex
The matrix multiplication rule (5.4) cannot be used to construct the element stiffness matrix K
e
x)
would depend on x.
On the other hand, K
members. This can be grasped by observing that A(x)
T S(x)B(
must be independent of x because it relates the end quantities u and f.
5.4.1. *Formulation Rules
The derivation of non-simplex MoM elements requires use of the work principles of mechanics, for example
the Principle of Virtual Work or PVW. Thus, more care must be exercised in the choice of conjugate internal
quantities. The following rules can be justified through the arguments presented in Part II. They are stated
here as recipe, and apply only to displacement-assumed elements.
Rule 1. Select internal deformations v(x)
and internal forces p(x)
that are conjugate in the PVW sense. Link
deformations to node displacements by v(x)
= B(x)u.
Rule 2. From the PVW it may be shown (see Remark 5.2 below) that the force equilibrium equation exists
only in a differential sense:
BT dp = d f.
(5.16)
Here d in dp denotes differentiation with respect to x.
The meaning of dp is simply p(x)
d x.
That is, the
differential of internal forces as one passes from cross-section x to a neighboring one x +d x.
The interpretation
of d f is less immediate because f is not a function of x.
It actually means the contribution of that member
slice to the building of the node force vector f. See (5.18) and (5.19) below.
Rule 3. The constitutive relation is
p = Rv,
(5.17)
d f = BT dp = BT p d x = BT R v d x = BT R B u d x = BT R B d x u.
(5.18)
L
0
d f =
u,
BT R B d x u = K
511
(5.19)
f =
Stiffness
BT R B dx u
f
Equilibrium
Kinematic
d f = BT dp
v = B u
p=Rv
Constitutive
Figure 5.9. Discrete Tonti diagram of the equations for a non-simplex MoM
member.
BT R B d x
(5.20)
The recipe (5.20) will be justified in Part II through energy methods. It will be seen that it generalizes to
arbitrary displacement-assumed finite elements in any number of space dimensions. It is used in the derivation
of the stiffness equations of the plane beam element in Chapter 12. The reduction of (5.20) to (5.6) when the
dependence on x disappears is the subject of Exercise 5.8.
Remark 5.2. The proof of (5.16) follows by equating expressions of the virtual work of a slice of length d x
T
=
undergoing virtual node displacements u and associated deformations v: d f u = dpT v = dpT (B u)
T
T
T
Since u is arbitrary, B dp = d f.
(B dp) u.
5.4.2. *Examples
Example 5.1. A two-node bar element has constant elastic modulus E but a continuously varying area: Ai ,
A j and Am at i, j and m, respectively, where m is the midpoint between end joints i and j. This variation can
be fitted by
A(x)
= Ai Ni (x)
+ A j N j (x)
+ Am Nm (x).
(5.21)
Here Ni (x)
= 12 (1 ), N j (x)
= 12 (1 + ) and Nm (x)
= 1 2 , with = 2x/L 1, are interpolating
polynomials further studied in Part II as element shape functions.
As internal quantities take the strain e and the axial force p = E Ae, which are conjugate quantities. Assuming
the strain e to be uniform over the element (this is characteristic of a displacement assumed element and is
justified through the method of shape functions explained in Part II.) the MoM equations are
e = Bu,
p = E A(x)
e = R(x)
e,
d f = BT dp,
B=
1
[ 1
L
1].
(5.22)
1
,
1
with
512
A = 16 (Ai + A j ) + 23 Am .
(5.23)
5.
Example 5.2. Same as in the previous case but now the strain e is taken to be e = p/(E A), whereas the axial
force p is constant and defined by p = fxi = fx j . The integrals become rational functions of x and are best
evaluated through Mathematica. The completion of this Example is the matter of an Exercise.
Notes and Bibliography
The derivation of MoM elements using straightforward matrix algebra is typical of pre-1962 Matrix Structural
Analysis (MSA). The excellent book of Pestel and Leckie [578], unfortunately out of print, epitomizes that
approach. Historically this idea interweaved with Generation 1 of FEM, as outlined in Appendix O. By 1970
simplified derivations had fallen out of favor as yokelish. But these elements do not need improvement. They
still work fine: a bar or beam stiffness today is the same as 40 years ago.6
The Mechanics of Materials books by Beer-Johnston [68] and Popov [595] may be cited as being widely used
in US undergraduate courses. But they are not the only ones. A September 2003 in-print book search through
www3.addall.com on Mechanics of Materials returns 99 hits whereas one on Strength of Materials (the
older name) compiles 112. Folding multiple editions and hardback/paperback variants one gets about 60
books; by all accounts an impressive number.
Spar members are discussed only in MoM books that focus on aircraft structures, since they are primarily used
in modeling shear web action. On the other hand, bars, shafts and beams are standard fare.
The framework presented here is a tiny part of MSA. A panoramic view, including linkage to continuum
formulations from the MSA viewpoint, is presented in [232].
The source of Tonti diagrams is discussed in Chapter 11.
References
Referenced items have been moved to Appendix R.
The chief technical difference is the heavier use of differential equations prior to 1962, as opposed to the energy methods
in vogue today. The end result for simple one-dimensional models is the same.
513
dimensional Cartesian system {x, y}. Start from (5.11). Indicate where the transformation (5.12) comes from
e Te in closed form.
(Hint: read 2.8). Evaluate Ke = (Te )T K
EXERCISE 5.3 [A:15] Obtain the 4 4 global element stiffness matrix of a prismatic shaft element in a
two dimensional Cartesian system {x, y}. Include only node rotation freedoms in the global displacement
vector. Start from (5.14). Justify the transformation (5.15) (Hint: infinitesimal rotations transform as vectors).
e Te in closed form.
Evaluate Ke = (Te )T K
j (x j , y j , zj )
uxj
x
E, A
(a)
(b)
y
i (x i , yi , z i )
uxi
EXERCISE 5.4 [A+N:15(10+5)] A bar element moving in three dimensional space is completely defined
by the global coordinates {xi , yi , z i }, {x j , y j , z j } of its end nodes i and j, as illustrated in Figure E5.1.
The 2 6 displacement transformation matrix T, with superscript e dropped for brevity, links u e = Tue .
Here u e contains the two local displacements u xi and u x j whereas ue contains the six global displacements
u xi , u yi , u zi , u x j , u y j , u z j .
(a)
1 x ji
L 0
y ji
0
z ji
0
0
x ji
0
y ji
0
z ji
cx ji c y ji cz ji 0 0 0
0 0 0 cx ji c y ji cz ji
(E5.1)
in which L is the element length, x ji = x j xi , etc., and cx ji = x ji /L, etc., are the direction cosines of
the vector going from i to j.
(b)
Evaluate T for a bar going from node i at {1, 2, 3} to node j at {3, 8, 6}.
EXERCISE 5.5 [A+N:30(10+15+5)] A spar element in three dimensional space is only partially defined by
the global coordinates {xi , yi , z i }, {x j , y j , z j } of its end nodes i and j, as illustrated in Figure E5.2. The
problem is that axis y , which defines the direction of shear force transmission, is not uniquely defined by i
514
Exercises
(a)
k (xk , yk , z k)
G, A s
uyi
i (x i , yi , z i)
y
z
uyj j (x j , y j , z j)
x
a
b
uxi
(b)
L
i
Lc
x
Figure E5.2. Spar element in 3D for Exercise 5.5.
and j.7 Most FEM programs use the orientation node method to complete the definition. A third node k, not
colinear with i and j, is provided by the user. Nodes {i, j, k} define the {x,
y } plane and thus z . The projection
of k on line i j is point m. The distance h > 0 from m to k is called h as shown in Figure E5.2(b). The
2 6 displacement transformation matrix T, with superscript e omitted to reduce clutter, relates u e = Tue .
Here u e contains the local transverse displacements u yi and u y j whereas ue contains the global displacements
u xi , u yi , u zi , u x j , u y j , u z j .
(a)
Show that
T=
1 xkm
h 0
ykm
0
z km
0
0
xkm
0
ykm
z km
(E5.2)
in which xkm = xk xm , etc., and cxkm = xkm / h, etc., are the direction cosines of the vector going from
m to k. (Assume that the position of m is known. That computation is carried out in the next item.)
(b)
Work out the formulas to compute the coordinates of point m in terms of the coordinates of {i, j, k}.
Assume a, b and L are computed immediately from the input data. Using
the notation of Figure E5.2(b)
p( p a)( p b)( p L) with
and elementary trigonometry, show that h = 2A/L, where A =
1
2
2
2
p = 2 (L + a + b) (Herons formula), cos = (L + b a )/(2bL), cos = (L 2 + a 2 b2 )/(2a L),
c = b cos , L c = a cos , xm = xi (L c)/L + x j c/L, etc.8
(c)
Evaluate T for a spar member going from node i at {1, 2, 3} to node j at {3, 8, 6}. with k at {4, 5, 6}.
EXERCISE 5.6 [A:20] Explain how thermal effects can be generally incorporated in the constitutive equation
(5.20) of the element stiffness matrix for a non-simplex member reduces to (5.6), in which S = LR.
7
The same ambiguity arises in beam elements in 3D space. These elements are covered in Part III.
An alternative and more elegant procedure, found by a student in 1999, can be sketched as follows. From Figure E5.2(b)
obviously the two subtriangles imk and jkm are right-angled at m and share side km of length h. Apply Pythagoras
theorem twice, and subtract so as to cancel out h 2 and c2 , getting a linear equation for c that can be solved directly.
515
EXERCISE 5.9 [A:20] Explain in detail the quickie derivation of footnote 6. (Knowledge of the Principle of
constant.
(a)
= 1
with R
L
R(x)
d x
(E5.3)
(b)
for a tapered bar with area defined by the linear law A = Ai (1 x/L)+
A j x/L,
(c)
Apply (E5.3) to verify the result (5.23) for a bar with parabolically varying cross section.
EXERCISE 5.11 [A/C+N:30(25+5)] A prismatic bar element in 3D space is referred to a global coordinate
system {x, y, z}, as in Figure E5.1. The end nodes are located at {x1 , y1 , z 1 } and {x2 , y2 , z 2 }.9 The elastic
modulus E and the cross
section area A are constant along the length. Denote x21 = x2 x1 , y21 = y2 y1 ,
2
2
2
z 21 = z 2 z 1 and L = x21
+ y21
+ z 21
.
Show that the element stiffness matrix in global coordinates can be compactly written10 A plodding way
is to start from the local stiffness (5.8) and transform to global using (?)
(a)
Ke =
(b)
EA T
B B,
L3
in which
B = [ x21
y21
z 21
x21
y21
z 21 ] .
(E5.4)
Compute Ke if the nodes are at {1, 2, 3} and {3, 8, 6}, with elastic modulus E = 343 and cross section
area A = 1. Note: the computation can be either done by hand or with the help of a program such as the
following Mathematica module, which is used in Part III:
Stiffness3DBar[ncoor_,mprop_,fprop_,opt_]:= Module[
{x1,x2,y1,y2,z1,z2,x21,y21,z21,Em,Gm,rho,alpha,A,
num,L,LL,LLL,B,Ke}, {{x1,y1,z1},{x2,y2,z2}}=ncoor;
{x21,y21,z21}={x2-x1,y2-y1,z2-z1};
{Em,Gm,rho,alpha}=mprop; {A}=fprop; {num}=opt;
If [num,{x21,y21,z21,Em,A}=N[{x21,y21,z21,Em,A}]];
LL=x21^2+y21^2+z21^2; L=PowerExpand[Sqrt[LL]];
LLL=Simplify[LL*L]; B={{-x21,-y21,-z21,x21,y21,z21}};
Ke=(Em*A/LLL)*Transpose[B].B;
9
10
End nodes are labeled 1 and 2 instead of i and j to agree with the code listed below.
There are several ways of arriving at this result. Some are faster and more elegant than others. Here is a sketch of one of
the ways. Denote by L 0 and L the lengths of the bar in the undeformed and deformed configurations, respectively. Then
2
1
2 (L
in which Q is a quadratic function of node displacements which is therefore dropped in the small-displacement linear
theory. Also on account of small displacements
2
1
2 (L
L 20 ) = 12 (L + L 0 )(L L 0 ) L L .
Hence the small axial strain is e = L/L = (1/L 2 )Bue , which begins the Tonti diagram. Next is F = E A e. Finally
you must show that force equilibrium at nodes requires fe = (1/L)BT F. Multiplying through gives (E5.4).
516
Exercises
Return[Ke]];
ClearAll[Em,A]; Em=343; A=1;
ncoor={{0,0,0},{2,6,3}}; mprop={Em,0,0,0}; fprop={A}; opt={False};
Ke=Stiffness3DBar[ncoor,mprop,fprop,opt];
Print["Stiffness of 3D Bar Element:"];
Print[Ke//MatrixForm];
Print["eigs of Ke: ",Eigenvalues[Ke]];
As a check, the six eigenvalues of this particular Ke should be 98 and five zeros.
EXERCISE 5.12 [A/C:25] Complete Example 5.2.
517
FEM Modeling:
Introduction
61
TABLE OF CONTENTS
Page
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
6.9.
6.
6.
Introduction
FEM Terminology
Idealization
6.3.1.
Models
. . . . . . . .
6.3.2.
Mathematical Models . . . .
6.3.3.
Implicit vs. Explicit Modeling .
Discretization
6.4.1.
Analytical or Numerical? . . .
6.4.2.
Error Sources and Approximation
6.4.3.
Other Discretization Methods
.
The Finite Element Method
Element Attributes
6.6.1.
Element Dimensionality . . .
6.6.2.
Element Nodes
. . . . . .
6.6.3.
Element Geometry
. . . .
6.6.4.
Element Degrees of Freedom . .
6.6.5.
Nodal Forces
. . . . . .
6.6.6.
Element Constitutive Properties .
6.6.7.
Element Fabrication Properties
Classification of Mechanical Elements
6.7.1.
Primitive Structural Elements
.
6.7.2.
Continuum Elements . . . .
6.7.3.
Special Elements . . . . . .
6.7.4.
Macroelements . . . . . .
6.7.5.
Substructures . . . . . . .
Assembly
Boundary Conditions
6.9.1.
Essential and Natural B.C. . .
6.9.2.
B.C. in Structural Problems
. .
Notes and Bibliography
. . . . . . . . . . .
References . . . . . . . . . . . .
62
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
. .
. . .
. .
. . .
. .
. .
. .
. .
. .
.
.
.
.
63
63
64
64
65
66
67
67
67
68
68
69
69
610
610
610
610
610
610
611
611
611
612
612
613
613
613
613
614
614
615
6.2
FEM TERMINOLOGY
6.1. Introduction
Chapters 2 through 5 cover material technically known as Matrix Structural Analysis or MSA. As
chronicled in Appendix H, this is a subject that historically preceded the Finite Element Method
(FEM), although it contributed substantially to it.
This Chapter begins covering the FEM proper. This is distinguished from MSA by three traits:
The increasing importance of continuum models in two and three space dimensions.
This Chapter introduces terminology used in FEM modeling, and surveys attributes and types of
finite elements used in structural mechanics. The next Chapter goes over more specific rules for
defining meshes and boundary conditions.
6.2. FEM Terminology
The ubiquitous term degrees of freedom, often abbreviated to either freedom or DOF, has figured
prominently in previous Chapters. This term, as well as stiffness matrix and force vector,
originated in structural mechanics, the application for which FEM was invented. These names have
carried over to non-structural applications. This terminology overspill is discussed next.
Classical analytical mechanics is that invented by Euler and Lagrange in the XVIII century and
further developed by Hamilton, Jacobi and Poincare as a systematic formulation of Newtonian
mechanics. Its objects of attention are models of mechanical systems ranging from material particles
composed of sufficiently large number of molecules, through airplanes, to the Solar System.1 The
spatial configuration of any such system is described by its degrees of freedom or DOF. These are
also called generalized coordinates. The terms state variables and primary variables are also used,
particularly in mathematically oriented treatments.
If the number of degrees of freedom is finite, the model is called discrete, and continuous otherwise.
Because FEM is a discretization method, the number of DOF of a FEM model is necessarily finite.
They are collected in a column vector called u. This vector is called the DOF vector or state vector.
The term nodal displacement vector for u is reserved to mechanical applications.
In analytical mechanics, each degree of freedom has a corresponding conjugate or dual term,
which represents a generalized force.2 In non-mechanical applications, there is a similar set of
conjugate quantities, which for want of a better term are also called forces or forcing terms. They
are the agents of change. These forces are collected in a column vector called f. The inner product
fT u has the meaning of external energy or work.3
Just as in the truss problem, the relation between u and f is assumed to be of linear and homogeneous.
The last assumption means that if u vanishes so does f. The relation is then expressed by the master
1
For cosmological scales, such as galaxy clusters or black holes, the general theory of relativity is necessary. For the
atomic and sub-atomic world, quantum mechanics is appropriate.
Energy is the capacity to do work. Thus energy and work potentials are the same function (or functional), but with signs
reversed.
63
Conjugate vector f
represents
Displacement
Temperature
Displacement potential
Pressure
Velocity
Electric potential
Magnetic potential
Mechanical force
Heat flux
Particle velocity
Particle velocity
Fluxes
Charge density
Magnetic intensity
stiffness equations:
Ku = f.
(6.1)
K is universally called the stiffness matrix even in non-structural applications because no consensus
has emerged on different names.
The physical significance of the vectors u and f varies according to the application being modeled,
as illustrated in Table 6.1.
If the relation between forces and displacements is linear but not homogeneous, equation (6.1)
generalizes to
Ku = f M + f I .
(6.2)
Here f I is the initial node force vector introduced in Chapter 29 for effects such as temperature
changes, and f M is the vector of mechanical forces.
The basic steps of FEM are discussed below in more generality. Although attention is focused on
structural problems, most of the steps translate to other applications problems as noted above. The
role of FEM in numerical simulation is schematized in Figure 6.1, which is a merged simplification
of Figures 1.2 and 1.3. Although this diagram oversimplifies the way FEM is actually used, it serves
to illustrate terminology. The three key simulation steps shown are: idealization, discretization and
solution. Each step is a source of errors. For example, the discretization error is the discrepancy
that appears when the discrete solution is substituted in the mathematical model. The reverse steps:
continuification and realization, are far more difficult and (generally) ill-posed problems.
The idealization and discretization steps, briefly mentioned in Chapter 1, deserve further discussion.
The solution step is dealt with in more detail in Part III of this book.
6.3. Idealization
Idealization passes from the physical system to a mathematical model. This is the most important
step in engineering practice, because it cannot be canned. It must be done by a human.
64
6.3
IDEALIZATION
DISCRETIZATION
IDEALIZATION
SOLUTION
FEM
Physical
system
Mathematical
model
REALIZATION &
IDENTIFICATION
Discrete
solution
Discrete
model
CONTINUIFICATION
Solution error
6.3.1. Models
The word model has the traditional meaning of a scaled copy or representation of an object. And
that is precisely how most dictionaries define it. We use here the term in a more modern sense,
which has become increasingly common since the advent of computers:
A model is a symbolic device built to simulate and predict aspects of behavior of a system.
(6.3)
Note the distinction made between behavior and aspects of behavior. To predict everything, in all
physical scales, you must deal with the actual system. A model abstracts aspects of interest to the
modeler.4 The qualifier symbolic means that a model represents a system in terms of the symbols
and language of another discipline. For example, engineering systems may be (and are) modeled
with the symbols of mathematics and/or computer sciences.5
6.3.2. Mathematical Models
Mathematical modeling, or idealization, is a process by which an engineer or scientist passes from
the actual physical system under study, to a mathematical model of the system, where the term
model is understood in the sense of (6.3).
The process is called idealization because the mathematical model is necessarily an abstraction of
the physical reality note the phrase aspects of behavior in (6.3). The analytical or numerical
results produced by the mathematical model are physically re-interpreted only for those aspects.6
To give an example of the choices that an engineer may face, suppose that the structure is a flat plate
structure subjected to transverse loading. Here is a non-exhaustive list of four possible mathematical
models:
1.
A very thin plate model based on Von Karmans coupled membrane-bending theory.
2.
A problem-definition input file, a digitized earthquake record, or a stress plot are examples of the latter.
Whereas idealization can be reasonably taught in advanced design courses, the converse process of realization or
identification see Figure 6.1 generally requires considerable physical understanding and maturity that can only
be gained through professional experience.
65
al
atic
hem
Matmodel
ary
Libr
ent
M
E
pon
F
Com ete
EN
PON
M
L
CO EVE
L
ent
ponns
Com
atio
equ
TEM
SYS EL
LEV e
r
disc del
mo
plet
Comution
sol
l
sica
Phy tem
sys
em
Systrete
disc del
o
m
Figure 6.2. A reproduction of Figure 1.5 with some relabeling. Illustrates implicit modeling:
picking elements from an existing FEM code consents to an idealization. This has professional as
well as legal implications.
3.
A moderately thick plate model, for example that of Mindlin-Reissner plate theory.
4.
The person responsible for this kind of decision is supposed to be familiar with the advantages,
disadvantages, and range of applicability of each model. Furthermore the decision may be different
in static analysis than in dynamics.
Why is the mathematical model an abstraction of reality? Engineering systems, particularly in
Aerospace and Mechanical, tend to be highly complex. For simulation it is necessary to reduce that
complexity to manageable proportions. Mathematical modeling is an abstraction tool by which
complexity can be tamed.
Complexity control is achieved by filtering out physical details that are not relevant to the design
and analysis process. For example, a continuum material model filters out the aggregate, crystal,
molecular and atomic levels of matter. Engineers are typically interested in a few integrated
quantities, such as the maximum deflection of a bridge or the fundamental periods of an airplane.
Although to a physicist this is the result of the interaction of billions and billions of molecules, such
details are weeded out by the modeling process. Consequently, picking a mathematical model is
equivalent to choosing an information filter.
6.3.3. Implicit vs. Explicit Modeling
As noted the diagram of Figure 6.1 is an oversimplification of engineering practice. The more
common scenario is that pictured in Figures 1.2, 1.4 and 1.5 of Chapter 1. The latter is reproduced
in Figure 6.2 for convenience.
A common scenario in industry is: you have to analyze a structure or portion(s) of one, and at your
disposal is a black box general-purpose finite element program. Those programs offer a catalog
of element types; for example, bars, beams, plates, shells, axisymmetric solids, general 3D solids,
and so on. The moment you choose specific elements from the catalog you automatically accept
the mathematical models on which the elements are based. This is implicit modeling. Ideally you
66
6.4
DISCRETIZATION
should be fully aware of the implications of your choice. Providing such finite element literacy is
one of the objective of this book. Unfortunately many users of commercial programs are unaware
of the implied-consent aspect of implicit modeling and their legal implications.7
The other extreme happens when you select a mathematical model of the physical problem with
your eyes wide open and then either shop around for a finite element program that implements
that model, or write the program yourself. This is explicit modeling. It requires far more technical
expertise, resources, experience and maturity than implicit modeling. But for problems that fall out
of the ordinary it could be the right thing to do.
In practice a combination of implicit and explicit modeling is common. The physical problem
to be simulated is broken down into subproblems. Those subproblems that are conventional and
fit available programs may be treated with implicit modeling, whereas those that require special
handling may only submit to explicit modeling.
6.4. Discretization
Mathematical modeling is a simplifying step. But models of physical systems are not necessarily
simple to solve. They often involve coupled partial differential equations in space and time subject to
boundary and/or interface conditions. Such models have an infinite number of degrees of freedom.
6.4.1. Analytical or Numerical?
At this point one faces the choice of going for analytical or numerical solutions. Analytical solutions,
also called closed form solutions, are more intellectually satisfying, particularly if they apply to
a wide class of problems, so that particular instances may be obtained by substituting the values of
free parameters. Unfortunately they tend to be restricted to regular geometries and simple boundary
conditions. Moreover some closed-form solutions, expressed for example as inverses of integral
transforms, may have to be anyway numerically evaluated to be useful.
Most problems faced by the engineer either do not yield to analytical treatment or doing so would
require a disproportionate amount of effort.8 The practical way out is numerical simulation. Here
is where finite element methods enter the scene.
To make numerical simulations practical it is necessary to reduce the number of degrees of freedom
to a finite number. The reduction is called discretization. The product of the discretization process
is the discrete model. As discussed in Chapter 1, for complex engineering systems this model is
the product of a multilevel decomposition.
Discretization can proceed in space dimensions as well as in the time dimension. Because the
present book deals with static problems, we need not consider the time dimension and are free to
focus on spatial discretization.
7
Legal problems arise when something goes wrong. Say, a structure collapses under service (non emergency) conditions,
and there is loss of life. Who is to blame? It should be noted that vendors of commercial FEM codes are generally
immune to lawsuits through accept use clauses inserted by company lawyers.
This statement has to be tempered in two respects. First, the wider availability and growing power of computer algebra
systems, outlined in Chapter 4, has widened the realm of analytical solutions than can be obtained within a practical time
frame. Second, a combination of analytical and numerical techniques is often effective in reducing the dimensionality
of the problem to facilitate parameter studies. Important examples are provided by Fourier analysis, perturbation and
boundary-element methods.
67
The discretization error is often overhyped in the FEM literature, since it provides an inexhaustible source of publishable
poppycock. If the mathematical model is way off, reducing the discretization error buys nothing; just a more accurate
answer to the wrong problem.
68
6.6
ELEMENT ATTRIBUTES
1D
2D
2D
3D
Figure 6.3. Typical finite element geometries in one through three dimensions.
The disconnection-assembly concept occurs naturally when examining many artificial and natural
systems. For example, it is easy to visualize an engine, bridge, building, airplane, or skeleton as
fabricated from simpler components.
Unlike finite difference models, finite elements do not overlap in space. In the mathematical
interpretation of the FEM, this property goes by the name disjoint support or local support.
6.6. Element Attributes
Just like members in the truss example, one can take finite elements of any kind one at a time. Their
local properties can be developed by considering them in isolation, as individual entities. This is
the key to the modular programming of element libraries.
In the Direct Stiffness Method, elements are isolated by the disconnection and localization steps,
which were described for the truss example in Chapter 2. The procedure involves the separation of
elements from their neighbors by disconnecting the nodes, followed by referral of the element to a
convenient local coordinate system.10 After that we can consider generic elements: a bar element,
a beam element, and so on. From the standpoint of the computer implementation, it means that
you can write one subroutine or module that constructs, by suitable parametrization, all elements
of one type, instead of writing a new one for each element instance.
Following is a summary of the data associated with an individual finite element. This data is used
in finite element programs to carry out element level calculations.
6.6.1. Element Dimensionality
10
Both steps are only carried out in the modelers mind. They are placed as part of the DSM for instructional convenience.
In practice, processing begins directly at the element level.
69
Elements can have intrinsic dimensionality of one, two or three space dimensions.11 There are also
special elements with zero dimensionality, such as lumped springs or point masses. The intrinsic
dimensionality can be expanded as necessary by use of kinematic transformations. For example a
1D element such as a bar, spar or beam may be used to build a model in 2D or 3D space.
6.6.2. Element Nodes
Each element possesses a set of distinguishing points called nodal points or nodes for short. Nodes
serve a dual purpose: definition of element geometry, and home for degrees of freedom. When a
distinction is necessary we call the former geometric nodes and the latter connection nodes. For
most elements studied here, geometric and connector nodes coalesce.
Nodes are usually located at the corners or end points of elements, as illustrated in Figure 6.3. In
the so-called refined or higher-order elements nodes are also placed on sides or faces, as well as
possibly the interior of the element.
Remark 6.1. In some elements geometric and connection nodes may be at different locations. This is illustrated
by the Veubeke equilibrium triangle described in Chapter 15. Some elements have purely geometric nodes,
also called orientation nodes to complete the definition of certain geometric attributes. An example is the spar
element in 3D shown in Figure E5.2, in which a third geometric node is used to define a local plane.
610
6.7
Physical
Structural
Component
Mathematical
Model Name
Finite Element
Idealization
bar
beam
tube, pipe
spar (web)
shear panel
(2D version of above)
Figure 6.4. Examples of primitive structural elements.
Finite element
idealization
Physical
Physical
plates
Finite element
idealization
3D solids
Infinity
double node
Crack
element
Infinite
element
Honeycomb
panel
6.7.4. Macroelements
Macroelements are also called mesh units and superelements, although the latter term overlaps with
substructures (defined below). These often resemble structural components, but are fabricated with
simpler elements. See Figure 6.7.
The main reason for introducing macroelements is to simplify preprocessing tasks. For example, it
may be simpler to define a regular 2D mesh using quadrilaterals rather than triangles. The fact that,
behind the scene, the quadrilateral is actually a macroelement may not be important to most users.
612
6.9
BOUNDARY CONDITIONS
Similarly a box macroelement can save modeling times for structures that are built by such components; for example box-girder bridges
6.7.5. Substructures
Also called structural modules and superelements. These are sets of elements with a well defined
structural function, typically obtained by cutting the complete structure into functional components.
Examples: the wings and fuselage of an airplane; the towers, deck and cables of a suspension bridge.
The distinction between substructures and macroelements is not clear-cut. The main conceptual
distinction is that substructures are defined top down as parts of a complete structure, whereas
macroelements are built bottom up from primitive elements. The term superelement is often used
in a collective sense to embrace element groupings that range from macroelements to substructures.
This topic is further covered in Chapter 10.
6.8. Assembly
The assembly procedure of the Direct Stiffness Method for a general finite element model follows
rules identical in principle to those discussed for the truss example. As in that case the processs
involves two basic steps:
Globalization. The element equations are transformed to a common global coordinate system, if
necessary.
Merge. The element stiffness equations are merged into the master stiffness equations by appropriate
indexing and matrix-entry addition.
The hand calculations for the example truss conceal, however, the implementation complexity.
The master stiffness equations in practical applications may involve thousands or even millions of
freedoms, and programming can become involved. The topic is elaborated upon in Chapter 25.
6.9. Boundary Conditions
A key strength of the FEM is the ease and elegance with which it handles arbitrary boundary
and interface conditions. This power, however, has a down side. A big hurdle faced by FEM
newcomers is the understanding and proper handling of boundary conditions. Below is a simple
recipe for treating boundary conditions. The following Chapter provides more specific rules and
examples.
613
1.
2.
Otherwise it is natural.
The term direct is meant to exclude derivatives of the primary function, unless those derivatives
also appear as degrees of freedom, such as rotations in beams and plates.
6.9.2. B.C. in Structural Problems
Essential boundary conditions in mechanical problems involve displacements (but not strain-type
displacement derivatives). Support conditions for a building or bridge problem furnish a particularly
simple example. But there are more general boundary conditions that occur in practice. A structural
engineer must be familiar with displacement B.C. of the following types.
Ground or support constraints. Directly restraint the structure against rigid body motions.
Symmetry conditions. To impose symmetry or antisymmetry restraints at certain points, lines or
planes of structural symmetry. This allows the discretization to proceed only over part of the
structure with a consequent savings in modeling effort and number of equations to be solved.
Ignorable freedoms. To suppress displacements that are irrelevant to the problem.12 Even experienced users of finite element programs are sometimes baffled by this kind. An example are
rotational degrees of freedom normal to smooth shell surfaces.
Connection constraints. To provide connectivity to adjoining structures or substructures, or to
specify relations between degrees of freedom. Many conditions of this type can be subsumed under
the label multipoint constraints or multifreedom constraints. These can be notoriously difficult to
handle from a numerical standpoint, and are covered in Chapters 89.
12
614
6.
References
13
A symbol derived from the spring constant k that measures the stiffness of a mechanical spring.
615
FEM Modeling:
Mesh, Loads
and BCs
71
TABLE OF CONTENTS
Page
7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
7.
7.
7.
Introduction
General Recommendations
Guidelines on Element Layout
7.3.1.
Mesh Refinement . . . . . . . .
7.3.2.
Element Aspect Ratios . . . . . . .
7.3.3.
Physical Interfaces
. . . . . . .
7.3.4.
Preferred Shapes . . . . . . . . .
Direct Lumping of Distributed Loads
7.4.1.
Node by Node Lumping . . . . . .
7.4.2.
Element by Element Lumping
. . . .
7.4.3.
*Weighted Lumping . . . . . . .
7.4.4.
*Energy Consistent Lumping
. . . .
Boundary Conditions
Support Conditions
7.6.1.
Supporting Two Dimensional Bodies
.
7.6.2.
Supporting Three Dimensional Bodies
.
Symmetry and Antisymmetry Conditions
7.7.1.
Symmetry and Antisymmetry Visualization
7.7.2.
Effect of Loading Patterns . . . . . .
Notes and Bibliography
. . . . . . . . . . . . . .
References . . . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . . .
72
. .
.
. .
.
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
.
. .
.
. .
. .
. .
. .
. .
. .
.
. .
.
. .
. .
. .
. .
. . . . . . . .
. . . . . . .
.
.
.
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
73
73
73
73
74
75
75
75
76
76
79
79
710
711
711
712
712
712
713
715
715
716
7.1. Introduction
This Chapter continues the exposition of finite element modeling principles. After some general
recommendations, it gives guidelines on layout of finite element meshes, conversion of distributed
loads to node forces, and handling the simplest forms of support boundary conditions. The next two
Chapters deal with more complicated forms of boundary conditions called multifreedom constraints.
The presentation is recipe oriented and illustrated by specific examples from structural mechanics.
Most examples are two-dimensional. No attempt is made at rigorous justification of rules and
recommendations, because that would require mathematical tools beyond the scope of this course.
7.2. General Recommendations
The general rules that should guide you in the use of commercial or public FEM packages, are1
Use the simplest type of finite element that will do the job.
Never, never, never mess around with complicated or special elements, unless you
are absolutely sure of what you are doing.
Use the coarsest mesh you think will capture the dominant physical behavior of the
physical system, particularly in design applications.
Three word summary: keep it simple. Initial FE models may have to be substantially revised to
accommodate design changes. There is little point in using complicated models that will not survive
design iterations. The time for refinement is when the design has stabilized and you have a better
picture of the underlying physics, possibly reinforced by experiments or observation.
7.3. Guidelines on Element Layout
The following guidelines are stated for structural applications. As noted above, they will be often
illustrated for two-dimensional meshes of continuum elements for ease of visualization.
7.3.1. Mesh Refinement
Use a relatively fine (coarse) discretization in regions where you expect a high (low) gradient of
strains and/or stresses.2 Regions to watch out for high gradients are:
In the vicinity of concentrated (point) loads, concentrated reactions, cracks and cutouts.
In the interior of structures with abrupt changes in thickness, material properties or cross
sectional areas.
The examples in Figure 7.1 illustrate some of these danger regions. Away from such regions one
can use a fairly coarse discretization within constraints imposed by the need of representing the
structural geometry, loading and support conditions reasonably well.
1
2
Paraphrasing the Bellman in The Hunting of the Snark: what I say three times is true.
Gradient is the key word. High gradient means rapid variation. A high value by itself means nothing in this context.
73
entrant corners
(cf. Remark 7.1)
Cutouts
Cracks
weld
Load transfer
(bonded joints,
welds, anchors,
reinforcing bars, etc.)
Abrupt thickness
changes
Material
interfaces
Remark 7.1. The first bullet above mentions entrant corner. That is a region where isostatics (principal
stress trajectories) bunch up. For a two-dimensional problem mathematically posed on a singly-connected
interior domain, they can be recognized as follows. Traverse the boundary CCW so the body or structure is
on your left. When hitting a sharp or rounded corner, look at the angle (positive CCW) formed by the exterior
normals (the normal going toward your right) before and after, measured from before to after, and always
taking the positive value.
If the angle exceeds 180 , it is an entrant corner. [If it is close to 360 , it is a crack tip.] For exterior problems
or multiple-connected domains, the definition must be appropriately adjusted.
Good
Bad
When discretizing two and three dimensional problems, try to avoid finite elements of high aspect ratios:
elongated or skinny elements, such as the ones
illustrated on the right of Figure 7.2. (The aspect
ratio of a two- or three-dimensional element is the ratio
between its largest and smallest dimension.)
As a rough guideline, elements with aspect ratios
exceeding 3 should be viewed with caution and those
exceeding 10 with alarm. Such elements will not
necessarily produce bad results that depends on the
loading and boundary conditions of the problem but
do introduce the potential for trouble.
Remark 7.2. In many thin structures modeled as continuous bodies the appearance of skinny elements is
inevitable on account of computational economy reasons. An example is provided by the three-dimensional
modeling of layered composites in aerospace and mechanical engineering problems.
74
7.4
No
OK
Physical interface
Figure 7.3. llustration of the rule that elements should not cross material interfaces.
Unfortunately, many existing space-filling automatic mesh generators in three dimensions produce tetrahedral meshes.
There are generators that try to produce bricks, but these often fail in geometrically complicated regions.
In fact, one of the objectives of a good structural design is to avoid or alleviate stress concentrations produced by
concentrated forces.
75
;;
;;
;;
;;
Distributed load
intensity (load acts
downward on boundary)
f3 = P
Boundary
Finite element
mesh
Figure 7.4. NbN direct lumping of distributed line load, illustrated for a 2D problem.
The meaning of consistent can be made precise through variational arguments, by requiring that
the distributed loads and the nodal forces produce the same external work. Since this requires
the introduction of external work functionals, the topic is deferred to Part II. However, a simpler
approach called direct load lumping, or simply load lumping, is often used by structural engineers
in lieu of the mathematically impeccable but complicated variational approach. Two variants of
this technique are described below for distributed surface loads.
7.4.1. Node by Node Lumping
The node by node (NbN) lumping method is graphically explained in Figure 7.4. This example
shows a distributed surface loading acting normal to the straight boundary of a two-dimensional
FE mesh. (The load is assumed to have been integrated through the thickness normal to the figure,
so it is actually a line load measured as force per unit length.)
The procedure is also called tributary region or contributing region method. For the example of
Figure 7.4, each boundary node is assigned a tributary region around it that extends halfway to
adjacent nodes. The force contribution P of the cross-hatched area is directly assigned to node 3.
This method has the advantage of not requiring the error-prone computation of centroids, as needed
in the EbE technique discussed below. For this reason it is often preferred in hand computations.5
It can be extended to three-dimensional meshes as well as volume loads.6 It should be avoided,
however, when the applied forces vary rapidly (within element length scales) or act only over
portions of the tributary regions.
7.4.2. Element by Element Lumping
In this variant the distributed loads are divided over element domains. The resultant load is assigned
to the centroid of the load diagram, and apportioned to the element nodes by statics. A node force
is obtained by adding the contributions from all elements meeting at that node. The procedure is
illustrated in Figure 7.5, which shows details of the computation over 23. The total force at node
3, for instance, would be that contributed by segments 23 and 34. For the frequent case in which
5
It has been extensively used in the aircraft industry for smooth-varying pressure loads computations.
The computation of tributary areas and volumes for general 2D and 3D regions can be done through the so-called Voronoi
diagrams. This is an advanced topic in computational geometry (see, e.g., [194]) and thus not treated here.
76
;;;
;;;
;;;
;;;
Distributed load
intensity (load acts
downward on boundary)
centroid C of
crosshatched area
f2e
f 2e = (b/Le )P
f3e
P
a
Le=a+b
Details of element-level
force computations
Boundary
f3e = (a/Le)P
Finite element
mesh
Figure 7.5. EbE direct lumping of distributed line load, illustrated for a 2D problem.
;;;;
;;;;
;;;;
;;;;
the variation of the load over the element is linear (so the area under the load is a trapezoid) the
node forces can be computed directly by the formulas given in Figure 7.6.
If applicable, EbE is more accurate
than NbN lumping. In fact it agrees
with consistent node lumping for simple elements that possess only corner
nodes. In those cases it is not affected
by sharpness of the load variation and
can be even used for point loads that are
not applied at the nodes.
f ie = L (2qi +qj )
6
qi
qj
Le
e
f je = L6 (qi +2qj )
Figure 7.6. EbE lumping of linearly varying line load over element.
The EbE procedure is not applicable if the centroidal resultant load cannot be apportioned by statics.
This happens if the element has midside faces or internal nodes in addition to corner nodes, or if
it has rotational degrees of freedom. For those elements the variational-based consistent approach
covered in Part II and briefly outlined in 7.3.3, is preferable.
Example 7.1. Figures 7.7(a,b) show web-downloaded pictures of the Norfork Dam, a 220-ft high, concretebuilt gravity dam. Its typical cross section is shown in 7.7(c). The section is discretized by triangular elements
as illustrated in Figure 7.7(d). The dam has a length of 2624 ft and was constructed over the White River in
Arkansas over 194144.7 The structure is assumed to be in plane strain. Accordingly the FEM model shown
in 7.7(d) is a typical 1-ft slice of the dam and near-field soil.
In the analysis of dam and marine structures, a wet node of a FEM discretization is one in contact with the
water. The effect of hydrostatic pressure is applied to the structure through nodal forces on wet nodes. The wet
nodes for a water head of 180 ft over the riverbed are shown in Figure 7.8(b). Nodes are numbered 1 through
9 for convenience. The pressure in psf (lbs per sq-ft) is p = 62.4 d where d is the depth in ft. Compute the
horizontal hydrostatic nodal forces f x1 and f x2 using NbN and EbE, assuming that the wet face AB is vertical
for simplicity.
Node by Node. For node 1 go halfway to 2, a distance of (180 136)/2 = 22 ft. The tributary load area
is a triangle extending 22 ft along y with bottom pressure 62.4 22 = 1372.8 psf and unit width normal to
7
As discussed in Notes and Bibliography, this example has historical significance, as the first realistic Civil Engineering
structure modeled ca. 1960 by the Finite Element Method, which until then had been largely confined to aerospace.
77
;;;;
;;;;
;;;;
;;;;
;;
;;
;;
(a)
(c)
y
Concrete
dam
EL. 364'
200'
(b)
Water
spillway crest
188' over
riverbed
(d)
Soil
Figure 7.7. Norfork Dam: (a,b) pictures; (c) cross section of dam above foundation (line inside dam is a thermally
induced crack considered in the 1960 study); (d) coarse mesh including foundation and soil but not crack [137].
A 1 y =180
1
(a)
180 ft
2 y =136
2
3 y = 84
Water
p=62.4 d
(lbs/sq-ft)
(b)
y4 = 36
y5 = 0
5
x5 =0
x =70 All dimensions in ft.
x =210 6
Plane strain model, slice
x8 =350 7
x 9=490
1 ft thick normal to section
9
22 1
70
120
162
2
3
4
(c)
1
44
2
96
144
3
180
4
Figure 7.8. Norfork Dam example: (a) computation of wet node forces due to hydrostatic pressure;
(b) NbN tributary regions; (c) EbE regions.
paper, giving f x1 = 12 22 1372.8 = 15101 lbs. For node 2 go up 22 ft and down (136 84)/2 = 26 ft. The
tributary load area is a trapezoid extending 22 + 26 = 48 ft vertically, with pressures 1372.8 psf at the top and
62.4 70 = 4368.0 psf at the bottom. This gives f x2 = 48 (1372.8 + 4368.0)/2 = 137779 lbs.
Element by Element. It is convenient to pre-compute hydro pressures at wet node levels: p1 = 0, p2 = 62.4
44 = 2745.6 psf, p3 = 62.4 96 = 5990.4. Because the variation of p is linear, the formulas of Figure 7.6
(1)
(1)
= (44/6)(2 0 + 2745.6) = 20134 lbs, f x2
= (44/6)(0 + 2 2745.6) =
can be applied directly: f x1
(2)
= (52/6)(2 2745.6 + 5990.4) = 99507 lbs. Adding contributions to nodes 1 and 2:
40269 lbs and f x2
(1)
(1)
(2)
= 20134 lbs and f x2 = f x2
+ f x2
= 40269 + 99507 = 139776 lbs.
f x1 = f x1
The computations for wet nodes 3 through 9 are left as an exercise.
Example 7.2. Figure 7.9 shows the mesh for the y > 0 portion of the gravity dam of the previous example.
78
2
4
(1)
(7)
(6)
7
(10)
6
(8)
(12)
Node
7
8
9
10
11
12
13
14
15
16
17
18
x
*.00
*.00
*.00
*.00
*.00
*.00
*.00
*.00
*.00
*.00
*.00
*.00
y
152.00
152.00
152.00
94.00
94.00
94.00
94.00
40.00
40.00
40.00
40.00
40.00
The area of a triangle with corners at {x1 , y1 }, {x2 , y2 } 10 (9) 11 (11) 12 (13) 13
(15)
and {x3 , y3 }} is given by A = (x2 y3 x3 y2 ) + (x3 y1
(19)
(17)
x1 y3 )+(x1 y2 x2 y1 ). Applying this to the geometry of 14 (14) 15 (16) 16 (18) 17 (20) 18 (29)
(21)
(27)
the figure one finds that the areas are A(9) =, A(10) =,
(23)
(25)
19
(22)
(28)
(26)
(24)
A(11) =, A(15) =, A(16) =, and A(17) =. The weight
24
20
22
21
23
forces on each element are W (9) = h, W (10) = h,
W (11) = h, A(15) = h, A(16) = h, and A(17) = h,
Figure 7.9. Computation of weight force at node
11 of gravity dam example of Figure 7.7(d).
where h is the thickness normal to the figure (1 ft here).
For uniform element thickness and specific weight, one third of each force goes to each element corner. Thus
node 11 receives
(7.1)
f y11 = 13 (W (9) + W (10) + W (11) + W (17) + W (18) ) =
(example incomplete, TBF)
7.4.3. *Weighted Lumping
The NbN and EbE methods are restricted to simple elements, specifically those with corner nodes only. We
outline here a general method that works for more complicated models. The mathematical justification requires
energy theorems covered in Part II. Thus at this stage the technique is merely presented as a recipe.
To fix the ideas consider again the 2D situation depicted in Figures 7.4 and 7.5. Denote the distributed load
by q(x). We want to find the lumped force f n at an interior node n of coordinate xn . Let the adjacent nodes
be n 1 and n + 1, with coordinates xn1 and xn+1 , respectively. Introduce a weight function Wn (x) with
properties to be specified below. The lumped force is given by
xn+1
fn =
Wn (x) q(x) d x
(7.2)
xn1
For this formula to make sense, the weight function must satisfy several properties:
1.
2.
3.
Gives the same results as NbN or EbE for constant q over elements with corner nodes only.
Both NbN and EbE are special cases of (7.2). For NbN pick
Wn (x) = 1
For EbE pick
if
1
(xn1
2
+ xn ) x 12 (xn + xn+1 ),
xx
1 xn xn1
n1
Wn (x) =
x
x
n
1 xn+1 xn
0
if xn1 x xn ,
if xn x xn+1 ,
otherwise.
79
wn (x) = 0 otherwise.
(7.3)
(7.4)
(a)
halfway
between
n1 and n
halfway
between
n and n+1
Wn = 1
1
n1
(b)
Wn
1
n+1
n1
xn
xn
n+1
Figure 7.10. Weight functions corresponding to: (a) NbN lumping, and (b) EbE lumping.
q h (per unit
of x length)
f1 =?
f2 =?
W1 = (1)/2 = N1
3 f 3 =?
W2 = 1 = N2
2
W3= (1+)/2 = N3
2
1
= 1 2x/a
x
(As will be seen later, trial functions are the union of shape functions over the patch of all elements connected
to node n.) This important technique is studied in Part II of the course after energy methods are introduced.
Example 7.3. Conside the mesh of 9-node quadrilaterals shown in Figure 7.11. (This is later used as a
benchmark problem in Chapter 27.) The upper plate edge 13 is subject to a uniform normal load qh per unit
length, where h is the plate thickness. The problem is to compute the node forces f 1 , f 2 and f 3 . If 12 and
23 were on two different elements, both NbN and EbE would give f 1 = f 3 = 14 qha and f 2 = 12 qha. But
this lumping is wrong for an element with midside nodes. Instead, pick the weight functions Wi (i = 1, 2, 3)
shown on the right of Figure 7.11.
Since there is only one element on the loaded edge, the Wi are actually the quadratic shape functions Ni for
a 3-node line element, developed in later Chapters. The dimensionless variable is called an isoparametric
natural coordinate. Applying the rule (7.2) we get
f1 =
0
dx
d =
W1 (x) q h d x =
W1 ( ) q h
d
1
1
1
12 (1 )q h ( 12 a) d = 16 qha.
(7.5)
Similarly f 2 = 23 qha and f 3 = f 1 . As a check, f 1 + f 2 + f 3 = qha, which is the total load acting on the
plate edge.
710
(b)
(c)
;
;
;;;; ;;;;
; ;;
B
SUPPORT CONDITIONS
;;
;;
(a)
;;;
;
;;;;
;
7.6
;
;;;
B
For example, the engine of a car is attached to the vehicle frame through mounts. The car frame becomes the ground
structure, which moves with respect to Earth ground, as Earth rotates and moves through space, etc.
711
freedom directed along the normal to the AB direction at point B. This body is free to distort in any
manner without the supports imposing any deformation constraints.
Engineers call A and B reaction-to-ground points. This means that if the supports are conceptually
removed, applied loads are automatically balanced by reactive forces at A and B, in accordance
with Newtons third law. Additional freedoms may be precluded to model greater restraint by the
environment. However, Figure 7.12(a) does illustrate the minimal number of constraints.
Figure 7.12(b) is a simplification of Figure 7.12(a). Here the line AB is parallel to the global y
axis. We simply delete the x and y translations at point A, and the x translation at point B. If the
roller support at B is modified as in Figure 7.12(c), however, it becomes ineffective in constraining
the infinitesimal rotational motion about point A because the rolling direction is normal to AB.
The configuration of Figure 7.12(c) is called a kinematic mechanism, and will result in a singular
modified stiffness matrix.
Figure 7.13 illustrates the extension of the freedomrestraining concept to three dimensions. The minimal
number of freedoms that have to be constrained is now
six and many combinations are possible. In the example
of Figure 7.13, all three degrees of freedom at point A
have been fixed. This prevents all rigid body translations,
and leaves three rotations to be taken care of. The x
displacement component at point B is deleted to prevent
rotation about z, the z component is deleted at point C to
prevent rotation about y, and the y component is deleted
at point D to prevent rotation about x.
;
;
;;;;;
;;;;;
; ;;
y
;
;
Even if symmetry or antisymmetry are not explicitly applied through boundary conditions, they provide valuable checks
on the computed solution.
712
Symmetry
line
(b)
(a)
A'
loads
Antisymmetry
line
A'
A"
A"
displacement
vectors
;;
;
A
C
B
D
;;
;;
;;
(b)
Consider the plate structure shown in Figure 7.15(a). This structure is symmetrically loaded on the
x-y plane. Applying the recognition patterns stated above one concludes that the structure is doubly
symmetric in both geometry and loading. It is evident that no displacements in the x-direction are
possible for any point on the y-axis, and that no y displacements are possible for points on the x
axis. A finite element model of this structure may look like that shown in Figure 7.15(b).
On the other hand if the loading is antisymmetric, as illustrated in Figure 7.16(a), the x axis becomes
an antisymmetry line as none of the y = 0 points can move along the x direction. The boundary
conditions to be imposed on the FE model are also different, as shown in Figure 7.16(b).
Remark 7.3. For the case shown in Figure 7.16(b) note that all rollers slide in the same direction. Thus
the vertical rigid body motion along y is not precluded. To do that, one node has to be constrained in the y
direction. If there are no actual physical supports, the choice is arbitrary and amounts only to an adjustment
on the overall (rigid-body) vertical motion. In Figure 7.16(b) the center point C has been so chosen. But any
other node could be selected as well; for example A or D. The important thing is not to overconstrain the
structure by applying more than one y constraint.
713
y
(a)
(b)
B
;;
;;;;
A
Remark 7.4. Point loads acting at nodes located on symmetry or antisymmetry lines require special care. For
example, consider the doubly symmetric plate structure of Figure 7.15 under the two point loads of magnitude
P, as pictured in Figure 7.17(a). If the structure is broken down into 4 quadrants as in Figure 7.17(b), P must
be halved as indicated in Figure 7.17(c). The same idea applies to point loads on antisymmetry lines, but there
the process is trickier, as illustrated in Figure 7.18. The load must not be applied if the node is fixed against
motion, since then the node force will appear as a reaction.
(a)
(b)
A
P/2
P/2
;;
;;
;;
P/2
;;;
;
;;
;
(c)
P/2
P/2
2P
;;
;
;;
;;
;;
;;
;;
;
;
;;;;
;
;;;;
;;
;;
P/2
P/2
Distributed loads should not be divided when the structure is broken down into pieces, since the lumping
process will take care of the necessary apportionment to nodes.
714
7.
References
715
P
C
A
;;
E
D
;;
EXERCISE 7.1 [D:10] The plate structure shown in Figure E7.1 is loaded and deforms in the plane of the
paper. The applied load at D and the supports at I and N extend over a fairly narrow area. List what you
think are the likely trouble spots that would require a locally finer finite element mesh to capture high stress
gradients. Identify those spots by its letter and a reason. For example, D: vicinity of point load.
EXERCISE 7.2 [D:15] Part of a two-dimensional FE mesh has been set up as indicated in Figure E7.2.
Region ABC D is still unmeshed. Draw a transition mesh within that region that correctly merges with the
regular grids shown, uses 4-node quadrilateral elements (quadrilaterals with corner nodes only), and avoids
triangles. Note: There are several (equally acceptable) solutions.
EXERCISE 7.3 [A:15] A rectangular plate of constant thickness h and inplane dimensions 8a and 6a is
meshed with 8 rectangular elements as shown in Figure E7.3(a). The plate specific weight is and acts along
the y axis direction.
(a)
Compute the node forces due to plate weight at nodes 1 through 15, using the NbN method. Obtain the
node-tributary regions as sketched in Figure E7.3(b), which shows each element divided by the medians
drawn as dashed lines (the tributary region of node 7 is shown in yellow). Partial answer: f y1 = 2a 2 h.
Check that adding up all y forces at the 15 nodes one gets W = 48a 2 h.
(b)
Repeat the computations using the EbE method. For this, take the total weight force on each element,
and assign one quarter to each corner node. (This agrees with consistent energy lumping for 4-node
rectangular elements.) Do the results agree with NbN lumping?
716
Exercises
Plate thickness h,
specific weight
(a)
(b)
5
y
(1)
(2)
(3)
(4)
6a
2a
11
(5)
12
(6)
(7)
13
10
10
(8)
14
15
11
12
13
14
15
8a
Figure E7.3. (a) Mesh layout for Exercise 7.3. (b) shows tributary area for node 7.
EXERCISE 7.4 [N/C:20] Complete the computation of hydrostatic node forces on the Norfork Dam under a
water head of 180 ft, initiated in Example 7.1, using the data of Figure 7.8, and either the NbN or EbE method
(pick one). Assume face AB is vertical. Do two checks: sum of horizontal (x) forces on nodes 1 through 5 is
1
1802 62.4 lbs, and sum of vertical (y) forces on nodes 5 through 9 is 180 62.4 490 lbs.
2
;;;;
;;;;
;;;;
;;;;
;;;;
EXERCISE 7.5 [N/C:25] Complete the computation of own weight nodal forces of the coarse mesh of the
Norfork dam proper, initiated in Example 7.2, reusing the data of Figure 7.9. Use the EbE method. Recover
coordinates, and write a computer program to compute node forces. Compute the total weight of the dam slice
in lbs.
EXERCISE 7.6 [A:10] Figure E7.4 depicts
(a)
Load
transfer
Steel
Concrete
(b)
Load
transfer
A
Plastic
Concrete
EXERCISE 7.7 [D:20] Identify the symmetry and antisymmetry lines in the two-dimensional problems
illustrated in Figure E7.5. They are: (a) a circular disk under two diametrically opposite point forces (the
famous Brazilian test for concrete); (b) the same disk under two diametrically opposite force pairs; (c) a
clamped semiannulus under a force pair oriented as shown; (d) a stretched rectangular plate with a central
circular hole. Finally (e) and (f) are half-planes under concentrated loads.10
Having identified those symmetry/antisymmetry lines, state whether it is possible to cut the complete structure
to one half or one quarter before laying out a finite element mesh. Then draw a coarse FE mesh indicating, with
10
Note that (e) is the famous Flamants problem, which is important in the 2D design of foundations of civil structures.
The analytical solution of (e) and (f) may be found, for instance, in Timoshenko-Goodiers Theory of Elasticity, 2nd
Edition, page 85ff.
717
(a)
(b)
P
;; ;;
P
(c)
(d)
45
fixed
(e)
(uniform)
center
hole
45o
(f)
rollers or fixed supports, which kind of displacement BCs you would specify on the symmetry or antisymmetry
lines. Note: Do all sketches on your paper, not on the printed figures.
EXERCISE 7.8 [D:20] You (a finite element guru) pass away and come back to the next life as an intelligent
but hungry bird. Looking around, you notice a succulent big worm taking a peek at the weather. You grab one
end and pull for dinner; see Figure E7.6.
After a long struggle, however, the worm wins. While hungrily looking for a smaller one your thoughts wonder
to FEM and how the worm extraction process might be modeled so you can pull it out more efficiently. Then
you wake up to face this homework question. Try your hand at the following worm modeling points.
(a)
The worm is simply modeled as a string of one-dimensional (bar) elements. The worm axial force is
of course constant from the beak B to ground level G, then decreases rapidly because of soil friction
(which varies roughly as plotted in the figure above) and drops to nearly zero over D E. Sketch how a
good worm-element mesh should look like to capture the axial force well.
(b)
On the above model, how would you represent boundary conditions, applied forces and friction forces?
(c)
Next you want a more refined anaysis of the worm that distinguishes skin and insides. What type of
finite element model would be appropriate?
(d)
(Advanced) Finally, point out what need to be added to the model of (c) to include the soil as an elastic
medium.
718
Exercises
B
;
;
;
;
;
;
;
;
;;;;;;;;
G
friction force on
worm surface
(a)
Two symmetry lines in 2D cannot cross at a finite point, unless that point is fixed.
(b)
Two antisymmetry lines in 2D cannot cross at a finite point, unless that point is fixed.
(c)
A symmetry line and an antisymmetry line must cross at right angles, unless the cross point is fixed.
Note: proofs of (a,b,c) are very similar; just draw vectors at alleged intersections.
EXERCISE 7.10 [A/D:15] A 2D body has n > 1 symmetry lines passing through a point C and spanning an
angle /n from each other. This is called sectorial symmetry if n 3. Draw a picture for n = 5, say for a car
wheel. Explain why point C is fixed.
EXERCISE 7.11 [A/D:25, 5 each] A body is in 3D space. The analogs of symmetry and antisymmetry lines
are symmetry and antisymmetry planes, respectively. The former are also called mirror planes.
(a)
State the kinematic properties of symmetry and antisymmetric planes, and how they can be identified.
(b)
Two symmetry planes intersect. State the kinematic properties of the intersection line.
(c)
A symmetry plane and an antisymmetry plane planes intersect. State the kinematic properties of the
intersection line. Can the angle between the planes be arbitrary?
(d)
(e)
Three symmetry planes intersect. State the kinematic properties of the intersection point.
EXERCISE 7.12 [A:25] A 2D problem is called periodic in the x direction if all fields, in particular displace-
ments, repeat upon moving over a distance a > 0: u x (x + a, y) = u x (x, y) and u y (x + a, y) = u y (x, y). Can
this situation be treated by symmetry and/or antisymmetry lines?
EXERCISE 7.13 [A:25] Extend the previous exercise to antiperiodicity, in which u x (x + a, y) = u x (x, y)
and u y (x + a, y) = u y (x, y).
EXERCISE 7.14 [A:20] Prove that EbE and energy consistent lumping agree if the element shape functions
719
MultiFreedom
Constraints I
81
TABLE OF CONTENTS
Page
8.1.
8.2.
8.3.
8.4.
8.5.
8.
8.
8.
82
. . . . . .
. . . . .
. . . . . .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
.
.
.
.
. . . . . .
. . . . .
. . . . . .
83
83
84
85
86
87
87
88
89
810
810
811
813
814
814
815
8.1
(8.1)
These are called single-freedom constraints. Chapter 3 explains how to incorporate constraints of
this form into the master stiffness equations, using hand- or computer-oriented techniques. The
displacement boundary conditions studied in Chapter 7, which include modeling of symmetry and
antisymmetry, lead to constraints of this form.
For example:
u x4 = 0,
u y9 = 0.6.
(8.2)
These are two single-freedom constraints. The first one is homogeneous while the second one is
non-homogeneous. These attributes are defined below.
8.1.1. MultiFreedom Constraints
The next step up in complexity involves multifreedom equality constraints, or multifreedom constraints for short, the last name being acronymed to MFC. These are functional equations that
connect two or more displacement components:
F(nodal displacement components) = prescribed value,
(8.3)
where function F vanishes if all its nodal displacement arguments do. Equation (8.3), in which all
displacement components are in the left-hand side, is called the canonical form of the constraint.
An MFC of this form is called multipoint or multinode if it involves displacement components at
different nodes. The constraint is called linear if all displacement components appear linearly on
the left-hand-side, and nonlinear otherwise.
The constraint is called homogeneous if, upon transfering all terms that depend on displacement
components to the left-hand side, the right-hand side the prescribed value in (8.3) is zero.
It is called non-homogeneous otherwise.
In this and next Chapter only linear constraints will be studied. Furthermore more attention is
devoted to the homogeneous case, because it arises more frequently in practice.
Remark 8.1. The most general constraint class is that of inequality constraints, such as u y5 2u x2 0.5.
These constraints are relatively infrequent in linear structural analysis, except in problems that involve contact
conditions. They are of paramount importance, however, in other fields such as optimization and control.
83
Apply MFCs
by
master-slave
penalty functions
Lagrange multipliers
^ ^ ^
Modified stiffness equations K u
=f
^
Equation solver returns u
Recover u if necessary
Figure 8.1. Schematics of MFC application.
u x2 = 12 u y2 ,
u x2 2u x4 + u x6 = 14 ,
(x5 + u x5 x3 u x3 )2 + (y5 + u y5 y3 u y3 )2 = 0.
(8.4)
The first one is linear and homogeneous. It is not a multipoint constraint because it involves the displacement
components of one node: 2.
The second one is multipoint because it involves three nodes: 2, 4 and 6. It is linear and non-homogeneous.
The last one is multipoint, nonlinear and homogeneous. Geometrically it expresses that the distance between
nodes 3 and 5 in two-dimensional motions on the {x, y} plane remains constant. This kind of constraint appears
in geometrically nonlinear analysis of structures, which is a topic beyond the scope of this book.
MFC
u = f.
K
(8.5)
The modification process (8.5) is also called constraint application or constraint imposition. The
Master-Slave Elimination. The degrees of freedom involved in each MFC are separated into
master and slave freedoms. The slave freedoms are then explicitly eliminated. The modified
equations do not contain the slave freedoms.
2.
Penalty Augmentation. Also called the penalty function method. Each MFC is viewed as
the presence of a fictitious elastic structural element called penalty element that enforces it
approximately. This element is parametrized by a numerical weight. The exact constraint
84
is recovered if the weight goes to infinity. The MFCs are imposed by augmenting the finite
element model with the penalty elements.
3.
Lagrange Multiplier Adjunction. For each MFC an additional unknown is adjoined to the
master stiffness equations. Physically this set of unknowns represent constraint forces that
would enforce the constraints exactly should they be applied to the unconstrained system.
For each method the exposition tries to give first the basic flavor by working out the same example
for each method. The general technique is subsequently presented in matrix form for completeness
but is considered an advanced topic.
Conceptually, imposing MFCs is not different from the procedure discussed in Chapter 3 for singlefreedom constraints. The master stiffness equations are assembled ignoring all constraints. Then
the MFCs are imposed by appropriate modification of those equations. There are, however, two
important practical differences:
1.
The modification process is not unique because there are alternative constraint imposition
methods, namely those listed above. These methods offer tradeoffs in generality, programming
implementation complexity, computational effort, numerical accuracy and stability.
2.
Remark 8.2. The three methods are also applicable, as can be expected, to the simpler case of a single-freedom
constraint such as (8.2). For most situations, however, the generality afforded by the penalty function and
Lagrange multiplier methods are not warranted. The hand-oriented reduction process discussed in Chapters 3
and 4 is in fact a special case of the master-slave elimination method in which there is no master.
Remark 8.3. Often both multifreedom and single-freedom constraints are prescribed. The modification
process then involves two stages: apply multifreedom constraints and apply single freedom constraints. The
order in which these are carried out is implementation dependent. Most implementations do the MFCs first,
either after the assembly is completed or during the assembly process. The reason is practical: single-freedom
constraints are often automatically taken care of by the equation solver itself.
8.1.3. *MFC Matrix Forms
Matrix forms of linear MFCs are often convenient for compact notation. An individual constraint such as the
second one in (8.4) may be written
[1
1]
u x2
u x4
u x6
= 0.25.
(8.6)
(no sum on i)
(8.7)
in which index i (i = 1, 2, . . .) identifies the constraint, a i is a row vector, u i collects the set of degrees of
freedom that participate in the constraint, and gi is the right hand side scalar (0.25 in the foregoinf example).
The bars over a and u distinguishes (8.7) from the expanded form (8.9) discussed below.
For method description and general proofs it is often convenient to expand matrix forms so that they embody all
degrees of freedom. For example, if (8.6) is part of a two-dimensional finite element model with 12 freedoms:
85
u 1 , f1
u 2 , f2
(1)
(2)
u 3 , f3
u4 , f4
(3)
u5 , f5
(4)
u6 , f 6
(5)
u7 , f7
(6)
x
7
u x1 , u y1 , . . . u y6 , the left-hand side row vector may be expanded with nine zeros as follows
u
x1
u y1
[ 0 0 1 0 0 0 2 0 0 0 1 0 ] u x2 = 0.25,
..
(8.8)
.
u y6
(8.9)
is used. Finally, all multifreedom constraints expressed as (8.9) may be collected into a single matrix relation:
A u = g,
(8.10)
in which rectangular matrix A is formed by stacking the ai s as rows and column vector g is formed by stacking
the gi s as entries. If there are 12 degrees of freedom in u and 5 multifreedom constraints then A will be 5 12.
K 11
K
12
0
0
K 12
K 22
K 23
0
0
0
0
0
K 23
K 33
K 34
0
0
0
0
0
K 34
K 44
K 45
0
0
0
0
0
K 45
K 55
K 56
0
0
0
0
0
K 56
K 66
K 67
0
u1
0 u2
0 u3
0 u4 =
0 u5
K 67
u6
K 77
u7
f1
f2
f3
f4 ,
f5
f6
f7
(8.11)
or
Ku = f.
(8.12)
The nonzero stiffness coefficients K i j in (8.11) depend on the bar rigidity properties. For example, if
E e Ae /L e = 100 for each element e = 1, . . . , 6, then K 11 = K 77 = 100, K 22 = . . . = K 66 = 200,
K 12 = K 23 = . . . = K 67 = 100. However, for the purposes of the following treatment the
86
8.3
coefficients may be kept arbitrary. The component index x in the nodal displacements u and nodal
forces f has been omitted for brevity.
Now let us specify a multifreedom constraint that states that nodes 2 and 6 must move by the same
amount:
(8.13)
u2 = u6.
Passing all node displacements to the right hand side gives the canonical form:
u 2 u 6 = 0.
(8.14)
Constraint conditions of this type are sometimes called rigid links because they can be mechanically
interpreted as forcing node points 2 and 6 to move together as if they were tied by a rigid member.1
We now study the imposition of constraint (8.14) on the master equations (8.11) by the methods
mentioned above. In this Chapter the master-slave method is treated. The other two methods:
penalty augmentation and Lagrange multiplier adjunction, are discussed in the following Chapter.
8.3. The Master-Slave Method
To apply this method by hand, the MFCs are taken one at a time. For each constraint a slave degree
of freedom is chosen. The freedoms remaining in that constraint are labeled master. A new set
of degrees of freedom u is established by removing all slave freedoms from u. This new vector
contains master freedoms as well as those that do not appear in the MFCs. A matrix transformation
equation that relates u to u is generated. This equation is used to apply a congruent transformation
to the master stiffness equations. This procedure yields a set of modified stiffness equations that
Because the modified system does not contain the
are expressed in terms of the new freedom set u.
slave freedoms, these have been effectively eliminated.
8.3.1. A One-Constraint Example
The mechanics of the process is best seen by going through an example. To impose (8.14) pick u 6
as slave and u 2 as master. Relate the original unknowns u 1 , . . . u 7 to the new set in which u 6 is
missing:
u1
1 0 0 0 0 0
u1
u2 0 1 0 0 0 0
u
u3 0 0 1 0 0 0 2
u
(8.15)
u4 = 0 0 0 1 0 0 3 ,
u4
u
0
0
0
0
1
0
5
u5
u6
0 1 0 0 0 0
u7
u7
0 0 0 0 0 1
This is the required transformation relation. In compact form:
u = Tu
1
(8.16)
This physical interpretation is exploited in the penalty method described in the next Chapter. In two and three dimensions
rigid link constraints are more complicated.
87
Replacing (8.15) into (8.12) and premultiplying by TT yields the modified system
u = f,
K
in which
= TT K T,
K
f = TT f.
(8.17)
K 11
K 12
0
0
0
0
u1
f1
0
K 56 K 67 u 2 f 2 + f 6
K 12 K 22 + K 66 K 23
K 23
K 33 K 34
0
0 u 3 f3
0
=
,
0 u 4 f4
0
K 34 K 44 K 45
0
0
K 45 K 55
0
u5
f5
0
K 56
0
0
0
K 77
u7
f7
0
K 67
(8.18)
Equation (8.18) is a new linear system containing 6 equations in the remaining 6 unknowns: u 1 ,
u 2 , u 3 , u 4 , u 5 and u 7 . Upon solving it, u 6 is recovered from the constraint (8.13).
Remark 8.4. The form of modified system (8.17) can be remembered by a simple mnemonic rule: premultiply
u 4 and there is no master. The congruent transformation is then nothing more than the elimination of u 4 by
striking out rows and columns from the master stiffness equations.
Remark 8.6. For a simple MFC such as u 2 = u 6 , it does not matter which degree of freedom is chosen as
master or unknown. Choosing u 2 as slave produces a system of equations in which now u 2 is missing:
11
0
0
K 12
0
0
K 33
K 34
0
K 23
0
0
K 34
K 44
K 45
0
0
0
0
K 45
K 55
K 56
0
K 12
K 23
0
K 56
K 22 + K 66
K 67
0
u1
f1
0 u 3 f3
0
u 4 = f4 .
0 u 5 f5
K 67
u6
f2 + f6
K 77
u7
f7
(8.19)
Although (8.18) and (8.19) are algebraically equivalent, the latter would be processed faster if a skyline solver
(Part III of course) is used for the modified equations.
u 1 + 4u 4 = 0,
2u 3 + u 4 + u 5 = 0,
(8.20)
Picking as slave freedoms u 6 , u 4 and u 3 from the first, second and third constraint, respectively, we
can solve for them as
u6 = u2,
u 4 = 14 u 1 ,
u 3 = 12 (u 4 + u 5 ) = 18 u 1 12 u 5 .
88
(8.21)
8.3
Observe that solving for u 3 from the third constraint brings u 4 to the right-hand side. But because
u 4 is also a slave freedom (it was chosen as such for the second constraint) it is replaced in favor of
u 1 using u 4 = 14 u 1 . The matrix form of the transformation (8.21) is
1
u1
0
u2
1
u3
81
u4 = 4
u5 0
u6
0
u7
0
0
0
0 u1
u2
0
u5 ,
0 u7
0
1
0 0
1 0
0 12
0
0
1
0
0
1
0
0
(8.22)
The modified system is now formed through the congruent transformation (8.17). Note that the
slave freedoms selected from each constraint must be distinct; for example the choice u 6 , u 4 , u 4
would be inadmissible as long as the constraints are independent. This rule is easy to enforce when
slave freedoms are chosen by hand, but can lead to implementation and numerical difficulties when
it is programmed as an automated procedure, as further discussed later.
Remark 8.7. The three MFCs (8.20) with u 6 , u 4 and u 2 chosen as slaves and u 1 , u 2 and u 5 chosen as masters,
may be presented in the partitioned matrix form:
0
0
2
0 1
4 0
1 0
u3
u4
u6
0
1
0
1
0
0
0
0
1
u1
u2
u5
(8.23)
This may be compactly written As us + Am um = 0. Solving for the slave freedoms gives us = A1
s A m um .
Expanding with zeros to fill out u and u produces (8.22). This general matrix form is considered in 8.4.4.
Note that non-singularity of As is essential for this method to work.
(8.24)
Nonzero RHS values such as 0.2 in (8.24) may be often interpreted physically as gaps (thus the
use of the symbol g in the matrix form). Chose u 6 again as slave: u 6 = u 2 0.2, and build the
transformation
0
1 0 0 0 0 0
u1
u1
0
u2 0 1 0 0 0 0
u
u3 0 0 1 0 0 0 2 0
u3
(8.25)
u4 = 0 0 0 1 0 0 + 0 .
u4
u
0
0
0
0
0
1
0
u5
u6
0.2
0 1 0 0 0 0
u7
u7
0
0 0 0 0 0 1
In compact matrix notation,
u = T u + g.
(8.26)
89
Here the constraint gap vector g is nonzero and T is the same as before. To get the modified system
applying the shortcut rule of Remark 8.4, premultiply both sides of (8.26) by TT K, replace Ku by
f, and pass the data to the RHS:
u = f,
K
in which
= TT K T,
K
f = TT (f K g).
(8.27)
the complete displacement vector is recovered from (8.26). For the MFC
Upon solving (8.27) for u,
(8.24) this technique gives the system
K 11
K 12
0
0
K 12
K 22 + K 66
K 23
0
K 56
K 67
0
K 23
K 33
K 34
0
0
0
0
K 34
K 44
K 45
0
0
K 56
0
K 45
K 55
0
0
u1
f1
K 67 u 2 f 2 + f 6 0.2K 66
0 u3
f3
=
.
0 u4
f4
0
u5
f 5 0.2K 56
K 77
u7
f 7 0.2K 67
(8.28)
Kuu
T
Kum
T
Kus
Kum
Kmm
T
Kms
Kus
Kms
Kss
uu
um
us
=
fu
fm
fs
(8.29)
(8.30)
where As is assumed square and nonsingular. If so we can solve for the slave freedoms:
1
us = A1
s Am um + As g A = T um + g,
def
(8.31)
Inserting into the partitioned stiffness equations (8.30) and symmetrizing yields
Kuu
symm
Kmm
Kum + Kus T
T
T
+ T Kms
+ Kms T + TT Kss T
uu
um
fu Kus g
fm Kms g
(8.32)
810
8.4
u 1 , f1
u 2 , f2
(1)
(2)
u 3 , f3
u4 , f4
(3)
u5 , f5
(4)
u6 , f 6
(5)
u7 , f7
(6)
x
7
u 1, f1
u 7, f7
x
1
7
5 slave DOFs to be eliminated
Master
Master
u 7, f7
u 1, f1
Reduced model
Figure 8.3. Model reduction of the example structure of Figure 8.2 to the end freedoms.
With a bit of trickery it is possible to maintain the original freedom ordering. Let us display it for the example
problem under (8.14). Instead of (8.15), use the square transformation
u1
1
u
2 0
u3 0
u4 = 0
u5 0
u6
0
u7
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
u1
0 u2
0
u3
0
u4 ,
0 u5
u 6
0
u7
1
(8.33)
in which u 6 is a placeholder for the slave freedom u 6 . The modified equations are
K 11
K
12
0
0
0
K 12
K 22 + K 66
K 23
0
K 56
0
K 67
0
K 23
K 33
K 34
0
0
0
0
0
K 34
K 44
K 45
0
0
0
0
0
K 45
K 55
0
0
0
K 56
0
0
0
0
0
0
0
0
0
0
0
0
0
u1
f1
K 67 u 2 f 2 + f 6
0
u 3 f3
0 u 4 = f4
,
0 u 5 f5
u 6
0
0
K 77
u7
f7
(8.34)
which are submitted to the equation solver. If the solver is not trained to skip zero rows and columns, a one
should be placed in the diagonal entry for the u 6 (sixth) equation. The solver will return u 6 = 0, and this
placeholder value is replaced by u 2 . Note several points in common with the computer-oriented placeholder
technique described in 3.4 to handle single-freedom constraints.
Figure 8.4. Mathematica script for the model reduction example of Figure 8.3.
u1
1
5/6
u
2
u 3 4/6
u 4 = 3/6
u 5 2/6
u6
1/6
u7
0
0
1/6
2/6
u1
3/6
u ,
4/6 7
5/6
1
812
or
u = T u.
(8.35)
8.5
u = TT KTu = TT f = f, or in detail
The reduced-order-model (ROM) equations are K
K 11
K 17
K 17
f
u1
= 1 ,
K 77
f7
u7
(8.36)
in which
K 11 =
K 17 =
K 77 =
f1 =
1
(36K 11 +60K 12 +25K 22 +40K 23 +16K 33 +24K 34 +9K 44 +12K 45 +4K 55 +4K 56 +K 66 ),
36
1
(6K 12 +5K 22 +14K 23 +8K 33 +18K 34 +9K 44 +18K 45 +8K 55 +14K 56 +5K 66 +6K 67 ),
36
1
(K 22 +4K 23 +4K 33 +12K 34 +9K 44 +24K 45 +16K 55 +40K 56 +25K 66 +60K 67 +36K 77 ),
36
1
(6 f 1 +5 f 2 +4 f 3 +3 f 4 +2 f 5 + f 6 ), f7 = 16 ( f 2 +2 f 3 +3 f 4 +4 f 5 +5 f 6 +6 f 7 ).
6
(8.37)
This reduces the order of the FEM model from 7 to 2. A Mathematica script to do the reduction is shown in
Figure 8.4. The key feature is that the masters are picked a priori, as the freedoms to be retained in the model
for further use.
Remark 8.8. Model reduction can also be done by the static condensation method explained in Chapter 10.
As its name indicates, condensation is restricted to static analysis. On the other hand, for such problems it is
exact whereas model reduction by kinematic constraints generally introduces approximations.
The equations may have to be rearranged because of the disappearance of the slave freedoms.
This drawback can be alleviated, however, through the placeholder trick outlined in 8.3.5.
2.
An auxiliary linear system, namely (8.31), has to be assembled and solved to produce the
transformation matrix T and vector g.
3.
The transformation process may generate many additional matrix terms. If a sparse matrix
storage scheme is used for K, the logic for allocating memory and storing these entries can be
difficult and expensive.
The level of complexity depends on the generality allowed as well as on programming decisions. If
K is stored as full matrix and slave freedom coupling in the MFCs is disallowed the logic is simple.2
On the other hand, if arbitrary couplings are permitted and K is placed in secondary (disk) storage
according to some sparse scheme, the complexity can become overwhelming.
Another, more subtle, drawback of this method is that it requires decisions as to which degrees
of freedom are to be treated as slaves. This can lead to implementation and numerical stability
problems. Although for disjointed constraints the process can be programmmed in reliable form, in
more general cases of coupled constraint equations it can lead to incorrect decisions. For example,
suppose that in the example problem you have the following two MFCs:
1
u
6 2
2
+ 12 u 4 = u 6 ,
u 3 + 6u 6 = u 7 .
This is the case in model reduction, since each slave freedom appears in one and only one MFC.
813
(8.38)
For numerical stability reasons it is usually better to pick as slaves the freedoms with larger coefficients. If this is done, the program would select u 6 as slave freedoms from both constraints.
This leads to a contradiction because having two constraints we must eliminate two slave degrees
of freedom, not just one. The resulting modified system would in fact be inconsistent. Although
this defect can be easily fixed by the program logic in this case, one can imagine the complexity
burden if faced with hundreds or thousands of MFCs.
Serious numerical problems can arise if the MFCs are not independent. For example:
1
u
6 2
= u6,
1
u
5 3
+ 6u 6 = u 7 ,
u 2 + u 3 u 7 = 0.
(8.39)
The last constraint is an exact linear combination of the first two. If the program blindly choses
u 2 , u 3 and u 7 as slaves, the modified system is incorrect because we eliminate three equations
when in fact there are only two independent constraints. Exact linear dependence, as in (8.39), can
be recognized by a rank analysis of the As matrix defined in (8.30). In floating-point arithmetic,
however, such detection may fail because that kind of computation is inexact by nature.3
The complexity of slave selection is in fact equivalent to that of automatically selecting kinematic
redundancies in the Force Method of structural analysis. It has led implementors of programs that
use this method to require masters and slaves be prescribed in the input data, thus transfering the
burden to users.
The method is not generally extendible to nonlinear constraints without case by case programming.
In conclusion, the master-slave method is useful when a few simple linear constraints are imposed
by hand. As a general purpose technique for finite element analysis it suffers from complexity and
lack of robustness. It is worth learning, however, because of the great importance of congruent
transformations in model reduction for static and dynamic problems.
Notes and Bibliography
Multifreedom constraints are treated in several of the FEM books recommended in 1.7.5, notably Zienkiewicz
and Taylor [830]. The master-slave method was incorporated to treat MFCs as part of the DSM developed at
Boeing during the 1950s. It is first summarily described in the DSM-overview by Turner, Martin and Weikel
[761, p. 212]. The implementation differs, however, from the one described here because the relation of FEM
to energy methods was not clear at the time.
The master-slave method became popular through its adoption by the general-purpose NASTRAN code developed in the late 1960s [20] and early assessments of its potential [745]. The implementation unfortunately
relied on user inputs to identify slave DOFs. Through this serious blunder the method gained a reputation for
unreliability that persists to the present day.
The important application of master-slave to model reduction, which by itself justifies teaching the method, is
rarely mentioned in FEM textbooks.
References
Referenced items have been moved to Appendix R.
The safest technique to identify dependencies is to do a singular-value decomposition (SVD) of As . This can be, however,
prohibitively expensive if one is dealing with hundreds or thousands of constraints.
814
Exercises
EXERCISE 8.1 [C+N:20] The example structure of Figure 8.1 has E e Ae /L e = 100 for each element
26.5
0.275
3
0.250
4
0.185
18.5
0.070
0.140 ]T
7 ]T
(E8.1)
Use Mathematica or Matlab to do the algebra is recommended. For example, the Mathematica script of
Figure E8.1 solves this Exercise.
815
EXERCISE 8.2 [C+N:25] As in the previous Exercise but applying the following three MFCs, two of which
are non-homogeneous:
u 2 u 6 = 1/5,
u 3 + 2u 4 = 2/3,
2u 3 u 4 + u 5 = 0.
(E8.2)
Hint. Chose u 4 , u 5 and u 6 as slaves. Much of the script shown for Exercise 8.1 can be reused. The main
changes are in the formation of T and g. If you are a Mathematica wizard (or willing to be one) those can be
automatically formed by the statements listed in Figure E8.2.
sol=Simplify[Solve[{u2-u6==1/5, u3+2*u4==-2/3,2*u3-u4+u5==0},{u4,u5,u6}]];
ums={u1,u2,u3,u4,u5,u6,u7}/.sol[[1]]; um={u1,u2,u3,u7};
T=Table[Coefficient[ums[[i]],um[[j]]],{i,1,7},{j,1,4}];
g=ums/.{u1->0,u2->0,u3->0,u4->0,u5->0,u6->0,u7->0};
Print["Transformation matrix T=",T//MatrixForm];
Print["Gap vector g=",g];
If you do this, explain what it does and why it works. Otherwise form and enter T and g by hand. The
numerical results (shown to 5 places) should be
u = [ 0. 0.043072 0.075033
Ku = [ 4.3072
16.118
10.268
0.29582
37.085
0.14575
16.124
0.15693
8.1176
0.086928 ]T ,
7. ]T .
(E8.3)
EXERCISE 8.3 [A:25] Can the MFCs be pre-processed to make sure that no slave freedom in a MFC appears
as master in another?
EXERCISE 8.4 [A:25] In the general case discussed in 8.4.4, under which condition is the matrix As of
(8.30) diagonal and thus trivially invertible?
EXERCISE 8.5 [A:25] Work out the general technique by which the unknowns need not be rearranged, that
is, u and u are the same. Use placeholders for the slave freedoms. (Hint: use ideas of 3.4).
EXERCISE 8.6 [A/C:35] Is it possible to establish a slave selection strategy that makes As diagonal or
triangular? (This requires knowledge of matrix techniques such as pivoting.)
EXERCISE 8.7 [A/C:40] Work out a strategy that produces a well conditioned As by selecting new slaves as
linear combinations of finite element freedoms if necessary. (Requires background in numerical analysis and
advanced programming experience in matrix algebra).
816
MultiFreedom
Constraints II
91
TABLE OF CONTENTS
Page
9.1
9.2
9.3
9.4
9.5
9.
9.
9.
Introduction
. . . . . . . . . . . . . . . . . . . . .
The Penalty Method . . . . . . . . . . . . . . . . . .
9.2.1
Physical Interpretation of Penalty Method . . . . . . . .
9.2.2
Choosing the Penalty Weight . . . . . . . . . . . .
9.2.3
The Square Root Rule
. . . . . . . . . . . . . .
9.2.4
Penalty Elements for General MFCs
. . . . . . . . .
9.2.5
*The Theory Behind the Penalty Method
. . . . . . . .
9.2.6
Assessment of the Penalty Method . . . . . . . . . .
Lagrange Multiplier Adjunction
. . . . . . . . . . . . . .
9.3.1
Physical Interpretation . . . . . . . . . . . . . .
9.3.2
Lagrange Multipliers for General MFCs
. . . . . . . .
9.3.3
*The Theory Behind Lagrange Multipliers
. . . . . . .
9.3.4
Assessment of the Lagrange Multiplier Method . . . . . .
*The Augmented Lagrangian Method
. . . . . . . . . . .
Summary
. . . . . . . . . . . . . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
92
93
93
93
93
94
95
96
97
98
98
99
910
910
910
911
911
912
913
9.2
9.1. Introduction
In this Chapter we continue the discussion of methods to treat multifreedom constraints (MFCs). The
master-slave method described previously was easy to explain, but exhibits serious shortcomings for
treating arbitrary constraints (although the method has important applications to model reduction).
We now pass to the study of two other methods: penalty augmentation and Lagrange multiplier
adjunction. Both techniques are better suited to general implementations of the Finite Element
Method, whether linear or nonlinear.
9.2. The Penalty Method
u 1 , f1
u 2 , f2
(1)
(2)
u 3 , f3
u4 , f4
(3)
u5 , f5
(4)
u6 , f 6
(5)
u7 , f7
(6)
x
7
K 12
0
0
0
0
0
u1
f1
K 11
0
0
w
0 u 2 f2
K 12 K 22 + w K 23
K 33 K 34
0
0
0 u 3 f3
K 23
0
(9.2)
0
0 u 4 = f4 .
0
K 34 K 44 K 45
0
K
K
0
u
f
0
0
0
K
5 5
45
55
56
u6
f6
0
w
0
0
K 56 K 66 + w K 67
0
0
0
0
0
K 67
K 77
u7
f7
This system can now be submitted to the equation solver. Note that u u, and only K has changed.
1
93
u 1 , f1
u 2 , f2
(1)
(2)
u 3 , f3
u4 , f4
(3)
u5 , f5
(4)
u6 , f 6
(5)
u7 , f7
(6)
x
7
(7)
penalty element of axial rigidity w
Figure 9.2. Adjunction of a fictitious penalty bar of axial stiffness w,
identified as element 7,to enforce the MFC u 2 = u 6 .
1
1
0
0
0
0
0
0
w
0
1 2 + w 1 0
1
2 1 0
0
0
0
=
K
(9.3)
0
1 2 1
0
0
0
0
0 1 2
1
0
0
0
w
0
0 1 2 + w 1
0
0
0
0
0
1
1
As w rows 2 and 6, as well as columns 2 and 6, tend to become linearly dependent; in
approaches
fact the negative of each other. But linear dependency means singularity. Therefore K
singularity as w . In fact, if w exceeds 1/ f = 1016 the computer will not be able to
from an exactly singular matrix. If w << 1016 but w >> 1, the effect will be seen in
distinguish K
increasing solution errors affecting the computed displacements u returned by the equation solver.
These errors, however, tend to be more of a random nature than the constraint violation error.
2
Such definitions are more rigurously done by working with binary numbers and base-2 arithmetic but for the present
discussion the use of decimal powers is sufficient.
94
9.2
The name square root arises because the recommended w is in fact 10k 10 p . It is seen that
picking the weight by this rule requires knowledge of both stiffness magnitudes and floating-point
hardware properties of the computer used, as well as the precision selected by the program.
9.2.4. Penalty Elements for General MFCs
For the constraint u 2 = u 6 the physical interpretation of the penalty element is clear. Nodal points 2
and 6 must move in lockstep long x, which can be approximately enforced by the heavy bar device
shown in Figure 9.2. But how about 3u 3 + u 5 4u 6 = 1? Or just u 2 = u 6 ?
The treatment of more general constraints is linked to the theory of Courant penalty functions,
which in turn is a topic in variational calculus. Because the necessary theory given in 9.1.5 is
viewed as an advanced topic, the procedure used for constructing a penalty element is stated here
as a recipe. Consider the homogeneous constraint
3u 3 + u 5 4u 6 = 0.
(9.4)
[3
u3
4 ] u 5
u6
= 0,
(9.5)
3
1 [3
4
u3
4 ] u 5
u6
9
3
12
3
1
4
12
4
16
u3
u5
u6
0
u = 0 .
=K
0
e e
(9.6)
Such order-of-magnitude estimates can be readily found by scanning the diagonal of K because the largest stiffness
coefficient of the actual structure is usually a diagonal entry.
If overflows occurs, the master stiffness should be scaled throughout or a better choice of physical units made.
95
is the unscaled stiffness matrix of the penalty element. This is now multiplied by the
Here K
penalty weight w and assembled into the master stiffness matrix following the usual rules. For the
example problem, augmenting (9.2) with the w-scaled penalty element (9.6) yields
e
K 11
K
12
0
0
K 12
K 22
K 23
0
0
0
0
0
K 23
K 33 + 9w
K 34
3w
12w
0
0
0
K 34
K 44
K 45
0
0
0
0
3w
K 45
K 55 + w
K 56 4w
0
u1
0
0 u2
0 u3
0 u4 =
0 u5
K 67
u6
K 77
u7
0
0
12w
0
K 56 4w
K 66 + 16w
K 67
f1
f2
f3
f4 .
f5
f6
f7
(9.7)
If the constraint is nonhomogeneous the force vector is also modified. To illustrate this effect,
consider the MFC: 3u 3 + u 5 4u 6 = 1. Rewrite in matrix form as
[3
u3
4 ] u 5
u6
= 1.
(9.8)
9
3
12
3
1
4
12
4
16
u3
u5
u6
3
1 .
4
(9.9)
K 11
K 12
0
0
K 12
K 22
K 23
0
0
0
0
0
K 23
K 33 + 9w
K 34
3w
12w
0
0
0
K 34
K 44
K 45
0
0
0
0
3w
K 45
K 55 + w
K 56 4w
0
0
0
12w
0
K 56 4w
K 66 + 16w
K 67
0
u1
f1
0 u2
f2
0 u 3 f 3 + 3w
0 u4 =
f4 .
0 u 5 f5 + w
K 67
u6
f 6 4w
f7
K 77
u7
(9.10)
p = 1, . . . m
(9.11)
where u contains all degrees of freedom and each a p is a row vector with same length as u. To incorporate
the MFCs into the FEM model one selects a weight w p > 0 for each constraints and constructs the so-called
Courant quadratic penalty function or penalty energy
P=
Pp ,
with
Pp = u T
1
2
aTp a p u w p aTp b p = 12 uT K( p) u uT f( p) ,
p=1
96
(9.12)
9.2
where we have called K( p) = w p aTp a p and f( p) = w p aT bi . P is added to the potential energy function
= 12 uT Ku uT f to form the augmented potential energy a = + P. Minimization of a with respect
to u yields
Ku +
K( p) u = f +
p=1
f( p) .
(9.13)
p=1
Each term of the sum on p, which derives from term Pp in (9.12), may be viewed as contributed by a penalty
element with globalized stiffness matrix K( p) = w p aTp a p and globalized added force term f( p) = w p aTp b p .
To use a even more compact form we may write the set of multifreedom constraints as Au = b. Then the
penalty augmented system can be written compactly as
(K + AT WA) u = f + WAT b,
(9.14)
where W is a diagonal matrix of penalty weights. This compact form, however, conceals the configuration of
the penalty elements.
Single freedom constraints, such as those encountered in Chapter 3, are usually processed separately for efficiency.
For example, solving the master stiffness equations by Cholesky factorization or conjugate-gradients.
97
u 1 , f1
u 2 , f2
(1)
(2)
u 3 , f3
u4 , f4
(3)
u5 , f5
(4)
u6 , f 6
(5)
u7 , f7
(6)
x
7
Finally, even if optimal weights are selected, the combined solution error cannot be lowered beyond
a threshold value.
From this assessment it is evident that penalty augmentation, although superior to the master-slave
method from the standpoint of generality and ease of implementation, is no panacea.
9.3. Lagrange Multiplier Adjunction
9.3.1. Physical Interpretation
As in the case of the penalty function method, the method of Lagrange multipliers can be given a
rigorous justification within the framework of variational calculus. But in the same spirit it will be
introduced for the example structure from a physical standpoint that is particularly illuminating.
Consider again the constraint u 2 = u 6 . Borrowing some ideas from the penalty method, imagine
that nodes 2 and 6 are connected now by a rigid link rather than a flexible one. Thus the constraint
is imposed exactly. But of course the penalty method with an infinite weight would blow up.
We may remove the link if it is replaced by an appropriate reaction force pair (, +), as illustrated
in Figure 9.3. These are called the constraint forces. Incorporating these forces into the original
stiffness equations (8.10) we get
0
0
0
0
0
u1
f1
K 11 K 12
0
0
0
0 u 2 f2
K 12 K 22 K 23
0
0
0 u 3 f3
K 23 K 33 K 34
0
(9.15)
0
0 u 4 = f4 .
0
K 34 K 44 K 45
0
0 u 5 f5
0
0
K 45 K 55 K 56
0
u6
f6 +
0
0
0
0
K 56 K 66 K 67
0
0
0
0
0
K 67 K 77
u7
f7
This is called a Lagrange multiplier. Because is an unknown, let us transfer it to the left hand
side by appending it to the vector of unknowns:
u1
f1
0
0
0
0
0
0
K 11 K 12
u2
0
0
0
0
1 f2
K 12 K 22 K 23
u
0
0
0
0 3 f3
K 23 K 33 K 34
0
u
(9.16)
0
0
0 4 = f4 .
0
K 34 K 44 K 45
0
u5
0
0
0
K
K
K
0
0
f
5
45
55
56
u
f6
0
0
0
0
K 56 K 66 K 67 1 6
u7
f7
0
0
0
0
0
K 67 K 77 0
98
9.3
But now we have 7 equations in 8 unknowns. To render the system determinate, the constraint
condition u 2 u 6 = 0 is appended as eighth equation:
K 11
K 12
0
0
K 12
K 22
K 23
0
0
0
0
1
0
K 23
K 33
K 34
0
0
0
0
0
0
K 34
K 44
K 45
0
0
0
0
0
0
K 45
K 55
K 56
0
0
0
0
0
0
K 56
K 66
K 67
1
0
0
0
0
0
K 67
K 77
0
u1
0
1 u2
0 u3
0 u4
=
0 u5
1 u 6
0
u7
f1
f2
f3
f4
,
f5
f6
f7
0
(9.17)
This is called the multiplier-augmented system. Its coefficient matrix, which is symmetric, is
called the bordered stiffness matrix. The process by which is appended to the vector of original
unknowns is called adjunction. Solving this system provides the desired solution for the degrees
of freedom while also characterizing the constraint forces through .
9.3.2. Lagrange Multipliers for General MFCs
The general procedure will be stated first as a recipe. Suppose that we want to solve the example
structure subjected to three MFCs
u 2 u 6 = 0,
5u 2 8u 7 = 3,
3u 3 + u 5 4u 6 = 1,
(9.18)
K 11
K 12
0
0
K 12
K 22
K 23
0
0
0
0
1
5
0
0
K 23
K 33
K 34
0
0
0
0
0
3
0
0
K 34
K 44
K 45
0
0
0
0
0
0
0
0
K 45
K 55
K 56
0
0
0
1
0
0
0
0
K 56
K 66
K 67
1
0
4
0
0
u1
u2
0
u
0 3
u =
K 67 4
u
K 77 5
u6
u7
8
0
f1
f2
f3
f4
f5
,
f6
f7
3
1
(9.19)
Three Lagrange multipliers: 1 , 2 and 3 , are required to take care of three MFCs. Adjoin those
unknowns to the nodal displacement vector. Symmetrize the coefficient matrix by appending 3
columns that are the transpose of the 3 last rows in (9.19), and filling the bottom right-hand corner
99
K 11 K 12
0
K 12 K 22 K 23
K 23 K 33
0
0
K 34
0
0
0
0
0
0
0
0
0
0
1
0
0
0
5
0
0
0
3
0
0
K 34
K 44
K 45
0
0
0
0
0
0
0
0
K 45
K 55
K 56
0
0
0
1
0
0
0
0
K 56
K 66
K 67
1
0
4
0
0
0
0
0
K 67
K 77
0
8
0
0
0
1
5
0
0
0
0
0
0
1 0
0 8
0
0
0
0
0
0
u1
0
0 u2
3 u3
0 u4
1 u5
=
4 u 6
0 u7
0 1
0
2
3
0
f1
f2
f3
f4
f5
.
f6
f7
3
1
(9.20)
(9.21)
K
A
AT
0
u
f
=
.
(9.22)
The master stiffness matrix K in (9.22) is said to be bordered with A and AT . Solving this system provides u
and . The latter can be interpreted as forces of constraint in the following sense: a removed constraint can
be replaced by a system of forces characterized by multiplied by the constraint coefficients. More precisely,
the constraint forces are AT .
The general matrix forms of the penalty function and Lagrangian multiplier methods are given by expressions
(9.13) and (9.22), respectively. A useful connection between these methods can be established as follows.
Because the lower diagonal block of the bordered stiffness matrix in (9.22) is null, it is not possible to directly
eliminate . To make this possible, replace this block by S1 , where S is a constraint-scaling diagonal matrix
of appropriate order and is a small number. The reciprocal of is a large number called w = 1/ . To
maintain exactness of the second equation, S1 is added to the right-hand side:
K AT
A S1
u
f
=
1 P
(9.23)
Here superscript P (for predicted value) is attached to the on the right-hand side as a tracer. We can
now formally solve for and subsequently for u. The results may be presented as
(K + wAT SA) u = f + wAT Sb AT P ,
= P + wS(b Au),
(9.24)
(9.25)
On taking W = wS, the general matrix equation (9.13) of the penalty method is recovered.
This relation suggests the construction of iterative procedures in which one tries to improve the accuracy
of the penalty function method while w is kept constant [?]. This strategy circumvents the aforementioned
ill-conditioning problems when the weight w is gradually increased. One such method is easily constructed
by inspecting (9.24). Using superscript k as an iteration index and keeping w fixed, solve equations (9.24) in
tandem as follows:
(K + AT WA) uk = f + AT Wb AT k ,
(9.26)
k+1 = k + W(b Auk ),
for k = 0, 1, . . . , beginning with 0 = 0. Then u0 is the penalty solution. If the process converges one
recovers the exact Lagrangian solution without having to solve the Lagrangian system (9.23) directly.
The family of iterative procedures that may be precipitated from (9.24) collectively pertains to the class of
augmented Lagrangian methods.
9.5. Summary
The treatment of linear MFCs in finite element systems can be carried out by several methods. Three
of these: master-slave elimination, penalty augmentation and Lagrange multiplier adjunction, have
been discussed. It is emphasized that no method is uniformly satisfactory in terms of generality,
robustness, numerical behavior and simplicity of implementation.
Figure 9.4 gives an assessment of the three techniques in terms of seven attributes.
For a general purpose program that tries to attain black box behavior (that is, minimal decisions
on the part of users) the method of Lagrange multipliers has the edge. This edge is unfortunately
blunted by a fairly complex computer implementation and by the loss of positive definiteness in the
bordered stiffness matrix.
911
Penalty
Function
Lagrange
Multipliers
fair
excellent
excellent
poor to fair
good
fair
high
high
Generality
Ease of implementation
Sensitivity to user decisions
Accuracy
small to none
variable
mediocre
excellent
Sensitivity as regards
constraint dependence
high
none
high
yes
yes
no
yes
no
yes
912
Exercises
As in Exercise 8.1, use Mathematica, Matlab (or similar) to do the algebra. For example, the following
Mathematica script solves this Exercise:
(* Exercise 9.1 - Penalty Method *)
(* MFC: u2-u6=1/5 variable w *)
K=MasterStiffnessOfSixElementBar[100];
Print["Stiffness K=",K//MatrixForm];
f={1,2,3,4,5,6,7}; Print["Applied forces=",f];
uexact= {0,0.27,0.275,0.25,0.185,0.07,0.14}; ew={};
For [w=100, w<=10^16, w=10*w; (* increase w by 10 every pass *)
Khat=K; fhat=f;
Khat[[2,2]]+=w; Khat[[6,6]]+=w; Khat[[6,2]]=Khat[[2,6]]-=w;
fhat[[2]]+=(1/5)*w; fhat[[6]]-=(1/5)*w; (*insert penalty *)
{Kmod,fmod}=FixLeftEndOfSixElementBar[Khat,fhat];
u=LinearSolve[N[Kmod],N[fmod]];
Print["Weight w=",N[w]//ScientificForm," u=",u//InputForm];
e=Sqrt[(u-uexact).(u-uexact)];
(*Print["L2 solution error=",e//ScientificForm]; *)
AppendTo[ew,{Log[10,w],Log[10,e]}];
];
ListPlot[ew,AxesOrigin->{5,-8},Frame->True, PlotStyle->
{AbsolutePointSize[4],AbsoluteThickness[2],RGBColor[1,0,0]},
PlotJoined->True,AxesLabel->{"Log10(w)","Log10(u error)"}];
Here MasterStiffnessOfSixElementBar and FixLeftEndOfSixElementBar are the same modules listed
in Exercise 8.1.
Note: If you run the above program, you may get several beeps from Mathematica as it is processing some of
the systems with very large weights. Dont be alarmed: those are only warnings. The LinearSolve function
for weights of order 1012 or bigger are ill-conditioned.
is alerting you that the coefficient matrices K
EXERCISE 9.2 [C+N:15] Again identical to Exercise 8.1, except that the MFC u 2 u 6 = 1/5 is to be
treated by the Lagrange multiplier method. The results for the computed u and the recovered force vector Ku
should agree with (E8.1). Use Mathematica, Matlab (or similar) to do the algebra. For example, the following
Mathematica script solves this Exercise:
913
Kmod[[2,8]]=Kmod[[8,2]]= 1;
Kmod[[6,8]]=Kmod[[8,6]]=-1; fmod[[8]]=1/5;
Print["Kmod=",Kmod//MatrixForm];
Print["fmod=",fmod];
umod=LinearSolve[N[Kmod],N[fmod]]; u=Take[umod,7];
Print["Solution u=",u ,",
lambda=",umod[[8]]];
Print["Recovered node forces=",K.u];
Here MasterStiffnessOfSixElementBar and FixLeftEndOfSixElementBar are the same modules listed
in Exercise 8.1.
Does the computed solution agree with (E8.1)?
EXERCISE 9.3 [A:10] For the example structure, show which penalty elements would implement the fol-
lowing MFCs:
(a)
u 2 + u 6 = 0,
(b)
u 2 3u 6 = 1/3.
(E9.1)
As answer, show the stiffness equations of those two elements in a manner similar to (9.1).
EXERCISE 9.4 [A/C+N:15+15+10] Suppose that the assembled stiffness equations for a one-dimensional
finite element model before imposing constraints are
2
1
0
1
2
1
0
1
2
u1
u2
u3
1
0
2
(E9.2)
(E9.3)
(a)
Impose the constraint (E9.3) by the master-slave method taking u 1 as master, and solve the resulting
2 2 system of equations by hand.
(b)
Impose the constraint (E9.3) by the penalty function method, leaving the weight w as a free parameter.
Solve the equations by hand or CAS (Cramers rule is recommended) and verify analytically that as
w the solution approaches that found in (a). Tabulate the values of u 1 , u 2 , u 3 for w = 0, 1, 10, 100.
Hint 1: the value of u 2 should not change. Hint 2: the solution for u 1 should be (6w + 5)/(4w + 4).
(c)
Impose the constraint (E9.3) by the Lagrange multiplier method. Show the 4 4 multiplier-augmented
system of equations analogous to (9.13) and solve it by computer or calculator.
EXERCISE 9.5 [A/C:10+15+10] The left end of the cantilevered beam-column member illustrated in Fig-
ure E9.1 rests on a skew-roller that forms a 45 angle with the horizontal axis x. The member is loaded axially
by a force P as shown. The finite element equations upon removing the fixed right end freedoms {u x2 , u y2 , 2 },
but before imposing the skew-roller MFC, are
E A/L
0
0
0
12E I /L 3
6E I /L 2
0
6E I /L 2
4E I /L
u x1
u y1
1
P
0
0
(E9.4)
where E, A, and I = Izz are given member properties, 1 is the left end rotation, and L is the member length.7
7
The stiffness equations for a beam column are derived in Part III of this book. For now consider (E9.4) as a recipe.
914
Exercises
To simplify the calculations set P = E A, and I = AL 2 , in which and are dimensionless parameters,
and express the following solutions in terms of and .
Apply the skew-roller constraint by the master-slave
method (make u y1 slave) and solve for u x1 and 1 in terms
of L, and . This may be done by hand or a CAS. Partial
solution: u x1 = L/(1 + 3).
(b)
(c)
beam-column
member
;
;
;
x P
E, A, I
;
;;;
(a)
45
Apply the skew roller constraint by Lagrangian multiplier adjunction, and solve the resulting 44 system
of equations using a CAS (by hand it will take long). Verify that you get the same solution as in (a).
EXERCISE 9.6 [A:5+5+10+10+5] A cantiveler beam-column is to be joined to a plane stress plate mesh as
depicted in Figure E9.2.8 Both pieces move in the plane {x, y}. Plane stress elements have two degrees of
freedom per node: two translations u x and u y along x and y, respectively, whereas a beam-column element
has three: two translations u x and u y along x and y, and one rotation (positive CCW) z about z. To connect
the cantilever beam to the mesh, the following gluing conditions are applied:
(1)
(2)
The beam end rotation 2 and the mean rotation of the plate edge 35 are the same.
For infinitesimal displacements and rotaavg
tions the latter is 35 = (u x5 u x3 )/H .
H/2
plane beam
1
10
H/2
nodes 2 and 4
occupy same position
5
8
11
plane stress mesh
Questions:
Figure E9.2. Beam linked to plate in plane stress
for Exercise 9.6. Beam shown slightly separate from
plate for visualization convenience: nodes 2 and 4
actually are at the same location.
(a)
(b)
Where does the above expression of 35 come from? (Geometric interpretation is OK.) Can it be made
more accurate9 by including u x4 ?
(c)
Write down the master-slave transformation matrix if {u x2 , u y2 , 2 } are picked as slaves. It is sufficient
to write down the transformation for the DOFs of nodes 2, 3, 4, and 5, which gives a T of order 9 6,
since the transformations for the other freedoms are trivial.
(d)
If the penalty method is used, write down the stiffness equations of the three penalty elements assuming
the same weight w is used. Their stiffness matrices are of order 2 2, 2 2 and 3 3, respectively.
(Do not proceed further)
avg
This is extracted from a question previously given in the Aerospace Ph. D. Preliminary Exam. Technically it is not
difficult once the student understand what is being asked. This can take some time, but a HW is more relaxed.
To answer the second question, observe that the displacements along 34 and 45 vary linearly. Thus the angle of rotation
about z is constant for each of them, and (for infinitesimal displacements) may be set equal to the tangent.
915
(e)
If Lagrange multiplier adjunction is used, how many Lagrange multipliers will you need to append? (Do
not proceed further).
EXERCISE 9.7 [A:30] Show that the master-slave transformation method u = Tu can be written down as a
special form of the method of Lagrange multipliers. Start from the augmented functional
M S = 12 uT Ku uT f + T (u Tu)
(E9.5)
and write down the stationarity conditions of M S with respect to u, and u in matrix form.
EXERCISE 9.8 [A:35] Check the matrix equations (9.23) through (9.26) quoted for the Augmented Lagrangian method.
EXERCISE 9.9 [A:40] (Advanced, close to a research paper). Show that the master-slave transformation
method u = Tu can be expressed as a limit of the penalty function method as the weights go to infinity. Start
from the augmented functional
T (u Tu)
P = 12 uT Ku uT f + 12 w(u Tu)
(E9.6)
Write down the matrix stationarity conditions with respect to to u and u and take the limit w . Hint:
using Woodburys formula (Appendix C, C.5.2)
(K + wTT ST)1 = K1 K1 TT (K + w1 S1 )1 T K1 .
show that
K
= TK1 TT .
916
(E9.7)
(E9.8)
10
Superelements
and Global-Local
Analysis
101
TABLE OF CONTENTS
Page
10.1
10.2
10.3
10.
10.
10.
Superelement Concept
. . . . . . . . . . . . . . . . . 103
10.1.1
Where Does the Idea Come From? . . . . . . . . . .
103
10.1.2
Subdomains . . . . . . . . . . . . . . . . . . 105
10.1.3
*Mathematical Requirements
. . . . . . . . . . .
105
Static Condensation
. . . . . . . . . . . . . . . . . . 105
10.2.1
Condensation by Explicit Matrix Operations
. . . . . .
105
10.2.2
Condensation by Symmetric Gauss Elimination . . . . . . 106
10.2.3
Recovery of Internal Freedoms . . . . . . . . . . .
108
Global-Local Analysis . . . . . . . . . . . . . . . . . . 108
Notes and Bibliography . . . . . . . . . . . . . . . . . 1010
References . . . . . . . . . . . . . . . . . . . . . . 1010
Exercises . . . . . . . . . . . . . . . . . . . . . . 1011
102
10.1
SUPERELEMENT CONCEPT
Facilitate division of labor. Substructures with different functions are done by separate
design groups with specialized knowledge and experience. For instance an aircraft company
may set up a fuselage group, a wing group, a landing-gear group, etc. These groups are thus
protected from hurry up and wait constraints. More specifically: a wing design group can
Of course the computer implementation becomes totally different as one goes from macroelements to substructures,
because efficient processing for large matrix systems requires exploitation of sparsity.
103
S2
S6
S4
S5
S1
S3
Figure 10.1. Complete airplane broken down into six level one
substructures identified as S1 through S6 .
level two substructure
3.
COMMAND MODULE
SERVICE MODULE
ADAPTER
LUNAR MODULE
INSTRUMENT UNIT
THIRD STAGE
SIV-B
Of the three motivations, the first two still hold today. The third one has moved to a different plane:
104
10.2
STATIC CONDENSATION
(a)
(b)
i
Figure 10.4. Classification of superelement freedoms into boundary and internal. (a) shows the vertical
stabilizer substructure S6 of Figure 10.2. (The FE mesh is pictured as two-dimensional for illustrative purposes;
for an actual aircraft it will be three dimensional.) Boundary freedoms are those associated to the boundary
nodes labeled b (shown in red), which are connected to the fuselage substructure. (b) shows a quadrilateral
macroelement mesh-unit fabricated with 4 triangles: it has one interior and four boundary nodes.
where subvectors ub and ui collect boundary and interior degrees of freedom, respectively. Take
the second matrix equation:
(10.2)
Kib ub + Kii ui = fi ,
If Kii is nonsingular we can solve for the interior freedoms:
ui = Kii1 (fi Kib ub ),
(10.3)
Replacing into the first matrix equation of (10.1) yields the condensed stiffness equations
bb ub = fb .
K
In this equation,
fb = fb Kbi K1 fi ,
ii
(10.4)
(10.5)
are called the condensed stiffness matrix and force vector, respectively, of the substructure.
From this point onward, the condensed superelement may be viewed, from the standpoint of further
bb
operations, as an individual element whose element stiffness matrix and nodal force vector are K
and fb , respectively.
Often each superelement has its own local coordinate system. A transformation of (10.5) to an
overall global coordinate system is necessary upon condensation. In the case of multiple levels,
the transformation is done with respect to the next-level superelement coordinate system. This
coordinate transformation procedure automates the processing of repeated portions.
Remark 10.1. The feasibility of the condensation process (10.3)(10.5) rests on the non-singularity of Kii .
This matrix is nonsingular if the superelement is rank-sufficient in the sense stated in 10.1.3, and if fixing
the boundary freedoms precludes all rigid body motions. If the former condition is verified but not the latter,
the superelement is called floating. Processing floating superelements demands more advanced computational
techniques, among which one may cite the use of projectors and generalized inverses [?].
106
10.2
STATIC CONDENSATION
CondenseLastFreedom[K_,f_]:=Module[{pivot,c,Kc,fc,
n=Length[K]}, If [n<=1,Return[{K,f}]];
Kc=Table[0,{n-1},{n-1}]; fc=Table[0,{n-1}];
pivot=K[[n,n]]; If [pivot==0, Print["CondenseLastFreedom:",
" Singular Matrix"]; Return[{K,f}]];
For [i=1,i<=n-1,i++, c=K[[i,n]]/pivot;
fc[[i]]=f[[i]]-c*f[[n]];
For [j=1,j<=i,j++,
Kc[[j,i]]=Kc[[i,j]]=K[[i,j]]-c*K[[n,j]]
];
];
Return[Simplify[{Kc,fc}]]
];
K={{6,-2,-1,-3},{ -2,5,-2,-1},{ -1,-2,7,-4},{-3,-1,-4,8}};
f={3,6,4,0};
Print["Before condensation:"," K=",K//MatrixForm," f=",f//MatrixForm];
{K,f}=CondenseLastFreedom[K,f];Print["Upon condensing DOF 4:",
" K=",K//MatrixForm," f=",f//MatrixForm];
{K,f}=CondenseLastFreedom[K,f];Print["Upon condensing DOF 3:",
" K=",K//MatrixForm," f=",f//MatrixForm];
Figure 10.5. Mathematica module to condense the last degree of freedom from a stiffness
matrix and force vector. The test statements carry out the example (10.6)(10.10).
2 6
(10.6)
= .
u3
4
1 2
7 4
u4
0
3 1 4
8
Suppose that the last two displacement freedoms: u 3 and u 4 , are classified as interior and are to be
statically condensed out. To eliminate u 4 , perform symmetric Gauss elimination of the fourth row
and column:
3 0(3)
6 (3)(3)
2 (1)(3)
1 (4)(3)
u1
8
8
8
8
(3)(1)
(10.7)
5 (1)(1) 2 (4)(1) u 2 = 6 0(1) ,
2
8
(3)(4)
8
or
8
(1)(4)
8
39
8
19
8
52
19
8
39
8
52
8
(4)(4)
8
u3
52 u 1 3
5 u2 = 6 .
(10.8)
u3
4
5
Repeat the process for the third row and column to eliminate u 3 :
39 (5/2)(5/2)
3
19
(5/2)(5/2)
u1
8
5
8
5
=
(5/2)(5/2)
(5/2)(5/2)
39
19
u2
6
8
8
0(4)
8
107
4(5/2)
5
4(5/2)
5
,
(10.9)
or
29
8
29
8
29
8
29
8
u1
u2
5
=
.
8
(10.10)
These are the condensed stiffness equations. Figure 10.5 shows a Mathematica program that carries
out the foregoing steps. Module CondenseLastFreedom condenses the last freedom of a stiffness
matrix K and a force vector f. It is invoked as { Kc,fc }=CondenseLastFreedom[K,f]. It returns
the condensed stiffness Kc and force vector fc as new arrays. To do the example (10.6)(10.10),
the module is called twice, as illustrated in the test statements of Figure 10.5.
Obviously this procedure is much simpler than going through the explicit matrix inverse. Another
important advantage of Gauss elimination is that equation rearrangement is not required even if the
condensed degrees of freedom do not appear sequentially. For example, suppose that the assembled
superelement contains originally eight degrees of freedom and that the freedoms to be condensed
out are numbered 1, 4, 5, 6 and 8. Then Gauss elimination is carried out over those equations only,
and the condensed (3 3) stiffness and (3 1) force vector extracted from rows and columns 2, 3
and 7. An implementation of this process is considered in Exercise 10.2.
Remark 10.2. The symmetric Gauss elimination procedure, as illustrated in steps (10.6)(10.10), is primarily
useful for macroelements and mesh units, since the number of stiffness equations for those typically does not
exceed a few hundreds. This permits the use of full matrix storage. For substructures containing thousands
or millions of degrees of freedom such as in the airplane example the elimination is carried out using
more sophisticated sparse matrix algorithms; for example that described in [211].
Remark 10.3. The static condensation process is a matrix operation called partial inversion or partial
elimination that appears in many disciplines. Here is the general form. Suppose the linear system Ax = y,
where A is n n square and x and y are n-vectors, is partitioned as
A11
A21
A12
A22
x1
x2
y1
.
y2
(10.11)
Assuming the appropriate inverses to exist, then the following are easily verified matrix identities:
A1
A1
11
11 A12
1
A21 A1
A
A
22
21 A11 A12
11
y1
x2
=
x1
,
y2
1
A11 A12 A1
22 A21 A12 A22
A1
A1
22 A21
22
x1
y2
=
y1
. (10.12)
x2
We say that x1 has been eliminated or condensed out in the left identity and x2 in the right one. In FEM
applications, it is conventional to condense out the bottom vector x2 , so the right identity is relevant. If A is
symmetric, to retain symmetry in (10.12) it is necessary to change the sign of one of the subvectors.
10.3
coarse mesh
GLOBAL-LOCAL ANALYSIS
finer meshes
Figure 10.6. Left: example panel structure for global-local analysis. Right: a FEM mesh for a one-shot
analysis.
Particularly in the aerospace industry, in which the global-local technique has been used since the early 1960s.
1010
Exercises
88 44
44 132
44 44
0 44
44
44
176
44
0
u1
5
44 u 2 10
=
.
44 u 3 15
u4
220
20
(E10.1)
Eliminate u 2 and u 3 from (E10.1) by static condensation, and show (but do not solve) the condensed equation
system. Use either the explicit matrix inverse formulas 10.5 or the symmetric Gauss elimination process
explained in 10.2.2. Hint: regardless of method the result should be
52
36
36
184
u1
u4
15
.
30
(E10.2)
EXERCISE 10.2 [C+N:20] Generalize the program of Figure 10.5 to a module CondenseFreedom[K,f,k]
that is able to condense the kth degree of freedom from K and f, which is not necessarily the last one. That
is, k may range from 1 to n, where n is the number of freedoms in Ku = f. Apply that program to solve the
previous Exercise.
Hint: here is a possible way of organizing the inner loop:
ii=0; For [i=1,i<=n,i++, If [i==k, Continue[]]; ii++;
c=K[[i,k]]/pivot; fc[[ii]]=f[[i]]-c*f[[k]]; jj=0;
For [j=1,j<=n,j++, If [j==k,Continue[]]; jj++;
Kc[[ii,jj]]=K[[i,j]]-c*K[[k,j]]
];
];
Return[{Kc,fc}]
EXERCISE 10.3 [D:15] Explain the similarities and differences between superelement analysis and globallocal FEM analysis.
EXERCISE 10.4 [A:20] If the superelement stiffness K is symmetric, the static condensation process can be
viewed as a special case of the master-slave transformation method discussed in Chapter 8. To prove this, take
exterior freedoms ub as masters and interior freedoms ui as slaves. Assume the master-slave transformation
relation
def
ub
I
0
=
= Tub g.
(E10.3)
u=
u
[
]
b
ui
Kii1 Kib
Kii1 fi
1011
EXERCISE 10.6 [N:20] The widely used Guyans scheme [326] for dynamic model reduction applies the
static-condensation relation (E10.3) as master-slave transformation to both the stiffness and the mass matrix
of the superelement. Use this procedure to eliminate the second and third DOF of the mass-stiffness system:
2
1
M=
0
0
1
4
1
0
0
1
4
1
0
0
,
1
2
1
2
1
0
1
1
K=
0
0
0
1
2
1
0
0
.
1
1
(E10.4)
2 K)
vi = 0
Compute and compare the vibration frequencies of the eigensystems (M i2 K)vi = 0 and (M
i
before and after reduction.
Hints. The four original squared frequencies are the eigenvalues of M1 K, which may be obtained, for
example, with the Matlab eig function. The largest is 2, lowest 0. To perform the Guyan reduction it is
convenient to reorder M and K so that rows and columns 2 and 3 become 3 and 4, respectively:
2
0
2
1
0
0
2
0
1
1
0
4
1
0
v1
1
1 v4 0
=
1 v2 1
v3
4
0
1
0
2
1
0
1
0
1
0
v1
1 v4
,
1 v2
v3
2
(E10.5)
Mbb
Mib
Mbi
Mii
vb
vi
Kbb
Kib
Kbi
Kii
vb
.
vi
(E10.6)
1
I
0
=
T=
Kii1 Kib
2/3
1/3
0
1
1/3
2/3
relating
v1
1
v4 0
v = 2/3
2
v3
1/3
0
1 v1
.
v4
1/3
2/3
(E10.7)
node 2. The macroelement has 6 degrees of freedom: {v1 , 1 , v2 , 2 , v3 , 3 }. Eliminate the two DOF of node 2
by condensation. Is the condensed stiffness the same as that of a beam element of length 2L and rigidity E I ?
(For expressions of the beam stiffness matrices, see Chapter 12.)
1012
11
Variational
Formulation of
Bar Element
111
TABLE OF CONTENTS
Page
11.1.
11.2.
11.3.
11.4.
11.5.
11.6.
11.
11.
11.
A New Beginning
Definition of Bar Member
Variational Formulation
11.3.1. The Total Potential Energy Functional
. . . .
11.3.2. Admissible Variations . . . . . . . . .
11.3.3. The Minimum Total Potential Energy Principle
.
11.3.4. TPE Discretization . . . . . . . . . .
11.3.5. Bar Element Discretization . . . . . . . .
11.3.6. Interpolation by Shape Functions
. . . . .
11.3.7. The Strain-Displacement Matrix . . . . . .
11.3.8. *Trial Basis Functions . . . . . . . . .
The Finite Element Equations
11.4.1. The Stiffness Matrix . . . . . . . . . .
11.4.2. The Consistent Node Force Vector . . . . .
Weak Forms
11.5.1. From Strong to Weak . . . . . . . . . .
11.5.2. Weak Form Based Approximation Example . .
11.5.3. Balanced Weak Forms
. . . . . . . . .
11.5.4. Principle of Virtual Work as Balanced Weak Form
11.5.5. *Weighted Residual Methods . . . . . . .
*Accuracy Analysis
11.6.1. *Nodal Exactness and Superconvergence . . .
11.6.2. *Fourier Patch Analysis . . . . . . . . .
11.6.3. *Robin Boundary Conditions
. . . . . .
Notes and Bibliography
. . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . . . . . .
112
.
. .
.
. .
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
.
. .
.
. .
.
. .
.
. .
.
.
.
.
. . . . .
. . . . .
. .
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
. .
.
. .
.
. .
113
113
114
114
116
116
117
118
119
119
119
1110
1110
1111
1113
1113
1114
1115
1115
1116
1116
1116
1117
1118
1119
1120
1121
11.2
(a)
(b)
;;
;;
axial rigidity EA
cross section
u(x)
;;
;;
q(x)
Longitudinal axis
cross
section
Figure 11.1. A fixed-free bar member: (a) 3D view showing reference frame; (b) 2D view on {x, y} plane
highlighting some quantities that are important in bar analysis.
Table 11.1
Quantity
Meaning
Longitudinal bar axis
d(.)/d x
Axial displacement
Distributed axial force, given per unit of bar length
Total bar length
Elastic modulus
Cross section area; may vary with x
Axial rigidity
Infinitesimal axial strain
Axial stress
Internal axial force
Prescribed end load
x
(.)
u(x)
q(x)
L
E
A
EA
e = du/d x = u
= Ee = Eu
F = A = E A e = E Au
P
x is used in this Chapter instead of x (as in Chapters 23) to simplify the notation.
In addition to trusses, bar elements are used to model cables, chains and ropes. They are also used
as fictitious elements in penalty function methods, as discussed in Chapter 9.
We will consider here only straight bars, although their cross section may vary. Our one-dimensional
mathematical model assumes that the bar material is linearly elastic obeying Hookes law, and that
displacements and strains are infinitesimal. Figure 11.1(b) pictures some relevant quantities for a
fixed-free bar. Table 11.1 collects the necessary terminology for the governing equations.
Figure 11.2 displays the governing equations of the bar in a graphic format called a Tonti diagram.
The formal similarity with the diagrams used in Chapter 5 to explain MoM elements should be
noted, although the diagram of Figure 11.2 pertains to the continuum bar model rather than to the
discrete one. (The qualifier strong form is explained in the next Chapter.)
11.3.
Variational Formulation
To illustrate the variational formulation, the finite element equations of the bar will be derived from
the Minimum Potential Energy principle.
11.3.1. The Total Potential Energy Functional
In Mechanics of Materials it is shown that the internal energy density at a point of a linear-elastic
material subjected to a one-dimensional state of stress and strain e is U = 12 (x)e(x), where
is to be regarded as linked to the displacement u through Hookes law = Ee and the straindisplacement relation e = u = du/d x. This U is also called the strain energy density. Integration
over the volume of the bar gives the total internal energy
U=
1
2
e dV =
V
1
2
Fe d x =
1
2
(E Au )u d x =
114
1
2
L
0
u E A u d x.
(11.1)
Prescribed
end
displacement
Displacement
Axial
BCs
displacement
u(x)
Kinematic
Distributed
axial load
q(x)
F'+q=0
e=u'
Axial
strain
e(x)
F = EA e
Constitutive
Equilibrium
Axial
force
F(x)
Force BCs
Prescribed
end load
Figure 11.2. Strong-form Tonti diagram for the continuum model of a bar member. Field equations and BCs
are represented as lines connecting the boxes. Yellow (brown) boxes contain unknown (given) quantities.
The distributed load q(x). This contributes a cross-section density of q(x)u(x) because q is
assumed to be already integrated over the section.
2.
Any specified axial point load(s). For the fixed-free example of Figure 11.1 the end load P
would contribute P u(L).
The second source may be folded into the first by conventionally writing any point load P acting at
a cross section x = a as a contribution P (a) to q(x), in which (a) denotes the one-dimensional
Dirac delta function at x = a. If this is done the external energy can be concisely expressed as
W =
q u d x.
(11.2)
(11.3)
Mathematically is a functional, called the Total Potential Energy functional or TPE. It depends
only on the axial displacement u(x). In Variational Calculus u(x) is called the primary variable
of the functional. When the dependence of on u needs to be emphasized we shall write [u] =
U [u]W [u], with brackets enclosing the primary variable. To display both primary and independent
variables we write, for example, [u(x)] = U [u(x)] W [u(x)].
Remark 11.1. According to the rules of Variational Calculus, the Euler-Lagrange equation for is
E=
= q (E A u )
u
d x u
115
(11.4)
u(x)+u(x)
u(x)
u(L)
u(L)
u(x)
u(0) = 0
Figure 11.3. Concept of admissible variation of the axial displacement function u(x). For convenience u(x) is
plotted normal to the longitudinal axis. Both u(x) and u(x) + u(x) shown above are kinematically admissible,
and so is the variation u(x). Note that the variation u(L) is not zero because the BC at x = L is natural.
(11.5)
This is the strong (pointwise) equation of equilibrium in terms of the axial displacement, which reduces to
E A u + q = 0 if E A is constant. This equation is not explicitly used in the FEM development. It is instead
replaced by = 0, with the variation restricted over the class of finite element interpolation functions.
It is continuous over the bar length, that is, u(x) C 0 in x [0, L].
(ii) It satisfies exactly any displacement boundary condition, such as the fixed-end specification
u(0) = 0 of Figure 11.1. See of Figure 11.3.
The variation u(x) pictured in Figure 11.3 is kinematically admissible because both u(x) and
u(x) + u(x) satisfy the foregoing conditions. Note that the variation u(L) at the free end x = L
is not necessarily zero because that boundary condition is natural; that is, not specified directly in
terms of the displacement u(L). On the other hand, (0) = 0.
The physical meaning of conditions (i)(ii) is the subject of Exercise 11.1.
1
The symbol not immediately followed by a parenthesis is not a delta function but instead denotes variation with respect
to the variable that follows.
116
11.3
u 1, f1
u 2, f2
u 3, f3
u 4, f4
(1)
(2)
(3)
(4)
2
u
VARIATIONAL FORMULATION
u 5, f5
u(x)
u2
u5
u4
u3
u1 = 0
Figure 11.4. FEM discretization of bar member. A piecewise- linear admissible displacement trial
function u(x) is drawn underneath the mesh. It is assumed that the left end is fixed; thus u 1 = 0.
iff
u = u
(11.7)
boundary conditions weed out any rigid motions, the solution u (x) of (11.7) exists, is unique, and renders
[u] a minimum over the class of kinematically admissible displacements. The last attribute explains the
minimum in the name of the principle.
(11.8)
in which Ne denotes the number of elements. The same decomposition applies to both its internal
energy and external work potential components:
U = U (1) + . . . + U (Ne ) = 0,
W = W (1) + . . . + W (Ne ) = 0,
(11.9)
117
(11.10)
_
(a) u e (x)
(e)
u1
u2
_
x
x = x x1
(b3)
= Le
= u1 1
(c)
u2
1x/
1 N1e
x/
0
(b2)
u2
u1
u1
(b1)
u2
N2e
Figure 11.5. A two-node, TPE-based bar element: (a) element configuration and axial displacement
variation (plotted normal to element axis for better visibility); (b1,b2,b3) displacement interpolation
expressed in terms of linear shape functions; (c) element shape functions.
Using the fundamental lemma of variational calculus,4 it can be shown that (11.10) implies that for
a generic element e we may write
e = U e W e = 0.
(11.11)
This variational equation is the basis for the derivation of element stiffness equations once the
displacement field has been discretized over the element, as described next.
Remark 11.3. In mathematics (11.11) is called a first variation form. It is a special case of a more general
expression called a weak form, which is covered in more detail later. In mechanics it states the Principle of
Virtual Work or PVW for each element: U e = W e , which says that the virtual work of internal and external
forces on admissible displacement variations is equal if the element is in equilibrium [588].
(11.12)
Note the notational change from the labels i and j of Part I. This will facilitate transition to multidimensional elements
in Chapters 14ff.
118
over the finite element mesh. This approximate displacement, u e (x), taken over all elements e =
1, 2, . . . N e , is called the finite element trial expansion or simply trial expansion. See Figure 11.4.
This FE trial expansion must belong to the class of kinematically admissible displacements defined
in ?. Consequently, it must be C 0 continuous over and between elements. The most common
choices fpr u e are polynomials in x, as in the development that follows.
11.3.6. Interpolation by Shape Functions
In a two-node bar element the only possible polynomial choice of the displacement u e that satisfies
the interelement continuity requirement is linear. It can be expressed by the following interpolation
formula, which is graphically developed in Figure 11.5(b1,b2,b3):
u (x) =
e
N1e
u e1
N2e
u e2
=[
N1e
N2e
ue
] 1e
u2
= Ne ue .
(11.13)
The functions N1e and N2e that multiply the node displacements u 1 and u 2 are called shape functions,
while N is called the shape function matrix. In this case Ne reduces to a row vector.
The shape functions interpolate the internal displacement u e directly from the node values. They
are pictured in Figure 11.5(c). For this element, with x = x x1 measuring the axial distance from
the left node i, the shape functions are
N1e = 1
x
= 1 ,
Here
=
N2e =
x
= .
(11.14)
x x1
x
= ,
(11.15)
is a dimensionless coordinate, also known as a natural coordinate, that varies from 0 through 1
over the element. Note that d x =
d and d = d x/
. The shape function N1e has the value 1 at
node 1 and 0 at node 2. Conversely, shape function N2e has the value 0 at node 1 and 1 at node 2.
This is a general property of shape functions. It follows from the fact that element displacement
interpolations such as (11.13) are based on physical node values.
11.3.7. The Strain-Displacement Matrix
The axial strain associated with the trial function u e is
dNe dNe e 1
du e
u1
e
1
2
= [ 1
= (u ) =
e=
e
u
dx
dx
dx
2
ue
1 ] 1e
u2
= B ue ,
(11.16)
in which
B=
1
[ 1
1],
is called the strain-displacement matrix. Note that B is constant over the element.
119
(11.17)
(b)
(a)
(1)
(2)
(3)
N3
(thick line)
N3(2) N3(3)
(4)
Figure 11.6. Trial basis function (a.k.a. hat function) for node 3 of a four-element bar discretization.
def 1 e T
(u )
2
in which U e =
Ke ue
and
def
W e = (ue )T fe .
(11.19)
Here Ke and fe are called the element stiffness matrix and the element consistent nodal force vector,
respectively. The three scalars e , U e and W e are only function of the node displacements ue . (This
is a consequence of displacements being the only primary variable of the TPE functional.) Note
that U e and W e depend quadratically and linearly, respectively, on those displacements. Taking
the variation of e with respect to the node displacements gives6
e T
e e
e
e
= u
=
u
u
f
K
= 0.
(11.20)
ue
Because the variations ue can be arbitrary, the bracketed expression must vanish, which yields
e
e T
Ke ue = fe .
(11.21)
These are the familiar element stiffness equations. Hence the foregoing names given to Ke and fe
are justified a posteriori.
6
The 12 factor disappears on taking the variation because U e is quadratic in the node displacements. For a review on the
calculus of discrete quadratic forms, see Appendix D.
1110
11.4
x1
Note that the integration variable x has been changed to the natural coordinate defined in (11.15)
that varies from 0 through 1, whence d x =
d . This form is symmetrically expanded using the
strain-displacement matrix relation (11.16), by inserting e = e T = (ue )T BT and e = B ue into the
first and second e of (11.22), respectively, to get
e
1
1
1
1
1
u
e
e T T
e
1
1
(u ) B E A B u
d = 2
E A [ 1 1 ] 1e
d.
U =2
[ u e1 u e2 ]
u
1
2
0
0
(11.23)
The nodal displacements do not depend on position and can be moved out of the integral. Also
BT E A B = E A BT B since E A is a scalar:
e
1
1
EA
1 1
u1
T
e
e
1 e T
1
e
e
E A B B
d u = 2 [ u 1 u 2 ]
d
(11.24)
U = 2 (u )
e .
2
u
1
1
2
0
0
T
By (11.19) this is expressible as 12 ue Ke ue . Since ue is arbitrary, Ke is extracted as
K =
e
E A B B
d =
T
EA
2
1 1
1 1
1
1
1 1
E A d.
d =
1 1 0
(11.25)
This is the bar element stiffness matrix. For a homogeneous and prismatic bar of constant rigidity,
1
E A can be moved outside the integral, 0 d = 1 and (11.25) collapses to
EA
K =
e
1
.
1
1
1
(11.26)
This is the same element stiffness matrix of the prismatic truss member derived in Chapters 2 and
5 by a Mechanics of Materials approach, but now obtained through a variational argument.
11.4.2. The Consistent Node Force Vector
The consistent node force vector fe defined in (11.19) comes from the element contribution to the
external work potential W :
x2
1
e T 1
1
def T
T e
e
q u dx =
q N u
d = u
q
d = ue fe ,
(11.27)
W =
0
0
x1
Since ue is arbitrary,
f =
e
x2
x1
1
q
dx =
0
1111
1
q
d.
(11.28)
;;;;;;;
(a)
;;;
constant EA
Figure 11.7. Fixed-free, prismatic bar example: (a) configuration; (b,c,d) FEM discretization and load cases.
in which is defined by (11.15). If q is constant over the element, it may be taken out of the
integral:
1
1
e
f =q
(11.29)
d.
0
This gives the same results as with the EbE lumping method of Chapter 7. See Exercise 11.3.
Example 11.1. The two-node bar element is tested on the benchmark problem defined in Figure 11.7. A fixedfree, homogeneous, prismatic bar of length L, elastic modulus E and cross section area A has the configuration
illustrated in Figure 11.7(a). It is discretized with a single element as shown in Figure 11.7(b,c,d), and subjected
to the three load cases pictured there. Case I involves a point load P at the free end, which may be formally
represented as
q I (x) = P (L)
(11.30)
q I I I (x) = q0 H (x) H (x 12 L) ,
(11.32)
in which H () denotes the Heaviside unit step function with argument x. The master stiffness equations
constructed using the prismatic stiffness matrix (11.26) with
= L and x x are
EA 1
L 1
1
1
u m1
u m2
f 1m
f 2m
= fm .
(11.33)
Here supercript m identifies the load case. The consistent node forces computed from (11.28) with
= L and
x x are
L 2q1 + q2
q0 L 3
0
,
fI I =
,
fI I I =
.
(11.34)
fI =
P
1
6 q1 + 2q2
8
1112
11.5
WEAK FORMS
On applying the fixed end support condition u m1 = 0 and solving for u m2 , the free end deflections are
u 2I =
PL
,
EA
u 2I I =
(q1 + 2q2 )L 2
,
6E A
u 2I I I =
q0 L 2
.
8E A
(11.35)
The analytical solutions for u(x), obtained on integrating the ODE E Au + q = 0 with boundary conditions
u(0) = 0, F(L) = E A u (L) = P for case I and F(L) = E A u (L) = 0 for cases II and III, are
Px
x [3(q1 +q2 )L 2 3q1 L x+(q1 q2 )x 2 ]
q0
L xx 2 +x 12 L2 .
, u I I (x) =
, u I I I (x) =
EA
6E A
2E A
(11.36)
In the expression of u I I I (x), x 12 L2 means (x 12 L)2 if x 12 L, else zero (Macauleys bracket notation
for discontinuity functions). Evaluating (11.36) at x = L and comparing to (11.35), one finds that the three
computed end deflections are exact.
u I (x) =
For case I this agreement is no surprise: the exact u I (x) is linear in x, which is contained in the span of
the linear shape functions. But for II and III this is far from obvious since the exact solutions are cubic and
piecewise quadratic, respectively, in x. The fact that the exact solution is verified at the free end node is an
instance of the nodal exactness property discussed in 11.6.1.
Note that in cases II and III the FEM displacement solutions inside the element, which vary linearly, will
not agree pointwise with the exact solutions, which do not. For example the exact midspan displacement is
u I I I ( 12 L) = q0 L 2 /(8E A) = u I I I (L), whereas the FEM interpolation would give q0 L 2 /(16E A) there, in error
by 100%. To reduce such internal discrepancies the member may be divided into more elements.
Here v(x) is supposed to be sufficiently well behaved for the integral to exist. Ignoring boundary
conditions for now, (11.38) is called a weak form, which is often abbreviated to WF in the sequel.
1113
Function v(x) receives two names in the literature: test function in a general mathematical context,
and weight function (also weighting function) in the context of approximation methods based on
weak forms. In what follows both terms will be used within the appropriate context.
11.5.2. Weak Form Based Approximation Example
To show how weak forms can be used to generate approximate solutions, consider again a fixed-free,
prismatic, homogeneous bar member (that is, E A is constant), under uniform load q(x) = q0 along
its length and zero load at the free end. The WF (11.38) becomes
L
E A u (x) + q0 v(x) d x = 0.
(11.39)
J=
0
F(L) = E A u (L) = 0.
(11.40)
v(x) = b0 + b1 x + b2 x 2 .
(11.41)
in which ai and bi are numerical coefficients, real in this case. Once assumptions such as those
in (11.41) are made, more terminology kicks in. The assumed u(x) is now called a trial function,
which is spanned by the linear-space basis {1, x, x 2 } of dimension 3. The assumed v(x) is called
a weight function, which is spanned by exactly the same basis. There is a special name for the
scenario when the trial and weight function bases coalesce: the Galerkin method.7 . We will call
the end result a Galerkin solution. Replacing (11.41) into (11.39) we get
J=
L
(6b0 + 3b1 L + 2b2 L 2 ) (2E A a2 + q0 ).
6
(11.42)
Now J must vanish for any arbitrary value of {b0 , b1 , b2 }. On extracting the expressions that multiply
those coefficients we obtain the same equation thrice: 2E A a2 + q0 = 0. Thus a2 = q0 /(2E A),
whereas a0 and a1 remain arbitrary. Consequently the Galerkin solution before BC is
u(x) = a0 + a1 x
q0 2
x .
2E A
(11.43)
ODE aficionados would recognize this as the general solution of E Au + q0 = 0 so Uncle Boris
has done the job. Applying the end conditions (11.40) gives a0 = 0 and a1 = q0 /(E A) whence the
final solution is
q0
x(2L x).
(11.44)
u(x) =
2E A
Replacing into (11.37) and (11.40) it may be verified that this is the exact analytical solution.
Instead of applying the end conditions a posteriori we may try to incorporate them a priori into
the trial function assumption. On enforcing (11.40) into the assumed u(x) of (11.41) we find that
a0 = 0 and a1 = 2a2 L. The trial function becomes
u(x) = a2 x (x 2L),
7
(11.45)
Introduced by Boris Galerkin in 1912. For a brief account of the general methodology, see Notes and Bibliography
1114
11.5
WEAK FORMS
and only one free coefficient remains. Accordingly only one weight basis function is needed: either
1, x or x 2 does the job, and the exact solution (11.44) is obtained again.8
What happens if the load q(x) varies, say, linearly and the same quadratic polynomial assumptions
(11.41) are used? Then Galerkin goes gaga. See Exercise 11.8.
Even for this trivial example, several procedural choices are apparent. If we allow the trial and
weight function spaces to differ, volatility zooms up. Furthermore, we can apply transformations
to the residual integral as done in the next subsection. Compared to the well ordered world of
variational-based FEM, confusion reigns supreme.
11.5.3. Balanced Weak Forms
Some method in the madness can be injected by balancing. A look at (11.39) reveals an unpleasant
asymmetry. Second derivatives of u(x) appear, but none of v(x). This places unequal restrictions
on smoothness of the trial and test function spaces. Integration by parts restores derivative order
L
L
L
balance. Replacing 0 E A u v d x = 0 E A u v d x + (E Au )v
0 and rearranging terms yields
L
L
L
J=
E A u (x) v (x) d x
q(x) v(x) d x E A u (x) v(x)
0 .
(11.46)
0
This will be called a balanced-derivative weak form, or simply a balanced weak form (BWF). It
displays obvious advantages: (i) same smoothness requirements for assumed u and v, and (ii) end
BC appear explicitly in the non-integral term, neatly factored into essential and natural. A minor
flaw is that the original residual is no longer clearly visible.
For a bar with variable axial rigidity replace E A u by (E A u ) in the first integrand.
On repeating the Galerkin procedure of the previous subsection with the assumptions (11.41) one
finds an identical J , as may be expected, and the same final solution. Again one has the choice of
pre- or post-imposing the end conditions (11.40). Generally the latter choice is far more convenient
in a computer implementation.
11.5.4. Principle of Virtual Work as Balanced Weak Form
There is a close relationship between the BWF (11.46) and one of the fundamental tools of Analytical
Mechanics: the Principle of Virtual Work (PVW). To exhibit it, set the test function to be an
admissible variation of u(x): v(x) = u(x), in which u(x) strongly satisfies all essential BC.
Then assume that J is the first variation of a functional :
L
L
L def
E A u (x) u (x) d x
q(x) u(x) d x E A u (x) u(x)
0 = .
(11.47)
J=
0
q(x) u(x) d x
(11.48)
Some early works covering weighted residual methods, for example Crandall [159], proclaim that the trial function must
satisfy all BC ab initio. Later ones, e.g., [260,261], relax that rule to BC of essential type (in Galerkin methods, this rule
applies to both trial and test functions since the spaces coalesce). In practice this rule can be often relaxed further, as in
the example of 11.5.2, applying essential BCs at the last moment.
1115
Hence J = 0 is the same as = 0 or U = W , which is the PVW for an elastic bar member.
This relationship can be used to prove an important property: Galerkin method is equivalent to a
variational formulation if the residual is the Euler-Lagrange equation of a functional.
L
Remark 11.5. Where does the boundary term E A u (x) u(x)
in (11.47) go? Actually, into W . This
0
immersion is a bit tricky, and depends on redefining q(x) to include prescribed end point forces such as
N (L) = E A u (L) = P through delta functions. This is the subject of Exercise 11.9.
11.5.5. *Weighted Residual Methods
Galerkin method is widely used in computational mechanics, but does not exhaust all possibilities of using a
weak form as source for obtaining numerical solutions. The main generalization consist of allowing trial and
test (weight) functions to be different. This leads to a rich class of approximation methods unified under the
name Method of Weighted Residuals or MWR.
The key idea is as follows. Both u(x) and v(x) are restricted to belong to linear function spaces of finite
dimension Nu and Nv . These are the trial function space and the test function space, respectively. which are
spanned by basis functions i (x) and (x), respectively:
(11.49)
in which usually Nu = Nv . Since the spaces are linear, any u(x) and v(x) can be represented as linear
combination of the basis functions:
u(x) =
Nu
ai i (x),
v(x) =
i=1
Nv
bi i (x).
(11.50)
i=1
Here ai and bi are scalar coefficients, which may be real or complex depending on the nature of the problem.
Insert these into the weak form, perform the necessary integrations, and extract the Nv expressions that are
coefficients of the bi . Solve these equations for the coefficients ai , and replace in the first of (11.50) to get the
approximate solution u(x).
The MWR methodology is of course not restricted to one space dimension. It also extends to time-dependent
problems. It can be merged smoothly with the FEM concept of piecewise approximation using shape functions.
Some references are provided under Notes and Bibliography.
11.6.
*Accuracy Analysis
Low order 1D elements may give surprisingly high accuracy. In particular the lowly two-node bar element
can display infinite accuracy under some conditions. This phenomenon is studied in this advanced section as
it provides an introduction to modified equation methods and Fourier analysis along the way.
11.6.1. *Nodal Exactness and Superconvergence
Suppose that the following two conditions are satisfied:
1.
The bar properties are constant along the length (prismatic member).
2.
The distributed load q(x) is zero between nodes. The only applied loads are point forces at the nodes.
If so, a linear axial displacement u(x) as defined by (11.13) and (11.14) is the exact solution over each element
since constant strain and stress satisfy, element by element, all of the governing equations listed in Figure 11.2.9
9
The internal equilibrium equation p + q = E A u + q = 0 is trivially verified because q = 0 from the second
assumption, and u = 0 because of shape function linearity.
1116
(a)
(b)
q(x)
j
xi = xj
xj
xk = xj +
1 (xj x)/ = 1
EA = const
Two-element
patch ijk
1 + (x jx)/ = 1+
Figure 11.8. Superconvergence patch analysis: (a) lattice of bar elements; (b) two element patch.
It follows that if the foregoing conditions are verified the FEM solution is exact; that is, it agrees with the
analytical solution of the mathematical model.10 Adding extra elements and nodes would not change the
solution. That is the reason behind the truss discretizations used in Chapters 23: one element per member is
enough if they are prismatic and loads are applied to joints. Such models are called nodally exact.
What happens if the foregoing assumptions are not met? Exactness is then generally lost, and several elements
per member may be beneficial if spurious mechanisms are avoided.11 For a 1D lattice of equal-length, prismatic
two-node bar elements, an interesting and more difficult result is: the solution is nodally exact for any loading
if consistent node forces are used. This is proven in the subsection below. This result underlies the importance
of computing node forces correctly.
If conditions such as equal-length are relaxed, the solution is no longer nodally exact but convergence at the
nodes is extremely rapid (faster than could be expected by standard error analysis) as long as consistent node
forces are used. This phenomenon is called superconvergence in the FEM literature.
11.6.2. *Fourier Patch Analysis
The following analysis is based on the modified differential equation (MoDE) method of Warming and Hyett
[?] combined with the Fourier patch analysis approach of Park and Flaggs [553,554]. Consider a lattice of
two-node prismatic bar elements of constant rigidity E A and equal length
, as illustrated in Figure 11.8. The
total length of the lattice is L. The system is subject to an arbitrary axial load q(x). The only requirement on
q(x) is that it has a convergent Fourier series in the space direction.
From the lattice extract a patch12 of two elements connecting nodes xi , x j and xk as shown in Figure 11.8. The
FEM patch equations at node j are
EA
[ 1
1 ]
ui
uj
uk
= fj,
(11.51)
xk
fj =
q(x)N j (x) d x =
xi
q(x j +
)(1 + )
d +
1
q(x j + )(1 ) d.
(11.52)
Here N j (x) is the hat trial basis function for node j, depicted in Figure 11.8, and = (x x j )/
is a
dimensionless coordinate that takes the values 1, 0 and 1 at nodes i, j and k, respectively. If q(x) is expanded
10
In variational language: the Green function of the u = 0 problem is included in the FEM trial space.
11
These can happen when transforming such elements for 2D and 3D trusses. See Exercise E11.7.
12
1117
in Fourier series
q(x) =
M
qm eim x ,
m = m/L ,
(11.53)
m=1
(the term m = 0 requires special handling) the exact solution of the continuum equation E A u + q = 0 is
u (x) =
M
u m eim x ,
u m =
m=1
qm eim x
.
E Am2
(11.54)
M
f jm ,
f jm = qm
m=1
sin2 ( 12 m
)
1 2 2
4 m
eim x2 .
(11.55)
To construct a modified differential equation (MoDE), expand the displacement by Taylor series centered at
node j. Evaluate at i and k: u i = u j
u j +
2 u j /2!
3 u j /3! +
4 u ivj /4! + . . . and u k = u j +
u j +
2 u j /2 +
3 u j /3! +
4 u ivj /4! + . . .. Replace these series into (11.51) to get
2E A
1
2 iv
4 vi
u + u + uj + ...
2! j 4! j
6!
= fj.
(11.56)
This is an ODE of infinite order. It can be reduced to an algebraic equation by assuming that the response of
(11.56) to qm eim x is harmonic: u jm eim x . If so u jm = m2 u jm , u ivjm = m4 u jm , etc, and the MoDE becomes
sin2 ( 1 m
)
2
2
4
4
1
m + m . . . u jm = 4E A
sin2 ( 12 m
) u jm = f jm = qm
1 22 2 eim x j .
2!
4!
6!
4 m
(11.57)
Solving gives u jm = qm eim x j /(E Am2 ), which compared with (11.54) shows that u jm = u m for any m > 0.
Consequently u j = u j . In other words, the MoDE (11.56) and the original ODE: E Au + q = 0 have the
same value at x = x j for any load q(x) developable as (11.53). This proves nodal exactness. In between
nodes the two solutions will not agree.13
2E A
m2
The case m = 0 has to be treated separately since the foregoing expressions become 0/0. The response to a
uniform q = q0 is a quadratic in x, and it is not difficult to prove nodal exactness.
11.6.3. *Robin Boundary Conditions
Suppose that for a bar of length L one has the following end conditions: u (0) = au(0) + b at x = 0 and
u (L) = au(L) + b at x = L, in which a and b are given coefficients. Those are called Robin BCs in the
literature. Adjoining them as Courant penalty terms gives the functional
F(u) =
(11.58)
Divide [0,L] into Ne elements and N = Ne + 1 nodes. Do C 0 linear interpolation over each element, insert
into F(u) to get Fd (u) = 12 uT Ku fT v, in which u is the vector of node values, K the master stiffness matrix
and f the master force vector. Coefficients a and b will affect both K and f.
13
The FEM solution varies linearly between nodes whereas the exact one is generally trigonometric.
1118
1119
A different technique is used in Exercise 11.10. The budding concept of superconvergence, which emerged
in the late 1960s, is outlined in the book of Strang and Fix [698]. There is a monograph [781] devoted to the
subject; it covers only Poisson problems but provides a comprehensive reference list until 1995.
References
Referenced items moved to Appendix R.
1120
Exercises
A = Ai (1 ) + A j ,
(E11.1)
where Ai and A j are the areas at the end nodes, and = x e /
is the dimensionless coordinate defined in
11.3.6. Show that this yields the same answer as that of a stiffness of a constant-area bar with cross section
1
(Ai + A j ). Note: the following Mathematica script may be used to solve this exercise:14
2
ClearAll[Le,x,Em,A,Ai,Aj];
Be={{-1,1}}/Le; =x/Le; A=Ai*(1- )+Aj* ;
Ke=Integrate[Em*A*Transpose[Be].Be,{x,0,Le}];
Ke=Simplify[Ke];
Print["Ke for varying cross section bar: ",Ke//MatrixForm];
axial force q = g A per unit length along the element. Show that this vector is the same as that obtained with
the element-by-element (EbE) lumping method of 8.4, which simply assigns half of the total load: 12 g A
,
to each node. Hint: use (11.29) and
1
0
d = /.
EXERCISE 11.4 [A/C:15] Repeat the previous calculation for the tapered bar element subject to a force
q = g A per unit length, in which A varies according to (E11.1) whereas and g are constant. Check that if
Ai = A j one recovers f i = f j = 12 g A
. Note: the following Mathematica script may be used to solve this
exercise:15
ClearAll[q,A,Ai,Aj,,g,Le,x];
=x/Le; Ne={{1- , }}; A=Ai*(1- )+Aj* ; q=*g*A;
fe=Integrate[q*Ne,{x,0,Le}];
fe=Simplify[fe];
Print["fe for uniform load q: ",fe//MatrixForm];
ClearAll[A];
Print["fe check: ",Simplify[fe/.{Ai->A,Aj->A}]//MatrixForm];
EXERCISE 11.5 [A/C:20] A tapered bar element of length
, end areas Ai and A j with A interpolated as
per (E11.1), and constant density , rotates on a plane at uniform angular velocity (rad/sec) about node i.
Taking axis x along the rotating bar with origin at node i, the centrifugal axial force is q(x) = A2 x along
the length, in which x x e . Find the consistent node forces as functions of , Ai , A j , and
, and specialize
the result to the prismatic bar A = Ai = A j . Partial result check: f j = 13 2 A
2 for A = Ai = A j .
14
15
The ClearAll[...] at the start of the script is recommended programming practice to initialize variables and avoid
cell crosstalk. In a Module this is done by listing the local variables after the Module keyword.
The ClearAll[A] before the last statement is essential; else A would retain the previous assignation.
1121
EXERCISE 11.6 [A:15] (Requires knowledge of Diracs delta function properties.) Find the consistent load
vector fe if the bar is subjected to a concentrated axial force Q at a distance x = a from its left end. Use
(11.28), with q(x) = Q (a), in which (a) is the one-dimensional Diracs delta function at x = a. Note: the
following script does it by Mathematica, but it is overkill:
ClearAll[Le,q,Q,a,x];
=x/Le; Ne={{1- , }}; q=Q*DiracDelta[x-a];
fe=Simplify[ Integrate[q*Ne,{x,-Infinity,Infinity}] ];
Print["fe for point load Q at x=a: ",fe//MatrixForm];
EXERCISE 11.7 [C+D:20] In a learned paper, Dr. I. M. Clueless proposes improving the result for the
example truss by putting three extra nodes, 4, 5 and 6, at the midpoint of members 12, 23 and 13, respectively.
His reasoning is that more is better. Try Dr. C.s suggestion using the Mathematica implementation of Chapter
4 and verify that the solution blows up because the modified master stiffness is singular. Explain physically
what happens.
EXERCISE 11.8 [C+D:15] This exercise illustrates Galerkin surprises. Take up again the example of
11.5.2, but suppose now that the axial load varies linearly, as in (11.31). The trial and weight function
assumptions are the quadratic polynomials (11.41). Show that the integral (11.39) is given by
12 J/L = b0 24E A a2 + 6(q1 +q2 ) + b1 12E A a2 + 2(q1 +2q2 ) + b2 8E A a2 + (q1 +3q2 ) , (E11.2)
and that the resulting 3 equations for a2 are inconsistent unless q1 = q2 . Only one weight function gives
the correct solution at x = L; which one? Note that the Galerkin method is generally viewed as the most
reliable member of the MWR tribe. But unforeseen surprises have a silver lining: more papers can be written
to explain them. Here is a partial fix: make the test function satisfy the essential BC a priori.
EXERCISE 11.9 [A:20]. Prove that (11.47) is the first variation of (11.48), thus linking the PVW with the
TPE functional. See Remark 11.5 for a hint on how to treat the boundary term in (11.47).
EXERCISE 11.10 [A:35, close to research paper level]. Prove nodal exactness of the two-node bar element
for arbitrary but Taylor expandable loading without using the Fourier series approach. Hints: expand q(x) =
q(x j ) + (
)q (x j ) + (
)2 q (x j )/2! + . . ., where
= x x j is the distance to node j, compute the
consistent force f j (x) from (11.52), and differentiate the MoDE (11.56) repeatedly in x while truncating all
derivatives to a maximum order n 2. Show that the original ODE: E Au + q = 0, emerges as an identity
regardless of how many derivatives are kept.
1122
12
Variational
Formulation of
Plane Beam
Element
121
TABLE OF CONTENTS
Page
12.1
12.2
12.3
12.4
12.5
12.6
12.
12.
12.
Introduction
. . . . . . . . . . . . . . . . . . . . .
What is a Beam? . . . . . . . . . . . . . . . . . . .
12.2.1
Terminology
. . . . . . . . . . . . . . . . .
12.2.2
Mathematical Models . . . . . . . . . . . . . .
12.2.3
Assumptions of Classical Beam Theory . . . . . . . . .
The Bernoulli-Euler Beam Theory . . . . . . . . . . . . .
12.3.1
Element Coordinate Systems
. . . . . . . . . . . .
12.3.2
Kinematics
. . . . . . . . . . . . . . . . .
12.3.3
Loading . . . . . . . . . . . . . . . . . . .
12.3.4
Support Conditions . . . . . . . . . . . . . . .
12.3.5
Strains, Stresses and Bending Moments . . . . . . . . .
Total Potential Energy Functional . . . . . . . . . . . . .
Beam Finite Elements . . . . . . . . . . . . . . . . . .
12.5.1
Finite Element Trial Functions
. . . . . . . . . . .
12.5.2
Shape Functions
. . . . . . . . . . . . . . . .
The Finite Element Equations
. . . . . . . . . . . . . .
12.6.1
The Stiffness Matrix of a Prismatic Beam . . . . . . . .
12.6.2
Consistent Nodal Force Vector for Uniform Load . . . . .
Notes and Bibliography
. . . . . . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . . . . . . . . . . .
122
123
123
123
123
124
124
124
125
125
125
125
126
127
128
128
129
1210
1211
1215
1215
1216
12.2
WHAT IS A BEAM?
12.1. Introduction
The previous Chapter introduced the TPE-based variational formulation of finite elements, which
was illustrated for the bar element. This Chapter applies that technique to a more complicated
one-dimensional element: the plane beam described by engineering beam theory.
Mathematically, the main difference of beams with respect to bars is the increased order of continuity required for the assumed transverse-displacement functions to be admissible. Not only must
these functions be continuous but they must possess continuous x first derivatives. To meet this
requirement both deflections and slopes are matched at nodal points. Slopes may be viewed as
rotational degrees of freedom in the small-displacement assumptions used here.
12.2. What is a Beam?
Beams are the most common type of structural component, particularly in Civil and Mechanical
Engineering. A beam is a bar-like structural member whose primary function is to support transverse
loading and carry it to the supports. See Figure 12.1.
By bar-like it is meant that one of the dimensions is considerably larger than the other two.
This dimension is called the longitudinal dimension or beam axis. The intersection of planes normal to the longitudinal dimension with the beam
member are called cross sections. A longitudinal
plane is one that passes through the beam axis.
A beam resists transverse loads mainly through bending action, Bending produces compressive
longitudinal stresses in one side of the beam and tensile stresses in the other.
The two regions are separated by a neutral
surface of zero stress. The combination of
tensile and compressive stresses produces
an internal bending moment. This moment
is the primary mechanism that transports
loads to the supports. The mechanism is
illustrated in Figure 12.2.
Neutral surface
Compressive stress
Tensile stress
Figure 12.2. Beam transverse loads are
primarily resisted by bending action.
12.2.1. Terminology
A general beam is a bar-like member designed to resist a combination of loading actions such as
biaxial bending, transverse shears, axial stretching or compression, and possibly torsion. If the
internal axial force is compressive, the beam has also to be designed to resist buckling. If the
beam is subject primarily to bending and axial forces, it is called a beam-column. If it is subjected
primarily to bending forces, it is called simply a beam. A beam is straight if its longitudinal axis
is straight. It is prismatic if its cross section is constant.
A spatial beam supports transverse loads that can act on arbitrary directions along the cross section.
A plane beam resists primarily transverse loading on a preferred longitudinal plane. This Chapter
considers only plane beams.
123
Planar symmetry. The longitudinal axis is straight and the cross section of the beam has a
longitudinal plane of symmetry. The resultant of the transverse loads acting on each section
lies on that plane. The support conditions are also symmetric about this plane.
2.
Cross section variation. The cross section is either constant or varies smoothly.
3.
Normality. Plane sections originally normal to the longitudinal axis of the beam remain plane
and normal to the deformed longitudinal axis upon bending.
4.
Strain energy. The internal strain energy of the member accounts only for bending moment
deformations. All other contributions, notably transverse shear and axial force, are ignored.
5.
Linearization. Transverse deflections, rotations and deformations are considered so small that
the assumptions of infinitesimal deformations apply.
6.
Material model. The material is assumed to be elastic and isotropic. Heterogeneous beams
fabricated with several isotropic materials, such as reinforced concrete, are not excluded.
The qualifier Hermitian relates to the use of a transverse-displacement interpolation formula studied by the French
mathematician Hermite. The term has nothing to do with the mathematical model used.
If the beam is homogenous, the neutral axis passes through the centroid of the cross section. If the beam is fabricated
of different materials for example, a reinforced concrete beam the neutral axes passes through the centroid of an
equivalent cross section. This topic is covered in Mechanics of Materials textbooks; for example Popov [595].
124
12.3
y, v
q(x)
y,v
_
zc
L
Neutral surface
x, u
Neutral axis
Beam
cross
section
Centroid
Symmetry plane
Figure 12.3. Terminology and choice of axes for Bernoulli-Euler model of plane beam.
The Cartesian axes for plane beam analysis are chosen as shown in Figure 12.3. Axis x lies along
the longitudinal beam axis, at neutral axis height. Axis y lies in the symmetry plane and points
upwards. Axis z is directed along the neutral axis, forming a RHS system with x and y. The origin
is placed at the leftmost section. The total length (or span) of the beam member is called L.
12.3.2. Kinematics
The motion under loading of a plane beam member in the x, y plane is described by the two
dimensional displacement field
u(x, y)
,
(12.1)
v(x, y)
where u and v are the axial and transverse displacement components, respectively, of an arbitrary
beam material point. The motion in the z direction, which is primarity due to Poissons ratio
effects, is of no interest. The normality assumption of the Bernoulli-Euler model can be represented
mathematically as
u(x, y) = y
v(x)
= yv = y,
x
v(x, y) = v(x).
(12.2)
Note that the slope v = v/ x = dv/d x of the deflection curve has been identified with the
rotation symbol . This is permissible because represents to first order, according to the kinematic
assumptions of this model, the rotation of a cross section about z positive CCW.
12.3.3. Loading
The transverse force per unit length that acts on the beam in the +y direction is denoted by q(x), as
illustrated in Figure 12.3. Concentrated loads and moments acting on isolated beam sections can
be represented by the delta function and its derivative. For example, if a transverse point load F
acts at x = a, it contributes F(a) to q(x). If the concentrated moment C acts at x = b, positive
CCW, it contributes C (b) to q(x), where denotes a doublet acting at x = b.
12.3.4. Support Conditions
Support conditions for beams exhibit far more variety than for bar members. Two canonical cases
are often encountered in engineering practice: simple support and cantilever support. These are
illustrated in Figures 12.4 and 12.5, respectively. Beams often appear as components of skeletal
structures called frameworks, in which case the support conditions are of more complex type.
125
;;;;;;;
;;;;;;;
;;;;;;;
;;;;;;;
u
d 2v
2v
= y 2 = y 2 = yv = y.
x
x
dx
(12.3)
Here denotes the deformed beam axis curvature, which to first order is d 2 v/d x 2 = v . The
bending stress = x x is linked to e through the one-dimensional Hookes law
= Ee = E y
d 2v
= E y,
dx2
(12.4)
where E is the longitudinal elastic modulus. The most important stress resultant in classical beam
theory is the bending moment M, which is defined as the cross section integral
d 2v
M=
y d A = E 2
dx
A
y 2 d A = E I .
(12.5)
Here I Izz denotes the moment of inertia A y 2 d A of
the cross section with respect to the z (neutral) axis. The
bending moment M is considered positive if it compresses
the upper portion: y > 0, of the beam cross section, as illustrated in Figure 12.6. This convention explains the negative
sign of y in the integral (12.5). The product E I is called the
bending rigidity of the beam with respect to flexure about
the z axis.
M
x
V
Figure 12.6. Positive sign
convention for M and V .
The governing equations of the Bernoulli-Euler beam model are summarized in the Tonti diagram
of Figure 12.7.
126
12.5
Prescribed
end
displacements
Displacement
BCs
Transverse
displacements
Distributed
transverse load
v(x)
q(x)
Kinematic
= v''
M''=q Equilibrium
M = EI
Curvature
(x)
Bending
moment
Force BCs
Prescribed
end loads
M(x)
Constitutive
Figure 12.7. The Tonti diagram for the governing equations of the Bernoulli-Euler beam model.
(12.6)
where as usual U and W denote the internal and external energies, respectively. As previously
explained, in the Bernoulli-Euler model U includes only the bending energy:
U=
1
2
e dV =
V
1
2
M d x =
1
2
E I dx =
2
1
2
2
E I v d x =
1
2
v E I v d x.
(12.7)
The external work W accounts for the applied transverse force:
W =
qv d x.
(12.8)
The three functionals , U and W must be regarded as depending on the transverse displacement
v(x). When this dependence needs to be emphasized we write [v], U [v] and W [v].
Note that [v] includes up to second derivatives in v, because v = appears in U . This number
is called the variational index. Variational calculus tells us that since the index is 2, admissible
displacements v(x) must be continuous, have continuous first derivatives (slopes or rotations), and
satisfy the displacement BCs exactly. This continuity requirement can be succintly stated by saying
that admissible displacements must be C 1 continuous. This condition guides the construction of
beam finite elements described below.
Remark 12.1. If there is an applied distributed moment m(x) per unit of beam length, the external energy
L
(12.8) must be augmented with a 0 m(x)(x) d x term. This is further elaborated in Exercises 12.4 and 12.5.
Such kind of distributed loading is uncommon in practice although in framework analysis occasionally the
need arises for treating a concentrated moment between nodes.
127
(12.9)
P'(x+u,y+v)
y, v
v2
v1
1
E, I
2
x
x, u
P(x,y)
interpenetration
(a)
gap
(b)
v(x)
v(x)
Figure 12.9. Deflection of a clamped-SS beam discretized with four elements, grossly
exaggerated for visibility. (a) Cubic deflection elements; (b) linear deflection elements. The
latter maintains only C 0 continuity, leading to unacceptable material gap and interpenetration at
nodes.
Remark 12.2. The physical reason for C 1 continuity is illustrated in Figure 12.9, in which the lateral deflection
curve v(x) is grossly exaggerated for visibility. The left figure shows the approximation of v(x) by four cubic
functions, which maintain the required continuity. The right figure shows an attempt to approximate v(x) by
four piecewise linear functions that maintain only C 0 continuity. In this case material gap and interpenetration
occur at the nodes, as well as at the clamped left end, because section rotations jump between elements.
128
12.6
v1 = 1
Nv1e ()
1 = 1
N1e ()
e
Nv1
= 14 (1 )2 (2 + ),
Ne1
e
Nv2
Ne2
=
=
=
Nv2e ()
1
(1 )2 (1 + ),
8
1
(1 + )2 (2 ),
4
18 (1 + )2 (1 ).
v2 = 1
(12.12)
2 = 1
= 1
N2e ()
=1
The curvature that appears in U can be expressed in terms of the nodal displacements by differentiating twice with respect to x:
4 d 2 v e ( )
4 dNe e
d 2 v e (x)
= 2
= 2 2 u = B ue = N ue .
=
2
2
dx
d
d
(12.13)
1
6
3 1
6
3 + 1 .
(12.14)
Remark 12.3. The 4/2 factor in (12.13) comes from the differentiation chain rule. If f (x) is a function of x,
0
d f ( )
d(2/) d f ( ) 2 d
4 d 2 f ( )
d 2 f (x)
=
=
+
. (12.15)
dx2
dx
d
dx
d
2 d 2
129
ClearAll[EI,l, ];
Be={{6* ,(3* -1)*l,-6* ,(3* +1)*l}}/l^2;
Ke=(EI*l/2)*Integrate[Transpose[Be].Be,{ ,-1,1}];
Ke=Simplify[Ke]; Print["Ke for prismatic beam:"];
Print[Ke//MatrixForm];
Print[Simplify[Ke*l^2/EI]//MatrixForm];
Ke for prismatic beam:
12 EI
6 EI _ 12 EI
l3
l
l3
6 EI
4 EI _ 6 EI
l2
l
l2
_ 12 EI _ 6 EI 12 EI
l3
l2
l3
6 EI
2 EI _ 6 EI
l2
l
l2
ClearAll[q,l,];
Ne={{2*(1-)^2*(2+), (1-)^2*(1+)*l,
2*(1+)^2*(2-),(1+)^2*(1-)*l}}/8;
fe=(q*l/2)*Integrate[Ne,{,-1,1}]; fe=Simplify[fe];
Print["fe^T for uniform load q:\n",fe//MatrixForm];
6 EI
l2
2 EI
l
6 EI
l2
4 EI
l
12
12
K =
e
E I B B dx =
E I BT B 12 d,
(12.17)
NT q 12 d,
(12.18)
(12.16)
N q dx =
is the consistent element node force vector. The calculation of the entries of Ke and fe for prismatic
beams and uniform load q is studied next. More complex cases are treated in the Exercises.
12.6.1. The Stiffness Matrix of a Prismatic Beam
If the bending rigidity E I is constant over the element it can be moved out of the -integral in
(12.17):
6
1
1
E
I
3 1 6
6
BT B d =
Ke = 12 E I
d. (12.19)
6
3
1
3
+
1
2 1
1
3 + 1
Expanding and integrating over the element yields
36 2
6(3 +1)
36 2 6(3 1)
12 6 12 6
1
2
2
2
2
EI
(3 1) 6(3 1) (9 1)
42 6 22
d = E I
Ke = 3
12 6
36 2
6(3 +1)
2 1
3
symm
42
symm
(3 +1)2 2
(12.20)
1210
Although the foregoing integrals can be easily carried out by hand, it is equally expedient to use a
CAS such as Mathematica or Maple. For example the Mathematica script listed in the top box of
Figure 12.11 processes (12.20) using the Integrate function. The output, shown in the bottom
box, corroborates the hand integration result.
1
(1 )2 (2 + )
4
1
1 1
2
8 (1 ) (1 + )
e
T
1
1
N d = 2 q
f = 2 q
d =
1
2
1
1 4 (1 + ) (2 )
18 (1 + )2 (1 )
1
1
1
6 .
q
2
1
16
(12.21)
This shows that a uniform load q over the beam element maps to two transverse node loads q/2, as
may be expected, plus two nodal moments q2 /12. The latter are called the fixed-end moments in
the structural mechanics literature.3 The hand result (12.21) can be verified with the Mathematica
script of Figure 12.12, in which fe is printed as a row vector to save space.
;;;;;;
;;
;;
;;
(a)
y,v
;;
A
EI constant
M
2
P
2
q uniform
Figure 12.13. Cantilever beam problem for Example 12.1: (a) structure,
(b-c): one-element FEM idealizations for three load cases.
Example 12.1. To see the beam element in action consider the cantilever illustrated in Figure 12.13(a). The
beam is prismatic with constant rigidity E I and span L. It is discretized with a single element as shown
in Figure 12.13(b,c,d), and subjected to the three load cases pictured there. Case I involves an applied end
moment M, case II a transverse end force P, and case III a uniformly distributed load q over the entire beam.
The FEM equations are constructed using the stiffness matrix (12.20) with = L.
For the first two load cases, forces at end node 2 are directly set up from the given loads since no lumping is
needed. Applying the support conditions v1 = 1 = 0 gives the reduced stiffness equations
E I 12
L 3 6L
6L
4L 2
v2I
2I
0
,
M
E I 12
L 3 6L
6L
4L 2
v2I I
2I I
P
,
0
(12.22)
Introduced by Hardy Cross in 1930 (long before FEM) as a key ingredient for his moment distribution method. Indeed
the title of his famous paper [174] is Analysis of continuous frames by distributing fixed-end moments.
1211
EI (x)/(qL 3 )
EI v(x)/(qL4 )
0.2
0.15
0.1
0.3
Lateral deflection
Analytical
FEM, = 0
FEM, = 1
0.25
0.2
M(x)/(qL2 )
Section rotation
Analytical
FEM, = 0
FEM, = 1
0.4
0.3
0.15
0.2
0.1
0.05
0.2
0.4
0.6
0.8
x/L
0.1
0.05
Bending moment
Analytical
FEM, = 0
FEM, = 1
0.5
0.2
0.4
0.6
0.8
x/L
x/L
0.2
0.4
0.6
0.8
Figure 12.14. FEM versus analytical solutions for load case III of Example 12.1.
for load cases I and II, respectively. Solving gives the tip deflections v2I = M L 2 /(2E I ) and v2I I = P L 3 /(3E I ),
and the tip rotations 2I = M L/E I and 2I I = P L 2 /(2E I ). These agree with the analytical values provided
by Bernoulli-Euler beam theory. Thus a one-element idealization is sufficient for exactness. The reason is that
the analytical deflection profiles v(x) are quadratic and cubic polynomials in x for cases I and II, respectively.
Both are included in the span of the element shape functions. Displacements v(x), rotations (x) and moments
M(x) expressed as functions of x also agree with the analytical solution, as may be expected.
The results for load case III are more interesting since now the exact deflection is a quartic polynomial, which
lies beyond the span of the FEM shape functions. A dimensionless parameter 0 1 is introduced in the
reduced stiffness equations to study the effect of load lumping method on the solution:
E I 12
L 3 6L
6L
4L 2
v2I I I
2I I I
1
2
qL
1
.
16 L
(12.23)
Setting = 1 gives the energy consistent load lumping (12.21) whereas = 0 gives the EbE (here same
as NbN) load lumping f 2I I I = 12 q L with zero fixed-end moments. The solution of (12.23) is v2I I I =
q L 4 (4 )/(24 E I ) and 2I I I = q L 3 (3 )/(12 E I ). From this one recovers the displacement, rotation
and bending moment over the beam as
v I I I (x) = q L 2 x 2
L(6) 2x
,
24 E I
L(6) 3x
,
12 E I
M I I I (x) =
q L
L(6) 6x .
12
(12.24)
q x (6L 2 4L x+x 2 )
,
6 EI
MexI I I (x) =
1
2
I I I (x) = q L x
q x 2 (3L 2 3L x+x 2 )
,
24 E I
exI I I (x) =
q(L x)2 .
(12.25)
The FEM and analytical solutions (12.24)-(12.25) are graphically compared in Figure 12.14. Deflections and
rotations obtained with the consistent load lumping = 1 agree better with the analytical solution. In addition
the nodal values are exact (a superconvergence result further commented upon in the next Example). For the
bending moment the values provided by the EbE lumping = 0 are nodally exact but over the entire beam
the = 1 solution gives a better linear fit to the parabolic function MexI I I (x).
Example 12.2. The second example involves a simply supported beam under uniform line load q, depicted in
Figure 12.15(a). It is prismatic with constant rigidity E I , span L, and discretized with two elements of length
L 1 = L(/ + ) and L 2 = L L 1 = L(/ ), respectively. (Ordinarily two elements of the same length
/ L would be used; the scalar (/, /) is introduced to study the effect of unequal element sizes.)
1212
q (uniform)
EI constant
B
x 1
;
;;
(b)
y,v
L1=L(12 +)
;;
(a)
y,v
L2=L(12 )
Using (12.20) and (12.21) to form the stiffness and consistent forces for both elements, assembling and applying
the support conditions v1 = v3 = 0, provides the reduced stiffness equations
8L 2
1+2
24L
2
EI
(1+2)
2
3
L 4L
1+2
0
24L
(1+2)2
192(1+12 2 )
(14 2 )3
192L
(14 2 )2
24L
(12)2
4L 2
1+2
192L
(14 2 )2
16L 2
14 2
4L 2
12
L(1+2)2
24
1
24L
1
2 v
q
L
2
(12)
.
=
2
L
4L
2
2
3
12 3
2
0
8L 2
12
(12.26)
L(12)
24
Solving for the lateral displacement of node 2 gives v2 = q L 4 (5 24 2 + 16 4 )/(384E I ). The exact
deflection is v(x) = q L 4 ( 2 3 + 4 )/(24E I ) with = x/L. Replacing x = L 1 = L(/ + ) yields
v2exact = q L 4 (5 24 2 + 16 4 )/(384E I ), which is the same as the FEM result. Likewise 2 is exact.
The result seems prima facie surprising. First, since the analytical solution is a quartic polynomial in x we
have no reason to think that a cubic element will be exact. Second, one would expect accuracy deterioration
as the element sizes differ more and more with increasing . The fact that the solution at nodes is exact for
any combination of element lengths is an illustration of superconvergence, a phenomenon already discussed in
11.5. A general proof of nodal exactness is given in 13.7, but it does require advanced mathematical tools.
Note that displacements and rotations inside elements will not agree with the exact one; this can be observed
in Figure 12.14(a,b) for load case III of the previous example.
L1= 12 L
q(x)=w constant
;
;
EI constant
L2= 12 L(1)
L/2
;
;
y,v (a)
L4= 12 L
L3= 12 L(1)
L/2
x 1
;;
;;
L1= 12 L
_
W
1.5
w
2
(c)
;;
;;
y,v (b)
L2= 12 L(1)
L/2
1.25
1
0.75
0.5
0.25
0.1
0.2
0.3
0.4
1213
0.5
Example 12.3. (Adapted from a driven-tank experiment by Patrick Weidman). This example displays the
advantages of symbolic computation for solving a problem in geometric design: optimal location of supports.
The prismatic continuous beam shown in Figure 12.16(a) is free at ends A and E, and simply supported at B,
C and D. The beam has total span L and constant bending rigidity E I . It is loaded by a uniform distributed
load q(x) = w. Support C is at midspan whereas B and D are at distances L 1 = L 4 = 12 L from the left
and right free ends, respectively. Here 0 < 1 is a design parameter to be determined as discussed later.
Since the problem is symmetric about midspan C only one half of the structure, say AC, need to be discretized.
The finite element model of this portion is shown in Figure 12.16(b). It has two beam elements and three nodes
placed at A, B and C, respectively. Element lengths depend on the design parameter , which is carried along
as a variable. The six degrees of freedom are collected in u = [ v1 1 v2 2 v3 3 ]T . The master stiffness
equations are
24
6L
243
0
0
6L
L2
0
0
2
24 6L 24 13 6L(12) 24 6L
4E I 3 2
3 3
2 2
3 2
2
2
2
L 3 6L
6L(12)
L
2L
6L2 L
2
2 2
24
6L
24
0
0
3
2
6L2
2
2
6L
L
2L
6L
0
0
2
2
6L
2
2L 2
3
6L
2
v1
0
L 2 0
1
12
v wL 1
fr
2
2
=
+
4 L(21)
0
2
12
v3
f 3r
3
m r3
L 2
12
(12.27)
in which = 1 . Note that reaction forces are carefully segregated in (12.27) to simplify application of
the general recovery technique discussed in 3.4.3. The support BCs are v2 = v3 = 3 = 0, where the latter
comes from the symmetry condition at C. Removing those freedoms provides the reduced stiffness equations
24 6L 6L
3 2 2
v
1
4E I 6L 2L 2 L 2
wL L 2
.
1
12
4
L3
L(21)
2
6L L 2 2L 2
2
(12.28)
12
Solving yields
v1 =
wL 4
(1 + )3 2 ,
768 E I
1 =
wL 3
(1 + )3 2 ,
384 E I
2 =
wL 3
(1 2 5 2 ). (12.29)
384 E I
The complete solution is u = [ v1 1 0 2 0 0 ]T . Inserting into (12.27) and solving for reactions gives
fr 2 =
wL 3 + 2 + 2
,
16
fr 3 =
wL 5 10 2
,
16
mr 3 =
wL 2
(1 2 2 ).
32
(12.30)
whence the support reactions follow as R B = fr 2 and RC = 2 fr 3 . It remains to find the best . Of course
best depends on the optimality criterion. Four choices are examined below.
Minimum External Energy. The external energy at equilibrium is W () = fT u = w 2 L 5 W ()/(18432 E I ),
in which W () = 1 5 2 2 + 26 3 + 5 4 + 3 5 . Minimizing W with respect to may be interpreted
as finding the stiffest structure (in the energy sense) under the given load vector f. A plot of W () over
0 12 clearly displays a minimum at 0.27 as shown in Figure 12.16(c). Solving the quartic equation
d W /d = 0 gives one positive real root in the range [0, 1), which to 5 places is best = 0.26817.
1214
12.
Equal Reactions. A second choice is to require that supports at B and C take the same load: R B = RC (note
that, because of symmetry, R D = R B ). Setting fr 2 = 2 fr 3 with their expressions taken from (12.30),yields
3 + 2 + 2 = 10 20 2 2 , or 7 22 3 2 = 0. This quadratic has the roots = 13 (11 142).
The positive real root best = 0.30546 makes R B = RC = R D = wL/3, as may be expected.
Minimum Relative Deflection. Consider two sections located at xi and x j , in which {xi , x j } [0, 12 L], with
lateral displacements vi = v(xi ) and v j = v(x j ), respectively. The maximum relative deflection is defined as
max
v max
ji () = max |v j vi | for a fixed . We seek the [0, 1) that minimizes v ji (). The computations are
far more complex than for the previous two criteria and are the subject of Exercise 12.11. Result: the best
is the positive real root of 4 + 11 81 2 49 3 47 4 = 0, which to 5 places is best = 0.26681. If this
< wL 4 /(67674E I ).
value is adopted, the relative deflection does not exceed vimax
j
Minimum Absolute Moment. Let M(x, ) denote the bending moment function recovered from the FEM
solution for a fixed . The maximum absolute moment is M max () = max |M(x, )| for x [0, 12 L]. We
seek an [0, 1) that minimizes it. This is the topic of Exercise 12.12. This problem is less well posed than
the previous one because M(x, ) varies linearly over each element, is nonzero at node 1 and discontinous at
node 2. On the other hand, the exact bending moment varies parabolically, is zero at node 1 and continuous
at node 2. Result: using the FEM-recovered M(x, ) and taking the average M at node 2, one finds that the
best is the positive root of 2 4 15 2 = 0, or best = 0.25540, for which M max < wL 2 /589. The
optimal solution using the exact moment distribution, however, is quite different. This is an intrinsic weakness
of displacement-based FEM since internal forces are obtained by differentiation, which boosts errors. To get
a better result a finer mesh would be needed.
In summary, the optimal from the foregoing criteria varies between 0.255 to 0.306. As a reasonable
compromise an engineer could pick best 0.28.
Notes and Bibliography
The Bernoulli-Euler (BE) beam model synthesizes pioneer work by Jacob and Daniel Bernoulli as well as that
of Leonhard Euler in the XVIII Century. Although the model was first enunciated by 1750, it was not applied
in structural design and analysis until the second half of the XIX Century. While Galileo Galilei is credited
with first attempts at a theory, recent studies [43] argue that Leonardo da Vinci made crucial observations a
century before Galileo. However, da Vinci lacked Hookes law and calculus to complete the theory.
A comprehensive source of stiffness and mass matrices of plane and spatial beams is the book by Przemieniecki
[603]. The derivation of stiffness matrices is carried out there using differential equilibrium equations rather
than energy methods. This was in fact the common practice before 1962, as influenced by the use of transfer
matrix methods [578] on the limited memory computers of the time. Results for prismatic elements, however,
are identical.
Energy derivations were popularized by Archer [35,36], Martin [473] and Melosh [490,491].
References
Referenced items have been moved to Appendix R.
1215
x
x
) + I2 = I1 12 (1 ) + I2 12 (1 + ).
(E12.1)
Use of Mathematica or similar CAS tool is recommended since the integrals are time consuming and error
prone. Mathematica hint: write
(E12.2)
and keep EI inside the argument of Integrate. Check whether you get back (12.20) if EI=EI1=EI2. If you
use Mathematica, this check can be simply done after you got and printed the tapered beam Ke, by writing
ClearAll[EI]; Ke=Simplify[ Ke/.{EI1->EI,EI2->EI}]; and printing this matrix.4
EXERCISE 12.2 [A/C:20] Use (12.18) to derive the consistent node force vector fe for a Hermitian beam
x
x
) + q2 = q1 12 (1 ) + q2 12 (1 + ).
(E12.3)
Again use of a CAS is recommended, particularly since the polynomials to be integrated are quartic in , and
hand computations are error prone. Mathematica hint: write
(E12.4)
and keep q inside the argument of Integrate. Check whether you get back (12.21) if q1 = q2 = q (See
previous Exercise for Mathematica procedural hints).
EXERCISE 12.3 [A:20] Obtain the consistent node force vector fe of a Hermitian beam element subject to
a transverse point load P at abscissa x = a where 0 a . Use the Diracs delta function expression
q(x) = P (a) and the fact that for any continuous function f (x), 0 f (x) (a) d x = f (a) if 0 a .
Check the special cases a = 0 and a = .
EXERCISE 12.4 [A:25] Derive the consistent node force vector fe of a Hermitian beam element subject to a
linearly varying z-moment m per unit length, positive CCW, defined by the law m(x) = m 1 (1 )/2 + m 2 (1 +
)/2. Use the fact that the external work per unit length is m(x)(x) = m(x) v (x) = (ue )T (dN/d x)T m(x).
For arbitrary m(x) show that this gives
f =
e
NT
m dx =
x
1
1
NT 2 1
m d =
2
1
1
NT m d,
(E12.5)
where NT denote the column vectors of beam shape function derivatives with respect to . Can you see a
shortcut that avoids the integral altogether if m is constant?
EXERCISE 12.5 [A:20] Obtain the consistent node force vector fe of a Hermitian beam element subject to
a concentrated moment (point moment, positive CCW) C applied at x = a. Use the Concentrated moment
load on beam element expression (E12.5) in which m(x) = C (a), where (a) denotes the Diracs delta
function at x = a. Check the special cases a = 0, a = and a = /2.
4
ClearAll[EI] discards the previous definition (E12.2) of EI; the same effect can be achieved by writing EI=. (dot).
1216
Exercises
.
f ( ) d = 2 f (0).
(E12.6)
.
f ( ) d = f (1/ 3) + f (1/ 3).
(E12.7)
5
8
. 5
f ( ) d = f ( 3/5) + f (0) + f ( 3/5).
9
9
9
(E12.8)
One point :
1
Two points:
1
1
Three points:
1
d,
d,
1
1
1
2 d, . . .
(E12.9)
until the rule fails. In this way verify that rules (E12.6), (E12.7) and (E12.8) are exact for polynomials of
degree up to 1, 3 and 5, respectively. (Labor-saving hint: for odd monomial degree no computations need to
be done; why?).
EXERCISE 12.7 [A/C:25] Repeat the derivation of Exercise 12.1 using the two-point Gauss rule (E12.7) to
evaluate integrals in . A CAS is recommended. If using Mathematica you may use a function definition to
1
save typing. For example to evaluate 1 f ( ) d in which f ( ) = 6 4 3 2 + 7, by the 3-point Gauss rule
(E12.8), say
f[ ]:=6 ^4-3 ^2+7; int=Simplify[(5/9)*(f[-Sqrt[3/5]]+f[Sqrt[3/5]])+(8/9)*f[0]];
and print int. To form an element by Gauss integration define matrix functions in terms of , for example
Be[ ], or use the substitution operator /., whatever you prefer. Check whether one obtains the same answers
as with analytical integration, and explain why there is agreement or disagreement. Hint for the explanation:
consider the order of the polynomials you are integrating over the element.
EXERCISE 12.8 [A/C:25] As above but for Exercise 12.2.
EXERCISE 12.9 [A/C:30] Derive the Bernoulli-Euler beam stiffness matrix (12.20) using the method of
differential equations. To do this integrate the homogeneous differential equation E I v = 0 four times over a
cantilever beam clamped at node 1 over x [0, ] to get v(x). The process yields four constants of integration
C1 through C4 , which are determined by matching the two zero-displacement BCs at node 1 and the two force
BCs at node 2. This provides a 2 2 flexibility matrix relating forces and displacements at node j. Invert to
get a deformational stiffness, and expand to 4 4 by letting node 1 translate and rotate.
EXERCISE 12.10 [C:20] Using Mathematica, repeat Example 12.2 but using EbE lumping of the distributed
force q. (It is sufficient to set the nodal moments on the RHS of (12.26) to zero.) Is v2 the same as the exact
analytical solution? If not, study the ratio v2 /v2exact as function of , and draw conclusions.
EXERCISE 12.11 [C:25] For the continuous beam of Example 12.3, verify the results given there for the
optimal that minimizes the maximum relative deflection. Plot the deflection profile when = best .
EXERCISE 12.12 [C:25] For the continuous beam of Example 12.3, verify the results given there for the
optimal that minimizes the absolute bending moment. Plot the moment diagram when = best .
5
1217
13
Advanced
One-Dimensional
Elements
131
TABLE OF CONTENTS
Page
13.1.
13.2.
13.3.
13.4.
13.5.
13.6.
13.
13.
13.
Introduction
Generalized Interpolation
13.2.1. Legendre Polynomials
. . . . . . . . . . .
13.2.2. Generalized Stiffnesses
. . . . . . . . . . .
13.2.3. Transforming to Physical Freedoms: BE Model . . .
13.2.4. Transforming to Physical Freedoms: Shear-Flexible Model
13.2.5. Hinged Plane Beam Element
. . . . . . . . .
13.2.6. Timoshenko Plane Beam Element . . . . . . . .
13.2.7. Shear-Curvature Recovery . . . . . . . . . .
13.2.8. Beam on Elastic Supports . . . . . . . . . . .
Interpolation with Homogeneous ODE Solutions
13.3.1. Exact Winkler/BE-Beam Stiffness
. . . . . . .
Equilibrium Theorems
13.4.1. Self-Equilibrated Force System . . . . . . . . .
13.4.2. Handling Applied Forces
. . . . . . . . . .
13.4.3. Flexibility Equations
. . . . . . . . . . . .
13.4.4. Rigid Motion Injection
. . . . . . . . . . .
13.4.5. Applications . . . . . . . . . . . . . . .
Flexibility Based Derivations
13.5.1. Timoshenko Plane Beam-Column
. . . . . . .
13.5.2. Plane Circular Arch in Local System . . . . . . .
13.5.3. Plane Circular Arch in Global System
. . . . . .
*Accuracy Analysis
13.6.1. *Accuracy of Bernoulli-Euler Beam Element
. . . .
13.6.2. *Accuracy of Timoshenko Beam Element . . . . .
Notes and Bibliography
. . . . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . .
132
. .
.
. .
.
. .
.
. .
.
.
.
.
.
.
.
.
.
. . .
. .
. . .
. .
. . .
. .
. . .
. .
. . .
. .
. . .
. .
. . .
. .
133
133
133
134
134
135
135
136
137
139
1311
1311
1316
1316
1316
1317
1319
1319
1320
1320
1321
1324
1327
1327
1329
1330
1331
1332
13.1.
Introduction
This Chapter develops special one-dimensional elements, such as thick beams, arches and beams on elastic
foundations, that require mathematical and modeling resources beyond those presented in Chapters 1112.
The techniques used are less elementary,1 and may be found in books on Advanced Mechanics of Materials,
e.g. [91,100]. Readers are expected to be familiar with ordinary differential equations and energy methods.
The Chapter concludes with beam accuracy analysis based on the modified equation method.
All of this Chapter material would be normally bypassed in an introductory finite element course. It is primarily
provided for offerings at an intermediate level, for example a first graduate FEM course in Civil Engineering.
Such courses may skip most of Part I as being undergraduate material.
13.2.
Generalized Interpolation
For derivation of special and C 0 beam elements it is convenient to use a transverse-displacement cubic interpolation in which the nodal freedoms v1 , v2 , 1 and 2 are replaced by generalized coordinates c1 to c4 :
v( ) = Nc1 c1 + Nc2 c2 + Nc3 c3 + Nc4 c4 = Nc c.
(13.1)
Here Nci ( ) are generalized shape functions that satisfy the completeness requirement discussed in Chapter 19.
Nc is a 14 matrix whereas c is a column 4-vector. Formula (13.1) is a generalized interpolation. It includes
the Hermite interpolation (12.1012.12) as an instance when c1 = v1 , c2 = v1 , c3 = v2 and c4 = v2 .
13.2.1. Legendre Polynomials
An obvious generalized interpolation is the ordinary cubic polynomial v( ) = c1 + c2 + c3 2 + c4 3 , but this
turns out not to be particularly useful. A more seminal expression is
v( ) = L 1 c1 + L 2 c2 + L 3 c3 + L 4 c4 = L c,
(13.2)
L 2 ( ) = ,
L 3 ( ) = 12 (3 2 1),
L 4 ( ) = 12 (5 3 3 ).
(13.3)
Here c1 through c4 have dimension of length. Functions (13.3) and their first two -derivatives are plotted in
Figure 13.1. Unlike the shape functions (12.12), the L i have a clear physical meaning:
L1
L2
L3
L4
These properties are also shared by the standard polynomial c1 + c2 + c3 2 + c4 3 . What distinguishes the
set (13.3) are the orthogonality properties
Q0 =
(L )T L d x =
Q3 =
Q2 =
14400
(L )T L d x =
diag [ 0 0 0 1 ] ,
5
in which
(.)
48
diag [ 0 0 3 25 ] ,
3
d(.)
.
dx
(13.4)
Qn is called the covariance matrix for the n th derivative of the Legendre polynomial interpolation. The
first-derivative covariance Q1 = 0 (L )T L d x is not diagonal, but this matrix is not used here.
1
They do not reach, however, the capstone level of Advanced Finite Element Methods [?].
133
L4
L3
1
0.5
15
dL4 /d
dL
/d
3
4
L1
L2
0.5
dL 2 /d
0.5
1
1
0.5
0.5
dL1 /d
d 2L3 /d 2
0.5
0.5
10
5
0.5
d 2L1 /d2
and
d 2L 2 /d2
10
d 2L4 /d 2
15
Figure 13.1. The Legendre polynomials and their first two -derivatives shown over [1, 1]. Those
interpretable as beam rigid body modes (L 1 and L 2 ) in black; deformational modes (L 3 and L 4 ) in color.
Remark 13.1. The notation (13.2)(13.3) is FEM oriented. L 1 through L 4 are called P0 through P3 in the mathematical
literature; e.g. Chapter 22 of the handbook [2]. The general definition for n = 0, 1 . . . is
L n+1 ( ) Pn ( ) =
n
n
n1
1 k
k
k=0
1
= n
2
n 2
n
k=0
( 1)
nk
1
( +1) = n
2
k
n 2n2k
n/2
k=0
n2k .
(13.5)
where k is the binomial coefficient. Legendre polynomials are normalized by Pn (1) = 1, Pn (1) = (1)n . They can
also be indirectly defined by generating functions such as
Pn ( ) z =
n
k=0
1
1 2 z + z 2
or alternatively
k=0
1
Pn ( ) z n = e x z J0 (z 1 2 ).
n!
(13.6)
They can also be defined through a 3-term recurrence relation: (n + 2)Pn+2 ( ) (2n + 3) Pn+1 ( ) + (n + 1) Pn ( ) = 0
started with P0 ( ) = 1 and P1 ( ) = . One important application of these polynomials in numerical analysis is the
construction of one-dimensional Gauss integration rules: the abscissas of the n-point rule are the zeros of L n+1 ( ) = Pn ( ).
KcB =
R B (L )T L d x,
KcS =
R S 2 4 (L )T L d x.
(13.7)
In the case of a Bernoulli-Euler (BE) beam, the shear contribution is dropped: Kc = KcB . Furthermore if
the element is prismatic, R B = E I is constant. If so KcS = R B and KcB = E I Q2 , where Q2 is the second
diagonal matrix in (13.4). With view to future use it is convenient to differentiate between symmetric and
antisymmetric bending rigidities R Bs and R Ba , which are associated with the responses to modes L 3 and L 4 ,
respectively. Assuming R Bs and R Ba to be uniform along the element we get
Kc = KcBs + KcBa ,
KcBs =
144R Bs
diag [ 0 0 1 0 ] ,
3
KcBa =
1200R Ba
diag [ 0 0 0 1 ] ,
3
(13.8)
If shear flexibility is accounted for, the contribution KcS of (13.7) is kept. Assuming R S to be constant over
the element, Kc is split into 3 contributions (two bending and one shear):
Kc = KcBs + KcBa + KcS ,
with
KcS = R S 2 4 Q3 =
134
14400R S 2
diag [ 0 0 0 1 ] .
(13.9)
v1
1
1 0
v = 1
2
2
0
1 1
1
c1
2/ 6/ 12/ c2
,
1
1
1 c3
c4
2/ 6/ 12/
c1
30
1
c2
36
c =
0
60
3
c4
6
5
3
5
3
30
36
0
6
5
v1
3 1
.
5 v2
2
3
(13.10)
In compact form: ue = G B c and c = H B ue , with H B = G1
B . Here 1 v1 and 2 v2 , which reflects the
fundamental plane sections remain plane kinematic assumption of the BE model. The physical stiffness is
Ke = HTB KcBs
12Ra
1 6Ra
+ KcBa H B = 3
12Ra
6Ra
6Ra
(3Ra + Rs ) 2
6Ra
(3Ra Rs ) 2
12Ra
6Ra
12Ra
6Ra
6Ra
(3Ra Rs ) 2
.
6Ra
(3Ra + Rs ) 2
(13.11)
If Rs = Ra = E I the well known stiffness matrix (12.20) is recovered, as can be expected. The additional
freedom conferred by (13.11) is exhibited later in two unconventional applications.
13.2.4. Transforming to Physical Freedoms: Shear-Flexible Model
A shear flexible beam has mean shear distortion = 2 v . If is constant and v( ) interpolated by (13.2),
v = 120 c4 / 3 . Thus = 120c4 / is constant over the element. The end rotational freedoms become
1 = v1 + and 2 = v2 + . Using
= 12 to simplify the algebra, the transformations (13.10) change to
30
5
30
5
1
1
c1
c1
v
3 36+30
3 1
c2 c2 1 36+30
6 12+10
1+
1+
1+
1+
1
, =
1
1
c3
c3
60
0
5
0
5 v2
6 12+10
6
3
6
3
c4
c4
2
1+
1+
1+
1+
(13.12)
e
e
u
=
H
u
.
Transforming
K
of
(13.9)
to
physical
freedoms
yields
In compact form, ue = G S c and c = G1
S
c
S
the stiffness used to construct the Timoshenko beam element in 13.2.6:
1
v1
0
1
v =
1
2
2
0
1
2
1
2
0
R Bs 0
e
T
K = H S Kc H S =
0
0
0 0
1 0
0 0
1 0
0
4
1 12R Ba + R S
2 2 2
+
4
0
4 3 (1 +
)2
2
1
2
2
2
2
4
2
2 2
. (13.13)
4
2
2 2
y
13.2.5. Hinged Plane Beam Element
The two-node prismatic plane BE beam element depicted in
Figure 13.2 has a mechanical hinge at midspan ( = 0). The
cross sections on both sides of the hinge can rotate respect
to each other. The top figure also sketches a fabrication
method sometimes used in short-span pedestrian bridges.
Gaps on either side of the hinged section cuts are filled with
a bituminous material that permits slow relative rotations.
Both the curvature and the bending moment M must vanish
at midspan. But in a element built via cubic interpolation of
v(x), = v must vary linearly in both and x.
135
hinge
2 x
1
/2
/2
Consequently the mean curvature, which is controlled by the Legendre function L 2 (shown in blue on Figure 13.1) must be zero. The kinematic constraint of zero mean curvature is enforced by setting the symmetric
bending rigidity R Bs = 0 whereas the antisymmetric bending rigidity is the normal one: R Ba = E I .
Plugging into (13.11) yields
4
3E
I
2
Ke = 3
4
2
4
2
2
2 2 3E I
= 3 [ 2 2 ]
.
4
2
2
2 2
2
2
2
2
(13.14)
This matrix has rank one, as it can be expected from the last (dyadic) expression in (13.14). Ke has one
nonzero eigenvalue: 6E I (4 + 2 )/ 3 , and three zero eigenvalues. The eigenvector associated with the nonzero
eigenvalue pertains2 Matrix (13.14) can be derived by more sophisticated methods (e.g., mixed variational
principles) but the present technique is the most expedient one.
y,v (a)
1
EI constant
x
(1)
L
q0
(2)
hinge
L/2
L/2
(b)
2
The beam is discretized with two elements: (1) and (2), going
from 1 to 2 and 2 to 3, respectively, as shown in the figure.
The stiffnesses for elements (1) and (2) are those of (12.20)
and (13.14), respectively, whereas (12.21) is used to build the
consistent node forces for both elements.
;;
;
;
Example 13.1.
3
= 0.362
Assembling and applying the support conditions v2 = v3 = 3 = 0, provides the reduced stiffness equations
EI
L3
12/ 3
6L/ 2
6L/ 2
6L/ 2
4L 2 /
2L 2 /
v
6L/ 2
1
q0 L
2L 2 /
1 =
2
2
L (4 + 3)/
2
.
L 2 /6
L(1 2 )/6
(13.15)
v(x, y) = v(x),
with
v
+ = v + ,
x
V
.
G As
(13.16)
Compare the vector in the last expression in (13.14) to the last row of H B in (13.10) to the antisymmetric deformational
mode L 3 .
136
(a)
y, v
1
1
v'1 =|dv/dx|1
(b)
Deformed
cross
section
(c)
y
M
v'2 =|dv/dx|2
v1
v2
v(x)
x, u
Positive M, V
conventions
V(+)
A positive transverse
shear force V produces
a CCW rotation (+) of
the beam cross section
Figure 13.4. Two-node Timoshenko plane beam element: (a) kinematics (when developed with cubic shape
functions, 1 = 2 = ); (b) M and V sign conventions; (c) concurrence of sign conventions for V and .
Here V is the transverse shear force, the shear rotation (positive CCW) averaged over the cross section, G
the shear modulus and As the effective shear area.3 The product R S = G As is the shear rigidity. To correlate
def
with the notation of 13.2.4, note that V = E I v , = 2 v = V /(G As ), so = E I /(G As 2 ) and
= 12 =
12E I
G A s 2
(13.17)
This dimensionless ratio characterizes the shear slenderness of the beam element.4 It is not an intrinsic
beam property because it involves the element length. As
0 the Timoshenko model reduces to the BE
model. Replacing R Bs = R Ba = E I and R S = G As = 12E I /(
2 ) into (13.13) yields the Timoshenko
beam stiffness
12
6
12
6
EI
6 2 (4 +
) 6 2 (2
)
(13.18)
Ke = 3
6
12
6
(1 +
) 12
6 2 (2
) 6 2 (4 +
)
If
= 0 this reduces to (12.20). The Mathematica module TimoshenkoBeamStiffness[Le,EI,
], listed
in Figure 13.5, implements (13.18).
TimoshenkoBeamStiffness[Le_,EI_,_]:=Module[{Ke},
Ke=EI/(Le*(1+))*{{ 12/Le^2, 6/Le,-12/Le^2, 6/Le },
{ 6/Le
, 4+, -6/Le , 2- },
{-12/Le^2, -6/Le, 12/Le^2,-6/Le},
{ 6/Le , 2-, -6/Le , 4+ }};
Return[Ke]];
Figure 13.5. Module to produce stiffness matrix for Timoshenko beam element.
The calculation of the consistent node forces for uniform transverse load is covered in Exercise 13.2. A hinged
Timoshenko beam is constructed in Exercise 13.3.
3
A concept defined in Mechanics of Materials; see e.g. Chapter 10 of Popov [588] or Chapter 12 of Timoshenko and
Goodier [737]. As is calculated by equating the internal shear energy 12 V = 12 V 2 /(G As ) to that produced by the shear
stress distribution over the cross section. For a thin rectangular cross section and zero Poissons ratio, As = 5A/6.
Note that in (13.8)(13.9), 1200R Bs / 3 + 14400 R S 2 / = 1200 E I (1 + )/ 3 , giving a simple interpretation for .
137
y,v
;;
;;
x 1
P
3 (a) Finite element
discretization
L/2
L/2
L
Mz = PL
2
(b) Transverse
shear force Vy
Vy =P
(c) Bending
moment Mz
Figure 13.6. Example: cantilever beam discretized with two Timoshenko beam elements.
T BT = G B H S = I
L1e
0
1+
1
Le
1
2
1
Le
1
2
1
2
1
Le
1
2
(13.19)
def
Example 13.2. Consider the prismatic cantilever beam of length L pictured in Figure 13.6(a). It is subject to two point
loads as shown. Shear flexibility is to be accounted for using the Timoshenko model. The bending and shear rigidities E Izz
and G As are constant along the span. The objective is to find deflections, curvatures and shear distortions and associated
bending moments and shear forces.
It is sufficient to discretize the beam with two Timoshenko beam elements oflength L/2 as shown in the figure. The stiffness
matrices for both elements are given by (13.18), in which L e = L/2 and
= 12 E Izz /(G As (L/2)2 ) = 48 E Izz /(G As L 2 ).
The master stiffness equations are
48
12L
48
12L
0
2 (4+
) 12L
2 (2
)
L
0
12L
L
2E Izz 48
12L
96
0
48
2
0
2L 2 (4+
) 12L
L 3 (1+
) 12L L (2
)
0
0
48
12L
48
0
0
12L
L 2 (2
) 12L
Setting the displacement B.C. v1 = 1 = 0 and solving yields
u=
P L2
4E Izz
L
4
138
0
v1
0
0
1 0
12L v2 P
=
.
L 2 (2
)
2 0
P
v3
12L
0
L 2 (4+
)
3
L (22 +
)
24
3
2
T
(13.21)
(13.22)
(2) =
P L2
P
=
48E Izz
G As
(13.23)
The element-level Bernoulli-Euler node displacements are obtained from (13.22) on subtracting the shear distortions (13.23)
from the rotations:
u(1)
B =
P L2
4E Izz
L
4
T
u(2)
B =
P L2
4E Izz
L
4
1+
12
L (22 +
)
24
3+
2
12
T
(13.24)
(1)
(2)
1
Note that B2
= 1
= B2
= 1 + 12
, the kink being due to the shear distortion jump at node 2. The curvatures are now
recovered as
PL
PL
(2)
(1) = B(1) u(1)
(2) = B(2) u(2)
(13.25)
B = 2E I ,
B = 4E I (1 ),
zz
zz
The transverse shear force resultant and bending moment are easily recovered as Vye = G As (e) and Mze = E Izz e ,
respectively. The results are drawn in Figure 13.6(b,c).
Beam resting on a continuum medium such as soil. This is the case in foundations.
(ii)
Beam supported by discrete but closely spaced flexible supports, as in the bed of springs pictured in
Figure 13.7. This occurs in railbeds (structurally rails are beams supported by crossties) and some types
of grillworks.
The Winkler foundation is a simplified elastic-support model. It is an approximation for (i) because it ignores
multidimensional elasticity effects as well as friction. It is a simplification of (ii) because the discrete nature
of supports is smeared out. It is nonetheless popular, particularly in foundation and railway engineering, when
the presence of physical uncertainties would not justify a more complicated model. Such uncertainties are
inherent in soil mechanics.
The Winkler model may be viewed as a continuification of case (ii). Take a beam slice going from x to
x + d x. The spring-reaction force acting on the beam is taken to be d f F = k F v(x) d x. Here v(x) is the
transverse deflection and k F the Winkler foundation stiffness, which has dimension of force per length-squared.
Force d f F has the opposite sign of v(x), pushing up if the beam moves down and pulling down if it moves up.
Beam-foundation separation effects that may occur in case (i) are ignored here because that would lead to a
nonlinear contact problem.
The internal energy stored in the d x slice of Winkler springs is / v d f F = / k F v 2 d x. Consequently the
effect of elastic supports is to modify the internal energy U Be of the beam element so that it becomes
y, v
q(x)
beam
;;;;;;;;;
bed of
springs
139
U =
e
U Be
U Fe ,
with
U Fe
k F v 2 d x.
1
2
(13.26)
Therefore the total stiffness of the element is computed by adding the foundation stiffness to the beam stiffness.
Care must be taken, however, that the same set of nodal freedoms is used. This is best handled by doing the
generalized stiffness KcF first, and then using the appropriate generalized-to-physical transformation. If the
transverse deflection v is interpolated with (13.2) as v = L c, the generalized Winkler foundation stiffness for
constant k F is
KcF = k F
L T L d x = k F Q0 ,
(13.27)
where Q0 is the first diagonal matrix in (13.4). This holds regardless of beam model. Now if the member resting
on the foundation is modeled as a BE beam, one picks H B of (13.10) as generalized-to-physical transformation
matrix to get
156
22
54
13
k F 22
13 3 2
4 2
,
(13.28)
KeF = k F HTB Q0 H B =
54
13
156 22
420
2
2
13 3 22 4
If instead the supported member is modeled as a Timoshenko beam, one picks H S of (13.12) to get
KeF = k F HTS Q0 H S
4(78+147
+70
2 )
kF
(44+77
+35
2 )
=
4(27+63
+35
2 )
840(1+
)2
(26+63
+35
2 )
(44+77
+35
2 )
2 (8+14
+7
2 )
(26+63
+35
2 )
2 (6+14
+7
2 )
Figure 13.8. Stiffness matrix module for a Winkler foundation supporting a Timoshenko beam element.
1310
For both BE and Timoshenko beam models, the Legendre polynomials L 1 ( ) through L 4 ( ) are exact solutions
of the homogeneous, prismatic, plane beam equilibrium equation E I d 4 v/d x 4 = 0. When used as shape
functions in the generalized interpolation (13.2), the resulting stiffness matrix is exact if the FEM model is
loaded at the nodes, as further discussed in 13.6. The technique can be extended to more complicated onedimensional problems. It can be used to derive exact stiffness matrices if homogeneous solutions are available
in closed form, and are sufficiently simple to be amenable to analytical integration. The following subsection
illustrates the method for a BE beam resting on a Winkler elastic foundation.
13.3.1. Exact Winkler/BE-Beam Stiffness
Consider again a prismatic, plane BE beam element resting on a Winkler foundation of stiffness k F , as pictured
in Figure 13.7. The governing equilibrium equation for constant E I > 0 and k F > 0 is E I d 4 v/d x 4 + k F v =
q(x). The general homogeneous solution over an element of length going from x = 0 to x = is
kF
. (13.30)
4E I
Here the ci are four integration constants to be determined from four end conditions: the nodal degrees of
freedom v1 , v1 , v2 and v2 . These constants are treated as generalized coordinates and as before collected into
vector c = [ c1 c2 c3 c4 ]T . The solution (13.30) is used as generalized interpolation with e sin through
e cos as the four shape functions. Differentiating twice gives v = dv/d x and v = d 2 v/d x 2 . The TPE
functional of the element in terms of the generalized coordinates can be expressed as
ec
1
2
E I (v )2 + 12 k F v 2 q0 v d x = 12 cT (KcB + KcF ) c cT fc .
(13.31)
This defines KcB and KcF as generalized element stiffnesses due to beam bending and foundation springs,
respectively, whereas fc is the generalized force associated with a transverse load q(x). The nodal freedoms
are linked to generalized coordinates by
0
1
0
1
v1
c1
/
1
c2
v =
c .
e cos
e sin
e cos
e sin
1
3
B1 B2 B5 B4
F1 F2 F5 F4
f1
E
I
k
q
B
B
B
F
F
F
f
F
0
3
4
6
3
4
6
, KeF =
, fe = 2 2 ,
KeB = 3 2
3
2
B1 B2
F1 F2
f1
4 g
16 g
g
symm
B3
symm
F3
f2
(13.33)
1311
Figure 13.9. Script to produce the exact Winkler-BE beam stiffness matrix and consistent force vector.
BEBeamWinklerExactStiffness[Le_,EI_,kF_,q0_]:=Module[{B1,B2,B3,B4,B5,B6,
F1,F2,F3,F4,F5,F6,f1,f2,facB,facF,facf,KeB,KeF,fe,},
=PowerExpand[Le*((kF/(4*EI))^(1/4))];
B1 =2*^2*(-4*Sin[2*]+Sin[4*]+4*Sin[]*(Cos[]*Cosh[2*]+
8**Sin[]*Sinh[]^2)+2*(Cos[2*]-2)*Sinh[2*]+Sinh[4*]);
B2 =2*Le**(4*Cos[2*]-Cos[4*]-4*Cosh[2*]+ Cosh[4*]8**Sin[2*]*Sinh[]^2+8**Sin[]^2*Sinh[2*]);
B3 =-(Le^2*(8**Cos[2*]-12*Sin[2*]+Cosh[2*]*(6*Sin[2*]-8*)+3*Sin[4*]+
2*(6-3*Cos[2*]+4**Sin[2*])*Sinh[2*]-3*Sinh[4*]));
B4 =-4*Le**(*Cosh[3*]*Sin[]-*Cosh[]*(-2*Sin[]+Sin[3*])+(*(Cos[]+
Cos[3*])+Cosh[2*]*(-2**Cos[]+4*Sin[])+2*(-5*Sin[]+Sin[3*]))*Sinh[]);
B5 =-4*^2*(2*Cos[]*(-2+Cos[2*]+Cosh[2*])*Sinh[]+Sin[3*]*
(Cosh[]-2**Sinh[])+Sin[]*(-4*Cosh[]+Cosh[3*]+2**Sinh[3*]));
B6 =2*Le^2*(Cosh[3*]*(-2**Cos[]+3*Sin[])+Cosh[]*(2**Cos[3*]+3*(Sin[3*]4*Sin[]))+(9*Cos[]-3*Cos[3*]-6*Cos[]*Cosh[2*]+16**Sin[])*Sinh[]);
F1 =2*^2*(-32**Sin[]^2*Sinh[]^2+6*(-2+Cos[2*])*
(Sin[2*]+Sinh[2*])+6*Cosh[2*]*(Sin[2*]+Sinh[2*]));
F2 =2*Le**(4*Cos[2*]-Cos[4*]-4*Cosh[2*]+Cosh[4*]+
8**Sin[2*]*Sinh[]^2-8**Sin[]^2*Sinh[2*]);
F3 =Le^2*(8**Cos[2*]+4*Sin[2*]-2*Cosh[2*]*(4*+Sin[2*])-Sin[4*]+
2*(Cos[2*]+4**Sin[2*]-2)*Sinh[2*]+Sinh[4*]);
F4 =4*Le**(*Cosh[3*]*Sin[]-*Cosh[]*(-2*Sin[]+Sin[3*])+(*Cos[]+
*Cos[3*]+10*Sin[]-2*Cosh[2*]*(*Cos[]+2*Sin[])-2*Sin[3*])*Sinh[]);
F5 =-4*^2*(6*Cos[]*(-2+Cos[2*]+Cosh[2*])*Sinh[]+Sin[3*]*
(3*Cosh[]+2**Sinh[])+Sin[]*(-12*Cosh[]+3*Cosh[3*]-2**Sinh[3*]));
F6 =-2* Le^2*(-(Cosh[3*]*(2**Cos[]+Sin[]))+Cosh[]*(2**Cos[3*]+
4*Sin[]-Sin[3*])+(Cos[3*]+Cos[]*(2*Cosh[2*]-3)+16**Sin[])*Sinh[]);
f1=2**(Cosh[]-Cos[])*(Sin[]-Sinh[]); f2=-(Le*(Sin[]-Sinh[])^2);
g=2-Cos[2*]-Cosh[2*];
facf=(q0*Le)/(^2*g);
facB=(EI*/Le^3)/(4*g^2); facF=(kF*Le)/(16*^3*g^2);
KeB=facB*{{B1,B2,B5,-B4},{ B2,B3,B4,B6},{B5,B4,B1,-B2},{-B4,B6,-B2,B3}};
KeF=facF*{{F1,F2,F5,-F4},{ F2,F3,F4,F6},{F5,F4,F1,-F2},{-F4,F6,-F2,F3}};
fe=facf*{f1,f2,f1,-f2}; Return[{KeB,KeF,fe}]];
Figure 13.10. Module to get the exact BE-Winkler stiffness and consistent load vector.
1312
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
;;;;;;;;;;;
y, v
EI constant
k F constant
2L
in which
g = 2 cos 2 cosh 2,
B1 = 2 2 (4 sin 2 + sin 4 +4 sin (cos cosh 2 +8 sin sinh2 )+2(cos 2 2) sinh 2 + sinh 4 ),
B2 = 2 (4 cos 2 cos 4 4 cosh 2 + cosh 48 sin 2 sinh2 +8 sin2 sinh 2 ),
B3 = ( 2 (8 cos 212 sin 2 + cosh 2 (6 sin 2 8 )+3 sin 4 +
2(63 cos 2 +4 sin 2) sinh 2 3 sinh 4 )),
B4 = 4 ( cosh 3 sin cosh (2 sin + sin 3 )+( (cos + cos 3 )
+ cosh 2 (2 cos +4 sin )+2(5 sin + sin 3 )) sinh ),
B5 = 4 2 (2 cos (2+ cos 2 + cosh 2 ) sinh + sin 3 (cosh 2 sinh )
+ sin (4 cosh + cosh 3 +2 sinh 3 ))
B6 = 2 2 (cosh 3 (2 cos +3 sin )+ cosh (2 cos 3 +3(4 sin + sin 3 ))
+(9 cos 3 cos 3 6 cos cosh 2 +16 sin ) sinh )
F1 = 2 2 (32 sin2 sinh2 +6(2+ cos 2 )(sin 2 + sinh 2 )+6 cosh 2 (sin 2 + sinh 2)),
F2 = 2 (4 cos 2 cos 4 4 cosh 2 + cosh 4+8 sin 2 sinh2 8 sin2 sinh 2 ),
F3 = 2 (8 cos 2+4 sin 2 2 cosh 2 (4 + sin 2 ) sin 4 +2(cos 2 +4 sin 2 2) sinh 2 + sinh 4 ),
F4 = 4 ( cosh 3 sin cosh (sin 3 2 sin )+( cos + cos 3 +10 sin
2 cosh 2 ( cos +2 sin )2 sin 3 ) sinh ),
F5 = 4 2 (6 cos (2+ cos 2 + cosh 2 ) sinh + sin 3 (3 cosh +2 sinh ),
+ sin (12 cosh +3 cosh 3 2 sinh 3 ))
F6 = 2 2 ((cosh 3(2 cos + sin ))+ cosh (2 cos 3 +4 sin sin 3 )
+(cos 3 + cos (2 cosh 23)+16 sin ) sinh ),
f 1 = 2(cosh cos )(sin sinh ),
f 2 = (sin sinh )2 .
(13.34)
These expressions are used to code module BEBeamWinklerExactStiffness[Le,EI,kF,q0], which is
listed in Figure 13.10.
Example 13.3. A fixed-fixed BE beam rests on a Winkler foundation as shown in Figure 13.11. The beam has span 2L, and
constant E I . The Winkler foundation coefficient k F is constant. As usual in foundation engineering we set
k F = E I 4 /L 4 ,
1313
(13.35)
0.1 0.999997
1
0.970005
2
0.672185
0.067652
5
10 0.008485
100 8.48106
0.999997
0.969977
0.668790
0.049152
0.003220
3.23107
0.999997
0.970003
0.671893
0.065315
0.006648
8.03107
0.999997 0.999997
0.970005 0.968661
0.672167 0.657708
0.067483 0.041321
0.008191 0.002394
1.63106 2.40107
0.999997
0.969977
0.668790
0.049152
0.003220
3.23107
0.999997
0.968742
0.658316
0.041254
0.002393
2.62107
0.999997
0.968666
0.657746
0.041317
0.002395
2.42107
where is a dimensionless rigidity to be kept as parameter.5 The beam is subjected to two load cases: (I) a central point
load P at x = L, and (II) a uniform line load q0 over the right half x L. See Figure 13.11.
All quantities are kept symbolic. The focus of interest is the deflection vC at midspan C (x = L). For convenience this
I and v I I () = C ()v I I for load cases (I) and (II)), respectively.
is rendered dimensionless by taking vCI () = C I ()vC0
II
C
C0
I
I
I
3
4
Here vC0 = P L /(24E I ) and vC0 = q0 L /(48E I ) are the midspan deflections of cases (I) and (II) for = 0, that is,
k F = 0 (no foundation). The exact deflection factors for this model are
13 4
6 2 cos 2 + cosh 2 2
137 8
=1
+
...
C I () = 3
420
138600
sin 2 + sinh 2
(13.36)
163 4
48 (cos / 2 cosh / 2)(sin / 2 sinh / 2)
20641 8
=1
+
+ ...
C I I () = 4
5040
19958400
sin 2 + sinh 2
Both load cases were symbolically solved with two exact elements of length L produced by the module of Figure 13.10.
As can be expected, the answers reproduce the exact solutions (13.36). Using any number of those elements would match
(13.36) as long as the midspan section C is at a node. Then both cases were solved with 2, 4, and 8 elements with the stiffness
(13.28) produced by cubic polynomials. The results are shown in a log-log plot in Figure 13.12. Results for selected values
of are presented in Table 13.1.
As can be seen, for a soft foundation characterized by < 1, the cubic-polynomial elements gave satisfactory results and
converged quickly to the exact answers, especially in load case (II). As grows over one, the deflections become rapidly
smaller, and the polynomial FEM results exhibit higher relative errors. On the other hand, the absolute errors remain small.
The conclusion is that exact elements are only worthwhile in highly rigid foundations (say > 5) and then only if results
with small relative error are of interest.
0
0
1
log10 CI
Load Case I:
Central Point Load
log10 CII
1
2 exact elements
2
3
3
4
2 poly elements
4 poly elements
8 poly elements
5
6
1
0.5
0.5
log 10
1.5
2 exact elements
2 poly elements
4 poly elements
8 poly elements
5
6
2
log 10
1
0.5
0.5
1.5
Figure 13.12. Log-log plots of C I () and C I I () for Example of Figure 13.11 over range [0.1, 100].
Note that is a true physical parameter, whereas is discretization dependant because it involves the element length.
1314
KeB12
KeF4 =
(13.37)
(13.38)
k F 4 e
3k F 4 e
q0
q0
K B8 , KeF8 =
K , fe =
[ 6 6 ]T , fe4 =
[ 14 3 14 3 ]T .
2E I
8E I B12 0
12
5040
Thus as 0 we recover the stiffness matrices and force vector derived with polynomial shape functions, as can be
expected. Note that K B0 and K F0 decouple, which allows them to be coded as separate modules. On the other hand the
exact stiffnesses are coupled if > 0. The foregoing expansions indicate that exactness makes little difference if < 1.
1315
13.4.
Equilibrium Theorems
One way to get high performance mechanical elements is to use equilibrium conditions whenever possible.
These lead to flexibility methods. Taking advantage of equilibrium is fairly easy in one space dimension. It is
more difficult in two and three, because it requires advanced variational methods that are beyond the scope of
this book. This section surveys theorems that provide the theoretical basis for flexibility methods. These are
applied to 1D element construction in 13.5.
13.4.1. Self-Equilibrated Force System
First we establish a useful theorem that links displacement and force transformations. Consider a FEM discretized body such as that pictured in Figure 13.13(a). The generic potato intends to symbolize any discretized
material body: an element, an element assembly or a complete structure. Partition its degrees of freedom into
two types: r and s. The s freedoms (s stands for suppressed or supported) are associated with a minimal set of
supports that control rigid body motions or RBMs. The r freedoms (r is for released) collect the rest. In the
figure those freedoms are shown collected at invididual points Ps and Pr for visualization convenience. Node
forces, displacements and virtual displacements associated with those freedoms are partitioned accordingly.
Thus
f
us
us
u=
,
u =
.
(13.39)
f= s ,
fr
ur
ur
The dimension n s of fs , us and us is 1, 3 and 6 in one-, two- and three-dimensional space, respectively.
Figure 13.13(b) shows the force system {fs , fr } undergoing virtual displacements, which are exaggerated for
visibility.6 Consider now the rigid + deformational displacement decomposition u = Gus + d, in which
matrix G (of appropriate order) represents a rigid motion and d are deformational displacements. Evaluating
this at the r freedoms gives
ur = Gr us + dr ,
ur = Gr us + dr ,
(13.40)
The first decomposition in (13.40), being linear in the actual displacements, is only valid only in geometrically
linear analysis. That for virtual displacements is valid for a much broader class of problems.
If the supported freedom motion vanishes: us = 0, then ur = dr . Thus dr represents a relative displacement
of the unsupported freedoms with respect to the rigid motion Gus , and likewise for the virtual displacements.
Because a relative motion is necessarily associated with deformations, the alternative name deformational
displacements is justified.
The external virtual work is W = Ws + Wr = usT fs + urT fr . If the force system in Figure 13.13(a) is in
self equilibrium and the virtual displacements are imparted by rigid motions dr = 0 and ur = Gr us , the
virtual work must vanish: W = usT fs + usT GrT fr = usT (fs + GrT fr ) = 0. Because the us are arbitrary,
it follows that
fs + GrT fr = 0,
fs = GrT fr .
(13.41)
These are the overall static equilibrium equations of a discrete mechanical system in self equilibrium. Sometimes it is useful to express the foregoing expressions in the complete-vector form
u=
us
ur
I
0
us
us +
, u =
ur
Gr
dr
I
0
f
us +
, f= s
fr
Gr
dr
Under virtual displacements the forces are frozen for application of the Principle of Virtual Work.
If the model is geometrically nonlinear, the first form in (13.42) does not hold.
1316
GrT
I
fr . (13.42)
(a)
us
Pr fr
fs
fs
Ps
Ps
ur
Pr
fr
Figure 13.13. Body to illustrate equilibrium theorems. Nodal freedoms classified into supported
(s) and released (r ), each lumped to a point to simplify diagram. (a) Self equilibrated node force
system. (b) Force system of (a) undergoing virtual displacements; grossly exaggerated for visibility.
Remark 13.3. The freedoms in us are virtual supports, chosen for convenience in flexibility derivations. They should not
be confused with actual or physical supports. For instance Civil Engineering structures tend to have redundant physical
supports, whereas aircraft or orbiting satellites have none.
13.4.2.
Consider now a generalization of the previous scenario. An externally applied load system of surface or body forces, not
necessarily in self equilibrium, acts on the body. For example, the surface tractions pictured in Figure 13.14(a). To bring
this under the framework of equilibrium analysis, a series of steps are required.
First, the force system is replaced by a single resultant q, as pictured in Figure 13.14(b).8 The point of application is Pq .
Equilibrium is restored by introducing node forces qr and qs at the appropriate freedoms. The overall equilibrium condition
is obtained by putting the system {q, qr , qs } through rigid-motion virtual displacements, as pictured in Figure 13.14(c).
Point Pq moves through uq , and G evaluated at Pq is Gq . The virtual work is W = usT (qs + GrT qr + GqT q) = 0
whence
qs + GrT qr + GqT q = 0.
(13.43)
If (13.43) is sufficient to determine qs and qr , the load system of Figure 13.14(a) can be effectively replaced by the nodal
forces qs and qr , as depicted in Figure 13.14(d). These are called the equivalent node forces. But in general (13.43)
is insufficient to fully determine qs and qr . The remaining equations to construct the equivalent forces must come from a
theorem that accounts for the internal energy, as discussed in 13.4.3.
Adding (13.41) and (13.43) gives the general overall equilibrium condition
fs + qs + GrT (fr + qr ) + GqT q = 0,
(13.44)
out the virtual work by appropriately integrating distributed effects. The resultant is primarily useful as an instructional
tool, because matrix Gq is not position dependent.
Remark 13.5. Conditions (13.41) and (13.43), which were derived through the PVW, hold for general mechanical systems
under mild reversibility requirements [752, 231], including geometric nonlinearities. From now on we restrict attention to
systems linear in the actual displacements.
Although the figure shows a resultant point force, in general it may include a point moment that is not shown for simplicity.
See also Remark 13.3.
1317
(b)
(a)
Ps
qr
qs
Pr
Ps
Pr
Pq
t(x)
(c)
us
ur
qs
Ps
(d)
qs
qr
Ps
Pr
uq
q r
Pr
Pq
q
Figure 13.14. Processing non-self-equilibrated applied loads with flexibility methods. (a) Body
under applied distributed load. (b) Substitution by resultant and self equilibration. (c) Deriving overall
equilibrium conditions through the PVW. (d) Replacing the applied loads by equivalent nodal forces.
Wrong. Recall that Ke for a disconnected free-free element is singular. Its ordinary inverse does not exist.
Expectations go up in smoke. The same difficulty holds for a superelement or complete structure.
To get a conventional flexibility matrix9 it is necessary to remove all rigid body motions in advance. This can
be done through the virtual supports introduced in 13.4.1. The support motions us are fixed, say us = 0.
Flexibility equations are sought between what is left of the kinematics. Dropping the element superscript for
brevity, for a linear problem one gets
Frr fr = dr .
(13.45)
Note that ur does not appear: only the deformational or relative displacements. To recover ur it is necessary
to release the supports, but if that is naively done Frr ceases to exist. This difficulty is overcome in 13.4.4.
There is another key difference with stiffness methods. The DSM assembly procedure covered in Chapter 3
(and extended in Chapter 27 to general structures) does not translate into a similar technique for flexibility
methods. Although it is possible to assemble flexibilities of MoM elements, the technique is neither simple
nor elegant. And it becomes dauntingly complex when tried on continuum-based elements [233].
So one of the main uses of flexibility equations today is as a stepping stone on the way to derive element
stiffness equations, starting from (13.45). The procedural steps are explained in 13.4.4. But how should
(13.45) be derived? There are several methods but only one, based on the Total Complementary Potential
Energy (TCPE) principle of variational mechanics is described here.
To apply TCPE, the complementary energy of the body must be be expressed as a function of the nodal
forces fr . For fixed supports (us = 0) and a linear system, the functional can be expressed as
(fr ) = U (fr ) frT dr = 12 frT Frr fr + frT br frT dr + 0 .
(13.46)
Here U is the internal complementary energy, also called the stress energy by many authors, e.g., [321], br is a
term resulting from loading actions such as as thermal effects, body or surface forces, and 0 is independent of
fr . Calculation of U in 1D elements involves expressing the internal forces (axial force, shear forces, bending
9
In the FEM literature it is often called simply the flexibility. The reason is that for a long time it was believed that getting
a flexibility matrix required a supported structure. With the recent advent of the free-free flexibility (see Notes and
Bibliography) it becomes necessary to introduce a deformational or conventional qualifier.
1318
fs
fr
Kss
Kr s
Ksr
Krr
us
ur
qs
,
qr
(13.49)
To justify the presence of Krr and qr here, set us = 0, whence ur = dr . Consequently the second equation
reduces to fr = Krr dr qr , which matches (13.48). Inserting fs and fr into (13.44) yields
(13.50)
Kss + GrT Kr s + Ksr Gr + GrT Krr Gr us + Ksr + GrT Krr dr + qs + GrT qr + GqT q = 0.
(13.51)
Because us , dr and q can be arbitrarily varied, each bracket in (13.51) must vanish identically, giving
qs = GrT qr GqT q,
T
Kr s = Ksr
= Krr Gr ,
Kss = GrT Kr s Ksr Gr GrT Krr Gr = GrT Krr Gr + GrT Krr Gr GrT Krr Gr = GrT Krr Gr .
Inserting these into (13.49) yields
fs
fr
GrT Krr
Krr
GrT Krr Gr
Krr Gr
fs
GrT
u
GrT
=
Krr [ Gr I ] s
fr
I
ur
I
with T = [ Gr I ] and Tq = [ Gq 0 ] .
us
ur
GrT qr GqT q
.
qr
(13.52)
(13.53)
Gq
qr +
q = TT Krr T u TT qr + TqT q,
0
(13.54)
1
T. Alternatively (13.54) may be derived by plugging
The end result is that the free-free stiffness is TT Frr
dr = ur Gr us into (13.48) and then into (13.44).
Remark 13.6. Let S be a n s n s nonsingular matrix. The matrix R built by the prescription
R=
S
GS
(13.55)
is called a rigid body motion matrix or simply RBM matrix. The columns of R represent nodal values of rigid motions,
hence the name. The scaling provided by S may be adjusted to make R simpler. The key property is T R = 0 and thus
K R = TT Krr T R = 0. Other properties are studied in [?].
10
For 2D and 3D elements the process is more delicate and demands techniques, such as hybrid variational principles, that
lie beyond the scope of this material.
1319
13.4.5. Applications
Stiffness Equilibrium Tests. If one injects ur = Gus and qr = 0 into (13.54) the result is fr = 0 and fs = 0.
That is, all node forces must vanish for arbitrary us . This test is useful at any level (element, superelement, full
structure) to verify that a directly generated K (that is, a K constructed independently of overall equilibrium)
is clean as regards rigid body modes.
Element Stiffness from Flexibility. Here Frr is constructed at the supported element level, inverted to get Krr
and rigid motions injected through (13.54). Applications to element construction are illustrated in 13.5.
Experimental Stiffness from Flexibility. In this case Frr is obtained through experimental measurements on
a supported structure or substructure.11 To insert this as a user defined superelement in a DSM code, it is
necessary to produce a stiffness matrix. This is done again by inversion and RBM injection.
13.5.
The equilibrium theorems of the foregoing section are applied to the flexibility derivation of several onedimensional elements.
13.5.1. Timoshenko Plane Beam-Column
A beam-column member combines axial and bending effects. A 2-node, straight beam-column has three
DOFs at each node: the axial displacement, the transverse displacement and a rotation. If the cross section is
doubly symmetric, axial and bending effects are decoupled. A prismatic, plane element of this kind is shown
in Figure 13.15(a). End nodes are 12. The bending component is modeled as a Timoshenko beam. The
element is subjected to the six node forces shown, and to a uniformly distributed load q0 . To suppress rigid
motions node 1 is fixed as shown in Figure 13.15(b), making the beam a cantilever. Following the notation of
13.4.113.4.2,
u x1
u y1
1
f x1
f y1
m1
V (x) = f y2 q0 ( x),
f x2
f y2
m2
0
q
0
1 0 0
, dr = ur =
, fs =
, fr =
, q=
, G(x) = 0 1 x ,
us =
0 0 0
(13.56)
Further, Gr = G( ) and Gq = G( /2). The internal forces are the axial force F(x), the transverse shear
V (x) and the bending moment M(x). These are directly obtained from statics by doing a free-body diagram
at distance x from the left end as illustrated in Figure 13.15(c). With the positive convention as shown we get
N (x) = f x2 ,
u x2
u y2
2
M(x) = m 2 + f y2 ( x) + 12 q0 ( x)2 .
(13.57)
Useful check: d M/d x = V . Assuming a doubly symmetric section so that N and M are decoupled, the
element TCPE functional is
N2
M2
V2
d x frT dr = 12 frT Frr fr + frT br frT dr + 0 ,
+
+
=
EA
EI
G As
0
0
0
0
E
A
3
2
3 (4 +
) 2 , b = q (4 +
) .
=
in which Frr =
r
0
12E I
0
24E I
2E I
fr fr
2
2
0
6E I
EI
2E I
11
1
2
(13.58)
The classical static tests on an airplane wing are performed by applying transverse forces and torques to the wing tip
with the airplane safely on the ground. These experimental influence coefficients can be used for model validation.
1320
(a)
fy1
(b)
E,I,G,As constant
q0
m1
fx1 1
fy2
q0
;;
y,v
fy2
m2 fx2
m2 f
x2
q0
+V(x) +M(x)
(c)
+F(x)
fy2
m2 f
x2
x
Figure 13.15. Flexibility derivation of Timoshenko plane beam-column stiffness: (a) element and node
forces, (b) removal of RBMs by fixing left node, (c) FBD that gives internal forces at varying x.
EA
1
Krr = Frr
0
=
qr = q0 Krr br =
q0 /2 .
q0 2 /12
12E I
2 6E I
3 (1 +
)
(1 +
) ,
E I (4 +
)
2 6E I
(1 +
) (1 +
)
(13.59)
1
GrT
TT =
0
0
0
=
1
0
0
0
0
1 0
1
,
0
0
1
0
0
1
1
Gq
Tq =
0
0
0
=
0
0
0
0
1
/2
0
0
0
0
0
1
,
0
0
0
q=
Injecting the rigid body modes from (13.54), Ke = TT Krr T and fe = TT qr , yields
1
0
EA
e
0
K =
1
0 1
0 0
0 0
0 1
0
0 0
0
0 0
e
f = q0 [ 0 1/2 /12 0
0
0
0
0
0
0
0 0
0
0 0
0
0
E
I
0 0
+
3
0 0
(1 +
) 0
0
0 0
0
0 0
T
1/2 /12 ] .
0
0
12
6
6 2 (4 +
)
0
0
12
6
6 2 (2
)
0
0
0
0
0
0
0
q0
0
.
(13.60)
0
0
12
6
6 2 (2
)
,
0
0
12
6
6 2 (4 +
)
(13.61)
The bending component is the same stiffness found previously in 13.2.6; compare with (13.18). The node
force vector is the same as the consistent one constructed in an Exercise. A useful verification technique is to
support the beam element at end 2 and recompute Ke and fe . This should reproduce (13.61).
All of the foregoing computations were carried out by the Mathematica script shown in Figure 13.16.
13.5.2. Plane Circular Arch in Local System
In this and next subsection, the flexibility method is used to construct the stiffness matrix of a curved, prismatic,
plane beam-column element with circular profile, pictured in Figure 13.17(a). The local system {x, y} is defined
1321
ClearAll[Le,EI,GAs,,q0,fx2,fy2,m2]; GAs=12*EI/(*Le^2);
F=fx2; V=-fy2-q0*(Le-x); M=m2+fy2*(Le-x)+(1/2)*q0*(Le-x)^2;
Print["check dM/dx=V: ",Simplify[D[M,x]-V]];
Ucd=F^2/(2*EA)+M^2/(2*EI)+V^2/(2*GAs);
Uc=Simplify[Integrate[Ucd,{x,0,Le}]]; Print["Uc=",Uc];
u2=D[Uc,fx2]; v2=D[Uc,fy2]; 2=D[Uc,m2];
Frr={{ D[u2,fx2], D[u2,fy2], D[u2,m2]},
{ D[v2,fx2], D[v2,fy2], D[v2,m2]},
{ D[2,fx2], D[2,fy2], D[2,m2]}};
br={D[Uc,fx2],D[Uc,fy2],D[Uc,m2]}/.{fx2->0,fy2->0,m2->0}; Print["br=",br];
Frr=Simplify[Frr]; Print["Frr=",Frr//MatrixForm];
Krr=Simplify[Inverse[Frr]]; Print["Krr=",Krr//MatrixForm];
qr=Simplify[-Krr.br]; Print["qr=",qr];
TT={{-1,0,0},{0,-1,0},{0,-Le,-1},{1,0,0},{0,1,0},{0,0,1}};
T=Transpose[TT]; Simplify[Ke=TT.Krr.T]; Print["Ke=",Ke//MatrixForm];
GrT={{1,0,0},{0,1,0},{0,Le,1}};
Gr=Transpose[GrT];
GqT={{1,0,0},{0,1,0},{0,Le/2,1}}; Gq=Transpose[GqT];
Print["Gr=",Gr//MatrixForm," Gq=",Gq//MatrixForm];
qv={0,q0*Le,0}; Print["qs=",Simplify[-GrT.qr-GqT.qv]];
Figure 13.16. Script to derive the stiffness matrix and consistent load vector of the prismatic,
plane Timoshenko beam element of Figure 13.15 by flexibility methods.
y, v
E,I,G,As constant
(a)
m1
fy2
fy1
fy2
fx2
fx1
(c)
(b)
x, u
|2|
|R|
fx2
1
2
m2
+M()
+V()
+F()
fy2
fx2
m2
m2
Figure 13.17. Flexibility derivation of plane circular arch element: (a) element and node forces,
(b) removal of RBMs by fixing left node, (c) free body diagram of varying cross section.
+
y
C
+H
x
1
+ds
2S
+R
+ds
H
C
+
2S
+ds
x
2 1
+2
2 2
+R
+2
O
R
1 2
+ds
2S
2
+H
C
+
2S
1
y
as shown there: x is a chord axis that passes through end nodes 12, and goes from 1 to 2. Axis y is placed
at +90 from x. No load acts between nodes.
In a curved plane element of this nature, axial extension and bending are intrinsically coupled. Thus consideration of three freedoms per node is mandatory. These are the translations along x and y, and the rotation
about z. This element can be applied to the analysis of plane arches and ring stiffeners (as in airplane fuselages
1322
The local node numbers define a positive arclength traversal along the element midline as going from
1 to 2. The curved length (not shown in figure) and the (chord) spanlength 2S are always positive.
(2)
The arch rise H , the angular span 2 and the arch radius R are signed quantities as illustrated in
Figure 13.18. The rise is the distance from chord midpoint to arch crown C: it has the sign of its
projection on y. The angular span 2 is that subtended by the arch on moving from 1 to 2: it is positive
if CCW. Finally, the radius R has the sign of so = 2R is always positive.
H = R(cos 1)
(13.62)
The location of an arch section is defined by the tilt angle measured from the circle center-to-crown
symmetry line OC, positive CCW. See Figure 13.18. The differential arclength ds = R d always points in
the positive traversal sense 1 2.
The rigid motions are removed by fixing the left end as shown in in Figure 13.17(b). The internal forces F(),
V () and M() at an arbitrary cross section are obtained from the FBD of Figure 13.17(c) to be
F = f x2 cos + f y2 sin , V = f x2 sin f y2 cos , M = m 2 + f x2 R(cos cos )+ f y2 R(sin sin ).
(13.63)
For typical straight beam-column members there are only two practically useful models: Bernoulli-Euler (BE)
and Timoshenko. For curved members there are many more. These range from simple corrections to BE
through theory-of-elasticity-based models. The model selected here is one of intermediate complexity. It is
defined by the internal complementary energy functional
U =
0
(F M/R)2
M2
+
2E A
2E I
ds =
(F M/R)2
M2
+
2E A
2E I
R d.
(13.64)
The assumptions enbodies in this formula are: (1) the shear energy density V 2 /(2G As ) is neglected; (2) the
cross section area A and moment of inertia I are unchanged with
respect of those of the straight member.
These assumptions are reasonable if |R| > 10 r , where r = + I /A is the radius of gyration of the cross
section. Further corrections are treated in Exercises. To simplify the ensuing formulas it is convenient to take
EA =
EI
2 R22
4E I
,
2 2
or
=
2r
with r 2 =
I
.
A
(13.65)
This defines as a dimensionless geometric parameter. Note that this is not an intrinsic measure of arch
slenderness, because it involves the element length. (In that respect it is similar to
of the Timoshenko
beam element, defined by (13.17).) The necessary calculations are carried out by the Mathematica script
of Figure 13.21, which has been pared down to essentials to save space. The deformational flexibility and
stiffness computed are
Frr =
F11
symm
F12
F22
F13
F23
F33
,
1
Krr = Frr
=
K 11
symm
1323
K 12
K 22
K 13
K 23
K 33
,
3
3
2 2
2 2
2(2
+
)
+
2(1
+
)
cos
2
3
sin
2
=
15 2 + 2 (2 15 2 ) + O( 4 )
3
16E I
60E I
3
3
sin
sin (1 + 2 2 ) cos =
1 3 2 + O( 3 ),
3
4E I
12E I
2
2 2
2
sin
(1
+
)
cos
=
1
3
+ O( 3 ),
2E I 2
6E I
3
3
2 2
2 2
2(2
+
)
2(1
+
)
cos
2
sin
2
=
20 + 3 2 (5 2 2) + O( 4 ),
3
16E I
60E I
2
2
sin
(1 + 2 2 ) =
(1 + 2 2 ).
6 + 2 (6 2 1) + O( 4 ), F33 =
2E I
12E I
EI
(13.66)
4E I 4
EI
(1 + 2 2 ) =
45 2 + 2 (15 2 + 45 4 1) + O( 4 ), K 12 = 0,
3
3
d1
45
2
6E I
4E I
2 2
(1
+
)
cos
sin
= 2 2 (3 2 1) + O( 3 ),
2 d1
8E I 3
12E I
sin
EI
K 22 = 3 (30 + 2 ) + O( 4 ),
=
(5 + 2 ) + O( 4 ), K 23 =
3
3
d2
5
2
5
EI
8 2 (3 + 2 2 2 ) 9 + 16 cos 2 7 cos 4 8 sin 2 2 + (1 + 2 2 ) cos 2
8 d1 d2
EI
2
2
2
180
+
(5
48
)
+ O( 4 ),
45 2
(13.67)
The constraint K 23 = K 22 sin /(2) must be verified by any arch stiffness, regardless of the TCPE form
used. The necessary transformation matrix to inject the rigid body modes
T = [ G I ] =
1
0
0
0
1
0
0
2R sin
1
1 0 0
0 1 0
0 0 1
=
1
0
0
0
1
0
0
sin /
1
1 0 0
0 1 0
0 0 1
. (13.68)
0
K 13 K 11
0
K 13
11
K 22 K 23
0
K 22 K 23
0
K 13 K 23
K 33 K 13
K 23
K 36
Ke = TT Krr T =
K 11
0
K 13
K 11
0
K 13
0
K 13
K 22
K 23
K 23
K 36
0
K 13
K 22
K 23
(13.69)
K 23
K 33
EI
(90 2 + 2 (12 2 5) + O( 4 )
45
As a check, if 0 the entries reduce to that of the beam-column modeled with Bernoulli-Euler. For
example K 11 4E I 2 / 3 = E A/ , K 22 12E I / 3 , K 33 4E I / , K 36 2E I / , etc.
1324
ClearAll[,,,,R,F,M,V,Le,EA,EI];
EA=4*EI/(^2*Le^2);
V=-fy2*Cos[]+fx2*Sin[]; F=fx2*Cos[]+fy2*Sin[];
M=m2+fx2*R*(Cos[]-Cos[])+fy2*R*(Sin[]+Sin[]);
Ucd=(F-M/R)^2/(2*EA)+ M^2/(2*EI);
Uc=Simplify[Integrate[Ucd*R,{,-,}]]; Print["Uc=",Uc];
u2=D[Uc,fx2]; v2=D[Uc,fy2]; 2=D[Uc,m2];
Frr=Simplify[{{ D[u2,fx2], D[u2,fy2], D[u2,m2]},
{ D[v2,fx2], D[v2,fy2], D[v2,m2]},
{ D[2,fx2], D[2,fy2], D[2,m2]}}];
Frr=FullSimplify[Frr/.{R->Le/(2*)}]; Print["Frr=",Frr//MatrixForm];
Krr=FullSimplify[Inverse[Frr]];
Print["Krr=",Krr//MatrixForm];
TT={{-1,0,0},{0,-1,0},{0,-2*R*Sin[],-1},{1,0,0},{0,1,0},{0,0, 1}};
TT=TT/.{R->Le/(2*)}; T=Transpose[TT];
Ke=Simplify[TT.Krr.T]; Print["Ke=",Ke//MatrixForm];
Figure 13.19. Script to produce circular arch element stiffness in local coordinates.
(a)
2 (x2 ,y2)
3 (x3 ,y3 )
_
(b)
2
3
1 (x 1 ,y1)
b
3
R
2
(c)
H
2S
x
Figure 13.20. Plane circular arch element in global coordinates: (a) geometric id (b) intrinsic
geometry recovery.
Figure 13.21. Module to produce plane circular arch element stiffness in global coordinates.
(To be done)
1325
1326
q(x)
j
xi = xj
xj
xk = xj +
vj = 1
Two-element
patch ijk
Trial functions
at node j
j = 1
EI = const
i
(1)
(2)
L
Figure 13.22. Repeating beam lattice for accuracy analysis.
13.6.
*Accuracy Analysis
This section presents the accuracy analysis of a repeating lattice of beam elements, analogous to that done for
the bar element in 12.5. The analysis uses the method of modified differential equations (MoDE) mentioned
in the Notes and Bibliography of Chapter 12. It is performed using a repeated differentiations scheme similar
to that used in solving Exercise 12.8. Only the case of the Bernoulli-Euler model is worked out in detail.
13.6.1. *Accuracy of Bernoulli-Euler Beam Element
Consider a lattice of repeating two-node, prismatic, plane Bernoulli-Euler beam elements of rigidity E I and
length , as illustrated in Figure 13.22. The system is subject to an arbitrary lateral load q(x), which is assumed
infinitely differentiable in x. From the lattice extract a patch of two elements: (1) and (2), connecting nodes
i j and jk, respectively, as shown in Figure 13.22.
The FEM patch equations at node j are
v
i
i
E I 12 6 24 0 12 6
vj = f j
2
2
2
mj
6 2 0 8 6 2 j
3
(13.70)
vk
k
Expand v(x), (x) and q(x) in Taylor series about x = x j , truncating at n +1 terms for v and , and m +1 terms
for q. Using = (x x j )/ , the series are v(x) = v j + v j + ( 2 2 /2!)v j + . . . + ( n n /n!)v [n]
j , (x) =
[n]
2 2
n n
2 2
m m
j + j +( /2!) j +. . .+( /n!) j , and q(x) = q j + q j +( /2!)q j +. . .+( /m!)q [m]
j .
[n]
n
n 12
Here v j , etc., is an abbreviation for d v(x j )/d x . Evaluate the v(x) and (x) series at i and k by setting
= 1, and insert in (13.70). Use the q(x) series evaluated over elements (1) and (2), to compute the
consistent forces f j and m j as
fj =
2
N3(1) q (1)
1
(1)
N1(2) q (2)
1
(2)
, mj =
2
N4(1) q (1)
1
(1)
N2(2) q (2)
1
(2)
(13.71)
Here N3(1) = 14 (1 + (1) )2 (2 (1) ), N4(1) = 8 (1 + (1) )2 (1 (1) ) N1(2) = 14 (1 (2) )2 (2 + (2) ), and
N2(2) = 8 (1 (2) )2 (1 + (2) ) are the Hermitian shape functions components of the j node trial function,
whereas q (1) = q( (1) ), (1) = 12 (1 (1) ) and q (2) = q( (2) ), (2) = 12 (1 + (2) ) denote the lateral loads.
12
Brackets are used instead of parentheses to avoid confusion with element superscripts. If derivatives are indexed by
primes or roman numerals the brackets are omitted.
1327
To show the resulting system in compact matrix form it is convenient to collect the derivatives at node j into
vectors:
T
v j = [ v j v j v j . . . v [n]
j ] ,
T
j = [ j j j . . . [n]
j ] ,
T
q j = [ q j q j q j . . . q [n]
j ] .
(13.72)
Svv
Sv
Sv
S
vj
j
Pv
=
qj.
P
(13.73)
Here Svv , Sv , Sv and S are triangular Toeplitz matrices of order (n+1) (n+1) whereas Pv and P are
generally rectangular matrices of order (n+1) (m+1). Here is the expression of these matrices for n = 8,
m = 4:
Svv
0
0
= EI 0
0
0
0
0
Sv = E I 0
0
0
0
0
0
0
0
0
0
12
12
0
0
0
0
0
0
0 0
0 0
0
0
0
0
0
0
0
0
0
12
0
0
0
0
0
0
0
0
0 1680
30
3
0 0
0
30
12
3
0 0 30
0 12
0 0
12
,
0 0
0
12
0 0 0
0
0 0 0 0 12
0 0 0 0
0
0 0 0 0
0
0 2
12
0
12
0
0 0
0 0
0 0
0 0
0 0
0 0
0
10
2 0
0 2
12
0
12
0
0
0
0
0
0
0
0
0
3
0
0
0 0
0 0
Pv =
0 0
0 0
0 0
3
15
0
0
0
0
0
0 0 0
0 0 0
5
420
0
3
10
12
0
0
0
0
3
15
0
0
0
0
0
0
Sv = E I 0
0
5
560
3
15
0
0
0
0
0
12
0
0
0
0
0
0
0 0
0 0
12
0
3
10
3
0
10
,
S
=
E
I
2 0
0
0 2
0
12
0
0
0
0 12
0
0
2
0
5
420
0
0
P = 0
0
0
0
3
15
0
0
0
0
0
0
0
0
0
3
15
0
0
0
0
0
0
0
5
315
0
3
15
0
0
0
0
0
0
0 2
12
0
12
0
0 0
0 0
0 0
0 0
0 0
0 0
0 2
12
0
12
0
0 0
0 0
0 0
0 0
0 0
0 0
0
5
315
0
3
15
0
0
0
0
0
0 10
0
3
2 0 10
0 2 0
12
0 2
0 12 0
0 0 12
0 0 0
0 0 0
0 0 0
3
0 6 0
3
2 0 6
0 2 0
12
0 2
12
0 0
0 0 12
0 0 0
0 0 0
0 0 0
5
180
0
3
6
5
420
5
420
3
0 10
2 0
0 2
12
0
12
0
3
10
0
0
0
0
5
180
7
10080
5
180
0 6
0
3
2 0
6
0 2 0
12
0 2
0 12
0
12
0 0
(13.74)
3
(13.75)
with
S = Svv Sv S1
Sv ,
1328
P = Pv Sv S1
v P .
(13.76)
0 0
0 0
0 0
0 0
S = Svv Sv S1
S
=
E
I
0 0
v
0 0
0 0
0
0
0
0
0
0
0
0 0 0
0 0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
5
720
0
0
0
0
0
0
0 0 0
0 0 0
0
0
0
0
0
0
0
0
5
720
0
0
0
0
(13.77)
4 viii
4 iv
v
/720)
=
q
q
The nontrivial differential relations13 given by S v j = P q j are E I (v iv
j
j
j
j /720,
vi
vii
viii
iv
v
E I v j = q j , E I v j = q j , E I v j = q j , and E I v j = q j . The first one is a truncation of the infinite order
MoDE. Elimination of all v j derivatives but v iv
j yields
0
0
0
0
0
0
0
0
0
0 0
0 0
P = Pv Sv S1
P
=
0 0
v
0 0
0 0
E I v iv
j = qj,
(13.78)
exactly. That this is not a fluke can be confirmed by increasing n and while taking m = n 4. The first 4
The last 4 rows of P, which are
columns and last 4 rows of S, which are always zero, are removed to get S.
also zero, are removed to get P. With m = n4 both matrices are of order n3 n3. Then S = P for any
n, which leads immediately to (13.78). This was confirmed with Mathematica running n up to 24.
The foregoing analysis shows that the BE cubic element is nodally exact for any smooth load over a repeating
lattice if consistent load computation is used. Exercise 13.18 verifies that the property is lost if elements are
not identical. Numerical experiments confirm these conclusions. The Laplace transform method only works
part way: it gives a different infinite order MoDE but recovers (13.78) as n .
These accuracy properties are not widely known. If all beam elements are prismatic and subjected only to
point loads at nodes, overall exactness follows from a theorem by Tong [746], which is not surprising since
the exact solution is contained in the FEM approximation. For general distributed loads the widespread belief
is that the cubic element incurs O( 4 ) errors. The first study of this nature by Waltz et. al. [780] gave the
modified differential equation (MoDE) for a uniform load q as
v iv
4 viii
q
v + ... =
.
720
EI
(13.79)
The above terms are correct. In fact a more complete expression, obtained in this study, is
4 iv
6 vi
7 8
q +
q
q viii + . . .
720
3024
259200
(13.80)
But the conclusion that the principal error term is of order 4 [780,p. 1009] is incorrect. The misinterpretation
is due to (13.80) being an ODE of infinite order. Truncation is fine if followed by elimination of higher
derivatives. If this is done, the finite order MoDE (13.78) emerges regardless of where (13.80) is truncated; an
obvious clue being the repetition of coefficients in both sides. The moral is that conclusions based on infinite
order ODEs should be viewed with caution, unless corroborated by independent means.
EI
13
4 viii
6 x
7 8
v
v +
v
v xii + . . .
720
3024
259200
iv
=q
Derivatives of order 4 and higher are indicated by Roman numeral superscripts instead of primes.
1329
EI
v iv
j
2
vi 4 (1 + 5
5
2 ) viii 6 (20 + 7
70
2 + 35
3 ) x
v
vj +
vj + . . .
+
12 j
720
60480
= qj
4 (1 + 5
) iv 6 (20 + 14
35
2 ) vi
qj +
qj ) + . . . ,
720
60480
The Bernoulli-Euler beam dynamic model is parabolic and thus exhibits an infinite transverse wave speed. Such a model
is unsuitable for wave propagation problems.
15
1330
13.
References
complexity in complicated problems discouraged hand derivations. Whereas the first limitation still holds, the
increasing availability of CAS allows timely consideration of more difficult problems. The construction of the
exact beam-on-Winkler-foundation element in 13.3 offers a case in point. Using Mathematica the complete
derivation, checking and fully-symbolic testing took about 6 hours, whereas a hand derivation, coding and
numerical testing would likely take weeks or months. The main application of exact elements appears to be
a priori error estimation: how many simpler elements are needed to do the job of an exact one?
The construction of stiffness matrices from flexibility information was historically one of the first techniques
by which stiffness equations of MoM members were derived. The rigid body injection method of 13.4.4
largely follows Section 6.6 of [596]. The presentation of discrete-system equilibrium theorems in 13.4.2
includes a new ingredient missing from previous work: handling non-self-equilibrated loading systems. This
extension removes the 40-year-old objection that flexibility methods (or more generally, schemes based on the
TCPE principle) are unable to produce equivalent or consistent node forces.
The use of equilibrium methods for multidimensional finite elements was pioneered by Fraeijs de Veubeke in
the 1960s and early 1970s. His obsession with solution bounding got these methods seriously stuck, however,
because of difficulties in interelement connections that maintain system-level equilibrium, as well as avoidance
of spurious modes. More practical extensions lead to the so-called Trefftz and equilibrium hybrid methods.
These are presently the topic of active research16 but require advanced variational techniques beyond the scope
of this book. Another recent advance is the discovery of the free-free flexibility as the true dual of the free-free
stiffness [232,240,233]. This extension relies heavily on projection operators.
That Hermitian BE element models are nodally exact if consistent loads are used is stated in [397, Sec. 8.3] as
the beam theorem. Despite the name, no proof is given; only anecdotal evidence it was likely discovered
by numerical experimentation. A proof based on Fourier series appears in [263].
As the study in 13.6 illustrates, modified equation methods in boundary value problems17 are delicate and
should be used with care. Their intricacies baffled Strang and Fix who, upon doing Fourier analysis of a cubic
beam element, incorrectly stated [698, p. 171] that only one of the discrete equations that for v(x) is
consistent and the others are completely inconsistent. The alternative is the variational approach to error
analysis. Although more robust and forgiving, predictions are often so conservative as to be of little value.
References
Referenced items have been moved to Appendix R.
16
Along with discontinuous Galerkin methods, a reinvention of Fraeijs de Veubekes weakly diffusive models.
17
1331
transverse load q. Hint: find fc for the Legendre interpolation, then premultiply by HTS .
EXERCISE 13.3 [A/C:20] Construct the stiffness matrix a Timoshenko plane beam element with a hinge at
the center. Hint: set R Bs = 0, R Ba = E I and R S = 12E I /(
2 ) in (13.13).
EXERCISE 13.4 [A/C:15=5+10] Consider a cantilever beam of constant bending rigidity E I , constant shear
rigidity G As and length L, which is modeled with one Timoshenko element. The beam is end loaded by a
transverse force P. The support conditions are v1 = 1 = 0.
(a)
Find the end displacement v2 and end rotation 2 in terms of P, E, G, I , As and L. Compare with the
analytical values P L 3 /(3E I ) + P L/(G As ) and P L 2 /(2E I ), respectively.
(b)
Why does the finite element model provides the exact answer with one element?
EXERCISE 13.5 [A:25] (Requires math ability). Discuss what happens in (13.18) if . Is the result
useful for a shear-only spar element? Hint: eliminate 1 and 2 by a master-slave MFC.
EXERCISE 13.6 [A:10] For a given number of elements N e of length = 2L/N e , relate and in Example
13.2.
EXERCISE 13.7 [A/C:40] (research paper level). Derive an exact Timoshenko-beam-on-Winkler-foundation
equation method.element using the differential equation method.
EXERCISE 13.8 [C:30] Write Mathematica code to verify the nodal exactness conclusion of 13.6.1 using
the repeated differentiation approach.
EXERCISE 13.9 [C:30] As above, but using the Laplace transform. Show that this only does half the job.
EXERCISE 13.10 [A/C:35] Find the general symbolic expression of the terms in
EXERCISE 13.11 [A/C:40] (research paper level) Analyze nodal accuracy if the length of the beam elements
(1 ) , where 0 12 .
EXERCISE 13.12 [A/C:35] Using Mathematica, verify the results (13.81) and (13.82) in 13.6.2.
1332
14
141
TABLE OF CONTENTS
Page
14.1
14.2
14.3
14.4
14.
14.
14.
Introduction
. . . . . . . . . . . . . . . . . . . . .
Plate in Plane Stress . . . . . . . . . . . . . . . . . .
14.2.1
Behavioral Assumptions . . . . . . . . . . . . . .
14.2.2
Mathematical Model
. . . . . . . . . . . . . .
14.2.3
Problem Data
. . . . . . . . . . . . . . . . .
14.2.4
Problem Unknowns . . . . . . . . . . . . . . .
Plane Stress Governing Equations
. . . . . . . . . . . . .
14.3.1
Governing Equations
. . . . . . . . . . . . . .
14.3.2
Boundary Conditions . . . . . . . . . . . . . . .
14.3.3
Weak versus Strong Form . . . . . . . . . . . . .
14.3.4
Total Potential Energy
. . . . . . . . . . . . . .
Finite Element Equations . . . . . . . . . . . . . . . .
14.4.1
Displacement Interpolation . . . . . . . . . . . . .
14.4.2
Element Energy . . . . . . . . . . . . . . . .
14.4.3
Element Stiffness Equations
. . . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
142
143
143
143
144
145
145
146
146
147
148
149
1410
1410
1411
1412
1412
1412
1413
14.2
14.1. Introduction
We now pass to the variational formulation of two-dimensional continuum finite elements. The
problem of plane stress will serve as the vehicle for illustrating such formulations. As narrated
in Appendix O, continuum-based structural finite elements were invented in the aircraft industry
(at Boeing during the early 1950s) to solve this kind of problem when it arose in the design and
analysis of delta wing panels [765].
The problem is presented here within the framework of the linear theory of elasticity.
14.2. Plate in Plane Stress
In structural mechanics, a flat thin sheet of material is called a plate.1 The distance between the
plate faces is the thickness, denoted by h. The midplane lies halfway between the two faces.
The direction normal to the midplane is the transverse direction. Directions parallel to the midplane
are called in-plane directions. The global axis z is oriented along the transverse direction. Axes x
and y are placed in the midplane, forming a right-handed Rectangular Cartesian Coordinate (RCC)
system. Thus the equation of the midplane is z = 0. The +z axis conventionally defines the top
surface of the plate as the one that it intersects, whereas the opposite surface is called the bottom
surface. See Figure 14.1(a).
(a)
z
Top surface
Referral to
midplane
(c)
(b)
Midplane
Mathematical
idealization
Plate
Figure 14.1. A plate structure in plane stress: (a) configuration; (b) referral to its midplane;
(c) 2D mathematical idealization as boundary value problem.
All loads applied to the plate act in the midplane direction, and are symmetric with respect to
the midplane.
2.
3.
In-plane displacements, strains and stresses can be taken to be uniform through the thickness.
4.
The normal and shear stress components in the z direction are zero or negligible.
If it is relatively thick, as in concrete pavements or Argentinian beefsteaks, the term slab is also used but not usually for
plane stress conditions.
143
dx dy
h
Thin plate in plane stress
dx
dy
dx
dx dy
h
yy
xx xy = yx
dx dy
h
bx
eyy
e xx e xy = eyx
dx dy
dx dy
h
by
In-plane displacements
In-plane strains
dy
pxy
In-plane stresses
y
x
pyy
y
pxx
+ sign conventions
for internal forces,
stresses and strains
y
x
ux
uy
The last two assumptions are not necessarily consequences of the first two. For the latter to hold,
the thickness h should be small, typically 10% or less, than the shortest in-plane dimension. If the
plate thickness varies it should do so gradually. Finally, the plate fabrication must exhibit symmetry
with respect to the midplane.
To these four assumptions we add the following restriction:
5.
The plate is fabricated of the same material through the thickness. Such plates are called
transversely homogeneous or (in aerospace) monocoque plates.
The last assumption excludes wall constructions of importance in aerospace, in particular composite
and honeycomb sandwich plates. The development of mathematical models for such configurations
requires a more complicated integration over the thickness as well as the ability to handle coupled
bending and stretching effects, and will not be considered here.
Remark 14.1. Selective relaxation from assumption 4 leads to the so-called generalized plane stress state, in
which z stresses are accepted. The plane strain state is obtained if strains in the z direction are precluded.
Although the construction of finite element models for those states has many common points with plane stress,
we shall not consider those models here. For isotropic materials the plane stress and plane strain problems
can be mapped into each other through a fictitious-property technique; see Exercise 14.1.
Remark 14.2. Transverse loading on a plate produces plate bending, which is associated with a more complex
14.2
In this idealization the third dimension is represented as functions of x and y that are integrated
through the plate thickness. Engineers often work with internal plate forces, which result from
integrating the in-plane stresses through the thickness. See Figure 14.2.
14.2.3. Problem Data
The following summarizes the givens in the plate stress problem.
Domain geometry. This is defined by the boundary illustrated in Figure 14.1(c).
Thickness. Most plates used as structural components have constant thickness. If the thickness
does vary, in which case h = h(x, y), it should do so gradually to maintain the plane stress state.
Sudden changes in thickness may lead to stress concentrations.
Material data. This is defined by the constitutive equations. Here we shall assume that the plate
material is linearly elastic but not necessarily isotropic.
Specified Interior Forces. These are known forces that act in the interior of the plate. There
are of two types. Body forces or volume forces are forces specified per unit of plate volume; for
example the plate weight. Face forces act tangentially to the plate faces and are transported to the
midplane. For example, the friction or drag force on an airplane skin is of this type if the skin is
modeled to be in plane stress.
Specified Surface Forces. These are known forces that act on the boundary of the plate. In
elasticity they are called surface tractions. In actual applications it is important to know whether
these forces are specified per unit of surface area or per unit length. The former may be converted
to the latter by multiplying through the appropriate thickness value.
Displacement Boundary Conditions. These specify how the plate is supported. Points subject
to support conditions may be fixed, allowed to move in one direction, or subject to multipoint
constraints. Also symmetry and antisymmetry lines may be identified as discussed in Chapter 8 of
IFEM [257].
If no displacement boundary conditions are imposed, the plate is said to be free-free or floating.
14.2.4. Problem Unknowns
The unknown fields are displacements, strains and stresses. Because of the assumed wall fabrication
homogeneity the in-plane components are assumed to be uniform through the plate thickness. Thus
the dependence on z disappears and all such components become functions of x and y only.
Displacements. The in-plane displacement field is defined by two components:
u x (x, y)
u(x, y) =
u y (x, y)
(14.1)
Displacement
Prescribed
BCs
Displacements
displacements
^
u
u
=
u
^
u
on u
Body forces
Equilibrium DT + b = 0
in
(aka Balance)
e = D u Kinematic
in
Strains
Constitutive
=Ee
or e = C
in
Stresses
Force BCs
T n = ^t
or pT n = q^
on t
Prescribed
tractions ^
t or
^
forces q
Figure 14.3. The Strong Form of the plane stress equations of linear elastostatics displayed as a
Tonti diagram. Yellow boxes identify prescribed fields whereas orange boxes denote unknown fields.
The distinction between Strong and Weak Forms is explained in 14.3.3.
ex x (x, y)
(14.2)
e(x, y) = e yy (x, y)
2ex y (x, y)
The factor of 2 in ex y shortens strain energy expressions. The shear strain components ex z and e yz
vanish. The transverse normal strain ezz is generally nonzero because of Poissons ratio effects.
This strain does not enter the governing equations as unknown, however, because the associated
stress zz is zero. This eliminates the contribution of zz ezz to the internal energy.
Stresses. The in-plane stress field forms a tensor defined by three independent components: x x ,
yy and x y . As in the case of strains, to allow stating the FE equations in matrix form, these
components are cast to form a 3-component stress vector
x x (x, y)
(14.3)
(x, y) = yy (x, y)
x y (x, y)
The remaining three stress components: zz , x z and yz , are assumed to vanish.
The plate internal forces are obtained on integrating the stresses through the thickness. Under the
assumption of uniform stress distribution,
px x = x x h,
p yy = yy h,
px y = x y h.
(14.4)
These ps also form a tensor. They are called membrane forces in the literature. See Figure 14.2.
14.3. Plane Stress Governing Equations
We shall develop plane stress finite elements in the framework of classical linear elasticity. The
necessary governing equations are presented below. They are graphically represented in the Strong
Form Tonti diagram of Figure 14.3.
146
14.3
= E e,
DT + b = 0,
(14.6)
u = u.
(14.7)
Here u are prescribed displacements. Often u = 0. This happens in fixed portions of the boundary,
as the ones illustrated in Figure 14.4.
Force boundary conditions (also called stress BCs and traction BCs in the literature) are specified
on t . They take the form
n = t.
(14.8)
Here t are prescribed surface tractions specified as a force per unit area (that is, not integrated
through the thickness), and n is the stress vector shown in Figure 14.4.
2
147
;;;;
;
;;;;
;;
;
;;;
;;
;
;
;;;
;;;
u
u^ = 0
^
Boundary displacements u
are prescribed on u
(figure depicts fixity condition)
t^
^tn
nt
n
Boundary tractions ^t or
boundary forces q^
are prescribed on t
^tt
n (unit exterior
normal)
^t
nn
Stress BC details
(decomposition of forces
q^ would be similar)
Figure 14.4. Displacement and force (stress, traction) boundary conditions for the plane stress problem.
pn = q.
(14.9)
Here pn = n h and q = t h. This form is used more often than (14.8) in structural design,
particularly when the plate wall construction is inhomogeneous.
The components of n in Cartesian coordinates follow from Cauchys stress transformation formula
x x n x + x y n y
n =
x y n x + yy n y
nx
=
0
0
ny
ny
nx
x x
yy ,
x y
(14.10)
in which n x and n y denote the Cartesian components of the unit normal vector ne (also called
the direction cosines of the normal). Thus (14.8) splits into two scalar conditions: tx = nx and
ty = ny . The derivation of (14.10) is the subject of Exercise 14.4.
It is sometimes convenient to write the condition (14.8) in terms of normal n and tangential t
directions:
nn = tn ,
nt = tt
(14.11)
148
14.3
Displacement
Prescribed
BCs
Displacements
displacements
^
u
u
=
u
^
u
on u
Body forces
e = D u Kinematic
in
Strains
Stresses
=Ee
or e = C
in
= 0
in
Equilibrium
(weak)
Constitutive
Force BCs
(weak)
= 0
on t
Prescribed
tractions ^
t or
^
forces q
Figure 14.5. The TPE-based Weak Form of the plane stress equations of linear elastostatics.
Weak links are marked with grey lines.
(14.12)
1
2
h e d =
T
1
2
h eT E e d.
(14.13)
in which 12 eT Ee is the strain energy density. The derivation details are relegated to Exercise 14.5,
The external energy (potential of the applied forces) is the sum of contributions from the given
149
(a)
(b)
(c)
h u b d +
h uT t d.
t
(14.14)
Note that the boundary integral over is taken only over t . That is, the portion of the boundary
over which tractions or forces are specified.
14.4. Finite Element Equations
The necessary equations to apply the finite element method to the plane stress problem are collected
here and expressed in matrix form. The domain of Figure 14.6(a) is discretized by a finite element
mesh as illustrated in Figure 14.6(b). From this mesh we extract a generic element labeled e with
n 3 node points. In subsequent derivations the number n is kept arbitrary. Therefore, the
formulation is applicable to arbitrary two-dimensional elements, for example those sketched in
Figure 14.7.
To comfortably accommodate general element types, the node points will be labeled 1 through n.
These are called local node numbers. Numbering will always start with corners.
The element domain and boundary are denoted by e and e , respectively. The element has 2n
degrees of freedom. These are collected in the element node displacement vector in a node by node
arrangement:
(14.15)
ue = [ u x1 u y1 u x2 . . . u xn u yn ]T .
14.4.1. Displacement Interpolation
The displacement field ue (x, y) over the element is interpolated from the node displacements. We
shall assume that the same interpolation functions are used for both displacement components.3
Thus
n
n
e
Ni (x, y) u xi ,
u y (x, y) =
Nie (x, y) u yi ,
(14.16)
u x (x, y) =
i=1
3
i=1
This is the so called element isotropy condition, which is studied and justified in advanced FEM courses.
1410
14.4
3
4
5
6
n=3
10
2
12
11
5
n=4
n=6
3
7
6
2
n = 12
Figure 14.7. Example plane stress finite elements, characterized by their number of nodes
n.
in which Nie (x, y) are the element shape functions. In matrix form:
e
N1
u x (x, y)
=
u(x, y) =
u y (x, y)
0
N2e
0
0
N1e
...
...
0
N2e
Nne
0
0
ue = N ue .
Nne
(14.17)
This N (with superscript e omitted to reduce clutter) is called the shape function matrix. It has
dimensions 2 2n. For example, if the element has 4 nodes, N is 2 8.
The interpolation condition on the element shape function Nie (x, y) states that it must take the value
one at the i th node and zero at all others. This ensures that the interpolation (14.17) is correct at
the nodes. Additional requirements on the shape functions are stated in later Chapters.
Differentiating the finite element displacement field yields the strain-displacement relations:
Ne
Nne
N2e
1
0
0
.
.
.
0
x
x
x
e
e
e
N
e
n e
1
2
0
...
0
(14.18)
e(x, y) =
0
y
y
y u = B u .
e
e
e
e
e
e
N
Nn
N1 N1 N2 N2
. . . yn
y
x
y
x
x
This B = D N is called the strain-displacement matrix. It is dimensioned 3 2n. For example, if
the element has 6 nodes, B is 3 12. The stresses are given in terms of strains and displacements
by = E e = EBue , which is assumed to hold at all points of the element.
14.4.2. Element Energy
To obtain finite element stiffness equations, the variation of the TPE functional is decomposed into
contributions from individual elements:
e = U e W e = 0.
in which
U =
e
1
2
and
h e d =
T
e
h eT Ee de
1
2
W =
(14.19)
e
h u b d +
T
e
1411
e
h uT t d e
(14.20)
(14.21)
Note that in (14.21) te has been taken equal to the complete boundary e of the element. This is
a consequence of the fact that displacement boundary conditions are applied after assembly, to a
free-free structure. Consequently it does not harm to assume that all boundary conditions are of
stress type insofar as forming the element equations.
14.4.3. Element Stiffness Equations
Inserting the relations u = Nue , e = Bue and = Ee into
e yields the quadratic form in the
nodal displacements
(14.22)
e = 12 ue T Ke ue ue T fe .
Here the element stiffness matrix is
K =
e
e
h BT EB de ,
e
(14.23)
(14.24)
In the second integral of (14.24) the matrix N is evaluated on the element boundary only.
The calculation of the entries of Ke and fe for several elements of historical or practical interest is
described in subsequent Chapters.
Notes and Bibliography
The plane stress problem is well suited for introducing continuum finite elements, from both historical and
technical standpoints. Some books use the Poisson equation for this purpose, but problems such as heat
conduction cannot illustrate features such as vector-mixed boundary conditions and shear effects.
The first continuum structural finite elements were developed at Boeing in the early 1950s to model delta-wing
skin panels [146,765]. A plane stress model was naturally chosen for the panels. The paper that gave the
method its name [137] used the plane stress problem as application driver.
The technical aspects of plane stress can be found in any book on elasticity. A particularly readable one is the
excellent textbook by Fung [289], which is unfortunately out of print.
References
Referenced items have been moved to Appendix R.
1412
Exercises
EXERCISE 14.1 [A+C:15] Suppose that the structural material is isotropic, with elastic modulus E and
Poissons ratio . The in-plane stress-strain relations for plane stress (zz = x z = yz = 0) and plane strain
(ezz = ex z = e yz = 0) as given in any textbook on elasticity, are
plane stress:
plane strain:
x x
yy
x y
1
0
0
0
1
2
x x
1
E
yy =
(1 + )(1 2)
x y
0
E
=
1 2
ex x
e yy
2ex y
,
1
0
0
0
1
(1
2)
2
ex x
e yy
2ex y
(E14.1)
.
Show that the constitutive matrix of plane strain can be formally obtained by replacing E by a fictitious
modulus E and by a fictitious Poissons ratio in the plane stress constitutive matrix. Find the expression
of E and in terms of E and .
You may also chose to answer this exercise by doing the inverse process: go from plane strain to plain stress
by replacing a fictitious modulus and Poissons ratio in the plane strain constitutive matrix.
This device permits reusing a plane stress FEM program to do plane strain, or vice-versa, as long as the
material is isotropic.
Partial answer to go from plane stress to plane strain: = /(1 ).
EXERCISE 14.2 [A:25] In the finite element formulation of near incompressible isotropic materials (as well
as plasticity and viscoelasticity) it is convenient to use the so-called Lame constants and instead of E and
in the constitutive equations. Both and have the physical dimension of stress and are related to E and
by
E
E
, =G=
.
(E14.2)
=
(1 + )(1 2)
2(1 + )
Conversely
E=
(3 + 2)
,
+
.
2( + )
(E14.3)
Substitute (E14.3) into both of (E14.1) to express the two stress-strain matrices in terms of and . Then split
the stress-strain matrix E of plane strain as
E = E + E
(E14.4)
in which E and E contain only and , respectively, with E diagonal and E 33 = 0. This is the Lame or
{, } splitting of the plane strain constitutive equations, which leads to the so-called B-bar formulation of
near-incompressible finite elements.4 Express E and E also in terms of E and .
For the plane stress case perform a similar splitting in which where E contains only = 2/( + 2) with
E 33 = 0, and E is a diagonal matrix function of and .5 Express E and E also in terms of E and .
4
Equation (E14.4) is sometimes referred to as the deviatoric+volumetric splitting of the stress-strain law, on account of
its physical meaning in plane strain. That interpretation is not fully accurate, however, for plane stress.
For the physical significance of see [688, pp. 254ff].
1413
EXERCISE 14.3 [A:20] Include thermoelastic effects in the plane stress constitutive field equations, assuming
a thermally isotropic material with coefficient of linear expansion . Hint: start from the two-dimensional
Hookes law including temperature:
ex x =
1
(x x yy ) + T,
E
e yy =
1
( yy x x ) + T,
E
2ex y = x y /G,
(E14.5)
in which T = T (x, y) and G = 12 E/(1 + ). Solve for stresses and collect effects of T in one vector
of thermal stresses.
EXERCISE 14.4 [A:15] Derive the Cauchy stress-
ty
x x
dy ds
dx
x y = y x
tx
yy
Hint: tx ds = x x dy + x y d x, etc.
EXERCISE 14.5 [A:25=5+5+15] A linearly elastic plate is in plane stress. It is shown in courses in elasticity
that the internal strain energy density stored per unit volume of the plate expressed in terms of stresses and
strains is the bilinear form
U = 12 (x x ex x + yy e yy + x y ex y + yx e yx ) = 12 (x x ex x + yy e yy + 2x y ex y ) =
(a)
1
2
T e.
(E14.6)
1
2
(E14.7)
eT E e,
thus justifying the strain energy density expression given in (14.13) for the plane stress problem.
(b)
1
2
(E14.8)
T C ,
Suppose you want to write (E14.6) in terms of the extensional strains {ex x , e yy } and of the shear stress
x y = yx . This is known as a mixed representation, which is used in finite elements formulated with
mixed variational principles. Show that
U=
1
2
ex x
e yy
x y
T
A11
A12
A13
A12
A22
A23
A13
A23
A33
ex x
e yy
x y
,
(E14.9)
and explain how the entries Ai j of the kernel matrix A that appears in (E14.9) can be calculated6 in terms
of the elastic moduli E i j .
Hint. Parts (a,b) are easy. Part (c) is more difficult. It can be symbolically done by the Mathematica script
The process of computing A is an instance of partial inversion of the elasticity matrix E. It is closely related to the
Schur complement concept covered in Appendix P.
1414
Exercises
ClearAll[exx,eyy,gxy,sxx,syy,sxy,E11,E22,E33,E12,E13,E23];
Emat={{E11,E12,E13},{E12,E22,E23},{E13,E23,E33}};
s={sxx,syy,sxy}; e={exx,eyy,gxy}; m={exx,eyy,sxy};
eqs={sxx==E11*exx+E12*eyy+E13*gxy,syy==E12*exx+E22*eyy+E23*gxy,
sxy==E13*exx+E23*eyy+E33*gxy};
sol=Simplify[Simplify[Solve[eqs,{sxx,syy,gxy}]]];
Print[sol]; U=Simplify[(e.Emat.e/2)/.sol[[1]]];
fac[i_,j_]:=If[i==j,1,1/2];
A=Table[fac[i,j]*Coefficient[U,m[[i]]*m[[j]]],{i,1,3},{j,1,3}];
Print["A=",A//MatrixForm];
If you use this solution, make sure to explain what is going on.
Note: the following Table list relations between commonly used moduli for isotropic linear elastic material.
Here K is the bulk modulus whereas M is the P-wave modulus used in seismology. Tha table is useful for
Exercise 14.2.
(, )
(E, )
(K , )
E
2
3 3(3E)
3+2
9K K
E = +
3K
E2
=
3E
=G=
K
2
E
=
1
2
2(+)
4E
M=
+2
3K 2
3E
K =
(K , )
(, )
(, )
(E, )
1+
3
2(1+)
3(12)
(1+)(12)
E
3(12)
9K
3K +
2
K
3
K
3K
3K 2
3K 2(3K +)
4
K+
1
1415
12
9K
3K +
22
12
(K , )
(K , E)
3K (12)
3K (3K E)
3K
E
9K E
(1+)(12) 1+
(12)
(12)
E
3K
2
2(1+)
2(1+)
3K E
6K
E(1)
1
3K
+E
3K
3K
1+
9K E
(1+)(12)
(E14.10)
2(1+)
15
Three-Node
Plane Stress
Triangles
151
TABLE OF CONTENTS
Page
15.1
15.2
15.3
15.4
15.5
15.6
15.
15.
15.
15.
Introduction
. . . . . . . . . . . . . . . . . . . . .
Background . . . . . . . . . . . . . . . . . . . . .
15.2.1
Parametric Representation of Functions . . . . . . . . .
15.2.2
Geometry . . . . . . . . . . . . . . . . . .
15.2.3
Triangular Coordinates
. . . . . . . . . . . . . .
15.2.4
Linear Interpolation . . . . . . . . . . . . . . .
15.2.5
Coordinate Transformations
. . . . . . . . . . . .
15.2.6
Partial Derivatives
. . . . . . . . . . . . . . .
15.2.7
*Homogeneous Polynomials in Triangular Coordinates
. . .
15.2.8
*Interesting Points and Lines . . . . . . . . . . . .
The Turner Triangle
. . . . . . . . . . . . . . . . . .
15.3.1
Strain-Displacement Equations . . . . . . . . . . .
15.3.2
Stress-Strain Equations . . . . . . . . . . . . . .
15.3.3
The Stiffness Matrix
. . . . . . . . . . . . . .
15.3.4
The Consistent Nodal Force Vector
. . . . . . . . . .
15.3.5
Implementation . . . . . . . . . . . . . . . .
15.3.6
*Consistency Verification
. . . . . . . . . . . . .
15.3.7
*Checking Continuity . . . . . . . . . . . . . .
15.3.8
*Checking Completeness
. . . . . . . . . . . . .
15.3.9
*Tonti Matrix Diagram . . . . . . . . . . . . . .
*Derivation Using Natural Strains and Stresses
. . . . . . . .
15.4.1
*Natural Strains and Stresses . . . . . . . . . . . .
15.4.2
*Covariant Node Displacements . . . . . . . . . . .
15.4.3
*The Natural Stiffness Matrix
. . . . . . . . . . .
*The Veubeke Equilibrium Triangle . . . . . . . . . . . . .
15.5.1
*Kinematic Relations
. . . . . . . . . . . . . .
15.5.2
*Stiffness Matrix . . . . . . . . . . . . . . . .
15.5.3
*Implementation . . . . . . . . . . . . . . . .
15.5.4
*Spurious Kinematic Modes
. . . . . . . . . . . .
*Shear Locking in Turner Triangles
. . . . . . . . . . . .
15.6.1
*The Inplane Bending Test . . . . . . . . . . . . .
15.6.2
*Energy Ratios
. . . . . . . . . . . . . . . .
15.6.3
*Convergence as Mesh is Refined . . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
Solutions to Exercises . . . . . . . . . . . . . . . . . .
152
153
153
153
154
154
155
155
156
157
157
158
158
158
159
159
1510
1511
1511
1512
1512
1512
1512
1513
1514
1514
1514
1515
1515
1516
1517
1518
1518
1520
1520
1521
1522
1527
15.2
BACKGROUND
15.1. Introduction
This Chapter derives element stiffness equations of three-node triangles constructed with linear
displacements for the plane stress problem formulated in Chapter 14. These elements have six
displacement degrees of freedom, which are placed at the connection nodes. There are two main
versions that differ on where the connection nodes are located:
1.
2.
The Veubeke equilibrium triangle has connection nodes located at the side midpoints.
The triangle geometry is defined by the corner locations or geometric nodes in both cases. Of the
two versions, the Turner triangle is by far the most practically important one in solid and structural
mechanics.1 Thus most of the material in this Chapter is devoted to it. It enjoys several important
properties:
(i)
It belongs to both the isoparametric and subparametric element families, which are introduced
in the next Chapter.
(ii) It allows closed form derivations for the stiffness matrix and consistent force vector without
need for numerical integration.
(iii) It cannot be improved by the addition of internal degrees of freedom.
Properties (ii) and (iii) are shared by the Veubeke equilibrium triangle. Since this model is rarely
used in structural applications it is covered only as advanced material in 15.5.
The Turner triangle is not a good performer for structural stress analysis. It is still used in problems
that do not require high accuracy, as well as in non-structural applications such as thermal and
electromagnetic analysis. One reason is that triangular meshes are easily generated over arbitrary
two-dimensional domains using techniques such as Delaunay triangulation.
15.2. Background
15.2.1. Parametric Representation of Functions
The concept of parametric representation of functions is crucial in modern FEM. Together with
multidimensional numerical integration, it is a key enabling tool for developing elements in two
and three space dimensions.2 Without these tools the developer would become lost in an algebraic
maze as element geometry and shape functions get more complicated. The essentials of parametric
representation can be illustrated through a simple example. Consider the following alternative
representations of the unit-circle function, x 2 + y 2 = 1:
(II) x = cos and y = sin .
(15.1)
(I) y = 1 x 2 ,
The direct representation (I) fits the conventional function notation, i.e., y = f (x). Given a value of
x, it returns one or more y. On the other hand, the parametric representation (II) is indirect: both x
1
The triangle was one of the two plane-stress continuum elements presented by Turner, Clough, Martin and Topp in their
1956 paper [786]. This publication is widely regarded as the start of the present FEM. The derivation was not done,
however, with assumed displacements. See Notes and Bibliography at the end of this Chapter.
Numerical integration is not useful for the triangular elements covered here, but essential in the more complicated iso-P
models covered in Chapters 16ff.
153
and y are given in terms of one parameter, the angle . Elimination of through the trigonometric
identity cos2 + sin2 = 1 recovers x 2 + y 2 = 1. But there are situations in which working with
the parametric form throughout the development is more convenient. Continuum finite elements
provide a striking illustration of this point.
15.2.2. Geometry
The geometry of the 3-node triangle shown in
Figure 15.1(a) is specified by the location of its
three corner nodes on the {x, y} plane. Nodes
are labelled 1, 2, 3 while traversing the sides
in counterclockwise fashion. Their location is
defined by their Cartesian coordinates: {xi , yi }
for i = 1, 2, 3.
(a)
(b)
3 (x3 ,y3)
Area A > 0
2 (x2 ,y2)
(15.3)
In the literature these 3 parameters receive an astonishing number of names, as the list collected
in Table 15.1 shows. In the sequel the name triangular coordinates will be used to emphasize the
close association with this particular geometry.
Equations
i = constant
(15.4)
represent a set of straight lines parallel to the side opposite to the i th corner, as depicted in Figure 15.2.
The equations of sides 23, 31 and 12 are 1 = 0, 2 = 0 and 3 = 0, respectively. The
three corners have coordinates (1,0,0), (0,1,0) and (0,0,1). The three midpoints of the sides have
coordinates ( 12 , 12 , 0), (0, 12 , 12 ) and ( 12 , 0, 12 ), the centroid has coordinates ( 13 , 13 , 13 ), and so on. The
coordinates are not independent because their sum is unity:
1 + 2 + 3 = 1.
154
(15.5)
15.2
3
1 = 0
/
/
2 = 1
/
/ /
/
/
1 = 1
3 = 1
2 = 0
BACKGROUND
2
3 = 0
Applicable to
natural coordinates
isoparametric coordinates
shape function coordinates
barycentric coordinates
Mobius coordinates
triangular coordinates
area (also written areal) coordinates
all elements
isoparametric elements
isoparametric elements
simplices (triangles, tetrahedra, ...)
triangles
all triangles
straight-sided triangles
Remark 15.1. In pre-1970 FEM publications, triangular coordinates were often called area coordinates, and
occasionally areal coordinates. This comes from the following interpretation: i = A jk /A, where A jk is the
area subtended by the subtriangle formed by the point P and corners j and k, in which j and k are 3-cyclic
permutations of i. Historically this was the way coordinates were defined in 1960s papers. However this
relation does not carry over to general isoparametric triangles with curved sides and thus it is not used here.
(15.6)
where a0 , a1 and a2 are coefficients to be determined from three conditions. In finite element work
such conditions are often the nodal values taken by f at the corners:
f1, f2, f3.
The expression in triangular coordinates makes direct use of those three values:
1
f1
f (1 , 2 , 3 ) = f 1 1 + f 2 2 + f 3 3 = [ f 1 f 2 f 3 ] 2 = [ 1 2 3 ] f 2 .
3
f3
Formula (15.8) is called a linear interpolant for f .
155
(15.7)
(15.8)
1
x2
y2
1
x3
y3
1
2
3
.
(15.9)
The first equation says that the sum of the three coordinates is one. The next two express x and
y linearly as homogeneous forms in the triangular coordinates. These are obtained by applying
the linear interpolant (15.8) to the Cartesian coordinates: x = x1 1 + x2 2 + x3 3 and y =
y1 1 + y2 2 + y3 3 . Assuming A = 0, inversion of (15.9) yields
1
2
3
1
1 2A23
2A31
x =
2A
2A12
y
1
x .
y
(15.10)
Here x jk = x j xk , y jk = y j yk , A is the triangle area given by (15.2) and A jk denotes the area
subtended by corners j, k and the origin of the xy system. If this origin is taken at the centroid of
the triangle, A23 = A31 = A12 = A/3.
1
=
2A
x2 y3 x3 y2
x3 y1 x1 y3
x1 y2 x2 y1
y2 y3
y3 y1
y1 y2
x3 x2
x1 x3
x2 x1
y23
y31
y12
x32
x13
x21
i
= y jk ,
x
2A
i
= xk j .
y
(15.12)
In (15.12) j and k denote the 3-cyclic permutations of i. For example, if i = 2, then j = 3 and
k = 1. The derivatives of a function f (1 , 2 , 3 ) with respect to x or y follow immediately from
(15.12) and application of the chain rule:
1
f
f
=
y +
x
2A 1 23
1
f
f
x +
=
y
2A 1 32
f
y +
2 31
f
x +
2 13
156
f
y
3 12
f
x
3 21
(15.13)
15.2 BACKGROUND
(a)
(b)
(c)
1
2
RC
OC
y23
y31
x32
x13
f
1
y12 f
x21
2
f
3
(15.14)
With these mathematical ingredients in place we are now in a position to handle the derivation of
straight-sided triangular elements, and in particular the Turner and Veubeke triangles.
15.2.7. *Homogeneous Polynomials in Triangular Coordinates
Because 1 , 2 and 3 are not independent, polynomial functions in those variables are not unique. For example
3 21 + 2 33 and 1 + 42 are identical, since they differ by 3 3(1 + 2 + 3 )=0. To achieve uniqueness
it is necessary to write the function as a homogeneous polynomial, as in the second form of this example.
To reduce the general linear polynomial c000 + c100 1 + c010 2 + c001 3 to homogeneous form, subtract c000 (1
1 2 3 ), which is zero, to get P1 = (c100 c000 )1 + (c010 c000 )2 + (c001 c000 )3 .
To reduce the general quadratic polynomial c000 +c100 1 +c010 2 +c001 3 +c200 12 +c020 22 +c002 32 +c110 1 2 +
c011 2 3 + c101 3 1 to homogeneous form, subtract (c000 + c100 1 + c010 2 + c001 3 )(1 1 2 3 ).
And so on. All polynomial expressions used in this book for triangles are expressed in homogeneous form.
15.2.8. *Interesting Points and Lines
Some distinguished lines and points of a straight-sided triangle are briefly described here for use in other
developments as well as in Exercises. The triangle medians are three lines that join the corners to the
midpoints of the opposite sides, as pictured in Figure 15.3(a). The midpoint opposite corner i is labeled Mi .
The medians 1M1 , 2M2 and 3M3 have equations 2 = 3 , 3 = 1 and 1 = 2 , respectively, in triangular
coordinates. They intersect at the centroid C of coordinates { 13 , 13 , 13 }. Other names for the centroid are
barycenter and center of gravity. If you make a real triangle out of cardboard, you can balance the triangle at
this point. It can be shown that the centroid trisects the medians, that is to say, the distance from a corner to
the centroid is twice the distance from the centroid to the opposite side of the triangle.
The altitudes are three lines that connect each corner with their projections onto the opposing sides, as
depicted in Figure 15.3(b). The projection of corner i is identified Hi , so the altitudes are 1H1 , 2H2 and
3H3 . Locations Hi are called altitude feets. The altitudes intersect at the triangle orthocenter H . The lengths
of those segments are the triangle heights. The triangular coordinates of Hi and H , as well as the altitude
equations, are worked out in an Exercise.
157
Another interesting point is the center OC of the circumscribed circle, or circumcircle. This is the unique
circle that passes through the three corners, as shown in Figure 15.3(c). It can be geometrically constructed by
drawing the normal to each side at the midpoints. Those three lines, called the perpendicular side bisectors,
intersect at OC . A famous theorem by Euler asserts that the centroid, the orthocenter and the circumcircle
center fall on a straight line, called the Euler line. Furthermore, C lies between OC and H , and the distance
OC H is three times the distance H C.
u y = u y1 1 + u y2 2 + u y3 3 .
u x1
u
y1
ux
0 2 0 3 0 u x2
= 1
= N ue ,
uy
0 1 0 2 0 3 u y2
u x3
u y3
(15.16)
where N is the matrix of shape functions.
P(1 , 2 , 3 )
u y3
3
u x by linear
u y interpolation
ux3
uy
P
uy1
1
(15.15)
ux
uy2
ux2
2
ux1
Figure 15.4. Displacement
interpolation over triangle.
u x1
u
y23 0 y31 0 y12 0 y1
1
u
(15.17)
e = D N ue =
0 x32 0 x13 0 x21 x2 = B ue ,
u y2
2A x
y
x
y
x
y
32
23
13
31
21
12
u x3
u y3
in which D denotes the symbolic strain-to-displacement differentiation operator given in (14.6),
and B is the strain-displacement matrix. Note that the strains are constant over the element. This is
the origin of the name constant strain triangle (CST) given it in many finite element publications.
158
15.3
where is the triangle domain, and h the plate thickness that appears in the plane stress problem.
Since B and E are constant, they can be taken out of the integral:
e
T
h d
(15.20)
K = B EB
e
If h is uniform over the element the remaining integral in (15.20) is simply h A, and we obtain the
closed form
y23 0 x32
0 x32 y23
y23 0 y31 0 y12 0
E 11 E 12 E 13
h
y
0
x
31
13
Ke = A h B T E B =
0 x32 0 x13 0 x21 .
E E E
4A 0 x13 y31 E 12 E 22 E 23
x32 y23 x13 y31 x21 y12
13
23
33
y12 0 x21
0 x21 y12
(15.21)
Exercise 15.1 deals with the case of a linearly varying plate thickness.
15.3.4. The Consistent Nodal Force Vector
For simplicity we consider here only internal body forces3 defined by the vector field
bx
b=
by
(15.22)
which is specified per unit of volume. The consistent nodal force vector fe is given by the general
formula (14.23) of the previous Chapter:
1 0
0 1
h NT b d =
h 2
(15.23)
fe =
b d.
0 2
e
e
3 0
0 3
3
For consistent force computations corresponding to distributed boundary loads over a side, see Exercise 15.4.
159
Trig3TurnerMembraneStiffness[ncoor_,Emat_,h_,numer_]:=Module[{
x1,x2,x3,y1,y2,y3,x21,x32,x13,y12,y23,y31,A,Be,Ke},
{{x1,y1},{x2,y2},{x3,y3}}=ncoor;
A=Simplify[(x2*y3-x3*y2+(x3*y1-x1*y3)+(x1*y2-x2*y1))/2];
{x21,x32,x13,y12,y23,y31}={x2-x1,x3-x2,x1-x3,y1-y2,y2-y3,y3-y1};
Be={{y23,0,y31,0,y12,0},{0,x32,0,x13,0,x21},
{x32,y23,x13,y31,x21,y12}}/(2*A);
If [numer, Be=N[Be]]; Ke=A*h*Transpose[Be].Emat.Be;
Return[Ke]];
Figure 15.5. Implementation of Turner triangle stiffness matrix calculation as a Mathematica module.
The simplest case is when the body force components (15.22) as well as the thickness h are constant
over the element. Then we need the integrals
1 d =
2 d =
3 d = 13 A
(15.24)
e
Ah
[ bx
3
by
bx
by
bx
b y ]T .
(15.25)
This agrees with the simple element-by-element force-lumping procedure, which assigns one third
of the total force along the {x, y} directions: Ahbx and Ahb y , to each corner.
Remark 15.2. The integrals (15.24) are particular cases of the general integration formula of monomials in
triangular coordinates:
1
2A
j
1i 2 3k d =
i! j! k!
,
(i + j + k + 2)!
i 0, j 0, k 0.
(15.26)
which can be derived through the Beta function. Here i, j, k are integer exponents. This formula only holds
for triangles with straight sides, and thus does not apply for higher order elements with curved sides. Formulas
(15.24) are obtained by setting exponents i = 1, j = k = 0 in (15.26), and permuting {i, j, k} cyclically.
15.3.5. Implementation
The implementation of the Turner triangle in any programming language is very simple. A Mathematica module that returns Ke is shown in Figure 15.5. The module needs only 8 lines of code. It
is invoked as
Ke=Trig3TurnerMembraneStiffness[ncoor,Emat,h,numer];
(15.27)
Element node coordinates, arranged as a list: { { x1,y1 },{ x2,y2 },{ x3,y3 } }.
Emat
Ke =
11
5
10
2
1
3
5
11
2
10
7
21
10
2
44
20
34
18
2
10
20
44
22
54
1
7
34
22
35
15
3
21
18
54
15
75
2
1.5
1
0.5
0.5
1.5
2.5
Figure 15.6. Test statements to exercise the module of Figure 15.5, and outputs.
numer
This module is exercised by the statements listed at the top of Figure 15.6, which form a triangle
with corner coordinates { { 0,0 },{ 3,1 },{ 2,2 } }, isotropic material matrix with E 11 = E 22 = 64,
E 12 = 16, E 33 = 24, others zero, (that is, E = 60 and = 14 ) and unit thickness. The results are
shown at the bottom of Figure 15.6. The computation of stiffness matrix eigenvalues is always a
good programming test, since 3 eigenvalues must be exactly zero and the other 3 real and positive,
as explained in Chapter 19. The last test statement draws the triangle (this plot was moved to the
right of the numeric output to save space.)
15.3.6. *Consistency Verification
It remains to check whether the interpolation (15.15) for element displacements meets the completeness and
continuity criteria studied in Chapter 19 for finite element trial functions. Such consistency conditions are
sufficient to insure convergence toward the exact solution of the mathematical model as the mesh is refined.
The variational index for the plane stress problem is m = 1. According to the rules stated in 19.3, the trial
functions should be 1-complete, C 0 continuous, and C 1 piecewise differentiable.
15.3.7. *Checking Continuity
Along any triangle side, the variation of u x and u y is linear and uniquely determined by the value at the nodes
on that side. For example, over side 12 of an individual triangle, which has equation 3 = 0:
u x = u x1 1 + u x2 2 + u x3 3 = u x1 1 + u x2 2 ,
u y = u y1 1 + u y2 2 + u y3 3 = u y1 1 + u y2 2 .
(15.28)
1511
(e1)
1
(e2)
u y = 0 + 1 x + 1 y.
(15.29)
To check this we obtain the nodal values associated with the motion (15.29): u xi = 0 + 1 xi + 2 yi and
u yi = 0 + 1 xi + 2 yi for i = 1, 2, 3. Replace these in (15.16) and see if (15.29) is recovered. Here are the
detailed calculations for component u x :
ux =
i
= 0
u xi i =
i
(0 + 1 xi + 2 yi )i =
i + 1
(xi i ) + 2
(0 i + 1 xi i + 2 yi i )
(15.30)
(yi i ) = 0 + 1 x + 2 y.
Component u y can be similarly verified. Consequently (15.16) satisfies the completeness requirement for
the plane stress problem and in general, for any problem of variational index 1. Finally, a piecewise
linear trial function is obviously C 1 piecewise differentiable and consequently has finite energy. Thus the two
completeness requirements are satisfied.
Stiffness
15.3.9. *Tonti Matrix Diagram
u
f
f = V B TE B u = K u
= Ee,
f = AT = V BT .
Equilibrium
T
f=VB
e=Bu
(15.31)
Kinematic
Constitutive
=Ee
The foregoing derivation of the Turner triangle uses Cartesian strains and stresses, as well as {x, y} displacements.
The only intrinsic quantities are the triangle coordinates.
This advanced section examines the derivation of the
element stiffness matrix through natural strains, natural
stresses and covariant displacements.
Although the procedure does not offer obvious shortcuts
over the previous derivation, it becomes important in
the construction of more complicated high performance
elements. It also helps reading recent literature in assumed
strain elements.
1512
(a)
32 = 1
13= 2
32 = 1
13= 2
2
21= 3
(b)
21= 3
1
(a)
(b)
(c)
d6
d5
L1 = L32
L2 = L13
2
d3
L3 = L21
d4
d1
d2
Figure 15.10. Additional quantities appearing in natural strain and stress calculations:
(a) side lengths, (b) side directions, (c) covariant node displacements.
=
1
2
3
c12
= c22
c32
s12
s22
s32
s1 c1 ex x
s2 c2 e yy = T1
e e.
2e
xy
s3 c3
(15.32)
Here c1 = x32 /L 1 , s1 = y32 /L 1 , c2 = x13 /L 2 , s2 = y13 /L 2 , c3 = x21 /L 3 , and s3 = y21 /L 3 , are sines and
cosines of the side directions with respect to {x, y}, as illustrated in Figure ?(a,b). The inverse of this relation
is
y31 y21 L 21
y12 y32 L 22
y23 y13 L 23
1
1
2
2
2
=
e=
x31 x21 L 1
x12 x32 L 2
x23 x13 L 3
2 = Te .
4A2
3
(y31 x12 + x13 y21 )L 21 (y12 x23 + x21 y32 )L 22 (y23 x31 + x32 y13 )L 23
(15.33)
T
Note that Te is constant over the triangle. From the invariance of the strain energy density e = T it
follows that the stresses transform as = Te and = T1
e . That strain energy density may be expressed as
ex x
e yy
2ex y
U = 12 eT Ee = 12 T En ,
En = TeT ETe .
(15.34)
Here En is a stress-strain matrix that relates natural stresses to natural strains as = En . It may be therefore
called the natural constitutive matrix.
15.4.2. *Covariant Node Displacements
Covariant node displacements di are directed along the side directions, as shown in Figure ?(c), which defines
4
1513
the notation used for them. They are related to the Cartesian node displacements by
d
1
d2 c2
d3 0
d=
d4 = 0
d5
d6
u=
u y2 = 2A
u x3
u y3
0
0
L y
3 31
L 3 x13
0
0
0
L 2 y21
L 2 x12
0
0
0
0
s3
s2
0
0
0
0
0
0
c1
c3
0
0
0
0
L 1 y12
L 1 x21
0
0
0
0
s1
s3
0
0
0
0
0
0
c2
c1
0
0
L 3 y32
L 3 x23
0
0
0
u x1
0 u y1
0
u x2 = Td u.
0 u y2
s2
u x3
s1
u y3
0
0
0
0
L 2 y23
L 2 x32
(15.35)
0
d1
0 d2
0
d3 = T1
d d.
0 d4
L 1 y13
d5
L 1 x31
d6
(15.36)
The natural strains are evidently given by the relations 1 = (d6 d3 )/L 1 , 2 = (d2 d5 )/L 2 and 3 =
(d4 d1 )/L 3 . Collecting these in matrix form:
=
1
2
3
=
d
1
0
0
1/L 3
0
1/L 2
0
1/L 1
0
0
0
0
1/L 3
0
1/L 2
0
d2
1/L 1
d3
= B d.
0
d4
0
(15.37)
d5
d6
En = TeT E Te .
(15.38)
(15.39)
1
B = T1
e BTd .
B = T e B Td ,
15.5.
(15.40)
The Veubeke equilibrium triangle5 differs from the Turner triangle in the degree-of-freedom configuration.
As illustrated in Figure 15.11, those are moved to the midpoints {4, 5, 6} while the corner nodes {1, 2, 3} still
define the geometry of the element. In the FEM terminology introduced in Chapter 6, the geometric nodes
{1, 2, 3} and the connection nodes {4, 5, 6} no longer coincide. The node displacement vector collects the
freedoms shown in Figure 15.11(b):
ue = [ u x4
u y4
u x5
u y5
u x6
u y6 ]T .
(15.41)
The quickest way to formulate the stiffness matrix of this element is to relate 15.41 to the node displacements
of the Turner triangle, renamed for convenience as
ueT = [ u x1
5
u y1
u x2
u y2
u x3
u y3 ]T .
(15.42)
The qualifier equilibrium distinguishes this element from others created by Fraeijs de Veubeke, including the 6-node
plane stress comforming triangle. See Notes and Bibliography for the original derivation from an equilibrium field.
1514
(a)
(b)
3 (x3 ,y3)
5
5 ux5
u y6
2 (x2 ,y2)
(c)
uy5
ux6 uy4
4 ux4
4
1 (x 1 ,y1)
x
Figure 15.11. The Veubeke equilibrium triangle: (a) geometric definition; (b) degreeof-freedom configuration; (c) element patch showing how triangles are connected at the
midpoints.
1 0
u y4
0 1
u x5 1 0 0
=
u y5 2 0 0
x4
u x6
u y6
1
0
1
0
1
0
0 0
1 0
0
1
0
1
0
0
0
0
1
0
1
0
1
u y1 0
u x2 1
=
u y2 0
0 1 0 1 0
u x4
1 0 1 0 1 u y4
0 1 0 1 0
u x5 .
1 0 1 0 1 u y5
u x3
u x6
1 0 1 0 1 0
u y3
u y6
0 1 0 1 0 1
(15.43)
ue , with TV T = T1
.
The
shape
functions
are
TV
0
u x1
0 u y1
0
u x2 ,
1 u y2
u x3
0
u y3
1
x1
N5 = 1 + 2 + 3 ,
N6 = 1 2 + 3 .
(15.44)
Renaming the Turner triangle strain-displacement matrix of (15.17) as BT , the corresponding matrix that
relates e = B ue in the Veubeke equilibrium triangle becomes
B = BT TT V =
1
A
y21
0
x12
0
x12
y21
y32
0
x23
0
x23
y32
y13
0
x31
0
x31
y13
(15.45)
21
h
Ke = A h BT E B =
A
0
y32
y13
0
0
x12
0
x23
0
x31
x12
y21
E 11 E 12 E 13
y21 0 y32 0 y13 0
x23
E 12 E 22 E 23
0 x12 0 x23 0 x31 .
y32
E 13 E 23 E 33
x12 y21 x23 y32 x31 y13
x31
y13
1515
(15.46)
Trig3VeubekeMembraneStiffness[ncoor_,Emat_,h_,numer_]:=Module[{
x1,x2,x3,y1,y2,y3,x12,x23,x31,y21,y32,y13,A,Be,Te,Ke},
{{x1,y1},{x2,y2},{x3,y3}}=ncoor;
A=Simplify[(x2*y3-x3*y2+(x3*y1-x1*y3)+(x1*y2-x2*y1))/2];
{x12,x23,x31,y21,y32,y13}={x1-x2,x2-x3,x3-x1,y2-y1,y3-y2,y1-y3};
Be={{y21,0,y32,0,y13,0}, {0,x12,0,x23,0,x31},
{x12,y21,x23,y32,x31,y13}}/A;
If [numer,Be=N[Be]]; Ke=A*h*Transpose[Be].Emat.Be;
Return[Ke]];
Figure 15.12. Implementation of Veubeke equilibrium triangle stiffness matrix as a Mathematica module.
15.5.3. *Implementation
The implementation of the Veubeke equilibrium triangle as a Mathematica module that returns Ke is shown
in Figure 15.12. It needs only 8 lines of code. It is invoked as
Ke=Trig3VeubekeMembraneStiffness[ncoor,Emat,h,numer];
(15.47)
The arguments have the same meaning as those of the module Trig3TurnerMembraneStiffness described
in 15.3.6.
ncoor={{0,0},{3,1},{2,2}}; Emat=8*{{8,2,0},{2,8,0},{0,0,3}};
Ke=Trig3VeubekeMembraneStiffness[ncoor,Emat,1,False];
Print["Ke=",Ke//MatrixForm];
Print["eigs of Ke=",Chop[Eigenvalues[N[Ke]]]];
Ke=
140
60
4
28
136
88
60
300
12
84
72
216
4
12
44
20
40
8
28
84
20
44
8
40
136
72
40
8
176
80
88
216
8
40
80
176
Figure 15.13. Test statements to exercise the module of Figure 15.12, and outputs.
This module is exercised by the statements listed at the top of Figure 15.13, which form a triangle with corner
coordinates { { 0,0 },{ 3,1 },{ 2,2 } }, isotropic material matrix with E 11 = E 22 = 64, E 12 = 16, E 33 = 24,
others zero, and unit thickness. The results are shown at the bottom of Figure 15.13. This is the same triangle
used to test module Trig3TurnerMembraneStiffness in 15.3.6. Note that the element is rank sufficient.
15.5.4. *Spurious Kinematic Modes
Although an individual Veubeke equilibrium triangle is rank sufficient, assemblies are prone to the appearance
of spurious mechanisms. That is, kinematic modes that produce no strain energy although they are not rigid
body modes. These will be illustrated by studying the three macroelements pictured in Figure 15.14. For
simplicity the macroelements are of rectangular shape, but the conclusions apply to more general geometries.
Type I macroelement is built with two triangles. It has four geometric nodes: 14, five connection nodes: 59,
and 10 degrees of freedom. The eigenvalue analysis of the assembled stiffness K is given as an Exercise. It
shows that K has 4 zero eigenvalues. Since there are 3 rigid body modes in 2D, one is spurious. It is easily
1516
Type I
Type II
Type III
Thickness h/2
4
3
12
7
11
9
1
13
10
Spurious mode:
10
9,10
8
1
5
8
Spurious mode:
9
6
shown that the spurious mode corresponds to the relative rotation of the two triangles with center node 9 as
pivot, as pictured to the right of the macroelement.
Type II macroelement is built with four crisscrossed triangles of thickness h/2 as illustrated in the Figure. It
has four geometric nodes: 14, six connection nodes: 510, and 12 degrees of freedom. (Note that although
9 and 10 occupy the same location for this geometry, they should be considered as two separate nodes.) The
eigenvalue analysis of the assembled stiffness K is given as an Exercise. It shows that K has 3 zero eigenvalues
and therefore this macroelement has no spurious modes.
Type III macroelement is of Union-Jack type and is built with 4 triangles. It has five geometric nodes: 15,
eight connection nodes: 613, and 16 degrees of freedom. The eigenvalue analysis of the assembled stiffness
K is given as an Exercise. It shows that K has 4 zero eigenvalues and consequently one spurious mode.
This correspond to the triangles rotating about the midpoints 69 as pivots, as pictured to the right of the
macroelement.
These examples show that this element, when used in a stiffness code, is prone to spurious pivot modes where
sides of adjacent triangles rotate relatively from each other about the midpoint connector. This is a consequence
of the element being nonconforming: full determination of linearly varying side displacements requires two
nodes over that side, and there is only one. Even if a rank sufficiently macroelement mesh unit such as Type II
of Figure 15.14 can be constructed, there is no guarantee that spurious pivot modes will not occur when those
mesh units are connected. For this reason this element is rarely used in DSM-based structural programs, but
acquires importance in applications where flux conservation is important.
15.6.
A well known deficiency of the 3-node Turner triangle is inability to follow rapidly varying stress fields. This
is understandable since stresses within the element, for uniform material properties, are constant. But its 1D
counterpart: the 2-node bar element, is nodally exact for displacements under some mild assumptions stated
in Chapter 11, and correctly solves loaded-at-joints trusses with one element per member. On the other hand,
the triangle can be arbitrarily way off under unhappy combinations of loads, geometry and meshing.
1517
b = a/
1
x
4
Type I: Crisscrossed
1
Thickness h/2
34
a
3
+
2 1
Cross
section
2
4
;
;
y
What happens in going from 1D to 2D? New effects emerge, notably shear energy and inplane bending. These
two can combine to produce shear locking: elongated triangles can become extraordinarily stiff under inplane
bending because of spurious shear energy.6 The bad news for engineers is that wrong answers caused by
locking are non-conservative: deflections and stresses can be so grossly underestimated that safety margins
are overwhelmed.
To characterize shear locking quantitatively it is convenient to use macroelements in which triangles are
combined to form a 4-node rectangle. This simplifies repetition to form regular meshes. The rectangle
response under in-plane bending is compared to that of a Bernoulli-Euler beam segment. It is well known that
the latter is exact under constant moment. The response ratio of macroelement to beam is a good measure of
triangle performance under bending. Such benchmarks are technically called higher order patch tests. Test
results can be summarized by one number: the energy ratio, which gives a scalar measure of relative stiffness.
15.6.1. *The Inplane Bending Test
The test is defined in Figure 15.15. A Bernoulli-Euler plane beam of thin rectangular cross-section of height
b and thickness h is bent under applied end moments M. The beam is fabricated of isotropic material with
elastic modulus E and Poissons ratio . Except for possible end effects the exact solution of the beam problem
(from both the theory-of-elasticity and beam-theory standpoints) is a constant bending moment M(x) = M
along the span. The associated curvature is = M/(E Izz ) = 12M/(Eb3 h). The exact energy taken by a
beam segment of length a is Ubeam = 12 Ma = 6M 2 a/(Eb3 h) = 241 Eb3 h 2 a = 241 Eb3 ha2 /a. In the latter
a = a is the relative rotation of two cross sections separated by a.
To study the bending performance of triangles the beam is modeled with one layer of identical rectangular
macroelements dimensioned a b and made up of triangles, as illustrated in Figure 15.15. The rectangle aspect
ratio is = a/b. All rectangles undergo the same deformations and thus it is enough to study a individual
macroelement 1-2-3-4. Two types are considered here:
Crisscrossed (CC). Formed by overlaying triangles 1-2-4, 3-4-2, 2-3-1 and 4-1-2, each with thickness h/2.
Using 4 triangles instead of 2 makes the macroelement geometrically and physically symmetric since 2 triangles
are attached to each corner.
Union-Jack (UJ). Formed by placing a fifth node at the center and dividing the rectangle into 4 triangles: 1-2-5,
2-3-5, 3-4-5, 4-1-5. By construction this element is also geometrically and physically symmetric.
6
The deterioration can be even more pronounced for its spatial counterpart: the 4-node tetrahedron element, because shear
effects are even more important in three dimensions.
1518
a/2
P 4
b = a/
P
a/2
3 P
2
a
Although triangles cannot copy curvatures pointwise,7 macroelement edges can rotate since constituent triangles can expand or contract. Because of symmetries, the rotations of sides 1-2 and 3-4 are a /2 and
a /2, as illustrated in Figure 15.16. The corresponding corner x displacements are ba /4 whereas the y
displacements are zero. Assemble these into a node displacement 8-vector u M .
u M = 14 ba [ 1
0 ]T
(15.48)
The internal energy taken by a macroelement of 8 8 stiffness K M under (15.48) is U M = 12 uTM K M u M , which
can be expressed as a function of E, , a, b, h and a .8
ClearAll[a,b,Em,h, ];
b=a/ ; Iz=h*b^3/12; Ubeam=Simplify[(1/2)*Em*Iz*a^2/a];
Emat=Em*{{1,0,0},{0,1,0},{0,0,1/2}};
nc={{-a,-b},{a,-b},{a,b},{-a,b},{0,0}}/2;
enCC={{1,2,4},{3,4,2},{2,3,1},{4,1,3}};
enUJ={{1,2,5},{2,3,5},{3,4,5},{4,1,5}}; r={0,0};
For [m=1,m<=2,m++, mtype={"CC","UJ"}[[m]];
nF={8,10}[[m]]; K=Table[0,{nF},{nF}]; f=Table[0,{nF}];
For [e=1,e<=4,e++,
If [mtype=="CC", enl=enCC[[e]], enl=enUJ[[e]]];
{n1,n2,n3}=enl; encoor={nc[[n1]],nc[[n2]],nc[[n3]]};
ht=h; If [mtype=="CC", ht=h/2];
Ke=Trig3TurnerMembraneStiffness[encoor,Emat,ht,False];
eft={2*n1-1,2*n1,2*n2-1,2*n2,2*n3-1,2*n3};
For [i=1,i<=6,i++, For [j=1,j<=6,j++, ii=eft[[i]];
jj=eft[[j]]; K[[ii,jj]]+=Ke[[i,j]] ]];
]; KM=K=Simplify[K];
If [mtype=="UJ",
{K,f}= Simplify[CondenseLastFreedom[K,f]];
{KM,f}=Simplify[CondenseLastFreedom[K,f]]];
Print["KM=",KM//MatrixForm];
uM={1,0,-1,0,1,0,-1,0}*a*b/4;
UM=uM.KM.uM/2; rM=Simplify[UM/Ubeam];
Print["rM=",rM]; r[[m]]=rM;
];
Plot[Evaluate[r],{ ,0,10}];
Figure 15.17. Script to compute energy ratios for the two macroelements of Figure 15.15.
The ratio r M = U M /Ubeam is called the energy ratio. If r M > 1 the macroelement is stiffer than the beam
because it take more energy to bend it to conform to the same edge rotations, and the 2D model is said to be
overstiff. Results for zero Poissons ratio, computed with the script of Figure 15.17, are
3
rCC = 3 + 2 ,
2
rU J =
3(1 + 2 )2
.
2 + 4 2
The load P could be recovered via K M u M , but this value is not needed to compute energy ratios.
1519
(15.49)
If for example = a/b = 10, which is an elongated rectangular shape of 10:1 aspect ratio, rCC = 153
and the crisscrossed macroelement is 153 times stiffer than the beam. For the Union-Jack configuration
rU J = 10201/134 = 76.13; about twice better but still way overstiff. If = 1, rCC = 4.5 and rU J = 2:
overstiff but not dramatically so. The effect of a nonzero Poissons ratio is studied in Exercise 15.10.
15.6.3. *Convergence as Mesh is Refined
Note that if = a/b 0, rCC 3 and rU J 1.5. So even if the beam of Figure 15.15 is divided into
an infinite number of macroelements along x the solution will not converge. It is necessary to subdivide also
along the height. If 2n (n 1) identical macroelement layers are placed along the beam height while is
kept fixed, the energy ratio becomes
r (2n) =
22n 1 + r (1)
r (1) 1
=
1
+
,
22n
22n
(15.50)
where r (1) is the ratio (15.49) for one layer. If r (1) = 1, r (2n) = 1 for all n 1, so bending exactness is
maintained as expected. If n = 1 (two layers), r (2) = (3+r (1) )/4 and if n = 2 (four layers), r (4) = (7+r (1) )/8.
If n , r (2n) 1, but convergence can be slow. For example, suppose that = 1 (unit aspect ratio a = b)
and that r (1) = rCC = 4.5. To get within 1% of the exact solution, 1 + 3.5/22n < 1.01. This is satisfed if
n 5, meaning 10 layers of elements along y. If the beam span is 10 times the height, 1000 macroelements
or 4000 triangles are needed for this simple problem, which is exactly solvable by one beam element.
The stress accuracy of triangles is examined in Chapter 28.
Notes and Bibliography
As a plane stress structural element, the Turner triangle was first developed in the 1956 paper by Turner
et. al. [786]. The target application was modeling of delta wing skin panels. Arbitrary quadrilaterals were
formed by assembling triangles as macroelements. Because of its geometric flexibility, the element was soon
adopted in aircraft structural analysis codes in the late 1950s. It moved to Civil Engineering applications
through the research and teaching at Berkeley of Ray Clough, who gave the method its name in [138].
The derivation method of [786] would look unfamiliar to present FEM practicioners used to the displacement
method. It was based on assumed stress modes. More precisely: the element, referred to a local Cartesian
system {x, y}, is put under three constant stress states: x x , yy and x y , collected in array . Lumping the
stress field to the nodes gives the node forces: f = L. The strain field computed from stresses is e = E1 .
This is integrated to get a deformation-displacement field, to which 3 rigid-body modes are added as integration
constants. Evaluating at the nodes produces e = Au, and the stiffness matrix follows on eliminating and
e: K = LEA. For constant thickness and material properties it happens that L = V AT and so K = V AT EA
happily turned out to be symmetric. This A is the B of (15.17) times 2A, so in the end the stiffness matrix (for
constant plate thickness) turns out to be the same as (15.21).
The derivation from assumed displacements evolved later. It is not clear who worked it out first, although
it is mentioned in [138,830]. The equivalence of the two forms, through energy principles, had been noted
by Gallagher [297]. Early displacement derivations typically started from linear polynomials in Cartesian
coordinates. For example Przemieniecki [619] begins with
u x = c1 x + c2 y + c3 ,
u y = c4 x + c5 y + c6 .
(15.51)
Here the ci play the role of generalized coordinates, which have to be eventually eliminated in favor of node
displacements. The same approach is used by Clough in a widely disseminated 1965 article [140]. Even
for this simple element the approach is unnecessarily complicated and leads to long hand computations. The
elegant derivation in triangular coordinates was popularized by Argyris [28].
1520
15.
The idea of using piecewise linear interpolation over a triangular mesh actually precedes [786] by 13 years.
As noted in Chapter 1, it appears in an article by Courant [156], where it is applied to a Poissons equation
modeling St. Venants torsion. The idea did not influence early work in FEM, however, since as noted above
the derivation in [786] was not based on displacement interpolation.
The Veubeke equilibrium triangle appears in [283, p. 170] and is further elaborated in [284, p. 176]. It
is constructed there as an equilibrium element, that is, the stress field inside the triangle is assumed to be
x x = 1 , yy = 2 and x y = 3 , where {1 , 2 , 3 } are stress parameters. (A field of constant stresses
satisfies identically the plane-stress differential equilibrium equations for zero body forces.) Stress parameters
can be uniquely expressed in terms of generalized edge loads, which turn out to be virtual-work conjugate to
midside displacements.9 The direct displacement derivation given here as a Turner triangle mapping is new.
As previously noted, this element is rarely used in structural mechanics because of the danger of spurious
kinematic modes discussed in 15.5.4. It has importance, however, in some non-structural applications.
The completeness check worked out in 15.4.2 is a specialization case of a general proof developed by Irons
in the mid 1960s (see [411, 3.9] and references therein) for general isoparametric elements. The check works
because the Turner triangle is isoparametric.
What are here called triangular coordinates were introduced by Mobius in his 1827 book [512].10 They are
often called barycentric coordinates on account on the interpretation discussed in [158]. Other names are
listed in Table 15.1. Triangles possess many fascinating geometric properties studied even before Euclid. An
exhaustive development can be found, in the form of solved exercises, in [711].
It is unclear when the monomial integration formula (15.26) was first derived. As an expression for integrands
expressed in triangular coordinates it was first stated in [211].
The natural strain derivation of 15.4 is patterned after that developed for the so-called ANDES (Assumed
Natural Deviatoric Strain) elements [509]. For the Turner triangle it provides nothing new aside of fancy
terminology. Energy ratios of the form used in 15.6 were introduced in [89] as a way to tune up the stiffness
of Free-Formulation elements.
References
Referenced items have been moved to Appendix R.
10
The initial step of assuming stresses exactly mimics that of [786] a decade earlier. What is fundamentally different in
Fraeijs de Veubekes derivation is the use of energy theorems (in this case, PVW) to pass from generalized edge loads to
mean edge displacements. The approach is characteristic of FEM Generation 2.
He is better remembered for the Mobius strip or Mobius band, the first one-sided 3D surface in mathematics.
1521
(E15.1)
where h 1 , h 2 and h 3 are the thicknesses at the corner nodes. Show that the element stiffness matrix is still
given by (15.21) but with h replaced by the mean thickness h m = (h 1 + h 2 + h 3 )/3. Hint: use (15.20) and
(15.26).
EXERCISE 15.2 [A:20] The exact integrals of triangle-coordinate monomials over a straight-sided triangle
are given by the formula (15.26), where A denotes the area of the triangle, and i, j and k are nonnegative
integers. Tabulate the right-hand side for combinations of exponents i, j and k such that i + j + k 3,
beginning with i = j = k = 0. Remember that 0! = 1. (Labor-saving hint: dont bother repeating exponent
permutations; for example i = 2, j = 1, k = 0 and i = 1, j = 2, k = 0 are permutations of the same thing.
Hence one needs to tabulate only cases in which i j k).
EXERCISE 15.3 [A/C:20] Compute the consistent node force vector fe for body loads over a Turner triangle,
if the element thickness varies as per (E15.1), bx = 0, and b y = b y1 1 + b y2 2 + b y3 3 . Check that for
h 1 = h 2 = h 3 = h and b y1 = b y2 = b y3 = b y you recover (15.25). For area integrals use (15.26). Partial
result: f y1 = (A/60)[b y1 (6h 1 + 2h 2 + 2h 3 ) + b y2 (2h 1 + 2h 2 + h 3 ) + b y3 (2h 1 + h 2 + 2h 3 )].
EXERCISE 15.4 [A/C:20]
qy2
2
(E15.2)
q y = q y1 1 + q y2 2 = q y1 (1 2 ) + q y2 2 .
W e = (ue )T fe =
q x1
q x = q x1 (1 2 ) + q x2 2
x
Figure E15.1. Line force on triangle side 12
for Exercise 15.4.
uT q d e =
e
qx2
y qy1
q y = q y1 (1 2 ) + q y2 2
uT q L 21 d2 ,
(E15.3)
where L 21 is the length of side 12. Replace u x (2 ) = u x1 (1 2 ) + u x2 2 ; likewise for u y , qx and q y , integrate
and identify with the inner product shown as the second term in (E15.3). Partial result: f x1 = L 21 (2qx1 +qx2 )/6,
f x3 = f y3 = 0.
Note. The following Mathematica script solves this Exercise. If you decide to use it, explain the logic.
ClearAll[ux1,uy1,ux2,uy2,ux3,uy3,z2,L12];
ux=ux1*(1-z2)+ux2*z2; uy=uy1*(1-z2)+uy2*z2;
qx=qx1*(1-z2)+qx2*z2; qy=qy1*(1-z2)+qy2*z2;
We=Simplify[L12*Integrate[qx*ux+qy*uy,{z2,0,1}]];
fe=Table[Coefficient[We,{ux1,uy1,ux2,uy2,ux3,uy3}[[i]]],{i,1,6}];
fe=Simplify[fe]; Print["fe=",fe];
1522
Exercises
EXERCISE 15.5 [C+N:15] Compute the entries of Ke for the following plane stress triangle:
x1 = 0, y1 = 0, x2 = 3, y2 = 1, x3 = 2, y3 = 2,
E=
100
25
0
25
100
0
0
0
50
(E15.4)
h = 1.
This may be done by hand (it is a good exercise in matrix multiplication) or (more quickly) using the script of
Figure 15.5. Partial result: K 11 = 18.75, K 66 = 118.75.
EXERCISE 15.6 [A+C:15] Show that the sum of the rows (and columns) 1, 3 and 5 of Ke as well as the sum
of rows (and columns) 2, 4 and 6 must vanish, and explain why. Check it with the foregoing script.
EXERCISE 15.7 [A:10]. Consider two triangles T and T , both with positive area. The corner coordinates
1
x
y
=
1
x1
y1
1
x2
y2
1
x3
y3
1
x1
y1
1
x2
y2
1
x3
y3
1
1
x
y
(E15.5)
3
(a)
h3
P1
P2
hP2
hP1
P(P1,P2 ,P3 )
hP3
P3
L 21
EXERCISE 15.9 [A:10]. Express the distances from the triangle centroid to the 3 sides in term of the triangle
area and the side lengths. Answer: 23 A/L 21 , 23 A/L 32 and 23 A/L 13 , where A is the area of the triangle assumed
positive and L ji is the length of side that joins corners i and j, cf. Figure E15.2, Hint: the area of each
subtriangle subtended by the centroid and two corners is 13 A.
EXERCISE 15.10 [A:20] Find the triangular coordinates of the altitude feet points H1 , H2 and H3 pictured
in Figure 15.3. Once these are obtained, find the equations of the altitudes in triangular coordinates, and the
coordinates of the orthocenter H . Answer for H3 : 1 = 12 + (L 213 L 232 )/(2L 221 ), where L ji is the length of
side that joins corners i and j; cf. Figure E15.2.
EXERCISE 15.11 [C+D:20] Let p(1 , 2 , 3 ) represent a polynomial expression in the natural coordinates.
The integral
p(1 , 2 , 3 ) d
e
1523
(E15.6)
over a straight-sided triangle can be computed symbolically by the following Mathematica module:
IntegrateOverTriangle[expr_,tcoord_,A_,max_]:=Module [{p,i,j,k,z1,z2,z3,c,s=0},
p=Expand[expr]; {z1,z2,z3}=tcoord;
For [i=0,i<=max,i++, For [j=0,j<=max,j++, For [k=0,k<=max,k++,
c=Coefficient[Coefficient[Coefficient[p,z1,i],z2,j],z3,k];
s+=2*c*(i!*j!*k!)/((i+j+k+2)!);
]]];
Return[Simplify[A*s]] ];
This is referenced as int=IntegrateOverTriangle[p,{ z1,z2,z3 },A,max]. Here p is the polynomial to
be integrated, z1, z2 and z3 denote the symbols used for the triangular coordinates, A is the triangle area and max
the highest exponent appearing in a triangular coordinate. The module name returns the integral. For example,
if p=16+5*b*z2^2+z1^3+z2*z3*(z2+z3) the call int=IntegrateOverTriangle[p,{ z1,z2,z3 },A,3]
returns int=A*(97+5*b)/6. Explain how the module works.
EXERCISE 15.12 [C+D:25] Explain the logic of the script listed in Figure 15.17. Then extend it to account
for isotropic material with arbitrary Poissons ratio . Obtain the macroelement energy ratios as functions of
and . Discuss whether the effect of a nonzero makes much of a difference if >> 1.
EXERCISE 15.13 [A/C:25] Verify the conclusions of 15.5.4 as regards rank sufficiency or deficiency of the
three Veubeke macroelement assemblies pictured in Figure 15.14. Carry out tests with rectangular macroelements dimensioned a b, constant thickness h, elastic modulus E and Poissons ratio 0.
EXERCISE 15.14 [C+D:25] To find whether shear is the guilty party in the poor performance of elongated
triangles (as alledged in 15.6) run the script of Figure 15.17 with a zero shear modulus. This can be done by
setting Emat=Em*{ { 1,0,0 },{ 0,1,0 },{ 0,0,0 } } in the third line. Discuss the result. Can Em be subsequently
reduced to a smaller (fictitious) value so that r 1 for all aspect ratios ? Is this practical?
EXERCISE 15.15 [C:15] The two Mathematica modules listed in Figure E15.3 homogenize linear and
1524
Exercises
EXERCISE 15.16 [C+D:25] Access the file Trig3PlaneStress.nb from the course Web site by clicking
on the appropriate link in Chapter 15 Index. This is a Mathematica Notebook that does plane stress FEM
analysis using the 3-node Turner triangle.
Download the Notebook into your directory. Load into Mathematica. Execute the top 7 input cells (which are
actually initialization cells) so the necessary modules are compiled. Each cell is preceded by a short comment
cell which outlines the purpose of the modules it holds. Notes: (1) the plot-module cell may take a while
to run through its tests; be patient; (2) to get rid of unsightly messages and silly beeps about similar names,
initialize each cell twice.
After you are satisfied everything works fine, run the cantilever beam problem, which is defined in the last
input cell.
After you get a feel of how this code operate, study the source. Prepare a hierarchical diagram of the modules,11
beginning with the main program of the last cell. Note which calls what, and briefly explain the purpose of
each module. Return this diagram as answer to the homework. You do not need to talk about the actual run
and results; those will be discussed in Part III.
Hint: a hierarchical diagram for Trig3PlaneStress.nb begins like
Main program in Cell 8 - drives the FEM analysis
GenerateNodes - generates node coordinates of regular mesh
GenerateTriangles - generate element node lists of regular mesh
........
EXERCISE 15.17 [A:10] Consider the Veubeke triangle with 3 midside nodes 4, 5 and 6. Show that three
possible shape functions are 1 23 , 1 21 and 1 22 , respectively. Show that these functions satisfy the
interpolation and completeness conditions, but fail the compatibility condition.
11
A hierarchical diagram is a list of modules and their purposes, with indentation to show dependence, similar to the table
of contents of a book. For example, if module AAAA calls BBBB and CCCC, and BBBB calld DDDD, the hierarchical diagram
may look like:
AAAA - purpose of AAAA
BBBB - purpose of BBBB
DDDD - purpose of DDDD
CCCC - purpose of CCCC
1525
0
2
NT .b =
0
3
0
0
1
0
0
2 b y1 1 + b y2 2 + b y3 3
0
3
to get a 6-vector. Entries 1,3 and 5 are zero. Entry 2 is (b y1 1 + b y2 2 + b y3 3 )1 , and so on for entries 4 and
6. Next, scale this vector by h = h 1 1 + h 2 2 + h 3 3 . Entries 1,3 and 5 remain zero, whereas entries 2, 4 and
6 become cubic polynomials in the i . For example, the second entry is
(h 1 1 + h 2 2 + h 3 3 ) (b y1 1 + b y2 2 + b y3 3 )1
Expand these in term of cubic monomials. For example, the expanded second entry becomes
h 1 b y1 3 + h 1 b y2 12 2 + 7 more terms
Next, collect the i monomials that appear in entries 2, 4 and 6. The 10 possible monomials are 13 , 23 , 33 ,
12 2 , 12 3 , 22 1 , 22 3 , 32 1 , 32 2 , and 1 2 3 . Move all monomial coefficients such as b y1 h 1 , etc., outside the
area integral, and apply the formula (15.26) to the monomial integrals. Three cases:
e
12 2
13
d =
e
d =
e
23
d =
e
12 3
d =
e
1 2 3 =
e
33 d =
A
10
22 1 d = . . . =
A
30
A
60
Finally, collect the common factor A, collect the h factors of the b yi as in (E15.2) and you are done. Well, not
quite. It is instructive to check your results for the special cases h 1 = h 2 = h 3 = h (constant thickness), and
b y1 = b y2 = b y3 = b y (constant body force). If both the thickness h and the body force b y are constant, the
total force on the element, which is then b y h A, should divide equally in 3 for each node. This would agree
with the element-by-element force lumping recipe of Section 7).
If you are good in Mathematica, the result can be obtained in milliseconds, but you need to use the module
listed under Exercise 15.11.
1526
16
The Isoparametric
Representation
161
TABLE OF CONTENTS
Page
16.1.
16.2.
16.3.
16.4.
16.5.
16.6.
16.7.
16.
16.
16.
Introduction
Isoparametric Representation
16.2.1. Motivation
. . . . . . . . . . .
16.2.2. Equalizing Geometry and Displacements . .
General Isoparametric Formulation
Triangular Elements
16.4.1. The Linear Triangle
. . . . . . . .
16.4.2. The Quadratic Triangle
. . . . . . .
16.4.3. *The Cubic Triangle . . . . . . . .
Quadrilateral Elements
16.5.1. Quadrilateral Coordinates and Iso-P Mappings
16.5.2. The Bilinear Quadrilateral . . . . . .
16.5.3. The Biquadratic Quadrilateral
. . . . .
Completeness Properties of Iso-P Elements
16.6.1. *Completeness Analysis . . . . . . .
16.6.2. Completeness Checks . . . . . . . .
16.6.3. *Completeness for Higher Variational Index
Iso-P Elements in One and Three Dimensions
Notes and Bibliography
. . . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . .
162
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
. . . . . . .
. . . . . .
163
163
163
164
165
165
166
166
166
166
166
167
167
168
168
169
1611
1611
1611
1611
1612
16.2
ISOPARAMETRIC REPRESENTATION
16.1. Introduction
The procedure used in Chapter 15to formulate the stiffness equations of the linear triangle can
be formally extended to quadrilateral elements as well as higher order triangles. But one quickly
encounters technical difficulties:
1.
The construction of shape functions that satisfy consistency requirements for higher order
elements with curved boundaries becomes increasingly complicated.
2.
Integrals that appear in the expressions of the element stiffness matrix and consistent nodal
force vector can no longer be evaluated in simple closed form.
These two obstacles can be overcome through the concepts of isoparametric elements and numerical
quadrature, respectively. The combination of these two ideas transformed the field of finite element
methods in the late 1960s. Together they support a good portion of what is presently used in
production finite element programs.
In the present Chapter the concept of isoparametric representation is introduced for two dimensional elements. This representation is illustrated on specific elements. In the next Chapter these
techniques, combined with numerical integration, are applied to quadrilateral elements.
16.2. Isoparametric Representation
16.2.1. Motivation
The linear triangle presented in Chapter 115is an isoparametric element although was not originally
derived as such. The two key equations are (15.10), which defines the triangle geometry, and
(15.16), which defines the primary variable, in this case the displacement field. These equations
are reproduced here for convenience:
1
1 1 1
1
(16.1)
2 ,
x = x1 x2 x3
y1 y2 y3
3
y
u x = u x1 N1e + u x2 N2e + u x3 N3e = u x1 1 + u x2 2 + u x3 3 ,
u y = u y1 N1e + u y2 N2e + u y3 N3e = u y1 1 + u y2 2 + u y3 3 .
The interpretation of these equations is as follows.
The triangular coordinates define the element geometry via (16.1). The displacement expansion (16.2)
is defined by the shape functions, which are in turn
expressed in terms of the triangular coordinates. For
the linear triangle, shape functions and triangular
coordinates coalesce.
These relations are diagrammed in Figure 16.1.
Evidently geometry and displacements are not
treated equally. If we proceed to higher order
triangular elements while keeping straight sides,
only the displacement expansion is refined whereas
the geometry definition remains the same.
163
Triangular
coordinates
1 , 2 , 3
Shape
functions
Ni(e)
(16.2)
Geometry
1, x, y
Displacement
interpolation
ux , uy
Geometry
1, x, y
Shape
functions
Ni(e)
Triangular
coordinates
1 , 2 , 3
Displacement
interpolation
ux , uy
Elements built according to the foregoing prescription are called superparametric, a term that
emphasizes that unequal treatment.
16.2.2. Equalizing Geometry and Displacements
On first inspection (16.2) and (16.1) do not look alike. Their inherent similarity can be displayed,
however, if the second one is rewritten and adjoined to (16.1) to look as follows:
1
1
x x1
y = y1
u x1
ux
uy
u y1
1
x2
y2
u x2
u y2
1
1
x3 1
x1
y3 2 = y1
u y3
3
u x1
u y3
u y1
1
x2
y2
u x2
u y2
1
x3 N1e
y3 N2e .
u y3
N3e
u y3
(16.3)
This form emphasizes that geometry and displacements are given by the same parametric representation, as shown in Figure 16.2.
The key idea is to use the shape functions to represent both the element geometry and the problem
unknowns, which in structural mechanics are displacements. Hence the name isoparametric element
(iso means equal), often abbreviated to iso-P element. This property may be generalized to
arbitrary elements by replacing the term triangular coordinates by the more general one natural
coordinates. This generalization is illustrated in Figure 16.3.
Geometry
1, x, y
Natural
coordinates
Shape
functions
Ni(e)
Displacement
interpolation
ux , uy
164
16.4
TRIANGULAR ELEMENTS
Under this generalization, natural coordinates (triangular coordinates for triangles, quadrilateral
coordinates for quadrilaterals) appear as parameters that define the shape functions. The shape
functions connect the geometry with the displacements.
Remark 16.1. The terms isoparametric and superparametric were introduced by Irons and coworkers at
Swansea in 1966. See Notes and Bibliography at the end of this Chapter. There are also subparametric
elements whose geometry is more refined than the displacement expansion.
Nie ,
i=1
x=
xi Nie ,
y=
i=1
yi Nie .
(16.4)
i=1
Displacement interpolation:
ux =
u xi Nie ,
uy =
i=1
u yi Nie .
(16.5)
i=1
..
y2 . . . yn
y = y1
. .
u x1 u x2 . . . u xn
ux
uy
u y1 u y2 . . . u yn
Ne
(16.6)
The first three scalar equations in (16.6) express the geometry definition, and the last two the
displacement expansion. Note that additional rows may be added to this matrix expression if more
variables are interpolated by the same shape functions. For example, suppose that the thickness h
and a temperature field T are both interpolated from the n node values:
1
1 ... 1
1
e
x2 . . . xn N1e
x x1
N2
y2 . . . yn
y y1
..
(16.7)
u x = u x1 u x2 . . . u xn
. .
u y u y1 u y2 . . . u yn
h
h1 h2 . . . hn
Nne
T
T1 T2 . . . Tn
Note that the column of shape functions does not change.
To illustrate the use of the isoparametric concept, we take a look at specific 2D isoparametric
elements that are commonly used in structural and non-structural applications. These are separated
into triangles and quadrilaterals because different natural coordinates are used.
165
1
1
1
1
x2
x3 N1e
x x1
(16.8)
y2
y3 N2e .
y = y1
ux
u x1 u x2 u x3
N3e
uy
u y1 u y2 u y3
2
1
Figure 16.4. The 3-node linear triangle.
N2e = 2 ,
N3e = 3 .
(16.9)
The linear triangle is the only triangular element that is both superparametric and isoparametric.
16.4.2. The Quadratic Triangle
The six node triangle shown in Figure 16.5 is the next
complete-polynomial member of the isoparametric
triangle family. The isoparametric definition is
e
N1
1
1 1 1 1 1 1 Ne
2
x x1 x2 x3 x4 x5 x6
N3e
y = y1 y2 y3 y4 y5 y6
N4e
ux
u x1 u x2 u x3 u x4 u x5 u x6
N5e
uy
u y1 u y2 u y3 u y4 u y5 u y6
N6e
(16.10)
(a)
(b)
6
2
2
4
4
1
1
Figure 16.5. The 6-node quadratic triangle:
(a) the superparametric version, with straight
sides and midside nodes at midpoints; (b) the
isoparametric version.
(16.11)
The element may have parabolically curved sides defined by the location of the midnodes 4, 5 and 6.
The triangular coordinates for a curved triangle are no longer straight lines, but form a curvilinear
system as can be observed in Figure 16.5(b).
16.4.3. *The Cubic Triangle
The cubic triangle has ten nodes. This shape functions of this element are the subject of an Exercise in Chapter
18. The implementation is studied in Chapter 24.
166
16.5
QUADRILATERAL ELEMENTS
=1
=1
=1
=1
=1
These coordinates vary from 1 on one side to +1 at the other, taking the value zero over the
quadrilateral medians. This particular variation range (instead of taking, say, 0 to 1) was chosen by
Irons and coworkers to facilitate use of the standard Gauss integration formulas. Those formulas
are discussed in the next Chapter.
Remark 16.2. In some FEM derivations it is convenient to visualize the quadrilateral coordinates plotted as
Cartesian coordinates in the {, } plane. This is called the reference plane. All quadrilateral elements in the
reference plane become a square of side 2, called the reference element, which extends over [1, 1],
[1, 1]. The transformation between {, } and {x, y} dictated by the second and third equations of (16.4),
is called the isoparametric mapping. A similar version exists for triangles. An important application of this
mapping is discussed in 16.6; see Figure 16.9 there.
1
1
x x1
y = y1
ux
u x1
uy
u y1
1
x2
y2
u x2
u y2
1
x3
y3
u x3
u y3
1 e
N1
x4
Ne
y4 2e .
N3
u x4
N4e
u y4
(16.12)
4 =1
=1
=1
=1
N2e = 14 (1 + )(1 ),
N3e = 14 (1 + )(1 + ),
N4e = 14 (1 )(1 + ).
(16.13)
These functions vary linearly on quadrilateral coordinate lines = const and = const, but are
not linear polynomials as in the case of the three-node triangle.
167
(a)
4
=1 7
6
=1
1
=1 7
4
9
(b)
=1
=1
=1 5
=1
=1 5
Figure 16.8. Two widely used higher order quadrilaterals: (a) the nine-node biquadratic
quadrilateral; (b) the eight-node serendipity quadrilateral.
1
x2
y2
u x2
u y2
1
x3
y3
u x3
u y3
1
x4
y4
u x4
u y4
1
x5
y5
u x5
u y5
1
x6
y6
u x6
u y6
1
x7
y7
u x7
u y7
1
x8
y8
u x8
u y8
N1e
1
N2e
x9
..
y9
. .
u x9
u y9
Ne
(16.14)
This element is often referred to as the Lagrangian quadrilateral in the FEM literature, a term
explained in the Notes and Bibliography. Its shape functions are
N1e = 14 (1 )(1 ) ,
N2e = 14 (1 + )(1 ) ,
N5e = 12 (1 2 )(1 ),
N6e = 12 (1 + )(1 2 ),
These functions vary quadratically along the coordinate lines = const and = const. The shape
function associated with the internal node 9 is called a bubble function because of its geometric
shape, which is pictured in 18.4.2.
Figure 16.8(a) depicts a widely used eight-node variant called the serendipity quadrilateral. (A
name that originated from circumstances surrounding the element discovery.) The internal node is
eliminated by kinematic constraints as worked out in an Exercise of Chapter 18.
16.6. Completeness Properties of Iso-P Elements
Some general conclusions as regards the range of applications of isoparametric elements can be
obtained from a completeness analysis. More specifically, whether the general prescription (16.6)
that combines (16.4) and (16.5) satisfies the completeness criterion of finite element trial expansions.
This is one of the conditions for convergence to the analytical solution. The requirement is treated
generally in Chapter 19, and is stated here in recipe form.
168
16.6
u y = 0 + 1 x + 2 y.
(16.16)
u yi = 0 + 1 xi + 2 yi ,
i = 1, . . . n.
(16.17)
Insert this into the displacement expansion (16.5) to see whether the linear displacement field (16.16) is
recovered. Here are the computations for the displacement component u x :
ux =
(0 + 1 xi + 2 yi ) Nie = 0
i=1
Nie + 1
xi Nie + 2
yi Nie = 0 + 1 x + 2 y. (16.18)
For the last step we have used the geometry definition relations (16.4), reproduced here for convenience:
1=
i=1
Nie ,
x=
xi Nie ,
i=1
y=
yi Nie .
(16.19)
i=1
A similar calculation may be made for u y . It appears that the isoparametric displacement expansion represents
(16.18) for any element, and consequently meets the completeness requirement for variational order m = 1.
The derivation carries without essential change to three dimensions.1
Can you detect a flaw in this conclusion? The fly in the ointment is the last replacement step of (16.18),
which assumes that the geometry relations (16.19) are identically satisfied. Indeed they are for all the example
elements presented in the previous sections. But if the new shape functions are constructed directly by the
methods of Chapter 18, a posteriori checks of those identities are necessary.
(16.20)
This derivation is due to B. M. Irons. See for example [397, p. 75]. The property was known since the mid 1960s and
contributed substantially to the rapid acceptance of iso-P elements.
169
plane
good mapping
(compatible)
(e1)
1
(e1)
(e1)
(e2)
2
(e2)
xy plane
bad mapping
(incompatible)
(e2)
(16.21)
xi Nie (, ),
y=
i=1
yi Nie (, ).
(16.22)
i=1
Given the corner coordinates, {xi , yi } and a point P(x, y) one can try to solve for {, }. This
solution requires nontrivial work because it involves two coupled quadratics, but can be done.
Reinserting into (16.22) simply gives back x and y, and nothing is gained.2
The correct question to pose is: is the correct geometry of the quadrilateral preserved by the
mapping from {, } to {x, y}? In particular, are the sides straight lines? Figure 16.9 illustrate
these questions. Two side-two squares: (e1) and (e2), contiguous in the {, } reference plane, are
mapped to quadrilaterals (e1) and (e2) in the {x, y} physical plane through (16.22). The common
side 1-2 must remain a straight line to preclude interelement gaps or interpenetration.
We are therefore lead to consider geometric compatibility upon mapping. But this is equivalent to the
question of interelement displacement compatibility, which is stipulated as item (C) in 18.1. The
statement the displacement along a side must be uniquely determined by nodal displacements on
that side translates to the coordinates of a side must be uniquely determined by nodal coordinates
on that side. Summarizing:
2
This tautology is actually a blessing, since finding explicit expressions for the natural coordinates in terms of x and y
rapidly becomes impossible for higher order elements. See, for example, the complications that already arise for the
bilinear quadrilateral in 23.3.
1610
16.
Unit-sum condition + interelement compatibility completeness.
References
(16.23)
This subdivision of work significantly reduces the labor involved in element testing.
16.6.3. *Completeness for Higher Variational Index
The completeness conditions for variational index 2 are far more demanding because they involve quadratic
motions. No simple isoparametric configurations satisfy those conditions. Consequently isoparametric formulations have limited importance in the finite element analysis of plate and shell bending.
1611
triangle (16.11) is exactly one regardless of natural coordinates values. Hint: show that the sum is expressable
as 2S12 S1 , where S1 = 1 + 2 + 3 .
EXERCISE 16.3 [A/C:15] Complete the table of shape functions (16.23) of the nine-node biquadratic quadri-
nodes and the midnode are identified as 1, 2 and 3, respectively. The natural coordinates of nodes 1, 2 and 3
are = 1, = 1 and = 0, respectively. The variation of the shape functions N1 ( ), N2 ( ) and N3 ( ) is
sketched in Figure E16.1. These functions must be quadratic polynomials in :
N1e ( ) = a0 + a1 + a2 2 ,
N2e ( ) = b0 + b1 + b2 2 ,
3
=0
1
=1
3
=0
2 1
=1 =1
(E16.1)
N 3e ()
N2 ()
N1 ()
N3e ( ) = c0 + c1 + c2 2 .
2
=1
1
=1
3
=0
2
=1
Figure E16.1. Isoparametric shape functions for 3-node bar element (sketch). Node 3 has been
drawn at the 12 midpoint but it may be moved away from it, as in Exercises E16.5 and E16.6.
Determine the coefficients a0 , through c2 using the node value conditions depicted in Figure E16.1; for example
N1e = 1, 0 and 0 for = 1, 0 and 1 at nodes 1, 3 and 2, respectively. Proceeding this way show that
N1e ( ) = 12 (1 ),
N2e ( ) = 12 (1 + ),
N3e ( ) = 1 2 .
(E16.2)
[A/C:15+10+15+5] A 3-node straight bar element is defined by 3 nodes: 1, 2 and 3, with axial coordinates
x1 , x2 and x3 , respectively, as illustrated in Figure E16.2. The element has axial rigidity E A and length
= x2 x1 . The axial displacement is u(x). The 3 degrees of freedom are the axial node displacements u 1 ,
u 2 and u 3 . The isoparametric definition of the element is
1
x
u
1
x1
u1
1
x2
u2
1
x3
u3
N1e
N2e
N3e
(E16.3)
in which Nie ( ) are the shape functions (E16.2) of the previous Exercise. Node 3 lies between 1 and 2 but is
not necessarily at the midpoint x = 12 . For convenience define
x1 = 0,
x2 = ,
1612
x3 = ( 12 + ),
(E16.4)
Exercises
axial rigidity EA
x, u
3 (=0)
x 3 = /2+
1 (= 1)
x1 = 0
2 (=1)
x2 =
= L (e)
Figure E16.2. The 3-node bar element in its local system.
where 12 < < 12 characterizes the location of node 3 with respect to the element center. If = 0 node 3
is located at the midpoint between 1 and 2. See Figure E16.2.
(a)
From (E16.4) and the second equation of (E16.3) get the Jacobian J = d x/d in terms of , and .
Show that: (i) if 14 < < 14 then J > 0 over the whole element 1 1; (ii) if = 0, J = /2
is constant over the element.
(b)
(c)
K =
E A B B dx =
E A BT B J d.
(E16.5)
Evaluate the rightmost integral for arbitrary but constant E A using the 2-point Gauss quadrature rule
(E13.7). Specialize the result to = 0, for which you should get K 11 = K 22 = 7E A/(3), K 33 =
16E A/(3), K 12 = E A/(3) and K 13 = K 23 = 8E A/(3), with eigenvalues {8E A/, 2E A/, 0}.
Note: use of a CAS is recommended for this item to save time.
(d)
EXERCISE 16.6 [A/C:20] This Exercise is a continuation of the foregoing one, and addresses the question of
why Ke was computed by numerical integration in item (c). Why not use exact integration? The answer is that
the exact stiffness for arbitrary is numerically useless. To see why, try the following script in Mathematica:
1613
=L
=R
load q
x, u
1 (= 1)
x1 = 0
3 (=0)
x 3 = /2+
2 (=1)
x2 =
= L (e)
Figure E16.3. The 3-node bar element under a box axial load q.
EXERCISE 16.7 [A/C:20] Construct the consistent force vector for the 3-node bar element of the foregoing
exercise, if the bar is loaded by a uniform axial force q (given per unit of x length) that extends from = L
through = R , and is zero otherwise. Here 1 L < R 1. See Figure E16.3. Use
f =
e
q NT J d,
(E16.6)
with the J = d x/d found in Exercise 16.5(a) and analytical integration. The answer is quite complicated
and nearly hopeless by hand. Specialize the result to = 0, L = 1 and R = 1.
1614
17
Isoparametric
Quadrilaterals
171
TABLE OF CONTENTS
Page
17.1.
17.2.
17.3.
17.4.
17.5.
17.
17.
17.
Introduction
Partial Derivative Computation
17.2.1. The Jacobian
. . . . . . .
17.2.2. Shape Function Derivatives
. .
17.2.3. Computing the Jacobian Matrix
.
17.2.4. The Strain-Displacement Matrix
17.2.5. *A Shape Function Implementation
Numerical Integration by Gauss Rules
17.3.1. One Dimensional Rules
. . .
17.3.2. Implementation of 1D Rules
. .
17.3.3. Two Dimensional Rules
. . .
17.3.4. Implementation of 2D Gauss Rules
The Stiffness Matrix
*Integration Variants
17.5.1. *Weighted Integration . . . .
17.5.2. *Selective Integration . . . . .
Notes and Bibliography
. . . . . . . . . . . .
References . . . . . . . . . . . .
Exercises . . . . . . . . . . . .
172
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. .
. . .
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. .
. . .
. .
173
173
173
174
174
175
175
176
176
178
178
179
1710
1711
1711
1712
1712
1712
1713
17.2
17.1. Introduction
In this Chapter the isoparametric representation of element geometry and shape functions discussed
in the previous Chapter is used to construct quadrilateral elements for the plane stress problem.
Formulas given in Chapter 14 for the stiffness matrix and consistent load vector of general plane
stress elements are of course applicable to these elements. For a practical implementation, however,
we must go through more specific steps:
1.
2.
3.
The first topic was dealt in the previous Chapter in recipe form, and is systematically covered in
the next one. Assuming the shape functions have been constructed (or readily found in the FEM
literature) the second and third items are combined in an algorithm suitable for programming any
isoparametric quadrilateral. The implementation of the algorithm in the form of element modules
is partly explained in the Exercises of this Chapter, and covered more systematically in Chapter 23.
We shall not deal with isoparametric triangles here to keep the exposition focused. Triangular coordinates, being linked by a constraint, require special handling techniques that would complicate
and confuse the exposition. Chapter 24 discusses isoparametric triangular elements in detail.
17.2. Partial Derivative Computation
Partial derivatives of shape functions with respect to the Cartesian coordinates x and y are required
for the strain and stress calculations. Because shape functions are not directly functions of x and y
but of the natural coordinates and , the determination of Cartesian partial derivatives is not trivial.
The derivative calculation procedure is presented below for the case of an arbitrary isoparametric
quadrilateral element with n nodes.
17.2.1. The Jacobian
In quadrilateral element derivations we will need the Jacobian of two-dimensional transformations
that connect the differentials of {x, y} to those of {, } and vice-versa. Using the chain rule:
x x
d
dx
x y dx
d
T d
T d x
=J
=J
,
=
.
=
y y d
dy
d
d
dy
dy
x y
(17.1)
Here J denotes the Jacobian matrix of (x, y) with respect to (, ), whereas J1 is the Jacobian
matrix of (, ) with respect to (x, y):
x y
1
(, ) x x
(x, y)
J22 J12
J11 J12
1
=
= =
, J =
,
=
J=
x y
J21 J22
(, )
(x, y)
J J21 J11
y y
(17.2)
where J = |J| = det(J) = J11 J22 J12 J21 . In FEM work J and J1 are called simply the Jacobian
and inverse Jacobian, respectively; the fact that it is a matrix being understood. The scalar symbol
173
J is reserved for the determinant of J. In one dimension J and J coalesce. Jacobians play a
crucial role in differential geometry. For the general definition of Jacobian matrix of a differential
transformation, see Appendix D.
Remark 17.1. Observe that the matrices relating the differentials in (17.1) are the transposes of what we
call J and J1 . The reason is that coordinate differentials transform as contravariant quantities: d x =
( x/ ) d + ( x/) d, etc. But Jacobians are arranged as in (17.2) because of earlier use in covariant
transformations: / x = (/ x)(/ ) + (/ x)(/), as in (17.5) below.
The reader is cautioned that notations vary among application areas. As quoted in Appendix D, one author
puts it this way: When one does matrix calculus, one quickly finds that there are two kinds of people in this
world: those who think the gradient is a row vector, and those who think it is a column vector.
Remark 17.2. To show that J and J1 are in fact inverses of each other we form their product:
J1 J =
x x
x + x
x + x
y
y
+
x
x
=
y
+
y
y
x
x
x
y
y
1
x
y = 0
y
0
,
1
(17.3)
where we have taken into account that x = x(, ), y = y(, ) and the fact that x and y are independent
coordinates. This proof would collapse, however, if instead of {, } we had the triangular coordinates
{1 , 2 , 3 } because rectangular matrices have no conventional inverses. This case requires special handling
and is covered in Chapter 24.
Nie
Nie
Nie
=
+
.
y
y
y
(17.4)
x x
N e =
i
Ne
Ne
Nie
i
i
(,
)
x
1
Nie = (x, y) Nie = J Nie .
y
(17.5)
n
xi Nie ,
y=
i=1
n
i=1
174
yi Nie .
(17.6)
i=1
n
Nie
y
yi
=
,
i=1
n
Nie
x
xi
=
,
i=1
n
Nie
y
yi
=
.
i=1
(17.7)
J11 J12
J21 J22
x
=
x
Ne
y
1
= PX =
y
N1e
N2e
N2e
...
...
Nne x1
x2
Nne ...
xn
y1
y2
..
.
.
(17.8)
yn
Given a quadrilateral point of coordinates , we calculate the entries of J using (17.8). The inverse
Jacobian J1 is then obtained by numerically inverting this 2 2 matrix.
Remark 17.3. The symbolic inversion of J for arbitrary , in general leads to extremely complicated
expressions unless the element has a particularly simple geometry, (for example rectangles as in Exercises
17.117.3). This was one of the difficulties that motivated the use of Gaussian numerical quadrature, as
discussed in 17.3 below.
Ne
Nne
N2e
1
0
0
.
.
.
0
x
x
x
ex x
e
e
e
N
e
n
1
2
e
0
...
0
e = e yy =
(17.9)
0
y
y
y u = Bu .
e
e
e
e
e
e
2ex y
N
Nn
N1 N1 N2 N2
. . . yn
y
x
y
x
x
The nonzero entries of B are partials of the shape functions with respect to x and y. The calculation
of those partials is done by computing J via (17.8), inverting and using the chain rule (17.5).
Quad4IsoPShapeFunDer[ncoor_,qcoor_]:= Module[
{Nf,dNx,dNy,dN ,dN,i,J11,J12,J21,J22,Jdet, ,,x,y},
{ ,}=qcoor;
Nf={(1- )*(1-),(1+ )*(1-),(1+ )*(1+),(1- )*(1+)}/4;
dN ={-(1-), (1-),(1+),-(1+)}/4;
dN= {-(1- ),-(1+ ),(1+ ), (1- )}/4;
x=Table[ncoor[[i,1]],{i,4}]; y=Table[ncoor[[i,2]],{i,4}];
J11=dN .x; J12=dN .y; J21=dN.x; J22=dN.y;
Jdet=Simplify[J11*J22-J12*J21];
dNx= ( J22*dN -J12*dN)/Jdet; dNx=Simplify[dNx];
dNy= (-J21*dN +J11*dN)/Jdet; dNy=Simplify[dNy];
Return[{Nf,dNx,dNy,Jdet}]
];
Figure 17.1. A shape function module for the 4-node bilinear quadrilateral.
175
(17.10)
qcoor
Nfx
Nfy
Jdet
Jacobian determinant.
Example 17.1.
Consider a 4-node bilinear quadrilateral shaped as an axis-aligned 2:1 rectangle, with 2a and a as the x and y dimensions, respectively.
The node coordinate array is
ncoor={ { 0,0 },{ 2*a,0 },{ 2*a,a },{ 0,a } }. The shape functions and their {x, y} derivatives are to be
evaluated at the rectangle center = = 0. The appropiate call is
F( ) d
p
wi F(i ).
(17.11)
i=1
Here p 1 is the number of Gauss integration points (also known as sample points), wi are the
integration weights, and i are sample-point abcissae in the interval [1,1]. The use of the canonical
interval [1,1] is no restriction, because an integral over another range, say from a to b, can be
176
17.3
Rule
1
1
F( ) d 2F(0)
F(
)
d
F(1/
3)
+
F(1/
3)
1
1
5
8
5
F(
)
d
F(
3/5)
+
F(0)
+
F(
3/5)
9
9
9
1
1
F( ) d w15 F(15 ) + w25 F(25 ) + w35 F(35 ) + w45 F(45 ) + w55 F(55 )
1
=
(3 + 2 6/5)/7,
44
14
w15 = w55 = (322 13 70)/900, w25 = w45 = (322 + 13 70)/900 and w35 = 512/900.
=1
p=1
= 1
p=2
p=3
p=4
p=5
Figure 17.2. The first five one-dimensional Gauss rules p = 1, 2, 3, 4, 5 depicted over the line segment
[1, +1]. Sample point locations are marked with black circles. The radii of those circles are
proportional to the integration weights.
transformed to [1, +1] via a simple linear transformation of the independent variable, as shown
in the Remark below.
The first five one-dimensional Gauss rules, illustrated in Figure 17.2, are listed in Table 17.1. These
integrate exactly polynomials in of orders up to 1, 3, 5, 7 and 9, respectively. In general a onedimensional Gauss rule with p points integrates exactly polynomials of order up to 2 p 1. This
is called the degree of the formula.
Remark 17.4. A more general integral, such as F(x) over [a, b] in which
= b a > 0, is transformed
to the canonical interval [1, 1] through the mapping x = 12 a(1 ) + 12 b(1 + ) = 12 (a + b) + 12
, or
= (2/
)(x 12 (a + b)). The Jacobian of this mapping is J = d x/d = /
. Thus
F(x) d x =
a
F( ) J d =
1
177
F( ) 12 d.
(17.12)
Figure 17.3. A Mathematica module that returns the first five one-dimensional Gauss rules.
Remark 17.5. Higher order Gauss rules are tabulated in standard manuals for numerical computation. For
example, the widely used Handbook of Mathematical Functions [2] lists (in Table 25.4) rules with up to 96
points. For p > 6 the abscissas and weights of sample points are not expressible as rational numbers or
radicals, and can only be given as floating-point numbers.
(17.13)
Logical flag numer is True to get numerical (floating-point) information, or False to get exact
information. The module returns the sample point abcissa i in xii and the weight wi in wi. If p
is not in the implemented range 1 through 5, the module returns { Null,0 }.
{ xi,w }=LineGaussRuleInfo[{ 3,False },2] returns xi=0 and w=8/9, whereas
{ xi,w }=LineGaussRuleInfo[{ 3,True },2] returns (to 16 places) xi=0. and w=0.888888888888889.
Example 17.2.
i=1 j=1
178
(17.15)
17.3
p = 2 (2 x 2 rule)
p = 1 (1 x 1 rule)
p = 4 (4 x 4 rule)
p = 3 (3 x 3 rule)
where p1 and p2 are the number of Gauss points in the and directions, respectively. Usually
the same number p = p1 = p2 is chosen if the shape functions are taken to be the same in the
and directions. This is in fact the case for all quadrilateral elements presented here. The first four
two-dimensional Gauss product rules with p = p1 = p2 are illustrated in Figure 17.4.
17.3.4. Implementation of 2D Gauss Rules
The Mathematica module listed in Figure 17.5 implements two-dimensional product Gauss rules
having 1 through 5 points in each direction. The number of points in each direction may be the
same or different. If the rule has the same number of points p in both directions the module is
called in either of two ways:
{ { xii,etaj },wij }=QuadGaussRuleInfo[{ p, numer }, { i,j }]
{ { xii,etaj },wij }=QuadGaussRuleInfo[{ p, numer },k ]
(17.16)
The first form is used to get information for point {i, j} of the p p rule, in which 1 i p and
1 j p. The second form specifies that point by a visiting counter k that runs from 1 through
p 2 ; if so {i, j} are internally extracted1 as j=Floor[(k-1)/p]+1; i=k-p*(j-1).
If the integration rule has p1 points in the direction and p2 points in the direction, the module
may be called also in two ways:
{ { xii,etaj },wij }=QuadGaussRuleInfo[{ { p1,p2 }, numer },{ i,j }]
{ { xii,etaj },wij }=QuadGaussRuleInfo[{ { p1,p2 }, numer },k ]
(17.17)
The meaning of the second argument is as follows. In the first form i runs from 1 to p1 and j from 1 to
p2 . In the second form k runs from 1 to p1 p2 ; if so i and j are extracted by j=Floor[(k-1)/p1]+1;
1
Indices i and j are denoted by i1 and i2, respectively, inside the module.
179
Figure 17.5. A Mathematica module that returns two-dimensional product Gauss rules.
i=k-p1*(i-1). In all four forms, logical flag numer is set to True if numerical information is
desired and to False if exact information is desired.
The module returns i and j in xii and etaj, respectively, and the weight product wi w j in wij.
This code is used in the Exercises at the end of the chapter. If the inputs are not in range, the module
returns { { Null,Null },0 }.
Example 17.3. { { xi,eta },w }=QuadGaussRuleInfo[{ 3,False },{ 2,3 }] returns xi=0, eta=Sqrt[3/5]
and w=40/81.
Example 17.4. { { xi,eta },w }=QuadGaussRuleInfo[{ 3,True },{ 2,3 }] returns (to 16-place precision)
h BT EB de
e
(17.18)
Of the terms that appear in (17.18) the strain-displacement matrix B has been discussed previously.
The thickness h, if variable, may be interpolated via the shape functions. The stress-strain matrix
E is usually constant in elastic problems, but we could in principle interpolate it as appropriate
should it vary over the element. To integrate (17.18) numerically by a two-dimensional product
Gauss rule, we have to reduce it to the canonical form (17.14), that is
K =
F(, ) d d.
(17.19)
If and are the quadrilateral coordinates, everything in (17.19) already fits this form, except the
element of area de .
To complete the reduction we need to express de in terms of the differentials d and d. The
desired relation is (see Remark below)
de = d x d y = det J d d = J d d.
1710
(17.20)
C
B
y
d
de
A
O
x
d
Figure 17.6.
x
y
d
We therefore have
F(, ) = h BT EB detJ.
(17.21)
This matrix function can be numerically integrated over the domain 1 +1, 1 +1
by an appropriate Gauss product rule.
Remark 17.6. To geometrically justify the area transformation formula (17.20), consider the element of area
OACB depicted in Figure 17.6. The area of this differential parallelogram can be computed as
y
x
y
x
d
d
d
d
d A = OB OA =
x x
= y y d d = |J| d d = det J d d.
(17.22)
This formula can be extended to any number of dimensions, as shown in textbooks on differential geometry;
for example [265,319,708].
17.5.
*Integration Variants
Several deviations from the standard integration schemes described in the foregoing sections are found in the
FEM literature. Two variations are described below and supplemented with motivation Exercises.
17.5.1. *Weighted Integration
It is sometimes useful to form the element stiffness as a linear combination of stiffnesses produced by two
different integration rules Such schemes are known as weighted integration methods. They are distinguished
from the selective-integration schemes described in the next subsection in that the constitutive properties are
not modified.
For the 4-node bilinear element weighted integration is done by combining the stiffnesses Ke11 and Ke22
produced by 11 and 22 Gauss product rules, respectively:
Ke = (1 )Ke11 + Ke22 .
(17.23)
Here is a scalar in the range [0, 1]. If = 0 or = 1 one recovers the element integrated by the 11 or
22 rule, respectively.2
2
For programming the combination (17.23) may be regarded as a 5-point integration rule with weights
w1 = 4(1)
at
1711
The idea behind (17.23) is that Ke11 is rank-deficient and too soft whereas Ke22 is rank-sufficient but too stiff.
A combination of too-soft and too-stiff hopefully balances the stiffness. An application of this idea to the
mitigation of shear locking for modeling in-plane bending is the subject of Exercise E17.4.
17.5.2. *Selective Integration
In the FEM literature the term selective integration is used to described a scheme for forming Ke as the sum
of two or more matrices computed with different integration rules and different constitutive properties.3 We
consider here the case of a two-way decomposition. Split the plane stress constitutive matrix E into two:
E = EI + EII
(17.24)
This is called a stress-strain splitting. Inserting (17.24) into (17.13) the expression of the stiffness matrix
becomes
Ke =
h BT EI B de +
e
e
(17.25)
If these two integrals were done through the same integration rule, the stiffness would be identical to that
obtained by integrating h BT E B de . The trick is to use two different rules: rule (I) for the first integral and
rule (II) for the second.
In practice selective integration is mostly useful for the 4-node bilinear quadrilateral. For this element rules
(I) and (II) are the 11 and 22 Gauss product rules, respectively. Exercises E17.57 investigate stress-strain
splittings (17.24) that improve the in-plane bending performance of rectangular elements.
Notes and Bibliography
The 4-node quadrilateral has a checkered history. It was first derived as a rectangular panel with edge reinforcements (not included here) by Argyris in his 1954 Aircraft Engineering series [22, p. 49 in the Butterworths
reprint]. Argyris used bilinear displacement interpolation in Cartesian coordinates.4
After much flailing, a conforming generalization to arbitrary geometry was published in 1964 by Taig and
Kerr [719] using quadrilateral-fitted coordinates already denoted as {, } but running from 0 to 1. (Reference
[719] cites an 1961 English Electric Aircraft internal report as original source but [397, p. 520] remarks that
the work goes back to 1957.) Bruce Irons, who was aware of Taigs work while at Rolls Royce, changed the
{, } range to [1, 1] to fit Gauss quadrature tables. He proceeded to create the seminal isoparametric family
as a far-reaching extension upon moving to Swansea [64,197,394,397].
Gauss integration is also called Gauss-Legendre quadrature. Gauss presented these rules, derived from first
principles, in 1814; cf. Sec 4.11 of [310]. Legendres name is often adjoined because the abcissas of the 1D
sample points turned out to be the zeros of Legendre polynomials. A systematic description is given in [706].
For references in multidimensional numerical integration, see Notes and Bibliography in Chapter 24.
Selective and reduced integration in FEM developed in the early 1970s, and by now there is a huge literature.
An excellent textbook source is [385].
References
Referenced items have been moved to Appendix R.
3
This technique is also called selective reduced integration to reflect the fact that one of the rules (the reduced rule)
underintegrates the element.
This work is probably the first derivation of a continuum-based finite element by assumed displacements. As noted in
1.7.1, Argyris was aware of the ongoing work in stiffness methods at Turners group in Boeing, but the plane stress
models presented in [758] were derived by interelement flux assumptions. Argyris used the unit displacement theorem,
displacing each DOF in turn by one. The resulting displacement pattern is now called a shape function.
1712
Exercises
Figure E17.1. Mathematica module to compute the stiffness matrix of a 4-node bilinear
quadrilateral in plane stress.
The module makes use of the shape function module Quad4IsoPShapeFunDer listed in Figure 17.1, and of
the Gauss integration modules QuadGaussRuleInfo and (indirectly) LineGaussRuleInfo, listed in Figures
17.5 and are included in the web-posted Notebook Quad4Stiffness.nb.5 The module is invoked as
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,thick,options]
(E17.1)
Emat
E=
E 11
E 12
E 13
E 12
E 22
E 23
E 13
E 23
E 33
(E17.2)
E
E=
1 2
thick
5
1
0
0
0
1
(1
)
2
(E17.3)
This Notebook does not include scripts for doing the Exercises below, although it has some text statements at the bottom
of the cell. You will need to enter the Exercise scripts yourself.
1713
The first form is used to specify an element of variable thickness, in which case the entries
are the four corner thicknesses and h is interpolated bilinearly. The second form specifies
uniform thickness.
options
Processing options. This list may contain two items: { numer,p } or one: { numer }.
numer is a logical flag with value True or False. If True, the computations are done in
floating point arithmetic. For symbolic or exact arithmetic work set numer to False.6
p specifies the Gauss product rule to have p points in each direction. p may be 1 through 4.
For rank sufficiency, p must be 2 or higher. If p is 1 the element will be rank deficient by
two.7 If omitted p = 2 is assumed.
The module returns Ke as an 8 8 symmetric matrix pertaining to the following arrangement of nodal
displacements:
(E17.4)
ue = [ u x1 u y1 u x2 u y2 u x3 u y3 u x4 u y4 ]T .
4
b = a/
Uniform thickness h = 1
Isotropic material with elastic
modulus E and Poisson's ratio
For the following three exercises we consider the specialization of the general 4-node bilinear quadrilateral
to a rectangular element dimensioned a and b in the x and y directions, respectively, as depicted in Figure
E17.2. The element has uniform unit thickness h. The material is isotropic with elastic modulus E and
Poissons ratio and consequently E reduces to (E17.3). The stiffness matrix of this element can be expressed
in closed form.8 For convenience define = a/b (rectangle aspect ratio), 1 = (1 + ) , 2 = (1 3) ,
3 = 2 + (1 ) 2 , 4 = 2 2 + (1 ), 5 = (1 ) 2 4, 6 = (1 ) 2 1, 7 = 4 2 (1 )
and 8 = 2 (1 ). Then the stiffness matrix in closed form is
Eh
Ke =
24 (1 2 )
43
31
44
25
32
43
32
48
31
44
symm
23
31
46
32
43
31
24
32
27
31
44
46
32
23
31
25
32
43
32
27
31
24
.
32
48
31
44
(E17.5)
The reason for this option is speed. A symbolic or exact computation can take orders of magnitude more time than a
floating-point evaluation. This becomes more pronounced as elements get more complicated.
This closed form can be obtained by either exact integration, or numerical integration with a 2 2 or higher Gauss rule.
1714
Exercises
EXERCISE 17.1 [C:20] Exercise the Mathematica module of Figure E17.1 with the following script:
done by hand (takes a while) or (quicker) running the script of Figure E17.3, which calls the Mathematica
module of Figure E17.1.
ClearAll[Em,,a,b,h,]; b=a/;
ncoor={{0,0},{a,0},{a,b},{0,b}};
Emat=Em/(1-^2)*{{1,,0},{,1,0},{0,0,(1-)/2}};
Ke= Quad4IsoPMembraneStiffness[ncoor,Emat,h,{False,2}];
scaledKe=Simplify[Ke*(24*(1-^2)*/(Em*h))];
Print["Ke=",Em*h/(24**(1-^2)),"*\n",scaledKe//MatrixForm];
Figure E17.3. Script suggested for Exercise E17.2.
The scaling introduced in the last two lines is for matrix visualization convenience. Verify (E17.5) by printout
inspection and report any typos to instructor.
EXERCISE 17.3 [A/C:25=5+10+10] A Bernoulli-Euler plane beam of thin rectangular cross-section with
span L, height b and thickness h (normal to the plane of the figure) is bent under end moments M as illustrated
in Figure E17.4. The beam is fabricated of isotropic material with elastic modulus E and Poissons ratio
. The exact solution of the beam problem (from both the theory-of-elasticity and beam-theory standpoints)
is a constant bending moment M along the span. Consequently the beam deforms with uniform curvature
1
hb3 is the cross-section second moment of inertia about z.
= M/(E Iz ), in which Iz = 12
The beam is modeled with one layer of identical 4-node iso-P bilinear quadrilaterals through its height. These
are rectangles with horizontal dimension a; in the Figure a = L/4. The aspect ratio b/a is denoted by . By
analogy with the exact solution, all rectangles in the finite element model will undergo the same deformation.
We can therefore isolate a typical element as illustrated in Figure E17.4.
The exact displacement field for the beam segment referred to the {x, y} axes placed at the element center as
shown in the bottom of Figure E17.4, are
u x = x y,
u y = 12 (x 2 + y 2 ),
1715
(E17.6)
M
z
Cross
section
y
4
b=a
3
x
2
a
Figure E17.4. Pure bending of Bernoulli-Euler plane beam of thin rectangular cross section,
for Exercises 17.37. The beam is modeled by one layer of 4-node iso-P bilinear quadrilaterals
through its height.
where is the deformed beam curvature M/E I . The stiffness equations of the typical rectangular element
are given by the close form expression (E17.5).
The purpose of this Exercise is to compare the in-plane bending response of the 4-node iso-P bilinear rectangle
to that of a Bernoulli-Euler beam element (which would be exact for this configuration). The quadrilateral
element will be called x-bending exact if it reproduces the beam solution for all { , }. This comparison is
distributed into three items.
(a)
Check that (E17.6), as a plane stress 2D elasticity solution, is in full agreement with Bernoulli-Euler beam
theory. This can be done by computing the strains ex x = u x / x, e yy = u y / y and 2ex y = u y / x +
u x / y. Then get the stresses x x , yy and x y through the plane stress constitutive matrix (E17.3) of
an isotropic material. Verify that both yy and x y vanish for any , and that x x = E y = M y/Iz ,
which agrees with equation (13.4) in Chapter 13.
(b)
Compute the strain energy Uquad = 12 (ubeam )T Ke ubeam absorbed by the 4-node element under nodal
displacements ubeam constructed by evaluating (E17.6) at the nodes 1,2,3,4. To simplify this calculation,
it is convenient to decompose that vector as follows:
y
x
+ ubeam = 14 ab [ 1 0 1 0 1 0 1 0 ]T
ubeam = ubeam
+ 18 (a 2 + b2 ) [ 0 1 0 1 0 1 0 1 ]T
(E17.7)
(E17.8)
This energy can be easily computed by Mathematica by using the first 4 lines of the script of the previous
x
is formed
Exercise, except that here ncoor={ { -a,-b },{ a,-b },{ a,b },{ -a,b } }/2. If vector ubeam
in u as a one-dimensional list, Uquad=Simplify[u.Ke.u/2]. This should come out as a function of
M, E, , h, a and because = M/(E Iz ) = 12M/(Eha 3 3 ).
(c)
From Mechanics of Materials, or equation (13.7) of Chapter 13, the strain energy absorbed by the
beam segment of length a under a constant bending moment M is Ubeam = 12 Ma = M 2 a/(2E Iz ) =
1716
Exercises
6M 2 /(Eha 2 3 ). Form the energy ratio r = Uquad /Ubeam and show that it is a function of the rectangle
aspect ratio = b/a and of Poissons ratio only:
1 + 2/ 2
.
(E17.9)
(2/ 2 )(1 2 )
This happens to be the ratio of the 2D model solution to the exact (beam) solution. Hence r = 1 means
that we get the exact answer, that is the 2D model is x-bending exact. If r > 1 the 2D model is overstiff,
and if r < 1 the 2D model is overflexible. Evidently r > 1 for all if 0 12 . Moreover if
b << a, r >> 1; for example if a = 10b and = 0, r 50 and the 2D model gives only about 2%
of the correct solution. This phenomenon is referred to in the FEM literature as shear locking, because
overstiffness is due to the bending motion triggering spurious shear energy in the element. Remedies
to shear locking at the element level are studied in advanced FEM courses. Draw conclusions as to the
adequacy or inadequacy of the 2D model to capture inplane bending effects, and comment on how you
might improve results by modifying the discretization of Figure E17.4.9
r = r ( , ) =
EXERCISE 17.4 [A+C:20] A naive remedy to shear locking can be attempted with the weighted integration
methodology outlined in 17.6.1. Let Ke11 and Ke22 denote the element stiffnesses produced by 11 and
22 Gauss product rules, respectively. Take
Ke = (1 )Ke11 + Ke22
(E17.10)
where is adjusted so that shear locking is reduced or eliminated. It is not difficult to find if the element is
rectangular and isotropic. For the definition of x-bending exact please read the previous Exercise. Inserting
Ke into the test introduced there verify that
r=
(1 + 2 2 )
.
(2/ 2 )(1 2 )
(E17.11)
2/ 2 (1 2 )
,
(E17.12)
1 + 2/ 2
then r 1 for all { , } and the element is x-bending exact. A problem with this idea is that it does not
make it y-bending exact because r ( ) = r (1/ ) if = 1. Moreover the device is not easily extended to
non-rectangular geometries or non-isotropic material.
=
EXERCISE 17.5 [A+C:35] (Advanced) To understand this Exercise please begin by reading Exercise 17.3,
and the concept of shear locking. The material is again assumed isotropic with elastic modules E and Poissons
ratio . The 4-node rectangular element will be said to be bending exact if r = 1 for any { , } if the bending
test described in Exercise 17.3 is done in both x and y directions. A bending-exact element is completely
shear-lock-free.
The selective integration scheme outlined in 17.6.2 is more effective than weighted integration (covered in
the previous exercise) to fully eliminate shear locking. Let the integration rules (I) and (II) be the 11 and
22 product rules, respectively. However the latter is generalized so the sample points are located at {, },
{, }, { , } and { , }, with weight 1.10 Consider the stress-strain splitting
0
1 0
1 0
E
E
E
0
=
+
(E17.13)
E=
1 0
1 0 = EI + EII ,
1 2 0 0 1
1 2
1 2
1
0
0
0
0 0 2
2
9
Note that even if we make a 0 and = b/a by taking an infinite number of rectangular elements along x,
the energy ratio r remains greater than one if > 0 since r 1/(1 2 ). Thus the 2D model would not generally
converge to the correct solution if we keep one layer through the height.
10
For a rectangular
geometry these sample points lie on the diagonals. In the case of the standard 2-point Gauss product
rule = 1/ 3.
1717
=
1 2
3(1 )
(E17.14)
the resulting element stiffness KeI + KeII is bending exact for any {, }. As a corollary show that that if = 2 ,
which corresponds to the splitting
E
E=
1 2
1 0
1 0
0 0 1
2
E
=
1 2
2
0
2
0
0 0 1
2
E
+
1 2
1 2 0
1 2 0
0
0 0
= EI + EII ,
(E17.15)
then = 1/ 3 and rule (II) becomes the standard 22 Gauss product rule. What are two computationally
convenient settings for ?
EXERCISE 17.6 [A+C:35] (Advanced) A variation on the previous exercise on selective integration to make
the isotropic rectangular 4-node element bending exact. Integration rule (I) is not changed. However rule (II)
has four sample points located at {0, }, { , 0}, {0, } and { , 0} each with weight 1.11 Show that if one
selects the stress-strain splitting (E17.13) and
=
2(1 2 )
3(1 )
(E17.16)
the resulting
element stiffness KeI + KeII is bending exact for any {, }. Discuss which choices of reduce
E=
E 11
E 12
E 13
E 12
E 22
E 23
E 13
E 23
E 33
(E17.17)
The rules for the selective integration scheme are as described in Exercise 17.5. The appropriate stress-strain
splitting is
E = EI + EII =
E 11 1 E 12 E 13
E 12 E 22 2 E 23
E 13
E 23 E 33
E 11 (1 1 ) E 12 (1 ) 0
E 12 (1 ) E 22 (1 2 ) 0
0
0
0
(E17.18)
3 2 E
1
|E|
=
,
2
2
3 C11
11 (E 22 E 33 E 23 )
1 2 =
3 2 E
1
|E|
=
,
2
2
3 C22
22 (E 11 E 33 E 13 )
2
2
2
E 22 E 13
E 33 E 12
,
|E| = det(E) = E 11 E 22 E 33 + 2E 12 E 13 E 23 E 11 E 23
2
C11 = E 11 (E 22 E 33 E 13
)/|E|,
2
C22 = E 22 (E 11 E 33 E 13
)/|E|.
(E17.19)
Show that theresulting rectangular element is bending exact for any E and = 0. (In practice one would
select = 1/ 3.)
11
This is called a 4-point median rule, since the four points are located on the quadrilateral medians.
1718
18
Shape Function
Magic
181
TABLE OF CONTENTS
Page
18.1.
18.2.
18.3.
18.4.
18.5.
18.6.
18.
18.
18.
Requirements
Direct Fabrication of Shape Functions
Triangular Element Shape Functions
18.3.1. The Three-Node Linear Triangle . . . .
18.3.2. The Six-Node Quadratic Triangle
. . .
Quadrilateral Element Shape Functions
18.4.1. The Four-Node Bilinear Quadrilateral
. .
18.4.2. The Nine-Node Biquadratic Quadrilateral
18.4.3. The Eight-Node Serendipity Quadrilateral
Does the Magic Wand Always Work?
18.5.1. Hierarchical Corrections
. . . . . .
18.5.2. Transition Element Example
. . . . .
*Mathematica Modules to Plot Shape Functions
Notes and Bibliography
. . . . . . . . . . . . . . .
References . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . .
182
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
183
183
184
184
185
186
186
187
189
1810
1810
1811
1812
1814
1814
1815
18.2
18.1. Requirements
This Chapter explains, through a series of examples, how isoparametric shape functions can be
directly constructed by geometric considerations. For a problem of variational index 1, the isoparametric shape function Nie associated with node i of element e must satisfy the following conditions:
(A) Interpolation condition. Takes a unit value at node i, and is zero at all other nodes.
(B) Local support condition. Vanishes over any element boundary (a side in 2D, a face in 3D) that
does not include node i.
(C) Interelement compatibility condition. Satisfies C 0 continuity between adjacent elements over
any element boundary that includes node i.
(D) Completeness condition. The interpolation is able to represent exactly any displacement field
which is a linear polynomial in x and y; in particular, a constant value.
Requirement (A) follows directly by interpolation from node values. Conditions (B), (C) and (D)
are consequences of the convergence requirements discussed further in the next Chapter.1 For the
moment these three conditions may be viewed as recipes.
One can readily verify that all isoparametric shape function sets listed in Chapter 16 satisfy the first
two conditions from construction. Direct verification of condition (C) is also straightforward for
those examples. A statement equivalent to (C) is that the value of the shape function over a side
(in 2D) or face (in 3D) common to two elements must uniquely depend only on its nodal values on
that side or face.
Completeness is a property of all element isoparametric shape functions taken together, rather than
of an individual one. If the element satisfies (B) and (C), in view of the discussion in 16.6 it is
sufficient to check that the sum of shape functions is identically one.
18.2. Direct Fabrication of Shape Functions
Contrary to the what the title of this Chapter implies, the isoparametric shape functions listed in
Chapter 16 did not come out of a magicians hat. They can be derived systematically by a judicious
inspection process. By inspection it is meant that the geometric visualization of shape functions
plays a crucial role.
The method is based on the following observation. In all examples given so far the isoparametric
shape functions are given as products of fairly simple polynomial expressions in the natural coordinates. This is no accident but a direct consequence of the definition of natural coordinates. All
shape functions of Chapter 16 can be expressed as the product of m factors:
Nie = ci L 1 L 2 . . . L m ,
(18.1)
where
L j = 0,
j = 1, . . . m.
(18.2)
are the homogeneous equation of lines or curves expressed as linear functions in the natural coordinates, and ci is a normalization coefficient.
1
Convergence means that the discrete FEM solution approaches the exact analytical solution as the mesh is refined.
183
(a)
(c)
(b) 3
1 = 0
3
2
1
Figure 18.1. The three-node linear triangle: (a) element geometry; (b) equation
of side opposite corner 1; (c) perspective view of the shape function N1 = 1 .
For two-dimensional isoparametric elements, the ingredients in (18.1) are chosen according to the
following five rules.
R1 Select the L j as the minimal number of lines or curves linear in the natural coordinates that
cross all nodes except the i th node. (A sui generis cross the dots game.) Primary choices in
2D are the element sides and medians.
R2 Set coefficient ci so that Nie has the value 1 at the i th node.
R3 Check that Nie vanishes over all element sides that do not contain node i.
R4 Check the polynomial order over each side that contains node i. If the order is n, there must
be exactly n + 1 nodes on the side for compatibility to hold.
R5 If local support (R3) and interelement compatibility (R4) are satisfied, check that the sum of
shape functions is identically one.
The examples that follow show these rules in action for two-dimensional elements. Essentially the
same technique is applicable to one- and three-dimensional elements.
18.3. Triangular Element Shape Functions
This section illustrates the use of (18.1) in the construction of shape functions for the linear and the
quadratic triangle. The cubic triangle is dealt with in Exercise 18.1.
18.3.1. The Three-Node Linear Triangle
Figure 18.1 shows the three-node linear triangle that was studied in detail in Chapter 15. The three
shape functions are simply the triangular coordinates: Ni = i , for i = 1, 2, 3. Although this result
follows directly from the linear interpolation formula of 15.2.4, it can be also quickly derived from
the present methodology as follows.
The equation of the triangle side opposite to node i is L j -k = i = 0, where j and k are the cyclic
permutations of i. Here symbol L j -k denotes the left hand side of the homogeneous equation of
the natural coordinate line that passes through node points j and k. See Figure 18.1(b) for i = 1,
j = 2 and k = 3. Hence the obvious guess is
Nie
guess
184
ci L i .
(18.3)
(a)
18.3
(b)
1 = 0
6
2
1 = 1/2
2 = 0
(c)
1 = 0
4
1
Figure 18.2. The six-node quadratic triangle: (a) element geometry; (b) lines
(in red) whose product yields N1e ; (c) lines (in red) whose product yields N4e .
This satisfies conditions (A) and (B) except the unit value at node i; this holds if ci = 1. The
local support condition (B) follows from construction: the value of i is zero over side jk.
Interelement compatibility follows from R4: the variation of i along the 2 sides meeting at node
i is linear and that there are two nodes on each side; cf. 15.4.2. Completeness follows since
N1e + N2e + N3e = 1 + 2 + 3 = 1. Figure 18.1(c) depicts N1e = 1 , drawn normal to the element
in perspective view.
18.3.2. The Six-Node Quadratic Triangle
The geometry of the six-node quadratic triangle is shown in Figure 18.2(a). Inspection reveals two
types of nodes: corners (1, 2 and 3) and midside nodes (4, 5 and 6). Consequently we can expect
two types of associated shape functions. We select nodes 1 and 4 as representative cases.
For both cases we try the product of two linear functions in the triangular coordinates because we
expect the shape functions to be quadratic. These functions are illustrated in Figures 18.2(b,c) for
corner node 1 and midside node 4, respectively.
For corner node 1, inspection of Figure 18.2(b) suggests trying
N1e
guess
c1 L 2-3 L 4-6 ,
(18.4)
Why is (18.4) expected to work? Clearly N1e will vanish over 2-5-3 and 4-6. This makes the function
zero at nodes 2 through 6, as is obvious upon inspection of Figure 18.2(b), while being nonzero at
node 1. This value can be adjusted to be unity if c1 is appropriately chosen. The equations of the
lines that appear in (18.4) are
L 2-3 :
1 = 0,
L 4- 6 :
1
2
= 0.
(18.5)
(18.6)
To find c1 , evaluate N1e (1 , 2 , 3 ) at node 1. The triangular coordinates of this node are 1 = 1,
2 = 3 = 0. We require that it takes a unit value there: N1e (1, 0, 0) = c1 1 12 = 1 whence
c1 = 2 and finally
N1e = 21 (1 12 ) = 1 (21 1),
(18.7)
185
3
3
5
4
5
4
2
2
N4e = 41 2
N1 = 1(21 1)
Figure 18.3. Perspective view of shape functions N1e and N4e for the quadratic
triangle. The plot is done over a straight side triangle for programming simplicity.
as listed in 16.5.2. Figure 18.3 shows a perspective view. The other two corner shape functions
follow by cyclic permutations of the corner index.
For midside node 4, inspection of Figure 18.2(c) suggests trying
N4e
guess
c4 L 2-3 L 1-3
(18.8)
Evidently (18.8) satisfies requirements (A) and (B) if c4 is appropriately normalized. The equation
of sides L 2-3 and L 1-3 are 1 = 0 and 2 = 0, respectively. Therefore N4e (1 , 2 , 3 ) = c4 1 2 .
To find c4 , evaluate this function at node 4, the triangular coordinates of which are 1 = 2 = 12 ,
3 = 0. We require that it takes a unit value there: N4e ( 12 , 12 , 0) = c4 12 12 = 1. Hence c4 = 4,
which gives
(18.9)
N4e = 41 2
as listed in 16.5.2. Figure 18.3 shows a perspective view of this shape function. The other two
midside shape functions follow by cyclic permutations of the node indices.
It remains to carry out the interelement continuity check. Consider node 1. The boundaries
containing node 1 and common to adjacent elements are 12 and 13. Over each one the variation
of N1e is quadratic in 1 . Therefore the polynomial order over each side is 2. Because there are
three nodes on each boundary, the compatibility condition (C) of 18.1 is verified. A similar check
can be carried out for midside node shape functions. Exercise 16.1 verified that the sum of the Ni
is unity. Therefore the element is complete.
18.4. Quadrilateral Element Shape Functions
Three quadrilateral elements, with 4, 9 and 8 nodes, respectively, which are commonly used in computational mechanics serve as examples to illustrate the construction of shape functions. Elements
with more nodes, such as the bicubic quadrilateral, are not treated as they are rarely used.
18.4.1. The Four-Node Bilinear Quadrilateral
The element geometry and natural coordinates are shown in Figure 18.4(a). Only one type of
node (corner) and associated shape function is present. Consider node 1 as typical. Inspection of
186
18.4
(a)
=1
(c)
(b)
=1
1
1
Figure 18.4. The four-node bilinear quadrilateral: (a) element geometry; (b) sides (in red)
that do not contain corner 1; (c) perspective view of the shape function N1e .
guess
c1 L 2-3 L 3-4
(18.10)
This plainly vanishes over nodes 2, 3 and 4, and can be normalized to unity at node 1 by adjusting
c1 . By construction it vanishes over the sides 23 and 34 that do not belong to 1. The equation of
side 2-3 is = 1, or 1 = 0. The equation of side 3-4 is = 1, or 1 = 0. Replacing in
(18.10) yields
N1e (, ) = c1 ( 1)( 1) = c1 (1 )(1 ).
(18.11)
To find c1 , evaluate at node 1, the natural coordinates of which are = = 1:
N1e (1, 1) = c1 2 2 = 4c1 = 1.
Hence c1 =
1
4
(18.12)
(18.13)
(18.14)
The continuity check proceeds as follows, using N1e as example. Node 1 belongs to interelement
boundaries 12 and 13. Over side 12, = 1 is constant and N1e is a linear function of . To see
this, replace = 1 in (18.13). Over side 13, = 1 is constant and N1e is a linear function of .
Consequently the polynomial variation order is 1 over both sides. Because there are two nodes on
each side the compatibility condition is satisfied. The sum of the shape functions is one, as shown
in (16.21); thus the element is complete.
187
=1
3
7
8
1
=0
4
=0
=1
5
2
=1
=0
4
= 1
=1
3
4
= 1
=1
1
2
=1
5
2
= 1
Figure 18.5. The nine-node biquadratic quadrilateral: (a) element geometry; (b,c,d): lines
(in red) whose product makes up the shape functions N1e , N5e and N9e , respectively.
(a)
(b)
4
7
2
e
N1
(c)
1
(
4
1)( 1)
e
N5
(d)
9
6
4
7
8
2
= 12 (1 2 )( 1)
6
5
N9e = (1 2 )(1 2 )
Figure 18.6. Perspective view of the shape functions for nodes 1, 5 and 9 of the nine-node
biquadratic quadrilateral.
188
18.4
7
4
6
8
1
=1
=1
3
4
+ = 1
4
= 1
3
6
=1
=1
5
2
5
2
Figure 18.7. The eight-node serendipity quadrilateral: (a) element geometry; (b,c):
lines (in red) whose product make up the shape functions N1e and N5e , respectively.
(18.15)
(18.16)
N9e = c9 L 1-2 L 2-3 L 3-4 L 4-1 = c9 ( 1)( 1)( + 1)( + 1) = c9 (1 2 )(1 2 ) (18.17)
Imposing the normalization conditions we find
c1 = 14 ,
c5 = 12 ,
c9 = 1,
(18.18)
and we obtain the shape functions listed in 16.6.3. Perspective views are shown in Figure 18.6.
The remaining Ni s are constructed through a similar procedure.
Verification of the interelement continuity condition is immediate: the polynomial variation order
of Nie over any side that belongs to node i is two and there are three nodes on each side. Exercise
16.2 checks that the sum of shape function is unity. Thus the element is complete.
18.4.3. The Eight-Node Serendipity Quadrilateral
This is an eight-node quadrilateral element that results when the center node 9 of the biquadratic
quadrilateral is eliminated by kinematic constraints. The geometry and node configuration is shown
in Figure 18.7(a). This element has been widely used in commercial codes since the 70s for static
problems. It is gradually being phased out in favor of the 9-node quadrilateral for dynamic problems.
189
(a)
(b)
(c)
(d)
4
6
5
1
2
1
4
1
5
Figure 18.8. Node configurations for which the magic recipe does not work.
The 8-node quadrilateral has two types of shape functions, which are associated with corner nodes
and midside nodes. Lines whose products yields the shape functions for nodes 1 and 5 are shown
in Figure 18.7(b,c).
Here are the calculations for shape functions of nodes 1 and 5, which are taken again as representative
cases.
N1e = c1 L 2-3 L 3-4 L 5-8 = c1 ( 1)( 1)(1 + + ) = c1 (1 )(1 )(1 + + ), (18.19)
N5e = c5 L 2-3 L 3-4 L 4-1 = c5 ( 1)( + 1)( 1) = c5 (1 2 )(1 ).
(18.20)
c5 =
1
2
(18.21)
The other shape functions follow by appropriate permutation of nodal indices. The interelement
continuity and completeness verification are similar to that carried out for the nine-node element,
and are relegated to exercises.
18.5. Does the Magic Wand Always Work?
The cross the dots recipe (18.1)(18.2) is not foolproof. It fails for certain node configurations
although it is a reasonable way to start. It runs into difficulties, for instance, in the problem posed
in Exercise 18.6, which deals with the 5-node quadrilateral depicted in Figure 18.8(a). If for node 1
one tries the product of side 23, side 34, and the diagonal 254, the shape function is easily
worked out to be N1e = 18 (1 )(1 )( + ). This satisfies conditions (A) and (B). However,
it violates (C) along sides 12 and 41, because it varies quadratically over them with only two
nodes per side.
18.5.1. Hierarchical Corrections
A more robust technique relies on a correction approach, which employs a combination of terms
such as (18.1). For example, a combination of two patterns, one with m factors and one with n
factors, is
Nie = ci L c1 L c2 . . . L cm + di L d1 L d2 . . . L dn ,
(18.22)
Here two normalization coefficients: ci and di , appear. In practice trying forms such as (18.22)
from scratch becomes cumbersome. The development is best done hierarchically. The first term is
1810
taken to be that of a lower order element, called the parent element, for which the one-shot approach
works. The second term is then a corrective shape function that vanishes at the nodes of the parent
element. If this is insufficient one more corrective term is added, and so on.
The technique is best explained through examples. Exercise 18.6 illustrates the procedure for the
element of Figure 18.8(a). The next subsection works out the element of Figure 18.8(b).
18.5.2. Transition Element Example
The hierarchical correction technique is useful for transition elements, which have corner nodes
but midnodes only over certain sides. Three examples are pictured in Figure 18.8(b,c,d). Shape
functions that work can be derived with one, two and three hierarchical corrections, respectively.
As an example, let us construct the shape function N1e for the 4-node transition triangle shown in
Figure 18.8(b). Candidate lines for the recipe (18.1) are obviously the side 23: 1 = 0, and the
median 34: 1 = 2 . Accordingly we try
N1e
guess
c1 1 (1 2 ),
N1 (1, 0, 0) = 1 = c1 .
(18.23)
This function N1e = 1 (1 2 ) satisfies conditions (A) and (B) but fails compatibility: over side
13 of equation 2 = 0, because N1e (1 , 0, 3 ) = 12 . This varies quadratically but there are only 2
nodes on that side. Thus (18.23) is no good.
To proceed hierarchically we start from the shape function for the 3-node linear triangle: N1e = 1 .
This will not vanish at node 4, so apply a correction that vanishes at all nodes but 4. From
knowledge of the quadratic triangle midpoint functions, that is obviously 1 2 times a coefficient
to be determined. The new guess is
N1e
guess
1 + c1 1 2 .
(18.24)
1
2
+ c1 41 = 0, whence
(18.25)
This is easily checked to satisfy compatibility on all sides. The verification of completeness is left
to Exercise 18.8.
Note that since N1e = 1 (1 22 ), (18.25) can be constructed as the normalized product of lines
1 = 0 and 2 = /. The latter passes through 4 and is parallel to 13. As part of the opening moves
in the shape function game this would be a lucky guess indeed. If one goes to a more complicated
element no obvious factorization is possible.
1811
PlotTriangleShapeFunction[xytrig_,f_,Nsub_,aspect_]:=Module[
{Ni,line3D={},poly3D={},zc1,zc2,zc3,xyf1,xyf2,xyf3,
xc,yc, x1,x2,x3,y1,y2,y3,z1,z2,z3,iz1,iz2,iz3,d},
{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3}}=Take[xytrig,3];
xc={x1,x2,x3}; yc={y1,y2,y3}; Ni=Nsub*3;
Do [ Do [iz3=Ni-iz1-iz2; If [iz3<=0, Continue[]]; d=0;
If [Mod[iz1+2,3]==0&&Mod[iz2-1,3]==0, d= 1];
If [Mod[iz1-2,3]==0&&Mod[iz2+1,3]==0, d=-1];
If [d==0, Continue[]];
zc1=N[{iz1+d+d,iz2-d,iz3-d}/Ni];
zc2=N[{iz1-d,iz2+d+d,iz3-d}/Ni];
zc3=N[{iz1-d,iz2-d,iz3+d+d}/Ni];
xyf1={xc.zc1,yc.zc1,f[zc1[[1]],zc1[[2]],zc1[[3]]]};
xyf2={xc.zc2,yc.zc2,f[zc2[[1]],zc2[[2]],zc2[[3]]]};
xyf3={xc.zc3,yc.zc3,f[zc3[[1]],zc3[[2]],zc3[[3]]]};
AppendTo[poly3D,Polygon[{xyf1,xyf2,xyf3}]];
AppendTo[line3D,Line[{xyf1,xyf2,xyf3,xyf1}]],
{iz2,1,Ni-iz1}],{iz1,1,Ni}];
Show[ Graphics3D[RGBColor[1,0,0]],Graphics3D[poly3D],
Graphics3D[Thickness[.002]],Graphics3D[line3D],
Graphics3D[RGBColor[0,0,0]],Graphics3D[Thickness[.005]],
Graphics3D[Line[xytrig]],PlotRange->All,
BoxRatios->{1,1,aspect},Boxed->False]
];
ClearAll[f1,f4];
xyc1={0,0,0}; xyc2={3,0,0}; xyc3={Sqrt[3],3/2,0};
xytrig=N[{xyc1,xyc2,xyc3,xyc1}]; Nsub=16;
f1[zeta1_,zeta2_,zeta3_]:=zeta1*(2*zeta1-1);
f4[zeta1_,zeta2_,zeta3_]:=4*zeta1*zeta2;
PlotTriangleShapeFunction[xytrig,f1,Nsub,1/2];
PlotTriangleShapeFunction[xytrig,f4,Nsub,1/2.5];
18.6.
A Mathematica module called PlotTriangleShape Functions, listed in Cell 18.1, has been developed to
draw perspective plots of shape functions Ni (1 , 2 , 3 ) over a triangular region. The region is assumed to
have straight sides to simplify the logic. The test statements that follow the module produce the shape function
plots shown in Figure 18.3 for the 6-node quadratic triangle. Argument Nsub controls the plot resolution while
aspect controls the x yz box aspect ratio. The remaining arguments are self explanatory.
Another Mathematica module called PlotQuadrilateralShape Functions, listed in Cell 18.2, has been
developed to produce perspective plots of shape functions Ni (, ) over a quadrilateral region. The region
is assumed to have straight sides to simplify the logic. The test statements that follow the module produce
the shape function plots shown in Figure 18.6(a,b,d) for the 9-node biquadratic quadrilateral. Argument Nsub
1812
18.6
PlotQuadrilateralShapeFunction[xyquad_,f_,Nsub_,aspect_]:=Module[
{Ne,Nev,line3D={},poly3D={},xyf1,xyf2,xyf3,i,j,n,ixi,ieta,
xi,eta,x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,xc,yc},
{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},{x4,y4,z4}}=Take[xyquad,4];
xc={x1,x2,x3,x4}; yc={y1,y2,y3,y4};
Ne[xi_,eta_]:=N[{(1-xi)*(1-eta),(1+xi)*(1-eta),
(1+xi)*(1+eta),(1-xi)*(1+eta)}/4]; n=Nsub;
Do [ Do [ ixi=(2*i-n-1)/n; ieta=(2*j-n-1)/n;
{xi,eta}=N[{ixi-1/n,ieta-1/n}]; Nev=Ne[xi,eta];
xyf1={xc.Nev,yc.Nev,f[xi,eta]};
{xi,eta}=N[{ixi+1/n,ieta-1/n}]; Nev=Ne[xi,eta];
xyf2={xc.Nev,yc.Nev,f[xi,eta]};
{xi,eta}=N[{ixi+1/n,ieta+1/n}]; Nev=Ne[xi,eta];
xyf3={xc.Nev,yc.Nev,f[xi,eta]};
{xi,eta}=N[{ixi-1/n,ieta+1/n}]; Nev=Ne[xi,eta];
xyf4={xc.Nev,yc.Nev,f[xi,eta]};
AppendTo[poly3D,Polygon[{xyf1,xyf2,xyf3,xyf4}]];
AppendTo[line3D,Line[{xyf1,xyf2,xyf3,xyf4,xyf1}]],
{i,1,Nsub}],{j,1,Nsub}];
Show[ Graphics3D[RGBColor[1,0,0]],Graphics3D[poly3D],
Graphics3D[Thickness[.002]],Graphics3D[line3D],
Graphics3D[RGBColor[0,0,0]],Graphics3D[Thickness[.005]],
Graphics3D[Line[xyquad]], PlotRange->All,
BoxRatios->{1,1,aspect},Boxed->False]
];
ClearAll[f1,f5,f9];
xyc1={0,0,0}; xyc2={3,0,0}; xyc3={3,3,0}; xyc4={0,3,0};
xyquad=N[{xyc1,xyc2,xyc3,xyc4,xyc1}]; Nsub=16;
f1[xi_,eta_]:=(1/2)*(xi-1)*(eta-1)*xi*eta;
f5[xi_,eta_]:=(1/2)*(1-xi^2)*eta*(eta-1);
f9[xi_,eta_]:=(1-xi^2)*(1-eta^2);
PlotQuadrilateralShapeFunction[xyquad,f1,Nsub,1/2];
PlotQuadrilateralShapeFunction[xyquad,f5,Nsub,1/2.5];
PlotQuadrilateralShapeFunction[xyquad,f9,Nsub,1/3];
controls the plot resolution while aspect controls the x yz box aspect ratio. The remaining arguments are self
explanatory.
1813
1814
Exercises
3(0,0,1)
3
7(0,1/3,2/3)
9(2/3,0,1/3)
8(1/3,0,2/3)
6(0,2/3,1/3)
6
9
0(1/3,1/3,1/3)
2(0,1,0)
2
5(1/3,2/3,0)
4(2/3,1/3,0)
4
1
1(1,0,0)
Figure E18.1. Ten-node cubic triangle for Exercise 18.1. The left picture shows the
superparametric element whereas the right one shows the isoparametric version with curved sides.
N1e
N4e
N0
Figure E18.2. Perspective plots of the shape functions N1e , N4e and N0e
for the 10-node cubic triangle.
(a)
Construct the cubic shape functions N1e , N4e and N0e for nodes 1, 4, and 0 (the interior node is labeled as
zero, not 10) using the line-product technique. [Hint: each shape function is the product of 3 and only 3
lines.] Perspective plots of those 3 functions are shown in Figure E18.2.
(b)
Construct the missing 7 shape functions by appropriate node number permutations, and verify that the
sum of the 10 functions is identically one. For the unit sum check use the fact that 1 + 2 + 3 = 1.
EXERCISE 18.2 [A:15] Find an alternative shape function N1e for corner node 1 of the 9-node quadrilateral
of Figure 18.5(a) by using the diagonal lines 58 and 294 in addition to the sides 23 and 34. Show that
the resulting shape function violates the compatibility condition (C) stated in 18.1.
EXERCISE 18.3 [A/C:15] Complete the above exercise for all nine nodes. Add the shape functions (use a
lateral discussed in 18.4.3 satisfy the interelement compatibility condition (C) stated in 18.1. Obtain all 8
shape functions and verify that their sum is unity.
EXERCISE 18.5 [C:15] Plot the shape functions N1e and N5e of the eight-node serendipity quadrilateral studied
1815
N1
N5
5
1
2
EXERCISE 18.6 [A:15]. A five node quadrilateral element has the nodal configuration shown in Figure E18.3.
Perspective views of N1e and N5e are shown in that Figure.2 Find five shape functions Nie , i = 1, 2, 3, 4, 5 that
satisfy compatibility, and also verify that their sum is unity.
Hint: develop N5 (, ) first for the 5-node quad using the line-product method; then the corner shape functions
N i (, ) (i = 1, 2, 3, 4) for the 4-node quad (already given in the Notes); finally combine Ni = N i + N5 ,
determining so that all Ni vanish at node 5. Check that N1 + N2 + N3 + N4 + N5 = 1 identically.
8
7
1485 : = 1
1265 : = 1
1234 : = 1
2376 : = +1
4378 : = +1
5678 : = +1
y
Figure E18.4. Eight-node isoparametric
brick element for Exercise 18.7.
EXERCISE 18.8 [A:15]. Consider the 4-node transition triangular element of Figure 18.8(b). The shape
function for node 1, N1 = 1 21 2 was derived in 18.5.2 by the correction method. Show that the others
are N2 = 2 21 2 , N3 = 3 and N4 = 41 2 . Check that compatibility and completeness are verified.
EXERCISE 18.9 [A:15]. Construct the six shape functions for the 6-node transition quadrilateral element of
Figure 18.8(c). Hint: for the corner nodes, use two corrections to the shape functions of the 4-node bilinear
quadrilateral. Check compatibility and completeness. Partial result: N1 = 14 (1 )(1 ) 14 (1 2 )(1 ).
EXERCISE 18.10 [A:20]. Consider a 5-node transition triangle in which midnode 6 on side 13 is missing.
Show that N1e = 1 21 2 22 3 . Can this be expressed as a line product like (18.1)?
Although this N1e resembles the N1e of the 4-node quadrilateral depicted in Figure 18.4, they are not the same. That in
Figure E18.3 must vanish at node 5 ( = = 0). On the other hand, the N1e of Figure 18.4 takes the value 14 there.
1816
Exercises
4
Set CL1
Side 2-4 maps to this
parabola; part of triangle
2-3-4 turns "inside out"
2
1
2
4
4
2
Reference 2
triangular
elements
Set CL2
2
Figure E18.5. Mapping of reference triangles under sets (E18.1) and (E18.2).
Triangles are slightly separated at the diagonal 24 for visualization convenience.
EXERCISE 18.11 [A:30]. The three-node linear triangle is known to be a poor performer for stress analysis.
In an effort to improve it, Dr. I. M. Clueless proposes two sets of quadratic shape functions:
CL1:
CL2:
N1 = 12 ,
N1 = 12 + 22 3 ,
N2 = 22 ,
N3 = 32 .
N2 = 22 + 23 1 ,
N3 = 32 + 21 2 .
(E18.1)
(E18.2)
Dr. C. writes a learned paper claiming that both sets satisfy the interpolation condition, that set CL1 will work
because it is conforming and that set CL2 will work because N1 + N2 + N3 = 1. He provides no numerical
examples. You get the paper for review. Show that the claims are false, and both sets are worthless. Hint:
study 16.6 and Figure E18.5.
EXERCISE 18.12 [A:25]. Another way of constructing shape functions for incomplete elements is through
kinematic multifreedom constraints (MFCs) applied to a parent element that contains the one to be derived.
Suppose that the 9-node biquadratic quadrilateral is chosen as parent, with shape functions called NiP , i =
1, . . . 9 given in 18.4.2. To construct the shape functions of the 8-node serentipity quadrilateral, the motions
of node 9 are expressed in terms of the motions of the corner and midside nodes by the interpolation formulas
u x9 = (u x1 + u x2 + u x3 + u x4 ) + (u x5 + u x6 + u x7 + u x8 ),
u y9 = (u y1 + u y2 + u y3 + u y4 ) + (u y5 + u y6 + u y7 + u y8 ),
(E18.3)
where and are scalars to be determined. (In the terminology of Chapter 9, u x9 and u y9 are slaves
while boundary DOFs are masters.) Show that the shape functions of the 8-node quadrilateral are then
Ni = NiP + N9P for i = 1, . . . 4 and Ni = NiP + N9P for i = 5, . . . 8. Furthermore, show that and can
be determined by two conditions:
8
Ni = 1, leads to 4 + 4 = 1.
1.
2.
i=1
Solve these two equations for and , and verify that the serendipity shape functions given in 18.4.3 result.
EXERCISE 18.13 [A:25] Construct the 16 shape functions of the bicubic quadrilateral.
1817
19
FEM Convergence
Requirements
191
TABLE OF CONTENTS
Page
19.1
19.2
19.3
19.4
19.
19.
19.
Overview
. . . . . . . . . . . . . . . . . . . . . . 193
The Variational Index
. . . . . . . . . . . . . . . . .
193
Consistency Requirements
. . . . . . . . . . . . . . . . 194
19.3.1
Completeness . . . . . . . . . . . . . . . . .
194
19.3.2
Compatibility
. . . . . . . . . . . . . . . . . 194
19.3.3
Matching and Non-Matching Meshes . . . . . . . . .
196
Stability . . . . . . . . . . . . . . . . . . . . . . . 197
19.4.1
Rank Sufficiency . . . . . . . . . . . . . . . .
198
19.4.2
Jacobian Positiveness . . . . . . . . . . . . . . . 199
Notes and Bibliography . . . . . . . . . . . . . . . . . 1911
References
. . 1911
Exercises . . . . . . . . . . . . . . . . . . . . . . 1913
192
19.1. Overview
Chapters 11 through 18 have discussed, in piecemeal fashion, requirements for shape functions
of isoparametric elements. These are motivated by convergence: as the mesh is refined, the FEM
solution should approach the analytical solution of the mathematical model.1 This attribute is
obviously necessary to instill confidence in FEM results from the standpoint of mathematics.
This Chapter provides unified information on convergence requirements. These requirements can
be grouped into three:
Completeness. The elements must have enough approximation power to capture the analytical
solution in the limit of a mesh refinement process. This intuitive statement is rendered more precise
below.
Compatibility. The shape functions should provide displacement continuity between elements.
Physically these insure that no material gaps appear as the elements deform. As the mesh is refined,
such gaps would multiply and may absorb or release spurious energy.
Stability. The system of finite element equations must satify certain well posedness conditions that
preclude nonphysical zero-energy modes in elements, as well as the absence of excessive element
distortion.
Completeness and compatibility are two aspects of the so-called consistency condition between
the discrete and mathematical models. A finite element model that passes both completeness and
continuity requirements is called consistent. This is the FEM analog of the famous Lax-Wendroff
theorem,2 which says that consistency and stability imply convergence.
Remark 19.1. A deeper mathematical analysis done in more advanced courses shows that completeness is
necessary for convergence whereas failure of the other requirements does not necessarily precludes it. There
are, for example, FEM models in common use that do not satisfy compatibility. Furthermore, numerically
unstable models may be used (with caution) in situations where that property is advantageous, as in the
modeling of local singularities. Nonetheless, the satisfaction of the three criteria guarantees convergence and
may therefore be regarded as a safe choice for the beginner user.
Of course FEM convergence does not guarantee the correctness of the mathematical model in capturing the physics. As
discussed in Chapter 1, model verification against experiments is a different and far more difficult problem.
Proven originally for classical finite difference discretizations in fluid mechanics. More precisely, it states that a numerical
scheme for the scalar conservation law, du/dt + d f /d x = 0 converges to a unique (weak) solution, if it is consistent,
stable and conservative. There is no equivalent theorem for systems of conservation laws.
193
[u] =
1
2
u E Au qu
d x.
(19.1)
The highest derivative of the displacement u(x) is u = du/d x, which is first order in the space coordinate x.
Consequently m = 1. This is also the case on the plane stress problem studied in Chapter 14, because the
strains are expressed in terms of first order derivatives of the displacements.
Example 19.2. In the plane beam problem discussed in Chapter 12,
1
v E I v qv d x.
2
[v] =
(19.2)
The highest derivative of the transverse displacement is the curvature = v = d 2 v/d x 2 , which is of second
order in the space coordinate x. Consequently m = 2.
The element shape functions must represent exactly all polynomial terms
of order m in the Cartesian coordinates. A set of shape functions that
satisfies this condition is called m-complete.
Note that this requirement applies at the element level and involves all shape functions of the
element.
Example 19.3. Suppose a displacement-based element is for a plane stress problem, in which m = 1. Then
1-completeness requires that the linear displacement field
u x = 0 + 1 x + 2 y,
u y = 0 + 1 x + 2 y
(19.3)
be exactly represented for any value of the coefficients. This is done by evaluating (19.3) at the nodes to
form a displacement vector ue and then checking that u = Ne ue recovers exactly (19.3). Section 16.6 presents
the details of this calculation for an arbitrary isoparametric plane stress element. That analysis shows that
completeness is satisfied if the sum of the shape functions is unity and the element is compatible.
Example 19.4. For the plane beam problem, in which m = 2, the quadratic transverse displacement
v = 0 + 1 x + 2 x 2
(19.4)
must be exactly represented over the element. This is easily verified in for the 2-node beam element developed
in Chapter 13, because the assumed transverse displacement is a complete cubic polynomial in x. A complete
cubic contains the quadratic (19.4) as special case.
194
19.3
(b)
(a)
CONSISTENCY REQUIREMENTS
(c)
2-node bars
Figure 19.1. An element patch is the set of all elements attached to a patch node, labeled i.
(a) illustrates a patch of triangles; (b) a mixture of triangles and quadrilaterals; (c) a mixture of
triangles, quadrilaterals, and bars.
19.3.2. Compatibility
To state this requirement succintly, it is convenient to introduce the concept of element patch, or
simply patch. This is the set of all elements attached to a given node, called the patch node. The
definition is illustrated in Figure 19.1, which shows three different kind of patches attached to patch
node i in a plane stress problem. The patch of Figure 19.1(a) contains only one type of element:
3-node linear triangles. The patch of Figure 19.1(b) mixes two plane stress element types: 3-node
linear triangles and 4-node bilinear quadrilaterals. The patch of Figure 19.1(c) combines three
element types: 3-node linear triangles, 4-node bilinear quadrilaterals, and 2-node bars.
We define a finite element patch trial function as the union of shape functions activated by setting
a degree of freedom at the patch node to unity, while all other freedoms are zero.
A patch trial function propagates only over the patch, and is zero beyond it. This property follows
from the local-support requirement stated in 18.1: a shape function for node i should vanish on
all sides or faces that do not include i.
With the help of these definitions we can enunciate the compatibility requirement as follows.
Patch trial functions must be C (m1) continuous between interconnected
elements, and C m piecewise differentiable inside each element.
If the variational index is m = 1, the patch trial functions must be C 0 continuous between elements,
and C 1 inside elements.
A set of shape functions that satisfies the first requirement is called conforming. A conforming
expansion that satisfies the second requirement is said to be of finite energy. Note that this condition
applies at two levels: individual element, and element patch. An element endowed with conforming
shape functions is said to be conforming. A conforming element that satisfies the finite energy
requirement is said to be compatible.3
3
The FEM literature is a bit fuzzy as regards these terms. It seems better to leave the qualifier conforming to denote
interelement compatibility; informally an element that gets along with its neighbors. The qualifier compatible is
used in the stricter sense of conforming while possessing sufficient internal smoothness.
195
(a)
(b)
(c)
3-node bars
(e)
(f)
(d)
Figure 19.2. Examples of 2D non-matching meshes. Interelement boundaries that fail matching
conditions are shown offset for visualization convenience. In (a,b,c) some nodes do not match. In
(d,e,f) nodes and DOFs match but some sides do not, leading to violations of C 0 continuity.
Figures 19.1(b,c) illustrates the fact that one needs to check the possible connection of matching
elements of different types and possibly different dimensionality.
19.3.3. Matching and Non-Matching Meshes
As stated, compatibility refers to the complete finite element mesh because mesh trial functions are
a combination of patch trial functions, which in turn are the union of element shape functions. This
generality poses some logistical difficulties because the condition is necessarily mesh dependent.
Compatibility can be checked at the element level by restricting attention to matching meshes. A
matching mesh is one in which adjacent elements share sides, nodes and degrees of freedom, as in
the patches shown in Figure 19.1.
For a matching mesh it is sufficient to restrict consideration first to a pair of adjacent elements, and
then to the side shared by these elements. Suppose that the variation of a shape function along
that side is controlled by k nodal values. Then a polynomial variation of order up to k 1 in the
natural coordinate(s) can be specified uniquely over the side. This is sufficient to verify interelement
compatibility for m = 1, implying C 0 continuity, if the shape functions are polynomials.
This simplified criterion is the one used in previous Chapters. Specific 2D examples were given in
Chapters 15 through 18.
Remark 19.2. If the variational index is m = 2 and the problem is multidimensional, as in the case of
plates and shells, the check is far more involved and trickier because continuity of normal derivatives along
a side is involved. This practically important scenario is examined in advanced FEM treatments. The case of
non-polynomial shape functions is, on the other hand, of little practical interest.
196
19.4
STABILITY
Mesh of
tetrahedra
Common surface
Mesh of
bricks
A mesh that does not satisfy the matching criteria stated above is called a nonmatching mesh.
Several two-dimensional examples are shown in Figure 19.2. As can be seen there is a wide range
of possibilities: nonmatching nodes, matching nodes but different element types, etc. Figure 19.3
depicts a three-dimensional example, in which case even more variety can be expected.
Nonmatching meshes are the rule rather than the exception in contact and impact problems (which,
being geometrically nonlinear, are outside the scope of this book). See Figure 19.4 illustrates what
happens in a problem of slipping contact.
Initial shape
Deformed shape
;;;;;;;;;
;;;;;;;;;
;;;;;;;;;
;;;;;;;;;
Figure 19.4. In contact and impact problems, matching meshes are the exception rather than the
rule. Even if the meshes match at initial contact, slipping may produce a nonmatching mesh in
the deformed configuration, as illustrated in the figure.
In multiphysics simulations nonmatching meshes are common, since they are often prepared separately for the different physical components, as illustrated in Figure 19.5.
19.4. Stability
Stability may be informally characterized as ensuring that the finite element model enjoys the same
solution uniqueness properties of the analytical solution of the mathematical model. For example, if
the only motions that produce zero internal energy in the mathematical model are rigid body motions,
197
Fluid
Structure
Figure 19.5. Nonmatching meshes are common in multiphysics problems, as in this example of
fluid-structure interaction (FSI). Two-dimensional model to simulate flow around a thin plate. If
the meshes are independenly prepared node locations will not generally match.
the finite element model must inherit that property. Since FEM can handle arbitrary assemblies of
elements, including individual elements, this property is required to hold at the element level.
In the present outline we are concerned with stability at the element level. Stability is not a property
of shape functions per se but of the implementation of the element as well as its geometrical
definition. It involves two subordinate requirements: rank sufficiency, and Jacobian positiveness.
Of these, rank sufficiency is the most important one.
19.4.1. Rank Sufficiency
The element stiffness matrix must not possess any zero-energy kinematic mode other than rigid
body modes.
This can be mathematically expressed as follows. Let n F be the number of element degrees of
freedom, and n R be the number of independent rigid body modes. Let r denote the rank of Ke . The
element is called rank sufficient if r = n F n R and rank deficient if r < n F n R . In the latter
case, the rank deficiency is defined by
d = (n F n R ) r
(19.5)
If an isoparametric element is numerically integrated, let n G be the number of Gauss points, while
n E denotes the order of the stress-strain matrix E. Two additional assumptions are made:
(i)
The element shape functions satisfy completeness in the sense that the rigid body modes are
exactly captured by them.
(19.7)
19.4
STABILITY
Table 19.1 Rank-sufficient Gauss Rules for Some Plane Stress Elements
Element
nF
nF 3
Min n G
Recommended rule
3-node triangle
6-node triangle
10-node triangle
4-node quadrilateral
8-node quadrilateral
9-node quadrilateral
16-node quadrilateral
3
6
10
4
8
9
16
6
12
20
8
16
18
32
3
9
17
5
13
15
29
1
3
6
2
5
5
10
centroid
3-point rules
6-point rule
2x2
3x3
3x3
4x4
Figure 19.6. Effect of displacing node 4 of the four-node bilinear quadrilateral shown on the
leftmost picture, to the right.
Remark 19.3. The fact that each Gauss point adds n E n G to the rank can be proven considering the following
property. Let B be a n E n F rectangular real matrix with rank r B n E , and E an n E n E positive-definite (p.d.)
symmetric matrix. Then the rank of BT E B is r B . Proof: let u
= 0 be a non-null n F -vector. If BT E B u = 0
then 0 = uT BT E B u = ||E1/2 B u||. Therefore B u = 0. Identify now B and E with the strain-displacement
and stress-strain (constitutive) matrix, respectively. In the plane stress case n E = 3, n F = 2n > 3 is the
number of element freedoms. Thus B has rank 3 and a fortiori BT E B must also have rank 3 since E is p.d.
At each Gauss point i a contribution of wi BT E B, which has rank 3 if wi > 0, is added to Ke . By a theorem
of linear algebra, the rank of Ke increases by 3 until it reaches n F n R .
Example 19.5. Consider a plane stress 6-node quadratic triangle. Then n F = 2 6 = 12. To attain the proper
rank of 12 n R = 12 3 = 9, n G 3. A 3-point Gauss rule, such as the midpoint rule defined in 24.2,
makes the element rank sufficient.
Example 19.6. Consider a plane stress 9-node biquadratic quadrilateral. Then n F = 2 9 = 18. To attain
the proper rank of 18 n R = 18 3 = 15, n G 5. The 2 2 product Gauss rule is insufficient because
n G = 4. Hence a 3 3 rule, which yields n G = 9, is required to attain rank sufficiency.
Table 19.1 collects rank-sufficient Gauss integration rules for some widely used plane stress elements
with n nodes and n F = 2n freedoms.
199
3
7
7
4
8
2
6
9
8
5
5 2
5=2
For a three-node triangle J is constant and in fact equal to 2A. The requirement J > 0 is equivalent
to saying that corner nodes must be positioned and numbered so that a positive area A > 0 results.
This is called a convexity condition. It is easily checked by a finite element program.
But for 2D elements with more than 3 nodes distortions may render portions of the element metric
negative. This is illustrated in Figure 19.6 for a 4-node quadrilateral in which node 4 is gradually
moved to the right. The quadrilateral gradually morphs from a convex figure into a nonconvex
one. The center figure is a triangle; note that the metric near node 4 is badly distorted (in fact
J = 0 there) rendering the element unacceptable. This clearly contradicts the erroneous advice of
some FE books, which state that quadrilaterals can be reduced to triangles as special cases, thereby
rendering triangular elements unnecessary.
For higher order elements proper location of corner nodes is not enough. The non-corner nodes
(midside, interior, etc.) must be placed sufficiently close to their natural locations (midpoints,
4
This definition applies to quadrilateral elements. The Jacobian determinant of an arbitrary triangular element is defined
in 24.2.
1910
19.
6
5
4
4
5
3
1
2 1
2 1
4
4
4
Figure 19.8. Effect of displacing midpoints 4, 5 and 6 of an equilateral 6-node triangle along
the midpoint normals. Motion is inwards in first two top frames, outwards in the last four. In
the lower leftmost picture nodes 1 through 6 lie on a circle.
centroids, etc.) to avoid violent local distortions. The effect of midpoint motions in quadratic
elements is illustrated in Figures 19.7 and 19.8.
Figure 19.7 depicts the effect of moving midside node 5 tangentially in a 9-node quadrilateral
element while keeping all other 8 nodes fixed. When the location of 5 reaches the quarter-point of
side 1-2, the metric at corner 2 becomes singular in the sense that J = 0 there. Although this is
disastrous in ordinary FE work, it has applications in the construction of special crack elements
for linear fracture mechanics.
Displacing midside nodes normally to the sides is comparatively more forgiving, as illustrated in
Figure 19.8. This depicts a 6-node equilateral triangle in which midside nodes 4, 5 and 6 are moved
inwards and outwards along the normals to the midpoint location. As shown in the lower left
picture, the element may be even morphed into a parabolic circle (meaning that nodes 1 through
6 lie on a circle) without the metric breaking down.
Notes and Bibliography
The literature on the mathematics of finite element methods has grown exponentially since the monograph of
Strang and Fix [705]. This is very readable but out of print. A more up-to-date exposition is the textbook by
Szabo and Babuska [721]. The subjects collected in this Chapter tend to be dispersed in recent monographs
and obscured by overuse of functional analysis.
1911
References
Referenced items have been moved to Appendix R.
1912
Exercises
is
1
x
v
1
x1
u 1
1
x2
u 2
1
x3
u 3
N1e ( )
N2e ( )
N3e ( )
(E19.1)
Here is the isoparametric coordinate that takes the values 1, 1 and 0 at nodes 1, 2 and 3, respectively, while
N1e , N2e and N3e are the shape functions found in Exercise 16.3 and listed in (E16.2).
For simplicity, take x1 = 0, x2 = L, x3 = 12 L + L. Here L is the bar length and a parameter that
characterizes how far node 3 is away from the midpoint location x = 12 L. Show that the minimum s
(minimal in absolute value sense) for which J = d x/d
plane stress element. The element is initially a perfect square, nodes 5,6,7,8 are at the midpoint of the sides
12, 23, 34 and 41, respectively, and 9 at the center of the square. Displace 5 tangentially towards 2 until
the Jacobian determinant at 2 vanishes. This result is important in the construction of singular elements for
fracture mechanics.
EXERCISE 19.6 [A/C:35] Repeat Exercise 19.5 but moving node 5 along the normal to the side. Discuss
the range of motion for which det J > 0 within the element.
EXERCISE 19.7 [A:20] Discuss whether the deVeubeke triangle presented in Chapter 15 satisfies completeness and interelement-compatbility requirements.
1913
20
Implementation of
One-Dimensional
Elements
201
TABLE OF CONTENTS
Page
20.1
20.2
20.3
20.4
20.5
20.6
20.
20.
202
203
203
203
204
205
206
206
207
208
208
209
209
2011
2011
2012
2013
2014
2015
2017
2018
2018
2020
2020
2021
20.1
This Chapter begins Part III of the course. This Part deals with the computer implementation of
the Finite Element Method for static analysis. It is organized in bottom up fashion. It begins
with simple topics, such as programming of bar and beam elements, and gradually builds up toward
more complex models and calculations.
Specific examples of this Chapter illustrate the programming of one-dimensional elements: bars
and beams, using Mathematica as implementation language.
20.1. The Plane Bar Element
u x1
f x1
x
u
f
(20.1)
ue = y1 , fe = y1 .
u x2
f x2
Figure 20.1. Plane bar element.
u y2
f y2
The element geometry is described by the coordinates {xi , yi }, i = 1, 2 of the two end nodes. For
stiffness computations, the only material and fabrication properties required are the modulus of
elasticity E = E e and the cross section area A = Ae , respectively. Both are taken to be constant
over the element.
20.1.1. Plane Bar Stiffness Matrix
The element stiffness matrix in global {x, y} coordinates is given by the explicit expression derived
in 3.1:
2
c
sc c2 sc
x21 x21 x21 y21 x21 x21 x21 y21
E A sc s 2 sc s 2
E A x21 y21 y21 y21 x21 y21 y21 y21
Ke =
2
= 3
. (20.2)
2
c sc c
sc
x21 x21 x21 y21 x21 x21 x21 y21
sc s 2 sc s 2
x21 y21 y21 y21 x21 y21 y21 y21
2
2
Here c = cos = x21 /, s = sin = y21 /, in which x21 = x2 x1 , y21 = y2 y1 , = x21
+ y21
,
and is the angle formed by x and x, measured from x positive counterclockwise see Figure 20.1.
The second expression in (20.2) is preferable in a computer algebra system because it enhances
simplification possibilities when doing symbolic work, and is the one actually implemented in the
module described below.
20.1.2. Plane Bar Stiffness Module
The computation of the stiffness matrix Ke of the two-node, prismatic plane bar element is done by Mathematica module PlaneBar2Stiffness.
This is listed in Figure IFEM:Ch20:fig:PlaneBarStiffMatrixModule. The module is invoked as
Ke = PlaneBar2Stiffness[ncoor, Em, A, options]
203
(20.3)
PlaneBar2Stiffness[ncoor_,Em_,A_,options_]:= Module[
{x1,x2,y1,y2,x21,y21,EA,numer,L,LL,LLL,Ke},
{{x1,y1},{x2,y2}}=ncoor; {x21,y21}={x2-x1,y2-y1};
EA=Em*A; {numer}=options; LL=x21^2+y21^2; L=Sqrt[LL];
If [numer,{x21,y21,EA,LL,L}=N[{x21,y21,EA,LL,L}]];
If [!numer, L=PowerExpand[L]]; LLL=Simplify[LL*L];
Ke=(Em*A/LLL)*{{ x21*x21, x21*y21,-x21*x21,-x21*y21},
{ y21*x21, y21*y21,-y21*x21,-y21*y21},
{-x21*x21,-x21*y21, x21*x21, x21*y21},
{-y21*x21,-y21*y21, y21*x21, y21*y21}};
Return[Ke]];
Figure 20.2. Mathematica stiffness module for a two-node, prismatic plane bar element.
20.2
ClearAll[A,Em,L];
ncoor={{0,0},{L,0}};
Ke= PlaneBar2Stiffness[ncoor,Em,A,{False}];
kfac=Em*A/L; Ke=Simplify[Ke/kfac];
Print["Symbolic Elem Stiff Matrix: "];
Print[kfac," ",Ke//MatrixForm];
Print["Eigenvalues of Ke=",kfac,"*",Eigenvalues[Ke]];
Symbolic Elem Stiff Matrix:
1 0 1 0
0 0 0 0
A Em
L
1 0 1 0
0 0 0 0
Eigenvalues of Ke =
A Em
{0, 0, 0, 2}
L
Figure 20.4. Test of plane bar stiffness module with symbolic inputs.
On return from PlaneBar2Stiffness, the stiffness matrix returned in Ke is printed. Its four
eigenvalues are computed and printed. As expected three eigenvalues, which correspond to the
three independent rigid body motions of the element, are zero. The remaining eigenvalue is positive
and equal to E A/. The symmetry of Ke is checked by printing (Ke )T Ke upon simplification
and chopping.
The script of Figure 20.4 tests a symbolically defined bar element with end nodes located at (0, 0)
and (L , 0), which is aligned with the x axis. Properties E and A are kept symbolic. Executing the
script shown in the top of Figure 20.4 produces the results shown in the bottom of that figure. One
thing to be noticed is the use of the stiffness scaling factor E A/, called kfac in the script. This is
a symbolic quantity that can be extracted as factor of matrix Ke . The effect is to clean up matrix
and vector output, as can be observed in the printed results.
20.2. The Space Bar Element
To show how the previous implementation extends easily to three dimensions, this section describes
the implementation of the space bar element.
The two-node, prismatic, space bar
element is pictured in Figure 20.5.
The element has two nodes and six
degrees of freedom. The element node
displacements and conjugate forces
are arranged as
u x1
f x1
u y1
f y1
ue = z1 , fe = z1 .
u x2
f x2
u y2
f y2
u z2
f z2
(20.4)
1 (x1 ,y1 ,z 1 )
E, A constant
2 (x 2 ,y 2 ,z 2 )
= Le
z Global system
Figure 20.5. The space (3D) bar element.
205
SpaceBar2Stiffness[ncoor_,Em_,A_,options_]:=Module[
{x1,x2,y1,y2,z1,z2,x21,y21,z21,EA,numer,L,LL,LLL,Ke},
{{x1,y1,z1},{x2,y2,z2}}=ncoor;{x21,y21,z21}={x2-x1,y2-y1,z2-z1};
EA=Em*A; {numer}=options; LL=x21^2+y21^2+z21^2; L=Sqrt[LL];
If [numer,{x21,y21,z21,EA,LL,L}=N[{x21,y21,z21,EA,LL,L}]];
If [!numer, L=PowerExpand[L]]; LLL=Simplify[LL*L];
Ke=(Em*A/LLL)*
{{ x21*x21, x21*y21, x21*z21,-x21*x21,-x21*y21,-x21*z21},
{ y21*x21, y21*y21, y21*z21,-y21*x21,-y21*y21,-y21*z21},
{ z21*x21, z21*y21, z21*z21,-z21*x21,-z21*y21,-z21*z21},
{-x21*x21,-x21*y21,-x21*z21, x21*x21, x21*y21, x21*z21},
{-y21*x21,-y21*y21,-y21*z21, y21*x21, y21*y21, y21*z21},
{-z21*x21,-z21*y21,-z21*z21, z21*x21, z21*y21, z21*z21}};
Return[Ke];
];
Figure 20.6. Module to form the stiffness of the space (3D) bar element.
The element geometry is described by the coordinates {xi , yi , z i }, i = 1, 2 of the two end nodes.
As in the case of the plane bar, the two properties required for the stiffness computations are the
modulus of elasticity E and the cross section area A. Both are assumed to be constant over the
element.
20.2.1. SpaceBarStiffness Matrix
For the
space bar element, introduce the notation x21 = x2 x1 , y21 = y2 y1 , z 21 = z 2 z 1 and
2
2
2
+ y21
+ z 21
. It can be shown1
= x21
given by
x21 y21
x21 x21
y21 y21
x21 y21
e e
A
E
y21 z 21
x21 z 21
Ke =
3
x
x
x
21 21
21 y21
x21 x21
x21 y21
x21 z 21
x21 x21
x21 y21
x21 z 21
x21 y21
y21 y21
y21 z 21
x21 y21
y21 y21
y21 z 21
x21 z 21
y21 z 21
z 21 z 21
.
x21 z 21
y21 z 21
z 21 z 21
(20.5)
This matrix expression in terms of coordinate differences is useful in symbolic work, because it
enhances simplification possibilities.
20.2.2. Space Bar Stiffness Module
The computation of the stiffness matrix Ke of the two-node, prismatic space bar element, is done by
Mathematica module SpaceBar2Stiffness. This is listed in Figure 20.6. The module is invoked
as
Ke = SpaceBar2Stiffness[ncoor, Em, A, options]
(20.6)
The arguments are
ncoor
Node coordinates of element arranged as { { x1,y1,z1 },{ x2,y2,z2 } }.
1
206
20.2
ClearAll[A,Em];
ncoor={{0,0,0},{2,3,6}}; Em=343; A=10;
Ke= SpaceBar2Stiffness[ncoor,Em,A,{True}];
Print["Numerical Elem Stiff Matrix: "];
Print[Ke//MatrixForm];
Print["Eigenvalues of Ke=",Chop[Eigenvalues[Ke]]];
Numerical Elem Stiff Matrix:
40.
60.
120.
40.
60.
60.
90.
180.
60.
90.
120.
180.
360.
120.
180.
40.
60.
120.
40.
60.
60.
90.
180.
60.
90.
120.
180.
360.
120.
180.
Eigenvalues of Ke = {980., 0, 0, 0, 0, 0}
120.
180.
360.
120.
180.
360.
Figure 20.7. Testing the space bar stiffness module with numerical inputs.
Em
A
options
Elastic modulus.
Cross section area.
A list of processing options. For this element is has only one entry: { numer }. This
is a logical flag with the value True or False. If True the computations are carried
out in floating-point arithmetic. If False symbolic processing is assumed.
y
uy1
ux1
ux2
(a)
z1
(b)
z2
uy2
x
=L
E, A, I constant
zz
2 (x 2 , y2 )
1 (x 1 , y1 )
Figure 20.9. Plane beam-column element: (a) in its local system; (b) in the global system.
The script of Figure 20.7 tests a numerically defined space bar with end nodes located at (0, 0, 0)
and (30, 40, 0), with E = 1000, A = 5 and numer set to True. Executing the script produces the
results listed in the bottom of that Figure.
The script of Figure 20.8 tests a symbolically defined bar element with end nodes located at (0, 0, 0)
and (L , 2L , 2L)/3, which has length L and is not aligned with the x axis. The element properties
E and A are kept symbolic. Executing the script produces the results shown in the bottom of that
Figure. Note the use of a stiffness factor kfac of E A/(9) to get cleaner printouts.
20.3. The Plane Beam-Column Element
Beam-column elements model structural members that resist both axial and bending actions. This
is the case in skeletal structures such as frameworks which are common in steel and reinforcedconcrete building construction. A plane beam-column element is a combination of a plane bar
(such as that considered in 20.1), and a plane beam.
We consider a beam-column element in its local system (x,
y ) as shown in Figure 20.9(a), and then
in the global system (x, y) as shown in Figure 20.9(b). The six degrees of freedom and conjugate
node forces of the elements are:
u x1
f x1
u x1
f x1
u y1
fy1
u y1
f y1
ue = z1 , fe = z1 .
(20.7)
u e = z1 , f = z1 ,
u x2
u x2
u x2
f x2
u y2
u y2
u y2
f y2
z2
m z2
z2
m z2
The rotation angles and the nodal moments m are the same in the local and the global systems
because they are about the z axis, which does not change in passing from local to global.
The element geometry is described by the coordinates {xi , yi }, i = 1, 2 of the two end nodes. The
element length is = L e . Properties involved in the stiffness calculations are: the modulus of
elasticity E, the cross section area A and the moment of inertia I = Izz about the neutral axis. All
properties are taken to be constant over the element.
20.3.1. Plane Beam-Column Stiffness Matrix
208
20.3
To obtain the plane beam-column stiffness in the local system we simply add the stiffness matrices
derived in Chapters 11 and 12, respectively, to get
1 0 0 1 0 0
0 0
0 0
0
0
0 0 0 0 0
12 6 0 12 6
EI
E
A
0 0 0 0
42 0 6 22
e =
+
(20.8)
K
0
0
0
1 0 0
3
12 6
0 0
symm
42
symm
0
The two matrices on the right of (20.8) come from the bar stiffness (12.22) and the BernoulliEuler bending stiffness (13.20), respectively. Before adding them, rows and columns have been
rearranged in accordance with the nodal freedoms (20.7).
The displacement transformation matrix between local and global systems is
u x1
c s 0 0 0 0
u x1
u y1 s c 0 0 0 0 u y1
z1 0 0 1 0 0 0 z1
e
u =
=
= T ue ,
u x2 0 0 0 c s 0 u x2
u y2
u y2
0 0 0 s c 0
z2
z2
0 0 0 0 0 1
(20.9)
in which c = cos = (x2 x1 )/, s = sin = (y2 y1 )/, and is the angle between x and x,
measured positive-counterclockwise from x; see Figure IFEM:Ch20:fig:PlaneBeamColElem. The
stiffness matrix in the global system is obtained through the congruent transformation
e T.
Ke = T T K
(20.10)
Explicit expressions of the entries of Ke are messy. Unlike the bar, it is better to let the program do
the transformation.
20.3.2. Plane Beam Column Stiffness Module
The computation of the stiffness matrix Ke of the two-node, prismatic plane beam-column element
is done by Mathematica module PlaneBeamColumn2Stiffness. This is listed in Figure 20.10.
The module is invoked as
Ke = PlaneBeamColumn2Stiffness[ncoor, Em, { A,Izz }, options]
(20.11)
PlaneBeamColumn2Stiffness[ncoor_,Em_,{A_,Izz_},options_]:= Module[
{x1,x2,y1,y2,x21,y21,EA,EI,numer,L,LL,LLL,Te,Kebar,Ke},
{{x1,y1},{x2,y2}}=ncoor; {x21,y21}={x2-x1,y2-y1};
EA=Em*A; EI=Em*Izz; {numer}=options;
LL=Simplify[x21^2+y21^2]; L=Sqrt[LL];
If [numer,{x21,y21,EA,EI,LL,L}=N[{x21,y21,EA,EI,LL,L}]];
If [!numer, L=PowerExpand[L]]; LLL=Simplify[LL*L];
Kebar= (EA/L)*{
{ 1,0,0,-1,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},
{-1,0,0, 1,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0}} +
(2*EI/LLL)*{
{ 0,0,0,0,0,0},{0, 6, 3*L,0,-6, 3*L},{0,3*L,2*LL,0,-3*L, LL},
{ 0,0,0,0,0,0},{0,-6,-3*L,0, 6,-3*L},{0,3*L, LL,0,-3*L,2*LL}};
Te={{x21,y21,0,0,0,0}/L,{-y21,x21,0,0,0,0}/L,{0,0,1,0,0,0},
{0,0,0,x21,y21,0}/L,{0,0,0,-y21,x21,0}/L,{0,0,0,0,0,1}};
Ke=Transpose[Te].Kebar.Te;
Return[Ke] ];
Figure 20.10. Mathematica module to form the stiffness matrix of a two-node,
prismatic plane beam-column element.
ClearAll[L,Em,A,Izz];
ncoor={{0,0},{3,4}}; Em=100; A=125; Izz=250;
Ke= PlaneBeamColumn2Stiffness[ncoor,Em,{A,Izz},{True}];
Print["Numerical Elem Stiff Matrix: "];
Print[Ke//MatrixForm];
Print["Eigenvalues of Ke=",Chop[Eigenvalues[Ke]]];
Numerical Elem Stiff Matrix:
2436.
48.
4800.
48.
2464.
3600.
4800. 3600. 20000.
2436.
48.
4800.
48.
2464. 3600.
4800. 3600. 10000.
2436.
48.
4800.
2436.
48.
4800.
48.
2464.
3600.
48.
2464.
3600.
4800.
3600.
10000.
4800.
3600.
20000.
occurs when the element is not aligned with the global axes. The eigenvalues are obtained in closed
symbolic form, and their simplicity provides a good check that the transformation matrix (20.9) is
orthogonal. Three eigenvalues are exactly zero; one is associated with the axial (bar) stiffness and
two with the flexural (beam) stiffness.
ClearAll[L,Em,A,Izz];
ncoor={{0,0},{3*L/5,4*L/5}};
Ke= PlaneBeamColumn2Stiffness[ncoor,Em,{A,Izz},{False}];
Print["Symbolic Elem Stiff Matrix:"]; kfac=Em;
Ke=Simplify[Ke/kfac]; Print[kfac," ",Ke//MatrixForm];
Print["Eigenvalues of Ke=",kfac,"*",Eigenvalues[Ke]];
Symbolic Elem Stiff Matrix:
Em
3 ( 64 Izz +3 A L2 )
25 L3
12 ( 12 Izz +A L2 )
25 L3
12 ( 12 Izz +A L2 )
25 L3
245 LIzz2
4 ( 27 Izz +4 A L2 )
25 L3
18 Izz
5 L2
3 ( 64 Izz +3 A L2 )
25 L3
12 ( 12 Izz +A L2 )
25 L3
( 12 Izz +A L2 )
25 L3
245 LIzz2
4 ( 27 Izz +4 A L2 )
25 L3
18 Izz
5 L2
12
24 Izz
5 L2
18 Izz
5 L2
4 Izz
L
24 Izz
5 L2
18 Izz
5 L2
2 Izz
L
3 ( 64 Izz +3 A L2 )
25 L3
12
( 12 Izz +A L2 )
25 L3
12 ( 12 Izz +A L2 )
25 L3
24 Izz
5 L2
4 ( 27
24 Izz
5 L2
Izz +4 A L2 )
25 L3
18 Izz
5 L2
18 Izz
5 L2
2 Izz
L
3 ( 64 Izz +3 A L2 )
25 L3
12 ( 12 Izz +A L2 )
25 L3
24 Izz
5 L2
12 ( 12 Izz +A L2 )
25 L3
24 Izz
5 L2
4 ( 27 Izz +4 A L2 )
25 L3
185 LIzz2
18 Izz
5 L2
4 Izz
L
20.4.
2011
plate
(a)
(b)
plate
d
edge beam
edge beams
_ _
yc , ym
1m
d
1c
(c)
master nodes
rigid links
centroidal (slave) nodes
2m
z1m
xm
_
xc
2c
1m
d
z1c
E, A, Izzc constant
Le
uy1m
u
(d)
z2m
x1m
m
uy2c
uy1c
1c
uy2m
ux2m
ux1c
z2c
2c
ux2c
Figure 20.13. Plane beam with nodes offset for a rigid-link connection to plate.
Le
0
0 A
0
0
12Izzc 6Izzc 0 12Izzc 6Izzc
(L e )2 (L e )2
(L e )2
(L e )2
4Izzc 0 6Izzc
2Izzc
Le
Le
(L e )2
A
0
0
12Izzc 6Izzc
(L e )2
(L e )2
4Izzc
symm
Le
f x1s
u x1s
u f
y1s y1s
m
z1s z1s
=
,
fx2s
u x2s
u y2s fy2s
z2s
or
(20.12)
m z2s
in which A is the beam cross section area while Izzc denotes the section moment of inertia with respect to the
centroidal axis z c .
20.4.2. Rigid Link Transformation
Kinematic constraints between master and centroidal (slave) freedoms are obtained assuming that they are
connected by rigid links as pictured in Figure 20.13(c,d). This gives the centroidal(slave)-to-master transformation
u 1 0 d 0 0 0 u
x1c
x1m
u
0
1
0
0
0
0
y1c
y1m
z1c 0 0 1 0 0 0 z1m
e
e
(20.13)
u x2c = 0 0 0 1 0 d u x2m or us = Tsm um .
u y2c
u y2m
0 0 0 0 1 0
z2c
z2m
0 0 0 0 0 1
The inverse transformation: Tmc = T1
cm is obtained on replacing d with d, as is physically obvious. The
T
T
T e
Kec Tcm
= Tcm
fc = fem ,
modified stiffness equations are obtained by the congruential transformation: Tcm
which yields
2012
A
0
d
6
I
12
I
zzc
zzc
0
Le
(L e )2
6 Izzc 4 I +A d 2
E d
zzc
Le
L e A
0
d
12
I
0 e zzc2
6 Izzc
Le
(L )
6 Izzc
Le
0
d
6 Izzc
f x1m
u x1m
0 12 Ie zzc
e
L
u f
(L )2
y1m y1m
2
d 6 Izzc
2
I
A
d
zzc
z1m
Le
= m z1m
A
0
d
u x2m
f x2m
12
I
6
I
fy2m
zzc
u y2m
0
zzc
Le
(L e )2
z2m
m z2m
d 6 Izzc
4 Izzc +A d 2
e
L
2 Izzc A d 2
(20.14)
Note that the modified equations are still referred to the local system {xm , ym } pictured in Figure 20.13(c).
Prior to assembly they should be transformed to the global system {x, y} prior to assembly.
The foregoing transformation procedure has a flaw: for standard plate elements it will introduce compatibility
errors at the interface between plate and beam. This may cause the beam stiffness to be significantly underestimated. See the textbook by Cook et. al. [149] for an explanation, and references therein. The following
subsections describes a different scheme that builds Kem directly and cures that incompatibility.
20.4.3. Direct Fabrication of Offset Beam Stiffness
This approach directly interpolates displacements and strains from master nodes placed at distance d from the
beam longitudinal (centroidal) axis, as pictured in Figure 20.14. As usual the isoparametric coordinate along
the beam element varies from 1 at node 1 through +1 at node 2. The following cross section geometric
properties are defined for use below:
A=
d A,
Sz =
Ae
y d A = A d,
Izzc =
Ae
yc2
Izzm =
d A,
Ae
y 2 d A = Izzc + A d 2 ,
(20.15)
Ae
The inplane displacements are expressed in term of the master freedoms at nodes 1m and 2m . Using the
Bernoulli-Euler model gives
u xm
u ym
Nux1
0
N
y xuy1
Nuy1
z1
y N
x
N z1
Nux2
0
N
y xuy2
Nuy2
z2
y N
x
N z2
x1m
u y1m
z1m
u x2m
(20.16)
u y2m
z2m
2013
1
2
Ve
Carrying
ym
z1m
1m
uy2m
ux2m
2m
xc
E, A, Izzc constant
= 1
Le
xm
d
yc
_
Neutral axis
zc
Beam
cross
section
=1
Cross section
centroid
Symmetry plane
Figure 20.14. Plane beam fabricated directly from offset master node freedoms.
out the integral and differentiating twice with respect to the degrees of freedom yields the stiffness matrix
A
0
A d
E
e
K = e
L A
0
A d
A
0
Ad
2
2
2
2
6 (Izzc +A d )
6 (Izzc +A d )
12 (Izzc +A d )
12 (Izzc +A d )
0
Le
Le
(L e )2
(L e )2
2
2
6 (Izzc +A d )
6 (Izzc +A d )
2
2
4 (Izzc +A d )
Ad
2 (Izzc +A d )
Le
Le
0
Ad
A
0
A d
2
2
2
2
6 (Izzc +A d )
12 (Izzc +A d )
12 (Izzc +A d ) 6 (Izzc +A d )
0
Le
Le
(L e )2
(L e )2
2
2
6 (Izzc +A d )
6 (Izzc +A d )
Ad
2 (Izzc +A d 2 )
A d
4 (Izzc +A d 2 )
e
L
Le
1
0
d
1
0
d
12 (r G2 + d 2 )
12 (r G2 + d 2 )
6 (r G2 + d 2 )
6 (r G2 + d 2 )
0
0
e
e 2
e
2
L
Le
(L )
(L )
2
2
6 (r G2 + d 2 )
6
(r
+
d
)
G
4 (r G2 + d 2 )
d
2 (r G2 + d 2 )
E A d
e
e
L
L
= e
L 1
0
d
1
0
1 d
6 (r G2 + d 2 )
12 (r G2 + d 2 )
0 12 (r G2 + d 2 ) 6 (r G2 + d 2 ) 0
e
e
e 2
e
2
L
L
(L )
(L )
2
2
6 (r G2 + d 2 )
6
(r
+
d
)
G
d
2 (r G2 + d 2 )
d
4 (r G2 + d 2 )
Le
Le
(20.17)
In the second form, r G2 = Izzc /A is the squared radius of gyration of the cross section about z.
Comparing the first form of Ke in (20.17) with (20.14) shows that the bending terms are significantly different
if d
= 0. These differences underscore the limitations of the rigid link assumption.
20.5.
Another application of rigid link constraints is to modeling of layered beams, also called composite beams
as well as beam stacks. These are beam-columns fabricated with beam layers that are linked to operate
collectively as a beam member. In this section we study how to form the stiffness equations of beam stacks
under the following assumptions:
1.
The overall cross section of the beam member is rectangular and prismatic (that is, the cross section is
constant along the longitudinal direction).
2.
Both the beam stack and each of its constituent layers are prismatic.
2014
The layers are of homogeneous isotropic material. Layer material, however, may vary from layer to
layer.
The key modeling assumption is: is interlayer slip allosed or not? The two cases are studied next.
20.5.1. Layered Beam With No Interlayer Slip
The main modeling constraint here is: if all layers are of the same material, the stiffness equations should
reduce to those of a homogenous beam. To discuss how to meet this requirement it is convenient to introduce
a beam template that separates the stiffness matrix into basic and higher order components. Consider a
homogeneous, isotropic prismatic beam column element with elastic modulus E, cross section area A and
cross section second moment of inertia Ix xc with respect to its neutral (centroidal) axis. The template form of
the stiffness matrix in the local system is
K
b1
0
e = Keb + Keh = 0
K
K b1
0
0
0 0 K b1
0 0
0
0
0 K b2
0 0
K b1
0 0
0
0 K b2 0
0 0
0
0 0
0
0 K b2
+ h 0
0
0 0
0 0
0
0 K b2
0
0
0
K h3 K h4
K h4 K h5
0
0
K h3 K h4
K h4 K h5
0
0
0
0
0
0
0
0
K h3 K h4
K h4 K h5
(20.18)
0
0
K h3 K h4
K h4 K h5
in which K b1 = E A/L e , K b2 = E Izzc /L e , K h3 = 12E Izzc /(L e )3 , K h4 = 6E Izzc /(L e )2 and K h5 = 3E Izzc /L e .
Here h is a free parameter that scales the higher order stiffness Kh . If h = 1 we recover the standard beam
column stiffness (20.8). For a rectangular cross section of height H and width h, A = H h and Izzc = H 3 h/12,
and the template (20.18) becomes
H
0
0
E
h
e
=
K
Le
H
0
0
H 0
0
0
0
0 0
0
3
0 0 121 H 3
0 121 H 3
+ h E H h
0
0
H 0
0
4(L e )3
0
0
0 0
0
0 121 H 3 0 0 121 H 3
0
0
0 0
0
e
0 4 2L
0 2L e (L e )2
0 0
0
0 0
0
0 4 2L e
0 2L e (L e )2
(20.19)
0 0
0
0 4 2L 0 4 2L e
0 2L e (L e )2 0 2L e (L e )2
Next, cut the foregoing beam into two identical layers of height Hk = H/2, where k = 1, 2 is used as layer
index. See Figure 20.15(b). The layers have area Ak = Hk h = H h/2 and self inertia Ix xk = Hk3 h/12 =
H 3 h/96. The layer stiffness matrices in template form are
H
k
0
ek = E h 0
K
e
L
Hk
0
0
0
0
Hk 0
0
0
0
0 0
0
3
1
1
3
0 0 12 Hk3
0 12 Hk
+ hk E Hk h
0
0
Hk 0
0
4(L e )3
0
0
0 0
0
1
1
Hk3 0 0 12
Hk3
0 12
0 0
0
e
0
4
2L
0 2L e (L e )2
0 0
0
0 0
0
0 4 2L e
0 2L e (L e )2
,
0 0
0
0 4 2L 0 4 2L e
0 2L e (L e )2 0 2L e (L e )2
k = 1, 2.
(20.20)
Beacuse the layers are identical it is reasonable to assume the same higher order free parameter for both layers,
that is, h1 = h2 = h . The offset distances from each layer to the centroid of the full beam to the centroid
of each layer are d1 = H/4 and d2 = H/4. The rigid-link transformation matrices for (20.20) are the same
as those found in the previous Section:
1 0 H/4 0 0
0
0
0 0
0
0 1
0 0
1
0
0
0
,
T1 =
0 0
0
1 0 H/4
0
0
0
0
0
0
0
0
1
0
0
1
1 0 H/4 0 0
0
0
0 0
0
0 1
0 0
1
0
0
0
.
T2 =
0 0
0
1 0 H/4
0
0
2015
0
0
0
0
0
0
1
0
0
1
(20.21)
E, A, Izzc constant
1
d1=0
= Le
2
d2= H/4
d1=H/4
= Le
H/2
H/2
(b) 2 layers
H/3
H/3
H/3
(c) 3 layers
2
1
3
2
1
(a) 1 layer
= Le
d3= H/3
d1=H/3
d2=0
3
2
1
e = T1T K
e1 T1 + T2T K
e2 T2 gives
Transforming and adding layers contributions as K
H
0
0
E
h
e
=
K
e
L
H
0
0
0
0
H 0
0
0
0
0 0
0
3
1
H3
0 0 121 H 3
0 12
+ h E H h
0
0
H 0
0
16(L e )3
0
0
0 0
0
0 121 H 3 0 0 121 H 3
0 0
0
e
0
4
2L
0 2L e (L e )2
0 0
0
0 0
0
0 4 2L e
0 2L e (L e )2
. (20.22)
0 0
0
0 4 2L 0 4 2L e
0 2L e (L e )2 0 2L e (L e )2
H
0
0
E
h
e
=
K
e
L
H
0
0
0
0
H 0
0
0
0
0 0
0
3
1
H3
0 0 121 H 3
0 12
+ h E H h
0
0
H 0
0
36(L e )3
0
0
0 0
0
0 121 H 3 0 0 121 H 3
0 0
0
e
0
4
2L
0 2L e (L e )2
0 0
0
0 0
0
0 4 2L e
0 2L e (L e )2
, (20.23)
0 0
0
0 4 2L 0 4 2L e
0 2L e (L e )2 0 2L e (L e )2
which becomes identical to (20.19) if we set h = 9. It is not difficult to show that if the beam is divided into
N 2 layers of height H/N , the correct beam stiffness is recovered if we take h = N 2 .
If is not difficult to prove the following generalization. Suppose that the beam is cut into N layers of heights
N
N
Hk = k H , k = 1, . . . N that satisfy 1 Hk = H or 1 k = 1. To get the correct stiffness of the layered
beam take
(20.24)
hk = 1/k2 .
For example, suppose that the but is divided into 3 layers of thicknesses H1 = H3 = H/4 and H2 = H/2.
Then pick h1 = h3 = 1/( 14 )2 = 16 and h2 = 1/( 12 )2 = 4.
What is the interpretation of this boost? A spectral analysis of the combined stiffness shows that taking hk = 1
lowers the rigidity associated with the antisymmetric bending mode of the element. But this mode is associated
with shear-slippage between layers. Boosting hk as found above compensates exactly for this rigidity decay.
2016
_
y
tf =2 cm
_
x
Cross
section
c= 8 cm
tf = 2 cm
L = 80 cm
_
y
b = 9 cm
There are beam fabrications where layers can slip longitudinally past each other. One important example is
the sandwich beam illustrated in Figure 20.16. The beam is divided into three layers: 2 metal sheet facings
and a honeycomb core. The core stiffness can be neglected since its effective elastic modulus is very low
compared to the facings modulus E f . In addition, the facings are not longitudinally bonded since they are
separated by the weaker core. To form the beam stiffness by the rigid link method it is sufficient to form the
faces self-stiffness, which are identical, and the rigid-link transformation matrices:
Af
E
f 0
Kek = e
L A f
0
0
A f
0
0
12 I
6 Izz f
6 Izz f
12 Izz f
0 ezz2f
Le
Le
(L e )2
(L )
6 Izz f
6I
4 Izz f
d zze f
2 Izz f
Le
L
0
0
Af
0
0
12 Izz f
6 Izz f
12 Izz f
6 Izz f
e 2 e
0
e
L
L
(L )
(L e )2
6 Izz f
6 Izz f
2 Izz f
0
e
4 Izz f
Le
L
1 0 d
0
1
0
0 0 1
, Tk =
0 0 0
0 0 0
0 0 0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
df
0
1
, k = 1, 2.
(20.25)
where, in the notation of Figure 20.16, A f = bt f , Ix x f = bt 3f /12, d1 = (c + t f )/2 and d2 = (c + t f )/2.
The stiffness of the sandwich beam is Ke = T1T K bold1e T1 + T2T K bold2e T2 into which the numerical values
given in Figure 20.16 may be inserted. There is no need to use here the template form and of adjusting the
higher order stiffness.
2017
Consequently the principal moments of inertia are I yy and Izz , the bars being omitted
z
for convenience.
1 (x ,y ,z )
1
x
2 (x2 ,y2 ,z2 )
1 1
y
x
Six global DOF are defined at each node i: the 3 translations u xi , u yi , u zi and the 3 rotations xi ,
yi , zi .
20.6.1. Space Beam Stiffness Matrix
The element global node displacements and conjugate forces are arranged as
ue = [ u x1
u y1
u z1
x1
y1
fe = [ f x1
f y1
f z1
m x1
m y1
z1
m z1
u x2
u y2
f x2
f y2
u z2
f z2
x2
y2
m x2
z2 ]T ,
m y2
m z2 ]T .
(20.26)
The beam material is characterized by the elastic modulus E and the shear modulus G (the latter
appears in the torsional stiffness). Four cross section properties are needed: the cross section area
A, the moment of inertia J that characterizes torsional rigidity,2 and the two principal moments of
inertia I yy and Izz taken with respect to y and z , respectively. The length of the element is denoted
by L. The Bernoulli-Euler model is used; thus the effect of tranverse shear on the beam stiffness is
neglected.
To simplify the following expressions, define the following rigidity combinations by symbols:
b
R a = E A/L, R t = G J/L, R by3 = E I yy /L 3 , R by2 = E I yy /L 2 , R by = E I yy /L, Rz3
= E Izz /L 3 ,
b
Rz2
= E Izz /L 2 , Rzb = E Izz /L. Note that R a is the axial rigidity, R t the torsional rigidity, while
2
For circular and annular cross sections, J is the polar moment of inertia of the cross section wrt x.
For other sections J
has dimensions of (length)4 but must be calculated according to St. Venants theory of torsion, or approximate theories.
2018
the R b s are bending rigities scaled by the length in various ways. Then the 12 12 local stiffness
matrix can be written as3
Cf. page 79 of Pzremieniecki [603]. The presentation in this book includes transverse shear effects as per Timoshenkos
beam theory. The form (20.27) results from neglecting those effects.
2019
Ra
0
b
0
12Rz3
0
0
0
0
0
0
b
e
= 0 a 6Rz2
K
R
0
0 12R b
z3
0
0
0
0
0
0
b
0
6Rz2
0
0
0
0
R a
b
0
0
0
6Rz2
0
12R by3
0 6R by2
0
0
0
Rt
0
0
0
b
6R y2 0
4R by
0
0
0
0
0
4Rzb
0
0
0
0
0
Ra
b
0
0
0
6Rz2
0
b
b
12R y3 0
6R y2
0
0
0
R t
0
0
0
6R by2 0
2R by
0
0
0
0
0
2Rzb
0
0
0
0
0
0
b
b
12Rz3
0
0
0
6Rz2
b
b
0
12R y3 0 6R y2
0
0
0
R t
0
0
b
b
0
6R y2
0
2R y
0
b
6Rz2
0
0
0
2Rzb
0
0
0
0
0
b
b
12Rz3
0
0
0
6Rz2
0
12R by3
0
6R by2
0
0
0
Rt
0
0
0
6R by2
0
4R by
0
b
6Rz2
0
0
0
4Rzb
(20.27)
Em
Gm
A
Izz
Iyy
Jxx
options
2020
Exercises
and 6 rigid body modes. (According to the formula given in Chapter 19, the correct rank should be 6 6 = 0.)
EXERCISE 20.5 [C:25] Implement the plane bar, plane beam-column and space bar stiffness element module
in a lower level programming language and check them by writing a short test driver. [Do not bother about
the mass modules.] Your choices are C, Fortran 77 or Fortran 90. (C++ is overkill for this kind of software).
EXERCISE 20.6 [A:25] Explain why the eigenvalues of Ke of any the elements given here do not change if
Exercise 16.5 and transform the local stiffness to global coordinates via a 3 9 transformation matrix. Test
the element and verify that it has two nonzero eigenvalues.
EXERCISE 20.8 [D+A:25] Explain the logic of the space beam module listed in Figure 20.18. Assume that
e stored in Kebar is correct (it has been trranscribed from [603]. Instead, focus on
the local stiffness matrix K
how the local to global transformation is built and applied.
EXERCISE 20.9 [C:25] Test the space beam element of Figure 20.18 using the scripts given in Figures E20.1
and E20.2, and report results. Comment on whether the element exhibits the correct rank of 6.
ClearAll[L,Em,Gm,A,Izz,Iyy,Jxx];
ncoor={{0,0,0},{1,8,4}}; Em=54; Gm=30;
A=18; Izz=36; Iyy=72; Jxx=27;
Ke= SpaceBeamColumn2Stiffness[ncoor,{Em,Gm},{A,Izz,Iyy,Jxx},{True}];
Print["Numerical Elem Stiff Matrix: "];
Print[SetPrecision[Ke,4]//MatrixForm];
Print["Eigenvalues of Ke=",Chop[Eigenvalues[Ke]]];
Figure E20.1. Script for numeric testing of the space beam module of Figure 20.18.
ClearAll[L,Em,Gm,A,Izz,Iyy,Jxx];
ncoor={{0,0,0},{2*L,2*L,L}/3};
Ke=SpaceBeamColumn2Stiffness[ncoor,{Em,Gm},{A,Izz,Iyy,Jxx},{False}];
kfac=Em; Ke=Simplify[Ke/kfac];
Print["Numerical Elem Stiff Matrix: "];
Print[kfac," ",Ke//MatrixForm];
Print["Eigenvalues of Ke=",kfac,"*",Eigenvalues[Ke]];
Figure E20.2. Script for symbolic testing of the space beam module of Figure 20.18.
2021
21
FEM Program
for Space Trusses
211
TABLE OF CONTENTS
Page
21.1
21.2
21.3
21.4
21.5
21.6
21.7
21.
21.
Introduction
. . . . . . . . . . . . . . . . . . . . .
Analysis Stages . . . . . . . . . . . . . . . . . . . .
Analysis Support Modules
. . . . . . . . . . . . . . . .
21.3.1
Defining Boundary Conditions . . . . . . . . . . .
21.3.2
Modifying the Master Stiffness Equations . . . . . . . .
21.3.3
Displacement Solution and Reaction Recovery . . . . . .
21.3.4
Flattening and Partitioning Node-Freedom Vectors . . . . .
21.3.5
Internal Force Recovery
. . . . . . . . . . . . .
21.3.6
The Solution Driver
. . . . . . . . . . . . . . .
Utility Print Modules
. . . . . . . . . . . . . . . . .
Utility Graphic Modules . . . . . . . . . . . . . . . . .
21.5.1
Plot Module Calls
. . . . . . . . . . . . . . .
21.5.2
Plot View Specification . . . . . . . . . . . . . .
Example 1: Bridge Plane Truss Example
. . . . . . . . . .
Example 2: An Orbiting Truss Structure . . . . . . . . . . .
Notes and Bibliography . . . . . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . . . . . . . . . . .
212
213
213
213
215
216
218
219
2110
2111
2112
2113
2113
2115
2115
2119
2120
2121
21.3
21.1. Introduction
This Chapter presents a complete FEM program for analysis of space trusses. Why not start with
plane trusses? Three reasons. First, plane truss code already appeared in Chapter 4, although most
components were tailored to the example truss of Chapters 23. Second, the difference between
2D and 3D implementation logic for truss analysis is insignificant. Finally, space trusses are more
interesting in engineering applications, particularly for orbiting space structures.
The overall organization of the space truss analysis program is diagramed in Figure 21.1.
The description is done in bottom up
fashion. That means the element level
modules are presented first, followed
by midlevel modules, ending with the
driver program. This means traversing
the diagram of Figure 21.1 left to right
and bottom to top.
The program includes some simple
minded graphics, including animation.
The graphic modules are provided in
the posted Notebook but not described
in detail. Data structures are explained
along the way as they arise.
User prepares
script for each
problem
Problem
Driver
Utilities:
Tabular Printing,
Graphics, etc
Analysis
Driver
Assembler
Element
Stiffness
BC
Application
Built in
Equation
Solver
Presented in
Chapter 20
Internal
Force Recovery
Element Int
Forces
Element Library
Figure 21.1. Overall organization of space truss analysis program.
Assembly of the master stiffness matrix, with a subordinate element stiffness module.
Modification of master stiffness matrix and node force vector for displacement boundary
conditions.
Solution of the modified equations for displacements. For the program presented here the built
in Mathematica function LinearSolve is used.
Upon executing the processing steps, the displacements are available. The following postprocessing
steps follow.
Figure 21.2. Master stiffness assembly module for a space truss. The element stiffness
module SpaceBar2Stiffness, already discussed in Chapter 20, is listed for convenience.
(21.1)
elenod
21.3
ClearAll[nodxyz,elemat,elefab,eleopt];
nodxyz={{0,0,0},{10,0,0},{10,10,0}};
elenod= {{1,2},{2,3},{1,3}};
elemat= Table[100,{3}]; elefab= {1,1/2,2*Sqrt[2]}; prcopt= {False};
K=SpaceTrussMasterStiffness[nodxyz,elenod,elemat,elefab,prcopt];
Print["Master Stiffness of Example Truss in 3D:\n",K//MatrixForm];
Print["eigs of K:",Chop[Eigenvalues[N[K]]]];
Master Stiffness of Example Truss in 3D:
20 10 0 10 0 0 10 10 0
10 10 0
0
0
0 10 10 0
0
0
0
0
0
0
0
0
0
10
0
0 10 0
0 0
0
0
0
0
0
0
5 0
0
5 0
0
0
0
0
0
0
0
0
0
10 10 0
0
0
0 10 10
0
10 10 0
0 5
0 10 15
0
0
0
0
0
0
0
0
0
0
eigs of K: {45.3577, 16.7403, 7.902, 0, 0, 0, 0, 0, 0}
elemat
Element material properties. The only such property required for this analysis is
the elastic modulus E of each element. These are put in an element-by-element list:
{ E1, E2, . . . Ee }, where e is the total number of elements of the truss.
elefab
Element fabrication properties. The only such property required for this analysis is
the cross section area A of each element. These are put in an element-by-element
list: { A1, A2, . . . Ae }, where e is the total number of elements of the truss.
prcopt
Processing option list. Only one option is required in the assembler and so prcopt
is simply { numer }. Here numer is a logical flag set to { True } to tell the assembler
to carry out element stiffness computations in floating-point arithmetic. Else set to
{ False } to keep computations in exact arithmetic or symbolic form.
The module returns the assembled stiffness, stored as a full 3n 3n matrix, as function value.
Details of the assembly process are discussed in Chapter 25 for more general scenarios. Here we
note that the module uses the freedom-pointer-table technique described in 3.4 for merging each
element stiffness matrix into the master stiffness.
The assembler is tested by the script shown in the top cell of Figure 21.3. The script defines the
example truss of Chapters 23 as a 3D structure with its three members
placed in the {x, y} plane.
See Figure 21.4. The axial rigidity values E A = 100, 50 and 200 2 for elements 1, 2 and 3,
respectively, have to be untangled because E is placed in elemat whereas A goes to elefab.
To split E A we take E = 100 for the three elements. Thus elemat = { 100,100,100 } =
Table[100,{ 3 }] whereas elefab = { 1,1/2,2*Sqrt[2] }.
Running the assembler in exact arithmetic gives the 9 9 master stiffness shown in the bottom
cell of Figure 21.3. Taking its eigenvalues gives 6 zeros, which is the expected number in three
dimensions.
215
(21.2)
;;;
;;;;
fy3 = 1
uz3 = 0
fx3 = 2
;;;;;
;
(3)
(2)
(1)
z
u x1= u y1 = u z1 = 0
;;;
2
;;
;
u y2 = u z2 = 0
Each first-level entry of this list pertains to a node. The second level is associated with freedoms:
displacements in the x, y and z directions. Freedom activity is marked by tag 0 or 1. A 1-tag
means that the displacement is prescribed, whereas a 0-tag indicates that the force is known. Thus
{ 1,1,1 } for node 1 means that the node is fixed in the three directions.
The node freedom value list, internally called nodval, gives the prescribed value of the force or
the displacement. For the example truss it is
nodval = { { 0,0,0 },{ 0,0,0 },{ 2,1,0 } }
(21.3)
For node 1, the tag entry is { 1,1,1 } and the value entry is { 0,0,0 }. This says that u x1 = u y1 =
u z1 = 0. For node 2 it says that f x2 = 0 and u y2 = u z2 = 0. For node 3 it says that f x3 = 2,
f y3 = 1 and u z3 = 0. The entries of nodval can be integers, floating point numbers, or symbols,
whereas those in nodtag can only be 0 or 1.1
21.3.2. Modifying the Master Stiffness Equations
The modification of the master stiffness equations K u = f for displacement BCs produces the
u = f. This is done by the two modules listed in Figure 21.5. These modules
modified system K
are not restricted to space trusses, and may in fact be used for more general problems.
The stiffness modifier is invoked by
Kmod = ModifiedMasterStiffness[nodtag, K]
(21.4)
Other tag values may be implemented in more complicated programs to mark multifreedom constraints, for example.
216
Figure 21.5. Modules to modify the master stiffness matrix and node force vector
to apply the displacement boundary conditions.
nodtag
The modified stiffness matrix, which has the same order as K, is returned as function value.
The force modifier is invoked by
fmod = ModifiedNodeForces[pdof, pval, K, f]
(21.5)
nodval
The master stiffness matrix K produced by the assembler module (before modification). This is only used if at least one of the displacement BCs is non-homogeneous.
The modified force vector, which has the same order as f, is returned as function value.
The modules are tested by the script listed in the top cell of Figure 21.6. It uses symbolic master
stiffness equations of order 6. The test illustrates a not well known feature of Mathematica: use of
Array function to generate subscripted symbolic arrays of one and two dimensions. The results,
shown in the bottom cell of Figure 21.6, should be self explanatory.
Remark 21.1. On entry, the modification modules of Figure 21.5 build auxiliary lists pdof and pval to
simplify the modification logic. pdof is a list of the prescribed degrees of freedom identified by their equation
number in the master stiffness equations. For example, if freedoms 4, 7, 9 and 15 are specified, pdof =
{ 4,7,9,15 }. These indices are stored in ascending order. pval is a list of the prescribed displacement
values listed in pdof. These lists are constructed by the modules listed in Figure 21.7. The calls are pdof =
PrescribedDOFTags[nodtag] and pval = PrescribedDOFValues[nodtag,nodval].
217
Master Stiffness:
K[1, 1]
K[2, 1]
K[3, 1]
K[4, 1]
K[5, 1]
K[6, 1]
Remark 21.2. The logic of ModifiedMasterStiffness is straightforward. Construct pdof, then clear
appropriate rows and columns of K and place ones on the diagonal. Note the use of the Mathematica function
Length to control loops: np=Length[pdof] sets np to the number of prescribed freedoms. Similarly
n=Length[K] sets n to the order of the master stiffness matrix K, which is used to bound the row and column
clearing loop. These statements may be placed in the list that declares local variables.
Remark 21.3. ModifiedNodalForces has more complicated logic because it accounts for nonhomogeneous
BCs. On entry it constructs pdof and pval. If nonzero values appear in pval, the original entries of f are modified as described in 4.1.2, and the end result is the effective force vector. Force vector entries corresponding
to the prescribed displacement values are replaced by the latter in accordance with the prescription (4.13). If
there are nonhomomogeneous BCs it is important that the stiffness matrix provided as third argument be the
master stiffness before modification by ModifiedStiffnessMatrix. This is because stiffness coefficients
that are cleared by ModifiedStiffnessMatrix are needed for modifying the force vector.
21.3
PrescDisplacementDOFTags[nodtag_]:= Module [
{j,n,numnod=Length[nodtag],pdof={},k=0,m},
For [n=1,n<=numnod,n++, m=Length[nodtag[[n]]];
For [j=1,j<=m,j++, If [nodtag[[n,j]]>0,
AppendTo[pdof,k+j]];
]; k+=m;
]; Return[pdof]];
PrescDisplacementDOFValues[nodtag_,nodval_]:= Module [
{j,n,numnod=Length[nodtag],pval={},k=0,m},
For [n=1,n<=numnod,n++, m=Length[nodtag[[n]]];
For [j=1,j<=m,j++, If [nodtag[[n,j]]>0,
AppendTo[pval,nodval[[n,j]]]];
]; k+=m;
]; Return[pval]];
Figure 21.7. Modules to build auxiliary lists pdof and pval from node-by-node BC data.
(21.7)
where K is the original master stiffness matrix before modification, and u the displacement vector
computed by LinearSolve.
21.3.4. Flattening and Partitioning Node-Freedom Vectors
In the analysis process one often needs displacement and force vectors in two different list formats.
For example, the computed node displacement vector produced by (21.6) for the example truss in
3D is
u = { 0,0,0,0,0,0,0.4,-0.2,0 }
(21.8)
Following the terminology of Mathematica this will be called the flat form of the displacement
vector. For postprocessing purposes (especially printing and plotting) it is convenient to rearrange
to the node by node form
noddis = { { 0,0,0 },{ 0,0,0 },{ 0.4,-0.2,0 } }
(21.9)
This will be called the node-partitioned form of the displacement vector. Similar dual formats exist
for the node force vector. In flat form this is called f and in node-partitioned form nodfor.
FlatNodePartVector[nv_]:=Flatten[nv];
NodePartFlatVector[nfc_,v_]:= Module [
{i,k,m,n,nv={},numnod},
If [Length[nfc]==0, nv=Partition[v,nfc]];
If [Length[nfc]>0, numnod=Length[nfc]; m=0;
nv=Table[0,{numnod}];
For [n=1,n<=numnod,n++, k=nfc[[n]];
nv[[n]]=Table[v[[m+i]],{i,1,k}];
m+=k]];
Return[nv]];
219
Figure 21.9. Modules to compute internal forces and stresses in a space truss.
The utility modules listed in Figure 21.8 can be used to pass from one format to the other. To flatten
the node-partitioned form of a vector, say nv, say
v = FlatNodePartVector[nv]
(21.10)
(21.11)
where nfc is the number of freedoms per node. For space trusses this is 3 so appropriate conversion
calls are noddis = NodePartFlatVector[3,u] and nodfor = NodePartFlatVector[3,f].
Remark 21.4.
21.3
ClearAll[nodxyz,elenod,elemat,elefab,noddis];
nodxyz={{0,0,0},{10,0,0},{10,10,0}}; elenod={{1,2},{2,3},{1,3}};
elemat= Table[100,{3}]; elefab= {1,1/2,2*Sqrt[2]};
noddis={{0,0,0}, {0,0,0}, {4/10,-2/10,0}}; prcopt={False};
elefor=SpaceTrussIntForces[nodxyz,elenod,elemat,elefab,noddis,prcopt];
Print["Int Forces of Example Truss:",elefor];
Print["Stresses:",SpaceTrussStresses[elefab,elefor,prcopt]];
Int Forces of Example Truss: { 0, 1, 2*Sqrt[2] }
Stresses: { 0, 2, 1 }
in Figure 21.9. Module SpaceTrussIntForces computes the internal forces (axial forces) in all
truss members. It is invoked by
elefor = SpaceTrussIntForces[nodxyz,elenod,elemat, elefab,noddis,prcopt]
(21.12)
Five of the arguments: nodxyz, elenod, elemat, elefab and prcopt, are the same used in the
call (21.1) to the stiffness assembler. The additional argument, noddis, contains the computed
node displacements arranged in node-partitioned form
noddis = { { ux1,uy1,uz1 },{ ux2,uy2,uz2 }, . . . { uxn,uyn,uzn } }
(21.13)
This form can be obtained from the computed displacement solution through the utility module
(21.11). As function value SpaceTrussIntForces returns a list of element axial forces
{ p1, p2 . . . pe }
(21.14)
(21.15)
Arguments ncoor, Em, A and options are the same as in the call to SpaceBar2Stiffness
described in 20.2.2. The additional argument, ue, contains the flat list of the six element node
displacements in the global system arranged as { ux1,uy1,ux1,ux2,ux2,uz2 }. The recovery
equation is the subject of Exercise 21.4.
The last module in Figure 21.9 computes the member stresses simply by dividing the internal forces
by the cross section areas. It is invoked as
elesig = SpaceTrussStresses[elefab,elefor,prcopt]
(21.16)
Here elefab and prcopt are as before, and elefor contains the element forces computed by
SpaceTrussIntForces. The element axial stresses are returned as function value.
The statements of the top cell of Figure 21.9 exercise the internal force recovery for the example
truss in 3D, requesting
exact calculiations. Array p is printed in the bottom cell. The axial forces
(21.17)
All arguments: nodxyz, elenod, elemat, elefab, nodtag, nodval and prcopt, have been
described in previous subsections. The module returns four lists:
noddis
nodfor
elefor
elesig
Element stresses.
Note that the listing of SpaceTrussSolution in Figure 21.11 has two commented out eigenvalue
computations, one for the master stiffness K and one for the modified stiffness Kmod. Decommenting
those commands comes in handy when setting up and running a new problem if errors are detected.
SpaceTrussSolution[nodxyz_,elenod_,elemat_,elefab_,nodtag_,nodval_,
prcopt_]:= Module[{K,Kmod,f,fmod,u,noddis,nodfor,elefor,elesig},
K=SpaceTrussMasterStiffness[nodxyz,elenod,elemat,elefab,prcopt];
(* Print["eigs of K=",Chop[Eigenvalues[N[K]]]]; *)
Kmod=ModifiedMasterStiffness[nodtag,K];
f=FlatNodePartVector[nodval];
fmod=ModifiedNodeForces[nodtag,nodval,K,f];
(* Print["eigs of Kmod=",Chop[Eigenvalues[N[Kmod]]]]; *)
u=LinearSolve[Kmod,fmod]; u=Chop[u]; f=Chop[K.u, 10.0^(-8)];
nodfor=NodePartFlatVector[3,f]; noddis=NodePartFlatVector[3,u];
elefor=Chop[SpaceTrussIntForces[nodxyz,elenod,elemat,elefab,
noddis,prcopt]];
elesig=SpaceTrussStresses[elefab,elefor,prcopt];
Return[{noddis,nodfor,elefor,elesig}];
];
Figure 21.11. The analysis driver module.
21.4.
Utility print modules are used to display input and output data in tabular form. The following six modules are
provided in Cell 6 of the SpaceTruss.nb notebook.
To print the node coordinates in nodxyz:
PrintSpaceTrussNodeCoordinates[nodxyz,title,digits]
(21.18)
To print the element nodes in elenod, element materials in elemat and element fabrications in elefab:
PrintSpaceTrussElementData[elenod,elemat,elefab,title,digits]
2112
(21.19)
(21.20)
(21.21)
(21.22)
To print the element internal forces in elefor and element stresses in elesig:
PrintSpaceTrussElemForcesAndStresses[elefor,elesig,title,digits]
(21.23)
In all cases, title is an optional character string to be printed as a title before the table; for example "Node
coordinates of bridge truss". To eliminate the title, specify "" (two quote marks together).
The last argument of the print modules: digits, is optional. If set to { d,f } it specifies that floating point
numbers are to be printed with room for at least d digits, with f digits after the decimal point.
If digits is specified as a void list: { }, a preset default is used for d and f.
21.5.
Graphic modules that support preprocessing are placed in Cells 4 and 5 of the SpaceTruss.nb notebook.
These display unlabeled elements, elements and nodes with labels, deformed shapes and element stress levels.
21.5.1. Plot Module Calls
To plot elements only:
PlotSpaceTrussElements[nodxyz,elenod,title,{ view,aspect,{ } }]
(21.24)
(21.26)
(21.27)
In the foregoing nodxyz, elenod, noddis, noddfor elefor and elesig have been described above. The
other arguments are as follows.
view
2113
aspect
Vertical-to-horizontal aspect ratio of the plot as it appears on a Notebook cell. Three possibilities.
If set to 1, the Mathematica default Aspect->Automatic is chosen. If set to zero, an aspect
ratio is computed by the plot module as appropriate. If set to a positive number, the aspect ratio
is set to that number.
labels
frn
Radius of circle drawn around each node expressed as percentage of plot size.
fex
fex
elabels
fre
fntfam
fntsiz
fntwgt
Font weight used for element labels. Typical settings are "Plain" or Bold.
Node labels are always drawn in boldface.
fntslt
Font slant used for element labels. Typical settings are "Plain", "Italics" or
"Slanted". Node labels are always drawn in Plain.
amplif
The displacement amplification factor to be used by PlotSpaceTrussDeformedShape. Usually a value much larger than one (say 100 or 1000) is necessary to visualize displacements in
actual structures. Becomes a list if the call is to draw several shapes (for example undeformed
and deformed). For example setting amplif to { 0,100 } will draw two shapes: the undeformed
configuration and one with magnification of 100. If more than one shape is to be drawn the
colors specification comes in handy.
box
A list of points, specified by their {x, y, z} global coordinates, that forms a box that encloses the
plot. Used in PlotSpaceTrussDeformedShape and PlotSpaceTrussStresses. The box is
converted to a frame by the view projector. This is useful for various purposes, one being to do
realistic animations by drawing a sequence of deformed shapes moving inside this box.
colors
sigfac
Because of the confusing way Mathematica handles plots, (some features do scale with plot size while others,
such as font sizes, do not), some interactive experimentation with dimension specs seems inevitable.
2114
21.6
Up vector, aka
vertical screen
direction
V = ys
Horizontal
screen direction
an
en
pl
re
Sc
U = xs
y
O
x
W = zs
View direction
Graphics where the eye point C is at a finite distance produce perspective plots. The Graphics3D system of Mathematica
allows perpective plotting. However the plots described here use only the 2D graphics subset.
2115
(b)
y
(7)
x (13)
(1) 3
(9)
(19)
(18)
(2)
(10)
(15)
(14)
;;
(8)
10
16
10
span: 6 bays @ 10 = 60
(3)
10
(11)
(16)
(20)
(4)
10
(12)
(21) (17)
(5)
12
;;
10
11
(6)
Figure 21.13. Six-bay bridge plane truss used as example problem: (a) truss structure
showing supports and applied loads; (b) finite element idealization as pin-jointed truss.
The driver is listed in Figure 21.14. Preprocessing statements appear on top, with light green
background. These define the problem through specification of the following data structures.3
NodeCoordinates
ElemNodes
ElemMaterials
ElemFabrications Same configuration as elefab. This list is built up from four repeating
cross sectional areas: Abot, Atop, Abat and Adia, for the areas of bottom
longerons, top longerons, battens and diagonals, respectively.
NodeDOFTags
NodeDOFValues
The input data structures can be shown in tabular form for convenient inspection using print utility
modules. Printed tables are shown on the left of Figure 21.15.
Running the solution module returns computed displacements, node forces including reactions,
internal forces and member stress. These are printed with utility modules. These results are shown
3
Note the use of longer mnemonic names in the problem driver. For example NodeCoordinates instead of nodxyz.
This simplifies the preparation of problem solving assignments since driver scripts are more self-documenting. It also
helps grading returned assignments.
2116
21.6
NodeCoordinates={{0,0,0},{10,5,0},{10,0,0},{20,8,0},{20,0,0},{30,9,0},
{30,0,0},{40,8,0},{40,0,0},{50,5,0},{50,0,0},{60,0,0}};
ElemNodes={{1,3},{3,5},{5,7},{7,9},{9,11},{11,12},
{1,2},{2,4},{4,6},{6,8},{8,10},{10,12},
{2,3},{4,5},{6,7},{8,9},{10,11},
{2,5},{4,7},{7,8},{9,10}};
PrintSpaceTrussNodeCoordinates[NodeCoordinates,"Node coordinates:",{}];
numnod=Length[NodeCoordinates]; numele=Length[ElemNodes];
Em=1000; Abot=2; Atop=10; Abat=3; Adia=1;
ElemMaterials= Table[Em,{numele}];
ElemFabrications={Abot,Abot,Abot,Abot,Abot,Abot,Atop,Atop,Atop,Atop,
Atop,Atop,Abat,Abat,Abat,Abat,Abat,Adia,Adia,Adia,Adia};
PrintSpaceTrussElementData[ElemNodes,ElemMaterials,ElemFabrications,
"Element data:",{}];
ProcessOptions= {True};
view={{0,1,0},{0,0,1}};
labels={{True,0.06,-1.5,1.5},{True,0.12},{"Times",11,"Roman"}};
PlotSpaceTrussElementsAndNodes[NodeCoordinates,ElemNodes,
"bridge mesh",{view,-1,labels}];
NodeDOFTags= Table[{0,0,1},{numnod}];
NodeDOFValues=Table[{0,0,0},{numnod}];
NodeDOFValues[[3]]={0,-10,0}; NodeDOFValues[[5]]= {0,-10,0};
NodeDOFValues[[7]]={0,-16,0};
NodeDOFValues[[9]]={0,-10,0}; NodeDOFValues[[11]]={0,-10,0};
NodeDOFTags[[1]]= {1,1,1};
(* fixed node 1 *)
NodeDOFTags[[numnod]]={0,1,1}; (* hroller @ node 12 *)
PrintSpaceTrussFreedomActivity[NodeDOFTags,NodeDOFValues,
"DOF Activity:",{}];
{NodeDisplacements,NodeForces,ElemForces,ElemStresses}=
SpaceTrussSolution[ NodeCoordinates,ElemNodes,ElemMaterials,
ElemFabrications,NodeDOFTags,NodeDOFValues,ProcessOptions ];
PrintSpaceTrussNodeDisplacements[NodeDisplacements,
"Computed node displacements:",{}];
PrintSpaceTrussNodeForces[NodeForces,
"Node forces including reactions:",{}];
PrintSpaceTrussElemForcesAndStresses[ElemForces,ElemStresses,
"Int Forces and Stresses:",{}];
view={{0,1,0},{0,0,1}}; box={{0,-4,0},{60,-4,0},{60,10,0},{0,10,0}};
PlotSpaceTrussDeformedShape[NodeCoordinates,ElemNodes,NodeDisplacements,
{0,1},box,"deformed shape (unit magnif)",{view,-1,{"black","blue"}}];
PlotSpaceTrussStresses[NodeCoordinates,ElemNodes,ElemStresses,1,box,
"axial stresses in truss members",{view,0,labels}];
Figure 21.14. Driver script for analysis of the 6-bay plane bridge truss. Preprocessing statements
in light green background. Processing and postprocessing statements in light blue.
2117
ycoor
0.000000
5.000000
0.000000
8.000000
0.000000
9.000000
0.000000
8.000000
0.000000
5.000000
0.000000
0.000000
data:
nodes
{ 1, 3}
{ 3, 5}
{ 5, 7}
{ 7, 9}
{ 9, 11}
{ 11, 12}
{ 1, 2}
{ 2, 4}
{ 4, 6}
{ 6, 8}
{ 8, 10}
{ 10, 12}
{ 2, 3}
{ 4, 5}
{ 6, 7}
{ 8, 9}
{ 10, 11}
{ 2, 5}
{ 4, 7}
{ 7, 8}
{ 9, 10}
DOF Activity :
node xtag ytag
1
1
1
2
0
0
3
0
0
4
0
0
5
0
0
6
0
0
7
0
0
8
0
0
9
0
0
10
0
0
11
0
0
12
0
1
modulus
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
1000.00
ztag
1
1
1
1
1
1
1
1
1
1
1
1
zcoor
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
area
2.00
2.00
2.00
2.00
2.00
2.00
10.00
10.00
10.00
10.00
10.00
10.00
3.00
3.00
3.00
3.00
3.00
1.00
1.00
1.00
1.00
xvalue
0
0
0
0
0
0
0
0
0
0
0
0
zdispl
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
yvalue
0
0
10
0
10
0
16
0
10
0
10
0
zvalue
0
0
0
0
0
0
0
0
0
0
0
0
Figure 21.15. Bridge truss example: tabular printed output. On the left: node, element and freedom
data. On the right: computed displacements, node forces, internal forces and member stresses.
bridge mesh
7
1
13
3
14
19
10
20
16
8
18
2
15
7
11
10
21
5
17
11
12
6
12
deformed shape
Figure 21.16. Bridge truss example: graphic output collected in one figure.
2118
21.7
2119
And even if it were available, the source code would be difficult to follow given its complexity and the use of lower order
languages such as Fortran.
2120
Exercises
EXERCISE 21.1 [D:10] The logic of SpaceTrussMasterStiffness cannot be used for structures other
than space trusses. Justify this assertion.
EXERCISE 21.2 [D:10] The logic of ModifiedMasterStiffness and ModifiedNodeForces is not re-
stricted to space trusses, but can be used for any FEM program that stores K and f as full arrays. Justify this
assertion.
EXERCISE 21.3 [D:20] The logic of PrescDisplacementDOFTags and PrescDisplacementDOFValues
is not restricted to a fixed number of DOF per node. Justify this assertion.
EXERCISE 21.4 [A:15] Show that the longitudinal elongation of a space bar can be computed directly from
(E21.1)
in which x21 = x2 x1 , u x21 = u x2 u x1 , etc, and is the bar length. Hence justify the formula used in
module SpaceBar2IntForce listed in Figure 21.9 to recover the axial force p = (E A/)d.
EXERCISE 21.5 [C:25] Analyze the structure shown in Figure E21.1. This is a pin-jointed truss model of a
200-in-high (5m) transmission tower originally proposed by Fox and Schmit in 1964 [281] as a test for early
automated-synthesis codes based on FEM. It became a standard benchmark for structural optimization.
The truss has 10 joints (nodes) and 25 members (elements). The truss geometry and node numbering are
defined in Figure E21.1(a). Joints 1 and 2 at the top of the tower lie on the {x, z} plane. The truss (but not the
loads) is symmetric about the {y, z} and {x, z} planes. Figure E21.1(b) gives the element numbers.
(a)
z
1
Coordinates:
node 2 ( 37.5,0,200)
node 1 (37.5,0,200)
(b)
1 (1) 2
(8)
(9)
(5)
(4)
(10)
100 in
75 in
(13) 6
(20)
75 in
(14)
(21)
(23)
(15)
(24)
10
100 in
200 in
4
5
(22)
10
(6)
(7)
(3)
(2)
(12)
3
7 (11)
(25)
(18)
(19)
(17)
(16)
200 in
Figure E21.1. 25-member space truss model of a transmission tower. (a): Geometry definition and
node numbers; (b) element numbers. For member properties and loads see Tables E21.1 and E21.2.
2121
Table E21.1
Element
A (sq in)
Element
A (sq in)
Element
A (sq in)
1
2
3
4
5
6
7
8
9
0.033
2.015
2.015
2.015
2.015
2.823
2.823
2.823
2.823
10
11
12
13
14
15
16
17
18
0.010
0.010
0.014
0.014
0.980
0.980
0.980
0.980
1.760
19
20
21
22
23
24
25
1.760
1.760
1.760
2.440
2.440
2.440
2.440
Table E21.2
Node
x-load (lb)
y-load (lb)
z-load (lb)
1
2
3
6
1000
0
500
500
10000
10000
0
0
5000
5000
0
0
The members are aluminum tubes with the cross sections listed in Table E21.1.5 The modulus of elasticity is
E = 107 psi for all members. The specific weight is 0.1 lb/in3 . The applied load case to be studied is given
in Table E21.2.
Analyze the transmission tower using the program provided in the SpaceTruss.nb Notebook (downloadable
from Chapter 21 Index). Results to report: driver program cell, node displacements and element stresses.
(More details on HW assignment sheet.) Note: as a quick check on model preparation, the total weight of the
tower should be 555.18 lb.
A Fix for Version 6. Cell 0 added to Notebook SpaceTruss.nb on November 1, 2008 so that plots will
display correctly under Mathematica Version 6.0 and later versions. If plots dont show up correctly please
notify instructor.
Data taken from an optimal design reported by Venkayya, Khot and Reddy in 1968 [801].
2122
22
FEM Programs
for Plane Trusses
and Frames
221
222
TABLE OF CONTENTS
Page
22.1. Introduction
22.2. Analysis Stages
22.3. Analysis Support Modules
22.3.1. Assembling the Master Stiffness . . .
22.3.2. Modifying the Master Stiffness Equations
22.3.3. Internal Force Recovery . . . . . .
22.3.4. Graphic Modules
. . . . . . .
22.4. A Bridge Truss Example
22. Exercises . . . . . . . . . . . . . .
222
. .
.
. .
. .
.
. .
.
. .
. .
. .
. .
. .
. . . . .
223
223
223
. . . 223
. .
225
. . . 226
. .
226
226
. . . 2211
223
22.3
22.1. Introduction
This Chapter presents a complete FEM program for analysis of plane trusses, programmed in
Mathematica. The program includes some simple minded graphics, including animation. Exercises
22.2-22.4 discuss a complete FEM program for frame analysis for homework assignments.
The description is done in bottom up fashion. That means the basic modules are presented, then
the driver program. Graphic modules are provided in posted Notebooks but not explained.
22.2. Analysis Stages
As in all FEM programs, the analysis of a structure by the Direct Stiffness Method involves three
major stages: (I) preprocessing or model definition, (II) processing, and (III) postprocessing.
The preprocessing portion of the plane truss analysis is done by the driver program, which directly
sets the data structures.
I.1
I.2
Assembly of the master stiffness matrix, with a subordinate element stiffness module.
II.2
Modification of master stiffness matrix and node force vector for displacement boundary
conditions.
II.3
Solution of the modified equations for displacements. For the programs presented here the
built in Mathematica function LinearSolve is used.
Upon executing these three processing steps, the displacements are available The following postprocessing steps may follow:
III.1
III.2
III.3
224
PlaneTrussMasterStiffness[nodcoor_,elenod_,
elemat_,elefab_,eleopt_]:=Module[
{numele=Length[elenod],numnod=Length[nodcoor],
e,eNL,eftab,ni,nj,i,j,ncoor,mprop,fprop,opt,Ke,K},
K=Table[0,{2*numnod},{2*numnod}];
For [e=1, e<=numele, e++,
eNL=elenod[[e]]; {ni,nj}=eNL;
eftab={2*ni-1,2*ni,2*nj-1,2*nj};
ncoor={nodcoor[[ni]],nodcoor[[nj]]};
mprop=elemat[[e]]; fprop=elefab[[e]]; opt=eleopt;
Ke=PlaneBar2Stiffness[ncoor,mprop,fprop,opt];
neldof=Length[Ke];
For [i=1, i<=neldof, i++, ii=eftab[[i]];
For [j=i, j<=neldof, j++, jj=eftab[[j]];
K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]]
];
];
]; Return[K];
];
PlaneBar2Stiffness[ncoor_,mprop_,fprop_,opt_]:= Module[
{x1,x2,y1,y2,x21,y21,Em,Gm,rho,alpha,A,numer,L,LL,LLL,Ke},
{{x1,y1},{x2,y2}}=ncoor; {x21,y21}={x2-x1,y2-y1};
{Em,Gm,rho,alpha}=mprop; {A}=fprop; {numer}=opt;
If [numer,{x21,y21,Em,A}=N[{x21,y21,Em,A}]];
LL=x21^2+y21^2; L=PowerExpand[Sqrt[LL]]; LLL=Simplify[LL*L];
Ke=(Em*A/LLL)*{{ x21*x21, x21*y21,-x21*x21,-x21*y21},
{ y21*x21, y21*y21,-y21*x21,-y21*y21},
{-x21*x21,-x21*y21, x21*x21, x21*y21},
{-y21*x21,-y21*y21, y21*x21, y21*y21}};
Return[Ke]
];
nodcoor={{0,0},{10,0},{10,10}};
elenod= {{1,2},{2,3},{1,3}};
elemat= Table[{100,0,0,0},{3}];
elefab= {{1},{1/2},{2*Sqrt[2]}};
eleopt= {True};
K=PlaneTrussMasterStiffness[nodcoor,elenod,
elemat,elefab,eleopt];
Print["Master Stiffness of Example Truss:"];
Print[K//MatrixForm];
Figure 22.1. Master stiffness assembly module, with test statements in red.
nodcoor
elenod
elemat
224
225
22.3
ModifiedMasterStiffness[pdof_,K_] := Module[
{i,j,k,n=Length[K],np=Length[pdof],Kmod}, Kmod=K;
For [k=1,k<=np,k++, i=pdof[[k]];
For [j=1,j<=n,j++, Kmod[[i,j]]=Kmod[[j,i]]=0];
Kmod[[i,i]]=1
];
Return[Kmod]
];
ModifiedNodeForces[pdof_,f_] := Module[
{i,k,np=Length[pdof],fmod}, fmod=f;
For [k=1,k<=np,k++, i=pdof[[k]]; fmod[[i]]=0];
Return[fmod]
];
K=Array[Kij,{6,6}];
Print["Assembled Master Stiffness:"];Print[K//MatrixForm];
K=ModifiedMasterStiffness[{1,2,4},K];
Print["Master Stiffness Modified For Displacement B.C.:"];
Print[K//MatrixForm];
f=Array[fi,{6}];
Print["Node Force Vector:"]; Print[f];
f=ModifiedNodeForces[{1,2,4},f];
Print["Node Force Vector Modified For Displacement B.C.:"];
Print[f];
Figure 22.2. Modifying the master stiffness and node force vector for displacement
boundary conditions, with test statements in red.
elefab
eleopt
The assembler uses the freedom-pointer-table technique described in 3.4 for merging the element
stiffness matrix into the master stiffness. The module returns the master stiffness matrix K in list
K, which is stored as a full matrix.
The statements at the end of Figure 22.1 test this module by forming and printing the master stiffness
matrix of the example truss. These statements are executed when the cell is initialized.
22.3.2. Modifying the Master Stiffness Equations
Following the assembly process the master stiffness equations Ku = f must be modified to account
for displacement boundary conditions. This is done through the computer-oriented equation modification process described in 3.4.2. Modules that perform this operation are listed in Figure 22.2,
along with test statements.
Module ModifiedMasterStiffness carries out this process for the master stiffness matrix
K, whereas ModifiedNodalForces does this for the nodal force vector f. The logic of
ModifiedNodalForces is considerably simplified by assuming that all prescribed displacements
are zero, that is, the BCs are homogeneous. This is the case in the implementation shown here.
Module ModifiedMasterStiffness receives two arguments:
225
226
pdof
A list of the prescribed degrees of freedom identified by their global number. For
the example truss of Chapters 2-3 this list would have three entries: {1, 2, 4}, which
are the freedom numbers of u x1 , u y1 and u y2 in u.
The master stiffness matrix K produced by the assembler module described in the
previous subsection.
The module clears appropriate rows and columns of K, places ones on the diagonal, and returns the
thus modified K as function value. Note the use of the Mathematica function Length to control
loops: np=Length[pdof] sets np to the number of prescribed freedoms. Similarly n=Length[K]
sets n to the order of the master stiffness matrix K, which is used to bound the row and column
clearing loop. These statements may be placed in the list that declares local variables.
Module ModifiedNodalForces has a very similar structure and logic and need not be described in
detail. It is important to note, however, that for homogeneous BCs the two module are independent
of each other and may be called in any order. On the other hand, if there were nonzero prescribed
displacements the force modification must be done before the stiffness modification. This is because
stiffness coefficients that are cleared in the latter are needed for modifying the force vector.
The test statements at the bottom of Figure 22.2 are chosen to illustrate another feature of Mathematica: the use of the Array function to generate subscripted symbolic arrays of one and two
dimensions. The test output should be self explanatory and is not shown here. Both the force vector
and its modified form are printed as row vectors to save space.
22.3.3. Internal Force Recovery
Module PlaneTrussIntForces listed in Figure 22.3 computes the internal forces (axial forces)
in all truss members. The first five arguments are the same as for the assembler routine described
previously. The last argument, u, contains the computed node displacements arranged as a flat, one
dimensional list:
{ ux1, uy1 . . . uxn, uyn }
(22.1)
PlaneTrussIntForces makes use of PlaneBar2IntForce, which computes the internal force
in an individual member. PlaneBar2IntForce is similar in argument sequence and logic to
PlaneBar2Stiffness of Figure 22.1. The first four arguments are identical. The last argument,
ue, contains the list of the four element node displacements in the global system. The logic of the
recovery module is straightforward and follows the method outlined in 3.2.
The statements at the bottom of Figure 22.3 test the internal
force recovery for the example truss of
Chapters 2-3, a and should return forces of 0,, 1 and 2 2 for members 1, 2 and 3, respectively.
22.3.4. Graphic Modules
Graphic modules that support preprocessing are placed in Cells 4A, 4B and 4C of the Mathematica
notebook. These plot unlabeled elements, elements and nodes with labels, and boundary conditions.
Graphic modules that support postprocessing are placed in Cells 5A and 5B of the Notebook. These
plot deformed shapes and axial stress levels in color.
These modules are not listed since they are still undergoing modifications at the time of this writing.
One unresolved problem is to find a way for absolute placement of supported nodes for correct
deflected-shape animations.
226
227
22.4
PlaneTrussIntForces[nodcoor_,elenod_,elemat_,elefab_,
eleopt_,u_]:= Module[{numele=Length[elenod],
numnod=Length[nodcoor],e,eNL,eftab,ni,nj,i,
ncoor,mprop,fprop,opt,ue,p},
p=Table[0,{numele}]; ue=Table[0,{4}];
For [e=1, e<=numele, e++,
eNL=elenod[[e]]; {ni,nj}=eNL;
eftab={2*ni-1,2*ni,2*nj-1,2*nj};
ncoor={nodcoor[[ni]],nodcoor[[nj]]};
mprop=elemat[[e]]; fprop=elefab[[e]]; opt=eleopt;
For [i=1,i<=4,i++, ii=eftab[[i]]; ue[[i]]=u[[ii]]];
p[[e]]=PlaneBar2IntForce[ncoor,mprop,fprop,opt,ue]
];
Return[p]
];
PlaneBar2IntForce[ncoor_,mprop_,fprop_,opt_,ue_]:= Module[
{x1,x2,y1,y2,x21,y21,Em,Gm,rho,alpha,A,numer,LL,pe},
{{x1,y1},{x2,y2}}=ncoor; {x21,y21}={x2-x1,y2-y1};
{Em,Gm,rho,alpha}=mprop; {A}=fprop; {numer}=opt;
(*If [numer,{x21,y21,Em,A}=N[{x21,y21,Em,A}]];*)
LL=x21^2+y21^2;
pe=Em*A*(x21*(ue[[3]]-ue[[1]])+y21*(ue[[4]]-ue[[2]]))/LL;
Return[pe]
];
nodcoor={{0,0},{10,0},{10,10}}; elenod= {{1,2},{2,3},{1,3}};
elemat= Table[{100,0,0,0},{3}]; elefab= {{1},{1/2},{2*Sqrt[2]}};
eleopt= {True}; u={0,0,0,0,0.4,-0.2};
p=PlaneTrussIntForces[nodcoor,elenod,elemat,elefab,eleopt,u];
Print["Int Forces of Example Truss:"];
Print[p];
Figure 22.3. Calculation of truss internal forces, with test statements in red.
228
(a)
10
10
16
10
10
span: 6 bays @ 10 = 60
;;
;;
(7)
(8)
(2)
(3)
(11)
(16)
(19)
(10)
(15)
(14)
(13) (18)
(1)
(9)
(20)
(4)
10
;;
;;
(b)
y
(12)
(21) (17)
(5)
11
(6)
12
Figure 22.4. Six-bay bridge truss used as example problem: (a) truss structure showing
supports and applied loads; (b) finite element idealization as pin-jointed truss.
of the force (tag 0) or displacement (tag 1) is prescribed. It is initialized to zero on creation, then the
support tags at nodes 1 (fixed) and 12 (horizontal roller) are set. For example, FreedomTag[[1]]
= { 1,1 } says that both node displacement components u x1 and u y1 of node 1 are specified.
Processing commands are listed in Figure 22.6. The master stiffness matrix is assembled by the
module listed in Figure 22.1. The stiffness matrix is placed in K. The applied force vector stored
as a one-dimensional list, is placed in f, which results from the application of built-in function
Flatten to Freedom Value.
The prescribed degree-of-freedom array pdof is constructed by scanning FreedomTag for nonzero
values. For this problem pdof={ 1,2,23 }. The displacement boundary conditions are applied by
the modules of Figure 22.2, which return the modified master stiffness Kmod and the modified node
force vector fmod. Note that the modified stiffness matrix is stored into Kmod rather than K to save
the original form of the master stiffness for the recovery of reaction forces later.
The complete displacement vector is obtained by the matrix calculation
u=LinearSolve[Kmod,fmod]
(22.2)
229
22.4
ClearAll[];
NodeCoordinates={{0,0},{10,5},{10,0},{20,8},{20,0},{30,9},
{30,0},{40,8},{40,0},{50,5},{50,0},{60,0}};
ElemNodeLists= {{1,3},{3,5},{5,7},{7,9},{9,11},{11,12},
{1,2},{2,4},{4,6},{6,8},{8,10},{10,12},
{2,3},{4,5},{6,7},{8,9},{10,11},
{2,5},{4,7},{7,8},{9,10}};
numnod=Length[NodeCoordinates];
numele=Length[ElemNodeLists]; numdof=2*numnod;
ElemMaterial= Table[{1000,0,0,0},{numele}];
Abot=2; Atop=10; Abat=3; Adia=1;
ElemFabrication=Join[Table[{Abot},{6}],Table[{Atop},{6}],
Table[{Abat},{5}],Table[{Adia},{4}]];
ProcessOptions= {True}; aspect=0;
PlotLineElements[NodeCoordinates,ElemNodeLists,aspect,
"test mesh"];
PlotLineElementsAndNodes[NodeCoordinates,ElemNodeLists,aspect,
"test mesh with elem & node labels",{True,0.12},{True,0.05}];
FreedomTag=FreedomValue=Table[{0,0},{numnod}];
FreedomValue[[3]]={0,-10}; FreedomValue[[5]]={0,-10};
FreedomValue[[7]]={0,-16};
FreedomValue[[9]]={0,-10}; FreedomValue[[11]]={0,-10};
Print["Applied node forces="]; Print[FreedomValue];
FreedomTag[[1]]= {1,1};
(* fixed node 1 *)
FreedomTag[[numnod]]={0,1}; (* hroller @ node 12 *)
f=Flatten[FreedomValue];
K=PlaneTrussMasterStiffness[NodeCoordinates,
ElemNodeLists,ElemMaterial,ElemFabrication,ProcessOptions];
pdof={}; For[n=1,n<=numnod,n++, For[j=1,j<=2,j++,
If[FreedomTag[[n,j]]>0, AppendTo[pdof,2*(n-1)+j]]]];
Kmod=ModifiedMasterStiffness[pdof,K];
fmod=ModifiedNodeForces [pdof,f];
u=LinearSolve[Kmod,fmod]; u=Chop[u];
Print["Computed Nodal Displacements:"]; Print[u];
f=Simplify[K.u]; f=Chop[f];
Print["External Node Forces Including Reactions:"]; Print[f];
p=PlaneTrussIntForces[NodeCoordinates,ElemNodeLists,
ElemMaterial,ElemFabrication,eleopt,u]; p=Chop[p];
sigma=Table[p[[i]]/ElemFabrication[[i,1]],{i,1,numele}];
Print["Internal Member Forces:"]; Print[p];
PlotTrussDeformedShape[NodeCoordinates,ElemNodeLists,u,
1.0,aspect,"Deformed shape"];
PlotAxialStressLevel[NodeCoordinates,ElemNodeLists,sigma,
1.0,aspect,"Axial stress level"];
Figure 22.6. Driver for analysis of the bridge truss: processing and postprocessing.
229
2210
test mesh
7
1
13
3
18
2
14
5
19
3
6
15
7
10
20
16
9
11
10
21
5
17
11
12
6
Deformed shape
2210
12
2211
Exercises
Placeholder.
EXERCISE 22.2 [C:25] Using the PlaneTruss.nb Notebook posted on the web site as guide, complete
the PlaneFrame.nb Notebook that implements the analysis of an arbitrary plane frame using the plane beam
stiffness presented in Chapter 21. To begin this homework, download the PlaneFrame.nb Notebook file from
the web site.
The modification involves selected Cells of the Notebook, as described below. For additional details refer to
the Notebook; some of the modifications involve only partially filled Modules.
Cell 1: Assembler. The element stiffness routine is the beam-column stiffness presented in Chapter 21. This
module, called PlaneBeamColumn2Stiffness, is included in Cell 1 of the PlaneFrame.nb notebook linked
from the Chapter 22 index.1 In modifying the assembler module, remember that there are three degrees of
freedom per node: u xi , u yi and i , not just two.
The incomplete assembler is shown in Figure E22.1. The test statements are shown in red after the module.
The lower cell shows the test output produced by a correctly completed module.
Cell 2: BC Applicator. No modifications are necessary. The two modules should work correctly for this
problem since they dont assume anything about freedoms per nodes. The same test statements can be kept.
Cell 3: Internal Force Recovery. Both modules require modifications because the beam has 3 internal forces:
(i) the axial force (which is recovered exactly as for bars), (ii) the bending moment m i = E I i at end node i,
and (iii) the bending moment m j = E I j at end node j.2 Furthermore the element displacement vector has
six degrees of freedom, not just four. Test the modules on a simple beam problem.
The incomplete internal force module is shown in Figure E22.2. The test statements are shown in red after the
module. The lower cell shows the test output produced by a correctly completed module.
Cell 4-5: Graphic Modules. These are now provided ready to use, and should not be touched.
Cell 6: Driver Program: use this for Exercise 22.3. Do not touch for this one.
As solution to this Exercise return a listing of the completed Cells 1 and 3, along with the output of the test
statements for those cells.
EXERCISE 22.3
[C:25] Use the program developed in the previous Exercise to analyze the plane frame shown in Figure E22.3.
The frame is fixed3 at A, B and C. It is loaded by a downward point load P at G and by a horizontal point
load 12 P at D. All members have the same cross section a a for simplicity, and the material is the same.
1
If you want to extract an individual cell from a Notebook to work on a separate file (a good idea for working on groups)
select the cell, then pick SaveSelectionAs -> Plain Text from the Edit menu, give it a file name in the pop-up dialogue
box, and save it.
Two end moments are required because the beam element used here has linearly varying curvatures and hence moments.
To recover the end moments refer to the pertinent equations in Chapter 13. The steps are as follows. For element e
recover the transverse displacements u yi and u y j in the local element system x (e) , y (e) . Complete these with rotations
i and j (which do not need to be transformed) to form the 4 1 beam local node displacement vector. Then apply the
curvature-displacement relation (13.13) at = 1 and = 1 to get the two end curvatures i(e) and (e)
j , respectively.
(e)
to get the bending moments.
Finally multiply those curvatures by E (e) Izz
For a plane frame, a fixed condition, also known as clamped condition, means that the x, y displacements and the rotation
about z are zero.
2211
2212
Figure E22.1. The incomplete assembler module for Exercise 22.2, with test statements in red.
Module PlaneBeamColumn2Stiffness, which goes in the upper portion of the cell is omitted to save
space; that module was listed in Figure 21.9. Output cell results are produced by a correct module.
The SI physical units to be used are: mm for lengths, N for forces, and MPa=N/mm2 for elastic moduli. For
the calculations use the following numerical data: L = 10,000 mm (10 m), H = 6,000 (6 m), a = 500 mm
(0.5 m), P = 4,800 N, E = 35,000 MPa (high strength concrete). The member cross section area is A = a 2 ,
and the flexural moment of inertia about the neutral axis is Izz = a 4 /12.
The recommended finite element discretization of two elements per member is shown in Figure E22.4.
As solution to this exercise list the driver program you used and the displacement and internal force outputs.
The results of primary interest are:
1.
2.
The axial forces (N) in columns AD, B E and C F, with appropriate sign4 .
3.
The maximum bending moment (N.mm) over the floor members D E and E F, and the maximum bending
moment in the columns AD, B E and C F.5
Provide deformed shape plot (but not the animation) and the frame stress level plots as part of the homework
results. Note: the Notebook on the web contains some of the actual plots produced by the complete Notebook,
4
The bending moment varies linearly over each element. It should be continuous at all joints except E.
2212
2213
Exercises
PlaneFrameIntForces[nodcoor_,elenod_,elemat_,elefab_,
eleopt_,u_]:= Module[{numele=Length[elenod],
numnod=Length[nodcoor],e,eNL,eftab,ni,nj,i,
ncoor,mprop,fprop,opt,ue,p},
p=Table[0,{numele}]; ue=Table[0,{6}];
For [e=1, e<=numele, e++,
eNL=elenod[[e]]; {ni,nj}=eNL;
ncoor={nodcoor[[ni]],nodcoor[[nj]]};
mprop=elemat[[e]]; fprop=elefab[[e]]; opt=eleopt;
eftab={3*ni-2,3*ni-1,3*ni,3*nj-2,3*nj-1,3*nj};
For [i=1,i<=6,i++, ii=eftab[[i]]; ue[[i]]=u[[ii]]];
p[[e]]=PlaneBeamColumn2IntForces[ncoor,mprop,fprop,opt,ue]
];
Return[p]
];
PlaneBeamColumn2IntForces[ncoor_,mprop_,fprop_,opt_,ue_]:=
Module[{x1,x2,y1,y2,x21,y21,Em,Gm,rho,alpha,A,Izz,num,LL,L,
dvy,cv1,cv2,pe=Table[0,{3}]},
{{x1,y1},{x2,y2}}=ncoor; {x21,y21}={x2-x1,y2-y1};
{Em,Gm,rho,alpha}=mprop; {A,Izz}=fprop; {num}=opt;
If [num,{x21,y21,Em,A,Izz}=N[{x21,y21,Em,A,Izz}]];
(* missing statements for Exercise 22.2 *)
Return[pe]
];
ClearAll[L,Em,A1,A2,Izz1,Izz2,Izz3,uz1,uz2,uz2,uz3];
nodcoor={{0,0},{L,0},{L,L}}; elenod= {{1,2},{2,3},{1,3}};
elemat= Table[{Em,0,0,0},{3}];
elefab= {{A1,Izz1},{A2,Izz2},{A3,Izz3}}; eleopt= {False};
u={0,uy1,0, 0,uy2,0, 0,uy3,0};
p=PlaneFrameIntForces[nodcoor,elenod,elemat,elefab,eleopt,u];
Print["Int Forces of Example Frame:"]; Print[p];
Int Forces of Example Frame:
6 Em Izz1
uy1 uy2
6 Em Izz1
uy1 uy2
A2 Em
uy2 uy3
0,
,
,
, 0, 0,
L2
L2
L
A3 Em
uy1 uy3
3 Em Izz3
uy1 uy3
3 Em Izz3
uy1 uy3
,
,
2L
2 L2
2 L2
Figure E22.2. Figure E22.2. Incomplete element internal force recovery module for
Exercise 22.2. Test statements in red. Results in output cell are those produced by a
correct module.
to be used as targets.
Partial answers for this exercise:
Largest vertical displacement: -0.232 mm () at node 4
Largest negative bending moment: 6.8 106 N.mm, at node 5 of element (4)
Axial forces: 2651 N over (3) and (4)
EXERCISE 22.4 [D:20] Explain why the solution given by the FEM model of Figure E22.3 is exact for the
Bernoulli-Euler bending model; that is, cannot be improved by subdividing each element into more elements.
2213
2214
L /2
y
cross section
of all members:
P/2
D
a
a
Origin of x,y
is arbitrary.
P
P/2
(3)
(4)
(5)
4
(2)
(9)
(7)
10
(10)
(1)
(6)
(8)
11
2214
23
Implementation of
Iso-P Quadrilateral
Elements
231
232
TABLE OF CONTENTS
Page
23.1. Introduction
23.2. Bilinear Quadrilateral Stiffness Matrix
23.2.1. Gauss Quadrature Rule Information .
23.2.2. Shape Function Evaluation
. . .
23.2.3. Element Stiffness . . . . . . .
23.3. Test of Bilinear Quadrilateral
23.3.1. Test of Rectangular Geometry
. .
23.3.2. Test of Trapezoidal Geometry . . .
23.4. *Consistent Node Forces for Body Force Field
23.5. *Recovery of Corner Stresses
23.6. *Quadrilateral Coordinates of Given Point
23. Notes and Bibliography
. . . . . . . . . . . . .
23. References . . . . . . . . . . . . .
23. Exercises . . . . . . . . . . . . .
232
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
233
233
233
235
235
237
237
238
2310
2310
2312
2312
2313
2314
233
23.2
23.1. Introduction
This Chapter illustrates, through a specific example, the computer implementation of isoparametric
quadrilateral elements for the plane stress problem. Triangles, which present some programming
quirks, are covered in the next Chapter.
The programming example is that of the four-node bilinear quadrilateral. It covers the computation
of the element stiffness matrix, the consistent node force vector for a body forces, and stress recovery
at selected points. The organization of the computations is typical of isoparametric-element modules
in any number of space dimensions.
23.2. Bilinear Quadrilateral Stiffness Matrix
We consider here the implementation of the 4-node bilinear quadrilateral for plane stress, depicted in Figure 23.1.
The element stiffness matrix of simple one-dimensional
elements, such as the ones discussed in Chapters 20
22, can be easily packaged in a simple module. For
multidimensional elements, however, it is convenient to
break up the implementation into application dependent
and application independent modules, as flowcharted in
Figure 23.2. The application independent modules can
be reused in other FEM applications, for example to
construct thermal, fluid or electromagnetic elements.
4 (x 4 , y 4 )
=1
3 (x 3 , y 3 )
=1
=1
1 (x 1 , y 1 )
=1
2 (x 2 , y 2 )
For the bilinear quadrilateral stiffness computations, the separation of Figure 23.2 is done by dividing
the work into three modules:
Quad4IsoPMembraneStiffness. Computes the element stiffness matrix Ke of a four-node
isoparametric quadrilateral element in plane stress.
QuadGuassRuleInfo. Returns two-dimensional Gauss quadrature formula of product type.
Quad4IsoPShapeFunDer. Evaluates the shape functions of a four-node isoparametric quadrilateraland their x/y derivatives, at a specific point.
These modules are described in further detail in the following subsections, in a bottom up fashion.
23.2.1. Gauss Quadrature Rule Information
Recall from 17.3 that Gauss quadrature rules for isoparametric quadrilateral elements have the
canonical form
1
1
1 1
p1 p2
.
F(, ) d d =
d
F(, ) d =
wi w j F(i , j ).
(23.1)
1
i=1 j=1
Here F = hBT EB J is the matrix to be integrated, whereas p1 and p2 are the number of Gauss
points in the and directions, respectively. Often, but not always, the same number p = p1 = p2
is chosen in both directions. A formula with p1 = p2 is called an isotropic integration rule because
directions and are treated alike.
233
QuadGaussRuleInfo is an application
independent module that implements the
two-dimensional product Gauss rules with
1 through 5 points in each direction.
The number of points in each direction
may be the same or different. Usage of
this module was described in detail in
17.3.4. For the readers convenience it is
listed, along with its subordinate module
LineGaussRuleInfo, in Figure 23.3.
This module is classified as application
independent since it can reused for any
quadrilateral element.
234
APPLICATION DEPENDENT
Element
Stiffness Module
Shape
Function Module
Gauss Quadrature
Information Module
APPLICATION INDEPENDENT
QuadGaussRuleInfo[{rule_,numer_},point_]:= Module[
{ ,,p1,p2,i,j,w1,w2,m,info={{Null,Null},0}},
If [Length[rule]==2, {p1,p2}=rule, p1=p2=rule];
If [p1<0, Return[QuadNonProductGaussRuleInfo[
{-p1,numer},point]]];
If [Length[point]==2, {i,j}=point, m=point;
j=Floor[(m-1)/p1]+1; i=m-p1*(j-1) ];
{ ,w1}= LineGaussRuleInfo[{p1,numer},i];
{,w2}= LineGaussRuleInfo[{p2,numer},j];
info={{ ,},w1*w2};
If [numer, Return[N[info]], Return[Simplify[info]]];
];
LineGaussRuleInfo[{rule_,numer_},point_]:= Module[
{g2={-1,1}/Sqrt[3],w3={5/9,8/9,5/9},
g3={-Sqrt[3/5],0,Sqrt[3/5]},
w4={(1/2)-Sqrt[5/6]/6, (1/2)+Sqrt[5/6]/6,
(1/2)+Sqrt[5/6]/6, (1/2)-Sqrt[5/6]/6},
g4={-Sqrt[(3+2*Sqrt[6/5])/7],-Sqrt[(3-2*Sqrt[6/5])/7],
Sqrt[(3-2*Sqrt[6/5])/7], Sqrt[(3+2*Sqrt[6/5])/7]},
g5={-Sqrt[5+2*Sqrt[10/7]],-Sqrt[5-2*Sqrt[10/7]],0,
Sqrt[5-2*Sqrt[10/7]], Sqrt[5+2*Sqrt[10/7]]}/3,
w5={322-13*Sqrt[70],322+13*Sqrt[70],512,
322+13*Sqrt[70],322-13*Sqrt[70]}/900,
i=point,p=rule,info={{Null,Null},0}},
If [p==1, info={0,2}];
If [p==2, info={g2[[i]],1}];
If [p==3, info={g3[[i]],w3[[i]]}];
If [p==4, info={g4[[i]],w4[[i]]}];
If [p==5, info={g5[[i]],w5[[i]]}];
If [numer, Return[N[info]], Return[Simplify[info]]];
];
Figure 23.3. Module to get Gauss-product quadrature
information for a quadrilateral.
234
235
23.2
Quad4IsoPShapeFunDer[ncoor_,qcoor_]:= Module[
{Nf,dNx,dNy,dN ,dN,i,J11,J12,J21,J22,Jdet, ,,x,y},
{ ,}=qcoor;
Nf={(1- )*(1-),(1+ )*(1-),(1+ )*(1+),(1- )*(1+)}/4;
dN ={-(1-), (1-),(1+),-(1+)}/4;
dN= {-(1- ),-(1+ ),(1+ ), (1- )}/4;
x=Table[ncoor[[i,1]],{i,4}]; y=Table[ncoor[[i,2]],{i,4}];
J11=dN .x; J12=dN .y; J21=dN.x; J22=dN.y;
Jdet=Simplify[J11*J22-J12*J21];
dNx= ( J22*dN -J12*dN)/Jdet; dNx=Simplify[dNx];
dNy= (-J21*dN +J11*dN)/Jdet; dNy=Simplify[dNy];
Return[{Nf,dNx,dNy,Jdet}]
];
Figure 23.4. Shape function module for 4-node bilinear quadrilateral.
(23.2)
236
Quad4IsoPMembraneStiffness[ncoor_,Emat_,th_,options_]:=
Module[{i,k,p=2,numer=False,h=th,qcoor,c,w,Nf,
dNx,dNy,Jdet,Be,Ke=Table[0,{8},{8}]},
If [Length[options]==2, {numer,p}=options,{numer}=options];
If [p<1||p>4, Print["p out of range"]; Return[Null]];
For [k=1, k<=p*p, k++,
{qcoor,w}= QuadGaussRuleInfo[{p,numer},k];
{Nf,dNx,dNy,Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
If [Length[th]==4, h=th.Nf]; c=w*Jdet*h;
Be={Flatten[Table[{dNx[[i]],
0},{i,4}]],
Flatten[Table[{0,
dNy[[i]]},{i,4}]],
Flatten[Table[{dNy[[i]],dNx[[i]]},{i,4}]]};
Ke+=Simplify[c*Transpose[Be].(Emat.Be)];
]; Return[Simplify[Ke]]
];
Figure 23.5. Element stiffness formation module for 4-node bilinear quadrilateral.
Emat
th
options
Processing options. This list may contain two items: { numer,p } or one: { numer }.
numer is a logical flag with value True or False. If True, the computations are
done in floating point arithmetic. For symbolic or exact arithmetic work set numer
to False.1
p specifies the Gauss product rule to have p points in each direction. p may be 1
through 4. For rank sufficiency, p must be 2 or higher. If p is 1 the element will be
rank deficient by two.2 If omitted p = 2 is assumed.
The reason for this option is speed. A symbolic or exact computation can take orders of magnitude more time than a
floating-point evaluation. This becomes more pronounced as elements get more complicated.
236
237
23.3
4
(a)
(b)
a
1
2a
2a
u y1
u x2
u y2
u x3
u y3
u x4
u y4 ]T .
(23.5)
108
36
0
36
108
0
0
0
36
(23.6)
42
18 6
0 21 18 15
0
78
0
30 18 39
0 69
18
0
42 18 15
0 21
18
6
30 18
78
0 69
18 39
0
e
K =
0
42
18 6
0
21 18 15
0 69
18
78
0
30
18 39
15
0 21
18
6
0
42 18
0 69
18 39
0
30 18
78
(23.7)
Note that the rectangle dimension a does not appear in (23.7). This is a general property: the stiffness
matrix of plane stress elements is independent of in-plane dimension scalings. This follows from
the fact that entries of the strain-displacement matrix B have dimensions 1/L, where L denotes a
237
238
ClearAll[Em,nu,a,b,e,h,p,numer]; h=1;
Em=96; nu=1/3;
(* isotropic material *)
Emat=Em/(1-nu^2)*{{1,nu,0},{nu,1,0},{0,0,(1-nu)/2}};
Print["Emat=",Emat//MatrixForm];
ncoor={{0,0},{2*a,0},{2*a,a},{0,a}}; (* 2:1 rectangular geometry *)
p=2;(* 2 x 2 Gauss rule *)numer=False;(* exact symbolic arithmetic *)
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,h,{numer,p}];
Ke=Simplify[Chop[Ke]]; Print["Ke=",Ke//MatrixForm];
Print["Eigenvalues of Ke=",Chop[Eigenvalues[N[Ke]],.0000001]];
Figure 23.7. Driver for stiffness calculation of rectangular element of Figure 23.6(a) for 2 2 Gauss rule.
characteristic inplane length. Consequently entries of BT B have dimension 1/L 2 . Integration over
the element area cancels out L 2 .
Using a higher order Gauss integration rule, such as 3 3 and 4 4, reproduces exactly (23.7).
This is a property characteristic of the rectangular geometry, since in that case the entries of B vary
linearly in and , and J is constant. Therefore the integrand h BT E BJ is at most quadratic in
and , and 2 Gauss points in each direction suffice to compute the integral exactly. Using a 1 1
rule yields a rank-deficiency matrix, a result illustrated in detail in 23.2.2.
The stiffness matrix (23.7) has the eigenvalues
[ 223.64
90
78
46.3603
42
0]
(23.8)
This verifies that Ke has the correct rank of five (8 total DOFs minus 3 rigid body modes).
23.3.2. Test of Trapezoidal Geometry
ClearAll[Em,nu,h,a,p]; h=1;
Em=48*63*13*107; nu=1/3;
Emat=Em/(1-nu^2)*{{1,nu,0},{nu,1,0},{0,0,(1-nu)/2}};
ncoor={{0,0},{2*a,0},{a,a},{0,a}};
For [p=1,p<=4,p++,
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,h,{True,p}];
Ke=Rationalize[Ke,0.0000001]; Print["Ke=",Ke//MatrixForm];
Print["Eigenvalues of Ke=",Chop[Eigenvalues[N[Ke]],.0000001]]
];
Figure 23.8. Driver for stiffness calculation of trapezoidal element of Figure 23.6(b)
for four Gauss integration rules.
The trapezoidal element geometry of Figure 23.6(b) is used to illustrate the effect of changing the
p p Gauss integration rule. Unlike the rectangular case, the element stiffness keeps changing as
p is varied from 1 to 4. The element is rank sufficient, however, for p 2 in agreement with the
analysis of Chapter 19.
The computations are driven with the script shown in Figure 23.8. The value of p is changed in a loop.
The flag numer is set to True to use floating-point computation for speed (see Remark 23.1). The
computed entries of Ke are transformed to the nearest rational number (exact integers in this case)
using the built-in function Rationalize. The strange value of E = 486313107 = 4206384,
238
239
in conjunction with = 1/3, makes all entries of Ke exact integers when computed with the first
4 Gauss rules. This device facilitates visual comparison between the computed stiffness matrices:
1840293 1051596 262899 262899 1840293 1051596 262899 262899
3417687 262899 1314495 1051596 3417687
262899 1314495
1051596
262899
262899 1840293 1051596 262899 262899
3417687
262899 1314495 1051596 3417687 262899 1314495
262899
262899 1051596
525798 262899 262899 1051596 525798
262899 1314495
525798 1051596 262899 1314495 525798 1051596
1051596
262899
262899
Ke11 = 1840293
1051596
Ke22
2062746
1092042
485352
303345
= 1395387
970704
182007
182007
Ke33
2067026
1093326
489632
304629
= 1386827
968136
190567
179439
Ke44
2067156
1093365
489762
304668
= 1386567
968058
190827
179361
(23.9)
1092042
3761478
303345
970704
970704
2730105
182007
2002077
485352
303345
1274049
485352
182007
182007
606690
606690
303345
970704
485352
1395387
182007
2002077
606690
364014
1395387
970704
182007
182007
2730105
1213380
1152711
424683
970704
2730105
182007
2002077
1213380
4792851
424683
60669
182007
182007
606690
606690
1152711
424683
1941408
364014
182007
2002077
606690
364014
424683
60669
364014
2426760
(23.10)
1093326
3764046
304629
968136
968136
2724969
179439
2007213
489632
304629
1278329
484068
190567
179439
598130
609258
304629
968136
484068
1397955
179439
2007213
609258
358878
1386827
968136
190567
179439
2747225
1218516
1169831
429819
968136
2724969
179439
2007213
1218516
4803123
429819
70941
190567
179439
598130
609258
1169831
429819
1958528
358878
179439
2007213
609258
358878
429819
70941
358878
2437032
(23.11)
1093365
3764124
304668
968058
968058
2724813
179361
2007369
489762
304668
1278459
484029
190827
179361
597870
609336
304668
968058
484029
1398033
179361
2007369
609336
358722
1386567
968058
190827
179361
2747745
1218672
1170351
429975
968058
2724813
179361
2007369
1218672
4803435
429975
71253
190827
179361
597870
609336
1170351
429975
1959048
358722
179361
2007369
609336
358722
429975
71253
358722
2437344
(23.12)
As can be seen entries change substantially in going from p = 1 to p = 2, then more slowly. The
eigenvalues of these matrices are:
Rule
11
22
33
44
8.77276
8.90944
8.91237
8.91246
3.68059
4.09769
4.11571
4.11627
2.26900
3.18565
3.19925
3.19966
0
2.64521
2.66438
2.66496
0
1.54678
1.56155
1.56199
0
0
0
0
0
0
0
0
0
0
0
0
(23.13)
The stiffness matrix computed by the one-point rule is rank deficient by two. The eigenvalues do
not change appreciably after p = 2. Because the nonzero eigenvalues measure the internal energy
taken up by the element in deformation eigenmodes, it can be seen that raising the order of the
integration makes the element stiffer.
239
2310
Quad4IsoPMembraneBodyForces[ncoor_,rho_,th_,options_,bfor_]:=
Module[{i,k,p=2,numer=False,h=th,
bx,by,bx1,by1,bx2,by2,bx3,by3,bx4,by4,bxc,byc,qcoor,
c,w,Nf,dNx,dNy,Jdet,B,qctab,fe=Table[0,{8}]},
If [Length[options]==2, {numer,p}=options, {numer}=options];
If
[Length[bfor]==2,{bx,by}=bfor;bx1=bx2=bx3=bx4=bx;by1=by2=by3=by4=by];
If [Length[bfor]==4,{{bx1,by1},{bx2,by2},{bx3,by3},{bx4,by4}}=bfor];
If [p<1||p>4, Print["p out of range"]; Return[Null]];
bxc={bx1,bx2,bx3,bx4}; byc={by1,by2,by3,by4};
For [k=1, k<=p*p, k++,
{qcoor,w}= QuadGaussRuleInfo[{p,numer},k];
{Nf,dNx,dNy,Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
bx=Nf.bxc; by=Nf.byc; If [Length[th]==4, h=th.Nf];
c=w*Jdet*h;
bk=Flatten[Table[{Nf[[i]]*bx,Nf[[i]]*by},{i,4}]];
fe+=c*bk;
]; Return[fe]
];
Figure 23.9. Module for computation of consistent node forces from a given
body force field.
Remark 23.1.
The formation of the trapezoidal element stiffness using floating-point computation by setting numer=True
took 0.017, 0.083, 0.15 and 0.25 seconds for p = 1, 2, 3, 4, respectively, on a Mac G4/867. Changing
numer=False to do exact computation increases the formation time to 0.033, 1.7, 4.4 and 44.6 seconds,
respectively. (The unusually large value for p = 4 is due to the time spent in the simplification of the highly
complex exact expressions produced by the Gauss quadrature rule.) This underscores the speed advantage of
using floating-point arithmetic when exact symbolic and algebraic calculations are not required.
23.4.
The module Quad4IsoPMembraneBodyForces listed in Figure 23.9 computes the consistent force associated
= {bx , b y } given over a 4-node iso-P quadrilateral in plane stress. The field is
with a body force field b
specified per unit of volume in componentwise form. For example if the element is subjected to a gravity
acceleration field (self-weight) in the y direction, bx = 0 and b y = g, where is the mass density.
The arguments of the module are are exactly the same as for Quad4IsoPMembraneStiffness except for the
following differences.
mprop
bfor
Body forces per unit volume. Specified as a two-item one-dimensional list: { bx,by }, or as
a four-entry two-dimensional list: { bx1,by1 },{ bx2,by2 }, { bx3,by3 },{ bx4,by4 }.
In the first form the body force field is taken to be constant over the element. The second
form assumes body forces to vary over the element and specified by values at the four
corners, from which the field is interpolated bilinearly.
f y1
f x2
f y2
f x3
2310
f y3
f x4
f y4 ]T .
(23.14)
2311
23.5
Quad4IsoPMembraneStresses[ncoor_,Emat_,th_,options_,udis_]:=
Module[{i,k,numer=False,qcoor,Nf,
dNx,dNy,Jdet,Be,qctab,ue=udis,sige=Table[0,{4},{3}]},
qctab={{-1,-1},{1,-1},{1,1},{-1,1}};
numer=options[[1]];
If [Length[udis]==4, ue=Flatten[udis]];
For [k=1, k<=Length[sige], k++,
qcoor=qctab[[k]]; If [numer, qcoor=N[qcoor]];
{Nf,dNx,dNy,Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
Be={ Flatten[Table[{dNx[[i]],
0},{i,4}]],
Flatten[Table[{0,
dNy[[i]]},{i,4}]],
Flatten[Table[{dNy[[i]],dNx[[i]]},{i,4}]]};
sige[[k]]=Emat.(Be.ue);
]; Return[sige]
];
Figure 23.10. Module for calculation of corner stresses.
23.5.
Akthough the subject of stress recovery is treated in further detail in a later chapter, for completeness a stress
computation module called Quad4IsoPMembraneStresses for the 4-node quad is listed in Figure 23.10.
The arguments of the module are are exactly the same as for Quad4IsoPMembraneStiffness except for the
following differences.
fprop
udis
The 8 corner displacements components. these may be specified as a 8-entry onedimensional list form:
{ ux1,uy1, ux2,uy2, ux3,uy3, ux4,uy4 },
or as a 4-entry two-dimensional list:
{ ux1,uy1 },{ ux2,uy2 },{ ux3,uy3 },{ ux4,uy4 }.
The module returns the corner stresses stored in a 4-entry, two-dimensional list:
{ { sigxx1,sigyy1,sigxy1 },{ sigxx2,sigyy2,sigxy2 }, { sigxx3,sigyy3,sigxy3 },
{ sigxx4,sigyy4,sigxy4 } } to represent the stress array
e =
x x1
yy1
x y1
x x2
yy2
x y2
x x3
yy3
x y3
x x4
yy4
x y4
(23.15)
The stresses are directly evaluated at the corner points without invoking any smoothing procedure. A more
elaborated recovery scheme is presented in a later Chapter.
2311
2312
23.6.
The following inverse problem arises in some applications. Given a 4-node quadrilateral, defined
by the Cartesian coordinates {xi , yi } of its corners, and an arbitrary point P(x P , y P ), find the
quadrilateral coordinates P , P of P. In answering this question it is understood that the quadrilateral coordinates can be extended outside the
element, as illustrated in Figure 23.11.
=1
=1
=1
P(?,?)
2
1
=1
Although seemingly straightforward, the process is prone to numerical instabilities. For example, if the
quadrilateral becomes a rectangle or parallelogram, the quadratic equations degenerate to linear, and one of
the roots takes off to . In floating point arithmetic severe cancellation can occur in the other root. A robust
numerical algorithm, which works stably for any geometry, is obtained by eliminating and in
turn, getting
=
b/(b
+
b2 4ac),
the minimum-modulus root of a2P + b P + c = 0 with the stable formula.3 min
P
forming the other quadratic equation, and computing its minimum-modulus root the same way. In addition, x P
and y P are referred to the quadrilateral center as coordinate origin. The resulting algorithm can be presented
as follows. Given {x1 , y1 , . . . x4 , y4 } and {x P , y P }, compute
xb = x1 x2 + x3 x4 ,
yb = y1 y2 + y3 y4 ,
xce = x1 x2 x3 + x4 ,
yce = y1 y2 y3 + y4 ,
1
4 (x 1
+ x2 + x3 + x4 ),
b = A x P0 yb + y P0 xb ,
c = x P0 yce y P0 xce ,
xcx = x1 + x2 x3 x4 ,
y0 =
1
4 (y1
A=
1
2 ((x 3
ycx = y1 + y2 y3 y4 ,
+ y2 + y3 + y4 ),
x P0 = x P x0 ,
y P0 = y P y0 ,
b = A x P0 yb + y P0 xb ,
P =
2c
b2 2J1 c b
c = x P0 ycx y P0 xcx ,
2c
P =
.
2
b + 2J2 c b
(23.16)
One common application is to find whether P is inside the quadrilateral: if both P and P are in the range
[1, 1] the point is inside, else outside. This occurs, for example, in relating experimental data from given
sensor locations4 to an existing FEM mesh.
A Mathematica module that implements (23.16) is listed in Figure 23.12.
3
While at Boeing in 1969 the writer had to solve a collocation problem of this nature, although in three dimensions.
Pressure data measured at a wind tunnel had to be transported to an independently constructed FEM quadrilateral mesh
modeling the wing skin.
2312
2313
23.
References
QuadCoordinatesOfPoint[{{x1_,y1_},{x2_,y2_},{x3_,y3_},
{x4_,y4_}},{x_,y_}]:= Module[{A,J0,J1,J2,
xb=x1-x2+x3-x4,yb=y1-y2+y3-y4,xc =x1+x2-x3-x4,yc =y1+y2-y3-y4,
xc=x1-x2-x3+x4,yc=y1-y2-y3+y4,b ,b,c ,c,
x0=(x1+x2+x3+x4)/4,y0=(y1+y2+y3+y4)/4,dx,dy, ,},
J0=(x3-x1)*(y4-y2)-(x4-x2)*(y3-y1); A=J0/2;
J1=(x3-x4)*(y1-y2)-(x1-x2)*(y3-y4);
J2=(x2-x3)*(y1-y4)-(x1-x4)*(y2-y3);
dx=x-x0; dy=y-y0;
b =A-dx*yb+dy*xb; b=-A-dx*yb+dy*xb;
c = dx*yc -dy*xc ; c=dx*yc-dy*xc;
=2*c /(-Sqrt[b ^2-2*J1*c ]-b );
=2*c/( Sqrt[b^2+2*J2*c]-b);
Return[{ ,}]];
Figure 23.12. A Mathematica module that implements the algorithm (23.16).
2313
2314
Quad5IsoPShapeFunDer[ncoor_,qcoor_]:= Module[
{Nf,dNx,dNy,dN ,dN,Nb,dNb ,dNb,J11,J12,J21,J22,Jdet, ,,x,y},
{ ,}=qcoor; Nb=(1- ^2)*(1-^2); (* Nb: node-5 "bubble" function *)
dNb =2* (^2-1); dNb=2**( ^2-1);
Nf= { ((1- )*(1-)-Nb)/4,((1+ )*(1-)-Nb)/4,
((1+ )*(1+)-Nb)/4,((1- )*(1+)-Nb)/4, Nb};
dN ={-(1-+dNb )/4, (1--dNb )/4,
(1+-dNb )/4,-(1++dNb )/4, dNb };
dN={-(1- +dNb)/4,-(1+ +dNb)/4,
(1+ -dNb)/4, (1- -dNb)/4, dNb};
x=Table[ncoor[[i,1]],{i,5}]; y=Table[ncoor[[i,2]],{i,5}];
J11=dN .x; J12=dN .y; J21=dN.x; J22=dN.y;
Jdet=Simplify[J11*J22-J12*J21];
dNx= ( J22*dN -J12*dN)/Jdet; dNx=Simplify[dNx];
dNy= (-J21*dN +J11*dN)/Jdet; dNy=Simplify[dNy];
Return[{Nf,dNx,dNy,Jdet}]
];
Figure E23.2. The shape function module for the 5-node bilinear+bubble iso-P quadrilateral.
Test Quad5IsoPMembraneStiffness for the 2:1 rectangular element studied in 23.3.1, with node 5 placed
at the element center. Use Gauss rules 1 1, 2 2 and 3 3. Take E = 9630 = 2880 in lieu of E = 96 to
2314
2315
Exercises
Quad5IsoPMembraneCondStiffness[Ke5_]:=
Module[{i,j,k,n,c,Ke=Ke5,Kc=Table[0,{8},{8}]},
For [n=10,n>=9,n--,
For [i=1,i<=n-1,i++, c=Ke[[i,n]]/Ke[[n,n]];
For [j=1,j<=i,j++, Ke[[j,i]]=Ke[[i,j]]=Ke[[i,j]]-c*Ke[[n,j]];
]]];
For [i=1,i<=8,i++, For [j=1,j<=8,j++, Kc[[i,j]]=Ke[[i,j]]]];
Return[Kc]
];
Figure E23.3. A mystery module for Exercise 23.2.
get exact integer entries in Ke for all Gauss rules while keeping = 1/3 and h = 1. Report on which rules
give rank sufficiency. Partial result: K 22 = 3380 and 3588 for the 2 2 and 3 3 rules, respectively.
EXERCISE 23.2 [D:10] Module Quad5IsoPMembraneCondStiffness in Figure E23.3 is designed to re-
2 (1 + ) 2 + 2 (1 )
Uquad
=
.
r=
Ubeam
(1 + 2 )2
(E23.1)
Compare this to the energy ratio (E17.8) for = 1/10 and = 0 to conclude that shear locking has not been
eliminated, or even mitigated, by the injection of the bubble shape functions associated with the interior node.5
EXERCISE 23.4 [C:25] Implement the 9-node biquadratic quadrilateral element for plane stress to get its
18 18 stiffness matrix. Follow the style of Figures 23.34 or E23.12. (The Gauss quadrature module may
be reused without change.) Test it for the 2:1 rectangular element studied in 23.3.1, with nodes 58 placed at
the side midpoints, and node 9 at the element center. For the elastic modulus take E = 963911557 =
15855840 instead of E = 96, along with = 1/3 and h = 1, so as to get exact integer entries in Ke . Use both
2 2 and 3 3 Gauss integration rules and show that the 2 2 rule produces a rank deficiency of 3 in the
stiffness. (If the computation with num=False takes too long on a slow PC, set num=True and Rationalize
entries as in Figure 23.8.) Partial result: K 11 = 5395390 and 6474468 for the 22 and 33 rules, respectively.
EXERCISE 23.5 [C:25] An element is said to be distortion insensitive when the discrete solution does not
appreciably change when the mesh is geometrically distorted while keeping the same number of elements,
nodes and degrees of freedom. It is distortion sensitive otherwise. A distortion sensitivity test often found in
the FEM literature for plane stress quadrilateral elements is pictured in Figure E23.4.
5
Even the addition of an infinite number of bubble functions to the 4-node iso-P quadrilateral will not cure shear locking.
This bubble futility has been known since the late 1960s. But memories are short. Bubbles have been recently revived
by some FEM authors for other application contexts, such as multiscale modeling.
2315
2316
;;
(a)
;;;
;
;;
;;
;
;;
(c)
Cross
section
(b)
10
11
M/b
M/b
13
M/b
14
12
15
M/b
Figure E23.4. Two-element cantilever model for assessing distortion sensitivity, for
Exercise E23.5.
The cantilever beam of span a, height b and narrow rectangular cross section of thickness h depicted in Figure
E23.4 is under an applied end moment M. If the material is isotropic with elastic modulus E and Poisson ratio
= 0 the end vertical deflection given by the Bernoulli-Euler beam theory is vbeam = Ma 2 /(2E Izz ), where
Izz = hb3 /12. This is also the exact solution given by elasticity theory if the surface tractions over the free
end section match the beam stress distribution.6
The problem is discretized with two 4-node isoP bilinear quadrilaterals as illustrated in Figure E23.4(b), which
show appropiate displacement and force boundary conditions. The mesh distortion is parametrized by the
distance e, which defines the slope of interface 3-4. If e = 0 there is no distortion.
Obtain the finite element solution for a = 10, b = 2, h = E = M = 1 and e = 0, 1, 2, 3, 5 and record the end
deflection vquad as the average of the vertical displacements u y5 and u y6 . Define the ratio r (e) = vquad /vbeam
and plot g(e) = r (e)/r (0) as function of e. This function g(e) characterizes the distortion sensitivity. Show
that g(e) < 1 as e increases and thus the mesh stiffness further as a result of the distortion. Conclude that the
4-node bilinear element is distortion sensitive.
EXERCISE 23.6 [C:25] Repeat the steps of Exercise 23.5 for the mesh depicted in Figure E23.4(c). The
cantilever beam is modeled with two 9-node biquadratic quadrilaterals integrated by the 33 Gauss product
rule. It is important to keep the side nodes at the midpoints of the sides, and the center node at the crossing of
the medians (that is, the 9-node elements are superparametric). Show that r = 1 for any e < 12 a. Thus not
only this element is exact for the regular mesh, but it is also distortion insensitive.
This statement would not be true if = 0 since the fixed-displacement BC at the cantilever root would preclude the
lateral expansion or contraction of the cross section. However, the support condition shown in the models (b) and (c)
allow such changes so the results are extendible to nonzero .
2316
2317
Exercises
EXERCISE 23.7 [C:25] Implement the 8-node Serendipity quadrilateral element for plane stress to get its
E=
17837820
5945940
0
5945940
17837820
0
0
0
5945940
.
(E23.2)
Use both 2 2 and 3 3 Gauss integration rules and show that the 2 2 rule produces a rank deficiency
of 1 in the stiffness. (If the computation with num=False takes too long on a slow PC, set num=True and
Rationalize entries as in Figure 23.8.) Partial results: K 11 = 11561550 and 12024012 for the 2 2 and
3 3 rules, respectively, whereas K 13 = 4954950 and 5021016 for the 2 2 and 3 3 rules, respectively.
2317
24
Implementation of
Iso-P Triangular
Elements
241
242
TABLE OF CONTENTS
Page
24.1. Introduction
24.2. Gauss Quadrature for Triangles
24.2.1. Requirements for Gauss Rules .
24.2.2. Superparametric Triangles
. .
24.2.3. Arbitrary Iso-P Triangles
. .
24.2.4. Implementation . . . . . .
24.3. Partial Derivative Computation
24.3.1. Triangle Coordinate Partials
.
24.3.2. Solving the Jacobian System . .
24.4. The Quadratic Triangle
24.4.1. Shape Function Module . . .
24.4.2. Stiffness Module . . . . . .
24.4.3. Test on Straight-Sided Triangle
24.4.4. Test on Highly Distorted Triangle
24.5. *The Cubic Triangle
24.5.1. *Shape Function Module
. .
24.5.2. *Stiffness Module
. . . . .
24.5.3. *Test Element . . . . . .
24. Notes and Bibliography
. . . . . . . . . . . .
24. References . . . . . . . . . . .
24. Exercises . . . . . . . . . . . .
24. Solutions to Exercises
. . . . . . . . . . .
242
. .
.
. .
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . . . . . . . . . . .
. . . . . . . . . . .
. .
.
. .
.
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
. .
. .
. .
. .
. .
.
. .
.
. .
.
. .
.
.
.
.
.
.
.
243
243
243
244
245
246
246
247
248
249
249
2411
2412
2412
2414
2414
2416
2417
2418
2419
2420
2422
243
24.1. Introduction
This Chapter continues with the computer implementation of two-dimensional finite elements. It covers
the programming of isoparametric triangular elements for the plane stress problem. Triangular elements
bring two sui generis implementation quirks with respect to quadrilateral elements:
(1) The numerical integration rules for triangles are not product of one-dimensional Gauss rules, as in
the case of quadrilaterals. They are instead specialized to the triangle geometry.
(2) The computation of x-y partial derivatives and the element-of-area scaling by the Jacobian determinant must account for the fact that the triangular coordinates 1 , 2 and 3 do not form an
independent set.
We deal with these issues in the next two sections.
24.2. Gauss Quadrature for Triangles
The numerical integration schemes for quadrilaterals introduced in 17.3 and implemented in 23.2
are built as tensor products of two one-dimensional Gauss formulas. On the other hand, Gauss rules
for triangles are not derivable from one-dimensional rules, and must be constructed especially for the
triangular geometry.
24.2.1. Requirements for Gauss Rules
Gauss quadrature rules for triangles must possess triangular symmetry in the following sense:
(24.1)
This constraint guarantees that the result of the quadrature process will not depend on element node
numbering.1 If 1 , 2 , and 3 are different, (24.1) forces six equal-weight sample points to be present in
the rule, because 3! = 6. If two triangular coordinates are equal, the six points coalesce to three, and
(24.1) forces three equal-weight sample points to be present. Finally, if the three coordinates are equal
(which can only happen for the centroid 1 = 2 = 3 = 1/3), the six points coalesce to one.2
Additional requirements for a Gauss rule to be numerically acceptable are:
All sample points must be inside the triangle (or on the triangle boundary)
and all weights must be positive.
(24.2)
This is called a positivity condition. It insures that the element internal energy evaluated by numerical
quadrature is nonnegative definite.
1
It would disconcerting to users, to say the least, to have the FEM solution depend on how nodes are numbered.
It follows that the number of sample points in triangle Gauss quadrature rules that satisfy (24.1) must be of the form 6i +3 j +k,
where i and j are nonnegative integers and k is 0 or 1. Consequently there are no rules with 2, 5 or 8 points.
243
244
(a) rule=1
degree=1
(b) rule=3
degree=2
(c) rule=3
degree=2
0.33333
0.33333
0.33333
1.0000
0.33333
0.33333
0.33333
(d) rule=6
degree=4
(e) rule=7
degree=5
0.10995
0.22338
0.12594
0.13239
0.22338
0.13239
0.22500
0.10995
0.22338
0.10995
0.12594
0.13239
0.12594
Figure 24.1. Location of sample points (dark circles) of five Gauss quadrature rules for
straight sided (superparametric) 6-node triangles. Weight written to 5 places near each
sample point; sample-point circle areas are proportional to weight.
A rule is said to be of degree n if it integrates exactly all polynomials in the triangular coordinates of
order n or less when the Jacobian determinant is constant, and there is at least one polynomial of order
n + 1 that is not exactly integrated by the rule.
Remark 24.1. The positivity requirement (24.2) is automatically satisfied in quadrilaterals by using Gauss product
rules, since the points are always inside while weights are positive. Consequently it was not necessary to call
attention to it. On the other hand, for triangles there are Gauss rules with as few as 4 points that violate positivity.
1
1
d = 2 det x1
A=
e
y1
1
x2
y2
1
x3
y3
=
1
2
(x2 y3 x3 y2 ) + (x3 y1 x1 y3 ) + (x1 y2 x2 y1 ) . (24.4)
This rule is illustrated in Figure 24.1(a). It has degree 1, meaning that it integrates exactly up to linear
polynomials in {1 , 2 , 3 }. For example, F = 4 1 + 22 3 is exactly integrated by (24.3).
244
245
(b) rule=3
(c) rule=3
0.33333
0.33333
1.0000
0.33333
0.33333
0.33333
0.33333
(d) rule=6
0.10995
(e) rule=7
0.22338
0.13239 0.22500
0.22338
0.22338
0.12594
0.13239
0.13239
0.10995
0.12594
0.12594
0.10995
Figure 24.2. Location of sample points (dark circles) of five Gauss quadrature rules
for curved sided 6-node triangles. Weight written to 5 places near each sample point;
sample-point circle areas are proportional to weight.
Three Point Rules. The next two rules in order of simplicity contain three sample points:
1
F(1 , 2 , 3 ) d 13 F( 23 , 16 , 16 ) + 13 F( 16 , 23 , 16 ) + 13 F( 16 , 16 , 23 ).
(24.5)
A e
1
F(1 , 2 , 3 ) d 13 F( 12 , 12 , 0) + 13 F(0, 12 , 12 ) + 13 F( 12 , 0, 12 ).
(24.6)
A e
These are depicted in Figures 24.1(b,c). Both rules are of degree 2; that is, they integrate exactly up
to quadratic polynomials in the triangular coordinates. For example, the function F = 6 + 1 + 33 +
22 32 + 31 3 is integrated exactly by either rule. Formula (24.6) is called the midpoint rule.
Six and Seven Point Rules. There is a 4-point rule of degree 3, but it has a negative weight and so violates
(24.2). There are no symmetric rules with 5 points. The next useful rules have six and seven points.
There is a 6-point rule of degree 4 and a 7-point rule of degree 5, which integrate exactly up to quartic
and quintic polynomials in {1 , 2 , 3 }, respectively. The 7-point rule includes the centroid as sample
point. The abcissas and weights are expressable as rational combinations of square roots of integers
and fractions. The expressions are listed in the Mathematica implementation discussed in 24.2.4. The
sample point configurations are depicted in Figure 24.1(d,e).
24.2.3. Arbitrary Iso-P Triangles
If the triangle has variable metric, as in the curved sided 6-node triangle geometries shown in Figure 24.2,
the foregoing formulas need adjustment because the element of area d becomes a function of position.
Consider the more general case of an isoparametric element with n nodes and shape functions Ni . In
24.3 it is shown that the differential area element is given by
1
1
1
n
n
n
Ni
Ni
Ni
x
x
xi
i
i
(24.7)
d = J d1 d2 d3 , J = 12 det i=1 1 i=1 2 i=1 3
n
n
n
Ni
Ni
Ni
yi
yi
yi
1 i=1 2 i=1 3
i=1
245
246
Here J is the Jacobian determinant, which plays the same role as J in the isoparametric quadrilaterals.
If the metric is simply defined by the 3 corners, as in Figure 24.1, the geometry shape functions are
N1 = 1 , N2 = 2 and N3 = 3 . Then the foregoing determinant reduces to that of (24.4), and J = A
everywhere. But for general (curved) geometries J = J (1 , 2 , 3 ), and the triangle area A cannot be
factored out of the integration rules. For example the one point rule becomes
F(1 , 2 , 3 ) d J ( 13 , 13 , 13 ) F( 13 , 13 , 13 ).
(24.8)
e
(24.9)
These can be expressed more compactly by saying that the Gauss integration rule is applied to J F.
24.2.4. Implementation
The five rules pictured in Figures 24.1 and 24.2 are implemented in the module TrigGaussRuleInfo
listed in Figure 24.3. The module is invoked as
{ { zeta1,zeta2,zeta3 },w } = TrigGaussRuleInfo[{ rule,numer },point]
(24.10)
The module has three arguments: rule, numer and i. The first two are grouped in a two-item list.
Argument rule, which can be 1, 3, 3, 6 or 7, defines the integration formula as follows. Abs[rule]
is the number of sample points. Of the two 3-point choices, if rule is 3 the midpoint rule is picked,
else if +3 the 3-interior point rule is chosen. Logical flag numer is set to True or False to request
floating-point or exact information, respectively
Argument point is the index of the sample point, which may range from 1 through Abs[rule].
The module returns the list {{1 , 2 , 3 }, w}, where 1 , 2 , 3 are the triangular coordinates of the sample
point, and w is the integration weight. For example, TrigGaussRuleInfo[{ 3,False },1] returns
{ { 2/3,1/6,1/6 },1/3 }. If rule is not implemented, the module returns { { Null,Null,Null },0 }.
246
247
1
1
x
x
1
y = y1
ux
u x1
uy
u y1
1
x2
y2
u x2
u y2
1
x3
y3
u x3
u y3
1
x4
y4
u x4
u y4
1
x5
y5
u x5
u y5
2
4
1
Figure 24.4. The 6-node iso-P triangle.
1
x6
y6
u x6
u y6
N1e
N2e
e
N3
e
N4
e
N5
N6e
(24.11)
1 (21 1)
N1
41 1
0
0
N2e 2 (22 1)
0
42 1
0
NT
NT
NT
N (2 1)
0
0
4 1
=
=
= 3 .
NT = 3e = 3 3
,
,
,
N4 41 2 1
42 2
41 3
0
42
N5
42 3
0
43
43
N6e
43 1
0
41
(24.12)
24.3.1. Triangle Coordinate Partials
In this and following sections the superscript e of shape functions will be omitted for brevity. The bulk
of the shape function logic is concerned with the computation of the partial derivatives of the shape
functions (24.12) with respect to x and y at any point in the element. For this purpose consider a generic
scalar function w(1 , 2 , 3 ) that is quadratically interpolated over the triangle by
w = w1 N1 + w2 N2 + w3 N3 + w4 N4 + w5 N5 + w6 N6 = [ w1
w2
w3
w4
w5
w6 ] NT . (24.13)
Symbol w may stand for 1, x, y, u x or u y , which are interpolated in the iso-P representation (24.11),
or other element-varying quantities such as thickness, temperature, etc. Taking partials of (24.13) with
respect to x and y and applying the chain rule twice yields
Ni 1
Ni 2
Ni 3
w
Ni
=
wi
=
wi
+
+
,
x
x
1 x
2 x
3 x
(24.14)
Ni 1
w
Ni
Ni 2
Ni 3
=
wi
=
wi
+
+
,
y
y
1 y
2 y
3 y
247
248
w
1 2 3
1
Ni
wi .
w = 1 2 3
2
Ni
y
y
y
y
wi
3
Transposing both sides of (24.15) while exchanging sides yields
1 1
x
y
wi Ni
wi Ni
wi Ni x2 y2 = w
x
1
2
3
3 3
x
y
Now make w 1, x, y and stack the results row-wise:
Ni
Ni
Ni
1 1 1
1
1
2
3
x y
y
x
x x
N
xi i
xi i x2 y2 =
xi i
x y
1
2
3
y y
Ni Ni Ni
3 3
yi
yi
yi
x y
x
y
1
2
3
(24.15)
w .
y
(24.16)
(24.17)
But x/ x = y/ y = 1 and 1/ x = 1/ y = x/ y = y/
x = 0 because x and y are
independent coordinates. It is shown in Remark 24.2 below that, if
Ni = 1, the entries of the first
row of the coefficient matrix are equal to a constant C. These entries can be scaled to unity because the
first row of the right-hand side is null. Consequently we arrive at a system of linear equations of order
3 with two right-hand sides:
1 1
1
1
1
y 0 0
Ni Ni x
x i Ni
2 2
xi
xi
1
= 1 0 .
(24.18)
2
3 x
y
Ni Ni Ni
0
1
3 3
yi
yi
yi
1
2
3
x
y
24.3.2. Solving the Jacobian System
By analogy with quadrilateral elements, the coefficient matrix of (24.18) will be called the Jacobian
matrix and denoted by J. Its determinant scaled by one half is equal to the Jacobian J = 12 det J used
in the expression of the area element introduced in 24.2.3. For compactness (24.18) is rewritten
1 1
y 0 0
1
1
1 x
J P = Jx1 Jx2 Jx3 x2 y2 = 1 0 .
(24.19)
0
1
Jy1 Jy2 Jy3
3 3
x
y
If J = 0, solving this system gives
1
1
y
x
1 Jy23 Jx32
2 2
(24.20)
=
Jy31 Jx13 = P,
x
y
2J
J
J
y12
x21
3 3
x
y
248
249
in which Jx ji = Jx j Jxi , Jy ji = Jy j Jyi and J = 12 det J = 12 (Jx21 Jy31 Jy12 Jx13 ). Substituting
into (24.14) we arrive at
wi Ni
w
Ni
Ni
Ni
=
wi
=
Jy23 +
Jy31 +
Jy12 ,
x
x
2J 1
2
3
(24.21)
wi Ni
w
Ni
Ni
Ni
Jx32 +
Jx13 +
Jx21 .
=
wi
=
y
y
2J 1
2
3
In particular, the shape function derivatives are
Ni
Ni
Ni
1 Ni
Jy23 +
Jy31 +
Jy12 ,
=
x
2J 1
2
3
Ni
Ni
Ni
1 Ni
Jx32 +
Jx13 +
Jx21 .
=
y
2J 1
2
3
(24.22)
in which the natural derivatives Ni / j can be read off (24.12). Using the 3 2 P matrix defined in
(24.20) yields finally the compact form
Ni Ni
Ni Ni Ni P.
(24.23)
=
x
y
1
2
3
Remark 24.2. Here is the proof that each first row entry of the 3 3 matrix in (24.17) is a numerical constant, say
C. Suppose the shape functions are polynomials of order n in the triangular coordinates, and let Z = 1 + 2 + 3 .
The completeness identity is
S=
Ni = 1 = c1 Z + c2 Z 2 + . . . cn Z n ,
c1 + c2 + . . . + cn = 1.
(24.24)
where the ci are element dependent scalar coefficients. Differentiating S with respect to the i s and setting Z = 1
yields
C=
Ni
1
Ni
2
Ni
3
(24.25)
which proves the assertion. For the 3-node linear triangle, S = Z and C = 1. For the 6-node quadratic triangle,
S = 2Z 2 Z and C = 3. For the 10-node cubic triangle, S = 9Z 3 /2 9Z 2 /2 + Z and C = 11/2. Because the
first equation in (24.18) is homogeneous, the Cs can be scaled to unity.
249
2410
Trig6IsoPShapeFunDer[ncoor_,tcoor_]:= Module[
{ 1, 2, 3,x1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6,
dx4,dx5,dx6,dy4,dy5,dy6,Jx21,Jx32,Jx13,Jy12,Jy23,Jy31,
Nf,dNx,dNy,Jdet}, { 1, 2, 3}=tcoor;
{{x1,y1},{x2,y2},{x3,y3},{x4,y4},{x5,y5},{x6,y6}}=ncoor;
dx4=x4-(x1+x2)/2; dx5=x5-(x2+x3)/2; dx6=x6-(x3+x1)/2;
dy4=y4-(y1+y2)/2; dy5=y5-(y2+y3)/2; dy6=y6-(y3+y1)/2;
Nf={ 1*(2* 1-1), 2*(2* 2-1), 3*(2* 3-1),4* 1* 2,4* 2* 3,4* 3* 1};
Jx21= x2-x1+4*(dx4*( 1- 2)+(dx5-dx6)* 3);
Jx32= x3-x2+4*(dx5*( 2- 3)+(dx6-dx4)* 1);
Jx13= x1-x3+4*(dx6*( 3- 1)+(dx4-dx5)* 2);
Jy12= y1-y2+4*(dy4*( 2- 1)+(dy6-dy5)* 3);
Jy23= y2-y3+4*(dy5*( 3- 2)+(dy4-dy6)* 1);
Jy31= y3-y1+4*(dy6*( 1- 3)+(dy5-dy4)* 2);
Jdet = Jx21*Jy31-Jy12*Jx13;
dNx= {(4* 1-1)*Jy23,(4* 2-1)*Jy31,(4* 3-1)*Jy12,4*( 2*Jy23+ 1*Jy31),
4*( 3*Jy31+ 2*Jy12),4*( 1*Jy12+ 3*Jy23)}/Jdet;
dNy= {(4* 1-1)*Jx32,(4* 2-1)*Jx13,(4* 3-1)*Jx21,4*( 2*Jx32+ 1*Jx13),
4*( 3*Jx13+ 2*Jx21),4*( 1*Jx21+ 3*Jx32)}/Jdet;
Return[Simplify[{Nf,dNx,dNy,Jdet}]]
];
From these J can be constructed, and shape function partials Ni / x and Ni / y explicitly obtained
from (24.22). Somewhat simpler expressions, however, result by using the following hierarchical
side node coordinates:
x4 = x4 12 (x1 + x2 ),
x5 = x5 12 (x2 + x3 ),
x6 = x6 12 (x3 + x1 ),
y4 = y4 12 (y1 + y2 ),
y5 = y5 12 (y2 + y3 ),
y6 = y6 12 (y3 + y1 ).
(24.27)
Geometrically these represent the deviations from midpoint positions; thus for a superparametric element
x4 = x5 = x6 = y4 = y5 = y6 = 0. The Jacobian coefficients become
Jx21 = x21 + 4(x4 (1 2 ) + (x5 x6 )3 ),
Jx13 = x13 + 4(x6 (3 1 ) + (x4 x5 )2 ),
Jy23 = y23 + 4(y5 (3 2 ) + (y4 y6 )1 ),
(Note that if all midpoint deviations vanish, Jx ji
1
det J = 12 (Jx21 Jy31 Jy12 Jx13 ) and
2
1
P=
2J
Jx32 = x32 + 4(x5 (2 3 ) + (x6 x4 )1 ),
Jy12 = y12 + 4(y4 (2 1 ) + (y6 y5 )3 ),
Jy31 = y31 + 4(y6 (1 3 ) + (y5 y4 )2 ).
(24.28)
= x ji and Jy ji = y ji .) From this one gets J =
y23 + 4(y5 (3 2 ) + (y4 y6 )1 )
y31 + 4(y6 (1 3 ) + (y5 y4 )2 )
y12 + 4(y4 (2 1 ) + (y6 y5 )3 )
x32 + 4(x5 (2 3 ) + (x6 x4 )1 )
x13 + 4(x6 (3 1 ) + (x4 x5 )2 ) .
x21 + 4(x4 (1 2 ) + (x5 x6 )3 )
(24.29)
(41 1)Jy23
(42 1)Jy31
1
NT
(43 1)Jy12
=
,
x
2J 4(2 Jy23 + 1 Jy31 )
(41 1)Jx32
(42 1)Jx13
1
NT
(43 1)Jx21
=
.
y
2J 4(2 Jx32 + 1 Jx13 )
(24.30)
2411
Figure 24.6. Stiffness matrix module for 6-node plane stress triangle.
hBT EB d
wi F(1i , 2i , 3i ),
where
F(1 , 2 , 3 ) = hBT EB J.
(24.31)
i=1
Here p denotes the number of sample points of the Gauss rule being used, wi is the integration weight
for the i th sample point, 1i , 2i , 3i are the sample point triangular coordinates and J = 12 det J. This
data is provided by TrigGaussRuleInfo. For the 6-node triangle (24.31) is implemented in module
Trig6IsoPMembraneStiffness, listed in Figure 24.6. The module is invoked as
Ke = Trig6IsoPMembraneStiffness[ncoor,Emat,th,options]
(24.32)
Emat
E 11
E 12
E 13
E 12
E 22
E 23
E 13
E 23
E 33
{ x6,y6 } }.
(24.33)
2412
The one-entry form specifies uniform thickness h. The six-entry form is used to specify
an element of variable thickness, in which case the entries are the six node thicknesses
and h is interpolated quadratically.
options
Processing options list. May contain two items: { numer,rule } or one: { numer }.
numer is a logical flag. If True, the computations are forced to proceed in floating-point
arithmetic. For symbolic or exact arithmetic work set numer to False.
rule specifies the triangle Gauss rule as described in 24.2.4; rule may be 1, 3, 3, 6
or 7. For the 6-node element the three point rules are sufficient to get the correct rank.
If omitted rule = 3 is assumed.
(24.34)
5
6
2 (6,2)
4
1 (0,0)
Figure 24.7. Straight sided 6-node triangle
test element.
The computed Ke for integration rules with 3 or more points are identical since those rules are exact
for this element if the metric is constant, which is the case here. That stiffness is
54
27
18
9
72
0
36
27
18
0
0
9 72
0
54
0 18
9
36
0
72
0
216 108
54 36
72
0
18 108
216 36
90
0
72
9
54 36
162 81
0
0
36 36
90 81
378
0
0
0 72
0
0
0
576 216
72
0
72
0
0 216
864
0 216
144 216
144
0
72
0
144 360
144 360
72 288
36
0
0
0 36 432
288
144
0
0 36 144
288 720
0
0
216
144
216
144
0
72
576
216
144
0
0
0
0
36
144
0
360
0
144
0
360
36
72 432
288
288
216 144
864
0
0
576
144 216
36
144
0
36
144
288
720
144
216
864
(24.35)
2413
3/2)
6 (1/2, 1/ 3 )
5 (1/2, 1/ 3 )
2 (1/2,0)
1 (1/2,0)
4 ( 0, 1/(2 3) )
Figure 24.10. Script to form Ke for the triangle of Figure 24.9, using four integration rules.
For rule=3 the result (printed to 4 places because of the SetPrecision statement in script) is
344.7
75.00
91.80
21.00
86.60
24.00
124.7
72.00
20.78
36.00
20.78
36.00
75.00
258.1
21.00
84.87
18.00
90.07
96.00
0
36.00
20.78
132.0
103.9
91.80
21.00
344.7
75.00
86.60
24.00
124.7
72.00
20.78
36.00
20.78
36.00
21.00
84.87
75.00
258.1
18.00
90.07
96.00
0
132.0
103.9
36.00
20.78
86.60
18.00
86.60
18.00
214.8
0
41.57
0
41.57
144.0
41.57
144.0
24.00
90.07
24.00
90.07
0
388.0
0
41.57
24.00
83.14
24.00
83.14
124.7
96.00
124.7
96.00
41.57
0
374.1
0
83.14
72.00
83.14
72.00
2413
72.00
0
72.00
0
0
41.57
0
374.1
72.00
166.3
72.00
166.3
20.78
36.00
20.78
132.0
41.57
24.00
83.14
72.00
374.1
0
207.8
0
36.00
20.78
36.00
103.9
144.0
83.14
72.00
166.3
0
374.1
0
41.57
20.78
132.0
20.78
36.00
41.57
24.00
83.14
72.00
207.8
0
374.1
0
36.00
103.9
36.00
20.78
144.0
83.14
72.00
166.3
41.57
0
374.1
(24.37)
2414
For rule=-3:
566.4
139.0
129.9
21.00
79.67
8.000
364.9
104.0
205.5
36.00
205.5
28.00
139.0
405.9
21.00
62.93
50.00
113.2
64.00
129.3
36.00
164.0
196.0
288.7
129.9
21.00
566.4
139.0
79.67
8.000
364.9
104.0
205.5
28.00
205.5
36.00
21.00
62.93
139.0
405.9
50.00
113.2
64.00
129.3
196.0
288.7
36.00
164.0
79.67
50.00
79.67
50.00
325.6
0
143.2
0
170.9
176.0
170.9
176.0
8.000
113.2
8.000
113.2
0
646.6
0
226.3
8.000
323.3
8.000
323.3
364.9
64.00
364.9
64.00
143.2
0
632.8
0
120.1
104.0
120.1
104.0
104.0
129.3
104.0
129.3
0
226.3
0
485.0
104.0
0
104.0
0
661.9
158.5
141.7
21.00
92.53
7.407
432.1
117.2
190.2
29.10
273.8
40.61
158.5
478.8
21.00
76.13
49.41
125.3
50.79
182.7
29.10
156.6
208.6
341.0
141.7
21.00
661.9
158.5
92.53
7.407
432.1
117.2
273.8
40.61
190.2
29.10
21.00
76.13
158.5
478.8
49.41
125.3
50.79
182.7
208.6
341.0
29.10
156.6
92.53
49.41
92.53
49.41
387.3
0
139.8
0
216.3
175.4
216.3
175.4
7.407
125.3
7.407
125.3
0
753.4
0
207.0
7.407
398.5
7.407
398.5
432.1
50.79
432.1
50.79
139.8
0
723.6
0
140.2
117.2
140.2
117.2
117.2
182.7
117.2
182.7
0
207.0
0
562.6
117.2
4.884
117.2
4.884
205.5
36.00
205.5
196.0
170.9
8.000
120.1
104.0
521.9
64.00
60.04
0
36.00
164.0
28.00
288.7
176.0
323.3
104.0
0
64.00
595.8
0
180.1
205.5
196.0
205.5
36.00
170.9
8.000
120.1
104.0
60.04
0
521.9
64.00
28.00
288.7
36.00
164.0
176.0
323.3
104.0
0
180.1
64.00
595.8
(24.38)
190.2
29.10
273.8
208.6
216.3
7.407
140.2
117.2
602.8
69.71
62.78
0
29.10
156.6
40.61
341.0
175.4
398.5
117.2
4.884
69.71
683.3
0
207.9
273.8
208.6
190.2
29.10
216.3
7.407
140.2
117.2
62.78
0
602.8
69.71
40.61
341.0
29.10
156.6
175.4
398.5
117.2
4.884
207.9
69.71
683.3
(24.39)
Eigenvalues of Ke
702.83
1489.80
1775.53
1727.11
665.11
1489.80
1775.53
1727.11
553.472
702.833
896.833
880.958
118.391
196.429
321.181
312.123
118.391
196.429
321.181
312.123
0
0
0
0
0 0
0 0
0 0
0 0
(24.40)
Since the metric of this element is highly distorted near its boundary, the stiffness matrix entries and
eigenvalues change significantly as the integration formulas are advanced from 3 to 6 and 7 points.
However as can be seen the matrix remains rank-sufficient.
24.5.
The 10-node cubic triangle, depicted in Figure 24.11, is rarely used as such in applications because of the difficulty
of combining it with other elements. Nevertheless the derivation of the element modules is instructive as this
triangle has other and more productive uses as a generator of more practical elements with drilling rotational
degrees of freedom at corners for modeling shells. Such transformations are studied in advanced FEM courses.
The geometry of the triangle is defined by the coordinates of the ten nodes. A notational warning: the interior node
is labeled as 0 instead of 10 (cf. Figure 24.8) to avoid confusion with notation such as x12 = x1 x2 for coordinate
differences.
2414
2415
2 2 +3 2
1
1
9
0
2 (61 1)
NT
9 2 (32 1)
= 2
,
0
1
3 (33 1)
3 (61 1)
62 3
NT
9
= 2
2
0
2
22 +322
9
0
1 (31 1)
1 (62 1)
3 (62 1)
3 (33 1)
0
0
61 3
NT
9
= 2
3
0
0
2
2
2
3 +33
9
.
2 (32 1)
2 (63 1)
1 (63 1)
1 (31 1)
61 2
(24.41)
8
9
2
5
Using (24.22) and (24.41), the shape function partial derivatives can be worked out to be
2
2
Jy12 ( 9 23 + 33 /2)
N
9 Jy23 2 (32 1) + Jy31 1 (62 1)
,
=
x
4J
Jy12 2 (32 1) + Jy31 3 (62 1)
Jy31 3 (33 1) + Jy12 2 (63 1)
2
2
Jx21 ( 9 23 + 33 /2)
N
9 Jx32 2 (32 1) + Jx13 1 (62 1)
.
=
y
4J
Jx21 2 (32 1) + Jx13 3 (62 1)
Jx13 3 (33 1) + Jx21 2 (63 1)
9
2
9
2
9
2
2415
(24.43)
2416
and
Jy12 = y12
9
2
9
2
9
2
(24.44)
2416
2417
Ke = Trig10IsoPMembraneStiffness[ncoor,Emat,th,options]
this has the same arguments of the quadratic triangle module invoked in (24.32), with the following changes. The
node coordinate list ncoor contains 10 entries: { { x1,y1 },{ x2,y2 },{ x3,y3 }, . . .,{ x9,y9 },{ x0,y0 } }. If the
plate thickness varies, th is a list of 10 entries: { h1,h2,h3,h4,. . .,h9,h0 }. The triangle Gauss rule specified in
options as { numer,rule } should be 6 or 7 to produce a rank sufficient stiffness. If omitted rule = 6 is assumed.
The module returns Ke as an 20 20 symmetric matrix pertaining to the following arrangement of nodal displacements:
(24.46)
ue = [ u x1 u y1 u x2 u y2 u x3 u y3 u x4 u y4 . . . u x9 u y9 u x0 u y0 ]T .
Remark 24.3. For symbolic work with this element the 7-point rule should be preferred because the exact
expressions of the abcissas and weigths at sample points are simpler than for the 6-point rule, as can be observed
in Figure 24.3. This speeds up algebraic simplification. For numerical work the 6-point rule is slightly faster.
24.5.3. *Test Element
3 (4,4)
7
The corner nodes are placed at (0, 0), (6, 2) and (4, 4). The
6 side nodes are located at the thirdpoints of the sides and the
interior node at the centroid. The plate has unit thickness.
The material is isotropic with E = 1920 and = 0.
The script of Figure 24.15 computes Ke using the 7-point
Gauss rule and exact arithmetic.
2 (6,2)
9
5
4
1 (0,0)
The returned stiffness matrix using either 6- or 7-point integration is the same, since for a superparametric element
the integrand is quartic in the triangular coordinates. For the given combination of inputs the entries are exact
integers:
2417
2418
306
102
42
42
21
21
315
333
171
153
e
K =
27
9
27
99
63
144
180
102
42
42
21
21
315
333
171
153
306
42
42
63
105
351
369
135
117
42
1224 408
210
42
252
180
234
306
42 408
1224
126
294
108
36 378
450
63 210
126
1122
306
99
27
99
27
105
42 294
306
1938
27
171
27
171
351
252
108
99
27
5265 1215 1539 243
369 180
36
27
171 1215
6885
729
891
135 234
378
99
27 1539
729
5265 1215
117
306
450
27
171
243
891 1215
6885
9 1602
990
819
171
81
81
405
405
27
306 2286
459
1179
81
405
405 2025
9
828 468 1611
315
81
81
81
81
27 180
1116
999 2223
81
405
81
405
225 108
36
72
144
810
324
810
324
387
36 108
540
684
324
1134
324
1134
504 108
36
171
99 4050
1620
810
324
828
36 108
189
531
1620 5670
324
1134
0
0
0
0
0
0 486
486 4860
1944
0
0
0
0
0
0 486 2430
1944 6804
27
9
1602
990
819
171
81
81
405
405
5265
1215
3483
729
162
0
162
0
972
0
9
27
9
99
63
144
180
0
0
27
9
27
225
387
504
828
0
0
306
828 180
108
36
108
36
0
0
2286 468
1116
36
108
36
108
0
0
459 1611
999
72 540
171
189
0
0
1179
315 2223
144
684
99
531
0
0
81
81
81
810 324 4050
1620
486
486
405
81
405 324
1134
1620 5670
486 2430
405
81
81
810 324
810
324 4860
1944
2025
81
405 324
1134
324
1134
1944 6804
1215 3483
729
162
0
162
0
972
0
6885
1701 4779
0
162
0
162
0
972
1701
5265 1215
810
0
162
0
486
486
4779 1215
6885
0
810
0
162
486 2430
0 810
0
5265 1215 1296
486 4860
1944
162
0
810 1215
6885
486 2592
1944 6804
0
162
0 1296
486
5265 1215 972
0
162
0 162
486 2592 1215
6885
0
972
(24.48)
The 3 zero eigenvalues pertain to the three independent rigid-body modes in two dimensions. The 17 other
eigenvalues are positive. Consequently the computed Ke has the correct rank of 17.
2418
2419
24. References
ClearAll[Em,,a,b,e,h]; Em=1920; =0; h=1;
ncoor={{0,0},{6,2},{4,4}};
x4=(2*x1+x2)/3; x5=(x1+2*x2)/3; y4=(2*y1+y2)/3; y5=(y1+2*y2)/3;
x6=(2*x2+x3)/3; x7=(x2+2*x3)/3; y6=(2*y2+y3)/3; y7=(y2+2*y3)/3;
x8=(2*x3+x1)/3; x9=(x3+2*x1)/3; y8=(2*y3+y1)/3; y9=(y3+2*y1)/3;
x0=(x1+x2+x3)/3; y0=(y1+y2+y3)/3;
ncoor= {{x1,y1},{x2,y2},{x3,y3},{x4,y4},{x5,y5},{x6,y6},{x7,y7},
{x8,y8},{x9,y9},{x0,y0}};
Emat=Em/(1-^2)*{{1,,0},{,1,0},{0,0,(1-)/2}};
Ke=Trig10IsoPMembraneStiffness[ncoor,Emat,h,{False,7}];
Ke=Simplify[Ke]; Print[Ke//MatrixForm]; ev=Chop[Eigenvalues[N[Ke]]];
Print["eigs of Ke=",ev];
The three-node linear triangle, also known as Constant Strain Triangle (CST) and Turner triangle, was
developed as triangular skin panel by Turner, Clough and Martin in 195153 [68,69] using interelement
flux assumptions, and published in 1956 [392]. It is not clear when the assumed-displacement derivation,
which yields the same stiffness matrix, was done first. The displacement derivation is mentioned in passing
by Clough in [61] and worked out in the theses of Melosh [261] and Wilson [414].
2.
The six-node quadratic triangle, also known as Linear Strain Triangle (LST) and Veubeke triangle, was
developed by B. M. Fraeijs de Veubeke in 196263 [433]; published 1965 [149].
3.
The ten-node cubic triangle, also known as Quadratic Strain Triangle (QST), was developed by the writer in
1965; published 1966 [100]. Shape functions for the cubic triangle were presented there but used for plate
bending instead of plane stress.
A version of the cubic triangle with freedoms migrated to corners and recombined to produce a drilling rotation
at corners, was used in static and dynamic shell analysis in Carrs thesis under Ray Clough [57,65]. The drillingfreedom idea was independently exploited for rectangular and quadrilateral elements, respectively, in the theses of
Abu-Ghazaleh [2] and Willam [413], both under Alex Scordelis. A variant of the Willam quadrilateral, developed
by Bo Almroth at Lockheed, has survived in the nonlinear shell analysis code STAGS as element 410 [326].
Numerical integration came into FEM by the mid 1960s. Five triangle integration rules were tabulated in the
writers thesis [100, pp. 3839]. These were gathered from three sources: two papers by Hammer and Stroud
[178,179] and the 1964 Handbook of Mathematical Functions [1, 25.4]. They were adapted to FEM by converting
Cartesian abscissas to triangle coordinates. The table has been reproduced in Zienkiewicz book since the second
edition [431, Table 8.2] and, with corrections and additions, in the monograph of Strang and Fix [360, p. 184].
The monograph by Stroud [363] contains a comprehensive collection of quadrature formulas for multiple integrals. That book gathers most of the formulas known by 1970, as well as references until that
year. (Only a small fraction of Strouds tabulated rules, however, are suitable for FEM work.) The collection has been periodically kept up to date by Cools [7375], who also maintains a dedicated web site:
http://www.cs.kuleuven.ac.be/~nines/research/ecf/ecf.html This site provides rule information in
16- and 32-digit accuracy for many geometries and dimensionalities as well as a linked index card of references
to source publications.
References
Referenced items moved to Appendix R.
2419
2420
function module for the 4-node transition iso-P triangular element with
only one side node: 4, which is located between 1 and 2. See Figure E24.1.
The shape functions are N1 = 1 21 2 , N2 = 2 21 2 , N3 = 3 and
N4 = 41 2 . Use the three interior point integration rule=3.
Test the element for the geometry of the triangle depicted in Figure 24.7,
removing nodes 5 and 6, and with E = 2880, = 1/3 and h = 1.
Report results for the stiffness matrix Ke and its 8 eigenvalues. Note:
Notebook Trig6Stiffness.nb for the 6-node triangle, posted on the
index of Chapter 24, may be used as template in support of this Exercise.
Partial results: K 11 = 1980, K 18 = 1440.
EXERCISE 24.2 [A/C:5+20] As in the foregoing Exercise, but now write the module for a five-node triangular
transition element that lacks midnode 6 opposite corner 2. Begin by deriving the five shape functions.
EXERCISE 24.3 [A+C:25] Consider the superparametric straight-sided 6-node triangle where side nodes are
located at the midpoints. By setting x4 = 12 (x1 + x2 ), x5 = 12 (x2 + x3 ), x3 = 12 (x3 + x1 ), y4 = 12 (y1 + y2 ),
y5 = 12 (y2 + y3 ), y3 = 12 (y3 + y1 ) in (24.26), deduce that
J=
1
1
1
3x1 2x1 + x2 2x1 + x3
3y1 2y1 + y2 2y1 + y3
1 +
1
1
1
x1 + 2x2 3x2 2x2 + x3
y1 + 2y2 3y2 2y2 + y3
2 +
1
1
1
x1 + 2x3 x2 + 2x3 3x3
y1 + 2y3 y2 + 2y3 3y3
3 . (E24.1)
This contradicts publications that, by mistakingly assuming that the results for the linear triangle (Chapter 15) can
be extended by analogy, take
1 1 1
J = x1 x2 x3
(E24.2)
y1 y2 y3
Show, however, that
y23 y32
1
2J = 2A = det J = x3 y12 + x1 y23 + x2 y31 ,
P=
(E24.3)
y31 x13
2J y
x21
12
are the same for both (E24.1) and (E24.2). Thus the mistake has no effect on the computation of derivatives.
EXERCISE 24.4 [A/C:15+15] Consider the superparametric straight-sided 6-node triangle where side nodes are
at the midpoints of the sides and the thickness h is constant. Using the 3-midpoint quadrature rule show that the
element stiffness can be expressed in a closed form obtained in 1966 [100]:
1
B1 =
2A
1
B2 =
2A
1
B3 =
2A
2420
(E24.4)
(E24.5)
2421
24. References
1
B1 =
6A
1
B2 =
6A
1
B1 =
6A
1
B2 =
6A
1
B3 =
6A
(E24.7)
EXERCISE 24.5 [A/C:40] (Research paper level) Characterize the most general form of the Bi (i = 1, 2, 3)
matrices that produce the same stiffness matrix Ke in (E24.4). (Entails solving an algebraic Riccati equation.)
EXERCISE 24.6 [A/C:25]. Derive the 4-node transition triangle by forming the 6-node stiffness and applying
MFCs to eliminate 5 and 6. Prove that this technique only works if sides 13 and 23 are straight with nodes 5 and
6 initially at the midpoint of those sides.
2421
25
The Assembly
Process
251
TABLE OF CONTENTS
Page
25.1
25.2
25.3
25.4
25.5
25.6
25.
25.
Introduction
. . . . . . . . . . . . . . . . . . . . .
Simplications . . . . . . . . . . . . . . . . . . . .
Simplied Assemblers . . . . . . . . . . . . . . . . . .
25.3.1
A Plane Truss Example Structure
. . . . . . . . . .
25.3.2
Simplified Assembler Implementation
. . . . . . . . .
MET Assemblers . . . . . . . . . . . . . . . . . . .
25.4.1
A Plane Stress Assembler
. . . . . . . . . . . . .
25.4.2
MET Assembler Implementation
. . . . . . . . . .
MET-VFC Assemblers
. . . . . . . . . . . . . . . . .
25.5.1
Node Freedom Arrangement . . . . . . . . . . . .
25.5.2
Node Freedom Signature
. . . . . . . . . . . . .
25.5.3
The Node Freedom Allocation Table
. . . . . . . . .
25.5.4
The Node Freedom Map Table . . . . . . . . . . . .
25.5.5
The Element Freedom Signature
. . . . . . . . . .
25.5.6
The Element Freedom Table
. . . . . . . . . . . .
25.5.7
A Plane Trussed Frame Structure
. . . . . . . . . .
25.5.8
MET-VFC Assembler Implementation . . . . . . . . .
*Handling MultiFreedom Constraints
. . . . . . . . . . .
Notes and Bibliography
. . . . . . . . . . . . . . . . .
Exercises . . . . . . . . . . . . . . . . . . . . . .
252
253
253
254
254
256
257
257
259
2510
2510
2511
2512
2512
2513
2513
2514
2517
2519
2520
2521
25.2
SIMPLIFICATIONS
25.1. Introduction
Chapters 20, 23 and 24 dealt with element level operations. Sandwiched between element processing
and solution there is the assembly process that constructs the master stiffness equations. Assembler
examples for special models were given as recipes in the complete programs of Chapters 21 and
22. In the present chapter assembly will be studied with more generality.
The position of the assembler in a DSM-based code for static analysis is sketched in Figure 25.1. In
most codes the assembler is implemented as a element library loop driver. This means that instead
of forming all elements first and then assembling, the assembler constructs one element at a time
in a loop, and immediately merges it into the master equations. This is the merge loop.
Model definition data:
geometry
element connectivity
material
fabrication
freedom activity
Assembler
Modify Eqs
for BCs
Equation
Solver
ELEMENT
LIBRARY
Nodal
displacements
To postprocessor
Figure 25.1. Role of assembler in FEM program.
Assembly is the most complicated stage of a production finite element program in terms of data
flow. The complexity is not due to mathematical operations, which merely involve matrix addition,
but interfacing with a large element library. Forming an element requires access to geometry,
connectivity, material, and fabrication data. (In nonlinear analysis, to the state as well.) Merge
requires access to freedom activity data, as well as knowledge of the sparse matrix format in which
K is stored. As illustrated in Figure 25.1, the assembler sits at the crossroads of this data exchange.
The coverage of the assembly process for a general FEM implementation is beyond the scope of
an introductory course. Instead this Chapter takes advantage of assumptions that lead to coding
simplifications. This allows the basic aspects to be covered without excessive delay.
25.2. Simplifications
The assembly process is considerably simplified if the FEM implementation has these properties:
All elements are of the same type. For example: all elements are 2-node plane bars.
The number and configuration of degrees of freedom at each node is the same.
(a)
(b) 1 (1,2)
E = 3000 and
A = 2 for all bars
1
3
2 (3,4)
(2)
3 (5,6)
(1)
(2)
(3)
(4)
assembly
4
4
(5)
(4)
4 (7,8)
(5)
(3)
4
(1)
1 (1,2)
2 (3,4)
3 (5,6)
4 (7,8)
Figure 25.2. Left: Example plane truss structure. (a): model definition; (b) disconnection
assembly process. Numbers in parentheses written after node numbers are global DOF numbers.
If the first four conditions are met the implementation is simpler because the element freedom table
described below can be constructed on the fly from the element node numbers. The last condition
simplifies the indexing to access entries of K.
25.3. Simplified Assemblers
In this section all simplifying assumptions listed in 25.2 are assumed to hold. This allows us to
focus on local-to-global DOF mapping. The process is illustrated on a plane truss structure.
25.3.1. A Plane Truss Example Structure
The plane truss shown in Figure 25.2(a) will be used to illustrate the details of the assembly process.
The structure has 5 elements, 4 nodes and 8 degrees of freedom. The disconnection-to-assembly
process is pictured in Figure 25.2(b).
Begin by clearing all entries of the 8 8 master stiffness matrix K to zero, so that we effectively
start with the null matrix:
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 3
0 0 0 0 0 0 0 0 4
K=
(25.1)
0 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 6
0 0 0 0 0 0 0 0 7
0 0 0 0 0 0 0 0 8
The numbers written after each row of K are the global DOF numbers.
Element (1) joins nodes 1 and 2. The global DOFs of those nodes are 2 1 1 = 1, 2 1 = 1,
2 2 1 = 3 and 2 2 = 4. See Figure 25.2(b). Those four numbers are collected into an array
called the element freedom table, or EFT for short. The element stiffness matrix K(1) is listed on
254
25.3
SIMPLIFIED ASSEMBLERS
the left below with the EFT entries annotated after the matrix rows. On the right is K upon merging
the element stiffness:
1500
0
1500
0
0 1500 0
0
0
0
0 1500 0
0
0
0
1500
0
1500
0
0
1
2
3
4
0 1500 0 0 0 0 0
0
0
0 0 0 0 0
0 1500 0 0 0 0 0
0
0
0 0 0 0 0
0
0
0 0 0 0 0
0
0
0 0 0 0 0
0
0
0 0 0 0 0
0
0
0 0 0 0 0
1
2
3
4
(25.2)
Element (2) joins nodes 2 and 3. The global DOFs of those nodes are 2 2 1 = 3, 2 2 = 4,
2 3 1 = 5 and 2 3 = 6; thus the EFT is { 3,4,5,6 }. Matrices K(2) and K upon merge are
1500
0
1500
0
0 1500 0
0
0
0
0 1500 0
0
0
0
0 1500 0
0
0 0 0
0
0
0
0
0 0 0
0 3000 0 1500 0 0 0
0
0
0
0
0 0 0
0 1500 0 1500 0 0 0
0
0
0
0
0 0 0
0
0
0
0
0 0 0
0
0
0
0
0 0 0
1500
0
1500
0
0
3
4
5
6
3
4
5
6
(25.3)
Element (3) joins nodes 1 and 4. Its EFT is { 1,2,7,8 }. Matrices K(3) and K upon merge are
1
2
7
8
2268
576
1500
768
576
Element (4) joins nodes 2 and 4. Its EFT is { 3,4,7,8 }. Matrices K(4)
0
0
0
0
0 2000 0 2000
0
0
0
0
0 2000 0 2000
3
4
7
8
2268
576
1500
768
576
1
576
432 2
576 7
8
432
(25.4)
and K upon merge are
576 1500 0
0
0 768
432
0
0
0
0 576
0
3000 0 1500 0 0
0
0
0
0
0 0
0 1500 0 1500 0 0
0
0
0
0
0 0
576
0
0
0
0 768
432
0
0
0
0 576
576 1500
0
0
0 768
432
0
0
0
0 576
0
3000
0
1500 0 0
0
0
2000
0
0 0
0 1500
0
1500 0 0
0
0
0
0
0 0
576
0
0
0
0 768
432
0
2000
0
0 576
255
576
432
0 3
2000 4
576 7
8
2432
(25.5)
Finally, element (5) joins nodes 3 and 4. Its EFT is { 5,6,7,8 }. Matrices K(5) and K upon merge are
3000
0 1500 0
0
0
768 576 768 576 5 1500 0
0
0
2000
0
0
0 2000
576 432 576 432 6 0
0 1500 0
2268 576 768 576 5
768 576 768 576 7 0
0
0
0
576 432 576 432 6
576 432 576 432 8 0
7
768 576
0
0
768 576 1536
0
8
576 432 0 2000 576 432 0
2864
(25.6)
Since all elements have been processed, (25.6) is the master stiffness before application of boundary
conditions.
PlaneTrussMasterStiffness[nodxyz_,elenod_,elemat_,elefab_,
eleopt_]:=Module[{numele=Length[elenod],numnod=Length[nodxyz],
e,ni,nj,eft,i,j,ii,jj,ncoor,Em,A,options,Ke,K},
K=Table[0,{2*numnod},{2*numnod}];
For [e=1, e<=numele, e++, {ni,nj}=elenod[[e]];
eft={2*ni-1,2*ni,2*nj-1,2*nj};
ncoor={nodxyz[[ni]],nodxyz[[nj]]};
Em=elemat[[e]]; A=elefab[[e]]; options=eleopt;
Ke=PlaneBar2Stiffness[ncoor,Em,A,options];
For [i=1, i<=4, i++, ii=eft[[i]];
For [j=i, j<=4, j++, jj=eft[[j]];
K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]] ];
];
]; Return[K]
];
0
0
0
0
576.
432.
576.
432.
768.
576.
0
0
768.
576.
1536.
0
576.
432.
0
2000.
576.
432.
0
2864.
256
25.4
MET ASSEMBLERS
K = SpaceTrussMasterStiffness[nodxyz,elenod,elemat,elefab,prcopt]
The five arguments: nodxyz, elenod, elemat, elefab, and prcopt have the same function as
those described in 21.1.3 for the SpaceTrussMasterStiffness assembler. In fact, comparing
the code in Figure 25.3 to that of Figure 21.1, the similarities are obvious.
Running the script listed in the top of Figure 25.4 produces the output shown in the bottom of
that figure. The master stiffness (25.6) is reproduced. The eigenvalue analysis verifies that the
assembled stiffness has the correct rank of 8 3 = 5.
5(9,10)
4 (7,8)
y
4
(1)
(3)
5 in
5
(2)
5 in
trig (1)
1(1,2)
bar (3)
(4)
6 in
2(3,4)
4 (7,8)
1 in 1
bar (4)
1in
4 in
3(5,6)
assembly
quad (2)
5(9,10)
1(1,2)
2(3,4)
3(5,6)
The assembler calls the appropriate element stiffness module according to type, and builds the local
to global DOF mapping accordingly.
25.4.1. A Plane Stress Assembler
This kind of assembler will be illustrated using the module PlaneStressMasterStiffness. As
its name indicates, this is suitable for use in plane stress analysis programs. We make the following
assumptions:
1
All nodes in the FEM mesh have 2 DOFs, namely the {u x , u y } displacements. There are no
node gaps or MFCs. The master stiffness is stored as a full matrix.
Element types can be: 2-node bars, 3-node linear triangles, ot 4-node bilinear quadrilaterals.
These elements can be freely intermixed. Element types are identified with character strings
"Bar2", "Trig3" and "Quad4", respectively.
257
As noted above, the chief modification over the simplest assembler is that a different stiffness
module is invoked as per type. Returned stiffness matrices are generally of different order; in our
case 4 4, 6 6 and 8 8 for the bar, triangle and quadrilateral, respectively. But the construction
of the EFT is immediate, since node n maps to global freedoms 2n 1 and 2n. The technique is
illustrated with the 4-element, 5-node plane stress structure shown in Figure 25.5. It consists of
one triangle, one quadrilateral, and two bars. The assembly process goes as follows.
Element (1) is a 3-node triangle with nodes 3, 5 and 4, whence the EFT is { 5,6,9,10,7,8 }. The
element stiffness is
K(1)
500.0
0 500.0 600.0
0 600.0
0 1333.3 400.0 1333.3
400.0
0
500.0
400.0
2420.0
1000.0
1920.0
600.0
0
400.0 1920.0 400.0 1920.0
0
600.0
0 600.0 720.0
0 720.0
5
6
9
10
7
8
(25.8)
Element (2) is a 4-node quad with nodes 2, 3, 4 and 1, whence the EFT is { 3,4,5,6,7,8,1,2 }.
The element stiffness computed with a 2 2 Gauss rule is
420.27 3
850.95 4
164.05 5
549.81 6
K(2)
668.76 7
600.15 8
412.54 1
2000.9 2
(25.9)
Element (3) is a 2-node bar with nodes 1 and 4, whence the EFT is { 1,2,7,8 }. The element
stiffness is
0
0 0
0 1
0 4000.0 0 4000.0 2
(25.10)
K(3) =
0
0 0
0 7
0 4000.0 0 4000.0 8
2076.4
395.55
735.28
679.11
=
331.78
136.71
1009.3
420.27
395.55
2703.1
479.11
660.61
136.71
1191.5
220.27
850.95
735.28
479.11
2067.1
215.82
386.36
427.34
1718.1
164.05
679.11
660.61
215.82
852.12
627.34
358.30
164.05
549.81
331.78
136.71
386.36
627.34
610.92
178.13
665.50
668.76
136.71
1191.5
427.34
358.30
178.13
1433.4
468.76
600.15
1009.3
220.27
1718.1
164.05
665.50
468.76
3393.0
412.54
Element (4) is a 2-node bar with nodes 1 and 2, whence the EFT is { 1,2,3,4 }. The element
stiffness is
25.4
MET ASSEMBLERS
PlaneStressMasterStiffness[nodxyz_,eletyp_,elenod_,
elemat_,elefab_,prcopt_]:=Module[{numele=Length[elenod],
numnod=Length[nodxyz],ncoor,type,e,enl,neldof,
i,n,ii,jj,eftab,Emat,th,numer,Ke,K},
K=Table[0,{2*numnod},{2*numnod}]; numer=prcopt[[1]];
For [e=1,e<=numele,e++, type=eletyp[[e]];
If [!MemberQ[{"Bar2","Trig3","Quad4"},type], Print["Illegal type",
" of element e=",e," Assembly interrupted"]; Return[K]];
enl=elenod[[e]]; n=Length[enl];
eftab=Flatten[Table[{2*enl[[i]]-1,2*enl[[i]]},{i,1,n}]];
ncoor=Table[nodxyz[[enl[[i]]]],{i,n}];
If [type=="Bar2", Em=elemat[[e]]; A=elefab[[e]];
Ke=PlaneBar2Stiffness[ncoor,Em,A,{numer}] ];
If [type=="Trig3", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig3IsoPMembraneStiffness[ncoor,Emat,th,{numer}] ];
If [type=="Quad4", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,th,{numer,2}] ];
neldof=Length[Ke];
For [i=1,i<=neldof,i++, ii=eftab[[i]];
For [j=i,j<=neldof,j++, jj=eftab[[j]];
K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]] ];
];
]; Return[K];
];
decimal point, is
10464.0 6658.5 8080.4
6658.5 13072.0 7491.3
8080.4 7491.3 9147.5
0
0
0
0
500.0
400.0
1920.0
600.0
2420.0
1000.0
0
0
0
600.0
1333.3
400.0
720.0
1000.0
2053.3
(25.12)
(25.13)
0
0
0
0
6658.5
13072.
7491.3
7922.0
164.05
549.81
668.76
4600.2
0
0
8080.4
7491.3
9147.5
6675.5
735.28
679.11
331.78
136.71
0
0
7291.3
7922.0
6675.5
9774.1
479.11
660.61
136.71
1191.5
0
0
1718.1
164.05
735.28
479.11
2567.1
215.82
386.36
1027.3
500.00
600.00
164.05
549.81
679.11
660.61
215.82
2185.5
1027.3
358.30
400.00
1333.3
665.50
668.76
331.78
136.71
386.36
1027.3
2530.9
178.13
1920.0
400.00
468.76
4600.2
136.71
1191.5
1027.3
358.30
178.13
6153.4
600.00
720.00
0
0
0
0
500.00
400.00
1920.0
600.00
2420.0
1000.0
0
0
0
0
600.00
1333.3
400.00
720.00
1000.0
2053.3
Figure 25.7. Script for assembling the plane stress model of Figure 25.5 and output results.
The script listed in the top of Figure 25.7 runs module PlaneStressMasterStiffness with the
inputs appropriate to the problem defined in Figure 25.5. The output shown in the bottom of the
figure reproduces the master stiffness matrix (25.12) and the eigenvalues (25.13). .
25.5. MET-VFC Assemblers
The next complication beyond multiple element types is a major one: allowing nodes to have
different freedom configurations. An assembler that handles this feature will be called a MET-VFC
assembler, where VFC is an acronym for Variable Freedom Configuration.
A MET-VFC assembler gets closer to what is actually implemented in production FEM programs.
A assembler of this kind can handle orientation nodes as well as node gaps automatically. Only
two advanced attributes remain: allowing treatment of MFCs by Lagrange multipliers, and handling
a sparse matrix storage scheme. The former can be done by an extension of the concept of element.
The latter requires major programming modifications, however, and is not considered in this Chapter.
The implementation of a MET-VFC assembler requires the definition of additional data structures
pertaining to freedoms, at both node and element levels. These are explained in the following
subsections before giving a concrete application example.
25.5.1. Node Freedom Arrangement
A key decision made by the implementor of a FEM program for structural analysis is: what freedoms
will be allocated to nodes, and how are they arranged? While many answers are possible, we focus
2510
PackNodeFreedomSignature[s_]:=FromDigits[s,10];
UnpackNodeFreedomSignature[p_,m_]:=IntegerDigits[p,10,m];
NodeFreedomCount[p_]:=DigitCount[p,10,1];
Figure 25.8. Node freedom manipulation utility functions.
here on the most common arrangement for a linear three-dimensional FEM program.1 At each node
n three displacements {u xn , u yn , u zn } and three infinitesimal rotations {xn , yn , zn } are chosen as
freedoms and ordered as follows:
u xn , u yn , u zn , xn , yn , zn
(25.15)
This is a Node Freedom Arrangement or NFA. Once the decision is made on a NFA, the position of
a freedom never changes.2 Thus if (25.15) is adopted, position #2 is forever associated to u yn .
The length of the Node Freedom Arrangement is called the NFA length and often denoted (as a
variable) by nfalen. For the common choice (25.15) of 3D structural codes, nfalen is 6.
25.5.2. Node Freedom Signature
Having picked a NFA such as (25.15) does not mean that all such freedoms need to be present at
a node. Take for example a model, such as a space truss, that only has translational degrees of
freedom. Then only {u xn , u yn , u zn } will be used, and it becomes unnecessary to carry rotations in
the master equations. There are also cases where allocations may vary from node to node.
To handle such scenarios in general terms a Node Freedom Signature or NFS, is introduced. The
NFS is a sequence of zero-one integers. If the jth entry is one, it means that the jth freedom in
the NFA is allocated; whereas if zero that freedom is not in use. For example, suppose that the
underlying NFA is (25.15) and that node 5 uses the three freedoms {u x5 , u y5 , z5 }. Then its NFS is
{ 1,1,0,0,0,1 }
(25.16)
If a node has no allocated freedoms (e.g, an orientation node), or has never been defined, its NFS
contains only zeros.
It is convenient to decimally pack signatures into integers to save storage because allocating a full
integer to hold just 0 or 1 is wasteful. The packed NFS (25.16) would be 110001. This technique
requires utilities for packing and unpacking. Mathematica functions that provide those services are
listed in Figure 25.8. All of them use built-in functions. A brief description follows.
p = PackNodeFreedomSignature[s]
This is the scheme used by most commercial codes. In a geometrically nonlinear FEM code, however, finite rotation
measures must be used. Consequently the infinitesimal node rotations {x , y , z } must be replaced by something else.
NFA positions #7 and beyond are available for additional freedom types, such as Lagrange multipliers, temperatures,
pressures, fluxes, etc. It is also possible to reserve more NFA positions for structural freedoms.
2511
NodeFreedomMapTable[nodfat_]:=Module[{numnod=Length[nodfat],
i,nodfmt}, nodfmt=Table[0,{numnod}];
For [i=1,i<=numnod-1,i++, nodfmt[[i+1]]=nodfmt[[i]]+
DigitCount[nodfat[[i]],10,1] ];
Return[nodfmt]];
TotalFreedomCount[nodfat_]:=Sum[DigitCount[nodfat[[i]],10,1],
{i,Length[nodfat]}];
Figure 25.9. Modules to construct the NFMT from the NFAT, and to compute the total number of freedoms.
(25.18)
The only argument is the NFAT. The module builds the NFMT by simple incrementation, and
returns it as function value.
3
The map qualifier comes from the use of this array in computing element-to-global equation mapping.
2512
25.5
MET-VFC ASSEMBLERS
ElementFreedomTable[enl_,efs_,nodfat_,nodfmt_,m_]:=Module[
{nelnod=Length[enl],eft,i,j,k=0,ix,n,s,es,sx},
eft=Table[0,{Sum[DigitCount[efs[[i]],10,1],{i,1,nelnod}]}];
For [i=1,i<=nelnod,i++, n=enl[[i]];
s=IntegerDigits[nodfat[[n]],10,m]; ix=0;
sx=Table[0,{m}]; Do [If[s[[j]]>0,sx[[j]]=++ix],{j,1,m}];
es=IntegerDigits[efs[[i]],10,m];
For [j=1,j<=m,j++, If [es[[j]]>0, k++;
If [s[[j]]>0, eft[[k]]=nodfmt[[n]]+sx[[j]] ]]];
];
Return[eft]];
Figure 25.10. Module to construct the Element Freedom Table for a MET-VFC assembler.
Example 25.2. The NFAT for the plane truss-frame structure of Figure 25.11 is nodfat = { 110001,110000,
(25.19)
returns { 0,3,5,8,8 } in nodfmt. This can be easily verified visually: 0+3=3, 0+3+2=5, etc.
Figure 25.9 also lists a function TotalFreedomCount that returns the total number of freedoms in
the master equations, given the NFAT as argument.
25.5.5. The Element Freedom Signature
The Element Freedom Signature or EFS is a data structure that shares similarities with the NFAT, but
provides freedom data at the element rather than global level. More specifically, given an element,
it tells to which degrees of freedom it constributes.
The EFS is best described through an example. Suppose that in a general FEM program all defined
structural nodes have the signature 111111, meaning the arrangement (25.15). The program includes
2-node space bar elements, which contribute only to translational degrees of freedom {u x , u y , u z }.
The EFS of any such element will be
efs = { 111000,111000 }
(25.20)
For a 2-node space beam element, which contributes to all six nodal freedoms, the EFS will be
efs = { 111111,111111 }
(25.21)
For a 3-node space beam element in which the third node is an orientation node:
efs = { 111111,111111,000000 }
(25.22)
This information, along with the NFAT and NFMT, is used to build Element Freedom Tables.
2513
(25.23)
efs
nodfat
nodfmt
The module returns the Element Freedom Table as function value. Examples of use of this module
are provided in the plane trussed frame example below.
Remark 25.1. The EFT constructed by ElementFreedomTable is guaranteed to contain only positive entries
if every freedom declared in the EFS matches a globally allocated freedom in the NFAT. But it is possible
for the returned EFT to contain zero entries. This can only happen if an element freedom does not match a
globally allocated one. For example suppose that a 2-node space beam element with the EFS (25.21) is placed
into a program that does not accept rotational freedoms and thus has a NFS of 111000 at all structural nodes.
Then six of the EFT entries, namely those pertaining to the rotational freedoms, would be zero.
The occurrence of a zero entry in a EFT normally flags a logic or input data error. If detected, the assembler
should print an appropriate error message and abort. The module of Figure 25.10 does not make that decision
because it lacks certain information, such as the element number, that should be placed into the message.
25.5
E=30000 MPa, A=0.02 m 2 ,
Izz =0.0004 m4
y
E=200000 MPa
A=0.003 m 2
MET-VFC ASSEMBLERS
(b)
1 Beam-column 3 Beam-column 5
(a)
FEM idealization
Bar
3m
x
E=200000 MPa
A=0.001 m2
4m
(c)
(d)
(2)
3(6,7,8)
Bar
2
(node 4: undefined)
disassembly
4m
(1)
1(1,2,3)
Bar
E=200000 MPa
A=0.001 m 2
5(9,10,11)
5(9,10,11)
3(6,7,8)
1(1,2,3)
assembly
(3)
(5)
(4)
2(4,5)
2(4,5)
Figure 25.11. Trussed frame structure to illustrate a MET-VFC assembler: (a) original structure
showing dimensions, material and fabrication properties; (b) finite element idealization with bars and
beam column elements; (c) conceptual disassembly; (d) assembly. Numbers written in parentheses
after a node number in (c,d) are the global freedom (equation) numbers allocated to that node.
1
u x1
1
2
u y1
1
3
z1
1
4
u x2
2
5
u y2
2
6
u x3
3
7
u y3
3
8
z3
3
9
u x5
5
10
u y5
5
11
z5
5
(25.24)
(25.25)
Type
Nodes
EFS
EFT
(1)
(2)
(3)
(4)
(5)
Beam-column
Beam-column
Bar
Bar
Bar
{ 1,3 }
{ 3,5 }
{ 1,2 }
{ 2,3 }
{ 2,5 }
{ 110001,110001 }
{ 110001,110001 }
{ 110000,110000 }
{ 110000,110000 }
{ 110000,110000 }
{ 1,2,3,6,7,8 }
{ 6,7,8,9,10,11 }
{ 1,2,4,5 }
{ 4,5,6,7 }
{ 4,5,9,10 }
(25.26)
Next we list the element stiffness matrices, computed with the modules discussed in Chapter 20.
The EFT entries are annotated as usual.
2515
150.
0.
0. 150.
0.
0.
0.
22.5
45.
0. 22.5
45.
0.
45. 120.
0. 45.
60.
(1)
K =
0.
0.
150.
0.
0.
150.
0. 22.5 45.
0.
22.5 45.
0.
45.
60.
0. 45. 120.
1
2
3
6
7
(25.27)
Element (2): This is a plane beam-column with element stiffness identical to the previous one
150.
0.
0. 150.
0.
0. 6
0.
22.5
45.
0. 22.5
45. 7
0.
45. 120.
0. 45.
60. 8
(2)
K =
(25.28)
0.
0.
150.
0.
0. 9
150.
0. 22.5 45.
0.
22.5 45. 10
0.
45.
60.
0. 45. 120. 11
Element (3): This is a plane bar element with stiffness
19.2
14.4
19.2
14.4
0
0
0
0
0 200. 0 200.
K(4) =
0
0
0
0
0 200. 0 200.
Element (5): This is a plane bar element with stiffness
25.6
19.2 25.6
14.4 19.2
19.2
K(5) =
25.6 19.2 25.6
19.2 14.4 19.2
4
5
6
7
(25.29)
(25.30)
19.2
14.4
19.2
14.4
175.6 19.2
0 25.6 19.2 150.
0
0
0 22.5 45.
19.2 36.9 45. 19.2 14.4
0
45. 120.
0
0
0 45. 60.
0 51.2
0
0
0
0
25.6 19.2
0
0 228.8
0 200.
0
19.2 14.4
K = 150.
0
0
0
0 300.
0
0
0
22.5
45.
0
200.
0
245.
0
0
45. 60.
0
0
0
0 240.
0
0
0 25.6 19.2 150.
0
0
0
0
0 19.2 14.4
0 22.5 45.
0
0
0
0
0
0
45. 60.
2516
1
2
4
5
4
5
9
(25.31)
10
0
0
0
25.6
19.2
150.
0
0
175.6
19.2
0
0
0 1
0
0 2
0
0 3
19.2
0 4
14.4
0 5
0
0 6
22.5 45. 7
45. 60. 8
19.2
0 9
36.9 45. 10
45. 120. 11
(25.32)
in which global freedom numbers are annotated for convenience. Since all elements have been
processed, (25.32) is the master stiffness matrix. It eigenvalues are
(25.33)
175.6
K=
19.2
36.9
0
25.6
45.
19.2
120.
0
51.2
19.2
14.4
0
0
228.8
150.
0
0
0
0
300.
22.5
45.
0
200.
0
245.
symm
45.
60.
0
0
0
0
240.
45.
60.
25.6 19.2
19.2 14.4
150.
0
0
22.5
0
45.
175.6
19.2
36.9 45.
120.
(25.34)
(25.35)
Examination of the template (25.34) reveals that some additional zero entries could be removed from the
template; for example K 13 . The fact that those entries are zero is, however, fortuitous. It comes from the fact
that some elements such as the beams are aligned along x, which decouples axial and bending stiffnesses.
(25.36)
The only new argument with respect to the MET assembler of 25.4.2 is
nodfat
PlaneTrussedFrameMasterStiffness[nodxyz_,eletyp_,
elenod_,elemat_,elefab_,nodfat_,prcopt_]:=Module[
{numele=Length[elenod],numnod=Length[nodxyz],numdof,nodfmt,e,enl,
eftab,n,ni,nj,i,j,k,m,ncoor,Em,A,Izz,options,Ke,K},
nodfmt=NodeFreedomMapTable[nodfat];
numdof=TotalFreedomCount[nodfat]; K=Table[0,{numdof},{numdof}];
For [e=1, e<=numele, e++, enl=elenod[[e]];
If [eletyp[[e]]=="Bar2", {ni,nj}=enl;
ncoor={nodxyz[[ni]],nodxyz[[nj]]};
Em=elemat[[e]]; A=elefab[[e]]; options=prcopt;
eftab=ElementFreedomTable[enl,{110000,110000},nodfat,nodfmt,6];
Ke=PlaneBar2Stiffness[ncoor,Em,A,options] ];
If [eletyp[[e]]=="BeamCol2", {ni,nj}=enl;
ncoor={nodxyz[[ni]],nodxyz[[nj]]};
eftab=ElementFreedomTable[enl,{110001,110001},nodfat,nodfmt,6];
Em=elemat[[e]]; {A,Izz}=elefab[[e]]; options=prcopt;
Ke=PlaneBeamColumn2Stiffness[ncoor,Em,{A,Izz},options] ];
If [MemberQ[eftab,0], Print["Zero entry in eftab for element ",e];
Print["Assembly process aborted"]; Return[K]];
neldof=Length[eftab];
For [i=1, i<=neldof, i++, ii=eftab[[i]];
For [j=i, j<=neldof, j++, jj=eftab[[j]];
K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]] ];
];
]; Return[K]];
Figure 25.12. A MET-VFC assembler written for the plane trussed frame structure.
nodxyz={{-4,3},{0,0},{0,3},0,{4,3}};
eletyp= {"BeamCol2","BeamCol2","Bar2","Bar2","Bar2"};
elenod= {{1,3},{3,5},{1,2},{2,3},{2,5}};
elemat= Join[Table[30000,{2}],Table[200000,{3}]];
elefab= {{0.02,0.004},{0.02,0.004},0.001,0.003,0.001};
prcopt= {True};
nodfat={110001,110000,110001,000000,110001};
K=PlaneTrussedFrameMasterStiffness[nodxyz,eletyp,
elenod,elemat,elefab,nodfat,prcopt]; K=Chop[K];
Print["Master Stiffness of Example Trussed Frame:"];
Print[K//MatrixForm];
Print["Eigs of K=",Chop[Eigenvalues[N[K]]]];
Master Stiffness of Example Trussed Frame:
175.6
19.6
0
25.6
19.2
150.
19.2
36.9
45.
19.2 14.4
0
0
45.
120.
0
0
0
25.6
19.2
0
51.2
0
0
19.2 14.4
0
0
228.8
0
150.
0
0
0
0
300.
0
22.5
45.
0
200.
0
0
45.
60.
0
0
0
0
0
0
25.6 19.2
150.
0
0
0
19.2
14.4
0
0
0
0
0
0
0
0
22.5
45.
0
200.
0
245.
0
0
22.5
45.
0
45.
60.
0
0
0
0
240.
0
45.
60.
0
0
0
0
0
0
25.6 19.2
19.2 14.4
150.
0
0
22.5
0
45.
175.6
19.2
19.2
36.9
0
45.
0
0
0
0
0
0
45.
60.
0
45.
120.
Figure 25.13. Script to test the assembler of Figure 25.12 with the structure of Figure 25.11.
2518
(a)
(b)
FEM idealization
Beam-column Beam-column
Bar
Bar
Bar
2
(node 4:undefined)
disassembly
MFC
(6)
(c)
3(6,7,8)
1(1,2,3)
(d) MFC
(2)
(1)
1(1,2,3)
5(9,10,11)
3(6,7,8)
5(9,10,11)
assembly
(3)
(5)
(4)
2(4,5)
2(4,5)
the data in Figure 25.11. The element material property list elemat is modified on the account that
the elastic moduli for the beam columns (made of reinforced concrete) and bars made of (steel) are
different.
Running the script listed in the top of Figure 25.13 produces the output shown in the bottom of that
figure. As can be observed this agrees with (25.32) and (25.33).
25.6.
To see the effect of imposing an MFC through the Lagrange multiplier method on the configuration of the
master stiffness matrix, suppose that the trussed frame example structure of the previous section is subjected
to the constraint that nodes 1 and 5 must move vertically by the same amount. That is,
u y1 = u y5
u y1 u y5 = 0.
or
(25.37)
For assembly purposes (25.37) may be viewed as a fictitious element4 labeled as (6). See Figure (25.14).
The degrees of freedom of the assembled structure increase by one to 12. They are ordered as
Global DOF #:
DOF:
Node #:
1
u x1
1
2
u y1
1
3
z1
1
4
u x2
2
5
u y2
2
6
u x3
3
7
u y3
3
8
z3
3
9
u x5
5
10
u y5
5
11
z5
5
12
(6)
none
(25.38)
The assembly of the first five elements proceeds as explained before, and produces the same master stiffness
as (25.34), except for an extra zero row and column. Processing the MFC element (6) yields the 12 12
4
This device should not be confused with penalty elements, which have stiffness matrices. The effect of adding a Lagrange
multiplier element is to append rows and columns to the master stiffness.
2519
bordered stiffness
175.6 19.2
0 25.6 19.2 150.
0
0
0
0 22.5 45.
0
19.2 36.9 45. 19.2 14.4
0
45. 120.
0
0
0 45. 60.
0
25.6 19.2
0 51.2
0
0
0
0 25.6
19.2 14.4
0
0 228.8
0 200.
0 19.2
0
0
0
0 300.
0
0 150.
150.
K=
0 22.5 45.
0 200.
0 245.
0
0
0
45.
60.
0
0
0
0
240.
0
0
0
0
25.6
19.2
150.
0
0
175.6
0
0
0 19.2 14.4
0 22.5 45. 19.2
0
0
0
0
0
0
45. 60.
0
0
1.
0
0
0
0
0
0
0
0
0
0
0
0 1.
0
0
0
19.2
0
0
14.4
0
0
0
0
0
22.5 45.
0
45. 60.
0
19.2
0
0
36.9 45. 1.
45. 120.
0
1.
0
0
(25.39)
in which the coefficients 1 and 1 associated with the MFC (25.37) end up in the last row and column of K.
There are several ways to incorporate multiplier adjunction into an automatic assembly procedure. The most
elegant ones associate the fictitious element with a special freedom signature and a reserved position in the
NFA. Being of advanced nature such schemes are beyond the scope of this Chapter.
Notes and Bibliography
The DSM assembly process for the simplest case of 25.3 is explained in any finite element text. Few texts
cover, however, the complications that arise in more general scenarios. Especially when VFCs are allowed.
Assembler implementation flavors have fluctuated since the DSM became widely accepted as standard. Variants
have been strongly influenced by limits on random access memory (RAM). Those limitations forced the use
of out-of-core blocked equation solvers, meaning that heavy use was made of disk auxiliary storage to store
and retrieve the master stiffness matrix in blocks. Only a limited number of blocks could reside on RAM.
Thus a straightforward element-by-element assembly loop (as in the assemblers presented here) was likely to
miss the target on the receiving end of the merge, forcing blocks to be read in, modified and saved. On large
problems this swapping was likely to trash the system with heavy I/O, bringing processing to a crawl.
One solution favored in programs of the 196585 period was to process all elements without assembling, saving
matrices on disk. The assembler then cycled over stiffness blocks and read in the contributing elements. With
smart asynchronous buffering and tuned-up direct access I/O such schemes were able to achieved reasonable
efficiency. However, system dependent logic quickly becomes a maintenance nightmare.
A second way out emerged by 1970: the frontal solvers referenced in Chapter 11. A frontal solver carries out
assembly, BC application and solution concurrently. Element contributions are processed in a special order
that traverses the FEM mesh as a wavefront. Application of displacement BCs and factorization can trail
the wave once no more elements are detected as contributing to a given equation. As can be expected of
trying to do too much at once, frontal solvers can be extremely sensitive to changes. One tiny alteration in the
element library over which the solver sits, and the whole thing may crumble like a house of cards.
The availability of large amounts of RAM (even on PCs and laptops) since the mid 90s, has had a happy
consequence: interweaved assembly and solver implementations, as well as convoluted matrix blocking, are
no longer needed. The assembler can be modularly separated from the solver. As a result even the most
complex assembler presented here fits in one page of text. Of course it is too late for the large scale FEM
codes that got caught in the limited-RAM survival game decades ago. Changing their assemblers and solvers
incrementally is virtually impossible. The gurus that wrote those thousands of lines of spaghetti Fortran are
long gone. The only practical way out is rewrite the whole shebang from scratch. In a commercial environment
such investment-busting decisions are unlikely.
2520
Exercises
return zero entries in the EFT? If yes, give a specific example of how this can happen. Hint: read the Chapter
carefully.
EXERCISE 25.4 [A/C:30] The trussed frame structure of Figure 25.4 is reinforced with two triangular steel
plates attached as shown in Figure ?(a). The plate thickness is 1.6 mm= 0.0016 m; the material is isotropic
with E = 240000 MPa and = 1/3. Each reinforcing plate is modeled with a single plane stress 3-node
linear triangle. The triangles are numbered (6) and (7), as illustrated in Figure E25.1(c). Compute the master
stiffness matrix K of the structure.5
1 Beam-column 3 Beam-column 5
(a)
FEM idealization
Plate properties:
E =240000 MPa, =1/3
h =1.6 mm = 0.0016 m,
x
Other dimensions & properties
same as in the trussed frame of Fig. 25.11
(c)
(b)
Bar
Plate
disassembly
3(6,7,8)
1(1,2,3)
(6)
(3)
2
(node 4:undefined)
(d)
(2)
(1)
1(1,2,3)
5(9,10,11)
3(6,7,8)
5(9,10,11)
assembly
(7)
(4)
Bar
Plate
Bar
(5)
2(4,5)
2(4,5)
Figure E25.1. Plate-reinforced trussed frame structure for Exercise 25.4.
This exercise may be done through Mathematica. For this download Notebook ExampleAssemblers.nb from
this Chapter index, and complete Cell 4 by writing the assembler.6 The plate element identifier is "Trig3".
The driver script to run the assembler is also provided in Cell 4 (blue text).
5
This structure would violate the compatibility requirements stated in Chapter 19 unless the beams are allowed to deflect
laterally independently of the plates. This is the fabrication actually sketched in Figure E25.1(a).
Cells 13 contain the assemblers presented in 25.3, 25.4 and 25.5, respectively, which may be used as guides. The
stiffness modules for the three element types used in this structure are available in Cells 2 and 3 and may be reused for
this Exercise.
2521
When reusing the assembler of Cell 3 as a guide, please do not remove the internal Print commands that show
element information (red text). Those come in handy for debugging. Please keep that printout in the returned
homework to help the grader.
Another debugging hint: check that the master stiffness (25.32) is obtained if the plate thickness, called hplate
in the driver script, is temporarily set to zero.
Target:
337.6 19.2
19.2 90.9
0
45.
25.6 91.2
91.2 14.4
K = 312. 72.
72. 76.5
0
45.
0
0
0
0
0
0
0
45.
120.
0
0
0
45.
60.
0
0
0
25.6
91.2
0
243.2
0
192.
0
0
25.6
91.2
0
91.2
14.4
0
0
804.8
0
776.
0
91.2
14.4
0
312.
72.
0
192.
0
816.
0
0
312.
72.
0
72.
76.5
45.
0
776.
0
929.
0
72.
76.5
45.
0
45.
60.
0
0
0
0
240.
0
45.
60.
0
0
0
25.6
91.2
312.
72.
0
337.6
19.2
0
0
0
0
91.2
14.4
72.
76.5
45.
19.2
90.9
45.
0
0
0
0
45.
60.
45.
120.
(E25.1)
EXERCISE 25.5 [A:30] 25.5 does not explain how to construct the NFAT from the input data. (In the trussed
frame example script, nodfat was set up by inspection, which is OK only for small problems.) Explain how
this table could be constructed automatically if the EFS of each element in the model is known. Note: the
logic is far from trivial.
2522
26
Solving
FEM Equations
261
262
TABLE OF CONTENTS
Page
262
. . . . . . . .
. . . . . . .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
. .
.
. .
.
.
.
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
.
.
.
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
.
.
.
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
263
263
264
265
265
266
266
266
267
267
268
2611
2613
2614
2615
2616
2620
263
26.1
(26.1)
where K is the master stiffness matrix, f the vector of node forces and u the vector or node
displacements. Upon imposing the displacement boundary conditions, the system (26.1) is solved
for the unknown node displacements. The solution concludes the main phase of DSM computations.
In practical applications the order of the stiffness system (26.1) can be quite large. Systems of
order 1000 to 10000 are routinely solved in commercial software. Larger ones (say up to 100000
equations) are not uncommon and even millions of equations are being solved on suoercomputers.
Presently the record is about 50 million equations on parallel computers.1
In linear FEM analysis the cost of solving this system of equations rapidly overwhelms other
computational phases. Much attention has therefore given to matrix processing techniques that
economize storage and solution time by taking advantage of the special structure of the stiffness
matrix.
The master force vector is stored as a conventional one-dimensional array of length equal to the
number N of degrees of freedom. This storage arrangement presents no particular difficulties even
for very large problem sizes.2 Handling the master stiffness matrix, however, presents computational
difficulties.
26.1.1. The Curse of Fullness
If K is stored and processed as if it were a full matrix, the storage and processing time resources
rapidly becomes prohibitive as N increases. This is illustrated in Table 26.1, which summarizes
the storage and factor-time requirements for orders N = 104 , 105 and 106 .3
As regards memory needs, a full square matrix stored without taking advantage of symmetry,
requires storage for N 2 entries. If each entry is an 8-byte, double precision floating-point number,
the required storage is 8N 2 bytes. Thus, a matrix of order N = 104 would require 8 108 bytes or
800 MegaBytes (MB) for storage.
For large N the solution of (26.1) is dominated by the factorization of K, an operation discussed in
26.2. This operation requires approximately N 3 /6 floating point operation units. [A floating-point
operation unit is conventionally defined as a (multiply,add) pair plus associated indexing and data
movement operations.] Now a fast workstation can typically do 107 of these operations per second,
1
For fluid equations solved by fluid-voulume methods the number is over 100 million.
A force of displacement vector of, say, 1M equations uses 8MB for double precision storage. In these days of GB RAMs,
that is a modest amount.
The factor times given in that table reflect 1998 computer technology. To update to 2003, divide times by 10 to 20.
263
264
Table 26.1 Storage & Solution Time for a Fully-Stored Stiffness Matrix
Matrix
order N
Storage
(double prec)
Factor
op.units
(FLOPS)
Factor time
workstation
(or fast PC)
Factor time
supercomputer
104
105
106
800 MB
80 GB
8 TB
1012 /6
1015 /6
1018 /6
3 hrs
4 mos
300 yrs
2 min
30 hrs
3 yrs
Assuming B = N
Matrix
order N
Storage
(double prec)
Factor
op.units
(FLOPS)
Factor time
workstation
(or fast PC)
Factor time
supercomputer
104
105
106
8 MB
240 MB
8 GB
108 /2
1010 /2
1012 /2
5 sec
8 min
15 hrs
0.05 sec
5 sec
8 min
whereas a supercomputer may be able to sustain 109 or more. These times assume that the entire
matrix is kept in RAM; for otherwise the elapsed time may increase by factors of 10 or more due to
I/O transfer operations. The elaspsed timed estimated given in Table 26.1 illustrate that for present
computer resources, orders above 104 would pose significant computational difficulties.
26.1.2. The Advantages of Sparsity
Fortunately a very high percentage of the entries of the master stiffness matrix K are zero. Such
matrices are call sparse. There are clever programming techniques that take advantage of sparsity
that fit certain patterns. Although a comprehensive coverage of such techniques is beyond the scope
of this course, we shall concentrate on a particular form of sparse scheme that is widely use in FEM
codes: skyline storage. This scheme is simple to understand, manage and implement, while cutting
storage and processing times by orders of magnitude as the problems get larger.
The skyline storage format is a generalization of its widely used predecessor called the band storage
scheme. A matrix stored in accordance with the skyline format will be called a skymatrix for short.
Only symmetric skymatrices will bve considered here, since the stiffness matrices in linear FEM
are symmetric.
If a skymatrix of order N can be stored in S memory locations, the ratio B = S/N is called the
mean bandwidth. If the entries are, as usual, 8-byte double-precision floating-point numbers, the
storage requirement is 8N B bytes. The factorization of a skymatrix requires approximately 12 N B 2
265
26.2
N = 106 are reworked in Table 26.2. It is seen that by going from full to skyline storage significant
reductions in computer resources have been achieved. For example, now N = 104 is easy on a
workstation and trivial on a supercomputer. Even a million equations do not look far-fetched on a
supercomputer as long as enough memory is available.4
In preparation for assembling K as a skymatrix one has to set up several auxiliary arrays related to
nodes and elements. These auxiliary arrays are described in the previous Chapter. Knowledge of
that material is useful for understanding the following description.
26.2. Sparse Solution of Stiffness Equations
26.2.1. Skyline Storage Format
The skyline storage arrangement for K is best illustrated through a simple example. Consider the
6 6 stiffness matrix
K 11
0
K 13
0
0
K 16
K 22
0
K 24
0
0
K 33 K 34
0
0
K=
(26.2)
0
K 46
K 44
K 55 K 56
symm
K 66
Since the matrix is symmetric only one half, the upper triangle in the above display, need to be
shown.
Next we define the envelope of K as follows. From each diagonal entry move up the corresponding
column until the last nonzero entry is found. The envelope separates that entry from the rest of the
upper triangle. The remaining zero entries are conventionally removed:
K=
K 11
K 22
K 13
0
K 33
K 24
K 34
K 44
K 55
symm
K 16
0
K 46
K 56
K 66
(26.3)
What is left constitute the skyline profile of skyline template of the matrix. A sparse matrix that
can be profitably stored in this form is called a skymatrix for brevity. Notice that the skyline profile
may include zero entries. During the factorization step discussed below these zero entries will in
general become nonzero, a phenomenon that receives the name fill-in.
4
On a PC or laptop with a 32-bit processor, there is a RAM hard barrier because of hardware addressing limitations.
That is typically 2GB. As PCs migrate to 64-bit processors over the next 10 years, the barrier disappears. For example
the high-end Mac workstation can presently be expanded up to 16GB RAM. The new limits are primarily dictated by
power comsumption, circuitry and cooling considerations. A distributed (Beowulf) network is a practical solution to go
beyond the individual machine limits.
265
266
The key observation is that only the entries in the skyline template need to be stored, because
fill-in in the factorization process will not occur outside the envelope. To store these entries it is
convenient to use a one-dimensional skyline array:
s:
[ K 11 , K 22 , K 13 , 0, K 33 , K 24 , K 34 , K 44 , K 55 , K 16 , 0, 0, K 46 , K 56 , K 66 ]
(26.4)
[ 0, 1, 2, 5, 8, 9, 15 ]
(26.5)
In the previous Chapter, this array was called the Global Skyline Diagonal Location Table, or GSDLT.
Equations for which the displacement component is prescribed are identified by a negative diagonal
location value. For example if u 3 and u 5 are prescribed displacement components in the test
example, then
p : [ 0, 1, 2, 5, 8, 9, 15 ]
(26.6)
Remark 26.1. In Fortran it is convenient to dimension the diagonal location array as p(0:n) so that indexing
begins at zero. In C this is the standard indexing.
26.2.2. Factorization
The stiffness equations (26.1) are solved by a direct method that involves two basic phases: factorization and solution.
In the first stage, the skyline-stored symmetric stiffness matrix is factored as
K = LDU = LDLT = UT DU,
(26.7)
where L is a unit lower triangular matrix, D is a nonsingular diagonal matrix, and U and L are the
transpose of each other. The original matrix is overwritten by the entries of D1 and U; details may
be followed in the program implementation. No pivoting is used in the factorization process. This
factorization is carried out by Mathematica module SymmSkyMatrixFactor, which is described
later in this Chapter.
26.2.3. Solution
Once K has been factored, the solution u for a given right hand side f is obtained by carrying out
three stages:
Forward reduction :
Lz = f,
(26.8)
Diagonal scaling :
Dy = z,
(26.9)
Back substitution :
Uu = y,
(26.10)
where y and z are intermediate vectors. These stages are carried out by Mathematica modules
SymmSkyMatrixVectorSolve, which is described later.
266
267
26.3
A SKYSOLVER IMPLEMENTATION
g
or
Ax = b.
(26.12)
where the symmetric matrix A, called a stiffness-bordered matrix, is of order numdof+nummul.
The stiffness bordered matrix is also stored in skyline form, and the previous solution procedure
applies, as long as the skyline array is properly constructed as described in the previous Chapter.
The main difference with respect to the no-MFC case is that, because of the configuration (26.11),
A can no longer be positive definite. In principle pivoting should be used during the factorization
of A to forestall possible numerical instabilities. Pivoting can have a detrimental effect on solution
efficiency because entries can move outside of the skyline template. However, by placing the at
the end such difficulties will not be encountered if K is positive definite, and the constraints are
linearly independent (that is, C has full rank). Thus pivoting is not necessary.
26.3. A SkySolver Implementation
The remaining sections of this revised Chapter describe a recent implementation of the skyline
solver and related routines in Mathematica. This has been based on similar Fortran codes used
since 1967.
26.3.1. Skymatrix Representation
In what follows the computer representation in Mathematica of a symmetric skymatrix will be
generally denoted by the symbol S. Such a representation consists of a list of two numeric objects:
S = { p, s }
(26.13)
Here p=GSDLT is the Global Skyline Diagonal Location Table introduced in 11.6, and s is the array
of skymatrix entries, arranged as described in the previous section. This array usually consists of
floating-point numbers, but it may also contain exact integers or factions, or even symbolic entries.
For example, suppose that the numerical entries of the 6 6 skymatrix (26.10) are actually
11
13
16
22 0 24
0
33 34
0
K=
(26.14)
44
46
55 56
symm
66
267
268
(26.15)
or more directly
S={ { 0,1,2,5,8,9,15 },{ 11,22,13,0,33,24,34,44,55,16,0,0,46,56,66 } };
(26.16)
[The remaining sections on details of skyline processing logic, marked with a *, will not be covered
in class. They are intended for a more advanced course.]
268
269
The skymatrix to be factored, stored as the two-object list { p,s }; see previous subsection.
tol
Tolerance for singularity test. The appropriate value of tol depends on the kind of skymatrix
entries stored in s.
If the skymatrix entries are floating-point numbers handled by default in double precision
arithmetic, tol should be set to 8 or 10 the machine precision in that kind of arithmetic.
The factorization aborts if, when processing the j-th row, d j tol r j , where d j is the
computed j th diagonal entry of D, and r j is the Euclidean norm of the j th skymatrix row.
If the skymatrix entries are exact (integers, fractions or symbols), tol should be set to zero.
In this case exact singularity is detectable, and the factorization aborts only on that condition.
269
2610
Row
Row
Row
Row
Row
1
2
3
4
5
Col
1
1.0000
Col
1.0000
1.0000
Col
Col
Col
2.0000
1.0000
1.0000
1.0000
3.0000
1 2 3 4 5
1 +
2
+
3
+ +
4
+
5
+ + +
eigs={3.9563, 2.20906, 1., 0.661739, 0.172909}
Assumed x={{1., 3., -4.}, {2., 3., 3.}, {3., 3., -2.}, {4., 3., 1.},
{5., 3., 0}}
b=Ax={{1., 3., -4.}, {5., 6., 1.}, {13., 12., -1.}, {9., 6., 1.},
{22., 15., -1.}}
{0.0666667 Second, {{{0, 1, 2, 4, 5, 8},
{1., 1., 1., 1., 1., 1., 1., 1.}}, 0}}
F={{0, 1, 2, 4, 5, 8}, {1., 1., 1., 1., 1., 1., 1., 1.}}
fail=0
Factor:
Col
1
Col
2
Col
3
Col
4
Col
5
Row
1
1.0000
Row
2
1.0000
Row
3
1.0000
1.0000
Row
4
1.0000
Row
5
1.0000
1.0000
1.0000
Computed x={{1., 3., -4.}, {2., 3., 3.}, {3., 3., -2.}, {4., 3., 1.},
{5., 3., 0.}}
}, where du stores the entries of D1 in the diagonal locations, and of U in its strict upper
triangle.
fail
A singularity detection indicator. A zero value indicates that no singularity was detected. If
fail returns j>0, the factorization was aborted at the j-th row. In this case Sf returns the
aborted factorization with stored in d j .
2610
2611
A test of SymmSkyMatrixFactor on the matrix (26.14) is shown in Cells 26.2 and 26.3. The modules that
print and produce skyline maps used in the test program are described later in this Chapter.
26.3.3. *Solving for One or Multiple RHS
Module SymmSkyMatrixVectorSolve, listed in Cell 26.4, solves the linear system Ax = b for x, following
the factorization of the symmetric skymatrix A by SymmSkyMatrixFactor. The module is invoked as
x = SymmSkyMatrixVectorSolve[Sf,b]
The input arguments are
Sf
The right-hand side vector to be solved for, stored as a single-level (one dimensional) list. If
the i-th entry of x is prescribed, the known value must be supplied in this vector.
Sometimes it is necessary to solve linear systems for multiple (m > 1) right hand sides. One way to do that is
to call SymmSkyMatrixVectorSolve repeatedly. Alternatively, if m right hand sides are collected as columns
of a rectangular matrix B, module SymmSkyMatrixColBlockSolve may be invoked as
2611
2612
2612
2613
X = SymmSkyMatrixVectorSolve[Sf,B]
to provide the solution X of SX = B. This module is listed in Cell 26.5. The input arguments and function
returns have the same function as those described for SymmSkyMatrixVectorSolve. The main difference
is that B and X are matrices (two-dimensional lists) with the righ-hand side and solution vectors as columns.
There is a similar module SymmSkyMatrixRowBlockSolve, notlisted here, which solves for multiple right
hand sides stored as rows of a matrix.
26.3.4. *Matrix-Vector Multiply
For various applications it is necessary to form the matrix-vector product
b = Sx
(26.17)
2613
2614
This module is listed in Cell 26.7. Its arguments are the skymatrix S and the rectangular matrix X. The function
returns SX in B.
There is a similar module SymmSkyMatrixRowBlockMultiply, also listed in Cell 26.7, which postmultiplies
a vector block stored as rows.
26.3.5. *Printing and Mapping
Module SymmSkyMatrixUpperTrianglePrint, listed in Cell 26.8, prints a symmetric skymatrix in upper
triangle form. Is is invoked as
SymmSkyMatrixUpperTrianglePrint[S]
where S is the skymatrix to be printed. For an example of use see Cells 262-3.
The print format resembles the configuration depicted in Section 26.1. This kind of print is useful for program
2614
2615
development and debugging although of course it should not be attempted with a very large matrix.5
There is a similar module called SymmSkyMatrixLowerTrianglePrint, which displays the skymatrix entries
in lower triangular form. This module is also listed in Cell 26.8.
Sometimes one is not interested in the actual values of the skymatrix entries but only on how the skyline
template looks like. Such displays, called maps, can be done with just one symbol per entry. Module
SymmSkyMatrixUpperTriangleMap, listed in Cell 26.9, produces a map of its argument. It is invoked as
SymmSkyMatrixUpperTriangleMap[S]
The entries within the skyline template are displayed by symbols +, - and 0, depending on whether the value
is positive, negative or zero, respectively. Entries outside the skyline template are blank.
As in the case of the print module, there is module SymmSkyMatrixLowerTriangleMap which is also listed
in Cell 26.9.
26.3.6. *Reconstruction of SkyMatrix from Factors
In testing factorization and solving modules it is convenient to have modules that perform the inverse process
of the factorization. More specifically, suppose that U, D (or D1 ) are given, and the problem is to reconstruct
the skymatrix that have them as factors:
S = LDU,
or
S = LD1 U
(26.19)
Computer oriented readers may notice that the code for the printing routine is substantially more complex than those
of the computational modules. This is primarily due to the inadequacies of Mathematica in handling tabular format
output. The corresponding Fortran or C implementations would be simpler because those languages provide much better
control over low-level display.
2615
2616
2616
2617
SymmSkyMatrixLowerTriangleMap[S_]:=Module[
{p,a,cycle,i,ii,ij,it,itop,j,jj,j1,j2,jref,jbeg,jend,jt,kcmax,kc,kr,m,n,c,t},
{p,a}=S; n=Dimensions[p][[1]]-1; kcmax=40; jref=0;
Label[cycle]; Print[" "];
jbeg=jref+1; jend=Min[jref+kcmax,n]; kc=jend-jref;
itop=2; If[jend>9,itop=3]; If[jend>99,itop=4]; If[jend>999,itop=5];
t=Table[" ",{n-jref+itop},{kc+1}]; it=0;
If [itop>=5, it++; Do [m=Floor[j/1000];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
If [itop>=4, it++; Do [m=Floor[j/100];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
If [itop>=3, it++; Do [m=Floor[j/10];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
it++; Do[t[[it,j-jref+1]]=ToString[Mod[j,10]],{j,jbeg,jend}];
it++; Do[If[p[[j+1]]<0,t[[it,j-jref+1]]="*"],{j,jbeg,jend}];
Do [ii=Abs[p[[i+1]]]; m=ii-Abs[p[[i]]]-1; j1=Max[i-m,jbeg];j2=Min[i,jend];
kr=j2-j1+1; If [kr<=0, Continue[]]; If [p[[i+1]]>0,c=" ",c="*"];
it++; t[[it,1]]=StringJoin[ToString[PaddedForm[i,2]],c];
jt=j1-jbeg+2; ij=j1+ii-i;
Do [ c=" 0"; If[a[[ij]]>0,c=" +"]; If[a[[ij++]]<0,c=" -"];
t[[it,jt++]]=c, {j,1,kr}],
{i,jbeg,n}];
Print[TableForm[Take[t,it],TableAlignments->{Right,Right},
TableDirections->{Column,Row},TableSpacing->{0,0}]];
jref=jend; If[jref<n,Goto[cycle]];
];
SymmSkyMatrixUpperTriangleMap[S_]:=Module[
{p,a,cycle,i,ij,it,itop,j,j1,j2,jref,jbeg,jend,kcmax,k,kc,m,n,c,t},
{p,a}=S; n=Dimensions[p][[1]]-1; kcmax=40; jref=0;
Label[cycle]; Print[" "];
jbeg=jref+1; jend=Min[jref+kcmax,n]; kc=jend-jref;
itop=2; If[jend>9,itop=3]; If[jend>99,itop=4]; If[jend>999,itop=5];
t=Table[" ",{jend+itop},{kc+1}]; it=0;
If [itop>=5, it++; Do [m=Floor[j/1000];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
If [itop>=4, it++; Do [m=Floor[j/100];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
If [itop>=3, it++; Do [m=Floor[j/10];
If[m>0,t[[it,j-jref+1]]=ToString[Mod[m,10]]], {j,jbeg,jend}]];
it++; Do[t[[it,j-jref+1]]=ToString[Mod[j,10]],{j,jbeg,jend}];
it++; Do[If[p[[j+1]]<0,t[[it,j-jref+1]]="*"],{j,jbeg,jend}];
Do [it++; If [p[[i+1]]>0,c=" ",c="*"];
t[[it,1]]=StringJoin[ToString[PaddedForm[i,2]],c]; j=jref;
Do [j++; If [j<i, Continue[]]; ij=Abs[p[[j+1]]]+i-j;
If [ij<=Abs[p[[j]]], Continue[]]; c=" 0";
If[a[[ij]]>0,c=" +"]; If[a[[ij++]]<0,c=" -"]; t[[it,k+1]]=c,
{k,1,kc}],
{i,1,jend}];
Print[TableForm[Take[t,it],TableAlignments->{Right,Right},
TableDirections->{Column,Row},TableSpacing->{0,0}]];
jref=jend; If[jref<n,Goto[cycle]];
];
2617
2618
2618
2619
26.3
A SKYSOLVER IMPLEMENTATION
SymmSkyMatrixConvertToFull[S_]:= Module[
{p,a,aa,n,j,jj,jmj,k},
{p,a}=S; n=Length[p]-1; aa=Table[0,{n},{n}];
Do [jmj=Abs[p[[j]]]; jj=Abs[p[[j+1]]]; aa[[j,j]]=a[[jj]];
Do [aa[[j,j-k]]=aa[[j-k,j]]=a[[jj-k]],{k,1,jj-jmj-1}],
{j,1,n}]; Return[aa];
];
SymmSkyMatrixConvertUnitUpperTriangleToFull[S_]:= Module[
{p,ldu,aa,n,j,jj,jmj,k},
{p,ldu}=S; n=Length[p]-1; aa=Table[0,{n},{n}];
Do [jmj=Abs[p[[j]]]; jj=Abs[p[[j+1]]]; aa[[j,j]]=1;
Do [aa[[j-k,j]]=ldu[[jj-k]],{k,1,jj-jmj-1}],
{j,1,n}]; Return[aa];
];
SymmSkyMatrixConvertDiagonalToFull[S_]:= Module[
{p,ldu,aa,n,i,j,jj,jmj,k},
{p,ldu}=S; n=Length[p]-1; aa=Table[0,{n},{n}];
Do [jj=Abs[p[[j+1]]]; aa[[j,j]]=ldu[[jj]],
{j,1,n}]; Return[aa];
];
2619
2620
u 1, f1
u 2, f2
u 3, f3
u 4, f4
(1)
(2)
(3)
(4)
u 5, f5
EXERCISE 26.1 [A/C:10+10+15] Consider the 4-element assembly of bar elements shown in Figure 26.1.
The only degree of freedom at each node is a translation along x. The element stiffness matrix of each element
is
1 1
(E26.1)
K(e) =
1
1
(a)
Assemble the 5 5 master stiffness matrix K showing it as a full symmetric matrix. Hint: the diagonal
entries are 1, 2, 2, 2, 1.
(b)
Show K stored as a skyline matrix using a representation like illustrated in (26.15). Hint p = { 0, 1,
3, 5, 7, 9}.
(c)
Perform the symmetric factorization K = LDLT of (26.7), where K is stored as a full matrix to simplify
hand work.6 Show that the entries of D are 1, 1, 1, 1 and 0, which mean that K is singular. Why?
You can do this with Mathematica using the function LUDecomposition, but hand work is as quick.
2620
27
A Complete
Plane Stress
FEM Program
271
272
TABLE OF CONTENTS
Page
27.1. Introduction
27.2. Analysis Stages
27.3. Model Definition
27.3.1. Benchmark Problems . . . .
27.3.2. Node Coordinates
. . . . .
27.3.3. Element Type
. . . . . .
27.3.4. Element Connectivity . . . .
27.3.5. Material Properties
. . . .
27.3.6. Fabrication Properties . . . .
27.3.7. Node Freedom Tags
. . . .
27.3.8. Node Freedom Values . . . .
27.3.9. Processing Options
. . . .
27.3.10. Model Display Utility . . . .
27.3.11. Model Definition Print Utilities
27.3.12. Model Definition Script Samples
27.4. Processing
27.4.1. Processing Tasks
. . . . .
27.5. Postprocessing
27.5.1. Result Print Utilities
. . . .
27.5.2. Displacement Field Contour Plots
27.5.3. Stress Field Contour Plots . . .
27.5.4. Animation
. . . . . . .
27.6. A Complete Problem Script Cell
27. Notes and Bibliography
. . . . . . . . . . . .
272
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. . . . . . . . . . .
. .
.
. .
. .
.
. .
.
. .
. .
.
. .
.
.
. .
.
. .
. .
.
. .
.
.
. .
.
. .
.
.
.
. . . . . . . . . .
273
273
273
274
274
276
276
278
278
278
279
279
279
2710
2710
2712
2712
2714
2714
2715
2715
2716
2716
2718
273
27.3
MODEL DEFINITION
27.1. Introduction
This Chapter describes a complete finite element program for analysis of plane stress problems.
Unlike the previous chapters the description is top down, i.e. starts from the main driver down to
more specific modules.
The program can support questions given in the take-home final exam, if they pertain to the analysis
of given plane stress problems. Consequently this Chapter serves as an informal users manual.
27.2. Analysis Stages
As in all DSM-based FEM programs, the analysis of plane stress problems involves three major
stages: (I) preprocessing or model definition, (II) processing, and (III) postprocessing.
The preprocessing portion of the plane stress analysis is done by the first part of the problem script,
driver program, already encountered in Chapters 21-22. The script directly sets the problem data
structures. Preprocessing tasks include:
I.1
I.2
II.2
II.3
Assembly of the master stiffness equations Ku = f. The plane stress assembler is of multiple
element type (MET). This kind of assembler was discussed in 27.4. Element types include
various plane stress Iso-P models as well as bars.
= f. The same
Application of displacement BC by a modification method that produces Ku
modules described in 21.3.3 are used, since those are application problem independent.
Solution of the modified equations for node displacements u. The built-in Mathematica
function LinearSolve is used for this task.
Upon executing the processing steps, the nodal displacement solution is available. The postprocessing stage embodies three tasks:
III.1 Recovery of node forces including reactions through built-in matrix multiplication f = Ku.
III.2 Recovery of plate stresses and bar forces (if bars are present). The former are subject to
interelement averaging (Chapter 28) to get nodal stresses.
III.3 Print and plotting of results.
27.3. Model Definition
The model-definition data may be broken down into three sets, which are listed below by order of
appearance:
Geometry data: node coordinates
Model definition Element data: type, connectivity, material and fabrication
Degree of freedom (DOF) activity data: force and displacement BCs
(27.1)
The element data is broken down into four subsets: type, connnectivity, material and fabrication,
each of which has its own data structure. The degree of freedom data is broken into two subsets:
273
274
Short name
Dimensions
Description
NodeCoordinates
ElemTypes
ElemNodes
ElemMaterials
ElemFabrications
NodeDOFTags
NodeDOFValues
ProcessOptions
nodxyz
elenod
elenod
elemat
elefab
nodtag
nodval
prcopt
numnod
numele
numele
numele
numele
numnod
numnod
<var>
x 2
x
x
x
x
x
<var>
<var>
<var>
2
2
Notation: numnod: number of nodes (no numbering gaps allowed, each node has two )
displacement DOFs; numele: number of elements; <var> variable dimension.
Long names are used in user-written problem scripts. Short names are used in programmed modules.
Dimensions refer to the first two level Dimensions of the Mathematica list that implements the
data structure. These give a guide as to implementation in a low level language such as C.
tags and values. In addition there are miscellaneous process options, such as the symbolic versus
numeric processing. These options are conveniently collected in a separate data set.
Accordingly, the model-definition input to the plane stress FEM program consists of eight data
structures, which are called NodeCoordinates, ElemTypes, ElemNodes, ElemMaterials,
ElemFabrications, NodeDOFTags, NodeDOFValues and ProcessOptions. These are summarized in Table 27.1.
The configuration of these data structures are described in the following subsections with reference
to the benchmark problems and discretizations shown in Figures 27.1 and 27.2.
27.3.1. Benchmark Problems
Figure 27.1(a) illustrates a rectangular steel plate in plane stress under uniform uniaxial loading in
the y (vertical) direction. Note that the load q is specified as force per unit area (kips per square
inch); thus q has not been integrated through the thickness h. The exact analytical solution of the
problem is1 yy = q, x x = x y = 0, u y = qy/E, u x = u y = q x/E. This problem should
be solved exactly by any finite element mesh as long as the model is consistent and stable. In
particular, the two one-quadrilateral-element models shown in Figure 27.1(b,c).
A similar but more complicated problem is shown in Figure 27.2: a rectangular steel plate dimensioned and loaded as that of Figure 27.1(a) but now with a central circular hole. This problem is
defined in Figure 27.2(a). A FEM solution is to be obtained using the two quadrilateral element
models (with 4-node and 9-nodes, respectively) depicted in Figure 27.2(b,c). The main result
sought is the stress concentration factor on the hole boundary, and comparison of this computed
factor with the exact analytical value.
1
The displacement solution u y = qy/E and u x = u y assumes that the plate centerlines do not translate or rotate, a
condition enfoirced in the FEM discretizations shown in Figure 27.1(b,c).
274
275
y q = 10 ksi
(a)
;;
75 kips
(b)
75 kips
B
1
C
3
12 in H
E = 10000 ksi
= 0.25
h = 3 in
J 2
10 in
4 D
Model (I):
4 nodes, 8 DOFs,
1 bilinear quad
B
1
C
7
1
2
J 3
9 D
Model (II):
9 nodes, 18 DOFs,
1 biquadratic quad
;;
;
;;
;
;;
;;
;
;;;
;;;
;;
(c)
25 kips 100 kips 25 kips
Figure 27.1. Rectangular plate under uniform uniaxial loading, and two oneelement FEM discretizations of its upper right quadrant.
(27.2)
where N is the number of nodes. Coordinate values should be normally be floating point numbers;2
use the N function to insure that property if necessary. Nodes must be numbered consecutively and
no gaps are permitted.
Example 27.1. For Model (I) of Figure 27.1(b):
NodeCoordinates=N[{ { 0,6 },{ 0,3 },{ 0,0 },{ 5/2,6 },{ 5/2,3 },{ 5/2,0 },{ 5,6 },{ 5,3 },{ 5,0 } }];
Example 27.3. For Model (I) of Figure 27.2(a), using a bit of coordinate generation:
s={1,0.70,0.48,0.30,0.16,0.07,0.0};
xy1={0,6}; xy7={0,1}; xy8={2.5,6}; xy14={Cos[3*Pi/8],Sin[3*Pi/8]};
xy8={2.5,6}; xy21={Cos[Pi/4],Sin[Pi/4]}; xy15={5,6};
xy22={5,2}; xy28={Cos[Pi/8],Sin[Pi/8]}; xy29={5,0}; xy35={1,0};
NodeCoordinates=Table[{0,0},{35}];
Do[NodeCoordinates[[n]]=N[s[[n]]
*xy1+(1-s[[n]])
*xy7], {n,1,7}];
Do[NodeCoordinates[[n]]=N[s[[n-7]] *xy8+(1-s[[n-7]]) *xy14],{n,8,14}];
Do[NodeCoordinates[[n]]=N[s[[n-14]]*xy15+(1-s[[n-14]])*xy21],{n,15,21}];
2
Unless one is doing a symbolic or exact-arithmetic analysis. Those are rare at the level of a full FEM analysis.
275
276
y q = 10 ksi
12 in H
R = 1 in
E = 10000 ksi
= 0.25
h = 3 in
G
10 in
;
;
;
;
;
;
;
(b)
37.5 kips
75 kips
37.5 kips
C 15
1
7
2
9
10
4
17
11
5 12
16
22
18
19
6 13
20
7
26
J 14 21
27
28
35 34 33
23
24
25
;;
;;
;;
;
32
31
30
29
B
1
(c)
25 kips
100 kips
25 kips
15
16
3
10
22
4
11
17
18
12
19
6 13
24
25
20
7
26
14
27
21
28 35 34 33
31
32
5
23
30 29
;;
;
;;
;
;;
;
;;
;
(a)
Figure 27.2. Plate with a circular hole and two FEM discretizations of its upper right quadrant. Only a few
element numbers are shown to reduce clutter. Note: the meshes generated with the example scripts given later
differ slightly from those shown above. Compare, for example, mesh in (b) above with that in Figure 27.3.
Do[NodeCoordinates[[n]]=N[s[[n-21]]*xy22+(1-s[[n-21]])*xy28],{n,22,28}];
Do[NodeCoordinates[[n]]=N[s[[n-28]]*xy29+(1-s[[n-28]])*xy35],{n,29,35}];
The result of this generation is that some of the interior nodes are not in the same positions as sketched in
Figure 27.2(b), but this slight change hardly affects the results.
(27.3)
Here typee is the type identifier of the e-th element specified as a character string. Ne is the number
of elements; no element numbering gaps are allowed. Legal type identifiers are listed in Table 27.2.
ElemTypes=Table["Quad4",{ numele }];
ElemTypes=Table["Quad9",{ numele }];
Here numele is a variable that contains the number of elements. This can be extracted, for example,
as numele=Length[ElemNodes], where ElemNodes is defined below, if ElemNodes is defined
first as is often the case.
27.3.4. Element Connectivity
Element connectivity information specifies how the elements are connected.3 This information is
3
276
277
Nodes
Model for
Description
"Bar2"
"Bar3"
"Trig3"
"Trig6"
"Trig6.-3"
"Trig10"
"Quad4"
"Quad4.1"
"Quad8"
"Quad8.2"
"Quad9"
"Quad9.2"
2
3
3
6
6
10
4
4
8
8
9
9
bar
bar
plate
plate
plate
plate
plate
plate
plate
plate
plate
plate
(27.4)
Here enle denotes the lists of nodes of the element e (as given by global node numbers) and Ne is
the total number of elements.
Element boundaries must be traversed counterclockwise (CCW) but you can start at any corner.
Numbering elements with midnodes requires more care: begin listing corners CCW, followed by
midpoints also CCW (first midpoint is the one that follows first corner when traversing CCW). If
element has thirdpoints, as in the case of the 10-node triangle, begin listing corners CCW, followed
by thirdpoints CCW (first thirdpoint is the one that follows first corner). When elements have an
interior node, as in the 9-node quadrilateral or 10-node triangle, that node goes last.
Example 27.4. For Model (I) of which has only one 4-node quadrilateral:
ElemNodes={ { 1,2,4,3 } };
Example 27.5. For Model (II) of Figure 27.1(c), which has only one 9-node quadrilateral:
ElemNodes={ { 1,3,9,7,2,6,8,4,5 } };
numbering the elements from top to bottom and from left to right:
ElemNodes=Table[{0,0,0,0},{24}];
ElemNodes[[1]]={1,2,9,8};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,2,6}];
ElemNodes[[7]]=ElemNodes[[6]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,8,12}];
ElemNodes[[13]]=ElemNodes[[12]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,14,18}];
ElemNodes[[19]]=ElemNodes[[18]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,20,24}];
277
278
Example 27.6. For Model (II) of Figure 27.2(c), numbering the elements from top to bottom and from left to
right:
ElemNodes=Table[{0,0,0,0,0,0,0,0,0},{6}];
ElemNodes[[1]]={1,3,17,15,2,10,16,8,9};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{2,2,2,2,2,2,2,2,2},{e,2,3}];
ElemNodes[[4]]=ElemNodes[[3]]+{10,10,10,10,10,10,10,10,10};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{2,2,2,2,2,2,2,2,2},{e,5,6}];
Since this particular mesh only has 6 elements, it would be indeed faster to write down the six nodelists.
(27.5)
For a plate element, mprop is the stress-strain matrix of elastic moduli (also known as elasticity
matrix) arranged as { { E11,E12,E33 },{ E12,E22,E23 },{ E13,E23,E33 } }. Note that although
this matrix is symmetric, it must be specified as a full 3 3 matrix. For a bar element, mprop is
simply the longitudinal elastic modulus.
A common case in practice is that (i) all elements are plates, (ii) the plate material is uniform and
isotropic. An isotropic elastic material is specified by the elastic modulus E and Poissons ratio .
Then this list can be generated by a single Table instruction upon building the elastic ity matrix,
as in the example below.
Example 27.7. For all FEM discretizations in Figures 27.1 and 27.2 all elements are plates of the same
isotropic material. Suppose that values of the elastic modulus E and Poissons ratio are stored in Em and nu,
respectively, which are typically declared at the beginning of the problem script. Let numele give the number
of elements. Then the material data is compactly declared by saying
(27.6)
For a plate element, fprop is the thickness h of the plate, assumed constant.4 For a bar element,
fprop is the cross section area.
If all elements are plates with the same thickness, this list can be easily generated by a Table
instruction as in the example below.
4
It is possible also to specify a variable thickness by making fprop a list that contains the thicknesses at the nodes. Since
the variable thickness case is comparatively rare, it will not be described here.
278
279
Example 27.8. For all FEM discretizations in Figures 27.1 and 27.2 all elements are plates with the same
thickness h, which is stored in variable th. This is typically declared at the start of the problem script. As
before, numele has the number of elements. Then the fabrication data is compactly declared by saying
ElemFabrications=Table[th,{ numele }]
(27.7)
The tag value is 0 if the force is specified and 1 if the displacement is specified.
When there are a lot of nodes, often the quickest way to specify this list is to create with a Table
command that initializes it to all zeros. Then displacement BCs are inserted appropriately, as in the
example below.
Example 27.9. For Model (I) in Figure 27.2(a):
numnod=Length[NodeCoordinates];
NodeDOFTags=Table[{0,0},{numnod}];
(* create and initialize to zero *)
Do[NodeDOFTags[[n]]={1,0},{n,1,7}];
(* vroller @ nodes 1 through 7 *)
Do[NodeDOFTags[[n]]={0,1},{n,29,35}]; (* hroller @ nodes 29 through 35 *)
This scheme works well because typically the number of supported nodes is small compared to the total
number.
be nonzero:
numnod=Length[NodeCoordinates];
NodeDOFValues=Table[{0,0},{numnod}]; (* create and initialize to zero *)
NodeDOFValues[[1]]=NodeDOFValues[[15]]={0,37.5};
NodeDOFValues[[8]]={0,75};
(* y nodal loads *)
2710
9
2
3
3
12
13
17
9
14
11
4
16
8
10
15
18
10
22
15
19
5
13 11
16
20
6
14 12
17
25
21
1827 26
28
22
24 23
35 34 33
32
23
24
19
20
21
31
30
29
2711
27.3
MODEL DEFINITION
ClearAll[Em,,th];
Em=10000; =.25; th=3; aspect=6/5; Nsub=4;
Emat=Em/(1-^2)*{{1,,0},{,1,0},{0,0,(1-)/2}};
(*
NodeCoordinates=N[{{0,6},{0,0},{5,6},{5,0}}];
PrintPlaneStressNodeCoordinates[NodeCoordinates,"",{6,4}];
ElemNodes= {{1,2,4,3}};
numnod=Length[NodeCoordinates]; numele=Length[ElemNodes];
ElemTypes=
Table["Quad4",{numele}];
PrintPlaneStressElementTypeNodes[ElemTypes,ElemNodes,"",{}];
ElemMaterials=
Table[Emat,
{numele}];
ElemFabrications=Table[th,
{numele}];
PrintPlaneStressElementMatFab[ElemMaterials,ElemFabrications,"",{}];
NodeDOFValues=NodeDOFTags=Table[{0,0},{numnod}];
NodeDOFValues[[1]]=NodeDOFValues[[3]]={0,75}; (* nodal loads *)
NodeDOFTags[[1]]={1,0};
(* vroller @ node 1 *)
NodeDOFTags[[2]]={1,1};
(* fixed node 2
*)
NodeDOFTags[[4]]={0,1};
(* hroller @ node 4 *)
PrintPlaneStressFreedomActivity[NodeDOFTags,NodeDOFValues,"",{}];
ProcessOptions={True};
Plot2DElementsAndNodes[NodeCoordinates,ElemNodes,aspect,
"One element mesh - 4-node quad",True,True];
NodeCoordinates=N[{{0,6},{0,3},{0,0},{5/2,6},{5/2,3},
{5/2,0},{5,6},{5,3},{5,0}}];
PrintPlaneStressNodeCoordinates[NodeCoordinates,"",{6,4}];
ElemNodes= {{1,3,9,7,2,6,8,4,5}};
numnod=Length[NodeCoordinates]; numele=Length[ElemNodes];
ElemTypes=
Table["Quad9",{numele}];
PrintPlaneStressElementTypeNodes[ElemTypes,ElemNodes,"",{}];
ElemMaterials=
Table[Emat,
{numele}];
ElemFabrications=Table[th,
{numele}];
PrintPlaneStressElementMatFab[ElemMaterials,ElemFabrications,"",{}];
NodeDOFValues=NodeDOFTags=Table[{0,0},{numnod}];
NodeDOFValues[[1]]=NodeDOFValues[[7]]={0,25};
NodeDOFValues[[4]]={0,100};
(* nodal loads *)
NodeDOFTags[[1]]=NodeDOFTags[[2]]={1,0}; (* vroller @ nodes 1,2 *)
NodeDOFTags[[3]]={1,1};
(* fixed node 3 *)
NodeDOFTags[[6]]=NodeDOFTags[[9]]={0,1}; (* hroller @ nodes 6,9 *)
PrintPlaneStressFreedomActivity[NodeDOFTags,NodeDOFValues,"",{}];
ProcessOptions={True};
Plot2DElementsAndNodes[NodeCoordinates,ElemNodes,aspect,
"One element mesh - 9-node quad",True,True];
2711
2712
PlaneStressSolution[nodxyz_,eletyp_,elenod_,elemat_,elefab_,
nodtag_,nodval_,prcopt_]:= Module[{K,Kmod,f,fmod,u,numer=True,
noddis,nodfor,nodpnc,nodsig,barele,barfor},
If [Length[prcopt]>=1, numer=prcopt[[1]]];
K=PlaneStressMasterStiffness[nodxyz,eletyp,elenod,elemat,elefab,prcopt];
If [K==Null,Return[Table[Null,{6}]]];
Kmod=ModifiedMasterStiffness[nodtag,K];
f=FlatNodePartVector[nodval];
fmod=ModifiedNodeForces[nodtag,nodval,K,f];
u=LinearSolve[Kmod,fmod]; If [numer,u=Chop[u]];
f=K.u;
If [numer,f=Chop[f]];
nodfor=NodePartFlatVector[2,f]; noddis=NodePartFlatVector[2,u];
{nodpnc,nodsig}=PlaneStressPlateStresses[nodxyz,eletyp,elenod,elemat,
elefab,noddis,prcopt];
{barele,barfor}=PlaneStressBarForces[nodxyz,eletyp,elenod,elemat,
elefab,noddis,prcopt];
ClearAll[K,Kmod];
Return[{noddis,nodfor,nodpnc,nodsig,barele,barfor}];
];
Figure 27.6. Module to drive the analysis of the plane stress problem.
27.4. Processing
Once the model definition is complete, the plane stress analysis is carried out by calling module
LinearSolutionOfPlaneStressModel listed in Figure 27.6. This module is invoked from the
problem driver as
{NodeDisplacements,NodeForces,NodePlateCounts,NodePlateStresses,
ElemBarNumbers,ElemBarForces}= PlaneStressSolution[NodeCoordinates,
ElemTypes,ElemNodes,ElemMaterials,ElemFabrications,
NodeDOFTags,NodeDOFValues,ProcessOptions];
NodePlateCounts
For each node, number of plate elements attached to that node. A zero
count means that no plate elements are attached to that node.
ElemBarForces
A list of bar internal forces if any bar elements were specified, else an
empty list.
2712
2713
27.4 PROCESSING
PlaneStressMasterStiffness[nodxyz_,eletyp_,elenod_,elemat_,
elefab_,prcopt_]:=Module[{numele=Length[elenod],
numnod=Length[nodxyz],ncoor,type,e,enl,neldof,OKtyp,OKenl,
i,j,n,ii,jj,eft,Emat,th,numer,Ke,K},
OKtyp={"Bar2","Bar3","Quad4","Quad4.1","Quad8","Quad8.2","Quad9",
"Quad9.2","Trig3","Trig6","Trig6.-3","Trig10","Trig10.6"};
OKenl= {2,3,4,4,8,8,9,9,3,6,6,10,10};
K=Table[0,{2*numnod},{2*numnod}]; numer=prcopt[[1]];
For [e=1,e<=numele,e++, type=eletyp[[e]];
If [!MemberQ[OKtyp,type], Print["Illegal type:",type,
" element e=",e," Assembly aborted"]; Return[Null] ];
enl=elenod[[e]]; n=Length[enl]; {{j}}=Position[OKtyp,type];
If [OKenl[[j]]!=n, Print ["Wrong node list length, element=",e,
" Assembly aborted"]; Return[Null] ];
eft=Flatten[Table[{2*enl[[i]]-1,2*enl[[i]]},{i,1,n}]];
ncoor=Table[nodxyz[[enl[[i]]]],{i,1,n}];
If [type=="Bar2",
Em=elemat[[e]]; A=elefab[[e]];
Ke=PlaneBar2Stiffness[ncoor,Em,A,{numer}] ];
If [type=="Bar3",
Em=elemat[[e]]; A=elefab[[e]];
Ke=PlaneBar3Stiffness[ncoor,Em,A,{numer}] ];
If [type=="Quad4",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,th,{numer,2}] ];
If [type=="Quad4.1", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad4IsoPMembraneStiffness[ncoor,Emat,th,{numer,1}] ];
If [type=="Quad8",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad8IsoPMembraneStiffness[ncoor,Emat,th,{numer,3}] ];
If [type=="Quad8.2", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad8IsoPMembraneStiffness[ncoor,Emat,th,{numer,2}] ];
If [type=="Quad9",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad9IsoPMembraneStiffness[ncoor,Emat,th,{numer,3}] ];
If [type=="Quad9.2", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Quad9IsoPMembraneStiffness[ncoor,Emat,th,{numer,2}] ];
If [type=="Trig3",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig3IsoPMembraneStiffness[ncoor,Emat,th,{numer}] ];
If [type=="Trig6",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig6IsoPMembraneStiffness[ncoor,Emat,th,{numer,3}] ];
If [type=="Trig6.-3", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig6IsoPMembraneStiffness[ncoor,Emat,th,{numer,-3}] ];
If [type=="Trig10",
Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig10IsoPMembraneStiffness[ncoor,Emat,th,{numer,7}] ];
If [type=="Trig10.6", Emat=elemat[[e]]; th=elefab[[e]];
Ke=Trig10IsoPMembraneStiffness[ncoor,Emat,th,{numer,6}] ];
neldof=Length[Ke];
For [i=1,i<=neldof,i++, ii=eft[[i]];
For [j=i,j<=neldof,j++, jj=eft[[j]];
K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]] ];
];
]; Return[K];
];
of its code reveals that it handle the multiple element types listed in Table 27.2. The modules that compute
the element stiffness matrices have been studied in previous Chapters and need not be listed here.
The displacement BCs are applied by ModifiedMasterStiffness and ModifiedNodeForces. These are
the same modules used in Chapter 21 for the space truss program, and thus need not be described further.
The unknown node displacements u are obtained through the built in LinearSolve function, as
u=LinearSolve[Kmod,fmod]. This function is of course restricted to small systems, typically less than
200 equations (it gets extremely slow for something bigger) but it has the advantages of simplicity. The node
2713
2714
PlaneStressPlateStresses[nodxyz_,eletyp_,elenod_,elemat_,
elefab_,noddis_,prcopt_]:=Module[{numele=Length[elenod],
numnod=Length[nodxyz],ncoor,type,e,enl,i,k,n,Emat,th,
numer=True,nodpnc,nodsig}, If [Length[prcopt]>0, numer=prcopt[[1]]];
nodpnc=Table[0,{numnod}]; nodsig=Table[{0,0,0},{numnod}];
If [Length[prcopt]>=1, numer=prcopt[[1]]];
For [e=1,e<=numele,e++, type=eletyp[[e]];
enl=elenod[[e]]; k=Length[enl];
ncoor=Table[nodxyz[[enl[[i]]]],{i,1,k}];
ue=Table[{noddis[[enl[[i]],1]],noddis[[enl[[i]],2]]},{i,1,k}];
ue=Flatten[ue];
If [StringTake[type,3]=="Bar", Continue[]];
If [type=="Quad4",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad4IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Quad4.1", Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad4IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Quad8",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad8IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Quad8.2", Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad8IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Quad9",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad9IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Quad9.2", Emat=elemat[[e]]; th=elefab[[e]];
sige=Quad9IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Trig3",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Trig3IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Trig6",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Trig6IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Trig6.-3", Emat=elemat[[e]]; th=elefab[[e]];
sige=Trig6IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Trig10",
Emat=elemat[[e]]; th=elefab[[e]];
sige=Trig10IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
If [type=="Trig10.6", Emat=elemat[[e]]; th=elefab[[e]];
sige=Trig10IsoPMembraneStresses[ncoor,Emat,th,ue,{numer}] ];
Do [n=enl[[i]]; nodpnc[[n]]++; nodsig[[n]]+=sige[[i]], {i,1,k}];
];
Do [k=nodpnc[[n]]; If [k>1,nodsig[[n]]/=k], {n,1,numnod}];
If [numer, nodsig=Chop[nodsig]];
Return[{nodpnc,nodsig}];
];
Figure 27.8. Module that recovers averaged nodal stresses at plate nodes.
forces including reactions are recovered by the matrix multiplication f = K.u, where K is the unmodified
master stiffness.
Finally, plate stresses and bar internal forces are recovered by the modules PlaneStressPlateStresses
and PlaneStressBarForces, respectively. The former is listed in Figure 27.8. This computation is actually
part of the postprocessing stage. It is not described here since stress recovery is treated in more detail in a
subsequent Chapter.
The bar force recovery module is not described here as it has not been used in assigned problems so far.
27.5. Postprocessing
As noted above, module PlaneStressSolution carries out preprocessing tasks: recover node
forces, plate stresses and bar forces. But those are not under control of the user. Here we describe
result printing and plotting activities that can be specified in the problem script.
2714
2715
27.5 POSTPROCESSING
2715
2716
Figure 27.9. Stress component contour plots for rectangular plate with
a circular central hole, Model (I) of Figure 27.2(b).
27.5.4. Animation
Occasionally it is useful to animate results such as displacements or stress fields when a load changes as a
function of a time-like parameter t.
This can be done by performing a sequence of analyses in a For loop. Such sequence produces a series of
plot frames which may be animated by doubly clicking on one of them. The speed of the animation may be
controlled by pressing on the righmost buttons at the bottom of the Mathematica window. The second button
from the left, if pressed, changes the display sequence to back and forth motion.
2716
2717
27.6
ClearAll[Em,,th,aspect,Nsub];
Em=10000; =.25; th=3; aspect=6/5; Nsub=4;
Emat=Em/(1-^2)*{{1,,0},{,1,0},{0,0,(1-)/2}};
(*
s={1,0.70,0.48,0.30,0.16,0.07,0.0};
xy1={0,6}; xy7={0,1}; xy8={2.5,6}; xy14={Cos[3*Pi/8],Sin[3*Pi/8]};
xy8={2.5,6}; xy21={Cos[Pi/4],Sin[Pi/4]}; xy15={5,6};
xy22={5,2}; xy28={Cos[Pi/8],Sin[Pi/8]}; xy29={5,0}; xy35={1,0};
NodeCoordinates=Table[{0,0},{35}];
Do[NodeCoordinates[[n]]=N[s[[n]]
*xy1+(1-s[[n]])
*xy7],{n,1,7}];
Do[NodeCoordinates[[n]]=N[s[[n-7]] *xy8+(1-s[[n-7]]) *xy14],{n,8,14}];
Do[NodeCoordinates[[n]]=N[s[[n-14]]*xy15+(1-s[[n-14]])*xy21],{n,15,21}];
Do[NodeCoordinates[[n]]=N[s[[n-21]]*xy22+(1-s[[n-21]])*xy28],{n,22,28}];
Do[NodeCoordinates[[n]]=N[s[[n-28]]*xy29+(1-s[[n-28]])*xy35],{n,29,35}];
PrintPlaneStressNodeCoordinates[NodeCoordinates,"",{6,4}];
ElemNodes=Table[{0,0,0,0},{24}];
ElemNodes[[1]]={1,2,9,8};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,2,6}];
ElemNodes[[7]]=ElemNodes[[6]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,8,12}];
ElemNodes[[13]]=ElemNodes[[12]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,14,18}];
ElemNodes[[19]]=ElemNodes[[18]]+{2,2,2,2};
Do [ElemNodes[[e]]=ElemNodes[[e-1]]+{1,1,1,1},{e,20,24}];
numnod=Length[NodeCoordinates]; numele=Length[ElemNodes];
ElemTypes=
Table["Quad4",{numele}];
PrintPlaneStressElementTypeNodes[ElemTypes,ElemNodes,"",{}];
ElemMaterials=
Table[Emat,
{numele}];
ElemFabrications=Table[th,
{numele}];
(*PrintPlaneStressElementMatFab[ElemMaterials,ElemFabrications,"",{}];*)
NodeDOFValues=NodeDOFTags=Table[{0,0},{numnod}];
NodeDOFValues[[1]]=NodeDOFValues[[15]]={0,37.5};
NodeDOFValues[[8]]={0,75}; (* nodal loads *)
Do[NodeDOFTags[[n]]={1,0},{n,1,7}];
(* vroller @ nodes 1-7 *)
Do[NodeDOFTags[[n]]={0,1},{n,29,35}]; (* hroller @ node 4 *)
PrintPlaneStressFreedomActivity[NodeDOFTags,NodeDOFValues,"",{}];
ProcessOptions={True};
Plot2DElementsAndNodes[NodeCoordinates,ElemNodes,aspect,
"One element mesh - 4-node quad",True,True];
Figure 27.10. Preprocessing (model definition) script for problem of Figure 27.2(b).
2718
{NodeDisplacements,NodeForces,NodePlateCounts,NodePlateStresses,
ElemBarNumbers,ElemBarForces}= PlaneStressSolution[
NodeCoordinates,ElemTypes,ElemNodes,
ElemMaterials,ElemFabrications,
NodeDOFTags,NodeDOFValues,ProcessOptions];
PrintPlaneStressSolution[NodeDisplacements,NodeForces,NodePlateCounts,
NodePlateStresses,"Computed Solution:",{}];
Figure 27.11. Processing script and solution print for problem of Figure 27.2(b).
(*
(* ux=Table[NodeDisplacements[[n,1]],{n,numnod}];
uy=Table[NodeDisplacements[[n,2]],{n,numnod}];
{uxmax,uymax}=Abs[{Max[ux],Max[uy]}];
ContourPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,ux,
uxmax,Nsub,aspect,"Displacement component ux"];
ContourPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,uy,
uymax,Nsub,aspect,"Displacement component uy"]; *)
(*
sxx=Table[NodePlateStresses[[n,1]],{n,numnod}];
syy=Table[NodePlateStresses[[n,2]],{n,numnod}];
sxy=Table[NodePlateStresses[[n,3]],{n,numnod}];
{sxxmax,syymax,sxymax}={Max[Abs[sxx]],Max[Abs[syy]],Max[Abs[sxy]]};
Print["sxxmax,syymax,sxymax=",{sxxmax,syymax,sxymax}];
ContourPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,
sxx,sxxmax,Nsub,aspect,"Nodal stress sig-xx"];
ContourPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,
syy,syymax,Nsub,aspect,"Nodal stress sig-yy"];
ContourPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,
sxy,sxymax,Nsub,aspect,"Nodal stress sig-xy"];
Figure 27.12. Result plotting script for problem of Figure 27.2(b). Note that displacement
contour plots have been skipped by commenting out the code.
What changes is the model definition script portion, which often benefits from ad-hoc node and
element generation constructs.
Notes and Bibliography
Few FEM books show a complete program. More common is the display of snipets of code. These are left
dangling chapter after chapter, with no attempt at coherent interfacing. This historical problem comes from
early reliance on low-level languages such as Fortran. Even the simplest program may run to several thousand
code lines. At 50 lines/page that becomes difficult to display snugly in a textbook while providing a running
commentary.
Another ages-old problem is plotting. Languages such as C or Fortran do not include plotting libraries for
the simple reason that low-level universal plotting standards never existed. The situation changed when
widely used high-level languages like Matlab or Mathematica appeared. The language engine provides the
necessary fit to available computer hardware, concealing system dependent details. Thus plotting scripts
become transportable.
2718
28
Stress
Recovery
281
282
TABLE OF CONTENTS
Page
28.1.
28.2.
28.3.
28.4.
28.5.
Introduction
Calculation of Element Strains and Stresses
Direct Stress Evaluation at Nodes
Extrapolation from Gauss Points
Interelement Averaging
282
283
283
284
284
286
283
28.2
28.1. Introduction
In this lecture we study the recovery of stress values for two-dimensional plane-stress elements.1
This analysis step is sometimes called postprocessing because it happens after the main processing
step the calculation of nodal displacements is completed. Stress calculations are of interest
because in structural analysis and design the stresses are often more important to the engineer than
displacements.
In the stiffness method of solution discussed in this course, the stresses are obtained from the
computed displacements, and are thus derived quantities. The accuracy of derived quantities is
generally lower than that of primary quantities (the displacements), an informal statement that may
be mathematically justified in the theory of finite element methods. For example, if the accuracy
level of displacements is 1% that of the stresses may be typically 10% to 20%, and even lower at
boundaries.
It is therefore of interest to develop techniques that enhance the accuracy of the computed stresses.
The goal is to squeeze as much accuracy from the computed displacements while keeping the
computational effort reasonable. These procedures receive the generic name stress recovery techniques in the finite element literature. In the following sections we cover the simplest stress recovery
techniques that have been found most useful in practice.
28.2. Calculation of Element Strains and Stresses
In elastic materials, stresses are directly related to strains e at each point through the elastic
constitutive equations = Ee. It follows that the stress computation procedure begins with strain
computations, and that the accuracy of stresses depends on that of strains. Strains, however, are
seldom saved or printed.
In the following we focus our attention on two-dimensional isoparametric elements, as the computation of strains, stresses and axial forces in bar elements is strightforward.
Suppose that we have solved the master stiffness equations
Ku = f,
(28.1)
for the node displacements u. To calculate strains and stresses we perform a loop over all defined
elements. Let e be the element index of a specific two-dimensional isoparametric element encountered during this loop, and u(e) the vector of computed element node displacements. Recall from
15.3 that the strains at any point in the element may be related to these displacements as
e = Bu(e) ,
(28.2)
where B is the strain-displacement matrix (14.18) assembled with the x and y derivatives of the
element shape functions evaluated at the point where we are calculating strains. The corresponding
stresses are given by
= Ee = EBu
(28.3)
1
This Chapter needs rewriting to show the use of Mathematica for stress computation. To be done in the future.
283
284
Table 28.1
Corner
node
1
2
3
4
1 1
+1 1
+1 +1
1 +1
3
+ 3
+ 3
3
3
3
+3
+ 3
Gauss
node
1
2
3
4
1/3
+1/3
+1/3
1/ 3
1/3
1/3
+1/3
+1/ 3
1
+1
+1
1
1
1
+1
+1
Gauss nodes, and coordinates and are defined in 28.4 and Fig. 28.1
In the applications it is of interest to evaluate and report these stresses at the element nodal points
located on the corners and possibly midpoints of the element. These are called element nodal point
stresses.
It is important to realize that the stresses computed at the same nodal point from adjacent elements
will not generally be the same, since stresses are not required to be continuous in displacementassumed finite elements. This suggests some form of stress averaging can be used to improve the
stress accuracy, and indeed this is part of the stress recovery technique further discussed in 28.5.
The results from this averaging procedure are called nodal point stresses.
For the moment let us see how we can proceed to compute element nodal stresses. Two approaches
are followed in practice:
1.
Evaluate directly at the element node locations by substituting the natural coordinates of
the nodal points as arguments to the shape function modules. These modules return qx and q y
and direct application of (28.2)-(28.4) yields the strains and stresses at the nodes.
2.
Evaluate at the Gauss integration points used in the element stiffness integration rule and
then extrapolate to the element node points.
Empirical evidence indicates that the second approach generally delivers better stress values for
quadrilateral elements whose geometry departs substantially from the rectangular shape. This is
backed up by superconvergence results in finite element approximation theory. For rectangular
elements there is no difference.
For isoparametric triangles both techniques deliver similar results (identical if the elements are
straight sided with midside nodes at midpoints) and so the advantages of the second one are
marginal. Both approaches are covered in the sequel.
28.3. Direct Stress Evaluation at Nodes
This approach is straightforward and need not be discussed in detail.
284
285
28.4
(a)
(b)
3
3
4
4'
(e)
3'
'
(e')
1'
1
'
2'
Figure 28.1. Extrapolation from 4-node quad Gauss points: (a) 2 2 rule, (b) Gauss element (e )
= / 3, = / 3,
= 3, = 3.
(28.4)
Any scalar quantity w whose values wi at the Gauss element corners are known can be interpolated
through the usual bilinear shape functions now expressed in terms of and :
(e )
N1
(e )
N2
(28.5)
w( , ) = [ w1 w2 w3 w4 ] (e ) ,
N
3
N4(e )
where (cf. 15.6.2)
N1(e ) = 14 (1 )(1 ),
N2(e ) = 14 (1 + )(1 ),
N3(e ) = 14 (1 + )(1 + ),
N4(e ) = 14 (1 )(1 + ).
285
(28.6)
286
(a)
4
8
7'
3'
9 9'
6' 6
4'
8'
1'
(b)
5'
5
8
2
(c)
3'
4'
6' 6
8' 9
3'
7'
1'
2'
6
2'
2'
5'
1'
1
4
Figure 28.2. Gauss elements for higher order quadrilaterals and triangles:
(a) 9-node element with 3 3 Gauss rule, (b) 8-node element with
3 3 Gauss rule, (c) 6-node element with 3-interior point rule.
1 + 1 3
12
1 12 3
12
w1
w1
2
1
1
1
1
2
1 2 3 w2
w2 2 1 + 2 3
(28.7)
=
w3
12
1 + 12 3
12 w3
1 12 3
w4
w4
1
1 1 3
1
1+ 1 3
2
Note that the sum of the coefficients in each row is one, as it should be. For stresses we apply this
formula taking w to be each of the three stress components, x x , yy and x y , in turn.
Extrapolation in Higher Order Elements
For eight-node and nine-node isoparametric quadrilaterals the usual Gauss integration rule is 3 3,
and the Gauss elements are nine-noded quadrilaterals that look as in Figure 28.2(a) and (b) above.
For six-node triangles the usual quadrature is the 3-point rule with internal sampling points, and
the Gauss element is a three-node triangle as shown in Figure 28.2(c).
28.5. Interelement Averaging
The stresses computed in element-by-element fashion as discussed above, whether by direct evaluation at the nodes or by extrapolation, will generally exhibit jumps between elements. For printing
and plotting purposes it is usually convenient to smooth out those jumps by computing averaged
nodal stresses. This averaging may be done in two ways:
(I)
Unweighted averaging: assign same weight to all elements that meet at a node;
(II) Weighted averaging: the weight assigned to element contributions depends on the stress
component and the element geometry and possibly the element type.
Several weighted average schemes have been proposed in the finite element literature, but they do
require additional programming.
286
30
Thermomechanical
Eects
301
TABLE OF CONTENTS
Page
30.1.
30.2.
30.
30.
30.
Introduction
Thermomechanical Behavior
30.2.1. Thermomechanical Stiffness Relations
30.2.2. Globalization . . . . . . . .
30.2.3. Merge . . . . . . . . . . .
30.2.4. Solution
. . . . . . . . .
30.2.5. Postprocessing . . . . . . . .
30.2.6. Worked-Out Examples . . . . .
Notes and Bibliography
. . . . . . . . . . . . .
References . . . . . . . . . . . . .
Exercises
. . . . . . . . . . . . .
302
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
.
. .
303
303
304
306
306
306
306
307
3010
3010
3011
30.2
THERMOMECHANICAL BEHAVIOR
30.1. Introduction
The assumptions invoked in Chapters 23 for the example truss result in zero external forces under
zero displacements. This is implicit in the linear-homogeneous expression of the master stiffness
equation f = Ku. If u vanishes, so does f. This behavior does not apply, however, if there are initial
force effects.1 If those effects are present, there can be displacements without external forces, and
internal forces without displacements.
A common source of initial force effects are temperature changes. Imagine that a plane truss
structure is unloaded (that is, not subjected to external forces) and is held at a uniform reference
temperature. External displacements are measured from this environment, which is technically
called a reference state. Now suppose that the temperature of some members changes with respect
to the reference temperature while the applied external forces remain zero. Because the length
of members changes on account of thermal expansion or contraction, the joints will displace. If
the structure is statically indeterminate those displacements will induce strains and stresses and
thus internal forces. These are distinguished from mechanical effects by the qualifier thermal.
For many structures, particularly in aerospace and mechanical engineering, such effects have to be
considered in the analysis and design.
There are other physical sources of initial force effects, such as moisture (hygrosteric) effects,2
member prestress, residual stresses, or lack of fit. For linear structural models all such sources may
be algebraically treated in the same way as thermal effects. The treatment results in an initial force
vector that has to be added to the applied mechanical forces. This subject is outlined in 30.3 from
a general perspective. However, to describe the main features of the matrix analysis procedure it is
sufficient to consider the case of temperature changes.
In this Section we go over the analysis of a plane truss structure whose members undergo temperature
changes from a reference state. It is assumed that the disconnection and localization steps of the
DSM have been carried out. Therefore we begin with the derivation of the matrix stiffness equations
of a generic truss member.
30.2. Thermomechanical Behavior
Consider the generic plane-truss member shown in Figure 30.1. The member is prismatic and
uniform. The temperature T is also uniform. To reduce clutter the member identification subscript
will be omitted in the following development until the globalization and assembly steps.
We introduce the concept of reference temperature Tr e f . This is conventionally chosen to be the
temperature throughout the structure at which the displacements, strains and stresses are zero if
no mechanical forces are applied. In structures such as buildings and bridges Tr e f is often taken
to be the mean temperature during the construction period. Those zero displacements, strains and
stresses, together with Tr e f , define the thermomechanical reference state for the structure.
The member temperature variation from that reference state is T = T Tr e f . This may be positive
or negative. If the member is disassembled or disconnected, under this variation the member length
1
Called initial stress or initial strain effects by many authors. The different names reflect what is viewed as the physical
source of initial force effects at the continuum mechanics level.
303
(30.2)
Now suppose that the member is also subject to mechanical forces, more precisely the applied
axial force F shown in Figure 30.1. The member axial stress is = F/A. In response to
this stress the length changes by d M . The mechanical strain is e M = d M /L. The total strain
e = d/L = (d M + dT )/L is the sum of the mechanical and the thermal strains:
e = e M + eT =
+ T
E
(30.3)
This superposition of deformations is the basic assumption made in the thermomechanical analysis.
It is physically obvious for an unconstrained member such as that depicted in Figure 30.1.
(a)
f yi, uyi
fxi , uxi
(e)
i
f yj , uyj
(b)
fxj , uxj
x
j
k s = EA/L
, T
F
L
F
d = d M + dT
L + d M + dT
Figure 30.1. Generic truss member subjected to mechanical and thermal effects:
(a) idealization as bar, (b) idealization as equivalent linear spring.
At the other extreme, suppose that the member is completely blocked against axial elongation; that
is, d = 0 but T = 0. Then e = 0 and e M = eT . If > 0 and T > 0 the blocked member
goes in compression because = Ee M = EeT = E T < 0. This thermal stress is further
discussed in Remark 30.2.
3
An assumption justified if the temperature changes are small enough so that is approximately constant through the
range of interest, and no material phase change effects occur.
304
F = fxi
p = pM + pT
F = f xj
j
=
+ T,
L
E
(30.4)
(30.5)
Here p M = A denotes the mechanical axial force, and pT = E A T , which has the dimension
of a force, is called (not surprisingly) the internal thermal force. The sum p = p M + pT is called
the effective internal force. The last relation in (30.5), F = p = p M + pT follows from free-body
member equilibrium; see Figure 30.2. Passing to matrix form:
u xi
EA
u
(30.6)
F=
[ 1 0 1 0 ] yi .
u yi
L
u y j
Noting that F = fx j = fxi while fyi = fy j = 0, we can relate joint forces to joint displacements
as
f xi
F
fyi 0
f = F =
xj
fy j
fM xi
1
1
fM yi
0 EA 0
+ E A T
=
1
fM x j
1
L
fM y j
0
0
0
0
0
0
1 0
u xi
0 0 u yi
.
1 0 u x j
u y j
0 0
(30.7)
u,
or
In compact matrix form this is f = f M + fT = K
u = f M + fT .
K
(30.8)
is the same member stiffness matrix derived in Chapter 2. The new ingredient that appears
Here K
is the vector
1
0
fT = E A T
(30.9)
,
1
0
This is called the vector of thermal joint forces in local coordinates. It is an instance of an initial
force vector at the element level.
305
Remark 30.1. A useful physical interpretation of (30.8) is as follows. Suppose that the member is precluded
from joint (node) motions so that u = 0. Then f M + fT = 0 or f M = fT . It follows that fT contains the
negated joint forces (internal forces) that develop in a heated or cooled bar if joint motions are precluded.
Because for most materials > 0, rising the temperature of a blocked bar:T > 0, produces an internal
compressive thermal force pT = AT = E AT , in accordance with the expected physics. The quantity
T = E T is the thermal stress. This stress can cause buckling or cracking in severely heated structural
members that are not allowed to expand or contract. This motivates the use of expansion joints in pavements,
buildings and rails, and roller supports in long bridges.
30.2.2. Globalization
At this point we restore the member superscript so that the member stiffness equations (30.7) are
rewritten as
e u e = feM + feT .
(30.10)
K
Use of the transformation rules developed in Chapter 2 to change displacements and forces to the
global system {x, y} yields
(30.11)
Ke ue = feM + feT ,
where Te is the displacement transformation matrix (3.1), and the transformed quantities are
T e e
T,
Ke = T e K
T e
feM = Te f ,
T e
feT = Te fT .
(30.12)
These globalized member equations are used to assemble the free-free master stiffness equations
by a member merging process.
30.2.3. Merge
The merge process is based on the same assembly rules stated in 3.1.3 with only one difference:
thermal forces are added to the right hand side. The member by member merge is carried out
much as described as in 3.1.4, the main difference being that the thermal force vectors feT are also
merged into a master thermal force vector. Force merge can be done by augmentation-and add (for
hand work) or via freedom pointers (for computer work). Illustrative examples are provided below.
Upon completion of the assembly process we arrive at the free-free master stiffness equations
Ku = f M + fT = f.
(30.13)
30.2.4. Solution
The master system (30.13) has formally the same configuration as the master stiffness equations
(2.3). The only difference is that the effective joint force vector f contains a superposition of
mechanical and thermal forces. Displacement boundary conditions can be applied by reduction
or modification of these equations, simply by using effective joint forces in the descriptions of
Chapters 23. Processing the reduced or modified system by a linear equation solver yields the
displacement solution u.
306
30.2.5. Postprocessing
The postprocessing steps described in Chapter 3 require some modifications because the derived
quantities of interest to the structural engineer are mechanical reaction forces and internal forces.
Effective forces by themselves are of little use in design. Mechanical joint forces including reactions
are recovered from
(30.14)
f M = Ku fT
To recover mechanical internal forces in member e, compute p e by the procedure outlined in Chapter
3, and subtract the thermal component:
p eM = p e E e Ae e T e .
(30.15)
This equation comes from solving (30.5) for p M . The mechanical axial stress is e = p eM /Ae .
30.2.6. Worked-Out Examples
Example 30.1. The first worked out problem is defined in Figure 30.3. Two truss members are connected
in series as shown and fixed at the ends. Properties E = 1000, A = 5 and = 0.0005 are common to
both members. The member lengths are 4 and 6. A mechanical load P = 90 acts on the roller node. The
temperature of member (1) increases by T (1) = 25 while that of member (2) drops by T (2) = 10 . Find
the stress in both members.
y // y
P = 90
;;
;;
;;
;;
;
(2)
(1)
(1)
x // x
(2)
=4
L =6
To reduce clutter note that all y motions are suppressed so only the x freedoms are kept: u x1 = u 1 , u x2 = u 2
and u x3 = u 3 . The corresponding node forces are denoted by f x1 = f 1 , f x2 = f 2 and f x3 = f 3 . The thermal
force vectors, stripped to their x x components, are
f(1)
f(2)
(2)
150
60
(1) (1) (1)
(1) 1
(2) (2) (2)
(2) 1
T1
T2
f(1)
=
=
E
A
T
=
,
f
=
=
E
A
T
=
.
T
T
1
150
1
60
fT(1)
fT(2)
2
3
(30.16)
The element stiffness equations are:
u (1)
f(1)
u (2)
f(2)
1 1
150
1 1
60
1
2
= M1
, 2000
= M2
, (30.17)
3000
(1)
(1) +
(2)
(2) +
1 1
150
1 1
60
f M2
f M3
u 2
u 3
No globalization is needed because the equations are already in the global system, and thus we can get rid of
the localization marker symbols: f f , u u. Assembling by any method yields
1000
3 3 0
3 5 2
0 2 2
u1
u2
u3
f M1
f M2
f M3
150
150 + 60
60
307
f M1
f M2
f M3
150
210
60
(30.18)
The displacement boundary conditions are u 1 = u 3 = 0. The mechanical force boundary condition is f M2 =
90. On removing the first and third equations, the reduced system is 5000 u 2 = f M2 + 210 = 90 + 210 = 300,
which yields u 2 = 300/5000 = +0.06. The mechanical internal forces in the members are recovered from
E (1) A(1)
(u 2 u 1 ) E (1)A(1) (1) T (1) = 3000 0.06 12000 0.0005 25 = 60,
L (1)
E (2) A(2)
(u 3 u 2 ) E (2)A(2) (2) T (2) = 2000 (0.06) 12000 0.0005 (10) = 72,
p (2)
M =
L (2)
(30.19)
whence the stresses are (1) = 60/12 = 5 and (2) = 72/12 = 6. Member (1) is in tension and member
(2) in compression.
p (1)
M =
Example 30.2. The second example concerns the example truss of Chapters 2-3. The truss is mecanically
unloaded, that is, f M x2 = f M x3 = f M y3 = 0. However the temperature of members (1) (2) and (3) changes
by T , T and 3T , respectively, with respect to Tr e f . The thermal expansion coefficient of all three
members is assumed to be . We will perform the analysis keeping and T as variables.
The thermal forces for each member in global coordinates are obtained by using (30.10) and the third of
(30.12):
f(1)
T
f(2)
T
f(3)
T
0 0 0
1
1
1 0 0 0
0
= 100 T
,
0 1 0 1
1
0 0 1
0
0
1 0
0
1
0
0 0
0 0
1
= 50 T
,
0 0 1 1
0
0 1
0
0
1
1 1 0
0
1
1
1 0
0 0
1
(3) (3) (3)
(3) 1 1
= E A T
= 200 T
.
0 1 1 1
1
2 0
0
0 1
1
0
1
1
0
0
1
(30.20)
Merging the contribution of these 3 members gives the master thermal force vector
100 + 0 200
0 + 0 200
100 + 0 + 0
fT = T
0 50 + 0
0 + 0 + 200
0 + 50 + 200
300
200
= T 100
50
(30.21)
200
250
The master stiffness matrix K does not change. Consequently the master stiffness equations are
20
10
10
10 10 0 10 10
u x1 = 0
f M x1
10
0 0 10 10 u y1 = 0 f M y1
0 10 0
0
0
u x2 = f M x2 = 0 + T
0
0 5
0 5
u y2 = 0 f M y2
f M x3 = 0
u x3
10 10
0 0 10 10
u y3
f M y3 = 0
10 10
0 5 10 15
308
300
200
100
50
200
250
(30.22)
10 0
0 10
0 10
0
10
15
u x2
u x3
u y3
0
0
0
+ T
100
200
250
= T
100
200
250
(30.23)
Solving (30.23) gives u x2 = u x3 = u y3 = 10 T . Completing u with the prescribed zero displacements and
premultiplying by K gives the complete effective force vector:
20
10
10
f = Ku =
0
10 10 0 10 10
0
10
0 0 10 10 0
0 10 0
0
0
10 T = T
0
0 5
0 5 0
10 10
0 0 10 10
10
10 10
0 5 10 15
10
300
200
100
50 .
(30.24)
200
250
(30.25)
All mechanical joint forces, including reactions, vanish, and so do the internal mechanical forces. This is a
consequence of the example frame being statically determinate.4
Initial Force Effects
As previously noted, a wide spectrum of mechanical and non-mechanical effects can be acommodated under
the umbrella of the initial force concept. The stiffness equations at the local (member) level are
e u e = feM + feI = fe ,
K
(30.26)
(30.27)
In these equations subscripts M and I identify mechanical and initial node forces, respectively. The sum of
the two: f at the local member level and f at the global structure level, are called effective forces.
A physical interpretation of (30.26) can be obtained by considering that the structure is blocked against all
motions: u = 0. Then f M = f I , and the undeformed structure experiences mechanical forces. These
translate into internal forces and stresses. Engineers also call these prestresses. prestress
Local effects that lead to initial forces at the member level are: temperature changes (studied in 4.2, in which
f I fT ), moisture diffusion, residual stresses, lack of fit in fabrication, and in-member prestressing. Global
effects include prescribed nonzero joint displacements (studied in 4.1) and multimember prestressing (for
example, by cable pretensioning of concrete structures).
As can be seen there is a wide variety of physical effects, whether natural or artificial, that lead to nonzero
initial forces. The good news is that once the member equations (30.25) are formulated, the remaining DSM
steps (globalization, merge and solution) are identical. This nice property extends to the general Finite Element
Method.
4
For the definition of static determinacy, see any textbook on Mechanics of Materials. Such structures do not develop
thermal stresses under any combination of temperature changes.
309
3010
Exercises
Shortcut: the element stiffnesses and master stiffness matrix are the same as in Exercise 3.7, so if that Exercise
has been previously assigned no stiffness recomputations are necessary.
EXERCISE 30.2 [A:15] Consider the generic truss member of 2.4, reproduced in Figure E30.1 for conve-
nience.
_ _
fyi, u yi
_ _
fxi , uxi
(e)
_
y
_ _
fyj, u yj
_ _
fxj , uxj
_
x
The disconnected member was supposed to have length L, but because of lack of quality control it was
fabricated with length L + , where is called the lack of fit. Determine the initial force vector f I to be used
in (30.26). Hint: find the mechanical forces that would compensate for and restore the desired length.
EXERCISE 30.3 [A:10] Show that the lack of fit of the foregoing exercise can be viewed as equivalent to a
prestress force of (E A/L).
EXERCISE 30.4 [A:20] Show that prescribed nonzero displacements can, albeit somewhat artificially, be
placed under the umbrella of initial force effects. Work this out for the example of 30.1.1. Hint: split node
displacements into u = u H + u N , where u N (the nonhomogeneous or particular part of the solution)
carries the nonzero displacement values.
EXERCISE 30.5 [A:35]. (Research paper level). Prove that any statically determinate truss structure is free
of thermal stresses.
3011