1D Euler/Timoshenko Beam Implementation (Steady/Dynamic)

Dear Community,

I am seeking assistance with implementing a 1D beam model in Fenics for both static and dynamic analysis. The Euler beam formulation is straightforward and given by the equation:

The Euler beam is pretty straightforward as given by Equation 1

In my case, the bending stiffness EI is constant within an element but varies across the entire domain, and the forces will be applied at the nodes. By performing integration by parts twice (IBP), I can obtain the bilinear and linear formulations in Equation 2

For the dynamic analysis, the equation becomes to equation 3, and stiffness and mass matrix can be identified easily.

image

I have found an implementation of these matrices in an extended version of FEniCS, which can be accessed here

However, directly implementing the Laplacian in FEniCS itself is not possible. Alternatively, there is a Timoshenko beam stiffness implementation demonstrated here, but I didn’t fully grasp its derivation.

I have attempted various approaches, but it seems that I need to reduce the equation to two coupled second-order ordinary differential equations (ODEs), and I haven’t been successful in achieving this.

I would greatly appreciate any help or suggestions regarding this matter.

PS: I will have a moment at the tip and probably in the nodes as well any advice on how to embed those into the equation would be also great

Addition: Per node, I would like to have 2 DOF displacement and rotation(derivative of displacement)

Best regards,
Kursat

1 Like

Did you find it? I needed to solve a similar problem

This post is probably what you are looking for. I’ve only implemented a static demo problem there, but you can probably figure out how to extend that to the dynamic case.

Mathematically, Hemetian elements are needed to handle the C^1 continuity that Euler-Bernoulli beams require. The library tIGAr you reference utilizes isogeometric analysis (IGA) which uses spline basis functions that have an higher order continuity. This is a classic case of what may be simple in the analytical regime can turn out to be more complicated in the numerical regime.

@kursatyurt : As far as your follow up question on adding point moments and forces, this is not too difficult as long as they are applied to the nodes. In the (near?) future, Pointsource() will be reimplemented in dolfinx, but at the moment you can:

  1. assemble the system
  2. locate the DOFs (either using locate_dofs_geometrical() or locate_dofs_topological() )
  3. directly modify the assembled RHS vector.
1 Like

Further to C^1 methods, you could also consider the C^0-IPG demo: https://github.com/FEniCS/dolfinx/blob/main/python/demo/demo_biharmonic.py