Eigen buckling solver - thoughts

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
MDSmith526
Posts: 48
Joined: Sat Mar 13, 2010 4:13 pm
Location: USACE

Eigen buckling solver - thoughts

Post by MDSmith526 » Thu Jul 10, 2014 5:14 am

I was considering how to build an eigen-solver for buckling problems. One big problem is that the elements do not necessarily have separate linear and nonlinear (geometric) stiffness matrices. Therefore, an approach must be developed to extract the geometric stiffness from the global tangent stiffness.

ELASTIC
For instance, let's say we have a linear elastic structure with a geometrically nonlinear transformation used (PDelta or Corotational). The stiffness matrix is: K = Ke + Kg, where K is the global tangent stiffness matrix, Ke is the global linear stiffness matrix, and Kg is the global geometric stiffness matrix. Kg is often (always?) a linear function of the internal load effects (N, Mz, My, T,...). Therefore Kg will be 0 initially. Let's say we have 2 fully assembled global stiffness matrices, one at load=0 (initial stiffness), K0, and one at a reference load condition, K2. K0 = Ke and K2 = Ke + a*Kg, where a is some scaling factor for the Kg resulting from the applied load vector. Subtracting the 2nd equation from the first, we get:

Delta_K = a*Kg

This allows the extraction of the geometric stiffness matrix, Kg = Delta_K / a; where Delta_K = K2 - K0.

Once we have Ke = K0, available at Load = 0, and Kg from equation above, we can set up an eigen problem and perhaps, to a large degree, utilize the existing eigen solver class?

[ Ke ] Phi = lamda [ -Kg ] Phi

INELASTIC
If we expand this to a structure with material nonlinearity, the eigen problem now becomes:
[Ka + lamda*Kg] Phi = 0; where Ka and Kg are both nonlinear functions of the loading. Therefore, once a load vector, P, is set, it can be scaled uniformly to produce a set of incremental eigen buckling problems. The trick is to figure out how much they should be incremented. In looking at this, it appears as though all the nuances of a nonlinear load-displacement analysis would have to be considered and controlled to perform this analysis correctly. Therefore, I think it is not worth including an inelastic critical buckling load solver in opensees, as the same answer can be reached using load-displacement. Although, I suppose the same could be said about the linear case as well. I do think the linear case is valuable, especially for approaches such as the Direct Analysis Method from AISC, and seems simple enough to add.

I am interested in thoughts on value, approach, and feasibility.
Matthew D Smith, PhD, PE
Research Civil Engineer
Information Technology Laboratory
Engineering Research and Development Center
US Army Corps of Engineers
Vicksburg, MS

Post Reply