1
/* Copyright 2004,2007 ENSEIRB, INRIA & CNRS
3
** This file is part of the Scotch software package for static mapping,
4
** graph partitioning and sparse matrix ordering.
6
** This software is governed by the CeCILL-C license under French law
7
** and abiding by the rules of distribution of free software. You can
8
** use, modify and/or redistribute the software under the terms of the
9
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
10
** URL: "http://www.cecill.info".
12
** As a counterpart to the access to the source code and rights to copy,
13
** modify and redistribute granted by the license, users are provided
14
** only with a limited warranty and the software's author, the holder of
15
** the economic rights, and the successive licensors have only limited
18
** In this respect, the user's attention is drawn to the risks associated
19
** with loading, using, modifying and/or developing or reproducing the
20
** software by the user in light of its specific status of free software,
21
** that may mean that it is complicated to manipulate, and that also
22
** therefore means that it is reserved for developers and experienced
23
** professionals having in-depth computer knowledge. Users are therefore
24
** encouraged to load and test the software's suitability as regards
25
** their requirements in conditions enabling the security of their
26
** systems and/or data to be ensured and, more generally, to use and
27
** operate it in the same conditions as regards security.
29
** The fact that you are presently reading this means that you have had
30
** knowledge of the CeCILL-C license and that you accept its terms.
32
/************************************************************/
34
/** NAME : hgraph_order_si.c **/
36
/** AUTHOR : Francois PELLEGRINI **/
38
/** FUNCTION : This module orders halo graph vertices **/
39
/** using a simple method. **/
41
/** DATES : # Version 3.2 : from : 01 nov 1996 **/
42
/** to 21 aug 1998 **/
43
/** # Version 3.3 : from : 02 oct 1998 **/
44
/** to 02 oct 1998 **/
45
/** # Version 4.0 : from : 19 dec 2001 **/
46
/** to 11 dec 2002 **/
48
/************************************************************/
51
** The defines and includes.
54
#define HGRAPH_ORDER_SI
61
#include "hgraph_order_si.h"
63
/*****************************/
65
/* This is the main routine. */
67
/*****************************/
69
/* This routine performs the ordering.
71
** - 0 : if the ordering could be computed.
77
const Hgraph * restrict const grafptr,
78
Order * restrict const ordeptr,
79
const Gnum ordenum, /*+ Zero-based ordering number +*/
80
OrderCblk * restrict const cblkptr) /*+ Single column-block +*/
85
if (grafptr->s.vnumtax == NULL) { /* If graph is original graph */
86
for (vertnum = grafptr->s.baseval, vnumnum = ordenum;
87
vertnum < grafptr->vnohnnd; vertnum ++, vnumnum ++)
88
ordeptr->peritab[vnumnum] = vertnum;
90
else { /* Graph is not original graph */
91
for (vertnum = grafptr->s.baseval, vnumnum = ordenum;
92
vertnum < grafptr->vnohnnd; vertnum ++, vnumnum ++)
93
ordeptr->peritab[vnumnum] = grafptr->s.vnumtax[vertnum];