FEM-Course-Matlab/16.几何非线性有限元matlab编程/几何非线性有限元-悬臂梁/tangStiffMtxUL.m

27 lines
1.1 KiB
Mathematica
Raw Permalink Normal View History

2024-01-28 16:46:36 +00:00
function [Kt,Elem] = tangStiffMtxUL(Model,Anl,Elem,U)
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½ڵ<EFBFBD>λ<EFBFBD>ú<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ĵ<EFBFBD>Ԫ<EFBFBD>նȾ<EFBFBD><EFBFBD><EFBFBD>
Kt = zeros(Model.neq,Model.neq);
for i = 1:Model.nel
% Elastic, geometric and tangent stiffness matrices
ke = elasticStiffMtxUL(Elem(i),U);%UӰ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kg = geometricStiffMtxUL(Anl,Elem(i),U);
kt = ke + kg;
% Store elastic stiffness matrix to be used in computation of internal forces
Elem(i).ke = ke;
% Rotation matrix from local to global coordinate system
angle = elemAngle(Elem(i),U);%%UӰ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>Ԫ<EFBFBD>Ƕ<EFBFBD>
c = cos(angle);
s = sin(angle);
rot = [ c -s 0 0 0 0;
s c 0 0 0 0;
0 0 1 0 0 0;
0 0 0 c -s 0;
0 0 0 s c 0;
0 0 0 0 0 1 ];
% Tangent stiffness matrix in global system
k = rot * kt * rot';
% Assemble element matrix to global matrix
gle = Elem(i).gle;
Kt(gle,gle) = Kt(gle,gle) + k;
end
end