ACCESS THE COMPLETE LIBRARY OF COURSES & TUTORIALS 
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
54. Implementing mesh openings
Meshing with GMSH and Python
Please log in or enroll to access resources

Summary

In this lecture, we'll cover the following:

  • How to define and incorporate openings (holes) within a 2D mesh.
  • How to extend the existing meshing function to support single and multiple polygonal holes.
  • How to construct internal curve loops and integrate them with the outer boundary.
  • How Gmsh handles multiple loops to correctly mesh around openings.
  • How to extract and store node tags along hole boundaries for later use.
  • How to enhance visualisation to highlight nodes around openings.

We begin by modifying our existing mesh generation function to accept an optional input describing openings as polygons defined by their corner coordinates. We ensure the function can handle both single and multiple holes by checking the structure of the input and iterating accordingly. For each hole, we replicate the same workflow used for the outer boundary: creating points, joining them with lines, and forming a curve loop. These internal loops are then combined with the outer loop and passed to Gmsh, which automatically interprets them as voids and generates a mesh that respects the openings.

We then focus on extracting useful data from the generated mesh, specifically the node tags along the boundaries of each hole. By collecting nodes along each defining line and combining them with the original corner points, we build a complete set of boundary nodes for every opening. This information is stored for downstream tasks, such as applying boundary conditions. Finally, we make a small improvement to the plotting function to visually distinguish nodes along hole perimeters.

Next up

In the next lecture, we will add the ability to embed specific nodal positions — such as column locations — directly into the mesh.

Tags

mesh openingsgmsh geometrypolygonal holesnode taggingmesh visualisation

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
55. Implementing specific nodal positions