C0 Timoshenko Beam Element

A beam element Figure 1 is used to model the response of a structural element that is long in one dimension compared to its cross-section. There are two popular formulation of beam elements:

Figure 1: Beam element with 2 nodes and 3 translational and 3 rotational degrees of freedom at each node.

  1. Euler-Bernoulli beam element: used to model bending deformation in long and slender beams. The two main assumptions in this beam theory are that: (i) the beam cross-section is rigid and does not deform under the application of transverse or lateral loads, and (ii) the cross-section of the beam remains planar and normal to the deformed axis of the beam.

  2. Timoshenko beam element (Timoshenko, 1921; Timoshenko, 1922): used to model both shear and bending deformation in short and thick beams. The beam cross-section does not deform in this beam theory as well and it remains planar. But the cross-section need not be normal to the deformed axis of the beam. The Euler-Bernoulli beam element can be derived as a special case of the Timoshenko beam element.

Therefore, a C0 Timoshenko beam element is implemented in MOOSE. This element has two nodes and each node has 6 degrees of freedom (DOFs) - 3 translational and 3 rotational displacements. All the 12 DOFs are considered to be independent and the variation of both translational and rotational displacements along the length of the beam are modeled using first order Lagrange shape functions. The independent rotational DOFs at the nodes makes it easier to model the shear deformation which results in non-perpendicular cross-sections with respect to the beam axis.

The basic equation of motion for a quasi-static beam is the same as that of a continuum brick element: σ=Fext\nabla \cdot \sigma = F_{ext}

An updated Lagrangian formulation similar to the one in Bathe and Bolourchi (1979) is used in the calculation of beam stresses and strains.

Strain Calculation

The first step to calculating stresses is to calculate the strains in the beam element. There are four main coordinate systems to consider - global coordinate system, original beam local coordinate system and beam local coordinate system at time tt and t+Δtt + \Delta t. In the updated Lagrangian formulation, starting from the configuration at time tt, the strain increment (which is a measure of the deformation of the beam) and rotation increment (which is a measure of the rigid rotation of the beam) are calculated to arrive at the state of the beam at t+Δtt + \Delta t.

Rotation increment

Let 0R^0R be the rotation matrix from the global coordinate system to the original beam local coordinate system. This is calculated using the unit vector along the axis of the beam (assumed to be the beam local x axis), the user-provided y_orientation that is orthonormal to the beam axis, and the cross product of the beam-axis and y_orientation. If the beam undergoes small deformation/rotation, the rotation matrix is not incrementally updated and the rotation matrix at t+Δtt+\Delta t (t+ΔtR^{t+\Delta t}R) is assumed to be same as 0R^0R.

If the beam undergoes finite deformation, a rotation increment (ΔR\Delta R) that transforms the beam from beam local configuration at tt to the beam local configuration at t+Δtt + \Delta t is calculated at each time step. This calculation is performed using Euler angles as described below.

Let t+Δtu1i^{t+\Delta t} {u_1}^i, t+Δtu2i^{t+\Delta t} {u_2}^i and t+Δtu3i^{t+\Delta t} {u_3}^i denote the translational displacements at node ii at t+Δtt+\Delta t. These displacements are the difference between the nodal positions at time t+Δtt+\Delta t and tt and are in the global coordinate system. Here 1, 2 and 3 refers to the x, y and z coordinate, respectively. Similarly, let t+Δtθ1i^{t+\Delta t} {\theta_1}^i, t+Δtθ2i^{t+\Delta t} {\theta_2}^i and t+Δtθ3i^{t+\Delta t} {\theta_3}^i denote the rotational displacements at node ii at t+Δtt+\Delta t in the global coordinate system. Let t+Δt{Δu}=t+Δt{Δu}1t+Δt{Δu}0^{t+\Delta t} \{ {\Delta u} \} = ^{t+\Delta t} {\{\Delta u\}}^1 - ^{t+\Delta t} {\{\Delta u\}}^0 and t+Δt{Δθ}=t+Δt{Δθ}1t+Δt{Δθ}0^{t+\Delta t} \{ {\Delta \theta} \} = ^{t+\Delta t} {\{\Delta \theta\}}^1 - ^{t+\Delta t} {\{\Delta \theta\}}^0 be the differential displacements along the length of the beam.

These global displacements are converted to the beam local configuration at tt using the rotation matrix tR^tR as follows: t+Δt{Δu}local=tR    t+Δt{Δu}^{t+\Delta t} {\{ {\Delta u} \}}^{local} = {}^tR \;\; ^{t+\Delta t} \{ {\Delta u} \}

