a 2D version
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.
 
 

29 lines
825 B

%--------------------------
% @Author: Jingqiao Hu
% @Date: 2021-09-18 14:13:07
% @LastEditTime: 2021-09-18 14:59:44
%--------------------------
function dF = update_dF(edofMat_mi, eleNum_ma, n, dNh_e)
eleNum_mi = size(edofMat_mi, 1);
I = eye(eleNum_mi);
initF = repmat([1;0;0;1], 1, eleNum_mi);
dF = cell(4, eleNum_ma);
tmp_edof = edofMat_mi';
for gp = 1:4
dNh_g = dNh_e{gp}; % 4*8
dNh1 = kron(I, dNh_g); % [4m, 8m]
for ele = 1:eleNum_ma
ne = n{ele};
n1 = ne(:, tmp_edof(:))'; % [8m, 2v]
dNH = dNh1 * n1; % [4m, 2v]
% reshape dNH to [4,2v,m]
dN1 = reshape(dNH, 4, eleNum_mi, []); % [4,m,2v]
dF{gp, ele} = permute(dN1, [1,3,2]); % [4,2v,m]
end
end
end