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.
 
 

26 lines
901 B

%--------------------------
% @Author: Jingqiao Hu
% @Date: 2021-06-16 16:05:00
% @LastEditTime: 2021-06-16 16:24:09
% return neighbor eles-id for all node-id
%--------------------------
function neid = nodes_eles_id(nelx, nely, P_num, microx)
if P_num==0
[~, ~, ~, ele_nodes_id] = forAssemble(nelx, nely);
nnodes = (nelx+1) *(nely+1);
else
[~, ~, ~, ele_nodes_id] = macro_edofMat_bezier(nelx, nely, P_num);
border = round(linspace(1, microx+1, 2));
seg_num = length(border)-1; % segment num divided by added macro dofs
var_num = P_num*seg_num;
nnodes = (nelx+1)*(nely+1) + var_num*nely*(nelx+1) + var_num*nelx*(nely+1);
end
neid = cell(nnodes, 1); % maybe different node have different number of neighbor-ele
for nid = 1:nnodes
[r,~] = find(ele_nodes_id==nid);
neid{nid} = r;
end
end