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.
75 lines
2.6 KiB
75 lines
2.6 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 INPCR (NUMNPF, HIDENP, XN, YN, ZN,
|
|
& COLMIN, ROWMIN, CRDELT, NUMCOL, NUMROW,
|
|
& IXNCRS, IXNCRE, NPCR, LNPCR, NPX, NPY)
|
|
C=======================================================================
|
|
|
|
C --*** INPCR *** (MESH) Initialize the NPCR array
|
|
C -- Written by Amy Gilkey - revised 04/04/88
|
|
C --
|
|
C --INPCR initializes the IXNCRS, IXNCRE, and NPCR arrays to point to the
|
|
C --set of all visible nodes in a each block.
|
|
C --
|
|
C --Parameters:
|
|
C -- NUMNPF - IN - the number of nodes
|
|
C -- HIDENP - IN/OUT - node status (as in HIDDEN)
|
|
C -- XN, YN, ZN - IN - the nodal coordinates
|
|
C -- COLMIN, ROWMIN - IN - the minimum column and row value and 1 / interval
|
|
C -- CRDELT - the column and row interval reciprical (1 / interval)
|
|
C -- NUMCOL, NUMROW - IN - the number of columns and rows
|
|
C -- IXNCRS, IXNCRE - OUT - the starting and ending NPCR index
|
|
C -- for each column and row
|
|
C -- NPCR - OUT - the nodes indexed by IXNCRS, IXNCRE
|
|
C -- LNPCR - OUT - the length of the NPCR array
|
|
C -- NPX, NPY - SCRATCH - size = NUMNPF
|
|
|
|
PARAMETER (KNVIS=0, KNFOVR=10, KNHID=100)
|
|
|
|
INTEGER HIDENP(NUMNPF)
|
|
REAL XN(NUMNPF), YN(NUMNPF), ZN(NUMNPF)
|
|
INTEGER IXNCRS(0:NUMCOL,0:NUMROW), IXNCRE(0:NUMCOL,0:NUMROW)
|
|
INTEGER NPCR(NUMNPF)
|
|
INTEGER NPX(NUMNPF), NPY(NUMNPF)
|
|
|
|
CALL INIINT ((1+NUMCOL) * (1+NUMROW), 0, IXNCRS)
|
|
|
|
DO 100 INP = 1, NUMNPF
|
|
IF (HIDENP(INP) .LE. KNVIS) THEN
|
|
ICOL = INT ((XN(INP) - COLMIN) * CRDELT)
|
|
IROW = INT ((YN(INP) - ROWMIN) * CRDELT)
|
|
NPX(INP) = ICOL
|
|
NPY(INP) = IROW
|
|
IXNCRS(ICOL,IROW) = IXNCRS(ICOL,IROW) + 1
|
|
END IF
|
|
100 CONTINUE
|
|
|
|
NHEAP = 1
|
|
DO 120 IROW = 0, NUMROW
|
|
DO 110 ICOL = 0, NUMCOL
|
|
L = IXNCRS(ICOL,IROW)
|
|
IXNCRS(ICOL,IROW) = NHEAP
|
|
IXNCRE(ICOL,IROW) = NHEAP - 1
|
|
NHEAP = NHEAP + L
|
|
110 CONTINUE
|
|
120 CONTINUE
|
|
|
|
LNPCR = NHEAP - 1
|
|
|
|
DO 130 INP = 1, NUMNPF
|
|
IF (HIDENP(INP) .LE. KNVIS) THEN
|
|
ICOL = NPX(INP)
|
|
IROW = NPY(INP)
|
|
NHEAP = IXNCRE(ICOL,IROW) + 1
|
|
IXNCRE(ICOL,IROW) = NHEAP
|
|
NPCR(NHEAP) = INP
|
|
END IF
|
|
130 CONTINUE
|
|
|
|
RETURN
|
|
END
|
|
|