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.
 
 
 
 
 
 

97 lines
3.2 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 RDNPS (NTXT, NUMNPS, LNPSNL, LNPSDF,
& IDNPS, NNNPS, NDNPS, IXNNPS, IXDNPS, LSTNPS, FACNPS, *)
C=======================================================================
C --*** RDNPS *** (TXTEXO) Read database node sets
C -- Written by Amy Gilkey - revised 02/27/86
C --
C --RDNPS reads the node set information from the text file.
C --An error message is displayed if the end of file is read.
C --
C --Parameters:
C -- NTXT - IN - the text file
C -- NUMNPS - IN - the number of node sets
C -- LNPSNL - IN - the length of the node sets node list
C -- IDNPS - OUT - the node set ID for each set
C -- NNNPS - OUT - the number of nodes for each set
C -- IXNNPS - OUT - the index of the first node for each set
C -- LSTNPS - OUT - the nodes for all sets
C -- FACNPS - OUT - the distribution factors for all sets
C -- * - return statement if end of file or read error
C --
C --Database must be positioned at start of node set information
C --upon entry; upon exit at end of node set information.
INTEGER IDNPS(*)
INTEGER NNNPS(*)
INTEGER NDNPS(*)
INTEGER IXNNPS(*)
INTEGER IXDNPS(*)
INTEGER LSTNPS(*)
REAL FACNPS(*)
CHARACTER*32 STRA, STRB
NN = 0
ND = 0
READ (NTXT, *, END=120, ERR=120)
READ (NTXT, *, END=120, ERR=120)
READ (NTXT, *, END=120, ERR=120)
DO INPS = 1, NUMNPS
READ (NTXT, *, END=120, ERR=120)
READ (NTXT, *, END=120, ERR=120) IDNPS(INPS), NNNPS(INPS),
& NDNPS(INPS)
IXNNPS(INPS) = NN + 1
NN = NN + NNNPS(INPS)
IXDNPS(INPS) = ND + 1
ND = ND + NDNPS(INPS)
if (NDNPS(INPS) .NE. 0) THEN
C ... Node set has distribution factors
IND = IXDNPS(INPS)
DO NL = IXNNPS(INPS), NN
READ (NTXT, *, END=130, ERR=130) LSTNPS(NL), FACNPS(IND)
IND = IND + 1
end do
else
C ... Node set doesn't have distribution factors
DO NL = IXNNPS(INPS), NN
READ (NTXT, *, END=130, ERR=130) LSTNPS(NL)
end do
endif
end do
IF (NN .NE. LNPSNL) THEN
CALL INTSTR (1, 0, NN, STRA, LSTRA)
CALL INTSTR (1, 0, LNPSNL, STRB, LSTRB)
CALL PRTERR ('WARNING',
& 'NODE SET NUMBER OF NODES = ' // STRA(:LSTRA)
& // ' does not match TOTAL = ' // STRB(:LSTRB))
END IF
RETURN
120 CONTINUE
CALL INTSTR (1, 0, INPS, STRA, LSTRA)
CALL PRTERR ('FATAL',
& 'Reading HEADER DATA for NODE SET ' // STRA(:LSTRA))
GOTO 140
130 CONTINUE
CALL INTSTR (1, 0, NL-IXNNPS(INPS)+1, STRA, LSTRA)
CALL INTSTR (1, 0, INPS, STRB, LSTRB)
CALL PRTERR ('FATAL',
& 'Reading NODES and FACTORS for node ' // STRA(:LSTRA)
& // ' for NODE SET ' // STRB(:LSTRB))
GOTO 140
140 CONTINUE
RETURN 1
END