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

📄 gmcavity.m

📁 matlab有限元分析工具,比经较全面的一个手册,请大家下载呀
💻 M
字号:
function b = gmcavity(b1, b2);% gmcavity: Make a brep that has as a cavity another brep.% brep = gmcavity(brep1, brep2);% This routine creates a new brep formed by making brep2% a cavity in brep1.  The routine  glues the two breps together% and renumbers everything.  It does not check that the gluing% is sensible -- in particular, it does not verify that % brep2 actually is enclosed by brep1.if ~isa(b1,'zba') | ~isa(b2,'zba')  error('Object passed to gmcavity not a zba');endif length(b1) < 1 | length(b2) < 1  error('Object passed to gmcavity not a brep');endglobal GM_BREP_TYPE_CODEif ~strcmpi(double(b1{0}), GM_BREP_TYPE_CODE) | ...   ~strcmpi(double(b2{0}), GM_BREP_TYPE_CODE)   error('Object passed to gmcavity not a brep');enddi = double(b1{2});if b2{2} ~= di  error('Error: breps have different embedded dimensions')endif b1{1} ~= di  error('Error: brep1 is not full dimensional')end[scrap, nf] = size(b1{5+di});if nf ~= 1  error('Error: brep1 has more than one top-level face')endallfacenames = '';for fdim = 0 : di  [scrap,nf] = size(b1{5+fdim});  for faceind = 0 : nf - 1    allfacenames = [allfacenames, ' ', double(b1{5+fdim}{0,faceind})];  endendallfacenames = lower(allfacenames);for co = 1 : 10000000  appendstr = sprintf('_cav%d', co);  if length(findstr(allfacenames, appendstr)) == 0 | ...       length(allfacenames) < length(appendstr)    break  endendgdim2 = double(b2{1});[scrap,numtoplevface] = size(b2{5+gdim2});[scrap,brep1_numcp] = size(b1{4});new_cplist = [double(b1{4}),double(b2{4})];b = zba(cell(6 + di,1));b{0} = GM_BREP_TYPE_CODE; b{1} = [di]; b{2} = [di]; b{3} = {};b{4} = new_cplist;level_size1 = zba(zeros(di + 1,1));for fdim = 0 : di  [scrap,level_size1(fdim)] = size(b1{5+fdim});endnewbdry = {};newib = {};[scrap,numface2] = size(b2{5+gdim2});numface1 = double(level_size1(gdim2));if gdim2 < di - 1  newib = cell(1,numface2);  for i = 0 : numface2 - 1    newib{i + 1} = [double(b2{5+gdim2}{i}), appendstr];  endelseif gdim2 == di - 1  newbdry = cell(1, numface2);  for i = 0 : numface2 - 1    newbdry{i + 1} = [double(b2{5+gdim2}{i}), appendstr];  endelse  for faceind = 0 : numface2 - 1    for i = 0 : length(b2{5 + gdim2}{2,faceind}) - 1      ch1 = double(b2{5 + gdim2}{2,faceind}{i});      if (ch1(1) == '+' | ch1(1) == '-')        ch1 = ch1(2:end);      end      newbdry{length(newbdry) + 1} = ...          [double(ch1), appendstr];    end    for i = 0 : length(b2{5 + gdim2}{3,faceind}) - 1      ch1 = b2{5 + gdim2}{3,faceind}{i};      newib{length(newib) + 1} = ...          [double(ch1), appendstr];    end  endendfor fdim = 0 : di  if fdim == di   b{5+fdim} = cell(5,1);   b{5+fdim}{0,0} = double(b1{5+fdim}{0,0});   b{5+fdim}{1,0} = double(b1{5+fdim}{1,0});   b{5+fdim}{2,0} = [double(b1{5+fdim}{2,0}),newbdry];   b{5+fdim}{3,0} = [double(b1{5+fdim}{3,0}),newib];   b{5+fdim}{4,0} = {};  else    b{5 + fdim} = double(b1{5 + fdim});    if fdim <= gdim2      [scrap,levsize2] = size(b2{5+fdim});      for faceind = 0 : levsize2 - 1          nfaceind = faceind + double(level_size1(fdim));        b{5+fdim}{0, nfaceind} = ...          [double(b2{5+fdim}{0,faceind}),appendstr];        b{5+fdim}{1, nfaceind} = ...          double(b2{5+fdim}{1,faceind});        [scrap,numchildren] = size(b2{5+fdim}{2,faceind});        newch1 = cell(1,numchildren);        for i = 0 : numchildren - 1          newch1{i+1} = [double(b2{5+fdim}{2,faceind}{i}),appendstr];        end        b{5+fdim}{2,nfaceind} = newch1;        [scrap,numib] = size(b2{5+fdim}{3,faceind});        newib1 = cell(1,numib);        for j = 0 : numib - 1          newib{i+1} = [double(b2{5+fdim}{3,faceind}{j}),appendstr];        end        b{5+fdim}{3, nfaceind} = newib1;        b{5+fdim}{4, nfaceind} = double(b2{5+fdim}{4,faceind});        [scrap,numpatch] = size(b{5+fdim}{4, nfaceind});        for k = 0 : numpatch - 1          [n1,n2] = size(b{5+fdim}{4,nfaceind}{2,k});          b{5+fdim}{4,nfaceind}{2,k} =...             double(b{5+fdim}{4,nfaceind}{2,k}) + ...              brep1_numcp * ones(n1,n2);        end      end    end  endend% ------------------------------------------------------------------% Copyright (c) 1999 by Cornell University.  All rights reserved.% See the accompanying file 'Copyright' for authorship information,% the terms of the license governing this software, and disclaimers% concerning this software.% ------------------------------------------------------------------% This file is part of the QMG software.  % Version 2.0 of QMG, release date September 3, 1999% ------------------------------------------------------------------       

⌨️ 快捷键说明

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