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;%平面应力单元的厚度 % 初始化结果存储空间 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 , : ); %组装为整体刚度阵 iEnum = size( ENodes , 1 ); % 单元的结点总数 iDOFnum = 2 * iEnum; % 单元的总自由度数 iDof = zeros( 2 * iEnum , 1 ); % 各节点自由度编号 for il=1:iEnum inod = ENodes( il ); iDof( 2 * il-1 : 2 * il) = 2 * inod-1 : 2 * inod; end % 拼装:ir为行局部编号, irg为对应整体编号 for ir = 1 : iDOFnum %row irg = iDof( ir ); % ic为列局部编号, icg为对应整体编号 for ic = 1 : iDOFnum %column icg = iDof( ic ); K( irg , icg ) = K( irg , icg ) + ke( ir , ic ); end end end %施加荷载边界条件%均布荷载 % if Patch==2 % iLenElt = size(N_ID_p1,1); %均布荷载所在单元编号 % for ie = 1:iLenElt % for ind = 1:2 % ind结点自由度编号 % iNode = N_ID_p1(ie,:); %获取单元结点 % irow = (iNode-1)*2+ind; % Pe = UniLoad(ie,N_ID_p1,q0,Nodes,Elements,Width); % 3级子程序:EquivalentLoad(ie) % % F(irow) = F(irow)+Pe(ind:2:end,:); % end % end % end if Patch==2 iLenElt = size(N_ID_p1,1); %均布荷载所在单元编号 for ie = 1:iLenElt for ind = 1:2 % ind结点自由度编号 iNode = N_ID_p1(ie,:); %获取单元结点 irow = (iNode-1)*2+ind; Pe = UniLoad(ie,N_ID_p1,q0,Nodes,Elements,Width); % 3级子程序:EquivalentLoad(ie) F(irow) = F(irow)+Pe(ind:2:end,:); end end end %施加支座边界条件 iBct = size( Boundary , 1 ); for ib = 1 : iBct iNode = Boundary( ib , 1 ); % 结点编号 iType = Boundary( ib , 8 ); if iType == 1 % 固定点边界条件 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; % 划零置一法 F(irow)=0.0; % gKA( irow , irow ) = 1.0e+20; % 乘大数法 end end end end