C RIGIMO SOURCE CB215821 16/04/15 21:15:40 8907 SUBROUTINE RIGIMO C======================================================================= C APPELE PAR RIGI POUR L'ANALYSE MODALE C C SYNTAXES POSSIBLES : RIG2 = RIGI M ; C RIG3 = RIGI P S ; C RIG4 = RIGI M P S ; C RIG5 = RIGI B ; C RIG6 = RIGI A ; C M : OBJET SOLUTION DE SOUS TYPE MODE C P : OBJET SOLUTION DE SOUS TYPE SOLU STAT C S : OBJET STRUCTURE C B : OBJET BASE MODALE C A : OBJET ATTACHE C RIG2 : RIGIDITE DUE AUX MODES SEULS ( KN ) C RIG3 : RIGIDITE DUE AU COUPLAGE DES SOLUTIONS STATIQUES SUR UNE STRUC C RIG4 : RIGIDITE DUE AU COUPLAGE DES SOLUTIONS STATIQUES ET DES MODES C RIG5 : CALCUL AUTOMATIQUE DE RIG2, RIG3 ET RIG4. C RIG6 : RIGIDITE DUE AUX LIAISONS MIXTES C PROGRAMMEUR FARVACQUE C CREATION /06/84 C C L. VIVAN, le 22/03/91 : ajout de l'option TABLE C C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) logical l0,l1 character*4 charre -INC CCHAMP -INC PPARAM -INC CCOPTIO -INC SMBASEM -INC SMSOLUT -INC SMSTRUC * * La base modale est donn{e sous forme d'une TABLE * CALL LIRTAB('BASE_MODALE',ITBAS,0,IRETOU) IF (IRETOU.NE.0) THEN CALL ACCTAB(ITBAS,'MOT',IM,X0,'MODES',L0,IP0, & 'TABLE',I1,X1,CHARRE,L1,ITMOD) itbas = itmod ELSE CALL LIRTAB('BASE_DE_MODES',ITBAS,0,IRETOU) ENDIF CALL LIRTAB('LIAISONS_STATIQUES',ITBST,0,IRETO1) IF (IRETOU.NE.0.or.ireto1.ne.0) THEN CALL RIGTAB(ITBAS,ITBST,2,KRIGI) IF(KRIGI.EQ.0) GOTO 666 GOTO 800 ENDIF * * La base modale est donn{e sous forme d'un objet SOLUTION, ... * IMODE=0 ISOLS=0 706 CALL LIROBJ ('SOLUTION',IPOI1,0,IRT1) IF(IRT1.EQ.0) GO TO 701 MSOLUT=IPOI1 SEGACT MSOLUT C C **** EST CE UN MODE ? C IF(ITYSOL.NE.'MODE ') GO TO 703 IF(IMODE.EQ.0) GO TO 704 MOTERR(1:8)='SOLUTION' MOTERR(9:12)='MODE' CALL ERREUR(130) SEGDES MSOLUT GO TO 666 704 CONTINUE IMODE=MSOLUT SEGDES MSOLUT IF(ISOLS.EQ.0) GO TO 706 GO TO 701 C C **** EST CE UN SOLSTA ? C 703 CONTINUE IF(ISOLS.EQ.0) GO TO 710 MOTERR(1:8)='SOLUTION' MOTERR(9:12)='SOLUSTAT' CALL ERREUR(130) SEGDES MSOLUT GO TO 666 710 CONTINUE ISOLS=MSOLUT SEGDES MSOLUT IF(IMODE.EQ.0) GO TO 706 701 CONTINUE IF(ISOLS.EQ.0. AND .IMODE.EQ.0) GO TO 723 IF(ISOLS.EQ.0) GO TO 720 CALL LIROBJ('STRUCTUR',IPOI2,1,IRT2) IF(IRT2.EQ.0) GO TO 666 MSTRUC=IPOI2 SEGACT MSTRUC IF(LISTRU(/1).EQ.1) GO TO 721 MOTERR(1:8)='STRUCTUR' CALL ERREUR(132) SEGDES MSTRUC GO TO 666 721 ISTRU=LISTRU(1) SEGDES MSTRUC IF(IMODE.EQ.0) GO TO 725 CALL ERREUR(21) C COUPLAGE MODES LIAISONS : LES TERMES SONT DANS LA MASSE GO TO 666 C 725 CONTINUE CALL RGLILI(ISOLS,ISTRU,2,KRIGI) IF(KRIGI.EQ.0) GO TO 666 GO TO 800 C 720 CONTINUE CALL RIGMOD(IMODE,2,KRIGI) IF(KRIGI.EQ.0) GO TO 666 GO TO 800 C 723 CONTINUE CALL LIROBJ('BASEMODA',IPOI2,0,IRT2) IF(IRT2.EQ.0) GO TO 730 CALL RGBASE(IPOI2,2,KRIGI) IF(KRIGI.EQ.0) GO TO 666 GOTO 800 C 730 CONTINUE CALL LIROBJ('ATTACHE ',IPOI2,1,IRT2) IF(IRT2.EQ.0) GOTO 666 CALL RGMATT(IPOI2,KRIGI) IF(KRIGI.EQ.0) GOTO 666 C C 800 CONTINUE CALL ECROBJ('RIGIDITE',KRIGI) 666 CONTINUE RETURN END