File: scotch_example.f

package info (click to toggle)
scotch 6.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 20,872 kB
  • sloc: ansic: 80,043; makefile: 4,039; fortran: 2,536; yacc: 622; lex: 267; sh: 180
file content (121 lines) | stat: -rw-r--r-- 4,707 bytes parent folder | download | duplicates (6)
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