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.

36 lines
933 B

3 years ago
%--------------------------
% @Author: Jingqiao Hu
% @Date: 2020-10-29 15:04:18
% @LastEditors: Please set LastEditors
% @LastEditTime: 2020-11-28 21:49:16
%--------------------------
function f = elastic_force(F, dF, nodeNum, edofMat, lx, u, l)
f = zeros(nodeNum*2, 1);
jac = lx^2/4;
eleNum = size(edofMat,1);
for gp = 1:4
dFe = dF{gp}; % 4 * 8 * m
Fe = F{gp, 1}; % 4 * m
P2(1, :, :) = PK1_fast(u, l, Fe); % 4 * m
fe = squeeze(mtimesx(P2, dFe)) * jac; % 8*m
for ele = 1:eleNum
edof = edofMat(ele, :);
f(edof) = f(edof) - fe(:, ele); % NOTE: MINUS!
end
end
end
function PP = PK1(u,l,F)
% Neo hookean
JJ = log(det(F));
Finv = inv(F)';
PP = u*(F-Finv) + l*JJ*Finv;
% Linear
% I = eye(3,3);
% PP = u*(F + F'-2*I) + l * (trace(F)-3) * I;
end