FINITE ELEMENT ANALYSIS OF SHELLS - EARLY ACCESS 
Section 4
Expanding to a full plate element solver
21. Section overview - Expanding to a full plate element solver
01:28 (Preview)
22. Procedurally generating a rectangular mesh
24:30
23. Defining plate constraints
11:08
24. Defining the self-weight force vector
10:35
25. Building the structure stiffness matrix
10:05
26. Solving the system and extracting reaction forces
28:13
27. Plotting the plate displacements
18:10
28. Building an evaluation grid for stress resultants
10:31
29. Calculating the moments and shears
22:00
30. Visualising the plate bending moments
14:13
31. Extracting shear forces
29:04
32. Visualising the plate shear forces
12:21
33. Adding strip and edge masking to the shear plot
26:04
34. Adding magnitude clipping to the shear plot
10:40
35. Building an interpolation utility function
09:53
18. Calculating an element stiffness matrix
Virtual Work and Calculating the Element Stiffness Matrix
Please log in or enroll to access resources

Summary

In this lecture, we'll cover the following:

  • How to calculate the element stiffness matrix in code.
  • How to compute the Jacobian matrix from shape function derivatives and nodal coordinates.
  • How to transform derivatives from local to global coordinates using the Jacobian.
  • How to construct the strain–displacement (B)(B) matrix node by node.
  • How to apply Gauss quadrature to numerically integrate and assemble the stiffness matrix.
  • How the number of sampling points affects accuracy and convergence of the stiffness matrix.

In this lecture, we walk through the full implementation of the element stiffness matrix for a four-node plate element. We translate the governing equation into code by iterating over Gauss quadrature sampling points, computing shape functions and their derivatives at each point, and assembling contributions to the stiffness matrix. A key step is forming the Jacobian matrix from nodal coordinates and shape function derivatives, which allows us to transform derivatives from local to global coordinates and compute its determinant and inverse for use in later steps.

We then construct the strain–displacement matrix, (B)(B), by combining derivatives of shape functions with respect to global coordinates and assembling contributions node by node into a full 5×125\times 12 matrix. With the BB matrix, Jacobian determinant, and constitutive matrix in place, we evaluate and accumulate the stiffness contributions at each sampling point. Finally, we explore how increasing the number of Gauss sampling points affects the result, observing clear convergence and noting that two sampling points are sufficient despite higher-order schemes offering marginal gains at increased computational cost.

Next up

Next, we will refine this implementation by separating the stiffness matrix into distinct bending and shear contributions, providing greater flexibility for later use.

Tags

finite element implementationGauss quadratureJacobian matrixstiffness matrix assembly

Please log in or enroll to continue

If you've already enrolled, please log in to continue.

Finite Element Analysis of Plate and Shell Structures: Part 1 - Plates

An analysis pipeline for thick and thin plate structures, a roadmap from theory to toolbox

After completing this course...

  • You will understand how Reissner-Mindlin theory enables us to accurately capture both thin and thick plate behaviour.
  • You will understand how to turn the fundamental mechanics of plate behaviour into a custom finite element solver written in Python.
  • You will have developed meshing workflows that utilise the powerful open-source meshing engine, GMSH.
  • In addition to using your own custom finite element code, you will be comfortable validating your results using OpenSeesPy and Pynite.
Next Lesson
19. Calculating the shear and bending stiffness