Stiffness matrix in finite element method

AI Thread Summary
The discussion focuses on issues related to the stiffness matrix in a finite element method (FEM) code for 3D hexahedral elements. The author is experiencing unexpected results in deformation and natural frequency that seem to depend heavily on mesh size. Key suggestions include verifying the eigenvalues of the stiffness matrix, ensuring correct integration rules, and checking for shear locking and hourglassing effects. It is recommended to use different integration rules for direct and shear stress components to improve accuracy. The mass matrix should have diagonal elements equal to one-eighth of the element mass for an 8-node element.
Hassan2
Messages
422
Reaction score
5
Dear all,

I have written a code for structural analysis using the finite element method. For some reason, I directly started with 3D elements ( hexahedron). I used to believe that the code was fine but recently i realized that the results ( deformation, natural frequency,..) strongly depend on the mesh size even for very small meshes. I have been trying for several days to find the problem in the code in vain. The problem might be in matrix assembling but before that, I need to make sure that my elemental stiffness matrix is correct. Does anyone have a reference with a numerical example of 8-node 3D elemental stiffness matrix?

The figure shows the matrix construed by the code. Perhaps you can judge the correctness by of the matrix by looking at the entries.

Your help would be appreciated.

Thanks
 

Attachments

  • stiffness.JPG
    stiffness.JPG
    68.4 KB · Views: 2,840
Engineering news on Phys.org
Some basic checks that you should do:

1. Find the eigenvalues of an element stiffness matrix. There should be 6 zeros corresponding to the rigid body motions. Do this check for a rectangular brick shape, and also for an arbitrary distorted shape.

2. For a rectangular brick shaped elements, simulate some "constant stress field" sitations. For example if there is a constant stress in the x direction, the extension in x should correspond to an axial bar with axial stiffness = EA/L, and there should be a contraction in the other two directions according to Poisson's ratio (Run the checks for Posson's ratio = 0, and also for a typical nonzero value like 0.3). Work out the correct displacement vector for the 24 degrees of freedom, multiply by the stiffness, and check you get the correct nodal loads (i.e. equal and opposite loads in the x direction and zero in y and z). Repeat in for constant stress in the Y and Z directions. (Note, there is a reason for doing the test this way rather than just restraining the structure and solving the equations: doing it this way removes the possibiltiy that you restrained the structure incorrectly, and therefore you had both errors in the element formulation and errors in the FE model!).

Then do the same checks for a constant shear stress.

You need to do these sort of checks anyway, but I'll make a guess at the real cause of your problem (ignoring the possibility of bugs in your code). I'm guessing the element has linear shape functions (and is isoparametric, for distorted element shapes). What integration rule are you using to form the stiffness?
 
I use Gauss integration rule and with two points I get the accurate result.

The eigenvalues obtained for the element is as following. Here I used the diagonal mass matrix. It means a 24x24 matrix with all diagonal elements equal to the element mass. I hope the mass matrix is fine. I see some odd things in the eigenvalues, like lack of symmetry. Any thoughts?

Added: The element is cubic.

-0.00000
-0.00000
0.00000
0.00000
0.00000
0.00000
0.02654
0.02654
0.03539
0.03539
0.03539
0.07962
0.07962
0.07962
0.07962
0.07962
0.07962
0.10616
0.15924
0.15924
0.15924
0.15924
0.15924
0.15924
 
Last edited:
Hm... as you say it looks a bit strange that for a cube you have a pair of eigenvalues 0.026 and a single one 0.106, but it's not necessarily wrong.

Check the eigenvector for the 0.106 mode. You might find the displacements have have a lot of "internal symmetry" and you can't create a different shape that is "symmetrical" with it. An example would be if every node was moving radially in and out from the center of the element. Another possibility is when 4 nodes (forming the vertices of an equilateral tetrahedron) move radially out, and the other 4 nodes move radially inwards.
I use Gauss integration rule and with two points I get the accurate result.
That seems like a good idea, but it isn't. Elememts with linear shape functions work fine for applications like heat transfer with only one degree of freedom per node, but they don't work very well for structural mechanics without a bit of tweaking. The "obvious" formulation that you tried suffers from what is called "shear locking" which makes is much to stiff (possibly orders of magnitude too stiff!) if the structure is trying to bend. The simplest cure for that is to use a 1-point integration rule, but that introduces a different problem called "hourglassing" where the FE model can have spurious zero-energy deformation modes.

One way to fix this is to split the stiffness matrix into two parts and use different integration rules for each part. If you write the stiffness as
\iiint B^T D B\,dV
you can split the 6x6 material properties matrix ##D## into 3x3 sub-matrices. The two diagonal sub-matrices represent the relationship between the direct stresses and strains (call that ##D_\epsilon##), and the shear stresses and strains ##D_\gamma##. The two off-diagonal blocks are conveniently zero, for isotropic matierals. So, you can write the element stiffness matrix as
\iiint B^T (D_\epsilon + D_\gamma) B\,dV = \iiint B^T D_\epsilon B\,dV + \iiint B^T D_\gamma B\,dV = K_\epsilon + K_\gamma
and then integrate ##K_\epsilon## using 2-point integration and ##K_\gamma## using 1-point integration. (You also partition the 24x6 B matrix into two 24x3 matrices).

The mass matrix doesn't suffer from this problem, and a 2x2 itegration rule should work fine.

It means a 24x24 matrix with all diagonal elements equal to the element mass.
That's not quite right. The diagonal elements should be 1/8 of the element mass, for an 8 node element. (But that doesn't affect the pattern of eigenvalues of the stiffness, so long as all the mass matrix diagonals are equal).

Keywords to Google are "shear locking", "hourglasing", and "selective reduced integration" for more on this. The same problem affects 4-node plane elements, and you will probably find more explanations and pictures of those than of 3D elements.
 
How did you find PF?: Via Google search Hi, I have a vessel I 3D printed to investigate single bubble rise. The vessel has a 4 mm gap separated by acrylic panels. This is essentially my viewing chamber where I can record the bubble motion. The vessel is open to atmosphere. The bubble generation mechanism is composed of a syringe pump and glass capillary tube (Internal Diameter of 0.45 mm). I connect a 1/4” air line hose from the syringe to the capillary The bubble is formed at the tip...
Thread 'Physics of Stretch: What pressure does a band apply on a cylinder?'
Scenario 1 (figure 1) A continuous loop of elastic material is stretched around two metal bars. The top bar is attached to a load cell that reads force. The lower bar can be moved downwards to stretch the elastic material. The lower bar is moved downwards until the two bars are 1190mm apart, stretching the elastic material. The bars are 5mm thick, so the total internal loop length is 1200mm (1190mm + 5mm + 5mm). At this level of stretch, the load cell reads 45N tensile force. Key numbers...
I'd like to create a thread with links to 3-D Printer resources, including printers and software package suggestions. My motivations are selfish, as I have a 3-D printed project that I'm working on, and I'd like to buy a simple printer and use low cost software to make the first prototype. There are some previous threads about 3-D printing like this: https://www.physicsforums.com/threads/are-3d-printers-easy-to-use-yet.917489/ but none that address the overall topic (unless I've missed...
Back
Top