Inaccurate higher natural frequencies

Hi,

I’m new to modal analysis and currently having an issue with the natural frequencies of a Cantilever beam model.

The main example I followed is from the tutorial:

https://comet-fenics.readthedocs.io/en/latest/demo/modal_analysis_dynamics/cantilever_modal.py.html

I made a little change to the geometry (L,B,H=25,1,1) and the boundary condition imposition:

def left(x, on_boundary):
        return near(x[0],0.)

bc = DirichletBC(V, Constant((0.,0.,0.)), left)

ke = inner(sigma(v),eps(u))*dx   # stiffness form
me = rho*inner(u,v)*dx               # mass form
le = inner(as_vector([1,1,1]),v)*dx  # dummy form

K = PETScMatrix()
M = PETScMatrix()
b = PETScVector()

assemble_system(ke, le, bc, A_tensor=K, b_tensor=b)    # zero out bc dofs and put diagonals 1
assemble_system(me, le, bc, A_tensor=M, b_tensor=b)  # zero out bc dofs and put diagonals 1
bc.zero(M)    # zero out diagonal 1

However, with mesh refinement and order elevation, it seems finite element solution could not provide accurate natural frequencies up to 6 modes. The following results are by quadratic finite elements. Level means mesh refinements.


Thus, I am wondering if that is the case or I messed up something.

Thanks for all the help!

The “analytical” solution here is derived using Euler–Bernoulli theory, which only considers transverse deflection, while the numerical solution is to a full 3D elasticity problem. If you plot modes 6 and 9, you can see that they correspond to torsional and axial deformation modes, which are outside the scope of the Euler–Bernoulli theory, but present in full 3D elasticity.

2 Likes

Thanks, Dr.Kamensky!