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
53. Correcting the element node order
Meshing with GMSH and Python
Please log in or enroll to access resources

Summary

In this lecture, we'll cover the following:

  • Why consistent node ordering is required for finite element analysis.
  • Issues arising from direct mesh generation and how subdivision improves mesh quality.
  • Strategy for enforcing counterclockwise node ordering.
  • Identifying the top-right node using geometric reasoning and tolerances.
  • Implementing an automated node reordering function.

In this lecture, we focus on ensuring that the nodes defining each element are ordered in a way that is compatible with our finite element code, specifically counterclockwise starting from the upper right node. We begin by revisiting the meshing process and highlighting how directly targeting a fine mesh size can introduce irregular regions. To address this, we instead generate a coarser mesh and subdivide it, which produces a more uniform mesh.

We then develop a function to systematically reorder element nodes. We compute each element’s centroid, determine the angle to each node, and sort these angles to guarantee a counterclockwise arrangement. From there, we identify the upper right node by considering both the maximum y-coordinate and a tolerance to handle floating-point inconsistencies, followed by a tie-break using the x-coordinate. Finally, we rotate the node ordering so that this upper right node appears first. This ensures that all elements conform to the expected format and can be reliably used within the finite element solver.

Next up

Next, we will extend the meshing capabilities by implementing openings (holes) within the mesh.

Tags

node orderingquadrilateral elementsmesh subdivisionnumerical tolerance

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
54. Implementing mesh openings