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.
 
 
 
 
 
 

122 lines
2.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
SUBROUTINE PUTLXN (MXND, NL, LXN, NUID, NODE, LINES, NAVAIL,
& IAVAIL, NNN, ERR, NOROOM)
C***********************************************************************
C SUBROUTINE PUTLXN = DEFINE THE LINES FOR NODE AS (LINES (I), I=1, NL)
C***********************************************************************
C NOTE:
C SAME CONTINUATION ENTRIES ARE USED AS ALREADY IN USE
C FOR THIS NODE.
C THIS NODE WILL BE FLAGGED AS A BOUNDARY NODE IF
C LXN (2, NODE) .LT. 0 (NOT IF LINES (2) .LT. 0)
C***********************************************************************
DIMENSION LINES (NL), LXN (4, MXND), NUID (MXND)
LOGICAL ERR, BOUND, NOROOM
BOUND = .FALSE.
IF (LXN (2, NODE) .LT. 0)BOUND = .TRUE.
NN = NODE
NDONE = 0
C FILL IN NEXT 3 (4 LAST TIME) NODES
100 CONTINUE
N4 = LXN (4, NN)
NR = MIN0 (4, NL - NDONE)
DO 110 I = 1, NR
J = NDONE + I
LXN (I, NN) = LINES (J)
110 CONTINUE
C CLEAR REMAINING PORTION
IF (NR .LT. 4) THEN
NZ = NR + 1
DO 120 I = NZ, 4
LXN (I, NN) = 0
120 CONTINUE
ENDIF
C TAG BOUNDARY NODES
IF (BOUND)LXN (2, NN) = - LXN (2, NN)
C TAG CONTINUATIONS
IF (NDONE .GT. 1)LXN (1, NN) = - LXN (1, NN)
IF (NDONE + 4 .GE. NL) THEN
C COLLECT GARBAGE
130 CONTINUE
IF (N4 .GE. 0) THEN
C UPDATE NNN
140 CONTINUE
IF (LXN (1, NNN) .NE. 0) THEN
RETURN
ELSE
NNN = NNN - 1
GOTO 140
ENDIF
ENDIF
NR = - N4
N4 = LXN (4, NR)
LXN (1, NR) = 0
LXN (2, NR) = 0
LXN (3, NR) = 0
LXN (4, NR) = IAVAIL
IAVAIL = NR
NAVAIL = NAVAIL + 1
GOTO 130
ENDIF
C NEED ANOTHER LINE IN THE TABLE
NDONE = NDONE + 3
NEXTR = IABS (N4)
IF (N4 .LT. 0) THEN
LXN (4, NN) = - NEXTR
NN = NEXTR
GOTO 100
ENDIF
C RESERVE A NEW LINE IN LXN TABLE
IF (NAVAIL .LT. 1) THEN
WRITE ( * , 10000)NODE
ERR = .TRUE.
NOROOM = .TRUE.
RETURN
ENDIF
NEW = IAVAIL
IF (NEW .GT. NNN)NNN = NEW
IAVAIL = LXN (4, IAVAIL)
NAVAIL = NAVAIL - 1
LXN (4, NEW) = 0
NUID (NEW) = 0
NEXTR = NEW
C INSERT LINK TO NEXT LINE
LXN (4, NN) = - NEXTR
NN = NEXTR
GOTO 100
10000 FORMAT (' NODE TABLE OVERFLOW IN PUTLXN - NODE = ', I5)
END