467days since
Proposal Due Date

Recent site activity

home‎ > ‎

Architecture Geometry

Geometry Entry

A very usable 2D geometry capability for Field Marshal can be developed using Python objects. FM geometric objects (GOs) would be composite entities consisting of other GOs and primitive geometric elements (PGEs). PGEs would be the foundation elements of geometry input, e.g. lines, circular arcs, etc. The PGEs are what eventually get plotted and projected onto grids. The GOs provide a way of managing the geometry and attaching properties to particular elements.


GOs would have certain “methods” associated with them. An initial list would include: translate, rotate, scale, duplicate. Methods provide some very useful capabilities for both geometry construction and for library use. The GOs would also have “attributes”. Attributes would include material properties, entry point, exit point, bounding box and other useful information.

The PGEs would have associated (mathematical) parameters. These would be the data necessary to uniquely define the geometric entity. In addition to the parameters PGEs will also require methods, for example Tangent, Normal, y_FofX ( y = f(x) ) and x_GofY ( x = f -1(y) ). These methods will be used to locate boundary points on grids.

Geometry input would consist of entering names and parameters in a “tabbed” table. An example is shown below. Here an object called “Cathode” is being entered. This object has the “translate” method applied and has a material “attribute” of PEC (perfect electric conductor). “Cathode” consists of three additional objects: Emitter, Focus Electrode and Shank. Each of these objects inherits the methods and attributes applied to “Cathode”. The three GOs consist of one or more PGEs. The PGEs would have parameters sufficient to uniquely specify them.
Cathode    
M: Trans=+1.5    
A: Mat=PEC
Emitter
 arc_cir2    (1.0, 1.0), (2.0, 2.0), (.7, .7)
Focus Electrode
line (2.0, 2.0), (2.0, 3.0)
hline (2.0, 3.0) (4.0)
arc_cir4 (2.0,4.0), (6.0,7.0), (.5, .5)
arc_cir1 (2.0, 2.0),(1.0,1.0), (3.3,3.4)
hline (3.3,3.4), (3.7)
Shank
         arc_cir2  (2.0,4.0), (6.0,7.0), (.5, .5)
hline (3.3,3.4), (3.7)
arc_cir4 (2.0,4.0), (6.0,7.0), (.5, .5)

The PGE parameters in this list will generally be either numbers or empty; however, there are good reasons to provide a bit more flexibility. Parameter entry will also provide the options “Last”, “Next” and “Label”. “Last” means pick up the value from the corresponding last value of the previous PGE (i.e. from the Exit_Point attribute). For example, a line might need an initial point specified. The user might choose to get the x-value of that point from the last x-value of the previous element. In a similar vein, “Next” picks up the equivalent value from the next PGE (i.e. from the Entry_Point attribute). The “Label” allows a text label to be used. This can be used for parametric studies by replacing the label in the text file with a sequence of values.


To display a geometry, the “tabbed” table is parsed and the resulting PGEs are written to a text file. All of the methods are applied to the PGEs during the parsing process and a GO list is attached so that geometric elements can be linked back to properties. This is the set of geometric primitives that are then plotted. (Note that for cases where labels have been used nominal values will have to be provided for display purposes.) For example:


col 01Col 11Col 21
 arc_cir2par1, par2, …GO1, GO2, …
 line par1, par2, … GO1, GO2, …
 hline par1, par2, … GO1, GO2, …
 arc_cir4 par1, par2, … GO1, GO2, …
 arc_cir1 par1, par2, … GO1, GO2, …
 hline par1, par2, … GO1, GO2, …
 arc_cir2 par1, par2, … GO1, GO2, …
 arc_cir4 par1, par2, … GO1, GO2, …
 hline par1, par2, …GO1, GO2, …




The tabbed display of objects needs to be changeable to List By Object, List By Method, and List By Attribute. For example one might want to see all objects that are perfect electric conductors. The tabbed display and the plot of the geometry need to be linked so that things can be highlighted in one window and automatically be highlighted in the other.


There are details to be filled in here many of which really require trial implementations and testing.


Grid and Boundary Generation
The first step in this process is the creation of a “CutBox”. A CutBox is a rectangular box outlining a specific portion of the geometry and linking it to a specific simulation tool.  CutBoxes are special geometric objects with methods and attributes that differ from standard GOs. They are entered in the tabbed display just like any other GO.

When a CutBox is activated a sub-geometry is created consisting of all the objects whose BoundingBox attribute intersects the CutBox. Further processing “trims” the geometric objects so that only the portions lying within the CutBox are kept. The geometry then consists of the trimmed objects and the rectangular boundary of the CutBox. At this point a new window is created with the CutBox geometry and several input options.

Things have been fairly generic up to this point. To go beyond this requires that options and data be specialized for the particular tool that is attached to the CutBox. The text file describing tool variables (GVT) is loaded into the CUI and presented to the user for parameter input. It is also necessary to specify what geometry/grid capabilities the tool has or can deal with. For example:

  •  Does the tool use geometry elements or boundary points (i.e. does the tool compute its own grid or must it be input)?
  • If the tool requires geometry then must describe how to translate FM geometry to tool geometry (probably requires a program to do this)
  •  If the tool requires boundary points then must describe data and format
  •  Does the tool need grid information that is not contained in the tool’s GVT?
  •  Can the tool work with grid blocks?
  •  Can the tool work with multiple grid levels?
  •  Can the tool work with grid patches?

For tools that do their own gridding, the Poisson Group codes for example, a translator tool is activated and a compatible geometry file is generated. The CUI is activated, parameters are entered by the user and the tool is executed.

For tools that take full advantage of the FM environment, the user is asked to specify a background grid (square?) and then rectangular grid blocks. The grid blocks are where the actual gridding and solution will be done. The blocks must be conformal to the background grid, i.e. block sides are integral numbers of background cells. Blocks must also share at least part of one side with another block if more than one block is used. The user then sets the number of grid refinements for each block (always a doubling of cells in each direction).

Within grid blocks users are also asked to specify any grid patches. Grid patches provide enhanced grid resolution over a restricted area when that level of resolution is not needed over the entire block. A patch must be contained completely within a grid block and must also be conformal to the background grid. The user sets the number of refinements that will be applied to the patch. Patch refinement actually starts at the highest refinement of the block that contains it and goes from there. This provides a capability to analyze restricted areas at very high resolution, e.g. field emitter tips within a larger device. As the user specifies each of these items (background grid, blocks, patches, etc.) they are displayed in the geometry plot to provide visual feedback.

When the user has finished defining the grid blocks and patches then the boundary is computed, specifically the points of intersection of each of the PGEs with the block and patch grids at each level of resolution. The boundary is stored for each grid region at each resolution for later use. The information that is stored contains a link for each boundary point back to the PGE (and hence the GO) that produced it.


Connecting data, geometry and tools

  •  The entered data must be moved to the simulation codes. This process will be different for legacy versus new tools. Use numarray for new tools??? Create input files for legacy codes. (other wrapper tools?)
  •  Linkage of physical properties (from data entry) to geometry elements
  •  Linkage of specific (rectangular) areas to specific tools