t+Δt{Δθ}local=tR    t+Δt{Δθ}^{t+\Delta t} {\{ {\Delta \theta} \}}^{local} = {}^tR \;\; ^{t+\Delta t} \{ {\Delta \theta} \}

These beam local displacements are then used in the calculation of the Euler angles α\alpha, β\beta and γ\gamma as in Bathe and Bolourchi (1979). These Euler angles are used to calculate the rotation increment ΔR\Delta R. Using ΔR\Delta R, the rotation matrix at t+Δtt+\Delta t can be calculated as: t+ΔtR=ΔR  tR{}^{t+\Delta t}R = \Delta R \; {}^tR

The rotation matrix is incrementally updated if ComputeFiniteBeamStrain is used. If ComputeIncrementalBeamStrain is used, the rotation matrix is same as the initially computed rotation matrix (0R^0R).

Strain increment

To calculate the beam strain increment, the incremental beam displacements at time t+Δtt+\Delta t in the local configuration at t+Δtt+\Delta t are obtained using t+ΔtR{}^{t+\Delta t} R to transform the displacements from global to local configuration at t+Δtt+\Delta t. For simplifying notation, let uji{u_{j}}^i and θji{\theta_{j}}^i be the translational and rotational displacements at node ii at t+Δtt+\Delta t in the beam local configuration at t+Δtt+\Delta t. Interpolating the nodal DOFs along the axis of the beam using first order Lagrange shape functions gives uj(x)=uj0x0L+uj10Lx0Lu_{j}(x) = u_{j}^0 \frac{x}{{}^0L} + u_{j}^1 \frac{{}^0L-x}{{}^0L} and θj(x)=θj0x0L+θj10Lx0L\theta_{j}(x) = \theta_{j}^0 \frac{x}{{}^0L} + \theta_{j}^1 \frac{{}^0L-x}{{}^0L}. However, uj(x)u_j(x) only gives the translational displacement of the beam axis. The translational displacement at any point on the beam is obtained as follows: u1(x,y,z)=u1(x)θ3(x)y+θ2(x)z{u_1}(x,y,z) = u_1(x) - \theta_3(x) y + \theta_2(x) z u2(x,y,z)=u2(x)θ1(x)z{u_2}(x,y,z) = u_2(x) - \theta_1(x) z u3(x,y,z)=u3(x)+θ1(x)y{u_3}(x,y,z) = u_3(x) + \theta_1(x) y

The axial strain (ϵ11\epsilon_{11}) and the shear strains (ϵ12\epsilon_{12} and ϵ13\epsilon_{13}) are then obtained as follows: ϵ11(x,y,z)=u1(x,y,z)x=u1(x)xθ3(x)xy+θ2(x)xz\epsilon_{11}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial x} = \frac{\partial u_1(x)}{\partial x} - \frac{\partial \theta_3(x)}{\partial x} y + \frac{\partial \theta_2(x)}{\partial x} z

ϵ12(x,y,z)=u1(x,y,z)y+u2(x,y,z)x=θ3+u2(x)xθ1(x)xz\epsilon_{12}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial y} + \frac{\partial u_2(x,y,z)}{\partial x} = -\theta_3 + \frac{\partial u_2(x)}{\partial x} - \frac{\partial \theta_1(x)}{\partial x} z

ϵ13(x,y,z)=u1(x,y,z)z+u3(x,y,z)x=θ2+u3(x)x+θ1(x)xy\epsilon_{13}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial z} + \frac{\partial u_3(x,y,z)}{\partial x} = \theta_2 + \frac{\partial u_3(x)}{\partial x} + \frac{\partial \theta_1(x)}{\partial x} y

It should be noted here that using a linear interpolation of the rotational variables in the calculation of shear strain leads to shear locking of the beam. Using θ1(x)=(θ10+θ11)/2\theta_1(x) = ({\theta_1}^0 + {\theta_1}^1)/2 in the calculation of ϵ12\epsilon_{12} and ϵ13\epsilon_{13} ensures that the beam doesn't lock under shear deformation (Prathap and Bhashyam, 1982).

The above translational strain increments are functions of x, y and z. However, since the beam cross-section does not deform, these strains can be integrated over the cross-section to obtain strain increments as a function of only x. ϵ1(x)=Aϵ11(x,y,z)dA=u1(x)xAθ3(x)xAy+θ2(x)xAz\epsilon_{1}(x) = \int_A \epsilon_{11}(x,y,z) dA= \frac{\partial u_1(x)}{\partial x} A - \frac{\partial \theta_3(x)}{\partial x} A_y + \frac{\partial \theta_2(x)}{\partial x} A_z

