76 lines
2.3 KiB
Mathematica
76 lines
2.3 KiB
Mathematica
|
|
function [K, F] = Linear_Elasticity(Nodes, Elements,N_ID_p1, Boundary,Patch)
|
|||
|
|
global E u SD q0
|
|||
|
|
Ne=size(Elements,1);
|
|||
|
|
Nnod=size(Nodes,1);
|
|||
|
|
Width=1;%ƽ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
% <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD>ռ<EFBFBD>
|
|||
|
|
K = zeros( 2 * Nnod , 2 * Nnod );
|
|||
|
|
F = zeros( 2 * Nnod , 1 );
|
|||
|
|
for i=1:Ne
|
|||
|
|
ke=ele_stiff_matrix(i,Nodes,Elements,E,u,Width);
|
|||
|
|
ENodes( : , 1 ) = Elements( i , : );
|
|||
|
|
%<EFBFBD><EFBFBD>װΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iEnum = size( ENodes , 1 ); % <EFBFBD><EFBFBD>Ԫ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iDOFnum = 2 * iEnum; % <EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iDof = zeros( 2 * iEnum , 1 ); % <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
for il=1:iEnum
|
|||
|
|
inod = ENodes( il );
|
|||
|
|
iDof( 2 * il-1 : 2 * il) = 2 * inod-1 : 2 * inod;
|
|||
|
|
end
|
|||
|
|
% ƴװ<EFBFBD><EFBFBD>irΪ<EFBFBD>оֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, irgΪ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for ir = 1 : iDOFnum %row
|
|||
|
|
irg = iDof( ir );
|
|||
|
|
% icΪ<EFBFBD>оֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, icgΪ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for ic = 1 : iDOFnum %column
|
|||
|
|
icg = iDof( ic );
|
|||
|
|
K( irg , icg ) = K( irg , icg ) + ke( ir , ic );
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
%ʩ<EFBFBD>Ӻ<EFBFBD><EFBFBD>ر߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% if Patch==2
|
|||
|
|
% iLenElt = size(N_ID_p1,1); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% for ie = 1:iLenElt
|
|||
|
|
% for ind = 1:2 % ind<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% iNode = N_ID_p1(ie,:); %<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% irow = (iNode-1)*2+ind;
|
|||
|
|
% Pe = UniLoad(ie,N_ID_p1,q0,Nodes,Elements,Width); % 3<EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EquivalentLoad(ie)
|
|||
|
|
%
|
|||
|
|
% F(irow) = F(irow)+Pe(ind:2:end,:);
|
|||
|
|
% end
|
|||
|
|
% end
|
|||
|
|
% end
|
|||
|
|
if Patch==2
|
|||
|
|
iLenElt = size(N_ID_p1,1); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for ie = 1:iLenElt
|
|||
|
|
for ind = 1:2 % ind<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iNode = N_ID_p1(ie,:); %<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
irow = (iNode-1)*2+ind;
|
|||
|
|
Pe = UniLoad(ie,N_ID_p1,q0,Nodes,Elements,Width); % 3<EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EquivalentLoad(ie)
|
|||
|
|
F(irow) = F(irow)+Pe(ind:2:end,:);
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
%ʩ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iBct = size( Boundary , 1 );
|
|||
|
|
for ib = 1 : iBct
|
|||
|
|
iNode = Boundary( ib , 1 ); % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
iType = Boundary( ib , 8 );
|
|||
|
|
if iType == 1 % <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for ind = 1 : 2
|
|||
|
|
irow = ( iNode-1 ) * 2 + ind;
|
|||
|
|
if ( Boundary( ib , ind + 1 ) == 1 )
|
|||
|
|
K( irow , : ) = 0.0;
|
|||
|
|
K( : , irow ) = 0.0;
|
|||
|
|
K( irow , irow ) = 1.0; % <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
|||
|
|
F(irow)=0.0;
|
|||
|
|
% gKA( irow , irow ) = 1.0e+20; % <EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|