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
42 lines
1.3 KiB
%--------------------------
|
|
% @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
|