Download @rccm.procedur

Back to the list

   1 : * @RCCM     PROCEDUR  JC220346  12/09/12    21:15:08     7501           
   2 : * RCCM PROCEDURE                                    96/11/20   09:00:00
   3 : * ----------------------------------------------------------------------
   4 : ******                       PROCEDURE @RCCM                      ******
   5 : * ----------------------------------------------------------------------
   6 : *
   7 : *   CETTE PROCEDURE PERMET D'EFFECTUER UN DEPOUILLEMENT RCCM :
   8 : *     - linearisations de coupes
   9 : *     - variations d'etats
  10 : *     - fatigue
  11 : *
  12 : * ----------------------------------------------------------------------
  13 : *
  14 : *   LES DONNEES SONT :
  15 : *    ----> la table de definition des coupes
  16 : *    ----> la table de definition des etats
  17 : *    ----> la table de definition des groupes de transitoires
  18 : *    ----> la table pour le calcul a la fatigue
  19 : *
  20 : *   EN SORTIE :
  21 : *    ----> impression des resultats
  22 : *
  23 : * ----------------------------------------------------------------------
  24 : *   PAR Joseph MANNINO
  25 : * ----------------------------------------------------------------------
  26 : 'DEBPROC' @RCCM TABCOUP*TABLE TABET*TABLE TABGROU/TABLE TABFATI/TABLE;
  27 : 
  28 : * ======================================================================
  29 : *   initialisations
  30 : * ======================================================================
  31 : MESSAGE ' ' ;
  32 : MESSAGE '***** DEBUT DU CALCUL RCCM *****' ;
  33 : MESSAGE '--------------------------------' ;
  34 : MESSAGE ' ' ;
  35 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36 : *   formation de la table des etats (la table des etats
  37 : *   thermomecaniques doit etre complete ; la table des etats thermiques
  38 : *   peut etre incomplete ou vide, elle est alors completee ici)
  39 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  40 : M       = MOT M ;
  41 : T       = MOT T ;
  42 : FLEXT   = VRAI ;
  43 : SI (NON (EXISTE TABET M)) ;
  44 :   MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  45 :   QUITTER @RCCM ;
  46 : FINSI ;
  47 : NETM    = DIME TABET.M ;
  48 : SI (NETM EGA 0) ;
  49 :   MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  50 :   QUITTER @RCCM ;
  51 : FINSI ;
  52 : REPETER BOUCLE (NETM) ;
  53 :   I         = &BOUCLE ;
  54 :   SI (NON (EXISTE (TABET.M) I)) ;
  55 :     MESSAGE 'LA TABLE DES ETATS THERMOMECANIQUES NE CONVIENT PAS' ;
  56 :     QUITTER @RCCM ;
  57 :   FINSI ;
  58 : FIN BOUCLE ;
  59 : SI (NON (EXISTE TABET T)) ;
  60 :   FLEXT   = FAUX ;
  61 : FINSI ;
  62 : SI (EXISTE TABET T) ;
  63 :   SI ((DIME TABET.T) > 0) ;
  64 :     INDT = INDEX (TABET.T) ;
  65 :     REPETER BOUCLE (DIME INDT) ;
  66 :       J = &BOUCLE ;
  67 :       K = INDT.J ;
  68 :       SI ((K > NETM) OU (K < 1)) ;
  69 :         MESSAGE 'LA TABLE DES ETATS THERMIQUES NE CONVIENT PAS' ;
  70 :         QUITTER @RCCM ;
  71 :       FINSI ;
  72 :     FIN BOUCLE ;
  73 :   FINSI ;
  74 : FINSI ;
  75 : TABETAT = TABLE ;
  76 : REPETER BOUCLE (NETM) ;
  77 :   I         = &BOUCLE ;
  78 :   TABETAT.I = TABET.M.I ;
  79 : FIN BOUCLE ;
  80 : REPETER BOUCLE (NETM) ;
  81 :   I = &BOUCLE ;
  82 :   J = I + NETM ;
  83 :   SI (FLEXT) ;
  84 :     SI (EXISTE (TABET.T) I) ;
  85 :       TABETAT.J = TABET.T.I ;
  86 :     SINON ;
  87 :       TABETAT.J = (TABETAT.I) * 0. ;
  88 :     FINSI ;
  89 :   FINSI ;
  90 : FIN BOUCLE ;
  91 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  92 : *   formation de la table des groupes (la table des groupes thermiques
  93 : *   est formee a partir des groupes thermomecaniques) :
  94 : *    - 1 : groupe thermomecanique
  95 : *    - 2 : groupe thermique permettant d'exclure la flexion thermique
  96 : *   reorganisation de la table des groupes :
  97 : *    - l'etat 0 est mis a la fin
  98 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  99 : NCOUPS    = DIME TABCOUP ;
 100 : NETATS    = DIME TABETAT ;
 101 : L         = 1 ;
 102 : M         = 2 ;
 103 : SI ( EXISTE TABGROU ) ;
 104 :   TABGROU.M = TABLE ;
 105 :   NGROUPTM = DIME TABGROU.L ;
 106 :   SI ( NGROUPTM EGA 0 ) ;
 107 :     MESSAGE 'LES LISTES DES GROUPES NE CONVIENNENT PAS' ;
 108 :     QUITTER @RCCM ;
 109 :   FINSI ;
 110 :   REPETER BOUCLE1 (NGROUPTM) ;
 111 :     I      = &BOUCLE1 ;
 112 :     LETAT1 = TABGROU.L.I ;
 113 :     LETAT2 = LECT ;
 114 :     REPETER BOUCLE2 (DIME LETAT1) ;
 115 :       J    = &BOUCLE2 ;
 116 :       ETAT = EXTRAIRE LETAT1 J ;
 117 :       SI (ETAT EGA 0) ;
 118 :         LETAT2 = LETAT2 ET (LECT ETAT) ;
 119 :       SINON ;
 120 :         LETAT2 = LETAT2 ET (LECT (ETAT+NETM)) ;
 121 :       FINSI ;
 122 :     FIN BOUCLE2 ;
 123 :     SI (FLEXT) ;
 124 :       TABGROU.M.I = LETAT2 ;
 125 :       MESSAGE ' ' ;
 126 :       MESSAGE 'CREATION DU GROUPE THERMIQUE CORRESPONDANT AU GROUPE '
 127 :               'THERMOMECANIQUE' I ;
 128 :       LIST LETAT2 ;
 129 :       MESSAGE ' ' ;
 130 :     SINON ;
 131 :       TABGROU.M.I = LETAT1 ;
 132 :       MESSAGE ' ' ;
 133 :       MESSAGE 'ATTENTION VOUS AVEZ EXCLU TOUTE LA FLEXION AU GROUPE '
 134 :               'THERMOMECANIQUE' I ;
 135 :       LIST LETAT1 ;
 136 :       MESSAGE ' ' ;
 137 :     FINSI ;
 138 :   FIN BOUCLE1 ;
 139 :   REPETER BOUCLE1 (NGROUPTM) ;
 140 :     I      = &BOUCLE1 ;
 141 :     LETAT1 = ORDONNER 'DECROISSANT' (TABGROU.L.I) ;
 142 :     LETAT2 = ORDONNER 'DECROISSANT' (TABGROU.M.I) ;
 143 :     TABGROU.L.I = LETAT1 ;
 144 :     TABGROU.M.I = LETAT2 ;
 145 :   FIN BOUCLE1 ;
 146 : FINSI ;
 147 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 148 : * INITIALISATIONS
 149 : * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 150 : SEISME   = FAUX ;
 151 : DIMP     = VALE DIME ;
 152 : TCE      = TABLE ;
 153 : TVTMG    = TABLE ;
 154 : TVTHG    = TABLE ;
 155 : TVARSG   = TABLE ;
 156 : TABOCCUR = TABLE ;
 157 : TABDONF  = TABLE ;
 158 : ID       = 1 ;
 159 : IND1     = 1 ;
 160 : IND2     = 2 ;
 161 : IND3     = 3 ;
 162 : IND4     = 4 ;
 163 : IND5     = 5 ;
 164 : IND6     = 6 ;
 165 : IND7     = 7 ;
 166 : IND8     = 8 ;
 167 : IND9     = 9 ;
 168 : * ======================================================================
 169 : *   verifications
 170 : * ======================================================================
 171 : MESSAGE ' ' ;
 172 : MESSAGE '---> phase verification' ;
 173 : MESSAGE '     ------------------' ;
 174 : MESSAGE ' ' ;
 175 : SI ( ( NCOUPS EGA 0 ) OU ( NETATS EGA 0 ) ) ;
 176 :   QUITTER @RCCM ;
 177 : FINSI ;
 178 : SI ( EXISTE TABGROU ) ;
 179 :   REPETER BOUCLE1 ( NGROUPTM ) ;
 180 :     I       = &BOUCLE1 ;
 181 :     LISTETM = TABGROU.IND1.I ;
 182 :     NTRANS  = DIME LISTETM ;
 183 :     REPETER BOUCLE2 ( NTRANS ) ;
 184 :       J    = &BOUCLE2 ;
 185 :       ETAT = EXTRAIRE LISTETM J ;
 186 :       SI ( ( ETAT > NETATS ) OU ( ETAT < 0 ) ) ;
 187 :         MESSAGE 'LA FORMATION DES GROUPES THERMO-MECANIQUES NE CONVIENT
 188 : PAS' ;
 189 :         QUITTER @RCCM ;
 190 :       FINSI ;
 191 :     FIN BOUCLE2 ;
 192 :     LISTETH = TABGROU.IND2.I ;
 193 :     NTRANS  = DIME LISTETH ;
 194 :     REPETER BOUCLE2 ( NTRANS ) ;
 195 :       J    = &BOUCLE2 ;
 196 :       ETAT = EXTRAIRE LISTETH J ;
 197 :       SI ( ( ETAT > NETATS ) OU ( ETAT < 0 ) ) ;
 198 :         MESSAGE 'LA FORMATION DES GROUPES POUR EXCLUSION DE LA FLEXION T
 199 : HERMIQUE NE CONVIENT PAS' ;
 200 :         QUITTER @RCCM ;
 201 :       FINSI ;
 202 :     FIN BOUCLE2 ;
 203 :   FIN BOUCLE1 ;
 204 :   SI ( EXISTE TABFATI ) ;
 205 :     NTABFAT1 = DIME TABFATI.IND1 ;
 206 :     SI ( NTABFAT1 NEG NGROUPTM ) ;
 207 :       MESSAGE 'LA TABLE DES NOMBRES D"OCCURENCES POUR LA FATIGUE NE CONV
 208 : IENT PAS' ;
 209 :       QUITTER @RCCM ;
 210 :     FINSI ;
 211 :     NTABFAT2 = DIME TABFATI.IND2 ;
 212 :     SI ( NTABFAT2 NEG NCOUPS ) ;
 213 :       MESSAGE 'LA TABLE DE DESCRIPTION DES MATERIAUX POUR LA FATIGUE NE
 214 : CONVIENT PAS' ;
 215 :       QUITTER @RCCM ;
 216 :     FINSI ;
 217 :     SI (EXISTE TABFATI IND3) ;
 218 :       SEISME = VRAI ;
 219 :       NTABFAT3 = DIME TABFATI.IND3 ;
 220 :       SI ( NTABFAT3 NEG NCOUPS ) ;
 221 :         MESSAGE 'LA TABLE DE DESCRIPTION DES SEISMES POUR LA FATIGUE NE
 222 : CO NVIENT PAS' ;
 223 :         QUITTER @RCCM ;
 224 :       FINSI ;
 225 :     FINSI ;
 226 :     REPETER BOUCLE1 ( NCOUPS ) ;
 227 :       I       = &BOUCLE1 ;
 228 :       LISTEMA = TABFATI.IND2.I ;
 229 :       NMATER  = DIME ( LISTEMA ) ;
 230 :       SI (((NON SEISME) ET (NMATER NEG 6)) OU
 231 :           (SEISME ET (NMATER NEG 7))) ;
 232 :         MESSAGE 'LA TABLE DE DESCRIPTION DES MATERIAUX POUR LA FATIGUE N
 233 : E CONVIENT PAS' ;
 234 :         QUITTER @RCCM ;
 235 :       FINSI ;
 236 :     FIN BOUCLE1 ;
 237 :     SI (SEISME) ;
 238 :       REPETER BOUCLE1 ( NCOUPS ) ;
 239 :         I       = &BOUCLE1 ;
 240 :         LISTSEI = TABFATI.IND3.I ;
 241 :         NCTORS  = DIME ( LISTSEI ) ;
 242 :         SI (((DIMP EGA 2) ET (NCTORS NEG 6)) OU
 243 :             ((DIMP EGA 3) ET (NCTORS NEG 8))) ;
 244 :           MESSAGE 'LA TABLE DE DESCRIPTION DU SEISME POUR LA FATIGUE NE
 245 : CONVIENT PAS' ;
 246 :           QUITTER @RCCM ;
 247 :         FINSI ;
 248 :       FIN BOUCLE1 ;
 249 :     FINSI ;
 250 :   FINSI ;
 251 : FINSI ;
 252 : * ======================================================================
 253 : *   coupes et linearisation des contraintes
 254 : * ======================================================================
 255 : MESSAGE ' ' ;
 256 : MESSAGE '---> phase coupes et linearisation des contraintes' ;
 257 : MESSAGE '     ---------------------------------------------' ;
 258 : MESSAGE ' ' ;
 259 : * ----------------------------------------------------------------------
 260 : *   boucle sur les etats
 261 : * ----------------------------------------------------------------------
 262 : REPETER BOUCLE1 ( NETATS ) ;
 263 :   I     = &BOUCLE1 ;
 264 :   TCE.I = TABLE ;
 265 : * ----------------------------------------------------------------------
 266 : *   boucle sur les coupes
 267 : * ----------------------------------------------------------------------
 268 :   REPETER BOUCLE2 ( NCOUPS ) ;
 269 :     J = &BOUCLE2 ;
 270 :     MESSAGE ' ' ;
 271 :     MESSAGE '   ---> etat ' I ' coupe ' J ;
 272 :     MESSAGE '        -------------------------' ;
 273 :     MESSAGE ' ' ;
 274 : 
 275 :       TCE.I.J = @RCCMCO2 I J TABCOUP.J.IND1 TABCOUP.J.IND2
 276 :                              TABCOUP.J.IND3 TABCOUP.J.IND4
 277 :                              TABETAT.I      TABCOUP.J.IND5
 278 :                              TABCOUP.J.IND6 TABCOUP.J.IND7
 279 :                              TABCOUP.J.IND8 TABCOUP.J.IND9;
 280 :      'SI' ('NEG' ('TYPE' (TCE.I.J)) 'TABLE   ');
 281 :        'SI' ('EGA' (TCE.I.J) 'ARRET') ;'QUITTER' @RCCM ;'FINSI' ;
 282 :      'FINSI';
 283 :   FIN BOUCLE2 ;
 284 : FIN BOUCLE1 ;
 285 : MESSAGE ' ' ;
 286 : MESSAGE '---> fin phase coupes et linearisation des contraintes' ;
 287 : MESSAGE '     -------------------------------------------------' ;
 288 : MESSAGE ' ' ;
 289 : * ======================================================================
 290 : *   variations  et fatigue
 291 : * ======================================================================
 292 : SI ( EXISTE TABGROU ) ;
 293 : SI ( NGROUPTM >EG 1 ) ;
 294 : MESSAGE ' ' ;
 295 : MESSAGE '---> phase variations' ;
 296 : MESSAGE '     ----------------' ;
 297 : MESSAGE ' ' ;
 298 : * ----------------------------------------------------------------------
 299 : *   variations  si TABGROU existe
 300 : * ----------------------------------------------------------------------
 301 : *modif VARIATI: la procedure VARIATI est supprimee
 302 : *et est directement integree ci dessous
 303 : *en conservant la notice explicative
 304 : *modif effectuees avant l entree dans variati:
 305 : * BOUCL01 a 03 remplacent BOUCLE1 a 3
 306 : * II JJ KK LL MM NN ont remplace I J K L M N
 307 : 
 308 :   REPETER BOUCL01 ( NGROUPTM ) ;
 309 :     II       = &BOUCL01 ;
 310 :     LISTETM = TABGROU.IND1.II ;
 311 :     LISTETH = TABGROU.IND2.II ;
 312 :     NTRANS  = DIME LISTETM ;
 313 :     REPETER BOUCL02 ( NCOUPS ) ;
 314 :       JJ       = &BOUCL02 ;
 315 :       TVTMG.JJ = TABLE ;
 316 :       TVTHG.JJ = TABLE ;
 317 :       LL = 0 ;
 318 :       REPETER BOUCL03 ( NTRANS ) ;
 319 :         KK = &BOUCL03 ;
 320 :         SAUT LIGNE;TIRET=
 321 : '          ---------------------------------------------------';
 322 :    MESSAGE '     ---> groupe ' II ' coupe ' JJ ' transitoire TM ' KK ;
 323 :         MESSAGE TIRET;
 324 :         MESSAGE ' ' ;
 325 :         ETAT = EXTRAIRE LISTETM KK ;
 326 :         SI ( ETAT NEG 0 ) ;
 327 :           LL         = LL + 1 ;
 328 :           TVTMG.JJ.LL = TCE.ETAT.JJ ;
 329 :         FINSI ;
 330 :       FIN BOUCL03 ;
 331 :       NN = 0 ;
 332 :       REPETER BOUCL03 ( NTRANS ) ;
 333 :         MM = &BOUCL03 ;
 334 :         SAUT LIGNE;
 335 :  MESSAGE '     ---> groupe ' II ' coupe ' JJ ' transitoire TH ' MM ;
 336 :         MESSAGE TIRET;
 337 :         SAUT LIGNE;
 338 :         ETAT = EXTRAIRE LISTETH MM ;
 339 :         SI ( ETAT NEG 0 ) ;
 340 :           NN         = NN + 1 ;
 341 :           TVTHG.JJ.NN = TCE.ETAT.JJ ;
 342 :         FINSI ;
 343 :       FIN BOUCL03 ;
 344 :     FIN BOUCL02 ;
 345 : *LIST  (TVTMG . 1 . 1) ;
 346 : *LIST  (TVTMG . 1 . 2) ;
 347 : *LIST  ( TVTHG . 1 . 1);
 348 : *LIST  ( TVTHG . 1 . 2);
 349 : 
 350 : 
 351 : *modif
 352 : *    SI ( LL NEG KK ) ;
 353 : *      TVARSG.II = @VARIATI FLEXT TABGROU.ID.II TVTMG TVTHG 'NUL' ;
 354 : *    SINON ;
 355 : *      TVARSG.II = @VARIATI FLEXT TABGROU.ID.II TVTMG TVTHG ;
 356 : *    FINSI ;
 357 : *initialisations
 358 : MOPT*LOGIQUE = FAUX ;
 359 : SI ( LL NEG KK ) ;MOPT*LOGIQUE=VRAI ; FINSI ;
 360 : *FLEXT ichange
 361 : ETATS = TABGROU.ID.II ;
 362 : TABVM = TVTMG ;
 363 : TABVT = TVTHG ;
 364 : *on garde la notice de variati
 365 : *$$$$ @VARIATI
 366 : * @VARIATI PROCEDURE                                 96/10/08   16:00:00
 367 : * ----------------------------------------------------------------------
 368 : ******                     PROCEDURE @VARIATI                     ******
 369 : * ----------------------------------------------------------------------
 370 : *
 371 : *   CETTE PROCEDURE PERMET DE CALCULER LA VARIATION MAXIMALE ENTRE
 372 : *   2 TORSEURS, SUR LES PEAUX D'UNE COUPE, SUIVANT LE RCCM.
 373 : *
 374 : * ----------------------------------------------------------------------
 375 : *
 376 : *   LES DONNEES SONT :
 377 : *    ----> une variable logique indiquant si VRAI que la flexion
 378 : *          thermique est exclue
 379 : *    ----> la liste des etats du groupe
 380 : *    ----> une table a 2 indices contenant :
 381 : *            - premier indice  : un numero de coupe
 382 : *            - deuxieme indice : un chargement mecanique sous forme
 383 : *                                de table a 6 indices comprenant :
 384 : *                                - 1 : torseur de flexion, paroi
 385 : *                                      interieure
 386 : *                                - 2 : torseur de membrane+flexion,
 387 : *                                      paroi interieure
 388 : *                                - 3 : torseur des contraintes totales,
 389 : *                                      paroi interieure
 390 : *                                - 4 : torseur de flexion, paroi
 391 : *                                      exterieure
 392 : *                                - 5 : torseur de membrane+flexion,
 393 : *                                      paroi exterieure
 394 : *                                - 6 : torseur des contraintes totales,
 395 : *                                      paroi exterieure
 396 : *    ----> une table a 2 indices contenant :
 397 : *            - premier indice  : un numero de coupe
 398 : *            - deuxieme indice : un chargement thermique sous forme
 399 : *                                de table a 6 indices comprenant :
 400 : *                                - 1 : torseur de flexion, paroi
 401 : *                                      interieure
 402 : *                                - 2 : torseur de membrane+flexion,
 403 : *                                      paroi interieure
 404 : *                                - 3 : torseur des contraintes totales,
 405 : *                                      paroi interieure
 406 : *                                - 4 : torseur de flexion, paroi
 407 : *                                      exterieure
 408 : *                                - 5 : torseur de membrane+flexion,
 409 : *                                      paroi exterieure
 410 : *                                - 6 : torseur des contraintes totales,
 411 : *                                      paroi exterieure
 412 : *    ----> un mot eventuel permettant de prendre en compte un chargement
 413 : *          supplementaire nul
 414 : *
 415 : *   EN SORTIE :
 416 : *    ----> impression des resultats
 417 : *    ----> sortie d'une table a 4 indices contenant :
 418 : *            - premier   indice  : numero de coupe
 419 : *            - deuxieme  indice  : code :
 420 : *                                  - 1 : paroi interieure
 421 : *                                  - 2 : paroi exterieure
 422 : *            - troisieme indice  : code :
 423 : *                                  - 1 : contraintes totales
 424 : *                                  - 2 : contraintes membrane+flexion
 425 : *                                  - 3 : contraintes membrane+flexion,
 426 : *                                        flexion thermique exclue
 427 : *            - quatrieme indice  : 5 sorties :
 428 : *                                  - 1 : indice du premier torseur
 429 : *                                  - 2 : indice du deuxieme torseur
 430 : *                                  - 3 : premier torseur
 431 : *                                  - 4 : deuxieme torseur
 432 : *                                  - 5 : tresca
 433 : *
 434 : * ----------------------------------------------------------------------
 435 : *   PAR Joseph MANNINO
 436 : * ----------------------------------------------------------------------
 437 : *debut variati
 438 : *'DEBPROC' @VARIATI FLEXT*LOGIQUE ETATS*LISTENTI TABVM*TABLE  TABVT*TABLE
 439 : *                   MOPT/MOT ;
 440 : * ======================================================================
 441 : *   initialisation
 442 : * ======================================================================
 443 : *
 444 : TAB1  = TABLE ;
 445 : TAB2  = TABLE ;
 446 : TAB3  = TABLE ;
 447 : TABVS = TABLE ;
 448 : * ======================================================================
 449 : *   nombre de coupes
 450 : * ======================================================================
 451 : NCOUP = DIME TABVM ;
 452 : SI ( NCOUP NEG ( DIME TABVT ) ) ;
 453 :   MESSAGE 'LES TABLES POUR VARIATIONS NE CONVIENNENT PAS' ;
 454 :   QUITTER @RCCM ;
 455 : FINSI ;
 456 : * ======================================================================
 457 : *   creation d'une droite fictive et du modele associe, pour calcul
 458 : *   du TRESCA
 459 : * ======================================================================
 460 : DIMG = VALE 'DIME' ;
 461 : MODG = VALE 'MODE' ;
 462 : 
 463 : SI ( DIMG EGA 2 ) ;
 464 :   P1 = 0. 0. ;
 465 :   P2 = 1. 0. ;
 466 : SINON ;
 467 :   P1 = 0. 0. 0. ;
 468 :   P2 = 1. 0. 0. ;
 469 : FINSI ;
 470 : DR = P1 D 1 P2 ;
 471 : MODLDR = MODL DR MECANIQUE ELASTIQUE ;
 472 : * ======================================================================
 473 : *   boucle sur les coupes
 474 : * ======================================================================
 475 : REPETER TCOUP ( NCOUP ) ;
 476 :   L       = &TCOUP ;
 477 :   $L      = CHAINE L/3 ;
 478 :   TABVS.L = TABLE ;
 479 : * ----------------------------------------------------------------------
 480 : *   boucle sur les parois interieures et exterieures
 481 : *   m=1 --> paroi interieure
 482 : *   m=2 --> paroi exterieure
 483 : * ----------------------------------------------------------------------
 484 : 
 485 :   REPETER TPARO ( 2 ) ;
 486 :     M         = &TPARO ;
 487 :     TABVS.L.M = TABLE ;
 488 : * ----------------------------------------------------------------------
 489 : *   verification des chargements
 490 : * ----------------------------------------------------------------------
 491 :     NTORS = DIME TABVM.L ;
 492 :     SI ( NTORS NEG ( DIME TABVT.L ) ) ;
 493 :       MESSAGE 'LES TABLES POUR VARIATIONS NE CONVIENNENT PAS' ;
 494 :       QUITTER @RCCM ;
 495 :     FINSI ;
 496 : * ----------------------------------------------------------------------
 497 : *   extraction des chargements
 498 : * ----------------------------------------------------------------------
 499 :     REPETER TCHAR ( NTORS ) ;
 500 :       N      = &TCHAR ;
 501 :       TABM   = TABVM.L.N ;
 502 :       TABT   = TABVT.L.N ;
 503 :       SI ( M EGA 1 ) ;
 504 :         TAB1.N = TABM. 3 ;
 505 :         TAB2.N = TABM. 2;
 506 :         TAB3.N = TABT. 1 ;
 507 :       SINON ;
 508 :         TAB1.N = TABM. 6 ;
 509 :         TAB2.N = TABM. 5 ;
 510 :         TAB3.N = TABT. 4 ;
 511 :       FINSI ;
 512 :     FIN TCHAR ;
 513 : * ----------------------------------------------------------------------
 514 : *  on rajoute eventuellement le chargement null
 515 : * ----------------------------------------------------------------------
 516 :     SI  MOPT  ;
 517 :       NTORS = NTORS + 1 ;
 518 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 519 :         TAB1.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
 520 :         TAB2.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
 521 :         TAB3.NTORS = PROG 0. 0. 0. 0. 0. 0. ;
 522 :       SINON ;
 523 :         TAB1.NTORS = PROG 0. 0. 0. 0. ;
 524 :         TAB2.NTORS = PROG 0. 0. 0. 0. ;
 525 :         TAB3.NTORS = PROG 0. 0. 0. 0. ;
 526 :       FINSI ;
 527 :     FINSI ;
 528 : * ======================================================================
 529 : *   on soustrait 2 a 2 les torseurs contenus dans tab et on retient
 530 : *   la combinaison qui donne le plus grand tresca
 531 : * ======================================================================
 532 :     TREJM1 = 0. ;
 533 :     TREJM2 = 0. ;
 534 :     TREJM3 = 0. ;
 535 :     IS1    = 1 ;
 536 :     JS1    = 1 ;
 537 :     IS2    = 1 ;
 538 :     JS2    = 1 ;
 539 :     IS3    = 1 ;
 540 :     JS3    = 1 ;
 541 :     REPETER BOUCLE1 ( NTORS - 1 ) ;
 542 :       I = &BOUCLE1 ;
 543 :       J = I ;
 544 :       REPETER BOUCLE2 ( NTORS -  I ) ;
 545 :         J     = J + 1 ;
 546 :         TORS1 = TAB1.I - TAB1.J ;
 547 :         TORS2 = TAB2.I - TAB2.J ;
 548 :         NFOIS = 2 ;
 549 :         SI ( EXISTE TAB3 ) ;
 550 :           TORS3 = ( TAB2.I - TAB3.I ) - ( TAB2.J - TAB3.J ) ;
 551 :           NFOIS = 3 ;
 552 :         FINSI ;
 553 :         REPETER BOUCLE3 ( NFOIS ) ;
 554 :           K = &BOUCLE3 ;
 555 :           SI ( K EGA 1 ) ;
 556 :             S1 = EXTRAIRE TORS1 1 ;
 557 :             S2 = EXTRAIRE TORS1 2 ;
 558 :             S3 = EXTRAIRE TORS1 3 ;
 559 :             S4 = EXTRAIRE TORS1 4 ;
 560 :             SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 561 :               S5 = EXTRAIRE TORS1 5 ;
 562 :               S6 = EXTRAIRE TORS1 6 ;
 563 :             FINSI ;
 564 :           FINSI ;
 565 :           SI ( K EGA 2 ) ;
 566 :             S1 = EXTRAIRE TORS2 1 ;
 567 :             S2 = EXTRAIRE TORS2 2 ;
 568 :             S3 = EXTRAIRE TORS2 3 ;
 569 :             S4 = EXTRAIRE TORS2 4 ;
 570 :             SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 571 :               S5 = EXTRAIRE TORS2 5 ;
 572 :               S6 = EXTRAIRE TORS2 6 ;
 573 :             FINSI ;
 574 :           FINSI ;
 575 :           SI ( K EGA 3 ) ;
 576 :             S1 = EXTRAIRE TORS3 1 ;
 577 :             S2 = EXTRAIRE TORS3 2 ;
 578 :             S3 = EXTRAIRE TORS3 3 ;
 579 :             S4 = EXTRAIRE TORS3 4 ;
 580 :             SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 581 :               S5 = EXTRAIRE TORS3 5 ;
 582 :               S6 = EXTRAIRE TORS3 6 ;
 583 :             FINSI ;
 584 :           FINSI ;
 585 : * ----------------------------------------------------------------------
 586 : *   creation d'un champ par element fictif constant sur la droite,
 587 : *   equivalent au torseur
 588 : * ----------------------------------------------------------------------
 589 :           SI ( DIMG EGA 2 ) ;
 590 :             SI ( EGA MODG 'FOUR' ) ;
 591 :               CHAM1 = MANU  'CHPO' DR 6 'SMRR' S1 'SMZZ' S2 'SMTT' S3
 592 :                                         'SMRZ' S4 'SMRT' S5 'SMZT' S6 ;
 593 :             SINON ;
 594 :               SI ( EGA MODG 'AXIS' ) ;
 595 :                 CHAM1 = MANU  'CHPO' DR 4 'SMRR' S1 'SMZZ' S2 'SMTT' S3
 596 :                                           'SMRZ' S4 ;
 597 :               SINON ;
 598 :                 CHAM1 = MANU  'CHPO' DR 4 'SMXX' S1 'SMYY' S2 'SMZZ' S3
 599 :                                           'SMXY' S4 ;
 600 :               FINSI ;
 601 :             FINSI ;
 602 :           SINON ;
 603 :             CHAM1 = MANU  'CHPO' DR 6 'SMXX' S1 'SMYY' S2 'SMZZ' S3
 604 :                                       'SMXY' S4 'SMXZ' S5 'SMYZ' S6 ;
 605 :           FINSI ;
 606 : 
 607 :           CHAM2 = CHAN   'CHAM' CHAM1 MODLDR ;
 608 : * ----------------------------------------------------------------------
 609 : *   calcul du tresca
 610 : * ----------------------------------------------------------------------
 611 :           CHAM3 =  TRES  MODLDR CHAM2 ;
 612 :           SI ( K EGA 1 ) ;
 613 :             TREJ1 = EXTR CHAM3 'SCAL' 1 1 1 ;
 614 :             SI ( TREJ1 > TREJM1 ) ;
 615 :               TREJM1 = TREJ1 ;
 616 :               IS1    = I ;
 617 :               JS1    = J ;
 618 :             FINSI ;
 619 :           FINSI ;
 620 :           SI ( K EGA 2 ) ;
 621 :             TREJ2 = EXTR CHAM3 'SCAL' 1 1 1 ;
 622 :             SI ( TREJ2 > TREJM2 ) ;
 623 :               TREJM2 = TREJ2 ;
 624 :               IS2    = I ;
 625 :               JS2    = J ;
 626 :             FINSI ;
 627 :           FINSI ;
 628 :           SI ( K EGA 3 ) ;
 629 :             TREJ3 = EXTR CHAM3 'SCAL' 1 1 1 ;
 630 :             SI ( TREJ3 > TREJM3 ) ;
 631 :               TREJM3 = TREJ3 ;
 632 :               IS3    = I ;
 633 :               JS3    = J ;
 634 :             FINSI ;
 635 :           FINSI ;
 636 :           DETRUIRE CHAM1 ;
 637 :           DETRUIRE CHAM2 ;
 638 :           DETRUIRE CHAM3 ;
 639 :         FIN BOUCLE3 ;
 640 : * ----------------------------------------------------------------------
 641 : *   destruction des objets crees a chaque pas
 642 : * ----------------------------------------------------------------------
 643 :     DETRUIRE TORS1 ;
 644 :     DETRUIRE TORS2 ;
 645 :     SI (NFOIS EGA 3 ) ;
 646 :       DETRUIRE TORS3 ;
 647 :     FINSI ;
 648 :     FIN BOUCLE2 ;
 649 :     FIN BOUCLE1 ;
 650 : * ======================================================================
 651 : *   resultat de la variation
 652 : * ======================================================================
 653 :     REPETER BOUCLE3 ( NFOIS ) ;
 654 :       K           = &BOUCLE3 ;
 655 :       TABVS.L.M.K = TABLE ;
 656 :       SI ( K EGA 1 ) ; UY =  TABVS.L.M.K;
 657 :          UY . 1 = IS1 ;
 658 :          UY . 2 = JS1 ;
 659 :          UY . 3 = TAB1.IS1 ;
 660 :          UY . 4 = TAB1.JS1 ;
 661 :          UY . 5 = TREJM1 ;
 662 :         VAL11           = EXTRAIRE TAB1.IS1 1 ;
 663 :         VAL21           = EXTRAIRE TAB1.IS1 2 ;
 664 :         VAL31           = EXTRAIRE TAB1.IS1 3 ;
 665 :         VAL41           = EXTRAIRE TAB1.IS1 4 ;
 666 :        $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31  VAL41 ;
 667 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 668 :           VAL51           = EXTRAIRE TAB1.IS1 5 ;
 669 :           VAL61           = EXTRAIRE TAB1.IS1 6 ;
 670 :        $VALT1 = CHAINE $VALT1 FORMAT '(F9.2)'  VAL61 VAL51;
 671 :         FINSI ;
 672 :         VAL12           = EXTRAIRE TAB1.JS1 1 ;
 673 :         VAL22           = EXTRAIRE TAB1.JS1 2 ;
 674 :         VAL32           = EXTRAIRE TAB1.JS1 3 ;
 675 :         VAL42           = EXTRAIRE TAB1.JS1 4 ;
 676 :        $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32  VAL42 ;
 677 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 678 :           VAL52           = EXTRAIRE TAB1.JS1 5 ;
 679 :           VAL62           = EXTRAIRE TAB1.JS1 6 ;
 680 :        $VALT2 = CHAINE $VALT2 FORMAT '(F9.2)'  VAL62 VAL52;
 681 :         FINSI ;
 682 :         IS1E            = EXTRAIRE ETATS IS1 ;
 683 :         JS1E            = EXTRAIRE ETATS JS1 ;
 684 :         $IS1            = CHAINE IS1E/3 ;
 685 :         $JS1            = CHAINE JS1E/3 ;
 686 :         $TREJM1         = CHAINE FORMAT '(F9.2)' TREJM1  ;
 687 :         SAUTER 2 'LIGNE';
 688 :         SI ( M EGA 1 ) ;
 689 :           MESSAGE '                      COUPE PAROI INTERIEURE' $L ;
 690 :         SINON ;
 691 :           MESSAGE '                      COUPE PAROI EXTERIEURE' $L ;
 692 :         FINSI ;
 693 :           MESSAGE '                      -------------------------' ;
 694 :         SAUTER  'LIGNE';
 695 :         MESSAGE 'VARIATION CONTRAINTES TOTALES = DELTA(PM+PB+Q+F) : SP';
 696 :         SAUTER  'LIGNE';
 697 :           MESSAGE '  ETAT NO' $IS1 ' -->' $VALT1;
 698 :           MESSAGE '  ETAT NO' $JS1 ' -->' $VALT2;
 699 :         MESSAGE '  TRESCA' $TREJM1 ' MPA' ;
 700 :       FINSI ;
 701 :       SI ( K EGA 2 ) ; UY= TABVS.L.M.K;
 702 :          UY . 1 = IS2 ;
 703 :          UY . 2 = JS2 ;
 704 :          UY . 3 = TAB2.IS2 ;
 705 :          UY . 4 = TAB2.JS2 ;
 706 :          UY . 5 = TREJM2 ;
 707 :         VAL11           = EXTRAIRE TAB2.IS2 1 ;
 708 :         VAL21           = EXTRAIRE TAB2.IS2 2 ;
 709 :         VAL31           = EXTRAIRE TAB2.IS2 3 ;
 710 :         VAL41           = EXTRAIRE TAB2.IS2 4 ;
 711 :        $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31  VAL41 ;
 712 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 713 :           VAL51           = EXTRAIRE TAB2.IS2 5 ;
 714 :           VAL61           = EXTRAIRE TAB2.IS2 6 ;
 715 : 
 716 :        $VALT1 = CHAINE $VALT1  FORMAT '(F9.2)' VAL61 VAL51;
 717 :         FINSI ;
 718 :         VAL12           = EXTRAIRE TAB2.JS2 1 ;
 719 :         VAL22           = EXTRAIRE TAB2.JS2 2 ;
 720 :         VAL32           = EXTRAIRE TAB2.JS2 3 ;
 721 :         VAL42           = EXTRAIRE TAB2.JS2 4 ;
 722 :        $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32  VAL42 ;
 723 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 724 :           VAL52           = EXTRAIRE TAB2.JS2 5 ;
 725 :           VAL62           = EXTRAIRE TAB2.JS2 6 ;
 726 :        $VALT2 = CHAINE $VALT2  FORMAT '(F9.2)' VAL62 VAL52;
 727 :         FINSI ;
 728 :         IS2E            = EXTRAIRE ETATS IS2 ;
 729 :         JS2E            = EXTRAIRE ETATS JS2 ;
 730 :         $IS2            = CHAINE IS2E/3 ;
 731 :         $JS2            = CHAINE JS2E/3 ;
 732 :         $TREJM2         = CHAINE FORMAT '(F9.2)' TREJM2  ;
 733 :         SAUTER  'LIGNE';
 734 :         MESSAGE 'VARIATION CONTRAINTES MEMBRANE+FLEXION = DELTA(PM+PB+Q)
 735 :  : SN' ;
 736 :        SAUTER  'LIGNE';
 737 :           MESSAGE '  ETAT NO' $IS2 ' -->' $VALT1;
 738 :           MESSAGE '  ETAT NO' $JS2 ' -->' $VALT2;
 739 :         MESSAGE '  TRESCA' $TREJM2 ' MPA' ;
 740 :       FINSI ;
 741 :       SI ( K EGA 3 ) ; UY= TABVS.L.M.K;
 742 :          UY . 1 = IS3 ;
 743 :          UY . 2  = JS3 ;
 744 :          UY . 3 = ( TAB2.IS3 - TAB3.IS3 ) ;
 745 :          UY . 4 = ( TAB2.JS3 - TAB3.JS3 ) ;
 746 :          UY . 5 = TREJM3 ;
 747 :         VAL11  = ( EXTRAIRE TAB2.IS3 1 ) - ( EXTRAIRE TAB3.IS3 1 ) ;
 748 :         VAL21  = ( EXTRAIRE TAB2.IS3 2 ) - ( EXTRAIRE TAB3.IS3 2 ) ;
 749 :         VAL31  = ( EXTRAIRE TAB2.IS3 3 ) - ( EXTRAIRE TAB3.IS3 3 ) ;
 750 :         VAL41  = ( EXTRAIRE TAB2.IS3 4 ) - ( EXTRAIRE TAB3.IS3 4 ) ;
 751 :     $VALT1 = CHAINE FORMAT '(F9.2)' VAL11 VAL21 VAL31 VAL41;
 752 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 753 :           VAL51  = ( EXTRAIRE TAB2.IS3 5 ) - ( EXTRAIRE TAB3.IS3 5 ) ;
 754 :           VAL61  = ( EXTRAIRE TAB2.IS3 6 ) - ( EXTRAIRE TAB3.IS3 6 ) ;
 755 :     $VALT1 = CHAINE  $VALT1 FORMAT '(F9.2)' VAL61 VAL51;
 756 :         FINSI ;
 757 :         VAL12  = ( EXTRAIRE TAB2.JS3 1 ) - ( EXTRAIRE TAB3.JS3 1 ) ;
 758 :         VAL22  = ( EXTRAIRE TAB2.JS3 2 ) - ( EXTRAIRE TAB3.JS3 2 ) ;
 759 :         VAL32  = ( EXTRAIRE TAB2.JS3 3 ) - ( EXTRAIRE TAB3.JS3 3 ) ;
 760 :         VAL42  = ( EXTRAIRE TAB2.JS3 4 ) - ( EXTRAIRE TAB3.JS3 4 ) ;
 761 :     $VALT2 = CHAINE FORMAT '(F9.2)' VAL12 VAL22 VAL32 VAL42;
 762 :         SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 763 :           VAL52  = ( EXTRAIRE TAB2.JS3 5 ) - ( EXTRAIRE TAB3.JS3 5 ) ;
 764 :           VAL62  = ( EXTRAIRE TAB2.JS3 6 ) - ( EXTRAIRE TAB3.JS3 6 ) ;
 765 :     $VALT2 = CHAINE $VALT2  FORMAT '(F9.2)' VAL62 VAL52;
 766 :         FINSI ;
 767 :         IS3E    = EXTRAIRE ETATS IS3 ;
 768 :         JS3E    = EXTRAIRE ETATS JS3 ;
 769 :         $IS3    = CHAINE IS3E/3 ;
 770 :         $JS3    = CHAINE JS3E/3 ;
 771 :         $TREJM3 = CHAINE FORMAT '(F9.2)' TREJM3  ;
 772 :       SAUTER 'LIGNE';
 773 :         SI ( FLEXT ) ;
 774 :           MESSAGE 'VARIATION CONTRAINTES MEMBRANE+FLEXION (FLEXION THER'
 775 :                   'MIQUE EXCLUE) : SN*' ;
 776 :         SINON ;
 777 :           MESSAGE 'VARIATION CONTRAINTES MEMBRANE : SN*' ;
 778 :         FINSI ;
 779 :       SAUTER 'LIGNE';
 780 :           MESSAGE '  ETAT NO' $IS3 ' -->' $VALT1;
 781 :           MESSAGE '  ETAT NO' $JS3 ' -->' $VALT2;
 782 :         MESSAGE '  TRESCA' $TREJM3 ' MPA' ;
 783 :       FINSI ;
 784 :     FIN BOUCLE3 ;
 785 :   FIN TPARO  ;
 786 : FIN TCOUP ;
 787 : *modifs
 788 : *FINPROC TABVS ;
 789 : TVARSG.II = TABVS ;
 790 : 
 791 :   FIN BOUCL01 ;
 792 : *
 793 : SAUT LIGNE;
 794 : MESSAGE '---> fin phase variations' ;
 795 : MESSAGE '     --------------------' ;
 796 : SAUT LIGNE;
 797 : * ----------------------------------------------------------------------
 798 : *   fatigue si TABFATI existe
 799 : * ----------------------------------------------------------------------
 800 : 
 801 :   SI ( EXISTE TABFATI ) ;
 802 : 
 803 :     SAUT LIGNE;
 804 :     MESSAGE '---> phase fatigue' ;
 805 :     MESSAGE '     -------------' ;
 806 :     SAUT LIGNE;
 807 :     REPETER BOUCLE1 ( NGROUPTM ) ;
 808 :       I = &BOUCLE1 ;
 809 :       SAUT LIGNE;
 810 :       MESSAGE '     ---> occurences groupe ' I ;
 811 :       MESSAGE '          -----------------------' ;
 812 :       SAUT LIGNE;
 813 :       TABOCCUR.I = TABFATI.IND1.I ;
 814 :     FIN BOUCLE1 ;
 815 : 
 816 :     REPETER BOUCLE1 ( NCOUPS ) ;
 817 :       I = &BOUCLE1 ;
 818 :       SAUT LIGNE;
 819 :       MESSAGE '     ---> donnees materiaux pour coupe ' I ;
 820 :       MESSAGE '          -----------------------------' ;
 821 :       SAUT LIGNE;
 822 :       TABDONF.I = TABLE ;
 823 :       LISTEMA   = TABFATI.IND2.I ;
 824 :       NMATER    = DIME ( LISTEMA ) ;
 825 :       REPETER BOUCLE2 ( NMATER ) ;
 826 :         J           = &BOUCLE2 ;
 827 :         TABDONF.I.J = EXTRAIRE LISTEMA J ;
 828 :       FIN BOUCLE2 ;
 829 :     FIN BOUCLE1 ;
 830 :     SI (SEISME) ;
 831 :       TABDSEI = TABLE ;
 832 :       REPETER BOUCLE1 ( NCOUPS ) ;
 833 :         I = &BOUCLE1 ;
 834 :         SAUT LIGNE;
 835 :         MESSAGE '     ---> donnees seisme pour coupe ' I ;
 836 :         MESSAGE '          --------------------------' ;
 837 :         SAUT LIGNE;
 838 :         TABDSEI.I = TABLE ;
 839 :         LISTSEI   = TABFATI.IND3.I ;
 840 :         NCTORS    = DIME ( LISTSEI ) ;
 841 :         REPETER BOUCLE2 ( NCTORS ) ;
 842 :           J           = &BOUCLE2 ;
 843 :           TABDSEI.I.J = EXTRAIRE LISTSEI J ;
 844 :         FIN BOUCLE2 ;
 845 :       FIN BOUCLE1 ;
 846 :     FINSI ;
 847 : 
 848 : *modif FATIGUE: la procedure FATIGUE est supprimee
 849 : *et est directement integree ci dessous
 850 : *en conservant la notice explicative
 851 : *modif effectuees avant l entree dans fatigue:
 852 : 
 853 : *    SI (NON SEISME) ;
 854 : *      @FATIGUE TVARSG TABOCCUR TABDONF ;
 855 : *    SINON ;
 856 : *      @FATIGUE TVARSG TABOCCUR TABDONF TABDSEI ;
 857 : *    FINSI ;
 858 : *initialisations
 859 : TABVT= TVARSG   ;
 860 : TABNT= TABOCCUR   ;
 861 : TABDF= TABDONF   ;
 862 : SI ( SEISME ) ;TABDS=TABDSEI ;FINSI   ;
 863 : 
 864 : *$$$$ @FATIGUE
 865 : * @FATIGUE PROCEDURE                                 96/10/09   16:00:00
 866 : * ----------------------------------------------------------------------
 867 : ******                     PROCEDURE @FATIGUE                     ******
 868 : * ----------------------------------------------------------------------
 869 : *
 870 : *   CETTE PROCEDURE PERMET DE FORMER UN FICHIER POUR USE2.
 871 : *
 872 : * ----------------------------------------------------------------------
 873 : *
 874 : *   LES DONNEES SONT :
 875 : *    ----> une table composee a chaque indice d'une table pour chaque
 876 : *          coupe contenant elle meme une table a 4 indices correspondant
 877 : *          a une variation (ou transitoire dans la terminolagie de USE2;
 878 : *          l'ensemble des transitoires , avec le nombre d'occurences
 879 : *          pour chaque transitoire forme un groupe, au sens de USE2.
 880 : *          Cette table a 4 indices est formee
 881 : *          par VARIATI et contient :
 882 : *          - premier   indice  : numero de coupe
 883 : *          - deuxieme  indice  : code :
 884 : *                                - 1 : paroi interieure
 885 : *                                - 2 : paroi exterieure
 886 : *          - troisieme indice  : code :
 887 : *                                - 1 : contraintes totales
 888 : *                                - 2 : contraintes membrane+flexion
 889 : *                                - 3 : contraintes membrane+flexion,
 890 : *                                      flexion thermique exclue
 891 : *          - quatrieme indice  : 5 sorties :
 892 : *                                - 1 : indice du premier torseur
 893 : *                                - 2 : indice du deuxieme torseur
 894 : *                                - 3 : premier torseur
 895 : *                                - 4 : deuxieme torseur
 896 : *                                - 5 : tresca
 897 : *
 898 : *    ----> une table donnant pour chaque transitoire le nombre
 899 : *          d'occurences
 900 : *    ----> une table composee a chaque indice d'une table a 6 indices
 901 : *          ou 7 indices correspondant a des donnees de materiaux ou code
 902 : *          seisme pour USE2, pour chaque coupe.
 903 : *          Cette table a 6 indices contenant :
 904 : *            - premier   indice  : code materiau
 905 : *            - deuxieme  indice  : module d'elasticite
 906 : *            - troisieme indice  : facteur de concentration des
 907 : *                                  contraintes
 908 : *            - quatrieme indice  : contrainte SM de reference
 909 : *            - cinquieme indice  : parametre intervenant dans le calcul
 910 : *                                  du facteur de concentration
 911 : *                                  elastoplastique KE
 912 : *            - sixieme   indice  : parametre intervenant dans le calcul
 913 : *                                  du facteur de concentration
 914 : *                                  elastoplastique KE
 915 : *            - septieme  indice  : code de seisme, si calcul au seisme :
 916 : *                                  . 1 : calcul conservatif mais rapide
 917 : *                                  . 2 : calcul realiste mais lent
 918 : *    ----> une table eventuelle composee a chaque indice d'une table a
 919 : *          4 indices  ou 6 indices correspondant a des donnees de seisme
 920 : *          pour USE2, pour chaque coupe.
 921 : *          Cette table a 4 ou 6 indices contenant les composantes du
 922 : *          torseur du seisme.
 923 : *
 924 : *   EN SORTIE :
 925 : *    ----> impression des resultats
 926 : *
 927 : * ----------------------------------------------------------------------
 928 : *   PAR Joseph MANNINO
 929 : * ----------------------------------------------------------------------
 930 : *'DEBPROC' @FATIGUE TABVT*TABLE TABNT*TABLE TABDF*TABLE TABDS/TABLE ;
 931 : * ======================================================================
 932 : *   initialisation
 933 : * ======================================================================
 934 : DIMG = VALE 'DIME' ;
 935 : MODG = VALE 'MODE' ;
 936 : * ======================================================================
 937 : *   nombre de transitoires
 938 : * ======================================================================
 939 : NTRAN = DIME TABVT ;
 940 : SI ( NTRAN NEG ( DIME TABNT ) ) ;
 941 :     MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
 942 :     QUITTER @RCCM ;
 943 : FINSI ;
 944 : * ======================================================================
 945 : *   nombre de coupes
 946 : * ======================================================================
 947 : NCOUP = DIME TABVT. 1 ;
 948 : SI ( NCOUP NEG ( DIME TABDF ) ) ;
 949 :     MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
 950 :     QUITTER @RCCM ;
 951 : FINSI ;
 952 : * ======================================================================
 953 : *   code de revision de USE 2
 954 : * ======================================================================
 955 : MESSAGE '5.' ;
 956 : * ======================================================================
 957 : *   boucle sur les coupes
 958 : * ======================================================================
 959 : REPETER TCOUP ( NCOUP ) ;
 960 :   J  = &TCOUP ;
 961 :   $J =  CHAINE  J/3 ;
 962 :   SI (((DIME TABDF.J) NEG 6) ET ((DIME TABDF.J) NEG 7)) ;
 963 :       MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
 964 :       QUITTER @RCCM ;
 965 :   FINSI ;
 966 :   UY = TABDF . J;
 967 :   CAUD    = UY . 1  FLOT;
 968 :   ANT     = FLOT NTRAN ;
 969 :   EMIN    =  UY . 2  FLOT;
 970 :   AK      = UY . 3 FLOT;
 971 :   SM      = UY . 4  FLOT;
 972 :   XM      = UY . 5  FLOT;
 973 :   XN      =  UY . 6  FLOT;
 974 :   SI (EXISTE  UY  7) ;
 975 :     SEISME  =  UY . 7 ;
 976 :   SINON ;
 977 :     SEISME  = 0. ;
 978 :   FINSI ;
 979 : 
 980 :   SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
 981 :     OPT  = 3. ;
 982 :   SINON ;
 983 :     OPT  = 2. ;
 984 :   FINSI ;
 985 :   TEST   = 1. ;
 986 : * ----------------------------------------------------------------------
 987 : *   boucle sur les parois interieures et exterieures
 988 : *   k=1 --> paroi interieure
 989 : *   k=2 --> paroi exterieure
 990 : * ----------------------------------------------------------------------
 991 : 
 992 :   REPETER TPARO ( 2 ) ;
 993 : 
 994 :     K = &TPARO ;
 995 : 
 996 :     SI ( K EGA 1 ) ;
 997 :       MESSAGE 'FACTEUR D"USAGE DANS LA COUPE' $J ' PAROI INTERIEURE' ;
 998 :     SINON ;
 999 :       MESSAGE 'FACTEUR D"USAGE DANS LA COUPE' $J ' PAROI EXTERIEURE' ;
1000 :     FINSI ;
1001 : AA = CHAINE FORMAT '(F10.0)' CAUD ANT EMIN   FORMAT '(F10.2)' AK
1002 : FORMAT '(F10.1)'  SM XM XN FORMAT '(F10.0)' SEISME;
1003 :  MESS AA;
1004 : AA = CHAINE FORMAT '(F10.1)'  OPT   TEST;
1005 :      MESS AA;
1006 : * ----------------------------------------------------------------------
1007 : *   ecriture du seisme eventuel
1008 : * ----------------------------------------------------------------------
1009 :   SI ((EXISTE TABDS) ET ((SEISME EGA 1.) OU (SEISME EGA 2.))) ;
1010 :      UY =  TABDS.J;
1011 :     S1  = UY . 1 ;
1012 :     S2  = UY . 2 ;
1013 :     S3  =  UY . 3 ;
1014 :     S4  =  UY . 4 ;
1015 :     S5  = UY . 5 ;
1016 :     S6  =  UY . 6 ;
1017 :     SI (DIMG EGA 3) ;
1018 :       S7  = UY . 7 ;
1019 :       S8  = UY . 8 ;
1020 :     FINSI ;
1021 :      SI (DIMG EGA 2) ;
1022 : AA = CHAINE  FORMAT '(F10.2)'  S1 S2 S3 S4 S5 S6;
1023 :    MESS AA;
1024 :      SINON ;
1025 : AA = CHAINE  FORMAT '(F10.2)'  S1 S2 S3 S4 S5 S6 S7 S8;
1026 :    MESS AA;
1027 :      FINSI ;
1028 :   FINSI ;
1029 : * ======================================================================
1030 : *   boucle sur les transitoires
1031 : * ======================================================================
1032 :     REPETER TTRAN ( NTRAN ) ;
1033 :       I = &TTRAN ;
1034 :       SI ( NCOUP NEG ( DIME TABVT.I ) ) ;
1035 :           MESSAGE 'LES TABLES POUR FATIGUE NE CONVIENNENT PAS' ;
1036 :           QUITTER @RCCM ;
1037 :       FINSI ;
1038 :       NOC  = TABNT.I  FLOT;
1039 :       $NOC = CHAINE FORMAT '(F10.0)'  NOC  ;
1040 :       MESSAGE $NOC ;
1041 :     UY = TABVT.I.J.K;
1042 :       TORS1 =  UY . 1 . 3 ;
1043 :       TORS2 = UY . 1 . 4 ;
1044 :       TORS3 = UY . 2 . 3 ;
1045 :       TORS4 = UY . 2 . 4;
1046 :       S11  = EXTRAIRE TORS1 1 ;
1047 :       S21  = EXTRAIRE TORS1 2 ;
1048 :       S31  = EXTRAIRE TORS1 3 ;
1049 :       S41  = EXTRAIRE TORS1 4 ;
1050 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
1051 :         S51  = EXTRAIRE TORS1 5 ;
1052 :         S61  = EXTRAIRE TORS1 6 ;
1053 :       FINSI ;
1054 :       S12  = EXTRAIRE TORS2 1 ;
1055 :       S22  = EXTRAIRE TORS2 2 ;
1056 :       S32  = EXTRAIRE TORS2 3 ;
1057 :       S42  = EXTRAIRE TORS2 4 ;
1058 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
1059 :         S52  = EXTRAIRE TORS2 5 ;
1060 :         S62  = EXTRAIRE TORS2 6 ;
1061 :       FINSI ;
1062 :       S13  = EXTRAIRE TORS3 1 ;
1063 :       S23  = EXTRAIRE TORS3 2 ;
1064 :       S33  = EXTRAIRE TORS3 3 ;
1065 :       S43  = EXTRAIRE TORS3 4 ;
1066 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
1067 :         S53  = EXTRAIRE TORS3 5 ;
1068 :         S63  = EXTRAIRE TORS3 6 ;
1069 :       FINSI ;
1070 :       S14  = EXTRAIRE TORS4 1 ;
1071 :       S24  = EXTRAIRE TORS4 2 ;
1072 :       S34  = EXTRAIRE TORS4 3 ;
1073 :       S44  = EXTRAIRE TORS4 4 ;
1074 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
1075 :         S54  = EXTRAIRE TORS4 5 ;
1076 :         S64  = EXTRAIRE TORS4 6 ;
1077 :       FINSI ;
1078 :       SI ( ( DIMG EGA 3 ) OU (  EGA MODG 'FOUR' ) ) ;
1079 :  AA = CHAINE FORMAT '(F10.2)' S11 S21 S31 S41 S61 S51;
1080 :      MESS AA;
1081 :  AA = CHAINE FORMAT '(F10.2)' S12 S22 S32 S42 S62 S52 ;
1082 :      MESS AA;
1083 :  AA = CHAINE FORMAT '(F10.2)' S13 S23 S33 S43 S63 S53 ;
1084 :      MESS AA;
1085 :  AA = CHAINE FORMAT '(F10.2)' S14 S24 S34 S44 S64 S54 ;
1086 :      MESS AA;
1087 :       SINON ;
1088 :  AA = CHAINE FORMAT '(F10.2)' S11 S21 S31 S41 S12 S22 S32 S42 ;
1089 :      MESS AA;
1090 :  AA = CHAINE FORMAT '(F10.2)' S13 S23 S33 S43 S14 S24 S34 S44 ;
1091 :      MESS AA;
1092 :       FINSI ;
1093 :     FIN TTRAN ;
1094 :   SI ( ( J EGA NCOUP ) ET ( K EGA 2 ) ) ;
1095 :     MESSAGE '0.' ;
1096 :   SINON ;
1097 :     MESSAGE '1.' ;
1098 :   FINSI ;
1099 :   FIN TPARO ;
1100 : FIN TCOUP ;
1101 : *FINPROC ;
1102 : 
1103 :     SAUT LIGNE;
1104 :     MESSAGE '---> fin phase fatigue' ;
1105 :     MESSAGE '     -----------------' ;
1106 :     SAUT LIGNE;
1107 :   FINSI ;
1108 : FINSI ;
1109 : FINSI ;
1110 : SAUT LIGNE;
1111 : MESSAGE '***** FIN DU CALCUL RCCM *****' ;
1112 : MESSAGE '------------------------------' ;
1113 : SAUT LIGNE;
1114 : FINPROC ;
1115 : 
1116 : 
1117 : 
1118 :  

© Cast3M 2003 - All rights reserved.
Disclaimer