%-------------------------- % @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