📢 FINITE ELEMENT ANALYSIS OF PLATES - NEW GMSH LECTURES ADDED
Finite Element Analysis of Plate and Shell Structures: Part 1 - Plates

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

14 h 1 min | 71 lessons
After completing this course...
You will understand how the Reissner-Mindlin formulation enables us to accurately capture both thin and thick plate behaviour, and the key advantages it offers over Kirchhoff plate theory.
You will understand how to turn your understanding of the fundamental mechanics of plate behaviour into a custom finite element solver written in Python.
You will have developed versatile and powerful meshing workflows that utilise the powerful open-source meshing engine, Gmesh, to create meshes to feed into your solver.
In addition to using your own custom finite element code, you will be comfortable validating your results using OpenSeesPy and Pynite, two of the most widely used open-source finite element analysis libraries
COURSE OVERVIEW

Analytical techniques are great for modelling the simplified behaviour of plate and shell structures, but we quickly run into their limitations when we stray beyond the limiting geometry or assumptions that the models are built upon.

This is where finite element modelling comes into its own. In this course, we’ll cover the finite element modelling of plate structures by building our own solver based on the incredibly versatile Reissner-Mindlin theory. This approach will allow us to model both thick and thin plate elements, resulting in an extremely versatile and accurate analysis pipeline.

Finite element analysis of a hyperboloid capturing both membrane and bending behaviour and not limited by thin plate theory assumptions. | EngineeringSkills.com

Finite element analysis of a hyperboloid capturing both membrane and bending behaviour and not limited by thin plate theory assumptions.

Building your own solver will give you a much deeper understanding of the underlying theory. That said, we’ll also cover how to implement the same solutions using OpenSeesPy and Pynite - two free and open-source Python libraries.

To complete our modelling and analysis toolset, we’ll also cover mesh generation using a procedural workflow that uses GMSH, an incredibly powerful open-source meshing library.

Once you’ve completed this course, you’ll have a complete workflow for the analysis of plate structures, backed by a fundamental understanding of the Reissner-Mindlin theory that powers it all! You'll also be ready to expand your knowledge to shell structures in the next course in this series.

Course Breakdown

ℹ️ Section by Section Release

This course is being released section by section; as each new section is completed, I’ll be pushing those lectures live inside the course. The course index (on this page) shows the currently available lectures and the sections.

âś… Section 1: Welcome and Setting the Scene

In section one, we outline the course’s main objectives and address housekeeping topics such as how to get help and support and what background knowledge would be beneficial. We’ll also cover a high-level introduction to Reissner–Mindlin theory and discuss why it’s at the heart of the course. Section one is recommended for all course participants.

âś… Section 2: The Mechanics of Plate Elements

In section 2, we begin to dig into the core mechanics. We’ll work through Reissner-Mindlin plate theory and build up the core equations required to establish the element stiffness matrix - the fundamental building block of our solver. If you’re not concerned with the underlying mechanics, you can skip this section and move straight into section 3.

âś… Section 3: Virtual Work and Calculating the Element Stiffness Matrix

In section 3, we’ll initially focus on how the principle of virtual work leads us to the equations for the element stiffness matrix and equivalent force vector for the element. From here, we briefly review the Gauss quadrature numerical integration technique used to calculate the stiffness matrix and force vector.

With the theoretical development complete, we’ll turn our attention to Python implementation and focus on how to actually compute the stiffness matrix and equivalent force vector. Lectures 17 to 20 are recommended for anyone who wants to implement the custom FEM solver in the next section.

âś… Section 4: Expanding to a Full Plate Element Solver

In section 4, we take what we implemented on a single element level in the previous section and expand it to build a solver for a rectangular plate consisting of multiple elements. This is our first big coding section where we implement a complete plate solver from scratch.

âś… Section 5: Benchmarking against OpenSeesPy and Pynite

