⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmcompo.m

📁 matlab有限元分析工具,比经较全面的一个手册,请大家下载呀
💻 M
字号:
function rlabel = gmcompo(mesh);% gmcompo: find connected components of a mesh% returns an array (zba) holding labels, one label per% node.% use an n*alpha(n) union-find algorithm.gdim = double(mesh{1});di = double(mesh{2});[scrap,numnode] = size(mesh{4});parent = zba((0:(numnode-1))');lsize = zba(ones(numnode,1));tmplist = zeros(numnode,1);[scrap,numelt] = size(mesh{5});for snum = 0 : numelt - 1  for whichnode = 0 : gdim - 1    v = zeros(2,1);    v(1) = double(mesh{5}(whichnode + 1, snum));    v(2) = double(mesh{5}(whichnode + 2, snum));    label = zeros(2,1);    %% look up labels of v(1) and v(2)    %% use path compression.    for whichend = 1 : 2      j1 = v(whichend);      p = double(parent(j1));      tmplistsize = 1;      tmplist(1) = j1;      while p ~= j1        tmplistsize = tmplistsize + 1;        tmplist(tmplistsize) = p;        j1 = p;        p = double(parent(p));      end      for i = 1 : tmplistsize        parent(tmplist(i)) = p;      end      label(whichend) = double(p);    end    if label(1) ~= label(2)      % merge labels 1 and 2      if lsize(label(1)) >= lsize(label(2))        largerc = label(1);        smallerc = label(2);      else        largerc = label(2);        smallerc = label(1);      end      parent(smallerc) = largerc;      lsize(largerc) = lsize(largerc) + lsize(smallerc);      lsize(smallerc) = 0;    end  endend%% Now renumber the active labels.renumlabel = cumsum(lsize > 0) - ones(numnode,1);rlabel = zba(zeros(numnode,1));for vnum = 0 : numnode - 1  % Get the label of node vnum.  Apply path compression  j1 = vnum;  p = double(parent(j1));  tmplistsize = 1;  tmplist(1) = j1;  while p ~= j1     tmplistsize = tmplistsize + 1;     tmplist(tmplistsize) = p;     j1 = p;     p = double(parent(p));  end  for i = 1 : tmplistsize    parent(tmplist(i)) = p;  end  rlabel(vnum) = renumlabel(p);end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -