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.
 
 
 
 
 
 

91 lines
3.0 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 INPICK (TYPE)
C=======================================================================
C --*** INPICK *** (MESH) Initialize cursor input for last display
C -- Written by Amy Gilkey - revised 03/07/88
C --
C --INPICK saves the displayed mesh characteristics for cursor input
C --in common /PICK/. This routine should be called after the last
C --mesh display before any cursor input.
C --
C --Parameters:
C -- TYPE - IN - the type of mesh last displayed (determines which
C -- coordinates arrays to use):
C -- 'DEFORM' - deformed mesh (or any 3D mesh)
C -- 'UNDEFORM' - undeformed mesh
C -- 'NONE' - no mesh displayed
C --
C --Common Variables:
C -- Sets /PICK/
C -- Uses IS3DIM of /D3NUMS/
C -- Uses ZMMESH of /MSHLIM/
C -- Uses ROTMAT, ROTCEN of /ROTOPT/
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4, KNEA=5, KFAR=6)
COMMON /PICK/ INITP, PKDEF,
& PKMESH(KTOP), PKRMAT(3,3), PKRCEN(3),
& DMESH(KTOP), DVRAT, DXMID, DYMID, DXLAST, DYLAST
LOGICAL INITP, PKDEF
COMMON /D3NUMS/ IS3DIM, NNPSUR, NUMNPF, LLNSET
LOGICAL IS3DIM
COMMON /MSHLIM/ UNMESH(KFAR), ALMESH(KFAR),
& ZMMESH(KTOP), RDMESH(KTOP), TICMSH, SQMESH
LOGICAL SQMESH
COMMON /ROTOPT/ NEWROT, ROTMAT(3,3), ROTCEN(3), EYE(3)
LOGICAL NEWROT
CHARACTER*(*) TYPE
INITP = .FALSE.
IF ((TYPE .EQ. 'DEFORM') .OR. (TYPE .EQ. 'UNDEFORM')) THEN
C --Set the pick initialization flag
INITP = .TRUE.
PKDEF = (TYPE .EQ. 'DEFORM')
C --Save the limits of the displayed mesh
CALL CPYREA (KTOP, ZMMESH, PKMESH)
C --Save the rotation matrix and the rotation center of the displayed mesh
IF (IS3DIM) THEN
CALL CPYREA (3*3, ROTMAT, PKRMAT)
CALL CPYREA (3, ROTCEN, PKRCEN)
END IF
C --Calculate the device coordinates of the limits of the displayed mesh
CALL MP2PT (1, PKMESH(KLFT), PKMESH(KBOT),
& DMESH(KLFT), DMESH(KBOT), M)
CALL MP2PT (1, PKMESH(KRGT), PKMESH(KTOP),
& DMESH(KRGT), DMESH(KTOP), M)
C --Calculate the device to mesh conversion factor
DVRAT = (PKMESH(KRGT) - PKMESH(KLFT))
& / (DMESH(KRGT) - DMESH(KLFT))
C --Find the device coordinates of the center of the displayed mesh,
C --for use as the default starting point
PKXMID = 0.5 * (PKMESH(KRGT) + PKMESH(KLFT))
PKYMID = 0.5 * (PKMESH(KTOP) + PKMESH(KBOT))
CALL MP2PT (1, PKXMID, PKYMID, DXMID, DYMID, M)
DXLAST = DXMID
DYLAST = DYMID
ELSE
C --Reset the pick initialization flag
INITP = .FALSE.
END IF
RETURN
END