On return,
permtab
holds the direct permutation of the unknowns, that is,
node vertex
i
of the original mesh has index
permtab[
i
]
in the reordered
mesh, while
peritab
holds the inverse permutation, that is, node vertex
i
in the reordered mesh had index
peritab[
i
]
in the original mesh. All of
these indices are numbered according to the base value of the source mesh:
permutation indices are numbered from min(
velmbas
,
vnodbas
) to
vnodnbr
+
min(
velmbas
,
vnodbas
)
−
1, that is, from 0 to
vnodnbr
−
1 if the mesh base
is 0, and from 1 to
vnodnbr
if the mesh base is 1. The base value for mesh
orderings is taken as min(
velmbas
,
vnodbas
), and not just as
vnodbas
, such
that orderings that are computed on some mesh have exactly the same index
range as orderings that would be computed on the graph obtained from the
original mesh by means of the
SCOTCH meshGraph
routine.
The three other result fields,
*cblkptr
,
rangtab
and
treetab
, contain data
related to the block structure.
*cblkptr
holds the number of column blocks
of the produced ordering, and
rangtab
holds the starting indices of each of the
permuted column blocks, in increasing order, so that column block
i
starts at
index
rangtab[
i
]
and ends at index (
rangtab[
i
+1
]
−
1), inclusive, in the new
ordering.
treetab
holds the separators tree structure, that is,
treetab[
i
]
is
the index of the father of column block
i
in the separators tree, or
−
1 if column
block
i
is the root of the separators tree. Please refer to Section 7.2.5 for more
information.
Return values
SCOTCH meshOrder
returns 0 if the ordering of the mesh has been successfully
computed, and 1 else. In this last case, the
rangtab
,
permtab
, and
peritab
arrays may however have been partially or completely filled, but their contents
are not significant.
7.9.2
SCOTCH meshOrderInit
Synopsis
int SCOTCH meshOrderInit (const SCOTCH Mesh *
meshptr,
SCOTCH Ordering *
ordeptr,
SCOTCH Num *
permtab,
SCOTCH Num *
peritab,
SCOTCH Num *
cblkptr,
SCOTCH Num *
rangtab,
SCOTCH Num *
treetab)
scotchfmeshorderinit (doubleprecision (*)
meshdat,
doubleprecision (*)
ordedat,
integer*
num
(*)
permtab,
integer*
num
(*)
peritab,
integer*
num
cblknbr,
integer*
num
(*)
rangtab,
integer*
num
(*)
treetab,
integer
ierr)
Description
104