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.
88 lines
2.8 KiB
88 lines
2.8 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 IXLINK (NCEN, IELROW, LINK, XN, YN, IROT)
|
|
C=======================================================================
|
|
|
|
C --*** IXLINK *** (GEN3D) Get connectivity indices
|
|
C -- Written by Amy Gilkey - revised 08/16/88
|
|
C --
|
|
C --IXLINK sets the connectivity indices IX1..4 for center elements.
|
|
C --The indices are set so that:
|
|
C -- LINK(IX1,i) holds the leftmost column, bottom row
|
|
C -- LINK(IX2,i) holds the rightmost column, bottom row
|
|
C -- LINK(IX3,i) holds the rightmost column, top row
|
|
C -- LINK(IX4,i) holds the leftmost column, top row
|
|
C --
|
|
C --Parameters:
|
|
C -- NCEN - IN - the number of center block elements
|
|
C -- IELROW - IN - the indices of the center block elements
|
|
C -- LINK - IN - the connectivity for the 2D elements, always 4 nodes
|
|
C -- XN, YN - IN - the coordinates, needed to find node ordering
|
|
C -- IROT - OUT - track link rotation for sset face update
|
|
C --
|
|
C --Common Variables:
|
|
C -- Sets IX1, IX2, IX3, IX4 of /CENPAR/
|
|
|
|
INCLUDE 'g3_cenpar.blk'
|
|
|
|
INTEGER IELROW(*)
|
|
INTEGER LINK(4,*)
|
|
REAL XN(*), YN(*)
|
|
INTEGER IROT(*)
|
|
|
|
INTEGER LSV(4)
|
|
|
|
C --Get the connectivity indices so that LINK(IX1,i) and LINK(IX4,i)
|
|
C --are on the same column and LINK(IX2,i) and LINK(IX3,i) are on the
|
|
C --next column
|
|
|
|
DO 40 IXEL = 1, NCEN
|
|
IEL = IELROW(IXEL)
|
|
|
|
IX1 = 1
|
|
DIFMAX = 0.0
|
|
L2 = LINK(2,IEL)
|
|
L3 = LINK(3,IEL)
|
|
L4 = LINK(4,IEL)
|
|
DO 10 ILINK = 1, 4
|
|
L1 = LINK(ILINK,IEL)
|
|
IF ((MAX (XN(L1), XN(L4)) .LT. MAX (XN(L2), XN(L3))) .AND.
|
|
& (MAX (YN(L1), YN(L2)) .LT. MAX (YN(L3), YN(L4)))) THEN
|
|
DIF = (MAX (XN(L2), XN(L3)) - MAX (XN(L1), XN(L4)))
|
|
& + (MAX (YN(L3), YN(L4)) - MAX (YN(L1), YN(L2)))
|
|
IF (DIF .GT. DIFMAX) THEN
|
|
IX1 = ILINK
|
|
DIFMAX = DIF
|
|
END IF
|
|
END IF
|
|
L2 = L3
|
|
L3 = L4
|
|
L4 = LINK(ILINK,IEL)
|
|
10 CONTINUE
|
|
|
|
IROT(IEL) = IX1
|
|
IF (IX1 .NE. 1) THEN
|
|
DO 20 ILINK = 1, 4
|
|
LSV(ILINK) = LINK(ILINK,IEL)
|
|
20 CONTINUE
|
|
IX = IX1
|
|
DO 30 ILINK = 1, 4
|
|
LINK(ILINK,IEL) = LSV(IX)
|
|
IX = IX + 1
|
|
IF (IX .GT. 4) IX = IX - 4
|
|
30 CONTINUE
|
|
END IF
|
|
40 CONTINUE
|
|
|
|
IX1 = 1
|
|
IX2 = 2
|
|
IX3 = 3
|
|
IX4 = 4
|
|
|
|
RETURN
|
|
END
|
|
|