(3M) Calculator User Manual

edgenbr
vlbltab
verttab
velotab
vendtab
vnodnbr
velmbas
vnodbas
velmnbr
edgetab
24
11 10 11
5 9 2513 14 16 18 20 21 22 231
1 4
2
5
1
6
3
5 7 6 5 4 6 78 9 2 2 1 31 1 3 3 3 2 2 1
4
8
3
10
11
7
8 9
Figure 18: Sample mesh and its description by libScotch arrays using a compact
edge array. Numbers within vertices are vertex indices. Since the edge array is
compact, verttab is of size vertnbr + 1 and vendtab points to verttab + 1.
vendtab
Array of after-last indices in edgetab of ve rtex adjacency sub-arrays. For
any element or node vertex i, with baseval i < (baseval + vertnbr),
vendtab[i] verttab[i] is the degree of vertex i, and the indices of the
neighbors of i are stored in edgetab from edgetab[verttab[i]] to edgetab
[vendtab[i]1], inclusive.
When all vertex adjacency lists are sto red in order in edgetab, it is possible to
save memory by not allocating the physical memory for vendtab. In this case,
illustrated in Figure 18, verttab is of size vertnbr+ 1 and vendtab points to
verttab + 1. This case is referred to as the “compact edge array” case, such
that verttab is sorted in ascending order, verttab[baseval] = baseval and
verttab[baseval + vertnbr] = (baseval + edgenbr).
velotab
Array, of size vertnbr, holding the integer loa d associated with each vertex.
As for graphs, it is possible to handle elegantly dynamic meshes by means of the
verttab and vendtab arrays. There is, however, an additional constraint, which is
that mesh nodes and elements mus t be ordered consecutively. The so lution to fulfill
this constraint in the context of mesh ordering is to ke e p a set of empty elements
(that is, elements which have no node adjacency attached to them) between the
element and node arrays. For instance, Figure 19 represents a 4-element mesh
with 6 nodes, and such that 4 element vertex slots have been reserved for new
elements and nodes. These slots are empty elements for which verttab[i] equals
vendtab[i], irrespective of these values, since they will not lead to any memory
access in edgetab.
Using this layo ut of vertices, new nodes and elements can be created by growing
the element and node s ub- arrays into the empty element sub-array, by both of
its sides, without having to re-write the whole mesh structure, as illustrated in
Figure 20. Empty elements are trans parent to the mesh ordering routines, which
base their work on node vertices only. Users who want to update the arrays of
53