There’s very little reason to use the
elasticBeamColumn element in OpenSees. Using nonlinear elements, particularly the
forceBeamColumn element, with elastic sections is just as good, if not better for many reasons. Not only do force-based elements with elastic sections make the transition to material nonlinearity easy, they also facilitate debugging your model.
Another reason I like force-based elements is you can record the section response at the integration points. But, how many integration points are required to get the correct linear-elastic solution? I will focus on Gauss-Lobatto integration, but there are many other options.
For linear-elastic, prismatic frame elements without member loads, you have to integrate the quadratic polynomials that arise from the produce of linear curvature with linear weighting functions. Gauss-Lobatto quadrature integrates simple polynomials up to order . Therefore, to integrate , you need , or . (I know, the algebraic solution is , but you can’t have half an integration point).
Consider the indeterminate beam shown below with L=20 ft, E=29,000 ksi and I=800 in4. The applied moment is M=400 kip-ft.
The exact bending moment distribution is linear and the end rotation is . Using one force-based element with three Gauss-Lobatto points, we get the following bending moment and end rotation, 0.01241379 from
ops.nodeDisp(2,3), which matches the exact solution.
With force-based elements, you can include member loads in the element equilibrium relationship. For the common case of a uniform distributed load, the curvature distribution will be quadratic while the weighting function is linear, so you need to integrate . Fortunately, three Gauss-Lobatto points still get the job done.
Now consider the same beam but with a uniform distributed load w=1 kip/ft.
The exact bending moment distribution is quadratic and the end rotation is . Using three Gauss-Lobatto points in a single force-based element, we obtain the following distribution of internal moment. The computed end rotation, 0.00103448, matches the exact solution.
For both examples shown in this post, you can use more Gauss-Lobatto points and get the same, exact, results.
Note that if your member loads are linearly varying, e.g. hydrostatic pressure on a vertical member, you will need to add another integration point to get the elastic solution.
Also, member loads that cause discontinuities along an element, e.g., point loads or partial distributed loads, will give an integration error no matter how many integration points you use in a linear-elastic, prismatic element. You will also always get an error for non-prismatic elements no matter what integration you throw at it.