75 lines
2.8 KiB
Mathematica
75 lines
2.8 KiB
Mathematica
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|||
|
|
function [P,E,N_ID_p1,Boundary] = Geometry(Patch, dis_1, dis_2)
|
|||
|
|
global Nx Ny
|
|||
|
|
global time;
|
|||
|
|
|
|||
|
|
gap=-0.0001;%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶
|
|||
|
|
|
|||
|
|
switch Patch %options of Patch
|
|||
|
|
case 1 %<EFBFBD>²<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
P=[0,0; 0.25,0; 0.5,0; 0.75,0; 1,0;
|
|||
|
|
0,0.125; 0.25,0.125; 0.5,0.125; 0.75,0.125; 1,0.125;
|
|||
|
|
0,0.25; 0.25,0.25; 0.5,0.25; 0.75,0.25; 1,0.25;
|
|||
|
|
0,0.375; 0.25,0.375; 0.5,0.375; 0.75,0.375; 1,0.375;
|
|||
|
|
0,0.5; 0.25,0.5; 0.5,.50; 0.75,0.5; 1,0.5
|
|||
|
|
];%<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
P=P+ dis_1;%ͨ<EFBFBD><EFBFBD>λ<EFBFBD>Ƹ<EFBFBD><EFBFBD>½ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD>嵥Ԫ
|
|||
|
|
ele_num=0;
|
|||
|
|
for i=1:Nx
|
|||
|
|
for j=1:Ny
|
|||
|
|
ele_num=ele_num+1;
|
|||
|
|
E(ele_num,:)=[(i-1)*(Nx+1)+1+(j-1),(i-1)*(Nx+1)+2+(j-1),i*(Nx+1)+2+(j-1),i*(Nx+1)+1+(j-1)];
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
%Լ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%<EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>type = 1 -- fixed disp [ 1--<EFBFBD>ڵ<EFBFBD><EFBFBD>̶<EFBFBD>; 0--<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ];
|
|||
|
|
% type = 2 -- point load
|
|||
|
|
% node, x, y, z, rx, ry, rz, type
|
|||
|
|
for i=1:Nx+1
|
|||
|
|
Boundary(i,:) = [i 1.0 1.0 1.0 0.0 0.0 0.0 1];
|
|||
|
|
end
|
|||
|
|
N_ID_p1=[];
|
|||
|
|
case 2%<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
P=[0.2,0.5; 0.3,0.5; 0.4,0.5; 0.5,0.5; 0.6,0.5;
|
|||
|
|
0.2,0.55; 0.3,0.55; 0.4,0.55; 0.5,0.55; 0.6,0.55;
|
|||
|
|
0.2,0.6; 0.3,0.6; 0.4,0.6; 0.5,0.6; 0.6,0.6;
|
|||
|
|
0.2,0.65; 0.3,0.65; 0.4,0.65; 0.5,0.65; 0.6,0.65;
|
|||
|
|
0.2,0.7; 0.3,0.7; 0.4,0.7; 0.5,0.7; 0.6,0.7
|
|||
|
|
];
|
|||
|
|
P(:,2)=P(:,2)+gap; %create contact gap between two patches
|
|||
|
|
P(:,1)=P(:,1);
|
|||
|
|
%update the coordinates using displacement
|
|||
|
|
P=P+dis_2;
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD>嵥Ԫ
|
|||
|
|
ele_num=0;Nx=4;Ny=4;
|
|||
|
|
for i=1:Nx
|
|||
|
|
for j=1:Ny
|
|||
|
|
ele_num=ele_num+1;
|
|||
|
|
E(ele_num,:)=[(i-1)*(Nx+1)+1+(j-1),(i-1)*(Nx+1)+2+(j-1),i*(Nx+1)+2+(j-1),i*(Nx+1)+1+(j-1)];
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĵ<EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
E_ID_p1 = Nx*(Ny-1)+1:Nx*Ny; % <EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
N_ID_p1 = zeros(size(E_ID_p1,2),size(E,2));%<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
j = 1;
|
|||
|
|
for i_q = E_ID_p1
|
|||
|
|
N_ID_p1(j,:) = E(i_q,:); %<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
j = j+1;
|
|||
|
|
end
|
|||
|
|
%Լ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%<EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>type = 1 -- fixed disp [ 1--<EFBFBD>ڵ<EFBFBD><EFBFBD>̶<EFBFBD>; 0--<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ];
|
|||
|
|
% type = 2 -- point load
|
|||
|
|
% node, x, y, z, rx, ry, rz, type
|
|||
|
|
for i=1:Nx+1
|
|||
|
|
Boundary(i,:) = [(Nx+1)*Ny+i 1.0 0.0 0.0 0.0 0.0 0.0 1];%<EFBFBD><EFBFBD>֤<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
|