📄 mainfbh2test.html
字号:
<TITLE>COG 2.1: FBH nr. 2</TITLE><H1>FBH example nr. 2</H1> <P>In this example we have to combine a rectangular planar structurewith a cylindrical hole: <P><IMG SRC="fbh2test.gif"><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 rLuft(1);static wzRegion rGaAs(2);static wzRegion rMetal(3);static wzRegion rBase(6);static wzRegion rCylinder(7);static wzFace fMetal(3);static wzFace fCylinder(7);static wzFace fBase(6);wzFloat xHalf = 800; // half of the wide (x<->-x is symmetry)wzFloat yFull = 1025; // full length in y-directionwzFloat zGaAs = 150; // thickness of the GaAs layerwzFloat zMetal = 3; // thickness of the metallic layerwzFloat zTop = 783; // upper size for airwzFloat xMetal = 110; // wide of the metallic connectionwzFloat yMetal = 460; // lenght of the metallic connectionwzFloat dCyl = 90; // diameter of the cylindrical holewzFloat dBase = 130; // wide of the metallic base of the cylinderwzFloat yCenter= 525; // center of the base and the cylinder// begin (b) and end (e) values for some regions:wzFloat yb = -yCenter, ye = yFull-yCenter;wzFloat xbb = -dBase/2, xbe = dBase/2, ybb = xbb, ybe = xbe;wzFloat xmb = -xMetal/2,xme = xMetal/2, ymb = -yCenter, yme = ybb;</PRE> <P>Now, we define the rectangular part of the grid. Note that wedistiguish two metallic regions (rBase, rMetal) and define <A HREF="mainfacetest.html">face numbers</A> for these regions.<PRE>int main(){ cogenOctree rec = new CogenOctree(); rec->addBox(rGaAs, -xHalf,xHalf, yb,ye, -zGaAs,0.0); wzIndex ib = rec->addBox(rBase, xbb,xbe, ybb,ybe, 0.0,zMetal); wzIndex im = rec->addBox(rMetal, xmb,xme, ymb,yme, 0.0,zMetal); rec->setFaceOfBox(fMetal,im); rec->setFaceOfBox(fBase,ib); rec->addPlaneZ(zTop-zGaAs); rec->addPlaneZ(zMetal/2);</PRE> <P>The reason for using different metallic regions is that we wantdifferent <A HREF="mainreftest.html">refinement criteria</A>:<PRE> cogenRefine recref = new CogenRefine(rec->generator()); recref->refinementGlobal(200,200,200); recref->refinementInRegion(200,200,50,rGaAs); recref->refinementInRegion(50,100,zMetal,rMetal); recref->refinementInRegion(25,25,zMetal,rBase);</PRE> <P>Now let's define the cylinder. The cylinder is full (from radius0.0, angle -pi..pi). Note that the refinement in z-direction should becompatible with the refinement outside.<PRE> wzFloat rCyl = dCyl/2, rCylEnv = rCyl+10; cogenOctree cylbase = new CogenOctree(); cylbase->setBorder(0.0,rCylEnv, -wzPi,wzPi, -zGaAs,zTop-zGaAs); ib = cylbase->addBox(rBase, 0.0,rCylEnv, -wzPi,wzPi, 0.0,zMetal); cylbase->setFaceOfBox(fBase,ib); wzIndex ic = cylbase->addBox(rCylinder, 0.0,rCyl, -wzPi,wzPi, -zGaAs,0.0); cylbase->setFaceOfBox(fCylinder,ic); cylbase->addPlaneZ(zMetal/2); cogenRefine cylref = new CogenRefine(cylbase->generator()); cylref->refinementGlobal(22,0.5,200); cylref->refinementInRegion(22,0.5,50,rCylinder); cylref->refinementInRegion(22,0.5,zMetal,rBase); wz3dmap ccyl = new wz3Dcylinder(); cogenChart cyl = new CogenChart(cylref->generator(),ccyl);</PRE> <P>Then we define the <A HREF="mainuniontest.html">union</A> of thesetwo grids. The cylinder comes first, because in the part where abovegrids are defined we want to use the cylinder grid:<PRE> cogenComposite gen = new CogenUnion; gen->add(cyl->generator()); gen->add(recref->generator()); wzgrid grid = (*gen)(); grid->write("test.sg");}</PRE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -