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