OpenSees Cloud

OpenSees AMI

One Iteration of a Second Order Analysis

Original Post - 27 Jul 2020 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


I was recently asked if one Newton iteration of a second order analysis will give the same results as a first order analysis. This is a good question, and the answer depends on what you’re after.

I will explain the answer using “Benchmark problem Case 2” from Chapter C of the AISC Steel Manual Commentary. The column is a W14x48 bent about its strong axis (A=14.1 in2, I=484 in4). Shear deformations are neglected.

AISC Benchmark problem Case 2

For an axial load of 100 kip, the free end displacement should be 1.33 in using a second order analysis, while with no axial load (first order analysis), the free end displacement should be 0.901 in. The horizontal reaction at the base should be 1 kip for both first and second order analysis.

To test the benchmark problem in OpenSees, let’s use three analysis options:

  1. First order analysis
  2. Second order analysis
  3. One iteration of second order analysis

For the first order analysis (option 1), we create a geometrically linear transformation and a small deformation force-based element with elastic sections. Otherwise, it’s the P-\(\Delta\) transformation and a large deformation CBDI force-based element.

ops.section('Elastic',12,E,A,I)
ops.beamIntegration('Legendre',8,12,3) # Three Gauss points

if analysis == 1:
    ops.geomTransf('Linear',25)
    ops.element('forceBeamColumn',1,1,2,25,8)
else:
    ops.geomTransf('PDelta',25)
    ops.element('forceBeamColumnCBDI',1,1,2,25,8)

For the second order analysis with one iteration (option 3), we use a convergence test with maxIter=1 and pFlag=5, which will force the analysis to accept the response after one iteration. The other two options use a standard convergence test.

if analysis == 3:
    ops.test('NormUnbalance',1e-8,1,5)
else:
    ops.test('NormUnbalance',1e-8,10,1)

ops.algorithm('Newton')

Applying the loads in one step, the results from OpenSees for the three analysis methods are:

Analysis option: 1
Free end displacement: 0.901
Base reaction: -1

Analysis option: 2
Free end displacement: 1.33
Base reaction: -1

Analysis option: 3
Free end displacement: 0.901
Base reaction: -0.719

Both options 1 and 2 give their expected displacements and satisfy equilibrium. Although option 3, the second order analysis with one iteration, gives the same displacement as the first order analysis, the horizontal reaction is not in equilibrium with the applied load. So, this approach is not the same as a first order analysis.

A conceptual representation of the three analysis options is shown below.

Load-displacement response after one iteration

The results of option 3 are consistent with what’s described in this somewhat abstract post on the linear algorithm. This post on second order analysis is much more concrete.