You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
%--------------------------
|
|
% @Author: Jingqiao Hu
|
|
% @Date: 2020-10-29 15:04:15
|
|
% @LastEditTime: 2020-11-18 13:47:03
|
|
%--------------------------
|
|
% int in [-a,a], [-b,b]
|
|
function gaussB = shapeDerivatives(a, b, optKE)
|
|
% jac = lx*ly/4;
|
|
GaussNodes = [-1/sqrt(3); 1/sqrt(3)]; GaussWeigh = [1 1];
|
|
if optKE==1
|
|
L = [1 0 0 0; 0 0 0 1; 0 1/2 1/2 0];
|
|
else
|
|
L = [1 0 0 0; 0 0 0 1; 0 1 1 0];
|
|
end
|
|
|
|
gaussB = cell(4,1);
|
|
|
|
for i = 1:2
|
|
for j = 1:2
|
|
GN_x = GaussNodes(i);
|
|
GN_y = GaussNodes(j);
|
|
|
|
dN_x = 1/4*[-(1-GN_y) (1-GN_y) (1+GN_y) -(1+GN_y)];
|
|
dN_y = 1/4*[-(1-GN_x) -(1+GN_x) (1+GN_x) (1-GN_x)];
|
|
|
|
J = [dN_x; dN_y]*[ -a a a -a;
|
|
-b -b b b]';
|
|
G = [inv(J) zeros(size(J));
|
|
zeros(size(J)) inv(J)];
|
|
|
|
dN(1,1:2:8) = dN_x; dN(2,1:2:8) = dN_y;
|
|
dN(3,2:2:8) = dN_x; dN(4,2:2:8) = dN_y;
|
|
|
|
Be = L*G*dN;
|
|
gaussB{2*(i-1)+j} = GaussWeigh(i)*GaussWeigh(j)*Be;
|
|
end
|
|
end
|
|
end
|