1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
************************************************************
** **
** NAME : scotch_example.f **
** **
** AUTHOR : Francois PELLEGRINI **
** **
** FUNCTION : FORTRAN testbed for the LibSCOTCH **
** library routines. **
** **
** DATES : # Version 3.4 : from : 04 feb 2000 **
** to 07 feb 2000 **
** # Version 4.0 : from : 13 mar 2005 **
** to 13 mar 2005 **
** **
*234567*****************************************************
PROGRAM SCOTCH_TEST
IMPLICIT NONE
INCLUDE "scotchf.h"
DOUBLEPRECISION SCOTCHGRAPH (SCOTCH_GRAPHDIM)
INTEGER VERTNBR
DATA VERTNBR / 3 /
INTEGER EDGENBR
DATA EDGENBR / 4 /
INTEGER VERTTAB (4)
DATA VERTTAB / 1, 2, 4, 5 /
INTEGER EDGETAB (4)
DATA EDGETAB / 2, 1, 3, 2 /
INTEGER INDXTAB (1)
INTEGER IDXVERTNBR
INTEGER IDXVERTTABIDX, IDXVENDTABIDX
INTEGER IDXVELOTABIDX, IDXVLBLTABIDX
INTEGER IDXEDGENBR
INTEGER IDXEDGETABIDX, IDXEDLOTABIDX
INTEGER IDXBASEVAL, IDXFLAGVAL
INTEGER IERR
PRINT *, 'Starting'
CALL SCOTCHFGRAPHINIT (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot initialize graph'
STOP
ENDIF
CALL SCOTCHFGRAPHBUILD (SCOTCHGRAPH (1), 1, VERTNBR,
* VERTTAB (1), VERTTAB (2),
* VERTTAB (1), VERTTAB (1),
* EDGENBR,
* EDGETAB (1), EDGETAB (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot build graph'
STOP
ENDIF
CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid check'
STOP
ENDIF
PRINT *, 'Outputing original graph'
CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid graph output'
STOP
ENDIF
CALL SCOTCHFGRAPHDATA (SCOTCHGRAPH (1), INDXTAB (1),
* IDXBASEVAL, IDXVERTNBR,
* IDXVERTTABIDX, IDXVENDTABIDX,
* IDXVELOTABIDX, IDXVLBLTABIDX,
* IDXEDGENBR,
* IDXEDGETABIDX, IDXEDLOTABIDX,
* IDXFLAGVAL, IERR);
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot get graph data'
STOP
ENDIF
PRINT *, 'Number of vertices : ', IDXVERTNBR
PRINT *, 'Index of verttab : ', IDXVERTTABIDX
PRINT *, 'Index of vendtab : ', IDXVENDTABIDX
PRINT *, 'Index of velotab : ', IDXVELOTABIDX
PRINT *, 'Index of vlbltab : ', IDXVLBLTABIDX
PRINT *, 'Number of edges : ', IDXEDGENBR
PRINT *, 'Index of edgetab : ', IDXEDGETABIDX
PRINT *, 'Index of edlotab : ', IDXEDLOTABIDX
PRINT *, 'Updating vertex and edge arrays'
INDXTAB (IDXVERTTABIDX + 1) = 3
INDXTAB (IDXEDGETABIDX) = 2
INDXTAB (IDXEDGETABIDX + 1) = 3
INDXTAB (IDXEDGETABIDX + 2) = 1
INDXTAB (IDXEDGETABIDX + 3) = 1
PRINT *, 'Outputting updated graph'
CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid check'
STOP
ENDIF
CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid graph output'
STOP
ENDIF
CALL SCOTCHFGRAPHEXIT (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot destroy graph'
STOP
ENDIF
PRINT *, 'Test complete'
RETURN
END
|