ϵ2(x)=Aϵ12(x,y,z)dA=θ3A+u2(x)xAθ1(x)xAz\epsilon_{2}(x) = \int_A \epsilon_{12}(x,y,z) dA= -\theta_3 A + \frac{\partial u_2(x)}{\partial x} A - \frac{\partial \theta_1(x)}{\partial x} A_z

ϵ3(x)=Aϵ13(x,y,z)dA=θ2A+u3(x)xA+θ1(x)xAy\epsilon_{3}(x) = \int_A \epsilon_{13}(x,y,z) dA= \theta_2 A + \frac{\partial u_3(x)}{\partial x} A + \frac{\partial \theta_1(x)}{\partial x} A_y

where AA is the cross-sectional area, Ay=AydAA_y = \int_A y dA and Az=AzdAA_z = \int_A z dA. ϵ1(x)\epsilon_{1}(x), ϵ2(x)\epsilon_{2}(x) and ϵ3(x)\epsilon_{3}(x) are the axial and shear increments.

Apart from the translational strain increments, rotational strain increments also need to be calculated. κ1(x)=A(ϵ13(x,y,z)yϵ12(x,y,z)z)dA=θ2Ay+u3(x)xAy+θ1(x)xIx+θ3Azu2(x)xAz\kappa_1(x) = \int_A (\epsilon_{13}(x,y,z) y - \epsilon_{12}(x,y,z) z) dA = \theta_2 A_y + \frac{\partial u_3(x)}{\partial x} A_y + \frac{\partial \theta_1(x)}{\partial x} I_x + \theta_3 A_z - \frac{\partial u_2(x)}{\partial x} A_z

κ2(x)=Aϵ11(x,y,z)zdA=u1(x)xAzθ3(x)xIyz+θ2(x)xIz\kappa_2(x) = \int_A \epsilon_{11}(x,y,z) z dA = \frac{\partial u_1(x)}{\partial x} A_z - \frac{\partial \theta_3(x)}{\partial x} Iyz + \frac{\partial \theta_2(x)}{\partial x} I_z

κ3(x)=Aϵ11(x,y,z)ydA=u1(x)xAy+θ3(x)xIyθ2(x)xIyz\kappa_3(x) = -\int_A \epsilon_{11}(x,y,z) y dA = -\frac{\partial u_1(x)}{\partial x} A_y + \frac{\partial \theta_3(x)}{\partial x} I_y - \frac{\partial \theta_2(x)}{\partial x} Iyz

where Iy=Ay2dAI_y = \int_A y^2 dA, Iz=Az2dAI_z = \int_A z^2 dA, Ix=A(y2+z2)dAI_x = \int_A (y^2 + z^2) dA and Iyz=AyzdAIyz = \int_A yz dA. Note that IyzIyz is assumed to be zero for simplicity and this assumption is valid for symmetric cross-sections such as square, rectangular and circular. IxI_x is automatically calculated from IyI_y and IzI_z unless IxI_x is provided as input by the user.

The above strain increments are calculated using the small strain assumption. If the large_strain option in ComputeIncrementalBeamStrain or ComputeFiniteBeamStrain is set to true, then the strains are calculated using the equations below:

ϵ11(x,y,z)=u1(x,y,z)x+12[(u1(x,y,z)x)2+(u2(x,y,z)x)2+(u3(x,y,z)x)2]\epsilon_{11}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial x} + \frac{1}{2} {\left[ {\left( \frac{\partial u_1(x,y,z)}{\partial x}\right)}^2 + {\left( \frac{\partial u_2(x,y,z)}{\partial x} \right)}^2 + {\left( \frac{\partial u_3(x,y,z)}{\partial x} \right)}^2 \right]}

ϵ12(x,y,z)=u1(x,y,z)y+u2(x,y,z)x+u1(x,y,z)xu1(x,y,z)y+u3(x,y,z)xu3(x,y,z)y\epsilon_{12}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial y} + \frac{\partial u_2(x,y,z)}{\partial x} + \frac{\partial u_1(x,y,z)}{\partial x} \frac{\partial u_1(x,y,z)}{\partial y} + \frac{\partial u_3(x,y,z)}{\partial x} \frac{\partial u_3(x,y,z)}{\partial y}

