mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
122 lines
4.6 KiB
Fortran
122 lines
4.6 KiB
Fortran
************************************************************
|
|
** **
|
|
** 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
|