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.
70 lines
2.5 KiB
70 lines
2.5 KiB
2 years ago
|
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 ORD8NP (NELBLK, LENE, NLNKE, LINKE)
|
||
|
C=======================================================================
|
||
|
|
||
|
C --*** ORD8NP *** (BLOT) Order 8-node 2D elements
|
||
|
C -- Modified by John H. Glick -- 10/25/88
|
||
|
C -- Written by Amy Gilkey, revised 10/29/87
|
||
|
C --
|
||
|
C --ORD8NP orders the nodes of 8 and 9 node 2D elements so that they are
|
||
|
C --connected. Normally nodes are ordered 1-2-3-4-5-6-7-8-9, where nodes
|
||
|
C --1 to 4 are corner nodes, 5 to 8 are side nodes, and 9 is the center
|
||
|
C --node. The nodes are returned as 1-5-2-6-3-7-4-8-9.
|
||
|
C --
|
||
|
C --Parameters:
|
||
|
C -- NELBLK - IN - the number of element blocks
|
||
|
C -- LENE - IN - the cumulative element counts by element block
|
||
|
C -- NLNKE - IN - the number of nodes per element
|
||
|
C -- LINK - IN/OUT - the element connectivity
|
||
|
|
||
|
INTEGER LENE(0:*), LINKE(*)
|
||
|
INTEGER NLNKE(*)
|
||
|
|
||
|
INTEGER L(9)
|
||
|
|
||
|
DO 140 IELB = 1, NELBLK
|
||
|
IF ((NLNKE(IELB) .EQ. 8)) THEN
|
||
|
IXL0 = IDBLNK (IELB, 0, LENE, NLNKE) - 1
|
||
|
DO 110 IEL = LENE(IELB-1)+1, LENE(IELB)
|
||
|
L(1) = LINKE(IXL0+1)
|
||
|
L(2) = LINKE(IXL0+5)
|
||
|
L(3) = LINKE(IXL0+2)
|
||
|
L(4) = LINKE(IXL0+6)
|
||
|
L(5) = LINKE(IXL0+3)
|
||
|
L(6) = LINKE(IXL0+7)
|
||
|
L(7) = LINKE(IXL0+4)
|
||
|
L(8) = LINKE(IXL0+8)
|
||
|
DO 100 K = 1, NLNKE(IELB)
|
||
|
LINKE(IXL0+K) = L(K)
|
||
|
100 CONTINUE
|
||
|
IXL0 = IXL0 + NLNKE(IELB)
|
||
|
110 CONTINUE
|
||
|
ELSE IF ((NLNKE(IELB) .EQ. 9)) THEN
|
||
|
IXL0 = IDBLNK (IELB, 0, LENE, NLNKE) - 1
|
||
|
DO 130 IEL = LENE(IELB-1)+1, LENE(IELB)
|
||
|
L(1) = LINKE(IXL0+1)
|
||
|
L(2) = LINKE(IXL0+5)
|
||
|
L(3) = LINKE(IXL0+2)
|
||
|
L(4) = LINKE(IXL0+6)
|
||
|
L(5) = LINKE(IXL0+3)
|
||
|
L(6) = LINKE(IXL0+7)
|
||
|
L(7) = LINKE(IXL0+4)
|
||
|
L(8) = LINKE(IXL0+8)
|
||
|
L(9) = LINKE(IXL0+9)
|
||
|
DO 120 K = 1, NLNKE(IELB)
|
||
|
LINKE(IXL0+K) = L(K)
|
||
|
120 CONTINUE
|
||
|
IXL0 = IXL0 + NLNKE(IELB)
|
||
|
130 CONTINUE
|
||
|
END IF
|
||
|
140 CONTINUE
|
||
|
|
||
|
RETURN
|
||
|
END
|