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

📄 mainfbh1test.html

📁 Delaunay三角形的网格剖分程序
💻 HTML
字号:
<TITLE>COG 2.1: FBH nr. 1</TITLE><H1>FBH example nr. 1</H1> <P>In this example we have have a very complex but rectangular structure. <P><IMG SRC="fbh1test.gif"> <P>Thus, to define the geometry the standard <B><A HREF="mainoctree3dtest.html">CogenOctree</A></B> class issufficient. Of course, in the real application we have to useadditional <A HREF="mainreftest.html">local refinement</A>.<PRE>#include "<A HREF="coglib.hxx">cog/coglib.hxx</A>"</PRE> <P>First, we introduce self-commenting names for regions, faces andthe distances we need:<PRE>static wzRegion rAir(1);static wzRegion rGaAs(2);static wzRegion rMetal(3);static wzRegion rEntryPart(4);static wzRegion rConductor1(5);static wzRegion rConductor2(7);static wzRegion rInnerPart(6);static wzRegion rCrossbar(8);static wzRegion rPillar(9);wzFloat xHalf   =  2.0;	// half wide (symmetry x &lt;-&gt; -x)wzFloat yFull   =  5.0;	// full lengthwzFloat zDown   = -1.5;	// lower limit wzFloat zUp     =  1.0;	// upper limit of the layerwzFloat yCross  =  0.6;	// length of the crossbarwzFloat zCross  =  0.5;	// high of the crossbarwzFloat xCorner =  0.6;	// wide of the corner partswzFloat yCorner =  1.4;	// length of the corner partswzFloat xInner  =  1.4;	// wide of the inner holewzFloat xPillar =  0.2;	// wide of the supporting pillarwzFloat yPillar =  0.6;	// length of the supporting pillarwzFloat hz = 0.01;	// high of the conductorwzFloat hx = 0.1;	// wide of the conductorwzFloat dx = 0.1;	// wide of gap between conductor and inner sidewzFloat dy = dx;	// length of gap between conductor and inner sidewzFloat yb = 0.2;	// begin and end of the conductorwzFloat ybe= yCorner+dx;	// before first kinkwzFloat ye = yFull-yCorner-dx;	// after last kinkwzFloat yCenter =3*dy;	// size of the inner holeint main(){  wzFloat xbInner = (xHalf-xInner)/2.0, xeInner = xHalf-xbInner;  wzFloat xbEntry =  xCorner,           xeEntry = xHalf-xbEntry;  wzFloat xbPillar= (xHalf-xPillar)/2.0,xePillar= xHalf-xbPillar;  wzFloat ybCross = yCorner - yCross, yeCross = yFull-ybCross;  wzFloat yePillar= yFull-yPillar, yeCorner = yFull-yCorner;  wzFloat zTop    = zUp+hz;  wzFloat xb  = (xHalf-hx)/2.0, xe = xHalf-xb;  wzFloat xb0 = xbInner+dx, xe0 = xHalf-xb0;  wzFloat xb1 = xb0+hx+dx,  xe1 = xe0-hx-dx;  wzFloat yb0 = ybe+hx+dx, ymb = yb0+hx+dx;  wzFloat yme = ymb+yCenter+2*hx, ye0=yme+hx+dx;  wzFloat yu  = ymb+hx;  cogenOctree gen = new CogenOctree();  gen-&gt;addPlaneX(0.0);  gen-&gt;addBox(rGaAs,  -xHalf,xHalf, 0.0, yFull, zDown,0.0);  gen-&gt;addBox(rMetal, -xHalf,xHalf, 0.0, yFull, 0.0,zUp);</PRE> <P>Part for x&gt;0:<PRE>  gen-&gt;addBox(rInnerPart, xbInner,xeInner,  yCorner,yeCorner, 0.0,zUp);  gen-&gt;addBox(rEntryPart, xbEntry,xeEntry,  0.0,yCorner, 0.0,zUp);  gen-&gt;addBox(rEntryPart, xbEntry,xeEntry,  yeCorner,yFull, 0.0,zUp);  gen-&gt;addBox(rCrossbar,  xbEntry,xeEntry, ybCross,yCorner, 0.0,zCross);  gen-&gt;addBox(rCrossbar,  xbEntry,xeEntry, yeCorner,yeCross, 0.0,zCross);  gen-&gt;addBox(rPillar,  xbPillar,xePillar, 0.0,yPillar, 0.0,zUp);  gen-&gt;addBox(rPillar,  xbPillar,xePillar, yePillar,yFull, 0.0,zUp);  gen-&gt;addBox(rConductor2, xb,xe, yb,ybe,  zUp,zTop);  gen-&gt;addBox(rConductor1, xb,xe0, ybe,ye0, zUp,zTop);  gen-&gt;addBox(rInnerPart, xb,xe0-hx, ybe+hx, ye0-hx,  zUp,zTop);  gen-&gt;addBox(rConductor1, xb0,xe1, yb0,ye0, zUp,zTop);  gen-&gt;addBox(rInnerPart, xb0+hx,xe0-hx, yb0+hx,ye0-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, xb1,xe1, yb0,yme, zUp,zTop);  gen-&gt;addBox(rInnerPart, xb1,xe1-hx, yb0+hx, yme-hx,  zUp,zTop);  gen-&gt;addBox(rConductor1, xb1,xb+hx, ymb,yme, zUp,zTop);  gen-&gt;addBox(rInnerPart, xb1+hx,xb+hx, ymb+hx,yme-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, xb,xe, ye,yFull-yb, zUp,zTop);  gen-&gt;addBox(rConductor2, xb,xe, ye-hz,ye, 0.0,zTop);  gen-&gt;addBox(rConductor1, xb,xe, yu,ye,  0.0,hz);  gen-&gt;addBox(rConductor2, xb,xe, yu,yu+hz, 0.0,zTop);</PRE> <P>Symmetrical part for x&lt;0:<PRE>  gen-&gt;addBox(rInnerPart, -xeInner,-xbInner, yCorner,yeCorner, 0.0,zUp);  gen-&gt;addBox(rEntryPart, -xeEntry,-xbEntry, 0.0,yCorner,  0.0,zUp);  gen-&gt;addBox(rEntryPart, -xeEntry,-xbEntry, yeCorner,yFull, 0.0,zUp);  gen-&gt;addBox(rCrossbar,  -xeEntry,-xbEntry, ybCross,yCorner, 0.0,zCross);  gen-&gt;addBox(rCrossbar,  -xeEntry,-xbEntry, yeCorner,yeCross, 0.0,zCross);  gen-&gt;addBox(rPillar,  -xePillar,-xbPillar, 0.0,yPillar, 0.0,zUp);  gen-&gt;addBox(rPillar,  -xePillar,-xbPillar, yePillar,yFull, 0.0,zUp);  gen-&gt;addBox(rConductor2, -xe, -xb, yb, ybe, zUp,zTop);  gen-&gt;addBox(rConductor1, -xe0,-xb, ybe,ye0, zUp,zTop);  gen-&gt;addBox(rInnerPart,  -xe0+hx,-xb, ybe+hx,ye0-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, -xe1,-xb0, yb0,ye0, zUp,zTop);  gen-&gt;addBox(rInnerPart,  -xe0+hx,-xb0-hx, yb0+hx,ye0-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, -xe1,-xb1, yb0,yme, zUp,zTop);  gen-&gt;addBox(rInnerPart,  -xe1+hx,-xb1, yb0+hx,yme-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, -xb-hx,-xb1, ymb,yme, zUp,zTop);  gen-&gt;addBox(rInnerPart,  -xb-hx,-xb1-hx, ymb+hx,yme-hx, zUp,zTop);  gen-&gt;addBox(rConductor1, -xe,-xb, ye,yFull-yb, zUp,zTop);  gen-&gt;addBox(rConductor2, -xe,-xb, ye-hz,ye, 0.0,zTop);  gen-&gt;addBox(rConductor1, -xe,-xb, yu,ye,  0.0,hz);  gen-&gt;addBox(rConductor2, -xe,-xb, yu,yu+hz, 0.0,zTop);//  gen-&gt;refinementGlobal(1.0,1.0,0.5);  gen-&gt;omitEdgeComputation();  wzgrid grid = (*gen)();</PRE> <P>What remains are some definitions for output:<PRE>  rAir.material() = rAir;  rGaAs.material() = rGaAs;  rMetal.material() = rMetal;  rEntryPart.material() = rAir;  rCrossbar.material() = rMetal;  rInnerPart.material() = rAir;  rPillar.material() = rMetal;  rConductor1.material() = rMetal;  rConductor2.material() = rMetal;  grid->write("test.sg",wzDefaultSegmentDescription);}</PRE>

⌨️ 快捷键说明

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