47 lines
1.8 KiB
Mathematica
47 lines
1.8 KiB
Mathematica
|
|
%Function: incorporate contact constraint to stiffness matrix based on
|
|||
|
|
% penaly method
|
|||
|
|
function [K_Contact RC_force] = Contact_Formualtion(P1, P2, E1,E2,Penalty, dis_1, dis_2)
|
|||
|
|
K_Contact=zeros(2*(size(P1,1)+size(P2,1))); %initialize the Output;
|
|||
|
|
SD=2;%<EFBFBD>ռ<EFBFBD>ά<EFBFBD><EFBFBD>
|
|||
|
|
%slave<EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ㼰<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
[ P_s, patch_s, Global_DOF_ID_s]= Contact_Geometry(0, dis_1, dis_2);
|
|||
|
|
[ P_m, patch_m, Global_DOF_ID_m]= Contact_Geometry( 1, dis_1, dis_2);
|
|||
|
|
RC_force=zeros(size(P_s,1)+size(P_m,1),2);
|
|||
|
|
nnd_s=size(P_s,1);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ne_s=nnd_s-1;%<EFBFBD><EFBFBD><EFBFBD>浥Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>segment<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
nnd_m=size(P_m,1);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ne_m=nnd_m-1;%<EFBFBD><EFBFBD><EFBFBD>浥Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>segment<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%<EFBFBD>ԽӴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>node-to-segement<EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for n_i=1:nnd_s %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>node
|
|||
|
|
ID_s=Global_DOF_ID_s(2*n_i-1:2*n_i);
|
|||
|
|
for e_i=1:ne_m %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>segement<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
|
|||
|
|
ID_m1= Global_DOF_ID_m(2*e_i-1:2*e_i);
|
|||
|
|
ID_m2= Global_DOF_ID_m(2*(e_i+1)-1:2*(e_i+1));
|
|||
|
|
iDof=[ID_s,ID_m1,ID_m2];
|
|||
|
|
xs=P_s(n_i,1);
|
|||
|
|
ys=P_s(n_i,2);
|
|||
|
|
x1=P_m(e_i,1);
|
|||
|
|
x2=P_m(e_i+1,1);
|
|||
|
|
y1=P_m(e_i,2);
|
|||
|
|
y2=P_m(e_i+1,2);
|
|||
|
|
ELXY=[xs,x1,x2;ys,y1,y2];
|
|||
|
|
[FORCE, STIFF] = cntelm2d(Penalty, ELXY);%<EFBFBD><EFBFBD><EFBFBD>ؽӴ<EFBFBD><EFBFBD>նȾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽӴ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
if isempty(STIFF)
|
|||
|
|
continue;
|
|||
|
|
end
|
|||
|
|
for row=1:size(STIFF,1)
|
|||
|
|
for col=1:size(STIFF,2)
|
|||
|
|
r=iDof(row);
|
|||
|
|
c=iDof(col);
|
|||
|
|
K_Contact(r,c)=K_Contact(r,c)+STIFF(row,col);
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
RC_force(n_i,:)=FORCE(1:2);
|
|||
|
|
RC_force(5+e_i,:)=FORCE(3:4);
|
|||
|
|
RC_force(5+e_i+1,:)=FORCE(5:6);
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|