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.

284 lines
9.3 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 -*- Mode: fortran -*-
C=======================================================================
SUBROUTINE SHOW (STYP, INTYP)
C=======================================================================
C --*** SHOW *** (GEN3D) Display information
C -- Written by Amy Gilkey - revised 03/07/88
C --
C --SHOW displays information about the database and the plot parameters.
C --
C --The SHOW options with the items they display are:
C -- OFFSET - generated mesh offsets
C -- REVOLVE - generated mesh rotation matrix
C -- REVCEN - generated mesh rotation center
C -- MIRROR - axes about which mesh is reflected
C -- VARS - database title and initial variables
C --
C --Parameters:
C -- STYP - IN - the exact SHOW option string
C -- INTYP - IN - the abbreviated SHOW option string, ' ' if exact
C --
C --Common Variables:
C -- Uses NDBIN, NDBOUT of /DBASE/
C -- Uses TITLE of /DBTITL/
C -- Uses NDIM, NUMNP, NUMEL, NELBLK,
C -- NUMNPS, LNPSNL, NUMESS, LESSEL, LESSNL of /DBNUMS/
C -- Uses XOFFS, YOFFS, ZOFFS of /XYZOFF/
C -- Uses ROT3D, ROTMAT of /XYZROT/
include 'gp_dbase.blk'
include 'gp_dbtitl.blk'
include 'gp_dbnums.blk'
include 'gp_xyzoff.blk'
include 'gp_xyzrot.blk'
include 'gp_xyzmir.blk'
include 'gp_xyzero.blk'
include 'gp_xyzscl.blk'
include 'gp_xyzwrp.blk'
include 'gp_smooth.blk'
include 'gp_snap.blk'
include 'gp_combine.blk'
include 'gp_deform.blk'
CHARACTER*(*) STYP
CHARACTER*(*) INTYP
CHARACTER*32 SHOTYP, SMTYP
CHARACTER*80 STRING
REAL RNUM(9)
CHARACTER*20 RSTR(12)
CHARACTER*20 STRA, STRB
CHARACTER*32 SHOTBL(2)
SAVE SHOTBL
C --SHOTBL - the special save option table
DATA SHOTBL /
& 'VARS ', ' ' /
C --Determine the show option
IF ((INTYP .EQ. ' ') .OR. (STYP .EQ. INTYP)) THEN
SHOTYP = STYP
ELSE
CALL ABRSTR (SHOTYP, INTYP, SHOTBL)
IF ((STYP .NE. ' ')
& .AND. ((SHOTYP .EQ. ' ') .OR. (SHOTYP .NE. INTYP)))
& SHOTYP = STYP
END IF
IF (SHOTYP .EQ. 'EXECUTE') THEN
WRITE (*, 40) 'Executing currently specified transformations'
ELSE IF (SHOTYP .EQ. 'MIRROR') THEN
IF (XMIRR .EQ. -1.) THEN
STRING = 'New X = - Old X'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
ELSE
STRING = 'New X = Old X'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
END IF
IF (YMIRR .EQ. -1.) THEN
STRING = 'New Y = - Old Y'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
ELSE
STRING = 'New Y = Old Y'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
END IF
IF (NDIM .EQ. 3) THEN
IF (ZMIRR .EQ. -1.) THEN
STRING = 'New Z = - Old Z'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
ELSE
STRING = 'New Z = Old Z'
WRITE (*, 40) ' ', STRING(:LENSTR(STRING))
END IF
END IF
ELSE IF (SHOTYP .EQ. 'OFFSET' .or. SHOTYP .EQ. 'SHIFT') THEN
IF (SPLOFF) THEN
WRITE (*,*) 'Spline offset selected'
ELSE
RNUM(1) = XOFFS
RNUM(2) = YOFFS
RNUM(3) = ZOFFS
CALL NUMSTR (NDIM, 4, RNUM, RSTR, LR)
WRITE (*, 40)
& 'Coordinate offsets =', (' ', RSTR(I)(:LR), I=1,NDIM)
END IF
ELSE IF (SHOTYP .EQ. 'SCALE') THEN
RNUM(1) = XSCAL
RNUM(2) = YSCAL
RNUM(3) = ZSCAL
CALL NUMSTR (NDIM, 4, RNUM, RSTR, LR)
WRITE (*, 40)
& 'Coordinate scale factors =', (' ', RSTR(I)(:LR),I=1,NDIM)
ELSE IF (SHOTYP .EQ. 'RANDOMIZE') THEN
RNUM(1) = XRAND
RNUM(2) = YRAND
RNUM(3) = ZRAND
CALL NUMSTR (NDIM, 4, RNUM, RSTR, LR)
WRITE (*, 40)
& 'Coordinate random factors =', (' ', RSTR(I)(:LR),I=1,NDIM)
ELSE IF (SHOTYP .EQ. 'ZERO') THEN
RNUM(1) = XZERO
RNUM(2) = YZERO
RNUM(3) = ZZERO
CALL NUMSTR (NDIM, 4, RNUM, RSTR, LR)
WRITE (*, 40)
& 'Minimum nonzero coordinates =', (' ', RSTR(I)(:LR),
& I=1,NDIM)
ELSE IF (SHOTYP .EQ. 'REVOLVE' .OR. SHOTYP .EQ. 'ROTATE') THEN
IF (ROT3D) THEN
WRITE (*, 40) 'Rotation matrix for generated mesh:'
DO I = 1, 3
write (*,50) (rotmat(i,j),j=1,3)
end do
ELSE
WRITE (*, 40) 'No rotation defined for generated mesh'
END IF
ELSE IF (SHOTYP .EQ. 'REVCEN') THEN
CALL NUMSTR (NDIM, 4, ROTCEN, RSTR, LR)
WRITE (*, 40)
& 'Center of revolution =', (' ', RSTR(I)(:LR), I=1,NDIM)
IF (.NOT. ROT3D) THEN
WRITE (*, 40) 'No rotation defined for generated mesh'
END IF
ELSE IF (SHOTYP .EQ. 'DEFORM') THEN
if (idefst .gt. 0) then
call intstr(1, 0, IDEFST, STRA, LR1)
WRITE (*, 40)
& 'Deform at step ', STRA(:LR1),
* '. Displacements at that step will be set to zero.'
else
write (*,*) 'Deformation turned off (RESET)'
end if
ELSE IF (SHOTYP .EQ. 'VARS') THEN
CALL DBPINI ('TIS', NDBIN, TITLE, NDIM, NUMNP, NUMEL, NELBLK,
& NUMNPS, LNPSNL, LNPSNL, NUMESS, LESSEL, LESSNL, LESSNL,
& IDUM, IDUM, IDUM, ' ')
ELSE IF (SHOTYP .EQ. 'SMOOTH') THEN
write (*, 40)
$ 'Smoothing Type = LAPLACIAN'
call numstr1(4, TOLER, RSTR(1), LR1)
call intstr (1, 0, NIT, STRA, LR2)
call numstr1(4, R0, RSTR(3), LR3)
write (*, 40)
$ 'Tolerance = ',RSTR(1)(:LR1)
write (*, 40)
$ 'Iterations = ',STRA(:LR2)
write (*, 40)
$ 'Relaxation Par = ',RSTR(3)(:LR3)
ELSE IF (SHOTYP .EQ. 'USERSUBROUTINE') THEN
write (*, 40) 'Coordinate modification by ',
* 'user supplied subroutine (xyzmod).'
ELSE IF (SHOTYP .EQ. 'CENTROIDS') THEN
write (*, 40) 'Element centroids will be calculated and output.'
ELSE IF (SHOTYP .EQ. 'EQUIVALENCE') THEN
IF (EQUIV) THEN
CALL NUMSTR1(6, EQTOLER, RSTR, LR)
WRITE (*, 40)
& 'Node Equivalence Tolerance = ', RSTR(1)(:LR)
ELSE
WRITE (*, 40)
& 'Node Equivalencing turned off (RESET)'
END IF
ELSE IF (SHOTYP .EQ. 'SNAP' .OR. SHOTYP .EQ. 'MOVE') THEN
if (numsnp .gt. 0) then
do i=1, numsnp
call intstr(1, 0, IDSSSL(i), STRA, LR1)
call intstr(1, 0, IDSSMA(i), STRB, LR2)
call numstr1(4, snptol(i), RSTR(4), LR4)
call numstr1(4, delmax(i), RSTR(5), LR5)
if (usnorm(i) .eq. PNORM) then
string = 'normal to slave surf'
else if (usnorm(i) .eq. PRAD) then
string = 'radially from '
else if (usnorm(i) .eq. PVECT) then
string = 'along vector'
else if (usnorm(i) .eq. PEDGE) then
string = 'along element edge'
end if
if (ismtyp(i) .eq. IMOVE) then
SMTYP = 'Move'
else if (ismtyp(i) .eq. ISNAP) then
SMTYP = 'Snap'
else
SMTYP = 'ERROR'
end if
if (usnorm(i) .eq. PNORM .or. usnorm(i) .eq. PEDGE) then
write (*, 40) SMTYP(:4), ' Sideset ', STRA(:LR1),
* ' to ', STRB(:LR2),' ',STRING(:LENSTR(STRING)),
* ' tol. ', RSTR(4)(:LR4),
* ' max delta ', RSTR(5)(:LR5)
else
call numstr(3, 4, VECTOR(1,i), RSTR, LR3)
call numstr1(4, gap(i), RSTR(6), LR6)
write (*, 40) SMTYP(:4), ' Sideset ', STRA(:LR1),
* ' to ', STRB(:LR2),' ',
* STRING(:LENSTR(STRING)),' ',
* RSTR(1)(:LR3), 'X ', RSTR(2)(:LR3), 'Y ',
* RSTR(3)(:LR3), 'Z ',
* ' tol. ', RSTR(4)(:LR4),
* ' max delta ', RSTR(5)(:LR5),
* ' gap ', RSTR(6)(:LR6)
end if
end do
else
write (*, 40) 'No sideset snapping or moving specified'
end if
ELSE IF (SHOTYP .EQ. 'WARP') THEN
STRING = 'ERROR'
IF (IWARP .EQ. 1) THEN
STRING = 'Origin'
ELSE IF (IWARP .EQ. -1) THEN
STRING = 'X axis'
ELSE IF (IWARP .EQ. -2) THEN
STRING = 'Y axis'
ELSE IF (IWARP .EQ. -3) THEN
STRING = 'Z axis'
END IF
RSTR(2) = 'ERROR'
IF (NRMWRP .EQ. 1) THEN
RSTR(2) = 'X axis'
ELSE IF (NRMWRP .EQ. 2) THEN
RSTR(2) = 'Y axis'
ELSE IF (NRMWRP .EQ. 3) THEN
RSTR(2) = 'Z axis'
END IF
CALL NUMSTR1(4, WRPDIS, RSTR, LR)
WRITE (*, 40) 'Warp mesh about the ', STRING(:LENSTR(STRING)),
* ', Reference Radius = ', RSTR(1)(:LR), ', Normal Vector = ',
* RSTR(2)(:LENSTR(RSTR(2)))
ELSE
CALL PRTERR ('CMDWARN', 'Invalid SHOW option')
END IF
RETURN
40 FORMAT (1X, 20A)
50 format (8x, 3(1pE12.5,4x))
END