## A simple column buckling analysis

**Moderators:** silvia, selimgunay, Moderators

### A simple column buckling analysis

Dear sir,

I am trying to do a simple column buckling analysis. I am getting some errors.

Can you kindly help me out.

My code:

import openseespy.opensees as ops

import openseespy.postprocessing.Get_Rendering as pst

ops.model('basic','-ndm',2,'-ndf',3)

ops.node(1,0,0)

ops.node(2,0,10000)

ops.geomTransf('Linear',1)

#element('elasticBeamColumn', eleTag, *eleNodes, Area, E_mod, Iz, transfTag, <'-mass', mass>, <'-cMass'>, <'-release', releaseCode>)

eleNodes = [1,2]

ops.element('elasticBeamColumn',1,*eleNodes,299,200000,960823.562,1)

ops.fix(1,1,1,0)

massv = [0,1,0]

ops.mass(2,*massv)

#timeSeries('Constant', tag, '-factor', factor=1.0)

ops.timeSeries('Constant',1,'-factor',1)

#pattern('Plain', patternTag, tsTag, '-fact', fact)

ops.pattern('Plain',1,1)

#load(nodeTag, *loadValues)

loadValues=[0,-1,0]

ops.load(2,*loadValues)

pst.plot_model()

ops.constraints('Plain')

ops.numberer('RCM')

ops.algorithm('Newton')

ops.system('BandSPD')

ops.analysis('Static')

a = ops.eigen(3)

ops.analyze(numIncr=1)

pst.plot_modeshape(1)

print(a)

I am trying to do a simple column buckling analysis. I am getting some errors.

Can you kindly help me out.

My code:

import openseespy.opensees as ops

import openseespy.postprocessing.Get_Rendering as pst

ops.model('basic','-ndm',2,'-ndf',3)

ops.node(1,0,0)

ops.node(2,0,10000)

ops.geomTransf('Linear',1)

#element('elasticBeamColumn', eleTag, *eleNodes, Area, E_mod, Iz, transfTag, <'-mass', mass>, <'-cMass'>, <'-release', releaseCode>)

eleNodes = [1,2]

ops.element('elasticBeamColumn',1,*eleNodes,299,200000,960823.562,1)

ops.fix(1,1,1,0)

massv = [0,1,0]

ops.mass(2,*massv)

#timeSeries('Constant', tag, '-factor', factor=1.0)

ops.timeSeries('Constant',1,'-factor',1)

#pattern('Plain', patternTag, tsTag, '-fact', fact)

ops.pattern('Plain',1,1)

#load(nodeTag, *loadValues)

loadValues=[0,-1,0]

ops.load(2,*loadValues)

pst.plot_model()

ops.constraints('Plain')

ops.numberer('RCM')

ops.algorithm('Newton')

ops.system('BandSPD')

ops.analysis('Static')

a = ops.eigen(3)

ops.analyze(numIncr=1)

pst.plot_modeshape(1)

print(a)

### Re: A simple column buckling analysis

It looks like you have a pin condition at node 1 and no other boundary conditions, so the column is a rigid body mechanism. Add a fix to node 2.

Was my answer helpful to you? https://www.buymeacoffee.com/mhscott

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

### Re: A simple column buckling analysis

Sorry for that. I have given a pinned BC at the second node now.

But still it gives an error.

ArpackSolver::Error with _saupd info = -3

NCV must be greater than NEV and less than or equal to N.

WARNING DirectIntegrationAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

But still it gives an error.

ArpackSolver::Error with _saupd info = -3

NCV must be greater than NEV and less than or equal to N.

WARNING DirectIntegrationAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

### Re: A simple column buckling analysis

Try doing eigen with only one mode.

ops.eigen(1)

ops.eigen(1)

Was my answer helpful to you? https://www.buymeacoffee.com/mhscott

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

### Re: A simple column buckling analysis

Now the error changes

It says starting vector is zero

ArpackSolver::Error with _saupd info = -9

Starting vector is zero.

WARNING StaticAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

It says starting vector is zero

ArpackSolver::Error with _saupd info = -9

Starting vector is zero.

WARNING StaticAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

### Re: A simple column buckling analysis

Try adding more mass to node 2 (even though it's not used)

massv = [1,1,0]

massv = [1,1,0]

Was my answer helpful to you? https://www.buymeacoffee.com/mhscott

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

### Re: A simple column buckling analysis

Yes. I added but the same error persists. I tried with one more mass -> massv = [1,1,1], then the error is:

ArpackSolver::Error with _saupd info = -9999

Could not build an Arnoldi factorization.IPARAM(5) the size of the current Arnoldi factorization: is 1factorization. The user is advised to check thatenough workspace and array storage has been allocated.

WARNING StaticAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

ArpackSolver::Error with _saupd info = -9999

Could not build an Arnoldi factorization.IPARAM(5) the size of the current Arnoldi factorization: is 1factorization. The user is advised to check thatenough workspace and array storage has been allocated.

WARNING StaticAnalysis::eigen() - EigenSOE failed in solve()

WANRING failed to do eigen analysis

### Re: A simple column buckling analysis

Try using ops.eigen('fullGenLapack',1)

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com

### Re: A simple column buckling analysis

Yes, I tried I am getting this error:

FullGenEigenSolver::solve() - the eigenvalue 1 is numerically undetermined or infinite

FullGenEigenSolver::solve() - the eigenvalue 1 is numerically undetermined or infinite

### Re: A simple column buckling analysis

GOT IT !!! Small mistake in boundary condition.

Thank you.

Thank you.

### Re: A simple column buckling analysis

I am getting the answer with the following code.

But the value seems to be wrong, from calculation and from MASTAN2

Pcr = (pi)^2*E*I/L^2

The value is supposed to be 18545 N. But OpenSees is giving 5980 N.

The working code:
Kindly look into the matter

But the value seems to be wrong, from calculation and from MASTAN2

Pcr = (pi)^2*E*I/L^2

The value is supposed to be 18545 N. But OpenSees is giving 5980 N.

The working code:

Code: Select all

```
import openseespy.opensees as ops
import openseespy.postprocessing.Get_Rendering as pst
ops.model('basic','-ndm',2,'-ndf',3)
ops.node(1,0,0)
ops.node(2,0,10000)
ops.node(3,0,5000)
ops.geomTransf('Linear',1)
eleNodes1 = [1,3]
eleNodes2 = [3,2]
ops.element('elasticBeamColumn',1,*eleNodes1,299,200000,960823.562,1)
ops.element('elasticBeamColumn',2,*eleNodes2,299,200000,960823.562,1)
ops.fix(1,1,1,0)
ops.fix(2,1,0,0)
massv = [1,1,1]
ops.mass(2,*massv)
ops.timeSeries('Constant',1,'-factor',1)
ops.pattern('Plain',1,1)
loadValues=[0,-1,0]
ops.load(2,*loadValues)
pst.plot_model()
ops.constraints('Plain')
ops.numberer('RCM')
ops.algorithm('Newton')
ops.system('BandSPD')
ops.integrator('LoadControl')
ops.analysis('Static')
a=ops.eigen('fullGenLapack',1)
ops.analyze(1)
print(a)
```

### Re: A simple column buckling analysis

So, you are trying to trick OpenSees in to calculating buckling loads via the eigenvalue solver. You can't use mass=1, you have to make the "mass" equal to the stability variable psi=L*sqrt(P/EI) ... I think that will work for a single column, but will become very cumbersome for larger models.

Do you need extra help with OpenSees? https://courses.silviasbrainery.com/

Michael H. Scott, Ph.D.

OpenSees blog: www.portwooddigital.com