ϵ13(x,y,z)=u1(x,y,z)z+u3(x,y,z)x+u1(x,y,z)xu1(x,y,z)z+u2(x,y,z)xu2(x,y,z)z\epsilon_{13}(x,y,z) = \frac{\partial u_1(x,y,z)}{\partial z} + \frac{\partial u_3(x,y,z)}{\partial x} + \frac{\partial u_1(x,y,z)}{\partial x} \frac{\partial u_1(x,y,z)}{\partial z} + \frac{\partial u_2(x,y,z)}{\partial x} \frac{\partial u_2(x,y,z)}{\partial z}

Note that for the large_strain calculation, AyA_y, AzA_z and JJ are assumed to be zero for simplicity. This is again valid for symmetric cross-sections such as square, rectangular and circular cross-sections.

If displacement or rotational eigenstrains are provided as input, those eigenstrain increments would be subtracted from the total displacement and rotational strain increments to get the mechanical displacement and rotational strain increments.

Stress calculation

The axial and shear strain increments, and the rotational strain increments (after removal of eigenstrains) are passed to ComputeBeamResultants to calculate the force (ΔF\Delta F) and moment (ΔM\Delta M) increments using the linear elastic constitutive relations defined in ComputeElasticityBeam as follows: ΔF1(x)=E  ϵ1(x)\Delta F_1(x) = E \; \epsilon_{1}(x) ΔF2(x)=kG  ϵ2(x)\Delta F_2(x) = kG \; \epsilon_{2}(x) ΔF3(x)=kG  ϵ3(x)\Delta F_3(x) = kG \; \epsilon_{3}(x) ΔM1(x)=kG  κ1(x)\Delta M_1(x) = kG \; \kappa_1(x) ΔM2(x)=E  κ2(x)\Delta M_2(x) = E \; \kappa_2(x) ΔM3(x)=E  κ3(x)\Delta M_3(x) = E \; \kappa_3(x) where EE and GG are the Young's and shear modulus, respectively. kk is the shear correction factor that depends on the shape of the cross-section.

Since the strain increments are in the beam local configuration at t+Δtt+\Delta t, the calculated force and moment increments are also in the same configuration. To get the total force and moment at t+Δtt + \Delta t, the force and moment increments are first transformed to the global coordinate system using t+ΔtR{}^{t+\Delta t}R and then added to the forces and moments from tt that are already in the global coordinate system.

The strain energy is calculated as: δV=Ω(σ11(x,y,z)δϵ11(x,y,z)+σ12(x,y,z)δϵ12(x,y,z)+σ13(x,y,z)δϵ13(x,y,z))δΩ\delta V = \int_\Omega (\sigma_{11}(x,y,z) \delta \epsilon_{11}(x,y,z) + \sigma_{12}(x,y,z) \delta \epsilon_{12}(x,y,z) + \sigma_{13}(x,y,z) \delta \epsilon_{13}(x,y,z)) \delta \Omega =00LF1(x)δϵ1(x)+F2(x)δϵ2(x)+F3(x)δϵ3(x)+M1(x)δκ1(x)+M2(x)δκ2(x)+M3(x)δκ3(x)= \int_{0}^{{}^0L} F_1(x) \delta \epsilon_{1}(x) + F_2(x) \delta \epsilon_{2}(x) + F_3(x) \delta \epsilon_{3}(x) + M_1(x) \delta \kappa_1(x) + M_2(x) \delta \kappa_2(x) + M_3(x) \delta \kappa_3(x)

As can be seen from the equation for ϵ1(x)\epsilon_{1}(x), it depends only on u1x\frac{\partial u_1}{\partial x} if AyA_y and AzA_z are zero. But ϵ2(x)\epsilon_{2}(x) depends on both u1x\frac{\partial u_1}{\partial x} and θ3\theta_3. Therefore, F2(x)δϵ2(x)F_2(x) \delta \epsilon_{2}(x) would contribute to the residual of both the translational DOF in y direction and rotational DOF in the z direction. Similarly, F3(x)δϵ3(x)F_3(x) \delta \epsilon_{3}(x) would contribute to the residual of both the translational DOF in z direction and rotational DOF in the y direction. This accounts for the coupling between the shear and bending behavior of the beam. The stress-divergence calculation is performed in StressDivergenceBeam.

Dynamic beam

There are two main ways to include the inertial effects for the beam. The first method is to assign a uniform density to the beam and calculate a consistent mass/inertia matrix for the beam, and the second method assumes that the mass of the beam is concentrated at the ends of the beam, and represents the mass of the beam using point mass/inertia at the nodes at the end of the beam.

