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.
68 lines
1.9 KiB
68 lines
1.9 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
|
||
|
|
||
|
SUBROUTINE ADDSNP(MSNAP,SNAPDX,NSNAP,INDEX,VALUE,ERR)
|
||
|
C***********************************************************************
|
||
|
|
||
|
C SUBROUTINE ADDSNP = ADDS SNAP GRID LINE DEFINITIONS
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
C VARIABLES USED:
|
||
|
C MSNAP = DIMENSION OV SNAP ARRAYS
|
||
|
C SNAPDX = THE SNAP GRID VALUES ARRAY (X AND Y)
|
||
|
C NSNAP = THE NUMBER OF SNAP GRID VALUES IN X AND Y
|
||
|
C INDEX = 1 FOR X VALUES, 2 FOR Y VALUES
|
||
|
C VALUE = THE GRID VALUE TO BE ADDED
|
||
|
C KOUNT = THE LOCATION OF THE SNAPDX VALUE JUST LESS THAN VALUE
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
DIMENSION SNAPDX(2,MSNAP),NSNAP(2)
|
||
|
|
||
|
LOGICAL ERR
|
||
|
|
||
|
C ADD THE SNAP GRID VALUE WHERE IT FITS IN NUMERICAL ORDER
|
||
|
|
||
|
ERR=.FALSE.
|
||
|
|
||
|
IF(NSNAP(INDEX).GT.0)THEN
|
||
|
KOUNT=0
|
||
|
DO 100 I=1,NSNAP(INDEX)
|
||
|
IF(VALUE.LT.SNAPDX(INDEX,I))GOTO 110
|
||
|
KOUNT=I
|
||
|
|
||
|
C IF THE VALUE IS ALREADY THERE, THEN DON'T ADD IT AGAIN - JUST RETURN
|
||
|
|
||
|
IF(VALUE.EQ.SNAPDX(INDEX,I))RETURN
|
||
|
|
||
|
100 CONTINUE
|
||
|
110 CONTINUE
|
||
|
IF(NSNAP(INDEX).EQ.MSNAP)THEN
|
||
|
CALL MESSAGE('** NO MORE ROOM FOR ADDITIONAL GRID LINES **')
|
||
|
WRITE(*,10000)MSNAP
|
||
|
ERR=.TRUE.
|
||
|
RETURN
|
||
|
ENDIF
|
||
|
NSNAP(INDEX)=NSNAP(INDEX)+1
|
||
|
DO 120 I=NSNAP(INDEX),KOUNT+2,-1
|
||
|
SNAPDX(INDEX,I)=SNAPDX(INDEX,I-1)
|
||
|
120 CONTINUE
|
||
|
SNAPDX(INDEX,KOUNT+1)=VALUE
|
||
|
|
||
|
C JUST PUT THE FIRST VALUE WHERE IT BELONGS
|
||
|
|
||
|
ELSE
|
||
|
NSNAP(INDEX)=1
|
||
|
SNAPDX(INDEX,1)=VALUE
|
||
|
ENDIF
|
||
|
|
||
|
RETURN
|
||
|
|
||
|
10000 FORMAT(' THE MAXIMUM NUMBER OF GRID LINES IS: ',I10)
|
||
|
|
||
|
END
|