Meshing for Column Loads

For material nonlinear analysis of frame models, you can improve the computed response by using more displacement-based elements or more integration points in a force-based element. The material nonlinearity occurs inside the basic system, also known as the natural system or the kernel.

To capture geometric nonlinearity due to large displacements, you have to go outside the basic system with the P-\Delta or corotational transformation between the basic and global systems.

But capturing geometric nonlinearity inside the basic system, i.e., P-\delta effects, is more complicated. You need to use a different element formulation, e.g., nonlinear strain in the displacement-based formulation or curvature-based displacement interpolation (CBDI) in the force-based formulation.

Fortunately, the large displacement transformation outside the basic system is independent of what’s going on inside the basic system. So, instead of using a more complex element formulation, you can use a small strain formulation for each element in a corotational mesh and get P-\delta effects “for free”.

Let’s demonstrate the idea with a 15 ft long W10x54 column buckling about its weak axis. The section area is A=15.8 \mbox{ in}^2 and the second moment of section area about the weak axis is I=103 \mbox{ in}^4. The material properties are E = 29,000 ksi and F_y = 50 ksi.

To trigger buckling in the subsequent analyses, the nodal locations are defined by a first mode buckled shape with an initial imperfection of L/1000 at mid-height of the column.

Elastic Buckling

The elastic buckling load for the column, P_e=910 kip, is obtained from the Euler equation P_e=\pi^2EI/L^2. Using a corotational mesh of Bernoulli beam elements defined by E, A, and I, we should converge to this value.

The axial load-displacement response is shown below for N_{ele} = 2, 4, and 6 elements. The response is computed using displacement control on the vertical DOF at the top of the column. Consistent with finite element theory, the coarser mesh gives higher apparent strength. Four elements does a good job and six elements is a little better.

We will use six elements for the analyses in the following section.

Inelastic Buckling

This column is not slender enough to buckle elastically because the crushing load, P_c=F_yA = 790 kip, is less than the Euler buckling load. Furthermore, Table 4-1a of the Steel Manual reports the nominal strength for this column to be P_n = 550 kip. In other words, the column will buckle inelastically. (I suppose we could have started the examples section of the post here, but it’s always fun to check the Euler buckling load.)

To capture inelastic buckling, we can use material nonlinear beam-column elements in the corotational mesh. Since we are using a discretized mesh to capture the geometric nonlinearity, we might as well go with the displacement-based formulation for the material nonlinearity.

A fiber discretization about the weak axis simulates the force-deformation response at each integration point. The stress-strain response of each fiber is bilinear with the given F_y and $E$, and strain-hardening ratio \alpha = 0.005. There are two fibers in the web and eight in each flange.

The computed axial load-displacement relationship is shown below, again using displacement control. As expected, we come in under the crushing load; however, we over-predict the nominal strength by about 50 kip.

Why are we over-predicting the nominal compressive strength reported in the Steel Manual? Recall that the Steel Manual uses an empirical relationship to account for residual stresses in the compressive strength tables. So, we should get closer to the nominal strength if we use residual stresses in the analysis.

To this end, we can use the InitStressMaterial in OpenSees to define a residual stress pattern across the fiber section. The linear approximation of the Lehigh pattern is a simple approach (see Fig. 6a here).

Recomputing the axial load-displacement response with F_r=0.2F_y (compression) and F_t=F_r(b_ft_f)/(b_ft_f+d_wt_w) (tension) gives the results shown below. Much better!

Note that it’s a good idea to get the initial stresses into equilibrium with one analysis step prior to applying loads with displacement control. It took me a while to remember this after trying to wrap my head around why the displacement-controlled analysis failed well before reaching the nominal compressive strength.

11 thoughts on “Meshing for Column Loads

    1. Hello ZHU,
      Good question! A quick way to do this would be to compute the Euler buckling load, P, then find a reference axial displacement from U=PL/EA. Then take increments in displacement control on the vertical DOF equal to U/100. It’s kind of a dark art 🙂


  1. In the Last plot how it is possible to apply a lesser load yet getting large displacement. How to apply load beyond the peak point or how to achieve decreasing trend of the plot.


      1. Thank you for your kind reply,
        Actually what I am doing is applying a vertical load and noting the displacement for that particular load. However from your plot, it appears that you have increased the load from 0 to the peak value, I am unable to understand how did you reduce the load after the peak load and yet you were able to get large displacement. In my case I am getting plot till the peak after that I am facing a convergence problem. It would be helpful if you tell me how to apply load using displacement control.


      2. Dear sir, After your suggestion, I did a gravity analysis. After that, I defined load pattern and displacement control integrator as shown below
        pattern Plain 2 Linear {
        load 161 0. -1.0 0.0
        test EnergyIncr 1.0e-8 300 1
        algorithm KrylovNewton
        system UmfPack
        numberer RCM
        constraints Plain
        analysis Static
        set dU 0.0002
        integrator DisplacementControl 161 2 $dU 1 $dU $dU
        analyze 10

        But how to apply the load lesser than the peak load and yet getting large displacement.


  2. Hello,
    thank you for your valuable post.
    I searched your site for an explanation about twoNodeLink but found nothing. Can you provide an explanation for this element and how it works.?


Leave a Reply to Praveen Huded Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.