Welcome to Adams/Solver Subroutines - Kxcad.net
Welcome to Adams/Solver Subroutines - Kxcad.net
Welcome to Adams/Solver Subroutines - Kxcad.net
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
CALL NMODES(FBDYID,NQ,ERRFLG)<br />
STRING = 'Cannot get number of modes'<br />
CALL ERRMES(ERRFLG, STRING, ID, 'STOP' )<br />
IF (NQ .GT. MAXQ) THEN<br />
STRING = 'Too many modes, increase MAXQ in varsub'<br />
CALL ERRMES(.TRUE., STRING, ID, 'STOP' )<br />
ENDIF<br />
C<br />
STRING = 'Cannot get frequencies of modes'<br />
CALL MODINF (FBDYID, OMODE, FREQ, ERRFLG)<br />
CALL ERRMES(ERRFLG, STRING, ID, 'STOP' )<br />
C<br />
IPAR(1) = FBDYID<br />
VALUE = 0.0<br />
C<br />
FNCNAM = 'Q'<br />
CALL SYSARY(FNCNAM, IPAR, NARG, Q, NQ, ERRFLG)<br />
STRING = 'Error calling SYSARY for Q.'<br />
CALL ERRMES(ERRFLG, STRING, ID, 'STOP' )<br />
DO 20 I=1,NQ<br />
IF (FREQ(I) .LT. MAXFRQ) VALUE = VALUE + C1*Q(I)<br />
20 CONTINUE<br />
C<br />
FNCNAM = 'QDOT'<br />
CALL SYSARY(FNCNAM, IPAR, NARG, Q, NQ, ERRFLG)<br />
STRING = 'Error calling SYSARY for QDOT.'<br />
CALL ERRMES(ERRFLG, STRING, ID, 'STOP' )<br />
DO 30 I=1,NQ<br />
IF (FREQ(I) .LT. MAXFRQ) VALUE = VALUE + C2*Q(I)<br />
30 CONTINUE<br />
C<br />
FNCNAM = 'QDDOT'<br />
CALL SYSARY(FNCNAM, IPAR, NARG, Q, NQ, ERRFLG)<br />
STRING = 'Error calling SYSARY for QDDOT.'<br />
CALL ERRMES(ERRFLG, STRING, ID, 'STOP' )<br />
DO 40 I=1,NQ<br />
IF (FREQ(I) .LT. MAXFRQ) VALUE = VALUE + C3*Q(I)<br />
40 CONTINUE<br />
C<br />
RETURN<br />
END<br />
<strong>Welcome</strong> <strong>to</strong> <strong>Adams</strong>/<strong>Solver</strong> <strong>Subroutines</strong><br />
For other examples that use the SYSARY data access subroutine, see the evaluation subroutines<br />
VFOSUB and VTOSUB.<br />
SYSFNC<br />
105