In section 5, we validate the output from our custom analysis against equivalent structural models built with both OpenSeesPy and Pynite. Validating our code against these open-source libraries is critical at this early stage and will allow us to move forward with more confidence in our work. It will also surface a phenomenon known as shear-locking, which we’ll need to tackle to ensure the accuracy of our custom solver.

Comparing the output from our custom solver to OpenSeesPy, Pynite and Navier's solution for thin plates. | EngineeringSkills.com

Comparing the output from our custom solver to OpenSeesPy, Pynite and Navier's solution for thin plates.

âś… Section 6: Meshing with GMSH and Python

So far, all of our plate analysis has been on rectangular plates that consist of rectangular elements. Practically, we’ll need to be able to analyse plates of all shapes and sizes consisting of non-rectangular or quadrilateral elements. To do this, we’ll need a more sophisticated method of generating finite element meshes. This can be quite a complex pre-process step, so to help us out here, we’ll introduce GMSH, another open-source library, in section 6. Our aim in this section is to build the pre-processing meshing step that we can build into our analysis pipeline.

Custom finite element mesh generated using GMSH. | EngineeringSkills.com

Custom finite element mesh generated using GMSH.

Section 7: Custom mesh finite element analysis

In section 7, we'll use our new meshing functionality from the previous section to build a custom finite element mesh that much more closely resembles a real world slab. We will then modify our solver code to directly process this mesh. We'll analyse the structure using our custom solver and again validate this result against an OpenSeesPy solution. This is going to throw up an interesting side-effect of our earlier attempts to eliminate shear locking using selective integration!

Section 8: Eliminating zero-energy displacements

In the previous section, we saw that our attempts to eliminate shear locking by using selective integration revealed another interesting problem - zero energy displacements or zero energy mechanisms. So, for our Reissner-Mindlin element to be truly effective we need a strategy to eliminate this behaviour. In this final section, we'll explore a popular approach to do just that, using assumed transverse shear strain fields. Once implemented, we'll have a robust and versatile Reissner-Mindlin element.

Custom mesh finite element analysis displacement . | EngineeringSkills.com

Custom mesh finite element analysis displacement .

Who is this course for?

  • Engineers and student engineers that want to build a deeper understanding of the mechanics of plate structures.
  • Engineers that want to leverage the power of Python and in particular open-source tools for complex structural analysis.
  • Anyone who has completed Finite Element Analysis of Continuum Structures in Python and wants to expand on what was covered in that course.
ℹ️ Completion Certificates

Note that certificates of completion will be available for download when the full course is published.

