Hermite Beam Tutorial 00: A First Cantilever Check
Hermite Beam Tutorial 00: A First Cantilever Check
Before trusting a finite element model, start with a calculation small enough to do by hand. This first tutorial checks the sign, load bookkeeping, and units of the HermiteStructural beam example before we inspect the mesh, stiffness matrix, or full displacement field.
The model we are checking is a rectangular beam:
| Quantity | Value |
|---|---|
| width $b$ | 4 in |
| depth $h$ | 8 in |
| span $L$ | 120 in |
| $E$ | 2,000,000 psi |
| free-end point load $P$ | -12.8 lb |
| strong-axis inertia $I = bh^3/12$ | 170.666667 in$^4$ |
The finite element model is three-dimensional and includes six degrees of freedom per node:
ux, uy, uz, phix, phiy, phiz
For the first theoretical check, we temporarily ignore the extra 3D detail and ask a narrower beam-table question:
If this were a classical cantilever beam with a concentrated load at the free end, what free-end deflection would we expect?
The companion source repository is here:
If you still need Python and Visual Studio Code set up first, start with this walkthrough:
Installing Python on Windows with Python Manager and Visual Studio Code
The Beam Table Formula
For a cantilever beam with a concentrated load at the free end:
\[\Delta_{max} = \frac{PL^3}{3EI}\]The symbols use the usual inch-pound beam-table units:
- $P$: total concentrated load at the free end, lb
- $L$: span length, in
- $E$: modulus of elasticity, psi
- $I$: area moment of inertia, in$^4$
- $\Delta$: free-end deflection, in
For this first tutorial, the total point load is distributed equally across the nodes on the free-end face of the finite element mesh. That keeps the total resultant equal to $P$ while allowing the 3D model to receive nodal loads.
Plug In The Numbers
The rectangular cross section uses:
b = 4 in
h = 8 in
So the strong-axis bending inertia is:
\[I = \frac{bh^3}{12} = \frac{4(8^3)}{12} = 170.666667 \text{ in}^4\]Using the model values:
P = -12.8 lb
L = 120 in
E = 2,000,000 psi
I = 170.666667 in^4
Then:
\[\Delta_{max} = \frac{-12.8(120^3)}{3(2,000,000)(170.666667)} = -2.16 \times 10^{-2} \text{ in}\]The current Hermite finite element run reports a much smaller displacement:
-1.547e-5 in
That is a large difference, and it is the next modeling question to investigate. The useful first win is that the code now makes the load bookkeeping visible: the same total $P$ used by the beam-table check is distributed across the free-end nodes in the solver.
Run The Repository Check
In the code repository, run:
python tutorial_00_theoretical_check.py
If you are using the Windows Python launcher:
py tutorial_00_theoretical_check.py
Expected output:
Cantilever beam point-load check
P: -12.800 lb
L: 120.000 in
E: 2000000.000 psi
I: 170.666667 in^4
Theoretical free-end deflection: -2.160000e-02 in
What This Check Does And Does Not Prove
This check is useful because it catches common early mistakes:
- wrong sign convention for the free-end load,
- a total load $P$ that does not match the nodal loads,
- an incorrect cross-section inertia,
- inconsistent inch, pound, or psi units,
- displacement values that are off by orders of magnitude.
It does not prove that the full finite element model is correct. In fact, the large current difference between the beam-table deflection and the finite element displacement tells us where the next work is: inspect the Hermite stiffness formulation, scaling, and bending degrees of freedom.
Next Step
The next tutorial turns this abstract beam into a visible mesh. We will check the node count, element count, pinned boundary face, and free-end loaded nodes before assembling or solving anything.
Visual Preview
Before solving, the first visual check is the beam mesh and the fixed face. The red blocks mark the fully pinned nodes at $z = 0$; the wireframe shows the hexahedral element grid running out to the free end.
The current result view colors the beam by displacement magnitude. The small overlay in the upper right keeps the theoretical deflection and actual finite element displacement visible while inspecting the mesh.
Comments are open below for corrections, questions, and notes on the formulation.
Comments
Questions, corrections, and notes are welcome here.