Chapter 24 uses the practical simplified curvature expressions. This addendum presents the complete expressions including second-order terms, together with their derivatives and the deriv_corrected.m routine.
Corrected curvature expressions
The exact expressions of the curvatures, including the second-order terms, are:
For the isoparametric two-node beam element, for which the rotations , , and have a linear variation along the element, we can write numerically:
Finally, we get:
Refer to Sections 34.1 and 34.3 to understand how these equations were derived.
First and second derivatives
Accordingly, the first two derivatives of , , and become:
MATLAB routine
The first two derivatives of , , , , , and , as presented in Chapter 24, are computed in the subprogram deriv.m. The corrected expressions of the curvatures, as shown here, are introduced in the subprogram deriv_corrected.m.
The two subprograms, deriv.m and deriv_corrected.m, generally give the same results. Moreover, using the deriv.m subprogram, convergence can be better, but it provides good results only if the load is far enough from the critical buckling load, when the second-order terms of the curvatures become very important. More about buckling in Chapter 34.
%*** deriv_corrected ***
u1=s(1); v1=s(2); w1=s(3); psix1=s(4); psiy1=s(5); psiz1=s(6);
u2=s(7); v2=s(8); w2=s(9); psix2=s(10); psiy2=s(11); psiz2=s(12);
ep =((v1 - v2)^2 + (w1 - w2)^2 + (L - u1 + u2)^2)^(1/2)/L - 1;
ep1=[ -(L - u1 + u2)
(v1 - v2)
(w1 - w2)
0
0
0
(L - u1 + u2)
-(v1 - v2)
-(w1 - w2)
0
0
0]/L2;
ep2=[[ 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0]
[ 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0]
[ 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
[ 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
[ 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]/L2;
bey =- psiz1/2 - psiz2/2 - atan((v1 - v2)/(L - u1 + u2));
bey1=[ -(v1 - v2)/L^2
-(L - u1 + u2)/L^2
0
0
0
-1/2
(v1 - v2)/L^2
(L - u1 + u2)/L^2
0
0
0
-1/2];
bey2=[[ 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0]
[ -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]/L2;
bez =atan((w1 - w2)/(L - u1 + u2)) - psiy2/2 - psiy1/2;
bez1=[ (w1 - w2)/L^2
0
(L - u1 + u2)/L^2
0
-1/2
0
-(w1 - w2)/L^2
0
-(L - u1 + u2)/L^2
0
-1/2
0];
bez2 =[[ 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]/L2;
% Shear convention: beta_z = atan(w'/(1+u')) + psi_y.
bez=-bez;
bez1=-bez1;
bez2=-bez2;
cax =- (psix1 - psix2)/L + ((psiy1*psiz2)/2 - (psiy2*psiz1)/2)/L;
cax1 =[ 0
0
0
-1/L
psiz2/(2*L)
-psiy2/(2*L)
0
0
0
1/L
-psiz1/(2*L)
psiy1/(2*L)];
cax2 = [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/(2*L)]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1/(2*L), 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0,-1/(2*L), 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 1/(2*L), 0, 0, 0, 0, 0, 0, 0]];
cay =-(psiy1 - psiy2)/L - ((psix1*psiz2)/2 - (psix2*psiz1)/2)/L;
cay1 =[ 0
0
0
-psiz2/(2*L)
-1/L
psix2/(2*L)
0
0
0
psiz1/(2*L)
1/L
-psix1/(2*L)];
cay2 = [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1/(2*L)]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/(2*L), 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 1/(2*L), 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0,-1/(2*L), 0, 0, 0, 0, 0, 0, 0, 0]];
caz =- (psiz1 - psiz2)/L + ((psix1*psiy2)/2 - (psix2*psiy1)/2)/L;
caz1 =[ 0
0
0
psiy2/(2*L)
-psix2/(2*L)
-1/L
0
0
0
-psiy1/(2*L)
psix1/(2*L)
1/L];
caz2 = [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/(2*L), 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0,-1/(2*L), 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0,-1/(2*L), 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 1/(2*L), 0, 0, 0, 0, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
The routine deriv_corrected.m is included in the MATLAB package available in Chapter 24.