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.
104 lines
3.7 KiB
104 lines
3.7 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 WCONAT (NDBOUT, NUMELB, NUMEBO, IEL, IXELEM,
|
|
& NUMLNK, NUMATR, NLNKDM, NATRDM, LINK, ATRIB,
|
|
* BLKTYP, IDELB, NEWNOD, NODIX, LNSCR, ATRSCR)
|
|
C=======================================================================
|
|
|
|
C --*** WCONAT *** Write the element block connectivity and
|
|
C -- attribute information to the output database file
|
|
C -- WCONAT modified for EXODUSIIV2 8/29/95
|
|
C -- This file was basically just renamed to try and indicate
|
|
C -- What it actually does
|
|
C --*** WREB1 *** (ALGEBRA) Write database element block misc.
|
|
C -- Written by Amy Gilkey - revised 04/19/88
|
|
C --
|
|
C --Parameters:
|
|
C -- NDBOUT - IN - the output database file
|
|
C -- NUMELB - IN - the number of elements in the block
|
|
C -- NUMEBO - IN - the number of elements in the output block
|
|
C -- IEL - IN - the offset for the indices in IXELEM
|
|
C -- IXELEM - IN - the indices of the output elements
|
|
C -- (iff NUMEBO <> NUMELB)
|
|
C -- NUMLNK - IN - the number of nodes per element
|
|
C -- NUMATR - IN - the number of attributes
|
|
C -- LINK - IN - the element connectivity for this block
|
|
C -- ATRIB - IN - the attributes for this block
|
|
C -- BLKTYP - IN - the element block type
|
|
C -- IDELB - IN - element block ID
|
|
C -- NEWNOD - IN - true iff nodes are renumbered
|
|
C -- NODIX(i) - IN - the zoom mesh index for each node (iff NEWNOD)
|
|
C -- LNSCR - IN - connectivity scratch array
|
|
C -- ATRSCR - IN - attribute scratch array
|
|
|
|
include 'exodusII.inc'
|
|
|
|
INTEGER NDBOUT
|
|
INTEGER NUMELB
|
|
INTEGER NUMEBO
|
|
INTEGER IEL
|
|
INTEGER IXELEM(*)
|
|
INTEGER NUMLNK
|
|
INTEGER NUMATR
|
|
INTEGER NLNKDM
|
|
INTEGER NATRDM
|
|
INTEGER LINK(NLNKDM,NUMELB)
|
|
REAL ATRIB(NATRDM,NUMELB)
|
|
CHARACTER*(MXSTLN) BLKTYP
|
|
INTEGER IDELB
|
|
LOGICAL NEWNOD
|
|
INTEGER NODIX(*)
|
|
INTEGER LNSCR(NLNKDM,*)
|
|
REAL ATRSCR(NATRDM,*)
|
|
|
|
IEL0 = IEL - 1
|
|
IF ((NUMLNK .GT. 0) .AND. (NUMEBO .GT. 0)) THEN
|
|
IF (NUMELB .EQ. NUMEBO) THEN
|
|
IF (.NOT. NEWNOD) THEN
|
|
CALL EXPELC(NDBOUT, IDELB, LINK, IERR)
|
|
ELSE
|
|
DO 20 i=1, numlnk
|
|
DO 10 ne = 1, numelb
|
|
lnscr(i, ne) = nodix(link(i,ne))
|
|
10 CONTINUE
|
|
20 CONTINUE
|
|
CALL EXPELC(NDBOUT, IDELB, LNSCR, IERR)
|
|
END IF
|
|
ELSE
|
|
IF (.NOT. NEWNOD) THEN
|
|
do 40 i=1,numlnk
|
|
do 30 ix=1,numebo
|
|
lnscr(i,ix) = link(i,ixelem(ix)-iel0)
|
|
30 continue
|
|
40 continue
|
|
ELSE
|
|
do 60 i=1,numlnk
|
|
do 50 ix=1,numebo
|
|
lnscr(i,ix) = nodix(link(i,ixelem(ix)-iel0))
|
|
50 continue
|
|
60 continue
|
|
END IF
|
|
CALL EXPELC(NDBOUT, IDELB, LNSCR, IERR)
|
|
END IF
|
|
END IF
|
|
|
|
IF ((NUMATR .GT. 0) .AND. (NUMEBO .GT. 0)) THEN
|
|
IF (NUMELB .EQ. NUMEBO) THEN
|
|
call expeat(ndbout, idelb, atrib, ierr)
|
|
ELSE
|
|
DO 80 i=1, numatr
|
|
DO 70 ix=1,numebo
|
|
atrscr(i,ix) = atrib(i,ixelem(ix)-iel0)
|
|
70 CONTINUE
|
|
80 CONTINUE
|
|
call expeat(ndbout, idelb, atrscr, ierr)
|
|
END IF
|
|
END IF
|
|
|
|
RETURN
|
|
END
|
|
|