      SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION U(3),TIME(2),COORDS(3),NODESLOC(3)
      DATA NODESLOC /3,5,7/
C
C THE PRIMARY FUNCTION IS F(T)=1.5 SIN(OMEGA T) + .5 COS(OMEGA T)
C WHERE OMEGA IS .1 PI AND T THE CURRENT TIME.
C THE APPROPRIATE INTEGRALS AND DERIVATIVES ARE COMPUTED ACCORDINGLY.
C
      OMEGA=.314159
      AOMGT=OMEGA*TIME(2)
      CS=COS(AOMGT)
      SN=SIN(AOMGT)
      AN=.5
      BN=1.5
C
      JRCD = 0
      JTYP = 0
      NODEGLOB = 0
C
      CALL GETINTERNAL('TRUSS',NODESLOC(1),JTYP,NODEGLOB,JRCD)
      IF(NODE.EQ.NODEGLOB.AND.JDOF.EQ.1) THEN
C     THE FUNCTION IS DISPLACEMENT FOR NODE "TRUSS.3"
C     (DIFFERENTIATE FOR VEL AND ACC)
         U(1)=AN*CS+BN*SN
         U(2)=OMEGA*(-AN*SN+BN*CS)
         U(3)=-OMEGA**2*(AN*CS+BN*SN)
         RETURN
      ENDIF

      CALL GETINTERNAL('TRUSS',NODESLOC(2),JTYP,NODEGLOB,JRCD)
      IF(NODE.EQ.NODEGLOB.AND.JDOF.EQ.1) THEN
C     THE FUNCTION IS VELOCITY FOR NODE "TRUSS.5" (INTEGRATE FOR DISP,
C     DIFFERENTIATE FOR ACCELERATION)
         U(1)=(AN*SN+BN*(1.0-CS))/OMEGA
         U(2)=AN*CS+BN*SN
         U(3)=OMEGA*(-AN*SN+BN*CS)
         RETURN
      ENDIF

      CALL GETINTERNAL('TRUSS',NODESLOC(3),JTYP,NODEGLOB,JRCD)
      IF(NODE.EQ.NODEGLOB.AND.JDOF.EQ.1) THEN
C     THE FUNCTION IS ACCELERATION FOR NODE "TRUSS.7"
C     (INTEGRATE FOR DISP AND VELOCITY)
         U(1)=(AN*(1.0-CS)+BN*(AOMGT-SN))/OMEGA**2
         U(2)=(AN*SN+BN*(1.0-CS))/OMEGA
         U(3)=AN*CS+BN*SN
         RETURN
      ENDIF
C
      RETURN
      END



