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

📄 noderemoval.html

📁 Delaunay三角形的网格剖分程序
💻 HTML
字号:
<TITLE>COG 2.1: Node removal</TITLE><H1>Node Removal Algorithm</H1> <P>It should be noted that the <A HREF="cogenoctree.html">octreealgorithm</A> sometimes (unfortunately, not seldom) fails to createnice grids, for various reasons.  An especially critical part is the<B>node removal algorithm</B>.  The purpose of this algorithm is toremove some nodes created by the standard octree algorithm.<H2>Purpose and Problems of the Algorithm</H2> <P>In general, if there is no close relation between geometry andgrid (as for the rectangular boxes) the surface intersections withthe grid lines form a not very uniform surface grid: <P><IMG SRC="smallnearface.gif"> <P>Without further action we obtain arbitrary small tetrahedraresp. triangles near and on the surface, because an inner node, byaccident close to the surface, leads to close intersections with thesurface.  Most people don't like such things.  Nodes near innersurfaces also have higher probabilities to cause geometry errors,especially <B>bad region cell</B>. <P>To avoid such situations, we try to remove nodes near the surfaceas well as some the surface nodes.  But this is a dangerous game.Doing too much is problematic too.  Unfortunately, what is good in onesituation may be bad in another one.  Therefore, sometimes it may beuseful for you to be able to manipulate this algorithm.  Doing thishas the following influence on the grid: <UL> <LI> Removing more region nodes avoids errors of type <B>bad regioncell</B> and descreses the number of small cells near the bondary.Removing too much of them leads to a slightly strange, unwanted gridproperty: we usually need high refinement near the surface, but,instead, immediately near the surface the grid becomes more coarse. <LI> Removing face nodes makes the surface grid better, decreases thenumber of thin cells near the surface, and helps to avoid errors oftype <B>bad face cell</B>.  Removing too much of them creates errorsof type <B>bad region cell</B>. </UL><H2>Radical Try</H2> <P>The most radical way to influence this behaviour - to <B>omit</B>the node removal completely or to <B>enforce</B> all reasonablepossibilities - are defined by the following calls:<PRE>  cogenOctree octree = ...;  octree-&gt;omitRegionNodeRemoval();  octree-&gt;omitFaceNodeRemoval();  octree-&gt;omitEdgeNodeRemoval();  octree-&gt;omitVertexNodeRemoval();  octree-&gt;enforceRegionNodeRemoval();  octree-&gt;enforceFaceNodeRemoval();  octree-&gt;enforceEdgeNodeRemoval();  octree-&gt;enforceVertexNodeRemoval();</PRE> <P>Thus, to avoid <B>bad region cell</B> errors, try<PRE>  octree-&gt;enforceRegionNodeRemoval();  octree-&gt;omitFaceNodeRemoval();  octree-&gt;omitEdgeNodeRemoval();  octree-&gt;omitVertexNodeRemoval();</PRE> <P>I recommend to try these calls to understand if the node removalalgorithm is related with your problem or not.  If not, the finetuning of the algorithm described below will not help you too.<H2>Fine Tuning</H2> <P>There are several independent parts of the node removal algorithmwhich remove nodes which are "bad" in various situations. <H3>Removing Underdogs</H3> <P>The minimal node removal procedure removes inner nodes if facenodes are in the immediate <I>delta</I>-neighbourhood, that means, inthe environment of accuracy of boundary computation.  In this case, weassume that the grid node itself is located on the surface.  We movethe (approximately computed) surface position to the position of theinner node (which is the exact surface position in the case of octreeboxes) and remove the related inner node (the <I>underdog</I>).  Thesame happens for face nodes near edge nodes and edge nodes nearvertices. <P>To include/exclude this minimal node removal use the followingcall:<PRE>  octree-&gt;removeUnderdogs(wzTrue);  octree-&gt;removeUnderdogs(wzFalse);</PRE><H3>Removing Irregular Neighbours</H3> <P>Another possibility which seems always reasonable to include is toremove "irregular nodes".  These are the nodes without opposites incubes/rectangles where the refinement level changes.  If such cubeshave surface intersections it seems necessary to remove them. (Usuallyin this case the cube will be regularized, so that such nodes do notappear.)<PRE>  octree-&gt;removeIrregularNodes(wzTrue);  octree-&gt;removeIrregularNodes(wzFalse);</PRE><H3>Removing Face Intersections With Long Sides</H3> <P>This node removal possibility is especially important foranisotropic grid generation and slightly skew surfaces.  In thiscase, the non-beautiful situation of the left picture (named<B>spider</B>) may appear: <P><IMG SRC="spider.gif"> <IMG SRC="spiderremoved.gif"> <P>The following point removal procedure removes the critical nodes -surface intersections with the longer sides - to obtain the rightpicture:  <PRE>  octree-&gt;removeLongSideIntersections(wzTrue);  octree-&gt;removeLongSideIntersections(wzFalse);</PRE> <P>Unfortunately, in some situations this node removal leads to<B>bad region cell</B> errors.  Moreover, in isotropic grids it is notvery helpful.

⌨️ 快捷键说明

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