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.
100 lines
3.1 KiB
100 lines
3.1 KiB
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
|
|
|