User login


You are here

Help regarding 2D co-rotational beam formulation

yawlou's picture

I have implemented a 2D co-rotational truss formulation in matlab.  I get identical results to OpenSEES.

Now I'm trying to implement a 2D co-rotational beam formulation.  I have followed the simple formulation in Crisfield's book volume 1.  It seems like this should be a fairly straight forward extension of the truss formulation.  I have rederived everything Crisfield has done and obtained the same results, yet something is still incorrect.

 Has anyone ever implemented the simple 2D co-rotational beam element formulation?  Would anyone be willing to help me narrow down the problem by exchanging a few emails with me if you have a working 2D co-rotational beam formulation?  We could do a simple cantilever, modeled with a single beam element.

 Alternatively, can anyone point me to a working version of a 2D co-rotational beam element formulation that would easily allow me to output intermediate values to compare with my matlab program?  I am aware that OpenSees has such an implementation and that is why I know my program isn't working.  I would look inside OpenSees, but it is very complicated and hard to see what I need to find my mistake.

Please let me know if you'd be willing to help.




Dear Mr. Louie,

I have been using Crisfield's 2D corotational formulation for beams. I have found no obvious typos or anything. I agree that some editions/prints of his books are of poor printing quality and are confusing especially for the subscripts.

Have you tried coding the element matrices exactly as given by Crisfield?

If you would like to compare the results, one source to verify results is  "Int. J. Numer. Methods Eng. 17 (1981) 145-153".

If you are still experiencing problems, then you could conclude that it is just program debugging.  


yawlou's picture

Thank you Kodanda for replying,

 I agree, I don't think there are any typos in Crisfield's derivation.  I have obtained his same results by working through the derivation.

 My problem is indeed a programming error or perhaps a failure on my part to understand some crucial little piece.

I have tried to program the beam formulation in matlab by extending my truss version of corotation in 2D.  Yet somehow my beam program is not working.  Right now I have been trying to get my results to match the results of OpenSees with NR iterations turned off.

The first linear step of course matches, but the second step after the corotational updating of geometry does not match my results.  So I have been trying just two data points with a single beam element.

 I will keep trying.





hi, it's alittle bit confusing to update the element. How do you give the incrementation to the element slope? I have a code written in mathematica, you can contact via e mail:


good luck.

yawlou's picture

Thanks to all those who have helped me along the way.

 For those who may be interested.

I have written a paper describing a 2D corotational beam formulation.  My approach closely follows that provided by Crisfield.  However, I have tried to show all the steps in the derivation and explain everything carefully.  Algorithms useful for implementation in a computer program are given.  Also, the problem of arbitrarily large rotations is overcome by using the straightforward technique by de Souza.  Representative benchmark problems are solved.

 The paper can be found at the following location:




Louie, I'm reading your paper about 2D corotational beam formulation. Thank you for this your work, it is very useful since my knowledge of geometric non-linearity was very confusing.

I have two questions :

- Is this theory appropriate for initially slightly curved beam ? (I would simply discretize the beam into a sufficient number of straight elements.)

- Is it suitable for a beam subject to a follower force ?




Dear Sir,

Please tell me the alogotithm for E Ramm's arc length method. I am using the following type of algorithm but am not getting the correct result----

 u{0}, lamda=0


n no of steps

Kg (stiffness with u{0})

u1=(Kg)^-1 * Fext'

[L D]=ldl(Kg)



lamda= 0.1*arc_length/sqrt(u1'*u1+1)

if m<0











del_ur=ur+del_lamda* u1



if norm(Fres)<10^-5)



if lamda>=2




So please help me..Waiting for the solution eagerly .



Md Rushdie Ibne Islam  

Dario Schiano Moriello's picture

Dear Mr Yaw,

thank you very much for sharing your papers about the corotational formulation for beam and trusses, they proved very helpful for me in the study of the subject.

I have just started my PhD and the first steps of my research program will involve the implementation of the corotational formulation in ABAQUS but, being new to both the subject and the software, I am not sure about how to proceed. Do you have any knowledge about existing work applying this formulation to analysis in ABAQUS or other software?

I read from this blog that you have compiled a MATLAB algorithm to solve simple problems for beams; it would be extremely helpful if you could please share part of this work.

Thank you very much for your consideration,
Hoping to hearing from You,


Subscribe to Comments for "Help regarding 2D co-rotational beam formulation"

Recent comments

More comments


Subscribe to Syndicate