Consistent mass matrix

If AyA_y, AzA_z and IyzIyz are zero in InertialForceBeam, then there is no coupling between the rotational and translational DOFs. The residual for the jthj^{th} translational degree of freedom at node ii can be obtained as follows:

Rj0=00LρA(x0Lu¨j0+0Lx0Lu¨j1)x0LdxR_j^0 = \int_{0}^{{}^0L} \rho A \left(\frac{x}{{}^0L} {\ddot{u}_j}^0 + \frac{{}^0L - x}{{}^0L} {\ddot{u}_j}^1 \right) \frac{x}{{}^0L} dx Rj1=00LρA(x0Lu¨j0+0Lx0Lu¨j1)0Lx0LdxR_j^1 = \int_{0}^{{}^0L} \rho A \left(\frac{x}{{}^0L} {\ddot{u}_j}^0 + \frac{{}^0L - x}{{}^0L} {\ddot{u}_j}^1 \right) \frac{{}^0L - x}{{}^0L} dx where ρ\rho is the density of the beam, which is assumed to be constant through the length of the beam, and u¨ji{\ddot{u}_j}^i is the translational acceleration at node ii in jthj^{th} direction.

The residual for the jthj^{th} rotational degree of freedom can be obtained as follows: Rj0=00LρI(x0Lθ¨j0+0Lx0Lθ¨j1)x0LdxR_j^0 = \int_{0}^{{}^0L} \rho I \left(\frac{x}{{}^0L} {\ddot{\theta}_j}^0 + \frac{{}^0L - x}{{}^0L} {\ddot{\theta}_j}^1 \right) \frac{x}{{}^0L} dx Rj1=00LρI(x0Lθ¨j0+0Lx0Lθ¨j1)0Lx0LdxR_j^1 = \int_{0}^{{}^0L} \rho I \left(\frac{x}{{}^0L} {\ddot{\theta}_j}^0 + \frac{{}^0L - x}{{}^0L} {\ddot{\theta}_j}^1 \right) \frac{{}^0L - x}{{}^0L} dx where I=Iy+IzI = I_y + I_z or user provided IxI_x for j=1j = 1, I=IzI = I_z for j=2j = 2 and I=IyI = I_y for j=3j = 3.

If AyA_y and AzA_z are non-zero, then there is coupling between u1u_1, θ2\theta_2 and θ3\theta_3, u2u_2 and θ1\theta_1, and u3u_3 and θ1\theta_1.

Point mass/inertia

NodalTranslationalInertia and NodalRotationalInertia are used to apply mass/inertia at a node. The mass and inertia terms contribute only to the residual of the node at which it is applied. Mass (m) behaves isotropically in all three coordinate directions resulting in the following jthj^{th} translational nodal residual: Rj=mu¨jR_j = m \ddot{u}_j

NodalRotationalInertia takes 6 rotational inertia components as input (IxxI_{xx}, IyyI_{yy}, IzzI_{zz}, IxyI_{xy}, IxzI_{xz}, IyzI_{yz}). If the coordinate system in which the moment of inertia components are provided is different from the global coordinate system, then x_orientation and y_orientation need to be provided as input so that a transformation matrix from the local coordinate system to the global coordinate system can be calculated.

Once the moment of inertia tensor in the global coordinate system is obtained, the residual for the rotational DOF in the jthj^{th} direction is: Rj=i=13Iji  θ¨iR_j = \sum_{i=1}^3 I_{ji} \; \ddot{\theta}_i

Time-integration and damping

Rayleigh damping and Newmark and HHT time integration are calculated as in Damping but with StressDivergenceBeam and InertialForceBeam while using consistent mass/inertia matrix, and StressDivergenceBeam, NodalTranslationalInertia and NodalRotationalInertia while using point mass/inertia matrix.

References

  1. K. J. Bathe and S. Bolourchi. Large displacement analysis of three-dimensional beam structures. International Journal for Numerical Methods in Engineering, 14:961–986, 1979.[BibTeX]
  2. G. Prathap and G. R. Bhashyam. Reduced integration and the shear-flexible beam element. International Journal for Numerical Methods in Engineering, 18:195–210, 1982.[BibTeX]
  3. S. P. Timoshenko. On the correction factor for shear of the differential equation for transverse vibrations of bars of uniform cross-section. Philosophical Magazine, pages 744, 1921.[BibTeX]
  4. S. P. Timoshenko. On the transverse vibrations of bars of uniform cross-section. Philosophical Magazine, pages 125, 1922.[BibTeX]