scotchfmeshbuild (doubleprecision (*)
meshdat,
integer*
num
velmbas,
integer*
num
vnodbas,
integer*
num
velmnbr,
integer*
num
vnodnbr,
integer*
num
(*)
verttab,
integer*
num
(*)
vendtab,
integer*
num
(*)
velotab,
integer*
num
(*)
vnlotab,
integer*
num
(*)
vlbltab,
integer*
num
edgenbr,
integer*
num
(*)
edgetab,
integer*
num
ierr)
Description
The
SCOTCH meshBuild
routine fills the source mesh structure pointed to by
meshptr
with all of the data that is passed to it.
velmbas
and
vnodbas
are the base values for the element and node ver-
tices, respectively.
velmnbr
and
vnodnbr
are the number of element and
node vertices, respectively, such that either
velmbas
+
velmnbr
=
vnodnbr
or
vnodbas
+
vnodnbr
=
velmnbr
holds, and typically min(
velmbas
,
vnodbas
) is
0 for structures built from C and 1 for structures built from Fortran.
verttab
is the adjacency index array, of size (
velmnbr
+
vnodnbr
+ 1) if the edge ar-
ray is compact (that is, if
vendtab
equals
vendtab
+ 1 or
NULL
), or of size
(
velmnbr
+
vnodnbr
1) else.
vendtab
is the adjacency end index array, of size
(
velmnbr
+
vnodnbr
) if it is disjoint from
verttab
.
velotab
is the element
vertex load array, of size
velmnbr
if it exists.
vnlotab
is the node vertex load
array, of size
vnodnbr
if it exists.
vlbltab
is the vertex label array, of size
(
velmnbr
+
vnodnbr
) if it exists.
edgenbr
is the number of arcs (that is, twice
the number of edges).
edgetab
is the adjacency array, of size at least
edgenbr
(it can be more if the edge array is not compact).
The
vendtab
,
velotab
,
vnlotab
and
vlbltab
arrays are optional, and a
NULL
pointer can be passed as argument whenever they are not defined. Since, in
Fortran, there is no null reference, passing the
scotchfmeshbuild
routine a
reference equal to
verttab
in the
velotab
,
vnlotab
or
vlbltab
fields makes
them be considered as missing arrays. Setting
vendtab
to refer to one cell
after
verttab
yields the same result, as it is the exact semantics of a compact
vertex array.
To limit memory consumption,
SCOTCH meshBuild
does not copy array data,
but instead references them in the
SCOTCH Mesh
structure. Therefore, great
care should be taken not to modify the contents of the arrays passed to
SCOTCH meshBuild
as long as the mesh structure is in use. Every update
of the arrays should be preceded by a call to
SCOTCH meshExit
, to free in-
ternal mesh structures, and eventually followed by a new call to
SCOTCH
meshBuild
to re-build these internal structures so as to be able to use the
new mesh.
To ensure that inconsistencies in user data do not result in an erroneous behav-
ior of the
libScotch
routines, it is recommended, at least in the development
98