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.

112 lines
3.1 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 WRPXYZ (XN, YN, XN3, YN3, ZN3, ATRIB)
C=======================================================================
C --*** WRPXYZ *** (GEN3D) Calculate 3D coordinates
C -- Written by Amy Gilkey - revised 05/09/88
C -- Modified by Greg Sjaardema - 02/06/89
C -- Added Warp Function
C -- Added Gradient to Rotations (not for center blocks)
C --
C --WRPXYZ calculates the coordinate array for the 3D warp translations.
C --
C --Parameters:
C -- XN, YN - IN - the 2D coordinates, destroyed
C -- XN3, YN3, ZN3 - OUT - the 3D coordinates
C --
C --Common Variables:
C -- Uses NDIM, NUMNP of /DBNUMS/
C -- Uses NDIM3, NUMNP3 of /DBNUM3/
C -- Uses DOTRAN, NNREPL, DIM3, NRTRAN, D3TRAN, ZGRAD,
C -- CENTER, NUMCOL, NUMROW of /PARAMS/
INCLUDE 'gs_dbnums.blk'
INCLUDE 'gs_dbnum3.blk'
INCLUDE 'gs_params.blk'
REAL XN(NUMNP), YN(NUMNP),
& XN3(NUMNP3), YN3(NUMNP3), ZN3(NUMNP3)
REAL ATRIB(NUMEL)
IF (IWARP .EQ. 1) THEN
C ... Warp type 1: Point Centered
DO 100 INP = 1, NUMNP
XN3(INP) = XN(INP)
YN3(INP) = YN(INP)
ZN3(INP) = DWARP - SQRT(DWARP**2 - XN(INP)**2 - YN(INP)**2)
100 CONTINUE
CONTINUE
ELSE IF (IWARP .EQ. -1) THEN
C ... Warp type -1: X Axis Centered
DO 110 INP = 1, NUMNP
THET = YN(INP) / DWARP
XN3(INP) = XN(INP)
YN3(INP) = SIN(THET) * DWARP
ZN3(INP) = DWARP - COS(THET) * DWARP
110 CONTINUE
ELSE IF (IWARP .EQ. -2) THEN
C ... Warp type -2: Y Axis Centered
DO 120 INP = 1, NUMNP
THET = XN(INP) / DWARP
XN3(INP) = SIN(THET) * DWARP
YN3(INP) = YN(INP)
ZN3(INP) = DWARP - COS(THET) * DWARP
120 CONTINUE
ELSE IF (IWARP .EQ. -3) THEN
C ... Warp type -3: X Axis Centered, Project straight up
DO 130 INP = 1, NUMNP
XN3(INP) = XN(INP)
YN3(INP) = YN(INP)
ZN3(INP) = DWARP - sqrt( dwarp**2 - yn(inp)**2 )
130 CONTINUE
ELSE IF (IWARP .EQ. -4) THEN
C ... Warp type -4: Y Axis Centered, Project straight up
DO 140 INP = 1, NUMNP
XN3(INP) = XN(INP)
YN3(INP) = YN(INP)
ZN3(INP) = DWARP - sqrt( dwarp**2 - xn(inp)**2 )
140 CONTINUE
ELSE IF (IWARP .EQ. 2) THEN
C ... Warp type 2: Point-Centered Ellipse
DO 150 INP = 1, NUMNP
DX = XN(INP)
DY = YN(INP)
ZT = DWARP * (1.0-SQRT(1.0-DX**2/XRAD**2-DY**2/YRAD**2))
ZN3(INP) = ZT
YN3(INP) = YN(INP)
XN3(INP) = XN(INP)
150 CONTINUE
END IF
C ... Now do the attributes for all of the elements
DO 160 IEL = 1, NUMEL
ATRIB(IEL) = DIM3
160 CONTINUE
RETURN
END