Mesh Objects
The Mesh Data consist of four objects, shown below along with the
header files in which the objects are declared. The toplevel
definition of the Mesh is in dataset.h
The Mesh Objects are created when the input file is read by calling
the following IPlotDataSet functions.
- CreateMeshPointList( nummatnodes );
- CreateMeshElemList( numelems );
- CreateMeshEdgeList( numelems * 3 );
- CreateMeshSolutionLists( numsols );
The above functions allocate space for the various lists. The lists
are then filled in with data from input file by the following
functions. The Mesh List is actually created larger than it
needs to be, in all likelyhood, but this is an upper bound on its
size. While the Point, Elem and Edge Lists create
space once, the Solution List function creates space once for
enough names and a few properties, and then must create space for
enough solution values at every mesh point.
- FillMeshPointList( pi, pj );
- FillMeshElemList( elem, elemtype );
- FillMeshEdgeList( elem, numpoints );
- FillMeshSolutionLists( numsols );
Point List
The Point List is filled by basically dumping the data
straight in.
Edge List
The Edge List is created from the Point List and the
Element List simply to speed up the plotting of the mesh. The
algorithm creates an array of size Number of Mesh Points squared. It
then builds the Edge List such that no edges are duplicated outright,
or are duplicated by reversing the order of the points. Mesh Plots
are carried out then, by plotting every edge in this list.
Element List
The Element List is hard coded to have 3 points per element. The
function first sets the element type of each element and then that
type is passed to each of the three points. The points are found by
number and the element does not maintain pointers to its points.
There is, however, one complication to setting the material types of
the points. When multiple materials meet at a single point in
physical space, we can end up with several points that have the same
coordinates, but need to have different material types. The point
indeces which define the elements, however, always specify the
point number of the first point structure that was defined for each
set of coordinates.
In other words, if Silicon and Silicon Oxide share a border, then the
points along the border are duplicated in the IPlot Data Point List,
once for Si and once for SiO2. The point indeces that define the Si
and SiO2 elements, however, will not be distinct for points that lie
on this border. Therefore we must search through the IPlot Data Point
List for a point whose material type either matches the element's
material type, or whose material value has not yet been set.
If the point's material type = -1
- Set the material of this point to match the element's material
If the point's material type != the element material type
- Check the next point in the IPlot Data Point List
If the point's material type = the element material type
- The material is already correctly set, do nothing
Important Note!
Due to the structure of the above algorithm and the algorithm which
returns data about a specific point during Node Plots, Points in
the IPlot Data Point List must be set so that points with identical
coordinates lie in a contiguous space within the list of points
(
See Things To Do )
Solution List
The Fill Mesh Solution List function is called once for each
solution. The function GetParameters looks up several
parameters based on the name of the solution. Then all of the points
in the Mesh Point List are given values for that particular
solution. Note: In the case of a 1D Cross Section it is the points in
the Geometry Point List which will hold the solution values.
( See
1D Cross Sections )
IPlot Home Page
Technical Doc's
User's Guide
IPlot and its accompanying WWW pages were written by
Gene McKenna
a member of
Stanford University's famous
TCAD Group