This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: Computational Issues Related to Finite Element Analysis
of Elasticity Problems Recall the numerical integration schemes used to calculate element matrices for two—dimensional
rectangular elements. These methods incorporate transformations onto the master element in the
natural coordinate system, require use of the J acobian matrix, and evaluate things at particular
Gauss points within the element as shown in table below. These steps have inﬂuence on the accuracy of determining the displacements and stresses within an element. The following notes
describe some of the issues related to this. Table 9.3.1 Selection of the integration order and location of the Gauss points for linear, quadratic,
and cubic quadrilateral elements (nodes not shown) Maximum Order of Order of Location of
Element polynomial integration the integration points*
type degree (r X r) residual in master element
‘1 Constant (r = 1) 0 1 x l 0012)
Linear (r = 2) 2 2 X 2 0014)
Quadratic (r = 3) 4 (3 x 3) 00:6)
Cubic (r = 4) 6 (4 x 4) 0(128 ) *See Table 6.1.2 for the integration points and weights for each coordinate direction. General Concepts on Reduced Integration It can be shown that the displacement formulation for linear elastic ﬁnite element
analysis represents a lower bound on the strain energy of the system and thus this formulation
results in overestimating the system stiffness. Thus it may turn out that by not evaluating the
element stiffness matrices exactly in the numerical integration scheme, a more accurate result
could be obtained. This would be the case if the error in the numerical routine compensates
appropriately for the overestimation of the structural stiffness due to the ﬁnite element
discretization. Therefore, a reduction in the usual numerical integration order used to calculate
the element stiffness matrices can actually improve the ﬁnal results, and this concept is generally
referred to as reduced integration. The method provides a softening effect because certain
higher—order polynomials terms will vanish at Gauss points of a low—order rule, thus eliminating
these terms from contribution to the system stiffness. With fewer sampling points, some of the
more complicated displacement modes offer less resistance to deformation. This concept has lead to many studies aimed at determining the optimum integration
order and scheme for various ﬁnite element types. In addition to simply using a reduced
integration scheme, it has been found that optimum results for some problems can be obtained by
using a selective integration method whereby different orders of integration are applied to
different terms in the stiffness matrix. Although reduced integration can be useful it can also lead to illconditioned system
matrices, and thus the choice of using such a scheme is not always straightforward. The
following two criteria are commonly used to help ensure the proper selection of reduced
integration methods: 1. the element should not contain any spurious zero energy modes; i.e. the rank of the
element stiffness matrix should not be smaller than that evaluated exactly.
2. the element should contain the required constant strain states. Bathe (1982) provides additional general information on this concept, and some additional notes
from: Concepts and Applications of Finite Element Analysis, by Cook, Malkus and Plesha,
1989 follows. 6.11 APPROPRIATE ORDER OF
QUADRATURE For numerically integrated elements, we deﬁne “full integration” as a quadrature
rule sufﬁcient to provide the exact integrals of all terms kg in the element stiffness
matrix if the element is undistorted (e. g., if a quadratic element has straight sides
and midside nodes). The same “full integration” rule will not exactly integrate
all kij if sides are curved or if side nodes are offset from the midpoints, for then
J is not constant throughout the element. For example, in Eq. 6.26, [B J is linear in g and J is constant if node 3 is
centered. Therefore, the integrand contains terms up to £2, which are integrated
exactly by two Gauss points. Accordingly, for this element, even if node 3 is not
centered, twopoint Gauss quadrature is considered “full integration.” Use of full integration is the only sure way to avoid pitfalls such as mesh
instabilities, which are discussed in Section 6.12. However, a lower—order quadrature rule, called “reduced integration,” may be
desirable for two reasons. First, since the expense of generating a matrix [k] by
numerical integration is proportional to the number of sampling points, using fewer
sampling points means lower cost. Second, a low=order rule tends to soften an
element, thus countering the overly stiff behavior associated with an assumed
displacement ﬁeld. Softening comes about because certain higherorder poly3
nomial terms happen to vanish at Gauss points of a low—order rule, so that these
terms make no contribution to strain energy. In other words, with fewer sampling
points, some of the more complicated displacement modes offer less resistance
to deformation. In sum, our argument is that reduced integration may be able to
simultaneously reduce cost, reduce accuracy in the evaluation of integral expres
sions, and increase the accuracy of a ﬁnite element analysis. Reduced integration
should not be used if cost reduction is the only motivation. The number of Gauss points has a lower limit because in the limit of mesh
reﬁnement, element volume must be integrated exactly. We argue as follows. As
a mesh is indeﬁnitely reﬁned, a constantstrain condition is approached in each
element, provided that the element is valid in the patch test sense. Thus strain
energy density U0 becomes constant throughout each element. Strain energy in
an element, for plane and solid problems, respectively, is Ue=fo0tJd§dn or U€=ffoOJd§dnd§ (6.111) If U0 is constant, then U6, will be correct if volume dV = t] a’f d7; (or (W =
J dg dn d5”) is correctly integrated. In practice, we prefer to use exact volume
integration for any shape and size of element. From Eq. 4.1—10 we see that integrals in Eq. 6.111 produce terms in the element
stiffness matrix [k]. Accordingly, if [k] is produced by an integration rule adequate
to compute element volume exactly, the element will be able to provide the correct
strain energy in a constantstrain deformation mode. Thus, for an element of arbitrary geometry, the minimum quadrature require—
ment is a rule that exactly integrates tJ (plane case) or J (solid case). In a plane
bilinear element of constant thickness, U is linear in f and in n, so one Gauss
point is required. In a plane quadratic element of constant thickness, tJ contains
53 and 773, so a 2 by 2 Gauss rule is required. The eightanode solid also requires
an'order 2 Gauss rule (8 points). However, with rare practical exceptions, indeﬁnitely repeated subdivision of a
mesh yields elements that become straightsided parallelograms of constant thick
ness. Thus t and J cease to be functions of the coordinates and, in the limit, a
single Gaus‘s point yields the correct element volume. For an isoparametric element based on an assumed displacement ﬁeld, the best
quadrature rule is usually the lowestorder rule that computes volume correctly
and does not produce instability. Numerical testing of any proposed rule is man—
datory. Solution accuracy may be meshdependent and problem—dependent, but
usually one quadrature rule will be clearly superior to others. For bilinear and
eightnode plane elements, and for the eightnode linear solid element, an order
2 Gauss rule is favored (four and eight points for plane and solid elements,
respectively). The quadratic serendipity solid, having eight corner nodes and
twelve edge nodes, can be integrated with an order 3 rule (27 points), but a special
14point rule may be preferred, especially if the element is made very thin in one direction [6.8—6. 10]. 6.12 ELEMENT AND MESH
INSTABILITIES An instability may also be called a spurious singular mode. In structural me—
chanics, an instability may be known as a mechanism, a kinematic made, an
hourglass mode, or a zeroenergy mode. The term “zero—energy mode” refers to
a nodal displacement vector {D} that is not a rigidbody motion but nevertheless
produces zero strain energy {D}T[K]{D}/2. lnstabilities arise because of shortcom—
ings in the element formulation process, such as use of a low—order Gauss quad
rature rule. In the present context, an instability has nothing to do with buckling
problems of structures. Y A structure that appears adequately constrained may yet have an instability
that makes [K] singular. Or, unstable elements may combine to form a structure
that is stable but unduly susceptible to certain load patterns, so that computed
displacements are excessive. To explain the term “zero—energy mode” further and show how such a mode
may arise, we substitute the relation {5} = [B]{d} into the expression for strain
energy in an element, U... From Eq. 4.1—10 and the standard expression for [k],
Eq. 4.15, we obtain Ue = %{d}T[k]{d} = %{d}T [V [BlTiEllBl dVld} = t [V {€}T[E]{é} dV (6121) When [k] is formed by numerical integration, it contains only the information that
can be sensed at the sampling points of the quadrature rule. If it happens that
strains {6} = [B]{d} are zero at all sampling points for a certain mode {(1}, then
Ue will vanish for that {d}, and, according to Eq. 6.12—1, [k] will be a zerostiffness
matrix in the sense that strain energy Ue = {d}T[k]{d}/2 is zero for this particular
{(1}. We expect that U... = 0 if {d} is a rigid—body motion. If U6 = 0 when {d} is
not a rigid—body motion, then an instability is present. An element that displays a mechanism is said to be rank deﬁcient. That is, the
rank of [k] is less than the number of element d.o.f. minus the number of rigid
body modes. An instability in an existing [k] can be detected by means of an eigenvalue test
(Section 18.8). In the present section we give examples of instabilities and brieﬂy
discuss their prevention. Examples. Consider the fournode plane (bilinear) element, whose stiffness matrix
is 8 by 8. Eight independent displacement modes {(1} can be identiﬁed (Fig.
6.121). The ﬁrst three are rigidbody modes, for which Ue = 0, as is correct,
regardless of the quadrature rule used. The next three modes, numbers 4, 5, and
6, are constantstrain modes, for which U, > 0, regardless of the quadrature rule
used. Modes 7 and 8 are bending modes. An order 1 rule, whose single Gauss
point is at the element center, does not sense these modes, as ex = E), = 7,, =
O at the center. Accordingly, Ue = O for modes 7 and 8, and the element displays
two mechanisms. These two spurious modes disappear if the Gauss rule is order
2 or greater. The foregoing mechanisms can appear in a mesh of elements as well as in a
single element (Fig. 6.122). In Fig. 6.122a’, modes 7 and 8 of Fig. 6.12—1 are
combined with a rigidbody rotation of each element. The mechanisms of Fig. Figure 6.124. Independent displacement modes of a bilinear element. 6.12—2 are called hourglass modes because of their physical shape. Each of these
distortions, as well as each straining mode in Fig. 6.12—1, would be considered
the same mode if nodal d.0.f. were reversed—that is, if {d} of that mode were
replaced by {d}. Elements need not be rectangular in order to display a mechanism. Imagine,
for example, that displacements are u = algn and u : azgn, where a 1 and a2 are
constants. Then, at§ = n = 0, we have “,5 = u”, = v,§ = 0,1, = 0; hence,
according to Eqs. 6.3—17 and 6.3—18, ex = e, = 31,, = 0 at the Gauss point of an
order 1 rule, regardless of the shape of the element. Consider next the quadratic plane element, having either eight or nine nodes, and integrated with a 2 by 2 Gauss rule (Fig. 6.123). Displacements in the nine
node element of Fig. 6.12=3b are [6.11] i: f (3)52“ ‘ 52 ‘ 7'2 (6.122) At the Gauss points of a 2 by 2 rule—that is, where g and n are : 1/\/§——0ne ﬁnds Ll,§ = u”, = U“: = v”, = 0. Therefore, according to Eqs. 6.317 and 6.318,
strains are zero at these points, for any geometric shape of the undeformed ele .71,” (c) 7 " Figure 6.122. (a) Mesh of four bilinear elements, showing Gauss points of an order 1
rule in each element (squares). (b,c,d) Possible mechanisms (“hourglass” modes). Eight or ninenode elements Ninenode element only Ninenode element only Eight and ninenode elements
(a) (b) (0) ((1) Figure 6.123. Possible mechanisms (“hourglass” modes) in quadratic elements integrated
by an order 2 rule. Gauss points are shown by squares. ment. A similar 0 ﬁeld is possible (Fig. 6.123c). Thus we have identiﬁed two
mechanisms. The foregoing two mechanisms are not possible in the eight—node element be=
cause the £2712 term is not present (see Eqs. 6.64). However, yet another mech
anism is possible in both eightnode and ninenode elements (Fig. 6.12—3d). Its
displacement ﬁeld is simple to state for a square element; it is u = 5(3772 — 1) and I) = n(1 ~— 38) (6.12—3) Again, strains are zero at the Gauss points of a 2 by 2 rule. This mechanism is
usually not of great concern because two adjacent elements cannot both have
such a mode, as may be seen by trying to connect two deformed elements. Thus
an instability present in individual elements is not present in the mesh. Summing up, Fig. 6.123 identiﬁes three element instabilities in quadratic ele—
ments arising from a 2 by 2 Gauss quadrature rule. The element stiffness matrix
has rank 12 for both eight—node and nine—node elements (rank equals order less
the number of rigidbody and instability modes). None of these instabilities exists
if the Gauss rule is 3 by 3 or greater. A mesh that has no mechanisms may yet behave badly because restraints on
the mechanisms are weak. Consider Fig. 6.12a4a. Elements may be the fournode
elements of Fig. 6.12—2 or the nine—node elements of Fig. 6.123, respectively
integrated by one—point and fourpoint rules. Load P is concentrated and applied
centrally rather than being distributed across the right end. Mechanisms are not
possible because all nodes at the left support are ﬁxed. However, this restraint ﬁc [<— —3% LT ——>= (a)
Figure 6.124. Problems that involve “near mechanisms,” if reduced integration is
used. In (b), elements that were initially rectangular are here shown deformed. becomes weaker with increasing distance from the support. Nearthe load, dis—
tortions of the type shown in Figs. 6.12—219 and 6.12—3b become pronounced.
Indeed, for a 2 by 24 mesh, the computed displacement of load P may be over
500 times the displacement predicted by the elementary formula PL/AE [6.12]. A similar situation is depicted in Fig. 6.124b [4.6]. A 2 by 2 Gauss rule is used
to integrate [k] of each element. The stiff element, shown shaded, is weakly
restrained by soft elements connected to the ﬁxed boundary, allowing the mode
of Fig. 6.12—3d (with signs of {d} reversed) to become pronounced, although not
unbounded. Elements for solids, for plate bending, and for nonstructural problems can also
suffer from instabilities. Methods for detecting and controlling these modes are
similar to methods used for plane elements. A conservative analyst will avoid using any element that contains a possible instability because its dangers may not be foreseen. Control of Instabilities. Various control methods have been proposed. Their goal
is to eliminate instability by providing restraint, but without simultaneously stiff~
ening the element’s response to “legitimate” modes that are already working well.
In what follows we summarize an effective method, with particular reference to
a rectangular bilinear element. The method adds “hourglass stiffness” to an ele
ment integrated by one—point quadrature. The resulting element is inexpensive to formulate and works very well.
For simplicity, consider only the x—direction nodal displacements {d,‘.} of the eight modes shown in Fig. 6.12—1. For modes 1 and 8, {dx} = {0}. An arbitrary
combination of modes 2 through 6 is 1 1 ~ 1 —1
1 1 1 —1 —1 {dx} = a2 1 + a3 _1 + a4 1 + a5 _1 + a6 1 (6124)
1 1 —1 1 1 where the a, are constants. Mode 7 is
{dx}7 = a7 ’1 1 " IJT To provide mode 7 with the stiffness it lacks under onepoint quadrature, we form
the “stabilization matrix” 7‘ = A similar matrix [k]8, containing a constant as, serves to restrain mode 8. To the stiffness matrix computed by one—point quadrature, we now add [k]7 and [k]g. It
is possible to choose values of a7 and a8 such that a rectangular element displays the exact strain energy in states of pure bending.
Note that mode 7 is orthogonal to all other modes—that is, {dx}7T{dx}, = {0} for i = 1, 2, 3, 4, 5, 6, 8 (6.12—7) Orthogonality prevents [k]7 from stiffening modes other than mode 7. That this
is so may be seen by computing nodal forces {’1‘}, associated with matrix [k]7, = = = = for i = 1 through 6 and for i = 8.
The foregoing control method can be generalized to elements having more than four nodes and to elements of arbitrary shape [6.11, 6.13, 13.49, 13.52—13.54]. 6.13 REMARKS ON STRESS
COMPUTATION Element stresses follow from Eq. 4.71, with the substitution {6} = [B]{d}:
{0'} = [El(lBl{d} — {60}) + {0‘0} (6134) Here, in isoparametric elements, [B] is a function of the natural coordinates and
{0'} contains stresses referred to the global coordinate system xyz. Where in the
element should stresses be calculated? For isoparametric elements, it often hap—
pens that stresses (especially shear stresses) are most accurate at Gauss points
of a quadrature rule one order less than that required for full integration of the
element stiffness matrix. Consider Fig. 6.13—1. Sides of a bilinear element remain straight during defor
mation. A typical element, deformed by bending moment but with rigid—body
motion removed, is shown in Fig. 6.1311). Displacements in the element are u =
mag»? and v = 0, where a, is a positive constant. Thus shear strain yxy is pro=
portional to 5. On the neutral surface of bending, 34,, displays the sawtooth pattern
seen in Fig. 6.131c. Only at g = 0 in each element is 34., correctly computed (as
zero) under pure bending deformation. In a general problem of plane stress anal
ysis, where bending can occur in both directions (modes 7 and 8 of Fig. 6.121
simultaneously), the best computation point for yxy in a'bilinear element is at
E = n = O. This is the Gauss point location of an order .1 rule, which is one order
less than the order 2 rule of full integration. A similar circumstance occurs with the eightnode and nine—node quadratic
elements. In the beam of Fig. 6.132, the exact 31,, is constant along the x axis.
In the quadratic element, 'yxy along the x axis displays the parabolic distributions
shown. However, one ﬁnds that the quadratic element displays the correct yxy at
the Gauss points of a 2 by 2 quadrature rule. In other problems of stress analysis,
normal strains can also display parabolic variations, and again the most accurate
strains are to be found at the Gauss points of an order 2 rule. 'YmJ Finite element (0) Figure 6.131. (a) Beam loaded in bending. (b) Bending distortion of a typical bilinear
element. (0) Shear strain along the x axis. Remarks on Stress Computation 195 Finite element y 7W Exact
, l
l / .
1 l
1 iv 0 «l— L—x
l
“a 
‘ 
0 L rLlL»
(a) (b) Figure 6.132. ((1) Beam loaded by transverse tip force V. (b) Shear strain along the x
axis. In elements based on displacement ﬁelds, one expects stresses to be less ac“
curate than displacements, as explained in Section 3.5. However, in the foregoing
examples, stresses are “superaccurate” or “superconvergent” at the Gauss points
because there they have the same degree of accuracy as displacements. Indeed,
in unusual situations it may happen that stresses are more accurate than displace
ments. For example, in Fig. 6.l2~4a, stresses may be substantially correct at
Gauss points (of an order 1 or order 2 rule, for four— and nine—node elements,
respectively), although displacements are grossly in error. This is possible because
the modes that permit excessive displacements produce zero strain at the Gauss
points. The theory of locating error—minimal points for stress computation is explained
elsewhere [6.]4,6.15]. One discovers that these points are Gauss points: at g =
77 = O in bilinear (plane) and trilinear (solid) elements, and where E, 77, and g are
: l/\/§ in eight— or nine—node quadratic (plane) and 20— or 21node quadratic (solid)
elements. These conclusions are rigorously true for rectangular elements. For
distorted elements, Gauss points may not be optimal locations but they remain
very good choices. Stresses at Gauss points can be interpolated or extrapolated to other points in
the element. The result obtained is usually more accurate than the result of eval
uating Eq. 6.13—1 directly at the point of interest. The interpolation—extrapolation
process is explained as follows. ’ Imagine that stresses have been computed at the four Gauss points of a plane
element (points 1, 2, 3, and 4 in Fig. 6.133). We now Wish to interpolate or
extrapolate these stress values to other points in the element. In Fig. 6.13—3,
coordinate r is proportional to f and s is proportional to 7;. At (say) point 3, r =
s = 1 and E = 7; = 1/\/§. Therefore, the factor of proportionality is W; that is, Figure 6.133. Natural coordinate systems used in
extrapolation of stresses from Gauss points. 196 THE ISOPARAMETRIC FORMULATION r = §\/§ and s : n\/§ (6.132)
Stresses at any point P in the element are found by the usual shape functions, 0"}? 2 ZNiCTf for = 1, 2, 3, 4 where 0" is 0x, cry, or 730,. The N,~ are the bilinear shape functions given by Eq.
6.32, but now written in terms of r and 5 rather than 5 and n; that is, N, : 2411(1 : r)(l : s) (6.13—4) In Eq. 6.133, the N, are evaluated at the r and s coordinates of point P. For
example, let point P coincide with corner A. To calculate stress aim at corner A
from 0:, values at the four Gauss points, we substitute r = s = —\/§ into the
shape functions, and obtain 0,, = 1.86601.1 — 0.5000,.2 + 0.13401.3 — 0.5000,.4 (6.13—5) For solids, an interpolation~extrapolation formula similar to Eq. 6.13—3 is based
on stresses at eight Gauss points and the trilinear N, of Eq. 6.7—6. In Section 4.7 we advised that usually the temperature ﬁeld used for thermal
stress analysis should have the same competence as the element strain ﬁeld.
Accordingly, if element stresses are based on Gauss point values, thermal strains
{50} in Eq. 6.13—1 should also be based on Gauss point values. 6.14 EXAMPLES. EFFECT OF ELEMENT
GEOMETRY Simple test problems show how accuracy is affected by element distortion, changes
in Gauss quadrature rule, and changes in element aspect ratio. Our examples are
two—dimensional, but the trends displayed pertain to three—dimensional elements as well. Example Problems. Table 6.14—1 illustrates the behavior of the bilinear element
when its [k] is formed by four—point Gauss quadrature. Results are expressed as TABLE 6.144. STRESSES AND DEFLBCTIONS IN CANTILEVER BEAMS OF CONSTANT THICKNESS
UNDER TRANSVERSE TIP LOAD P. LENGTH = 10, DEPTH = 2, V : 0.25.
VALUES BY BEAM THEORY = 1.000, OF WHICH 3% OF 0,. IS DUE To TRANSVERSE SHEAR DEFORMATION . 1W luv lyw %,
9
E.
g
:g «»~v.w.~+.e—:+,~,vwxr;rwgl w» J a.»“we«waves?Hm...”Why‘d/my Examples. Effect ofElement Geometry 197 the ratio of computed value to the value given by beam theory. We see that square
elements are better than elongated elements, and that geometric distortion stiffens
the element and makes answers less accurate. The principal failing of the bilinear element is that under pure bending loads,
for which yxy should be zero, the element displays substantial values of yxy except
at its center, as noted in connection with Fig. 6.131. This defect, known as
parasitic shear, makes the element too stiff in bending. An improved form of the
element discussed in Section 8.3. Table 614—2 illustrates the behavior of eight—node and nine—node versions of
the quadratic element [6.12]. All nodes at the left end are ﬁxed. Load P on the
right end is allotted to nodes in the proportion 1—8—1, which is consistent with a
parabolic distribution of shear stress. Side nodes are midway along the sides.
Point B is a Gauss point of a 2 by 2 quadrature rule. Results are expressed as the
ratio of computed value to the value given by beam theory. When elements are rectangular, we see that eightnode and nineanode elements
have comparable accuracy. Both become stiffer if the quadrature rule used to
generate [k] is changed from 2 by 2 to 3 by 3. Next in Table 614—2, elements are made trapezoidal by moving nodes C and
D horizontally to positions U4 and 3L/4, where L is the length of the beam. The
ﬁnal mesh in Table 6142 introduces one curved interelement boundary by moving
node E left of center an amount L/20. We see that 2 by 2 is the preferred integration
rule, and that the eightnode element is much more sensitive to geometric dis»=
tortion than the nine=node element. In one case, stress 0,3 in the eightnnode
element is not even of the correct sign. The obvious lesson is that an ideal element is compact, straight—sided, and has
equal corner angles. Of course, elements must be distorted to some extent in
modeling an actual structure, but gratuitous distortion is to be avoided. In par—
ticular, if an element side is curved to model the curved boundary of a structure,
other element sides that form interelement boundaries should be straight. Quadratic triangles (Sections 5 .5 and 6.8) have approximately the same accuracy
as the ninenode element. For example, in the second case in Table 614—2, let TABLE 6.142. STRESSES AND DEFLECTIONS IN TWO—ELEMENT CANTILEVER BEAMS OF
CONSTANT THICKNESS UNDER TRANSVERSE TIP LOAD P. LENGTH = 100,
DEPTH = 10, v = 0.30. VALUES BY BEAM THEORY = 1.000 (IN WHICH THE
TRANSVERSESHEAR CONTRIBUTION To 0,, Is NEGLECTED). SKETCHES ARE NOT TO SCALE. lam) Element \ \ Type DA 0' xB DA 0 x3 DA
8 node 2 X 2 1.000 0.968 0.051 0.362 —0.048 0.430
8 node 3 X 3 1.129 0.930 0.048 0.161 0.050 0.221
9 node 2 X 2 1.000 1.006 1.125 1.109 0.958 0.955 9 node 3 X 3 1.141 0.954 0.687 0.791 0.705 0.737 ...
View
Full Document
 Spring '11
 Sadd

Click to edit the document details