Download dyne24.eso

Back to the list

   1 : C DYNE24    SOURCE    CHAT      05/01/12    23:15:54     5004           
   2 :       SUBROUTINE DYNE24(ITABL,ITLIA,KTRAV,II,NLS,NVAR)                          
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
   5 : *--------------------------------------------------------------------*          
   6 : *                                                                    *          
   7 : *     Operateur DYNE : algorithme de Fu - de Vogelaere               *          
   8 : *     ________________________________________________               *          
   9 : *                                                                    *          
  10 : *     Dimensionne les variables NLS et NVAR, gestion des demandes de *
  11 : *     sorties pour les liaisons.                                     *                                               
  12 : *                                                                    *          
  13 : *     Parametres:                                                    *          
  14 : *                                                                    *          
  15 : * e   ITABL   Table definissant les liaisons en sortie.              *          
  16 : * e   ITLIA   Table definissant toutes les liaisons sur une base.    *          
  17 : * e   KTRAV   Segment de travail qui va remplir MTRES dans DYNE15    *          
  18 : * es  II      Compteur                                               *          
  19 : * s   NLS     Nombre de demandes de liaisons en sortie               *          
  20 : * s   NVAR    Nombre maxi de variables internes de liaisons          *          
  21 : *                                                                    *          
  22 : *                                                                    *          
  23 : *     Auteur, date de cr{ation:                                      *          
  24 : *                                                                    *          
  25 : *     Lionel VIVAN, le 2 octobre 1989.                               *          
  26 : *                                                                    *          
  27 : *--------------------------------------------------------------------*          
  28 : -INC CCOPTIO                                                                    
  29 : *                                                                             
  30 :       SEGMENT,MTRAV                                                             
  31 :          INTEGER ICHRE2(NBLS),MPOLA(NBLS),MNULA(NBLS)                           
  32 :          INTEGER MPOLB(NBLS),MNULB(NBLS)                                   
  33 :          INTEGER IVLIAA(NBLS,NTVAR),INLIAA(NBLS,NTVAR)                          
  34 :          INTEGER IVLIAB(NBLS,NTVAR),INLIAB(NBLS,NTVAR)                          
  35 :       ENDSEGMENT                                                                
  36 : *                                                                               
  37 :       LOGICAL L0,L1,LVAR                                                        
  38 :       CHARACTER*8  MONMOT,TYPRET,CHARRE                                                
  39 :       CHARACTER*40 CMOT                                                         
  40 : *                                                                               
  41 :       MTRAV = KTRAV                                                             
  42 :       NLS  = 0                                                                  
  43 :       NVAR = 0                                                                  
  44 : *                                                                               
  45 : *     recherche des liaisons en sortie                                          
  46 : *                                                                               
  47 :       INDICE = 0                                                                
  48 :       IVAR   = 0
  49 :  100  CONTINUE                                                                  
  50 :       INDICE = INDICE + 1                                                       
  51 :       TYPRET = ' '                                                              
  51 :       CALL ACCTAB(ITLIA,'ENTIER',INDICE,X0,' ',L0,IP0,                          
  52 :      &                  TYPRET,I1,X1,CHARRE,L1,ITTL)                               
  53 :       IF (TYPRET.EQ.'TABLE   ' .AND. ITTL.NE.0) THEN                            
  54 :          TYPRET = ' '                                                           
  54 :          CALL ACCTAB(ITABL,'TABLE',I0,X0,' ',L0,ITTL,                           
  55 :      &                     TYPRET,I1,X1,CHARRE,LVAR,ITVAR)                         
  56 :          IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR) THEN                              
  57 :             NLS = NLS + 1                                                       
  58 :             MNULA(NLS) = INDICE                                                 
  59 :             MPOLA(NLS) = ITTL                                                   
  59 :             CALL ACCTAB(ITTL,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,                 
  60 :      &                       'MOT',I1,X1,CMOT,L1,IP1)                           
  61 :             IF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN                     
  62 :                IVAR = 6                                                         
  63 :                NVAR = MAX(NVAR,IVAR)                                            
  64 :                II = II + 1                                                      
  65 :                ICHRE2(II) = IVAR                                                
  66 :                IVLIAA(NLS,1) = 1                                                
  67 :                INLIAA(NLS,1) = 7                                                
  68 :                IVLIAA(NLS,2) = 1                                                
  69 :                INLIAA(NLS,2) = 8                                                
  70 :                IVLIAA(NLS,3) = 1                                                
  71 :                INLIAA(NLS,3) = 69                                               
  72 :                IVLIAA(NLS,4) = 1                                                
  73 :                INLIAA(NLS,4) = 70                                               
  74 :                IVLIAA(NLS,5) = 1                                                
  75 :                INLIAA(NLS,5) = 71                                               
  76 :                IVLIAA(NLS,6) = 1                                                
  77 :                INLIAA(NLS,6) = 72                                               
  78 : *                                                                               
  79 :             ELSE IF (CMOT(1:10).EQ.'POINT_PLAN') THEN             
  80 :                MONMOT = ' '                                                     
  80 :                CALL ACCTAB(ITTL,'MOT',I0,X0,'AMORTISSEMENT',L0,IP0,             
  81 :      &                          MONMOT,I1,XAMO,CHARRE,L1,IP1)                      
  82 : *                                                                               
  83 :                IF (MONMOT.EQ.'FLOTTANT') THEN                                   
  84 :                   IVAR = 3                                                      
  85 :                   IVLIAA(NLS,3) = 1                                             
  86 :                   INLIAA(NLS,3) = 39                                            
  87 :                ELSE                                                             
  88 :                   IVAR = 2                                                      
  89 :                ENDIF                                                            
  90 :                NVAR = MAX(NVAR,IVAR)                                            
  91 :                II = II + 1                                                      
  92 :                ICHRE2(II) = IVAR                                                
  93 :                IVLIAA(NLS,1) = 1                                                
  94 :                INLIAA(NLS,1) = 15                                               
  95 :                IVLIAA(NLS,4) = 1                                                
  96 :                INLIAA(NLS,4) = 7                                                
  97 : *                                                                               
  98 :             ELSE IF (CMOT(1:16).EQ.'COUPLAGE_VITESSE') THEN          
  99 :                IVAR = 3                                                         
 100 :                NVAR = MAX(NVAR,IVAR)                                            
 101 :                II = II + 1                                                      
 102 :                ICHRE2(II) = IVAR                                                
 103 :                IVLIAA(NLS,1) = 1                                                
 104 :                INLIAA(NLS,1) = 73                                               
 105 :                IVLIAA(NLS,3) = 1                                                
 106 :                INLIAA(NLS,3) = 8                                                
 107 :                IVLIAA(NLS,4) = 1                                                
 108 :                INLIAA(NLS,4) = 7                                                
 109 : *                                                                               
 110 :             ELSE IF (CMOT(1:20).EQ.'COUPLAGE_DEPLACEMENT') THEN 
 111 :                IVAR = 2                                                         
 112 :                NVAR = MAX(NVAR,IVAR)                                            
 113 :                II = II + 1                                                      
 114 :                ICHRE2(II) = IVAR                                                
 115 :                IVLIAA(NLS,1) = 1                                                
 116 :                INLIAA(NLS,1) = 74                                               
 117 :                IVLIAA(NLS,4) = 1                                                
 118 :                INLIAA(NLS,4) = 7                                                
 119 : *
 120 :             ELSE IF (CMOT(1:11).EQ.'POLYNOMIALE') THEN
 121 :                IVAR = 1
 122 :                NVAR = MAX(NVAR,IVAR)
 123 :                II = II + 1
 124 :                ICHRE2(II) = IVAR
 125 :                IVLIAA(NLS,1) = 1 
 126 :                INLIAA(NLS,1) = 77                
 127 : *                                                                              
 128 :             ELSE                                                                
 128 :                CALL ERREUR(490)                                                 
 129 :                RETURN                                                           
 130 :             ENDIF                                                               
 131 : *                                                                               
 132 :          ELSE IF (TYPRET.EQ.'TABLE   ' .AND. ITVAR.NE.0) THEN                   
 133 :             NLS = NLS + 1                                                       
 134 :             MNULA(NLS) = INDICE                                                 
 135 :             MPOLA(NLS) = ITTL                                                   
 135 :             CALL ACCTAB(ITTL,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,                 
 136 :      &                       'MOT',I1,X1,CMOT,L1,IT1)                           
 137 :             IVAR = 0                                                            
 138 : *                                                                               
 139 :             IF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN                         
 140 :                TYPRET = ' '                                                     
 140 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,              
 141 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 142 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 143 :                   IVAR = IVAR + 1                                               
 144 :                   IVLIAA(NLS,1) = 1                                             
 145 :                   INLIAA(NLS,1) = 7                                             
 146 :                ENDIF                                                            
 147 :                TYPRET = ' '                                                     
 147 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE',L0,IP0,                  
 148 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 149 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 150 :                   IVAR = IVAR + 1                                               
 151 :                   IVLIAA(NLS,2) = 1                                             
 152 :                   INLIAA(NLS,2) = 8                                             
 153 :                ENDIF                                                            
 154 :                TYPRET = ' '                                                     
 154 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'MASSE_AJOUTEE',L0,IP0,            
 155 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 156 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 157 :                   IVAR = IVAR + 1                                               
 158 :                   IVLIAA(NLS,3) = 1                                             
 159 :                   INLIAA(NLS,3) = 69                                            
 160 :                ENDIF                                                            
 161 :                TYPRET = ' '                                                     
 161 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_CONVECTION',L0,IP0,         
 162 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 163 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 164 :                   IVAR = IVAR + 1                                               
 165 :                   IVLIAA(NLS,4) = 1                                             
 166 :                   INLIAA(NLS,4) = 70                                            
 167 :                ENDIF                                                            
 168 :                TYPRET = ' '                                                     
 168 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_VISCOSITE',L0,IP0,          
 169 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 170 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 171 :                   IVAR = IVAR + 1                                               
 172 :                   IVLIAA(NLS,5) = 1                                             
 173 :                   INLIAA(NLS,5) = 71                                            
 174 :                ENDIF                                                            
 175 :                TYPRET = ' '                                                     
 175 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_PERTE_DE_CHARGE',           
 176 :      &                           L0,IP0,TYPRET,I1,X1,CHARRE,LVAR,IT1)              
 177 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 178 :                   IVAR = IVAR + 1                                               
 179 :                   IVLIAA(NLS,6) = 1                                             
 180 :                   INLIAA(NLS,6) = 72                                            
 181 :                ENDIF                                                            
 182 :                IF (IVAR.EQ.0) THEN                                              
 182 :                   CALL ERREUR(496)                                              
 183 :                   RETURN                                                        
 184 :                ENDIF                                                            
 185 : *                                                                               
 186 :             ELSE IF (CMOT(1:10).EQ.'POINT_PLAN') THEN                           
 187 :                TYPRET = ' '                                                     
 187 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,              
 188 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 189 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 190 :                   IVAR = IVAR + 1                                               
 191 :                   IVLIAA(NLS,4) = 1                                             
 192 :                   INLIAA(NLS,4) = 7                                             
 193 :                ENDIF                                                            
 194 :                TYPRET = ' '                                                     
 194 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE_NORMALE',L0,IP0,          
 195 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 196 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 197 :                   IVAR = IVAR + 1                                               
 198 :                   IVLIAA(NLS,3) = 1                                             
 199 :                   INLIAA(NLS,3) = 39                                            
 200 :                ENDIF                                                            
 201 :                TYPRET = ' '                                                     
 201 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_DE_CHOC',L0,IP0,            
 202 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 203 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 204 :                   IVAR = IVAR + 1                                               
 205 :                   IVLIAA(NLS,1) = 1                                             
 206 :                   INLIAA(NLS,1) = 15                                            
 207 :                ENDIF                                                            
 208 :                IF (IVAR.EQ.0) THEN                                              
 208 :                   CALL ERREUR(496)                                              
 209 :                   RETURN                                                        
 210 :                ENDIF                                                            
 211 : *                                                                               
 212 :             ELSE IF (CMOT(1:16).EQ.'COUPLAGE_VITESSE') THEN                     
 213 :                TYPRET = ' '                                                     
 213 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,              
 214 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 215 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 216 :                   IVAR = IVAR + 1                                               
 217 :                   IVLIAA(NLS,4) = 1                                             
 218 :                   INLIAA(NLS,4) = 7                                             
 219 :                ENDIF                                                            
 220 :                TYPRET = ' '                                                     
 220 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE',L0,IP0,                  
 221 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 222 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 223 :                   IVAR = IVAR + 1                                               
 224 :                   IVLIAA(NLS,3) = 1                                             
 225 :                   INLIAA(NLS,3) = 8                                             
 226 :                ENDIF                                                            
 227 :                TYPRET = ' '                                                     
 227 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,                                   
 228 :      &                     'FORCE_DE_COUPLAGE_VITESSE',L0,IP0,                  
 229 :      &                     TYPRET,I1,X1,CHARRE,LVAR,IT1)                           
 230 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 231 :                   IVAR = IVAR + 1                                               
 232 :                   IVLIAA(NLS,1) = 1                                             
 233 :                   INLIAA(NLS,1) = 73                                            
 234 :                ENDIF                                                            
 235 :                IF (IVAR.EQ.0) THEN                                              
 235 :                   CALL ERREUR(496)                                              
 236 :                   RETURN                                                        
 237 :                ENDIF                                                            
 238 : *                                                                               
 239 :             ELSE IF (CMOT(1:20).EQ.'COUPLAGE_DEPLACEMENT') THEN                 
 240 :                TYPRET = ' '                                                     
 240 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,              
 241 :      &                           TYPRET,I1,X1,CHARRE,LVAR,IT1)                     
 242 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 243 :                   IVAR = IVAR + 1                                               
 244 :                   IVLIAA(NLS,4) = 1                                             
 245 :                   INLIAA(NLS,4) = 7                                             
 246 :                ENDIF                                                            
 247 :                TYPRET = ' '                                                     
 247 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,                                   
 248 :      &                     'FORCE_DE_COUPLAGE_DEPLACEMENT',L0,IP0,              
 249 :      &                     TYPRET,I1,X1,CHARRE,LVAR,IT1)                           
 250 :                IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN                       
 251 :                   IVAR = IVAR + 1                                               
 252 :                   IVLIAA(NLS,1) = 1                                             
 253 :                   INLIAA(NLS,1) = 74                                            
 254 :                ENDIF                                                            
 255 :                IF (IVAR.EQ.0) THEN                                              
 255 :                   CALL ERREUR(496)                                              
 256 :                   RETURN                                                        
 257 :                ENDIF  
 258 : *
 259 :             ELSE IF (CMOT(1:11).EQ.'POLYNOMIALE') THEN
 260 :                TYPRET = ' '
 260 :                CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_POLYNOMIALE',
 261 :      &                     L0,IP0,TYPRET,I1,X1,CHARRE,LVAR,IT1)
 262 :                IF (TYPRET.EQ.'LOGIQUE '.AND.LVAR) THEN
 263 :                   IVAR = IVAR + 1
 264 :                   IVLIAA(NLS,1) = 1
 265 :                   INLIAA(NLS,1) = 77
 266 :                ENDIF                                 
 267 : *                                                                               
 268 :             ELSE                                                                
 268 :                CALL ERREUR(490)                                                 
 269 :                RETURN                                                           
 270 :             ENDIF                                                               
 271 :             NVAR = MAX(NVAR,IVAR)                                               
 272 :             II = II + 1                                                         
 273 :             ICHRE2(II) = IVAR    
 274 :             IF (IIMPI.EQ.333) THEN
 275 :                WRITE(IOIMP,*)'DYNE24 : ICHRE2(',II,')=',IVAR
 276 :             ENDIF                                               
 277 :          ENDIF                                                                  
 278 :          GOTO 100                                                               
 279 :       ENDIF  
 280 :       IF (IIMPI.EQ.333) THEN
 281 :       WRITE(IOIMP,*) 'DYNE24 : NVAR = ',NVAR
 282 :       WRITE(IOIMP,*) 'DYNE24 : NLS  = ',NLS
 283 :       WRITE(IOIMP,*) 'DYNE24 : IVAR = ',IVAR    
 284 :       ENDIF                                                                
 285 : *                                                                               
 286 :       END                                                                       
 287 :  
 288 :  
 289 :  

© Cast3M 2003 - All rights reserved.
Disclaimer