Download massmo.eso

Back to the list

   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