%-------------------------- % @Author: Jingqiao Hu % @Date: 2021-12-29 10:34:40 % @LastEditTime: 2022-01-30 20:34:27 % only update the projection of the neighbor cell of curr_idx, for efficiency %-------------------------- function [c_rho1, interEles] = update_projection(nodes_cell, faces_cell, MMCs, ... epsilon, c_rho, c_phi, c_nnbEdgeIDX, c_interPolySeed, local_idx) npnts = length(local_idx); % CHECK: is it possible this pgon is effected by other MMC not here? [c_phi, interEles] = init_phi(local_idx, c_interPolySeed, c_phi); % important for i = 1 : npnts sid = local_idx(i); % seed-id pid = c_interPolySeed{sid}; % pgon-id intersected with this seed mid = c_nnbEdgeIDX{i}; % MMCs-id corresponding this seed for j = 1 : length(mid) mmc = MMCs(mid(j), :); for k = 1 : length(pid) ele = pid(k); nodes = nodes_cell{ele}; phi = tPhi(mmc, nodes(:,1), nodes(:,2)); c_phi{ele} = max(phi, c_phi{ele}); end end end c_rho1 = c_rho; % Heaviside % figure; clf for i = 1 : length(interEles) ele = interEles(i); H = Heaviside_simply(c_phi{ele}, epsilon); faces = faces_cell{ele}; c_rho1{ele} = sum(H(faces), 2) / 3; % nodes = nodes_cell{ele}; % patch('Faces',faces,'Vertices',nodes,'FaceVertexCData',1 - H','FaceColor','interp','EdgeColor','interp'); hold on; end % colormap("gray"); axis equal; axis off; pause(1e-6); end function [phi_cell, interEles] = init_phi(local_idx, c_interPolySeed, phi_cell) interEles = []; for i = 1:length(local_idx) sid = local_idx(i); pid = c_interPolySeed{sid}; % pgon-id intersected with this seed for j = 1 : length(pid) ele = pid(j); phi_cell{ele}(:) = -1e5; end interEles = [interEles; pid]; end interEles = unique(interEles); end