Section 1
Welcome and Setting the Scene
48 min | 4 lessons
1. Welcome to the course - roadmap overview
06:12 (Preview)
2. Housekeeping - Python, prerequisites and tips for success
06:17 (Preview)
3. Plate theories and why Reissner-Mindlin? đź“‚
19:21
4. High-level primer - what are we trying to do? đź“‚
16:11
Section 2
The Mechanics of Plate Elements
1 h 49 min | 8 lessons
5. Section overview - The Mechanics of Plate Elements
01:52 (Preview)
6. The displacement and strain fields đź“‚
32:43
7. Relating stress and strain - the constitutive matrix D đź“‚
09:12
8. From stresses to stress resultants đź“‚
22:15
9. The role of shape functions đź“‚
10:30
10. The strain-displacement matrix, B đź“‚
10:07
11. The Jacobian’s role in calculating B 📂
06:39
12. Pause, recap and regroup đź“‚
16:15
Section 3
Virtual Work and Calculating the Element Stiffness Matrix
2 h 7 min | 8 lessons
13. Section overview - Virtual Work and Calculating the Element Stiffness Matrix
01:32 (Preview)
14. How Virtual Works leads to the element equations đź“‚
20:47
15. A primer on numerical integration đź“‚
11:42
16. Numerical integration applied to our element đź“‚
13:13
17. Setting up our stiffness matrix calculation đź“‚
18:01
18. Calculating an element stiffness matrix đź“‚
33:23
19. Calculating the shear and bending stiffness đź“‚
16:09
20. Calculating the equivalent nodal force vector đź“‚
12:43
Section 4
Expanding to a full plate element solver
3 h 58 min | 15 lessons
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
Section 5
Benchmarking against OpenSeesPy and Pynite
3 h 30 min | 14 lessons
36. Section overview - Benchmarking against OpenSeesPy and Pynite
01:57 (Preview)
37. Building an equivalent OpenSeesPy model đź“‚
35:40
38. Extracting OpenSeesPy displacements and reactions đź“‚
14:08
39. Extracting OpenSeesPy moments and shears đź“‚
11:45
40. Visualising OpenSeesPy moments đź“‚
10:58
41. Visualising OpenSeesPy shears đź“‚
12:12
42. Building an equivalent Pynite model đź“‚
22:15
43. Extracting displacements and reactions from Pynite đź“‚
12:53
44. Extracting moments and shears from Pynite đź“‚
16:58
45. Visualising Pynite moments and shears đź“‚
12:25
46. Qualitative comparison across models
13:03
47. Max-displacement parameter sweep across models đź“‚
26:38
48. The role of shear-locking đź“‚
14:48
49. Adapting for shear-locking and comparing again đź“‚
05:15
Section 6
Meshing with GMSH and Python
1 h 46 min | 7 lessons
50. Section overview - Meshing with GMSH and Python
01:49 (Preview)
51. Generating a QUAD mesh with GMSH đź“‚
28:13
52. Visualising the custom mesh đź“‚
12:19
53. Correcting the element node order đź“‚
14:43
54. Implementing mesh openings đź“‚
22:36
55. Implementing specific nodal positions đź“‚
15:20
56. Converting our code to a utility function đź“‚
11:32
Section 7
Custom mesh finite element analysis
57. Section overview - Custom mesh finite element analysis
Coming soon
58. OpenSeesPy custom mesh plate analysis
Coming soon
59. OpenSeesPy custom mesh deflection benchmark
Coming soon
60. Custom mesh Reissner-Mindlin plate analysis
Coming soon
61. Custom mesh analysis results - reactions
Coming soon
62. Custom mesh analysis results - deflected shape
Coming soon
63. What's going on with our deflection?
Coming soon
64. A plan for fixing our Reissner-Mindlin element
Coming soon
Section 8
Eliminating zero-energy displacements
65. Section overview - Eliminating zero-energy displacements
Coming soon
66. The substitute transverse shear strain matrix - part 1
Coming soon
67. The substitute transverse shear strain matrix - part 2
Coming soon
68. The natural shear interpolation matrix
Coming soon
69. Modifying shear stiffness for the assumed transverse shear strain field
Coming soon
70. Revisiting our Reissner-Mindlin custom mesh analysis
Coming soon
71. Wrapping up and what next?
Coming soon
Completion certificate
Completion certificate
  • Download your personalised Certificate of Completion once you’ve finished all course lectures.

  • Applying for jobs? Use your Certificate of Completion to show prospective employers what you’ve been doing to improve your capabilities.

  • Independently completing an online course is an achievement. Let people know about it by posting your Certificate of Completion on your Linkedin profile or workplace CPD portfolio.

Ready to get started?
getting-started
Dr Seán Carroll
BEng (Hons), MSc, PhD, CEng MIEI, FHEA
Hi, I’m Seán, the founder of EngineeringSkills.com (formerly DegreeTutors.com). I hope you found this tutorial helpful. After spending 10 years as a university lecturer in structural engineering, I started this site to help more people understand engineering and get as much enjoyment from studying it as I do. Feel free to get in touch, follow me on LinkedIn and subscribe to me on Youtube.

Do you have some knowledge or expertise you'd like to share with the EngineeringSkills community?
Check out our guest writer programme - we pay for every article we publish.
You might also be interested in...
Finite Element Analysis of Continuum Structures in Python
Finite Element Analysis of Continuum Structures in Python
Use the Isoparametric Finite Element Method to build an analysis tool for 2D structures in Python.

Frequently asked questions