A simple column buckling analysis

Forum for asking and answering questions related to use of the OpenSeesPy module

Moderators: silvia, selimgunay, Moderators

Post Reply
Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 2:09 am

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)

mhscott
Posts: 444
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: A simple column buckling analysis

Post by mhscott » Fri Sep 04, 2020 7:12 am

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

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 7:58 am

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

mhscott
Posts: 444
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: A simple column buckling analysis

Post by mhscott » Fri Sep 04, 2020 8:01 am

Try doing eigen with only one mode.

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

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 8:05 am

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

mhscott
Posts: 444
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: A simple column buckling analysis

Post by mhscott » Fri Sep 04, 2020 8:16 am

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

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

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 8:22 am

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

mhscott
Posts: 444
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: A simple column buckling analysis

Post by mhscott » Fri Sep 04, 2020 11:58 am

Try using ops.eigen('fullGenLapack',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

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 6:29 pm

Yes, I tried I am getting this error:

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

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Fri Sep 04, 2020 6:37 pm

GOT IT !!! Small mistake in boundary condition.

Thank you.

Ashok
Posts: 22
Joined: Tue Feb 19, 2019 8:59 pm
Location: IITM

Re: A simple column buckling analysis

Post by Ashok » Sat Sep 05, 2020 2:11 am

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:

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)


Kindly look into the matter

mhscott
Posts: 444
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: A simple column buckling analysis

Post by mhscott » Sat Sep 05, 2020 6:38 am

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.
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

Post Reply