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.
73 lines
2.4 KiB
73 lines
2.4 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 DBOELB (NDB, NELBS, NELBE,
|
|
& IDELB, NUMELB, NUMLNK, NUMATR, LINK, BLKTYP, ATRIB)
|
|
C=======================================================================
|
|
|
|
C --*** DBOELB *** (EXOLIB) Write database element blocks
|
|
C --
|
|
C --DBOELB writes the element block information to the database.
|
|
C --Some dynamic dimensioning is done.
|
|
C --
|
|
C --Parameters:
|
|
C -- NDB - IN - the database file
|
|
C -- NELBS, NELBE - IN - the number of first and last element blocks
|
|
C -- to write
|
|
C -- IDELB - IN - the element block IDs for each block
|
|
C -- NUMELB - IN - the number of elements in each block
|
|
C -- NUMLNK - IN - the number of nodes per element in each block
|
|
C -- NUMATR - IN - the number of attributes in each block
|
|
C -- LINK - IN - the connectivity for each block
|
|
C -- ATRIB - IN - the attributes for each block
|
|
C --
|
|
include 'exodusII.inc'
|
|
|
|
INTEGER NDB
|
|
INTEGER IDELB(*)
|
|
INTEGER NUMELB(*)
|
|
INTEGER NUMLNK(*)
|
|
INTEGER NUMATR(*)
|
|
INTEGER LINK(*)
|
|
REAL ATRIB(*)
|
|
CHARACTER*(mxstln) BLKTYP(*)
|
|
|
|
IELNK = 0
|
|
IEATR = 0
|
|
|
|
call expclb(ndb, idelb, blktyp, numelb, numlnk, numatr,
|
|
* .FALSE., ierr)
|
|
IF (IERR .NE. 0) THEN
|
|
CALL PRTERR ('FATAL', 'Error defining element blocks')
|
|
END IF
|
|
|
|
DO 100 NELB = NELBS, NELBE
|
|
IELB = NELB-NELBS+1
|
|
ISLNK = IELNK + 1
|
|
IELNK = IELNK + NUMLNK(IELB) * NUMELB(IELB)
|
|
ISATR = IEATR + 1
|
|
IEATR = IEATR + NUMATR(IELB) * NUMELB(IELB)
|
|
|
|
if (numelb(ielb) .gt. 0 .and. numlnk(ielb) .gt. 0) then
|
|
call expelc(ndb, idelb(ielb), link(islnk), ierr)
|
|
IF (IERR .NE. 0) THEN
|
|
CALL PRTERR ('FATAL',
|
|
* 'Error writing element block connectivity')
|
|
END IF
|
|
end if
|
|
|
|
if (numatr(ielb) .gt. 0) then
|
|
call expeat(ndb, idelb(ielb), atrib(isatr), ierr)
|
|
IF (IERR .NE. 0) THEN
|
|
CALL PRTERR ('FATAL',
|
|
* 'Error writing element block attributes')
|
|
END IF
|
|
end if
|
|
100 CONTINUE
|
|
|
|
RETURN
|
|
END
|
|
|