Home
Contents
Quick Navigation
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
Problems
FEA Codes
Chapter 7
Introduction to Finite Element Analysis in Solid Mechanics
of the boundary of R
The unknown displacement components will be determined by minimizing the potential energy of the solid.
1 of 8
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
Of course, the shape functions given are valid only for 3 noded triangular elements
interpolation functions.
The factor of 2 multiplying the shear strains in the strain vector has been introduced for convenience. Note that, for linear triangular
elements, the matrix of shape function derivatives
is constant. It depends only on the coordinates of the corners of the element,
and does not vary with position within the element. This is not the case for most elements.
Now, we can compute the strain energy density within the element. Begin by computing the stresses within the element. For plane
strain deformation, have that
Recall (see Sect 3.1.7) that the strain energy density is related to the stresses and strains by
matrix form as
where
Now, express these results in terms of the nodal displacements for the element
We can now compute the total strain energy stored within the element. Because
is constant, we merely need to multiply the
strain energy density by the area of the element, which can be computed from the coordinates of its corners as follows
2 of 8
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
If we wanted to, we could add the missing terms to each element displacement vector:
3 of 8
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
We can now collect together corresponding terms in the two element stiffness matrices to express this as
is known as the Global stiffness matrix. It is the sum of all the element stiffness matrices.
Because the element stiffness matrix is symmetric, the global stiffness matrix must also be symmetric.
To assemble the global stiffness matrix for a plane strain or plane stress mesh with N nodes, we use the following procedure.
Note that for
nodes, there will be
unknown displacement components (2 at each node). Therefore, we start by
setting up storage for a
global stiffness matrix, and set each term in the matrix to zero.
2. Next, begin a loop over the elements.
3. For the current element, assemble the element stiffness matrix
1.
4.
4 of 8
Add the element stiffness matrix to the global stiffness matrix, using the following procedure. Let a, b, c denote the
numbers of the nodes on the 3 corners of the element. Let
for i=16, j=16 denote the terms in the the
element stiffness matrix. Let
for n=12N, m=12N denote the terms in the global stiffness matrix. Then,
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
Here, the symbol += means that the term on the left is incremented by the term on the right, following standard C
syntax.
5. Proceed to the next element.
Recall that the displacements vary linearly within a 3 noded triangle. Therefore, we can write
So, since the tractions are uniform
Abbreviate this as
The global residual force vector for a mesh with N nodes is assembled as follows.
5 of 8
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
1.
The residual force vector has length 2N (2 entries per node). Reserve storage for a vector of length 2N and initialize to
zero
2. Loop over elements
3. Determine which face of the element is loaded. Let a, b denote the node numbers attached to this face. Determine the
residual force vector for the element face. Let
, i=14 denote the terms in the element face residual vector. Let ,
n=12N denote the terms in the global residual force vector. Then
Now, minimize V
is symmetric
This is a system of 2N simultaneous linear equations for the 2N unknown nodal displacements. Standard computational techniques
such as Gaussian elimination, Cholesky factorization or conjugate gradient methods may be used to solve the system of equations.
To prescribe displacements for any node, we simply replace the equation for the appropriate degrees of freedom with the constraint.
For example, to force
, we could modify the finite element equations to
This procedure works, but has the disadvantage that the modified stiffness matrix is no longer symmetric. It is preferable to modify
the stiffness and residual further, to retain symmetry. To do so, we eliminate the constrained degrees of freedom from all rows of the
stiffness matrix. This is best illustrated by example. Suppose our modified stiffness matrix has the form
6 of 8
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
Now, we wish to set each entry in the second column (apart from the diagonal) to zero, so that the stiffness is symmetric. Recall that
we can add and subtract equations in the system from one another without affecting the solution. Therefore, to symmetrize the
stiffness matrix in our example, we can subtract appropriate multiples of the second row so as to set each entry in the second column
to zero.
7.2.11 Solution
The result of Sections 7.2.1-7.2.10 is a set of simultaneous linear equations of the form
These can be solved for the unknown displacements using standard techniques (e.g. Gaussian elimination or iterative techniques).
An important feature of the FEM equations is that the stiffness matrix is sparse that is to say, only a small number of entries in the
matrix are non-zero. Consequently, special schemes are used to store and factor the equations, which avoid having to store large
numbers of zeros.
7.2.12 Post-processing
Once the displacements have been computed, the strain in each element can be computed, and so the stress distribution can be
deduced. The procedure is as follows
1. For the element of interest, extract the displacement of each node from the global displacement vector
2. Calculate the strains using the procedure in 7.2.4
is defined in 7.2.4.
Note that
1. Nodes are numbered sequentially
has coordinates (1,0), etc.
2.
7 of 8
The element connectivity specifies the node numbers attached to each element,
using a counterclockwise numbering convention. It doesnt matter which node
Material_Props:
Young's_modulus: 100.
Poissons_ratio: 0.3
No._nodes:
4
Nodal_coords:
0.0 0.0
2014-03-31 18:29
http://solidmechanics.org/Text/Chapter7_2/Chapter7_2.php
you use for the first one, as long as all the others are ordered in a
counterclockwise sense around the element. For example, you could use (2,4,1)
instead of (1,2,4) for the connectivity of the first element.
3.
To fix motion of a node, you need to enter the node number, the degree of
freedom that is being constrained, (1 for horizontal, 2 for vertical), and a value
for the prescribed displacement.
4.
To specify tractions acting on an element face, you need to enter (a) the element
number; (b) the face number of the element, and (c,d) the horizontal and vertical
components of traction acting on the face. The face numbering scheme is
determined by the element connectivity, as follows. Face (1) has the first and
second nodes as end points; face (2) has the second and third nodes; and face (3)
has the third and first nodes as end points. Since connectivity for element (2)
was entered as (2,3,4), face 1 of this element has nodes numbered 2 and 3; face
2 connects nodes numbered 3 and 4, while face 3 connects nodes numbered 4
and 1.
1.0 0.0
1.0 1.0
0.0 1.0
No._elements:
2
Element_connectivity:
124
234
No._nodes_with_prescribed_DOFs: 3
Node_#, DOF#, Value:
1 1 0.0
1 2 0.0
4 1 0.0
No._elements_with_prescribed_loads: 1
Element_#, Face_#, Traction_components
2 1 10.0 0.0
To run the code, you need to open the .mws file with Maple, then follow these steps:
1. Edit the code to insert the full path for the input file in the line near the top of the code that reads
> # Change the name of the file below to point to your input file
> infile :=fopen(`insert full path of input file `,READ):
2. Scroll down near the bottom to the line that reads
> # Print nodal displacements, element strains and stresses to a file
>
outfile := fopen(`insert full path of output file``,WRITE):
and enter a name for the output file.
3.
Return to the top of the file, and press <enter> to execute each MAPLE block. If all goes well, you should see that, after
reading the input data, MAPLE plots the mesh (just as a check).
4.
If you continue to the end, you should see a plot of the displaced mesh (red) superimposed on the original mesh (green), as
shown below.
5. Finally, open the output file. It should contain the results shown below
Nodal Displacements:
Node u1
u2
1 0.0000 0.0000
2 .0910 .0000
3 .0910 -.0390
4 0.0000 -.0390
Strains and Stresses
Element e_11
e_22 e_12
s_11
s_22
s_12
1 .0910 -.0390 .0000 10.0000 -.0000 .0000
2 .0910 -.0390 .0000 10.0000 .0000 .0000
8 of 8
2014-03-31 18:29