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.

101 lines
3.1 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=======================================================================
SUBROUTINE WRMAP (NTXT, OPTION, NUMNP, NUMEL,
& NPMAP, ELMAP, MAPEL)
C=======================================================================
C --*** WRMAP *** (EXOTXT) Write database node number map,
C -- element number map, and/or element order map
C -- Written by Amy Gilkey - revised 02/27/86
C -- Modified for ExodusIIv2 - 10/24/95
C --
C --Parameters:
C -- NTXT - IN - the database text file
C -- OPTION - IN - '*' write all
C -- 'N' write node number map
C -- 'E' write element number map
C -- 'O' write element order map
C -- NUMNP - IN - number of nodes
C -- NUMEL - IN - number of elements
C -- NPMAP - IN - node number map (if OPTION)
C -- ELMAP - IN - element number map (if OPTION)
C -- MAPEL - IN - element order map (if OPTION)
INTEGER NTXT
CHARACTER*(*) OPTION
INTEGER NUMNP
INTEGER NUMEL
INTEGER NPMAP(*)
INTEGER ELMAP(*)
INTEGER MAPEL(*)
LOGICAL ALL, NOPT, EOPT, OOPT
LOGICAL INORDR
ALL = (OPTION .EQ. '*')
NOPT = (INDEX (OPTION, 'N') .GT. 0)
EOPT = (INDEX (OPTION, 'E') .GT. 0)
OOPT = (INDEX (OPTION, 'O') .GT. 0)
C Write node number map
IF (ALL .OR. NOPT) THEN
WRITE (NTXT, 1000) '! Node number map'
if (inordr(npmap, numnp)) then
write (ntxt, 1000) 'sequence 1..numnp'
else
write (ntxt, 1000) 'explicit map'
WRITE (NTXT, 1010) (NPMAP(I), I = 1, NUMNP)
end if
END IF
C Write element number map
IF (ALL .OR. EOPT) THEN
WRITE (NTXT, 1000) '! Element number map'
if (inordr(elmap, numel)) then
write (ntxt, 1000) 'sequence 1..numel'
else
write (ntxt, 1000) 'explicit map'
WRITE (NTXT, 1010) (ELMAP(I), I = 1, NUMEL)
end if
END IF
C Write element order map
IF (ALL .OR. OOPT) THEN
WRITE (NTXT, 1000) '! Element order map'
if (inordr(mapel, numel)) then
write (ntxt, 1000) 'sequence 1..numel'
else
write (ntxt, 1000) 'explicit map'
WRITE (NTXT, 1010) (MAPEL(I), I = 1, NUMEL)
end if
END IF
1000 FORMAT (A)
1010 FORMAT (8I10)
RETURN
END
C=======================================================================
logical function inordr(MAP, ISIZE)
C=======================================================================
C ... Determine if the passed in map is simply a sequence from 1..isize
integer map(isize)
inordr = .FALSE.
do 10 i=1, isize
if (map(i) .ne. i) then
inordr = .FALSE.
return
end if
10 continue
inordr = .TRUE.
return
end