Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

901 lines
23 KiB

2 years ago
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
C NTESS, the U.S. Government retains certain rights in this software.
C
C See packages/seacas/LICENSE for details
C=================================================================
C This is just a simple test program to test the fortran interface
C for the NEMESIS I library.
C This file was created by translating ne_test.c into fortran.
C=================================================================
C=================================================================
PROGRAM NETEST
C=================================================================
INCLUDE 'exodusII.inc'
INCLUDE 'test_nem.inc'
C local variables
INTEGER NEID, IO_WS, CPU_WS, T_PASS, T_FAIL, DBG_FLAG, IERR
CHARACTER FNAME*256, YO*6
REAL VERSION
YO = 'NETEST'
IO_WS = 0
CPU_WS = 0
T_PASS = 0
T_FAIL = 0
DBG_FLAG = 0
C now let's get going...
C I don't care about input arguments, so the file name will be ne_test.nemI
FNAME = 'test_nem.exo'
C and set the debug flag to 0
DBG_FLAG = 0
PRINT*, '******************Output Tests*****************'
C create the exodus II file
PRINT*, 'creating ExodusII file...'
NEID = EXCRE(FNAME, EXCLOB, CPU_WS, IO_WS, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
PRINT*, YO, ': ERROR, unable to create test file', FNAME, '!'
GOTO 100
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of initial information
PRINT*, 'testing init info output...'
CALL EXPII(NEID, NPROC, NPROCF, 'S', IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of initial global information
PRINT*, 'testing global init info output...'
CALL EXPIG(NEID, NNG, NEG, NEBG, NNSG, NSSG, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the global element block IDs
PRINT*, 'testing global element block ID output...'
CALL EXTPEBI(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the global node-set info
PRINT*, 'testing global node-set params output...'
CALL EXTPNSP(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the global side-set info
PRINT*, 'testing global side-set params output...'
CALL EXTPSSP(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the concatenated load-balance parameters
PRINT*, 'testing concatenated load balance info output...'
CALL EXTPLBPC(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the node map
PRINT*, 'testing node map output...'
CALL EXTPNM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the element map
PRINT*, 'testing element map output...'
CALL EXTPEM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test the output of the concatenated communication map params
PRINT*, 'testing concatenated communication map params output...'
CALL EXTPCMPC(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test nodal communication map output
PRINT*, 'testing nodal communication map output...'
CALL EXTPNCM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test elemental communication map output
PRINT*, 'testing elemental communication map output...'
CALL EXTPECM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Close the ExodusII/Nemesis test file
PRINT*, 'closing ExodusII file...'
CALL EXCLOS(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
PRINT*, YO, ': ERROR, unable to close test file', FNAME, '!'
GOTO 100
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C=================================================================
C INPUT TEST SECTION
C=================================================================
PRINT*, '******************Input Tests******************'
C Re-open the ExodusII/NemesisI file
PRINT*, 'reopening ExodusII file...'
NEID = EXOPEN(FNAME, EXREAD, CPU_WS, IO_WS, VERSION, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
PRINT*, YO, ': ERROR, unable to open test file', FNAME, '!'
GOTO 100
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of of the initial information
PRINT*, 'testing init info input...'
CALL EXTGII(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of initial global information
PRINT*, 'testing global init info input...'
CALL EXTGIG(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of global element block IDs
PRINT*, 'testing global element block IDs input...'
CALL EXTGEBI(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of global node-set params
PRINT*, 'testing global node-set params input...'
CALL EXTGNSP(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of global side-set params
PRINT*, 'testing global side-set params input...'
CALL EXTGSSP(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of load-balance params
PRINT*, 'testing load-balance params input...'
CALL EXTGLBP(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of the node map
PRINT*, 'testing node map input...'
CALL EXTGNM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of the element map
PRINT*, 'testing element map input...'
CALL EXTGEM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of nodal communication maps
PRINT*, 'testing nodal communication map input...'
CALL EXTGNCM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Test read of elemental communication maps
PRINT*, 'testing elemental communication map input...'
CALL EXTGECM(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
IF (DBG_FLAG.EQ.1) THEN
GOTO 100
END IF
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
C Close the ExodusII/Nemesis test file
PRINT*, 'closing ExodusII file...'
CALL EXCLOS(NEID, IERR)
IF (IERR.NE.0) THEN
PRINT*, '...FAILED'
T_FAIL = T_FAIL + 1
PRINT*, YO, ': ERROR, unable to close test file', FNAME, '!'
GOTO 100
ELSE
PRINT*, '...successful'
T_PASS = T_PASS + 1
END IF
PRINT*, 'Tests Passed: ', T_PASS
PRINT*, 'Tests Failed: ', T_FAIL
100 CONTINUE
END
C=================================================================
SUBROUTINE EXTPEBI(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, EBLK_IDS(NEBG)
INTEGER EBLK_CNTS(NEBG)
DO 110 I=1,NEBG
EBLK_IDS(I) = I
EBLK_CNTS(I) = 10
110 CONTINUE
CALL EXPEBIG(NEID, EBLK_IDS, EBLK_CNTS, IERR)
END
C=================================================================
SUBROUTINE EXTPNSP(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, GLBL_IDS(NNSG), GLBL_NC(NNSG), GLBL_DFC(NNSG)
DO 120 I = 1,NNSG
GLBL_IDS(I) = 2 * I
GLBL_NC(I) = 3 * I
GLBL_DFC(I) = 1
120 CONTINUE
CALL EXPNSPG(NEID, GLBL_IDS, GLBL_NC, GLBL_DFC, IERR)
END
C=================================================================
SUBROUTINE EXTPSSP(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, GLBL_IDS(NSSG), GLBL_ELC(NSSG), GLBL_DFC(NSSG)
DO 130 I = 1,NSSG
GLBL_IDS(I) = 3 * I
GLBL_ELC(I) = 2 * I
GLBL_DFC(I) = 1
130 CONTINUE
CALL EXPSSPG(NEID, GLBL_IDS, GLBL_ELC, GLBL_DFC, IERR)
END
C=================================================================
SUBROUTINE EXTPLBPC(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, NUM_IN(NPROCF), NUM_BN(NPROCF), NUM_EN(NPROCF),
1 NUM_IE(NPROCF), NUM_BE(NPROCF), NUM_NCM(NPROCF), NUM_ECM(NPROCF)
DO 140 IPROC = 1,NPROCF
NUM_IN(IPROC) = NINTN
NUM_BN(IPROC) = NBORN
NUM_EN(IPROC) = NEXTN
NUM_IE(IPROC) = NINTE
NUM_BE(IPROC) = NBORE
NUM_NCM(IPROC) = NNCMAP
NUM_ECM(IPROC) = NECMAP
140 CONTINUE
CALL EXPLBPC(NEID, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
1 NUM_NCM, NUM_ECM, IERR)
END
C=================================================================
SUBROUTINE EXTPNM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, J, NMAPI(NINTN), NMAPB(NBORN), NMAPE(NEXTN)
I = 0
DO 200 IPROC = 0,(NPROCF-1)
DO 150 J = 1,NINTN
NMAPI(J) = I
I = I + 1
150 CONTINUE
DO 160 J = 1,NBORN
NMAPB(J) = I
I = I + 1
160 CONTINUE
DO 170 J = 1,NEXTN
NMAPE(J) = I
I = I + 1
170 CONTINUE
I = 0
CALL EXPNMP(NEID, NMAPI, NMAPB, NMAPE, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTPEM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, J, EMAPI(NINTE), EMAPB(NBORE)
I = 0
DO 200 IPROC = 0,(NPROCF-1)
DO 150 J = 1,NINTE
EMAPI(J) = I
I = I + 1
150 CONTINUE
DO 160 J = 1,NBORE
EMAPB(J) = I
I = I + 1
160 CONTINUE
I = 0
CALL EXPEMP(NEID, EMAPI, EMAPB, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTPCMPC(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, NCNTR, ECNTR, NMAPIDS(NNCXNPF),
1 NMAPCNT(NNCXNPF), NMAPPROC(NPROCF+1), EMAPIDS(NECXNPF),
1 EMAPCNT(NECXNPF), EMAPPROC(NPROCF+1)
NMAPPROC(1) = 0
EMAPPROC(1) = 0
NCNTR = 1
ECNTR = 1
DO 200 IPROC = 1,NPROCF
DO 150 I = 1,NNCMAP
NMAPIDS(NCNTR) = I
NMAPCNT(NCNTR) = NCNTCM
NCNTR = NCNTR + 1
150 CONTINUE
DO 160 I = 1,NECMAP
EMAPIDS(ECNTR) = 2*I
EMAPCNT(ECNTR) = ECNTCM
ECNTR = ECNTR + 1
160 CONTINUE
NMAPPROC(IPROC+1) = NMAPPROC(IPROC) + NNCMAP
EMAPPROC(IPROC+1) = EMAPPROC(IPROC) + NECMAP
200 CONTINUE
CALL EXPCMPC(NEID, NMAPIDS, NMAPCNT, NMAPPROC, EMAPIDS, EMAPCNT,
1 EMAPPROC, IERR)
END
C=================================================================
SUBROUTINE EXTPNCM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, NMAPIDS(NNCMAP), NIDS(NCNTCM), PIDS(NCNTCM)
DO 200 IPROC = 0,(NPROCF-1)
DO 150 I = 1,NNCMAP
NMAPIDS(I) = I
150 CONTINUE
DO 160 I = 1,NCNTCM
NIDS(I) = 2*I
PIDS(I) = 3*I
160 CONTINUE
DO 170 I=1,NNCMAP
CALL EXPNCM(NEID, NMAPIDS(I), NIDS, PIDS, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
170 CONTINUE
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTPECM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, EMAPIDS(NECMAP), EIDS(ECNTCM), PIDS(ECNTCM),
1 SIDS(ECNTCM)
DO 200 IPROC = 0,(NPROCF-1)
DO 150 I = 1,NECMAP
EMAPIDS(I) = 2*I
150 CONTINUE
DO 160 I = 1,ECNTCM
EIDS(I) = 2*I
SIDS(I) = 3*I
PIDS(I) = 4*I
160 CONTINUE
DO 170 I=1,NECMAP
CALL EXPECM(NEID, EMAPIDS(I), EIDS, SIDS, PIDS, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
170 CONTINUE
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGII(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER NP, NPF
CHARACTER FTYPE*2
CALL EXGII(NEID, NP, NPF, FTYPE, IERR)
IF (IERR.NE.0) GOTO 210
IF (NP.NE.NPROC) IERR = -1
IF (NPF.NE.NPROCF) IERR = -1
IF (NP.NE.NPROC) IERR = -1
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGIG(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER NUMNG, NUMEG, NUMEBG, NUMNSG, NUMSSG
CALL EXGIG(NEID, NUMNG, NUMEG, NUMEBG, NUMNSG, NUMSSG, IERR)
IF (IERR.NE.0) GOTO 210
IF (NUMNG.NE.NNG) IERR = -1
IF (NUMEG.NE.NEG) IERR = -1
IF (NUMEBG.NE.NEBG) IERR = -1
IF (NUMNSG.NE.NNSG) IERR = -1
IF (NUMSSG.NE.NSSG) IERR = -1
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGEBI(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, EBLK_IDS(NEBG)
INTEGER EBLK_CNTS(NEBG)
CALL EXGEBIG(NEID, EBLK_IDS, EBLK_CNTS, IERR)
IF (IERR.NE.0) GOTO 210
DO 150 I=1,NEBG
IF (EBLK_IDS(I).NE.I) IERR = -1
IF (EBLK_CNTS(I) .NE. 10) IERR = -1
150 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGNSP(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, GLBL_IDS(NNSG), GLBL_NC(NNSG), GLBL_DFC(NNSG)
CALL EXGNSPG(NEID, GLBL_IDS, GLBL_NC, GLBL_DFC, IERR)
IF (IERR.NE.0) GOTO 210
DO 150 I=1,NNSG
IF (GLBL_IDS(I).NE.(2*I)) IERR = -1
IF (GLBL_NC(I).NE.(3*I)) IERR = -1
IF (GLBL_DFC(I).NE.1) IERR = -1
150 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGSSP(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER I, GLBL_IDS(NSSG), GLBL_EC(NSSG), GLBL_DFC(NSSG)
CALL EXGSSPG(NEID, GLBL_IDS, GLBL_EC, GLBL_DFC, IERR)
IF (IERR.NE.0) GOTO 210
DO 150 I=1,NNSG
IF (GLBL_IDS(I).NE.(3*I)) IERR = -1
IF (GLBL_EC(I).NE.(2*I)) IERR = -1
IF (GLBL_DFC(I).NE.1) IERR = -1
150 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGLBP(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
* NUM_NCM, NUM_ECM
DO 150 IPROC = 0,(NPROCF-1)
CALL EXGLBP(NEID, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
1 NUM_NCM, NUM_ECM, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
IF(NUM_IN.NE.NINTN) IERR = -1
IF(NUM_BN.NE.NBORN) IERR = -1
IF(NUM_EN.NE.NEXTN) IERR = -1
IF(NUM_IE.NE.NINTE) IERR = -1
IF(NUM_BE.NE.NBORE) IERR = -1
IF(NUM_NCM.NE.NNCMAP) IERR = -1
IF(NUM_ECM.NE.NECMAP) IERR = -1
150 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGNM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, J, NMAPI(NINTN), NMAPB(NBORN), NMAPE(NEXTN)
I = 0
DO 200 IPROC = 0,(NPROCF-1)
CALL EXGNMP(NEID, NMAPI, NMAPB, NMAPE, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
DO 150 J = 1,NINTN
IF (NMAPI(J).NE.I) ERR = -1
I = I + 1
150 CONTINUE
DO 160 J = 1,NBORN
IF (NMAPB(J).NE.I) ERR = -1
I = I + 1
160 CONTINUE
DO 170 J = 1,NEXTN
IF (NMAPE(J).NE.I) ERR = -1
I = I + 1
170 CONTINUE
I = 0
IF (IERR.NE.0) GOTO 210
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGEM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, J, EMAPI(NINTE), EMAPB(NBORE)
I = 0
DO 200 IPROC = 0,(NPROCF-1)
CALL EXGEMP(NEID, EMAPI, EMAPB, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
DO 150 J = 1,NINTE
IF (EMAPI(J).NE.I) ERR = -1
I = I + 1
150 CONTINUE
DO 160 J = 1,NBORE
IF (EMAPB(J).NE.I) ERR = -1
I = I + 1
160 CONTINUE
I = 0
IF (IERR.NE.0) GOTO 210
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGNCM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, J, NMAPIDS(NNCMAP), NMAPCNT(NNCMAP),
1 NIDS(NCNTCM), PIDS(NCNTCM), EMAPIDS(NECMAP), EMAPCNT(NECMAP)
DO 200 IPROC = 0,(NPROCF-1)
CALL EXGCMP(NEID, NMAPIDS, NMAPCNT, EMAPIDS, EMAPCNT,
1 IPROC, IERR)
IF (IERR.NE.0) GOTO 210
DO 170 I = 1,NNCMAP
CALL EXGNCM(NEID, NMAPIDS(I), NIDS, PIDS, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
IF (NMAPIDS(I).NE.I) IERR = -1
DO 160 J = 1,NCNTCM
IF (NIDS(J).NE.2*J) IERR = -1
IF (PIDS(J).NE.3*J) IERR = -1
160 CONTINUE
IF (IERR.NE.0) GOTO 210
170 CONTINUE
200 CONTINUE
210 CONTINUE
END
C=================================================================
SUBROUTINE EXTGECM(NEID, IERR)
C=================================================================
INCLUDE 'test_nem.inc'
INTEGER IPROC, I, EMAPIDS(NECMAP), EMAPCNT(NECMAP), EIDS(ECNTCM),
1 PIDS(ECNTCM), SIDS(ECNTCM), NMAPIDS(NNCMAP), NMAPCNT(NNCMAP)
DO 200 IPROC = 0,(NPROCF-1)
CALL EXGCMP(NEID, NMAPIDS, NMAPCNT, EMAPIDS, EMAPCNT,
1 IPROC, IERR)
IF (IERR.NE.0) GOTO 210
DO 170 I = 1,NECMAP
CALL EXGECM(NEID, EMAPIDS(I), EIDS, SIDS, PIDS, IPROC, IERR)
IF (IERR.NE.0) GOTO 210
IF (EMAPIDS(I).NE.(2*I)) IERR = -1
DO 160 J = 1,ECNTCM
IF (EIDS(J).NE.2*J) IERR = -1
IF (SIDS(J).NE.3*J) IERR = -1
IF (PIDS(J).NE.4*J) IERR = -1
160 CONTINUE
IF (IERR.NE.0) GOTO 210
170 CONTINUE
200 CONTINUE
210 CONTINUE
END