📢 FINITE ELEMENT ANALYSIS OF PLATES - NEW GMSH LECTURES ADDED
1. Welcome to the course - roadmap overview
Welcome and Setting the Scene
📂 Please log in or enroll to access resources

Welcome to the course! In this first lecture, I want to:

  • Briefly set out our objectives in the course,
  • Set your expectations for what you will achieve by completing the course,
  • Give you a sense of the roadmap ahead.

We’re going to cover a lot in this course, not just in terms of the core theory, but I also want you to have developed a range of practical skills by the time you complete the course.

In broad terms, this course will walk you through how to build your own custom finite element code for the analysis of plate structures. Building your own solver allows you to take the theory that we cover and prove to yourself that you understand it. When we validate our solver output, we also prove that all of the theory on which it was built is sound and fully understood.

3 levels of depth

You can think of this course as having three levels of depth, and depending on your starting point, you can choose which degree of depth you want to work at.

3 levels of depth | EngineeringSkills.com

Fig 1. The three levels of depth that the course can be completed at.

Level 3 - I want the full picture

If you want to fully understand everything from the core mechanics to how to implement this in Python and also how to validate that code against open-source tools, that would be the deepest level of understanding, let’s call that level 3. This will require you to work through all sections of the course. Obviously, this is what I would recommend if you have the time.

Level 2 - Let’s just get building

If you’re not too fussed about the underlying theory or in other words, if you’re already familiar with it and just want to learn how to implement it in Python and validate it using open-source libraries, then that’s level 2. I’ve structured the course so that you can skip certain theory-heavy sections and still achieve your desired outcome.

Level 1 - Just show me the open source tools

Finally, if you’re only interested in how we can build analysis workflows using open-source libraries such as GMSH, OpenSeesPy and Pynite, that corresponds to level 1. This can be achieved by completing even fewer sections of the course.

I’ll outline below which sections are required for each desired outcome. So, let’s take a closer look at each section in turn.

Course overview

One thing to note is that this course focuses exclusively on the behaviour of plates - 2D structures that resist out-of-plane loading. We’ll be expanding to cover shell elements that resist in-plane and out-of-plane loading in the course that follows this one. You can think of this course as a pre-requisite to the shells course.

Now take a closer look at each course section in turn.

Course overview | EngineeringSkills.com

Fig 2. The course consists of 8 sections. The colours correspond to the levels of depth described above.

Section 1: Welcome and Setting the Scene

In this first section, we’re just establishing the overall aim of the course and covering some housekeeping issues like how to get help, how we think about prerequisite knowledge and giving a high-level introduction to Reissner-Mindlin theory and why it’s at the heart of the course. This is recommended for everyone taking the course.

Section 2: The Mechanics of Plate Elements

We get into the core mechanics in section 2. In this section, we work through Reissner-Mindlin plate elements and build up the core equations required to establish the element stiffness matrix - the fundamental building block of our solver. This section is recommended for those who want the full picture (level 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. After that, we briefly review the Gauss quadrature numerical integration technique we’ll use to calculate the element stiffness matrix and equivalent force vector. We’ll also work through how this calculation is implemented in Python.

Lectures 14 to 16 (virtual work & Gauss quadrature) are useful for a level 3 understanding. The rest of the section is required for a level 2 (build your own solver) approach. This section is not critical for level 1.

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. If you’re pursuing levels 3 or 2, you’ll want to focus on this section. Level 1 folks can gloss over this section.

Section 5: Benchmarking against OpenSeesPy and Pynite

In section 5, we validate the output from our custom solver 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 really interesting phenomenon known as shear-locking, which we’ll need to tackle early on. Section 5 is the first mandatory section for a level-1-focused (open-source tools) approach.

Section 6: Meshing with GMSH and Python

So far, all of our plate analysis has been on rectangular plates that consist of rectangular elements. In reality, we’ll need to be able to analyse plates of all shapes and sizes. To do this, we’ll need a way of generating finite element meshes. This can be quite a complex pre-process step. To help us out here, we’ll introduce GMSH in section 6.

This is another incredibly powerful and versatile open-source library that will do a lot of the heavy lifting for us. Our aim in this section is to build the pre-processing meshing step into the analysis pipelines for both our custom FE solver and our validation workflows that use OpenSeesPy and Pynite. Again, section 6 should be completed by anyone interested in open-source tools, so level 1 (and levels 2 and 3 obviously).

Section 7: Custom mesh finite element analysis

Now that we have the ability to generate well-structured quad meshes with the click of a button, we’ll spend some time integrating this meshing step into our analysis pipeline in section 7. This is the first time we’ll have run a non-trivial, non-symmetrical mesh through our FE code and it’s going to throw up another big issue for us to deal with - zero-energy modes. This is a problem we actually introduced with our earlier attempts to deal with shear-locking. Section 7 will be of interest to everyone taking the course.

Section 8: Eliminating zero-energy displacements

In section 8, we address the problem we surfaced in the previous section by implementing a well-established technique based on assumed transverse shear fields - this will make a lot more sense by the time we've reached this point in the course. By the end of section 8, we’ll have a versatile finite element code that is back in good agreement with our benchmark OpenSeesPy model, even for more realistic and complex finite element meshes. Section 8 will be particularly helpful for level 3 and 2.

At this point, you’ll have an excellent grasp of how to handle the analysis of plate structures and will have two parallel analysis pipelines, one that uses your own custom solver backed by a clear understanding of the theory and a second pipeline that uses some of the best open-source libraries available today. In addition, you’ll also have various strategies for turning basic geometry into finite element-ready meshes that can be processed in either pipeline.

So, now that you have a good idea of the roadmap ahead, and the capabilities you’ll develop during the course, in the next lecture, I’ll take a few minutes to address some of the questions you might still have around course prerequisites and the level of Python required to complete the course.

Next Lesson
2. Housekeeping - Python, prerequisites and tips for success