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.

42 lines
1.3 KiB

3 years ago
%--------------------------
% @Author: Jingqiao Hu
% @Date: 2021-03-18 21:53:54
% @LastEditTime: 2021-05-31 16:54:40
%--------------------------
% get the node_id & ele_id to be removed whose rho = 0
function [ref_nodes_new, def_nodes_new, eles] = separate_rho(rho, edofMat, ref_nodes, def_nodes, density)
% node_id_saved = [];
% ele_id_saved = [];
ref_nodes(:, 4) = 1:size(ref_nodes, 1);
% for ele = 1 : size(edofMat, 1)
% if rho(ele) == density
% edof = edofMat(ele, :);
% nid = edof(3:3:end) / 3;
% node_id_saved = [node_id_saved, nid];
% ele_id_saved = [ele_id_saved, ele];
% end
% end
edofMat_new = edofMat(rho==density, :);
node_id_saved = edofMat_new(:, 3:3:end) / 3;
ref_nodes_new = ref_nodes(unique(node_id_saved), :);
def_nodes_new = def_nodes(unique(node_id_saved), :);
% edofMat_new = edofMat(ele_id_saved, :);
eles = zeros(size(edofMat_new, 1), 8);
% now node_id in edofMat_new is still old
for ele = 1:size(edofMat_new, 1)
edof = edofMat_new(ele, :);
nid0 = edof(3:3:end) / 3;
[nid, ~] = find(ref_nodes_new(:,4)==nid0);
eles(ele, :) = nid;
end
ref_nodes_new = ref_nodes_new(:, 1:3); % remove last column nid
end