Scotch Brand 5.1.10 User Manual

Page 98

Advertising
background image

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 + vnodnbr1) 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

Advertising