Free-free axial rod — natural frequencies#

Companion to Axial rod — fundamental natural frequency (fixed-free) (fixed-free). A uniform rod with both ends free vibrates longitudinally with mode shapes \(u_n(x) = \cos(n \pi x / L)\) and natural frequencies

\[f_n = \frac{n}{2 L} \sqrt{\frac{E}{\rho}}, \qquad n = 0, 1, 2, 3, \ldots\]

The \(n = 0\) mode is rigid-body axial translation at zero frequency. The first elastic mode (\(n = 1\)) is at \(f_1 = \sqrt{E/\rho} / (2 L)\) — twice the fixed-free fundamental.

This is a useful sanity check for the eigen solver’s handling of near-zero / rigid-body modes: the solver should return one near-zero rigid-body mode followed by the elastic family.

Problem#

Parameter

Value

Rod length L

1.0 m

Cross-sectional area A

1 × 10⁻⁴ m² (cancels out of f)

Young’s modulus E

200 GPa

Density ρ

7 850 kg/m³

Expected f_1

√(E/ρ) / (2L) = 2 523.77 Hz

Expected f_2

2 f₁ = 5 047.54 Hz

femorph-solver result#

Ran by tests/validation/test_free_free_rod_nf.py using the LINK180 (TRUSS2) kernel on a chain of 2-node spar elements. Transverse DOFs (UY, UZ) pinned on every node so the truss-element zero transverse stiffness doesn’t admit arbitrary side-sway modes. Axial UX is fully unconstrained — the solver correctly returns a rigid-body translation mode at f ≈ 0 Hz followed by the elastic family.

Refinement

Elements

f_1 (Hz)

Error vs closed form

Coarse

20

2 526.37

+0.10 %

Medium

40

2 524.42

+0.03 %

Refined

80

2 523.93

+0.006 %

Linear-Lagrange truss elements integrate the wave equation with consistent mass and recover the elastic spectrum to near-machine-precision on dense meshes.

Cross-references#

Source

Reported f_1 (Hz)

Problem ID / location

Closed form (wave equation)

2 523.77

Rao 2017 §8.2 Table 8.1

Meirovitch (2010) §6.6

2 523.77

Free-free rod

femorph-solver (refined)

2 523.93

test_free_free_rod_nf.py

MAPDL Verification Manual

≈ 2 524

VM-47 (free-free torsion analogue)

Abaqus Verification Manual

≈ 2 524

AVM 1.6.x free-free-rod NF family

Source#

Problem class: femorph_solver.validation.problems.FreeFreeRodModes.

Backing regression test: tests/validation/test_free_free_rod_nf.py.