A colleague in Eastchester once told me that faculty have three, maybe four, good ideas over their career. In other words, a faculty member could have over a hundred papers, but there’s only three or four underlying concepts. Perhaps it was “two, maybe three”, but you get the point.
Playing with integration points and weights, i.e., quadrature, in force-based frame finite elements is one of my good ideas. I’ve written a handful of papers on the subject, but there’s still a few loose ends. I don’t consider these loose ends to be LPUs because any article that tidies up a loose end would be 90% re-hash of previous work. A blog post is a much better outlet.
One such loose end is what happens to the computed response of a force-based frame element when one of the integration points has a negative integration weight. In a couple of those papers and in another post I did my best Mr. Mackey and wrote “negative integration weights are bad, m’kay”, but never showed why.
The reason why is encountering a negative integration weight is very unlikely if you don’t have any input errors. However, I’ve learned that anything is possible with nonlinear structural analysis in OpenSees, thanks to its numerous modeling choices and its free-range approach to error checking.
One way your model can have a negative integration weight is due to an input error when using plastic hinge integration. For example, your input script uses a Tcl or Python expression to compute a plastic hinge length, , in terms of concrete compressive strength, , but is defined as negative in order to appease the Concrete23 constructor.
The following example demonstrates the effect of a negative integration weight. The model is an inch tall column with bilinear moment-curvature response ( kip-inch2, kip-inch, ) at each integration point.
The element integration rule is endpoint plastic hinge integration with at the column base. This is not the best plastic hinge integration method, but it is a straightforward approach to show what happens when a plastic hinge length is negative.
The computed load-displacement response at the top of the column is shown below for the “input error” and the “intended” solution using .
Both solutions have the same initial response, then the negative integration weight takes effect after yield. The top of the column displaces in the opposite direction of the load because the large curvature at the base of the column is multiplied by a negative weight in the element state determination. As yielding spreads up the column and hits the first interior integration point with a large positive weight, the response heads back in the right direction.
If all you look at is the initial stiffness and final displacement, you may not realize there was a problem with the negative plastic hinge length.
There are other modeling approaches, summarized here, that can give negative integration weights even with correct inputs, i.e., positive plastic hinge lengths and a reasonable number of integration points:
- Modified Gauss-Radau plastic hinge integration where . The length of the elastic interior becomes negative, making the weights of the two interior integration points negative. This condition is pretty easy to achieve with correct inputs.
- Any other plastic hinge integration method where , for the same reason as the previous item. It would be difficult to satisfy this condition with correct inputs.
- LowOrder or FixedLocation integration where the prescribed integration point locations lead to negative integration weights in solving the Vandermonde equations.
- Newton-Cotes integration with an odd number of integration points, . For example, with , integration points 3, 5, and 7 have negative weight.
These approaches lead to varying degrees of strange results, but are generally harmless because the negative integration weights are not at the ends of the element. However, there could be unexpected results with member loads.
If you see strange results when using force-based frame elements, a negative weight could be the culprit, but it’s likely something else. Regardless, it’s a good idea to use the
sectionWeight command to check the integration weights.
Have you ever come across a negative integration weight when using force-based frame elements? Please share in the comments below.