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.
 
 
 
 
 
 

53 lines
1.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 EXPXYZN (XN, YN, ZN, XEXPL, YEXPL, ZEXPL,
& NUMNPS, IDNPS, NNNPS, IXNNPS, LTNNPS, NUMNP, NDIM,
$ MODE)
C=======================================================================
C --*** EXPXYZ *** (GREPOS) Modify coordinates for each block separately
C -- Written by Amy Gilkey - revised 05/09/88
C -- Modified by Greg Sjaardema - 02/06/89
C --
C --EXPXYZ modifies the coordinate array for the database.
C -- each block is treated separately if not connected
C --
C --Parameters:
C -- XN, YN, ZN - OUT - the coordinates
C -- MODE - 1 = Explode
C -- 2 = Scale
C -- 3 = Randomize
C -- 4 = Node Randomize
REAL XN(*), YN(*), ZN(*)
REAL XEXPL(*), YEXPL(*), ZEXPL(*)
INTEGER IDNPS(*)
INTEGER NNNPS(*)
INTEGER IXNNPS(*)
INTEGER LTNNPS(*)
INTEGER MODE
if (MODE .NE. 4) RETURN
C ... Randomize Each Nodeset node
IDUM = 1
DO 150 I = 1, NUMNPS
if (XEXPL(I) .ne. 0.0 .or. YEXPL(I) .ne. 0.0 .or.
* ZEXPL(I) .ne. 0.0) THEN
DO 140 INOD = IXNNPS(I), IXNNPS(I)+nnnps(i)-1
NODE = LTNNPS(INOD)
XN(NODE) = (2.0*RAN1(IDUM)-1.0) * XEXPL(I) + XN(NODE)
YN(NODE) = (2.0*RAN1(IDUM)-1.0) * YEXPL(I) + YN(NODE)
IF (NDIM .EQ. 3) THEN
ZN(NODE) = (2.0*RAN1(IDUM)-1.0) * ZEXPL(I) + ZN(NODE)
END IF
140 CONTINUE
END IF
150 CONTINUE
RETURN
END