Télécharger massmo.eso

Retour à la liste

Numérotation des lignes :

  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. *
  36. CALL LIRTAB('BASE_MODALE',ITBAS,0,IRETOU)
  37. IF (IRETOU.NE.0) THEN
  38. CALL ACCTAB(ITBAS,'MOT',IM,X0,'MODES',L0,IP0,
  39. & 'TABLE',I1,X1,CHARRE,L1,ITMOD)
  40. itbas = itmod
  41. ENDIF
  42. CALL LIRTAB('LIAISONS_STATIQUES',ITBST,0,IRETO1)
  43. if (ireto1.ne.0) then
  44. call lirobj('RIGIDITE',ir1,1,iretou)
  45. if (ierr.ne.0) return
  46. * call utmu(ir1,itbst)
  47. call prmu(ir1,itbst)
  48. if (ierr.ne.0) return
  49. endif
  50. IF (IRETOU.NE.0.or.ireto1.ne.0) THEN
  51. CALL RIGTAB(ITBAS,itbst,1,KRIGI)
  52. IF(KRIGI.EQ.0) GOTO 666
  53. GOTO 800
  54. ENDIF
  55. *
  56. * La base modale est donn{e sous forme d'un objet SOLUTION, ...
  57. *
  58. IMODE=0
  59. ISOLS=0
  60. 706 CALL LIROBJ ('SOLUTION',IPOI1,0,IRT1)
  61. IF(IRT1.EQ.0) GO TO 701
  62. MSOLUT=IPOI1
  63. SEGACT MSOLUT
  64. C
  65. C **** EST CE UN MODE ?
  66. C
  67. IF(ITYSOL.NE.'MODE ') GO TO 703
  68. IF(IMODE.EQ.0) GO TO 704
  69. MOTERR(1:8)='SOLUTION'
  70. MOTERR(9:16)='MODE'
  71. CALL ERREUR(130)
  72. SEGDES MSOLUT
  73. GO TO 666
  74. 704 CONTINUE
  75. IMODE=MSOLUT
  76. SEGDES MSOLUT
  77. IF(ISOLS.EQ.0) GO TO 706
  78. GO TO 701
  79. C
  80. C **** EST CE UN SOLSTA ?
  81. C
  82. 703 CONTINUE
  83. IF(ITYSOL.NE.'SOLUSTAT') GO TO 708
  84. IF(ISOLS.EQ.0) GO TO 710
  85. MOTERR(1:8)='SOLUTION'
  86. MOTERR(9:16)='SOLUSTAT'
  87. CALL ERREUR(130)
  88. SEGDES MSOLUT
  89. GO TO 666
  90. 710 CONTINUE
  91. ISOLS=MSOLUT
  92. SEGDES MSOLUT
  93. IF(IMODE.EQ.0) GO TO 706
  94. GO TO 701
  95. 708 CONTINUE
  96. MOTERR(1:8)='SOLUTION'
  97. MOTERR(9:16)=ITYSOL
  98. CALL ERREUR(131)
  99. SEGDES MSOLUT
  100. GO TO 666
  101. C
  102. 701 CONTINUE
  103. IF(ISOLS.EQ.0. AND .IMODE.EQ.0) GO TO 723
  104. IF(ISOLS.EQ.0) GO TO 720
  105. CALL LIROBJ('STRUCTUR',IPOI2,1,IRT2)
  106. IF(IERR.NE.0) GO TO 666
  107. MSTRUC=IPOI2
  108. SEGACT MSTRUC
  109. IF(LISTRU(/1).EQ.1) GO TO 721
  110. MOTERR(1:8)='STRUCTUR'
  111. CALL ERREUR(132)
  112. SEGDES MSTRUC
  113. GO TO 666
  114. 721 ISTRU=LISTRU(1)
  115. SEGDES MSTRUC
  116. IF(IMODE.EQ.0) GO TO 725
  117. CALL RGLIMO(IMODE,ISOLS,ISTRU,1,KRIGI)
  118. IF(KRIGI.EQ.0) GO TO 666
  119. GO TO 800
  120. C
  121. 725 CONTINUE
  122. CALL RGLILI(ISOLS,ISTRU,1,KRIGI)
  123. IF(KRIGI.EQ.0) GO TO 666
  124. GO TO 800
  125. C
  126. 720 CONTINUE
  127. CALL RIGMOD(IMODE,1,KRIGI)
  128. IF(KRIGI.EQ.0) GO TO 666
  129. GO TO 800
  130. C
  131. 723 CONTINUE
  132. CALL LIROBJ('BASEMODA',IPOI2,1,IRT2)
  133. IF(IERR.NE.0) GO TO 666
  134. CALL RGBASE(IPOI2,1,KRIGI)
  135. IF(KRIGI.EQ.0) GO TO 666
  136. C
  137. 800 CONTINUE
  138. CALL ECROBJ('RIGIDITE',KRIGI)
  139. 666 CONTINUE
  140. RETURN
  141. END
  142.  
  143.  
  144.  
  145.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales