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