1 : C MASSMO SOURCE PV 07/11/23 21:17:48 5978 2 : SUBROUTINE MASSMO 3 : C======================================================================= 4 : C APPELE PAR MASSE POUR L'ANALYSE MODALE 5 : C 6 : C SYNTAXES POSSIBLES : MAS2 = MASSE M ; 7 : C MAS3 = MASSE P S ; 8 : C MAS4 = MASSE M P S ; 9 : C MAS5 = MASSE B ; 10 : C M : OBJET SOLUTION DE SOUS TYPE MODE 11 : C P : OBJET SOLUTION DE SOUS TYPE SOLU STAT 12 : C S : OBJET STRUCTURE 13 : C B : OBJET BASE MODALE 14 : C MAS2 : MASSE DUE AUX MODES SEULS ( MN ) 15 : C MAS3 : MASSE DUE AU COUPLAGE DES SOLUTIONS STATIQUES SUR UNE STRUCTUR 16 : C MAS4 : MASSE DUE AU COUPLAGE DES SOLUTIONS STATIQUES ET DES MODES 17 : C MAS5 : CALCUL AUTOMATIQUE DE MAS2, MAS3 ET MAS4. 18 : C 19 : C PROGRAMMEUR FARVACQUE 20 : C VERSION JUIN 84 21 : C 22 : C L. VIVAN, le 22/03/91 : ajout de l'option TABLE 23 : C 24 : C======================================================================= 25 : IMPLICIT INTEGER(I-N) 26 : IMPLICIT REAL*8(A-H,O-Z) 27 : logical l0,l1 28 : character*4 charre 29 : -INC CCOPTIO 30 : -INC SMBASEM 31 : -INC SMSOLUT 32 : -INC SMSTRUC 33 : * 34 : * La base modale est donn{e sous forme d'une TABLE 35 : * 35 : CALL LIRTAB('BASE_MODALE',ITBAS,0,IRETOU) 36 : IF (IRETOU.NE.0) THEN 36 : CALL ACCTAB(ITBAS,'MOT',IM,X0,'MODES',L0,IP0, 37 : & 'TABLE',I1,X1,CHARRE,L1,ITMOD) 38 : itbas = itmod 39 : ENDIF 39 : CALL LIRTAB('LIAISONS_STATIQUES',ITBST,0,IRETO1) 40 : if (ireto1.ne.0) then 40 : call lirobj('RIGIDITE',ir1,1,iretou) 41 : if (ierr.ne.0) return 41 : * call utmu(ir1,itbst) 41 : call prmu(ir1,itbst) 42 : if (ierr.ne.0) return 43 : endif 44 : IF (IRETOU.NE.0.or.ireto1.ne.0) THEN 44 : CALL RIGTAB(ITBAS,itbst,1,KRIGI) 45 : IF(KRIGI.EQ.0) GOTO 666 46 : GOTO 800 47 : ENDIF 48 : * 49 : * La base modale est donn{e sous forme d'un objet SOLUTION, ... 50 : * 51 : IMODE=0 52 : ISOLS=0 52 : 706 CALL LIROBJ ('SOLUTION',IPOI1,0,IRT1) 53 : IF(IRT1.EQ.0) GO TO 701 54 : MSOLUT=IPOI1 55 : SEGACT MSOLUT 56 : C 57 : C **** EST CE UN MODE ? 58 : C 59 : IF(ITYSOL.NE.'MODE ') GO TO 703 60 : IF(IMODE.EQ.0) GO TO 704 61 : MOTERR(1:8)='SOLUTION' 62 : MOTERR(9:16)='MODE' 62 : CALL ERREUR(130) 63 : SEGDES MSOLUT 64 : GO TO 666 65 : 704 CONTINUE 66 : IMODE=MSOLUT 67 : SEGDES MSOLUT 68 : IF(ISOLS.EQ.0) GO TO 706 69 : GO TO 701 70 : C 71 : C **** EST CE UN SOLSTA ? 72 : C 73 : 703 CONTINUE 74 : IF(ITYSOL.NE.'SOLUSTAT') GO TO 708 75 : IF(ISOLS.EQ.0) GO TO 710 76 : MOTERR(1:8)='SOLUTION' 77 : MOTERR(9:16)='SOLUSTAT' 77 : CALL ERREUR(130) 78 : SEGDES MSOLUT 79 : GO TO 666 80 : 710 CONTINUE 81 : ISOLS=MSOLUT 82 : SEGDES MSOLUT 83 : IF(IMODE.EQ.0) GO TO 706 84 : GO TO 701 85 : 708 CONTINUE 86 : MOTERR(1:8)='SOLUTION' 87 : MOTERR(9:16)=ITYSOL 87 : CALL ERREUR(131) 88 : SEGDES MSOLUT 89 : GO TO 666 90 : C 91 : 701 CONTINUE 92 : IF(ISOLS.EQ.0. AND .IMODE.EQ.0) GO TO 723 93 : IF(ISOLS.EQ.0) GO TO 720 93 : CALL LIROBJ('STRUCTUR',IPOI2,1,IRT2) 94 : IF(IERR.NE.0) GO TO 666 95 : MSTRUC=IPOI2 96 : SEGACT MSTRUC 97 : IF(LISTRU(/1).EQ.1) GO TO 721 98 : MOTERR(1:8)='STRUCTUR' 98 : CALL ERREUR(132) 99 : SEGDES MSTRUC 100 : GO TO 666 101 : 721 ISTRU=LISTRU(1) 102 : SEGDES MSTRUC 103 : IF(IMODE.EQ.0) GO TO 725 103 : CALL RGLIMO(IMODE,ISOLS,ISTRU,1,KRIGI) 104 : IF(KRIGI.EQ.0) GO TO 666 105 : GO TO 800 106 : C 107 : 725 CONTINUE 107 : CALL RGLILI(ISOLS,ISTRU,1,KRIGI) 108 : IF(KRIGI.EQ.0) GO TO 666 109 : GO TO 800 110 : C 111 : 720 CONTINUE 111 : CALL RIGMOD(IMODE,1,KRIGI) 112 : IF(KRIGI.EQ.0) GO TO 666 113 : GO TO 800 114 : C 115 : 723 CONTINUE 115 : CALL LIROBJ('BASEMODA',IPOI2,1,IRT2) 116 : IF(IERR.NE.0) GO TO 666 116 : CALL RGBASE(IPOI2,1,KRIGI) 117 : IF(KRIGI.EQ.0) GO TO 666 118 : C 119 : 800 CONTINUE 119 : CALL ECROBJ('RIGIDITE',KRIGI) 120 : 666 CONTINUE 121 : RETURN 122 : END 123 : 124 : 125 :
© Cast3M 2003 - All rights reserved.
Disclaimer