Download menag6.eso

Back to the list

   1 : C MENAG6    SOURCE    CHAT      11/07/26    21:15:17     7060           
   2 :       SUBROUTINE MENAG6(ILISSE,IPLIS,IPOLAC)
   3 : 
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-H,O-Z)
   6 : 
   7 : C=======================================================================
   8 : C  TABLEAU KCOLA: VOIR SIGNIFICATION DANS SOUS-PROGRAMME TYPFIL
   9 : C=======================================================================
  10 : 
  11 :       CHARACTER*8 MODYN
  12 : 
  13 :       SEGMENT ISLIS(NP)
  14 :       SEGMENT IBLIS(ISLIS(/1))
  15 : *                     SEGMENT BIDON POUR REMPLACER LES TROP NOMBREUSES
  16 : *                     DECLARATION
  17 :       SEGMENT ISEG(0)
  18 : *
  19 :       POINTEUR PTR.MATRAK
  20 : -INC TMCOLAC
  21 : -INC CCOPTIO
  22 : -INC CCNOYAU
  23 : -INC SMTEXTE
  24 : -INC SMMODEL
  25 : *-INC SMLREEL
  26 : *-INC SMLENTI
  27 : -INC SMCHARG
  28 : -INC SMEVOLL
  29 : *-INC SMLMOTS
  30 : *  -INC SMVECTE   TROP DE DECLARATION INTEGER AVEC ESOPE
  31 : *  -INC SMVECTD   DECLARATION CONFLICTUELLE AVEC SMVECTE
  32 : *-INC SMLCHPO
  33 : -INC SMBASEM
  34 : -INC SMBLOC
  35 : -INC SMNUAGE
  36 : -INC SMSUPER
  37 : C-INC SMMATRAK
  38 : -INC CCASSIS
  39 : C*************************************************************************
  40 : C
  41 : C    REPERAGE ET STOKAGE DES MATRICES ELEMENTAIRES  puis assemblees
  42 : C
  43 : 
  44 : * LGEOC SPG de la pression et/ou des multiplicateurs de Lagrange
  45 : * (points CENTRE ) pour chaque operateur de contrainte
  46 : * KGEOC SPG pour la totalite des points CENTRE.
  47 : * KGEOS SPG pour la totalite des points SOMMET (Diagonale vitesse)
  48 : * KLEMC Connectivites de l'ensemble des contraintes
  49 : * LIZAFM(NBSOUS) contient les pointeurs IZAFM des sous-zones
  50 : 
  51 :       SEGMENT MATRAK
  52 :       INTEGER LGEOC(NBOP),IDEBS(NBOP),IFINS(NBOP)
  53 :       INTEGER LIZAFM(NBSOUS)
  54 :       INTEGER IKAM0 (NBSOUS)
  55 :       INTEGER IMEM  (NBELC)
  56 :       INTEGER KLEMC,KGEOS,KGEOC,KDIAG,KCAC,KIZCL,KIZGC
  57 :       ENDSEGMENT
  58 : 
  59 :       SEGMENT IZAFM
  60 :       REAL*8  AM(NNELP,NP,IESP),RPGI(NELAX)
  61 :       ENDSEGMENT
  62 : 
  63 :       POINTEUR IPMJ.IZAFM,IPMK.IZAFM
  64 : 
  65 : C*******************************************************************
  66 : -INC SMMATRK1
  67 :       MODYN='DYNAMIQU'
  68 :       ISLIS = IPLIS
  69 : *
  70 :       ICOLAC = IPOLAC
  71 : *
  72 : *  CAS DES MLREEL
  73 : *
  74 :       ITLACC=KCOLA(18)
  75 :        IF (ITLAC(/1).EQ.0) GOTO 190
  76 :        DO 181 I=1,ITLAC(/1)
  77 : *       MLREEL=ITLAC(I)
  78 : *       ISLIS((MLREEL-1)/npgcd)=1
  79 : *       SEGDES MLREEL
  80 :         ISEG=ITLAC(I)
  81 :         ISLIS((ISEG-1)/npgcd)=1
  82 :         SEGDES ISEG
  83 :  181   CONTINUE
  84 :  190  CONTINUE
  85 : *
  86 : *  CAS DES MLENTI
  87 : *
  88 :       ITLACC=KCOLA(19)
  89 :        IF (ITLAC(/1).EQ.0) GOTO 200
  90 :        DO 191 I=1,ITLAC(/1)
  91 : *       MLENTI=ITLAC(I)
  92 : *       ISLIS((**-1)/npgcd)=MLENTI
  93 : *       SEGDES MLENTI
  94 :         ISEG=ITLAC(I)
  95 :         ISLIS((ISEG-1)/npgcd)=1
  96 :         SEGDES ISEG
  97 :  191   CONTINUE
  98 :  200  CONTINUE
  99 : *
 100 : *  CAS DES MCHARG
 101 : *
 102 :       ITLACC=KCOLA(20)
 103 :        IF (ITLAC(/1).EQ.0) GOTO 210
 104 :        DO 201 I=1,ITLAC(/1)
 105 :         MCHARG=ITLAC(I)
 106 :         SEGACT MCHARG
 107 :         ISLIS((MCHARG-1)/npgcd)=1
 108 :         DO 202 J=1,KCHARG(/1)
 109 :          ICHARG=KCHARG(J)
 110 :          ISLIS((ICHARG-1)/npgcd)=1
 111 :          SEGACT ICHARG
 112 :          ISEG=ICHPO1
 113 :          ISLIS((ISEG-1)/npgcd)=1
 114 :          SEGDES ISEG
 115 :          ISEG=ICHPO2
 116 :          ISLIS((ISEG-1)/npgcd)=1
 117 :          SEGDES ISEG
 118 :          IF(CHATYP.NE.'TABLE   ') THEN
 119 :             ISEG=ICHPO3
 120 :             ISLIS((ISEG-1)/npgcd)=1
 121 :             SEGDES ISEG
 122 :          ENDIF
 123 :          IF(CHAMOB(J).EQ.'TRAN') THEN
 124 :            ISEG=ICHPO6
 125 :            ISLIS((ISEG-1)/npgcd)=1
 126 :            SEGDES ISEG
 127 :            ISEG=ICHPO7
 128 :            ISLIS((ISEG-1)/npgcd)=1
 129 :            SEGDES ISEG
 130 :          ELSEIF(CHAMOB(J).EQ.'ROTA') THEN
 131 :            ISEG=ICHPO6
 132 :            ISLIS((ISEG-1)/npgcd)=1
 133 :            SEGDES ISEG
 134 :            ISEG=ICHPO7
 135 :            ISLIS((ISEG-1)/npgcd)=1
 136 :            SEGDES ISEG
 137 :          ELSEIF(CHAMOB(J).EQ.'TRAJ') THEN
 138 :            ISEG=ICHPO4
 139 :            ISLIS((ISEG-1)/npgcd)=1
 140 :            SEGDES ISEG
 141 :            ISEG=ICHPO6
 142 :            ISLIS((ISEG-1)/npgcd)=1
 143 :            SEGDES ISEG
 144 :          ENDIF
 145 :          SEGDES ICHARG
 146 :  202    CONTINUE
 147 :         SEGDES MCHARG
 148 :  201   CONTINUE
 149 :  210  CONTINUE
 150 : *
 151 : *  CAS DES MEVOLL
 152 : *
 153 :       ITLACC=KCOLA(22)
 154 :        IF (ITLAC(/1).EQ.0) GOTO 230
 155 :        DO 221 I=1,ITLAC(/1)
 156 :         MEVOLL=ITLAC(I)
 157 :         SEGACT MEVOLL
 158 :         ISLIS((MEVOLL-1)/npgcd)=1
 159 :         DO 222 J=1,IEVOLL(/1)
 160 :          KEVOLL=IEVOLL(J)
 161 :          ISLIS((KEVOLL-1)/npgcd)=1
 162 :          SEGACT KEVOLL
 163 :          ISEG=IPROGX
 164 :          ISLIS((ISEG-1)/npgcd)=1
 165 :          SEGDES ISEG
 166 :          ISEG=IPROGY
 167 :          ISLIS((ISEG-1)/npgcd)=1
 168 :          SEGDES ISEG
 169 :          SEGDES KEVOLL
 170 :  222    CONTINUE
 171 :         SEGDES MEVOLL
 172 :  221   CONTINUE
 173 :  230  CONTINUE
 174 : *
 175 : *  CAS DES SUPERELEMENTS
 176 : *
 177 :       ITLACC=KCOLA(23)
 178 :        IF (ITLAC(/1).EQ.0) GOTO 240
 179 :        DO 231 I=1,ITLAC(/1)
 180 :         MSUPER=ITLAC(I)
 181 :         segact msuper
 182 :         iseg=mdnorr
 183 :         if( iseg. ne. 0) then
 184 :           ISLIS((iseg-1)/npgcd)=1
 185 :           segdes iseg
 186 :         endif
 187 :         ISEG=ITLAC(I)
 188 :         ISLIS((ISEG-1)/npgcd)=1
 189 :         SEGDES ISEG
 190 :  231   CONTINUE
 191 :  240  CONTINUE
 192 : *
 193 : *  CAS DES LOGIQUES FLOTTANT ENTIER MOT  RIEN A FAIRE
 194 : *
 195 : *
 196 : *  CAS DES TEXTES
 197 : *
 198 :       ITLACC=KCOLA(28)
 199 :        IF (ITLAC(/1).EQ.0) GOTO 290
 200 :        DO 281 I=1,ITLAC(/1)
 201 :         MTEXTE=ITLAC(I)
 202 :         ISLIS((MTEXTE-1)/npgcd)=1
 203 :         SEGACT MTEXTE
 204 :         MTRADU=MTRADC
 205 :         IF (MTRADU.NE.0) THEN
 206 :          ISLIS((MTRADU-1)/npgcd)=1
 207 :          SEGDES MTRADU
 208 :         ENDIF
 209 :         SEGDES MTEXTE
 210 :  281   CONTINUE
 211 :  290  CONTINUE
 212 : *
 213 : *  CAS DES LISTMOTS
 214 : *
 215 :       ITLACC=KCOLA(29)
 216 :        IF (ITLAC(/1).EQ.0) GOTO 300
 217 :        DO 291 I=1,ITLAC(/1)
 218 : *       MLMOTS=ITLAC(I)
 219 : *       ISLIS((MLMOTS-1)/npgcd)=1
 220 : *       SEGDES MLMOTS
 221 :         ISEG=ITLAC(I)
 222 :         ISLIS((ISEG-1)/npgcd)=1
 223 :         SEGDES ISEG
 224 :  291   CONTINUE
 225 :  300  CONTINUE
 226 : *
 227 : *  CAS DES VECTEURS
 228 : *
 229 :       ITLACC=KCOLA(30)
 230 :        IF (ITLAC(/1).EQ.0) GOTO 310
 231 :        DO 301 I=1,ITLAC(/1)
 232 : *       MVECTE=ITLAC(I)
 233 : *       ISLIS((MVECTE-1)/npgcd)=1
 234 : *       SEGDES MVECTE
 235 :         ISEG=ITLAC(I)
 236 :         ISLIS((ISEG-1)/npgcd)=1
 237 :         SEGDES ISEG
 238 :  301   CONTINUE
 239 :  310  CONTINUE
 240 : *
 241 : *  CAS DES VECTD   ON ECRIT ISEG CAR ON NE PEUT PAS FAIRE -INC MVECTD
 242 : *
 243 :       ITLACC=KCOLA(31)
 244 :        IF (ITLAC(/1).EQ.0) GOTO 320
 245 :        DO 311 I=1,ITLAC(/1)
 246 : *       MVECTD=ITLAC(I)
 247 : *       ISLIS((MVECTD-1)/npgcd)=1
 248 : *       SEGDES MVECTD
 249 :         ISEG=ITLAC(I)
 250 :         ISLIS((ISEG-1)/npgcd)=1
 251 :         SEGDES ISEG
 252 :  311   CONTINUE
 253 :  320  CONTINUE
 254 : *
 255 : *  CAS DES POINTS RIEN A FAIRE
 256 : *
 257 : *
 258 : *  CAS DES CONFIG  NE SURTOUT PAS UTILISER MCOORD (DANS CCOPTIO)
 259 : *
 260 :       ITLACC=KCOLA(33)
 261 :        IF (ITLAC(/1).EQ.0) GOTO 340
 262 :        DO 331 I=1,ITLAC(/1)
 263 :         ISEG=ITLAC(I)
 264 :         ISLIS((ISEG-1)/npgcd)=1
 265 :         SEGDES ISEG
 266 :  331   CONTINUE
 267 :  340  CONTINUE
 268 : *
 269 : *  CAS DES MLCHPO
 270 : *
 271 :       ITLACC=KCOLA(34)
 272 :        IF (ITLAC(/1).EQ.0) GOTO 350
 273 :        DO 341 I=1,ITLAC(/1)
 274 : *       MLCHPO=ITLAC(I)
 275 : *       ISLIS((MLCHPO-1)/npgcd)=1
 276 : *       SEGDES MLCHPO
 277 :         ISEG=ITLAC(I)
 278 :         ISLIS((ISEG-1)/npgcd)=1
 279 :         SEGDES ISEG
 280 :  341   CONTINUE
 281 :  350  CONTINUE
 282 : *
 283 : *  CAS DES MBASEM
 284 : *
 285 :       ITLACC=KCOLA(35)
 286 :        IF (ITLAC(/1).EQ.0) GOTO 360
 287 :        DO 351 I=1,ITLAC(/1)
 288 :         MBASEM=ITLAC(I)
 289 :         ISLIS((MBASEM-1)/npgcd)=1
 290 :         SEGACT MBASEM
 291 :          DO 352 J=1,LISBAS(/1)
 292 :           MSOBAS=LISBAS(J)
 293 :           ISLIS((MSOBAS-1)/npgcd)=1
 294 :           SEGDES MSOBAS
 295 :  352     CONTINUE
 296 :         SEGDES MBASEM
 297 :  351   CONTINUE
 298 :  360  CONTINUE
 299 : *
 300 : *  CAS DES PROCEDUR
 301 : *
 302 :        MTTRY=MTXBL
 303 :       ITLACC=KCOLA(36)
 304 :       ITLAC1=KCOLA(37)
 305 :        IF (ITLAC(/1).EQ.0) GOTO 370
 306 :        DO 361 I=1,ITLAC(/1)
 307 :         MBLA1=ITLAC(I)
 308 :         MBLO1=IPIPR1(MBLA1)
 309 : *  LES PROCEDURES EN NEGATIFS NE SONT PAS ENCORE MISES EN SEGMENT
 310 :         IF (MBLO1.LE.0) GOTO 361
 311 :         ISLIS((MBLO1-1)/npgcd)=1
 312 :         SEGACT MBLO1
 313 :         ISLIS((MBLO1.ISPOTE-1)/npgcd)=1
 314 :         IARGUM=MBLO1.MARGUM
 315 :         ISLIS((IARGUM-1)/npgcd)=1
 316 :         SEGACT IARGUM
 317 :         MTXBI3=MTXBB
 318 :         ISLIS((MTXBI3-1)/npgcd)=1
 319 :         SEGDES MTXBI3
 320 :         MTXFL3=MTXFLO
 321 :         IF( MTXFL3.NE.0) THEN
 322 :            SEGDES MTXFL3
 323 :            ISLIS((MTXFL3-1)/npgcd)=1
 324 :         ENDIF
 325 :         MTRESU=ITRESU
 326 :         IF( MTRESU.NE.0) THEN
 327 :            SEGDES MTRESU
 328 :            ISLIS((MTRESU-1)/npgcd)=1
 329 :         ENDIF
 330 :         MVRESU=IVRESU
 331 :         IF( MVRESU.NE.0) THEN
 332 :            SEGDES MVRESU
 333 :            ISLIS((MVRESU-1)/npgcd)=1
 334 :         ENDIF
 335 :         MFRESU=IFRESU
 336 :         IF( MFRESU.NE.0) THEN
 337 :            SEGDES MFRESU
 338 :            ISLIS((MFRESU-1)/npgcd)=1
 339 :         ENDIF
 340 :         SEGDES IARGUM
 341 :         MTXBLC=MBLO1.MTXBL
 342 :         IF (MTXBLC.NE.0) THEN
 343 :            ISLIS((MTXBLC-1)/npgcd)=1
 344 : C           SEGACT MTXBLC
 345 : C           DO 362 J=1,MTXBLC(/1)
 346 : C            MTXBLL=MTXBLC(J)
 347 : C            ISLIS((MTXBLL-1)/npgcd)=1
 348 : C            SEGDES MTXBLL
 349 : C 362       CONTINUE
 350 :             SEGDES MTXBLC
 351 :         ENDIF
 352 : *        MSAPI3=MBLO1.MSAPII
 353 : *        IF (MSAPI3.NE.0) THEN
 354 : *         ISLIS((MSAPI3-1)/npgcd)=1
 355 : *         SEGDES MSAPI3
 356 : *        ENDIF
 357 :         MPROCE=MBLO1.MPROCD
 358 :         IF (MPROCE.NE.0) THEN
 359 :          ISLIS((MPROCE-1)/npgcd)=1
 360 :          SEGDES MPROCE
 361 :         ENDIF
 362 : *   ON MET DANS LA PILE DES BLOCS LES BLOCS CONTENUS DANS LA PROCEDURE
 363 :         DO 363 J=MBLO1.MDEOBJ,MBLO1.MFIOBJ
 364 :          IF (INOOB2(J).EQ.'BLOC    ') THEN
 365 :             ITLAC1.ITLAC(**)=IOUEP2(J)
 366 :          ENDIF
 367 :  363    CONTINUE
 368 :         IF (MBLO1.NE.MBLOC) SEGDES MBLO1
 369 :  361   CONTINUE
 370 : *  reactiver la precompilation du bloc courant
 371 :       MTXBLC=MBLOC.MTXBL
 372 :       IF(MTXBLC.NE.0)       SEGACT MTXBLC
 373 :  370  CONTINUE
 374 : 
 375 : *
 376 : *  CAS DES BLOC
 377 : *
 378 :       ITLACC=KCOLA(37)
 379 :         DO 375 J=1,LMNNOM
 380 :          IF (INOOB2(J).EQ.'BLOC    ') THEN
 381 :             ITLAC(**)=IOUEP2(J)
 382 :          ENDIF
 383 :  375    CONTINUE
 384 :        IF (ITLAC(/1).EQ.0) GOTO 378
 385 :        DO 371 I=1,ITLAC(/1)
 386 :         MBLO1=ITLAC(I)
 387 :         ISLIS((MBLO1-1)/npgcd)=1
 388 :         SEGACT MBLO1
 389 :         ISLIS(( MBLO1.ISPOTE-1)/npgcd)=1
 390 :         MTXBLC=MBLO1.MTXBL
 391 :         IF (MTXBLC.NE.0) THEN
 392 :            ISLIS((MTXBLC-1)/npgcd)=1
 393 : C           SEGACT MTXBLC
 394 : C           DO 372 J=1,MTXBLC(/1)
 395 : C            MTXBLL=MTXBLC(J)
 396 : C            ISLIS((MTXBLL-1)/npgcd)=1
 397 : C            SEGDES MTXBLL
 398 : C 372       CONTINUE
 399 :            IF (MBLO1.NE.MBLOC) SEGDES MTXBLC
 400 :         ENDIF
 401 :         IF (MBLO1.NE.MBLOC) SEGDES MBLO1
 402 :  371   CONTINUE
 403 :  378  CONTINUE
 404 : *
 405 : *  ON MET EGALEMENT LA CHAINE DES BLOCS MONTANTES CAR CEUX OU ON
 406 : *  SE TROUVE PEUVENT AVOIR ETE CREE DANS PROCED (DUPLICATION)
 407 : *
 408 :        MBLO1=MBLOC
 409 :  373   CONTINUE
 410 :        SEGACT MBLO1
 411 :        ISLIS((MBLO1-1)/npgcd)=1
 412 :        ISLIS((MBLO1.ISPOTE-1)/npgcd)=1
 413 :         MTXBLC=MBLO1.MTXBL
 414 :         IF (MTXBLC.NE.0) THEN
 415 :            ISLIS((MTXBLC-1)/npgcd)=1
 416 : C           SEGACT MTXBLC
 417 : C           DO 374 J=1,MTXBLC(/1)
 418 : C            MTXBLL=MTXBLC(J)
 419 : C            ISLIS((MTXBLL-1)/npgcd)=1
 420 : C            SEGDES MTXBLL
 421 : C 374       CONTINUE
 422 :            IF (MBLO1.NE.MBLOC) SEGDES MTXBLC
 423 :         ENDIF
 424 :         IARGUM=MBLO1.MARGUM
 425 :         IF (IARGUM.NE.0) THEN
 426 :          ISLIS((IARGUM-1)/npgcd)=1
 427 :          SEGACT IARGUM
 428 :          MTXBI3=MTXBB
 429 :          ISLIS((MTXBI3-1)/npgcd)=1
 430 :          SEGDES MTXBI3
 431 :          MTXFL3=MTXFLO
 432 :          IF( MTXFL3.NE.0) THEN
 433 :            SEGDES MTXFL3
 434 :            ISLIS((MTXFL3-1)/npgcd)=1
 435 :          ENDIF
 436 :          SEGDES IARGUM
 437 :         ENDIF
 438 : *        MSAPI3=MBLO1.MSAPII
 439 : *        IF (MSAPI3.NE.0) THEN
 440 : *         ISLIS((MSAPI3-1)/npgcd)=1
 441 : *         SEGDES MSAPI3
 442 : *        ENDIF
 443 :         MPROCE=MBLO1.MPROCD
 444 :         IF (MPROCE.NE.0) THEN
 445 :          SEGACT MPROCE
 446 :          ISLIS((MPROCE-1)/npgcd)=1
 447 :          ISLIS((LTTINT-1)/npgcd)=1
 448 :          ISLIS((KTABNO-1)/npgcd)=1
 449 :          ISLIS((MPOOB-1)/npgcd)=1
 450 :          SEGDES MPROCE
 451 :         ENDIF
 452 : *      WRITE (6,*) ' BLOC DANS LA CHAINE MONTANTE ',MBLO1
 453 :        MBLSU=MBLO1.MBLSUP
 454 :        IF (MBLSU.NE.0) THEN
 455 :           SEGDES MBLO1
 456 :           MBLO1=MBLSU
 457 :           GOTO 373
 458 :        ENDIF
 459 :        SEGDES MBLO1
 460 :        SEGACT MBLOC*MOD
 461 :        ISLIS((ISPOTE-1)/npgcd)=1
 462 :       ISLIS((ITTINT-1)/npgcd)=1
 463 :       ISLIS((JPOOB-1)/npgcd)=1
 464 :       ISLIS((ITABNO-1)/npgcd)=1
 465 :  380  CONTINUE
 466 :       MTXBLC = MTTRY
 467 :       IF(MTXBLC.NE.0)    SEGACT MTXBLC
 468 : *
 469 : *     Cas du MMODEL
 470 : *
 471 :       ITLACC = KCOLA(38)
 472 :       IF (ITLAC(/1).EQ.0) GOTO 390
 473 :       DO 381 I=1,ITLAC(/1)
 474 :          MMODEL = ITLAC(I)
 475 :          ISLIS((MMODEL-1)/npgcd)=1
 476 :          SEGACT,MMODEL
 477 :          DO 382 J=1,KMODEL(/1)
 478 :             IMODEL = KMODEL(J)
 479 :             ISLIS((IMODEL-1)/npgcd)=1
 480 :             SEGACT IMODEL
 481 :             NFOR=FORMOD(/1)
 482 : *            IF(NFOR.EQ.2.OR.FORMOD(1).EQ.'MECANIQUE'.OR.
 483 : *     $       FORMOD(1).EQ.'POREUX')THEN
 484 :               do IO=3,INFMOD(/1)
 485 :                 if(infmod(io).ne.0)then
 486 :                    iseg= infmod(io)
 487 :                    ISLIS((ISEG-1)/npgcd)=1
 488 :                    SEGDES ISEG
 489 :                  endif
 490 :               enddo
 491 : *           ENDIF
 492 :               do io=1,14
 493 :                  if(lnomid(io).ne.0) then                 
 494 :                    iseg=lnomid(io)
 495 :                    ISLIS((ISEG-1)/npgcd)=1
 496 :                    SEGDES ISEG
 497 :                  endif
 498 :               enddo 
 499 :             if (ivamod(/1).gt.0) then
 500 :               do il = 1,ivamod(/1)
 501 :                  MODYN=tymode(il)
 502 :                  Jtc=0
 502 :                  CALL  TYPFIL (MODYN,JTC)
 503 :                 if( jtc.ne.0) go to 3819
 504 : c... kich  si pas un vrai objet par defaut ce sont des imodel
 505 :                 imode1=ivamod(il)
 506 :                 islis((imode1-1)/npgcd)=1
 507 :                 segact imode1
 508 : 
 509 : c... kich espere qu un niveau de recursivite suffit ...
 510 :                 segdes imode1
 511 :  3819         continue
 512 :               enddo
 513 :             endif
 514 :             SEGDES,IMODEL
 515 :  382        CONTINUE
 516 :          segdes MMODEL
 517 : *        END DO
 518 :  381     CONTINUE
 519 : *     END DO
 520 :  390  CONTINUE
 521 : *
 522 : *     Cas du MCHAML
 523 : *
 524 :       ITLACC = KCOLA(39)
 525 :       IF (ITLAC(/1).EQ.0) GOTO 400
 525 :       CALL MECHAM(ILISSE,ISLIS,ICOLAC)
 526 :  400  CONTINUE
 527 : *
 528 : *     CAS DES MINTE
 529 : *
 530 :       ITLACC=KCOLA(40)
 531 :        IF (ITLAC(/1).EQ.0) GOTO 410
 532 :        DO 401 I=1,ITLAC(/1)
 533 :         ISEG=ITLAC(I)
 534 :         ISLIS((ISEG-1)/npgcd)=1
 535 :         SEGDES ISEG
 536 :  401   CONTINUE
 537 :  410  CONTINUE
 538 : *
 539 : *     CAS DES NUAGEs
 540 : *
 541 :       ITLACC=KCOLA(41)
 542 :        IF (ITLAC(/1).EQ.0) GOTO 420
 543 :        DO 411 I=1,ITLAC(/1)
 544 :         MNUAGE=ITLAC(I)
 545 :         ISLIS((MNUAGE-1)/npgcd)=1
 546 :         SEGACT MNUAGE
 547 :         IF(NUAPOI(/1).EQ.0) GO TO 411
 548 :         DO 412 K=1,NUAPOI(/1)
 549 :         ISEG=NUAPOI(K)
 550 :         ISLIS((ISEG-1)/npgcd)=1
 551 :         SEGDES ISEG
 552 :   412   CONTINUE
 553 :         SEGDES MNUAGE
 554 :  411   CONTINUE
 555 :  420   CONTINUE
 556 : *
 557 : *     CAS DES MATRAK
 558 : *
 559 :       ITLACC=KCOLA(42)
 560 :        IF (ITLAC(/1).EQ.0) GOTO 430
 561 :        DO 421 I=1,ITLAC(/1)
 562 :         MATRAK=ITLAC(I)
 563 :         ISLIS((MATRAK-1)/npgcd)=1
 564 :         SEGACT MATRAK
 565 :        DO 422 I1=1,LIZAFM(/1)
 566 :         PTR=LIZAFM(I1)
 567 :         ISLIS((PTR-1)/npgcd)=1
 568 :         SEGDES PTR
 569 :  422   CONTINUE
 570 :        IF(KIZCL.NE.0)THEN
 571 :        IZL=KIZCL
 572 :        SEGACT IZL
 573 :        ISLIS((IZL-1)/npgcd)=1
 574 :        IF(KZA1.NE.0)THEN
 575 :        IDMAT=KZA1
 576 :        ISLIS((IDMAT-1)/npgcd)=1
 577 :        SEGACT IDMAT
 578 :        PTR=IDIAG
 579 :        SEGDES PTR
 580 :        ISLIS((PTR-1)/npgcd)=1
 581 :        NBLK=IDESCR(/1)
 582 :        DO 423 I1=1,NBLK
 583 :        PTR=IDESCR(I1)
 584 :        IDBLK=PTR
 585 :        SEGDES PTR
 586 :        ISLIS((IDBLK-1)/npgcd)=1
 587 :        SEGACT IDBLK
 588 :        PTR=IMAT
 589 :        ISLIS((PTR-1)/npgcd)=1
 590 :        SEGDES PTR
 591 :        SEGDES IDBLK
 592 :  423   CONTINUE
 593 :        SEGDES IDMAT
 594 :        ENDIF
 595 :        SEGDES IZL
 596 :        ENDIF
 597 :        SEGDES MATRAK
 598 :  421   CONTINUE
 599 : 
 600 :  430   CONTINUE
 601 : *
 602 : *     CAS DES MATRIK
 603 : *
 604 :       ITLACC=KCOLA(43)
 605 :        IF (ITLAC(/1).EQ.0) GOTO 440
 605 :        CALL XMNG6(ILISSE,ITLACC,ISLIS)
 606 :  440   CONTINUE
 607 : *
 608 : *      Cas des OBJET
 609 : *
 610 :       ITLACC=KCOLA(44)
 611 :       IF (ITLAC(/1).EQ.0) GOTO 450
 612 :       DO 441 I=1,ITLAC(/1)
 613 :         ISEG=ITLAC(I)
 614 :         ISLIS((ISEG-1)/npgcd)=1
 615 :         SEGDES ISEG
 616 :  441  CONTINUE
 617 : 
 618 : 450   CONTINUE
 619 : *
 620 : *      Cas des ESCLAVE
 621 : *
 622 :       ITLACC=KCOLA(46)
 623 : *      print*, ' Cas des ESCLAVE ITLACC', ITLACC,'NB', ITLAC(/1)
 624 :       IF (ITLAC(/1).EQ.0) GOTO 460
 625 :       DO 451 I=1,ITLAC(/1)
 626 :         ISEG=ITLAC(I)
 627 : *       write (6,*) ' menag6 esclave ajout de mesres ',iseg
 628 :         ISLIS((ISEG-1)/npgcd)=1
 629 :         mesres = ISEG
 630 :         segact mesres 
 631 : *       write (6,*) ' menag6 esclave ajout de nesres ',iesres
 632 :         iseg=iesres
 633 :         nesres=iseg
 634 :         ISLIS((iseg-1)/npgcd)=1
 635 :         segdes nesres
 636 :         SEGDES mesres
 637 :  451  CONTINUE
 638 : *  ajouter les segments des piles d'instructions des assistants
 639 :       do ith=1,nbesc
 640 :        mesins=mescl(ith)
 641 :        segact mesins
 642 :        do ins=1,nbins
 643 :         mescla=lismes(ins)
 644 :         ISLIS((mescla-1)/npgcd)=1
 645 :        enddo
 646 :        if (inscou.ne.0) ISLIS((inscou-1)/npgcd)=1
 647 :        segdes mesins
 648 :       enddo
 649 : 
 650 : 
 651 : 
 652 : 
 653 : 460   CONTINUE
 654 : *
 655 :       RETURN
 656 :       END
 657 : 
 658 :  
 659 :  
 660 :  
 661 :  
 662 :  

© Cast3M 2003 - All rights reserved.
Disclaimer