Download envel1.eso

Back to the list

   1 : C ENVEL1    SOURCE    PV        11/03/08    21:15:33     6888           
   2 : *   copier sur envvol avec gestion du chamelem de valeurs associes
   3 : *   utilise dans trac cham
   4 : *
   5 :       SUBROUTINE ENVEL1(MELEME,MELRES)
   6 :       IMPLICIT INTEGER(I-N)
   7 : -INC CCOPTIO
   8 : -INC SMELEME
   9 : -INC CCGEOME
  10 : -INC SMCHAML
  11 :       SEGMENT IFAC3(5,NFAC3)
  12 :       SEGMENT IFAC4(6,NFAC4)
  13 :       SEGMENT IFAC6(8,NFAC6)
  14 :       SEGMENT IFAC8(10,NFAC8)
  15 :       SEGMENT IPPOL(NTPOL)
  16 :       SEGMENT IPREF(NTPOL)
  17 :       SEGMENT XFAC3(3,NFAC3)
  18 :       SEGMENT XFAC4(4,NFAC4)
  19 :       SEGMENT XFAC6(6,NFAC6)
  20 :       SEGMENT XFAC8(8,NFAC8)
  21 :       SEGMENT NTFAC(NFAC)
  22 :       SEGMENT KFAK(NFAC)
  23 :       SEGMENT NAUX(NFAC)
  24 :       n2ptel=0
  25 :       n2el=0
  26 :       SEGACT MELEME
  27 :       NFAC3=0
  28 :       NFAC4=0
  29 :       NFAC6=0
  30 :       NFAC8=0
  31 :       NTPOL=0
  32 :       IPT1=MELEME
  33 :       SEGACT MELEME
  34 :       DO 10 IOB=1,LISOUS(/1)
  35 :        IPT1=LISOUS(IOB)
  36 :        SEGACT IPT1
  37 :       NBELEM=IPT1.NUM(/2)
  38 :       ILTEL=LTEL(1,IPT1.ITYPEL)
  39 :       IF (ILTEL.EQ.0) GOTO 12
  40 :       ILTAD=LTEL(2,IPT1.ITYPEL)
  41 :       DO 13 IF=1,ILTEL
  42 :       IFT=LDEL(1,ILTAD+IF-1)
  43 :       GOTO (21,22,23,24,25,26),IFT
  44 :   21  NFAC3=NFAC3+NBELEM
  45 :       GOTO 30
  46 :   22  NFAC4=NFAC4+NBELEM
  47 :       GOTO 30
  48 :   23  NFAC6=NFAC6+NBELEM
  49 :       GOTO 30
  50 :   24  NFAC8=NFAC8+NBELEM
  51 :       GOTO 30
  52 :   25  GOTO 30
  53 :   26  NTPOL=NTPOL+1
  54 :       GOTO 30
  55 :   30  CONTINUE
  56 :   13  CONTINUE
  57 :   12  CONTINUE
  58 :   10  CONTINUE
  59 :       SEGINI IFAC3,IFAC4,IFAC6,IFAC8,IPPOL,IPREF
  60 :       SEGINI XFAC3,XFAC4,XFAC6,XFAC8
  61 :       NFAC3=0
  62 :       NFAC4=0
  63 :       NFAC6=0
  64 :       NFAC8=0
  65 :       NTPOL=0
  66 :       DO 50 IOB=1,LISOUS(/1)
  67 :         IPT1=LISOUS(IOB)
  68 : * si objet en double on saute
  69 :         do 51 io2=1,iob-1
  70 :          if (ipt1.eq.lisous(io2)) goto 50
  71 :   51    continue
  72 :         SEGACT IPT1
  73 :         IELIM=1
  74 :         IF (KSURF(IPT1.ITYPEL).EQ.IPT1.ITYPEL) THEN
  75 : *  face non eliminable (pas un volume)
  76 :          IELIM=0
  77 :         ENDIF
  78 :         melval=lisref(iob)
  79 :         if (melval.eq.0) goto 50
  80 :         segact melval
  81 :         lval=velche(/1)
  82 :         ival=velche(/2)
  83 :         NBELEM=IPT1.NUM(/2)
  84 :         ILTEL=LTEL(1,IPT1.ITYPEL)
  85 :         IF (ILTEL.EQ.0) GOTO 52
  86 :         ILTAD=LTEL(2,IPT1.ITYPEL)
  87 :         DO 60 IF=1,ILTEL
  88 :           ITYP=LDEL(1,ILTAD+IF-1)
  89 :           IAD=LDEL(2,ILTAD+IF-1)
  90 :           DO 66 IEL=1,NBELEM
  91 :               ielr=min(ival,iel)
  92 :             GOTO (61,62,63,64,65,65),ITYP
  93 :   61          NFAC3=NFAC3+1
  94 :               IFAC3(1,NFAC3)=IPT1.NUM(LFAC(IAD),IEL)
  95 :               IFAC3(2,NFAC3)=IPT1.NUM(LFAC(IAD+1),IEL)
  96 :               IFAC3(3,NFAC3)=IPT1.NUM(LFAC(IAD+2),IEL)
  97 :               IFAC3(4,NFAC3)=IPT1.ICOLOR(IEL)
  98 :               IFAC3(5,NFAC3)=IELIM
  99 :               xFAC3(1,NFAC3)=velche(min(lval,LFAC(IAD)),ielr)
 100 :               xFAC3(2,NFAC3)=velche(min(lval,LFAC(IAD+1)),ielr)
 101 :               xFAC3(3,NFAC3)=velche(min(lval,LFAC(IAD+2)),ielr)
 102 :             GOTO 65
 103 :   62          NFAC4=NFAC4+1
 104 :               IFAC4(1,NFAC4)=IPT1.NUM(LFAC(IAD),IEL)
 105 :               IFAC4(2,NFAC4)=IPT1.NUM(LFAC(IAD+1),IEL)
 106 :               IFAC4(3,NFAC4)=IPT1.NUM(LFAC(IAD+2),IEL)
 107 :               IFAC4(4,NFAC4)=IPT1.NUM(LFAC(IAD+3),IEL)
 108 :               IFAC4(5,NFAC4)=IPT1.ICOLOR(IEL)
 109 :               IFAC4(6,NFAC4)=IELIM
 110 :               xFAC4(1,NFAC4)=velche(min(lval,LFAC(IAD)),ielr)
 111 :               xFAC4(2,NFAC4)=velche(min(lval,LFAC(IAD+1)),ielr)
 112 :               xFAC4(3,NFAC4)=velche(min(lval,LFAC(IAD+2)),ielr)
 113 :               xFAC4(4,NFAC4)=velche(min(lval,LFAC(IAD+3)),ielr)
 114 :             GOTO 65
 115 :   63          NFAC6=NFAC6+1
 116 :               IFAC6(1,NFAC6)=IPT1.NUM(LFAC(IAD)  ,IEL)
 117 :               IFAC6(2,NFAC6)=IPT1.NUM(LFAC(IAD+1),IEL)
 118 :               IFAC6(3,NFAC6)=IPT1.NUM(LFAC(IAD+2),IEL)
 119 :               IFAC6(4,NFAC6)=IPT1.NUM(LFAC(IAD+3),IEL)
 120 :               IFAC6(5,NFAC6)=IPT1.NUM(LFAC(IAD+4),IEL)
 121 :               IFAC6(6,NFAC6)=IPT1.NUM(LFAC(IAD+5),IEL)
 122 :               IFAC6(7,NFAC6)=IPT1.ICOLOR(IEL)
 123 :               IFAC6(8,NFAC6)=IELIM
 124 :               xFAC6(1,NFAC6)=velche(min(lval,LFAC(IAD))  ,ielr)
 125 :               xFAC6(2,NFAC6)=velche(min(lval,LFAC(IAD+1)),ielr)
 126 :               xFAC6(3,NFAC6)=velche(min(lval,LFAC(IAD+2)),ielr)
 127 :               xFAC6(4,NFAC6)=velche(min(lval,LFAC(IAD+3)),ielr)
 128 :               xFAC6(5,NFAC6)=velche(min(lval,LFAC(IAD+4)),ielr)
 129 :               xFAC6(6,NFAC6)=velche(min(lval,LFAC(IAD+5)),ielr)
 130 :             GOTO 65
 131 :   64          CONTINUE
 132 :               NFAC8=NFAC8+1
 133 :               IFAC8(1,NFAC8)=IPT1.NUM(LFAC(IAD)  ,IEL)
 134 :               IFAC8(2,NFAC8)=IPT1.NUM(LFAC(IAD+1),IEL)
 135 :               IFAC8(3,NFAC8)=IPT1.NUM(LFAC(IAD+2),IEL)
 136 :               IFAC8(4,NFAC8)=IPT1.NUM(LFAC(IAD+3),IEL)
 137 :               IFAC8(5,NFAC8)=IPT1.NUM(LFAC(IAD+4),IEL)
 138 :               IFAC8(6,NFAC8)=IPT1.NUM(LFAC(IAD+5),IEL)
 139 :               IFAC8(7,NFAC8)=IPT1.NUM(LFAC(IAD+6),IEL)
 140 :               IFAC8(8,NFAC8)=IPT1.NUM(LFAC(IAD+7),IEL)
 141 :               IFAC8(9,NFAC8)=IPT1.ICOLOR(IEL)
 142 :               IFAC8(10,NFAC8)=IELIM
 143 :               xFAC8(1,NFAC8)=velche(min(lval,LFAC(IAD))  ,ielr)
 144 :               xFAC8(2,NFAC8)=velche(min(lval,LFAC(IAD+1)),ielr)
 145 :               xFAC8(3,NFAC8)=velche(min(lval,LFAC(IAD+2)),ielr)
 146 :               xFAC8(4,NFAC8)=velche(min(lval,LFAC(IAD+3)),ielr)
 147 :               xFAC8(5,NFAC8)=velche(min(lval,LFAC(IAD+4)),ielr)
 148 :               xFAC8(6,NFAC8)=velche(min(lval,LFAC(IAD+5)),ielr)
 149 :               xFAC8(7,NFAC8)=velche(min(lval,LFAC(IAD+6)),ielr)
 150 :               xFAC8(8,NFAC8)=velche(min(lval,LFAC(IAD+7)),ielr)
 151 :             GOTO 65
 152 :   65        CONTINUE
 153 :   66      CONTINUE
 154 :   60    CONTINUE
 155 :   52    CONTINUE
 156 :         IF (ITYP.EQ.6) THEN
 157 : C         Polygone
 158 :           NTPOL = NTPOL+1 
 159 :           IPPOL(NTPOL)= IPT1
 160 :           SEGINI,MELVA1 = MELVAL
 161 :           IPREF(NTPOL) = MELVA1
 162 :         ELSE
 163 :           IF (LISOUS(/1).NE.0) SEGDES IPT1
 164 :         ENDIF
 165 :   50  CONTINUE
 166 :       SEGDES MELEME
 167 : C  IF FAUT MAINTENANT RETASSER ET CLASSER LES TABLEAUX DES FACES
 168 : C  PROBLEME ELLES NE SONT PAS FORCEMENT DECRITES DE LA MEME FACON
 169 :       NFAC=NFAC3+NFAC4+NFAC6+NFAC8
 170 :       SEGINI NTFAC,KFAK
 171 :       IF (NFAC3.EQ.0) GOTO 101
 172 :       DO 102 I=1,NFAC3
 173 :       NTFAC(I)=IFAC3(1,I)+IFAC3(2,I)+IFAC3(3,I)
 174 :       KFAK(I)=I
 175 :  102  CONTINUE
 176 :  101  CONTINUE
 177 :       IF (NFAC4.EQ.0) GOTO 103
 178 :       DO 104 I=1,NFAC4
 179 :       NTFAC(I+NFAC3)=IFAC4(1,I)+IFAC4(2,I)+IFAC4(3,I)+IFAC4(4,I)
 180 :       KFAK(I+NFAC3)=I
 181 :  104  CONTINUE
 182 :  103  CONTINUE
 183 :       IF (NFAC6.EQ.0) GOTO 105
 184 :       DO 106 I=1,NFAC6
 185 :       NTFAC(I+NFAC3+NFAC4)=IFAC6(1,I)+IFAC6(2,I)+IFAC6(3,I)
 186 :      # +IFAC6(4,I)+IFAC6(5,I)+IFAC6(6,I)
 187 :       KFAK(I+NFAC3+NFAC4)=I
 188 :  106  CONTINUE
 189 :  105  CONTINUE
 190 :       IF (NFAC8.EQ.0) GOTO 107
 191 :       DO 108 I=1,NFAC8
 192 :       NTFAC(I+NFAC3+NFAC4+NFAC6)=IFAC8(1,I)+IFAC8(2,I)+IFAC8(3,I)
 193 :      # +IFAC8(4,I)+IFAC8(5,I)+IFAC8(6,I)+IFAC8(7,I)+IFAC8(8,I)
 194 :       KFAK(I+NFAC3+NFAC4+NFAC6)=I
 195 :  108  CONTINUE
 196 :  107  CONTINUE
 197 : C  IL N'Y A PLUS QU'A TRIER ET RETASSER KFAK SUIVANT NTFAC
 198 :       SEGINI NAUX
 199 :       DO 300 ITYP=1,4
 200 :       GOTO (301,302,303,304),ITYP
 201 :  301  CONTINUE
 202 :       IF (NFAC3.LE.1) GOTO 300
 203 :       NAUX(1)=1
 204 :       NAUX(2)=NFAC3
 205 :       GOTO 310
 206 :  302  CONTINUE
 207 :       IF (NFAC4.LE.1) GOTO 300
 208 :       NAUX(1)=NFAC3+1
 209 :       NAUX(2)=NFAC3+NFAC4
 210 :       GOTO 310
 211 :  303  CONTINUE
 212 :       IF (NFAC6.LE.1) GOTO 300
 213 :       NAUX(1)=NFAC3+NFAC4+1
 214 :       NAUX(2)=NFAC3+NFAC4+NFAC6
 215 :       GOTO 310
 216 :  304  CONTINUE
 217 :       IF (NFAC8.LE.1) GOTO 300
 218 :       NAUX(1)=NFAC3+NFAC4+NFAC6+1
 219 :       NAUX(2)=NFAC
 220 :       GOTO 310
 221 :  310  CONTINUE
 222 :       IZ=2
 223 :  208  IZ=IZ-1
 224 :       IF (IZ.LE.0) GOTO 209
 225 :       IPB=NAUX(IZ*2-1)
 226 :       IPH=NAUX(IZ*2)
 227 :       IF(IPB.GE.IPH) GOTO 208
 228 :       JPB=IPB-1
 229 :       JPH=IPH+1
 230 : C  CALCUL DU PIVOT
 231 :       NPV=0
 232 : *     DO 207 J=IPB,IPH
 233 : *     NPV=NPV+NTFAC(J)
 234 : *207  CONTINUE
 235 : *     NPV=NPV/(IPH-IPB+1)
 236 :       NPV=(NTFAC(IPB)+NTFAC(IPH))/2
 237 :  242  JPB=JPB+1
 238 :       IF (JPH.EQ.JPB) GOTO 245
 239 :       IF (NTFAC(JPB).LE.NPV) GOTO 243
 240 :       GOTO 242
 241 :  243  JPH=JPH-1
 242 :       IF (JPH.EQ.JPB) GOTO 245
 243 :       IF (NTFAC(JPH).GE.NPV) GOTO 244
 244 :       GOTO 243
 245 :  244  IAUX=KFAK(JPB)
 246 :       KFAK(JPB)=KFAK(JPH)
 247 :       KFAK(JPH)=IAUX
 248 :       NTAUX=NTFAC(JPB)
 249 :       NTFAC(JPB)=NTFAC(JPH)
 250 :       NTFAC(JPH)=NTAUX
 251 :       GOTO 242
 252 :  245  IF (JPB.GE.IPB) GOTO 247
 253 :       JPB=JPB+1
 254 :       JPH=JPH+2
 255 :       GOTO 248
 256 :  247  IF (JPH.LE.IPH) GOTO 249
 257 :       JPB=JPB-2
 258 :       JPH=JPH-1
 259 :       GOTO 248
 260 :  249  IF (NTFAC(JPB).LE.NPV) GOTO 250
 261 :       IF (JPH.EQ.IPH) GOTO 251
 262 :  252  JPH=JPH+1
 263 :       GOTO 248
 264 :  250  IF (JPB.EQ.IPB) GOTO 252
 265 :  251  JPB=JPB-1
 266 :  248  IF (JPB.EQ.IPB) GOTO 253
 267 :       NAUX(2*IZ)=JPB
 268 :       IZ=IZ+1
 269 :  253  IF (JPH.EQ.IPH) GOTO 208
 270 :       NAUX(2*IZ)=IPH
 271 :       NAUX(2*IZ-1)=JPH
 272 :       IZ=IZ+1
 273 :       GOTO 208
 274 :  209  CONTINUE
 275 :  300  CONTINUE
 276 : C  LES FACES SONT CLASSEES DANS KFAK IL FAUT ELIMINER LES FACES EN DOUBL
 277 : C  ELLES SONT PAR TYPE LES UNES DERRIERES LES AUTRES LES PLUS HAUTES
 278 : C  DEVANT
 279 :       IF (IIMPI.NE.0) WRITE (IOIMP,9111) (KFAK(I),NTFAC(I),I=1,NFAC)
 280 :  9111 FORMAT(5(2X,2I6))
 281 :       DO 400 ITYP=1,4
 282 :       GOTO (401,402,403,404),ITYP
 283 :  401  IF (NFAC3.LE.1) GOTO 400
 284 :       IDEB=1
 285 :       IFIN=NFAC3
 286 :       GOTO 410
 287 :  402  IF (NFAC4.LE.1) GOTO 400
 288 :       IDEB=NFAC3+1
 289 :       IFIN=NFAC3+NFAC4
 290 :       GOTO 410
 291 :  403  IF (NFAC6.LE.1) GOTO 400
 292 :       IDEB=NFAC3+NFAC4+1
 293 :       IFIN=NFAC3+NFAC4+NFAC6
 294 :       GOTO 410
 295 :  404  IF (NFAC8.LE.1) GOTO 400
 296 :       IDEB=NFAC3+NFAC4+NFAC6+1
 297 :       IFIN=NFAC
 298 :       GOTO 410
 299 :  410  CONTINUE
 300 :       IFINM=IFIN-1
 301 :       DO 450 I1=IDEB,IFINM
 302 :       NTI1=NTFAC(I1)
 303 :       IF (NTI1.EQ.0) GOTO 450
 304 :       IDEB1=I1+1
 305 :       DO 460 I2=IDEB1,IFIN
 306 :       NTI2=NTFAC(I2)
 307 :       IF (NTI2.EQ.0) GOTO 460
 308 :       IF (NTI2.NE.NTI1) GOTO 450
 309 :       IR1=KFAK(I1)
 310 :       IR2=KFAK(I2)
 311 :       GOTO (470,480,490,500),ITYP
 312 :  470  CONTINUE
 313 :       IF (IFAC3(5,IR1).EQ.0) GOTO 520
 314 :       IF (IFAC3(5,IR2).EQ.0) GOTO 520
 315 :       DO 471 J1=1,3
 316 :       INU=IFAC3(J1,IR1)
 317 :       DO 472 J2=1,3
 318 :       IF (INU.EQ.IFAC3(J2,IR2)) GOTO 471
 319 :  472  CONTINUE
 320 :       GOTO 520
 321 :  471  CONTINUE
 322 :       GOTO 510
 323 :  480  CONTINUE
 324 :       IF (IFAC4(6,IR1).EQ.0) GOTO 520
 325 :       IF (IFAC4(6,IR2).EQ.0) GOTO 520
 326 :       DO 481 J1=1,4
 327 :       INU=IFAC4(J1,IR1)
 328 :       DO 482 J2=1,4
 329 :       IF (INU.EQ.IFAC4(J2,IR2)) GOTO 481
 330 :  482  CONTINUE
 331 :       GOTO 520
 332 :  481  CONTINUE
 333 :       GOTO 510
 334 :  490  CONTINUE
 335 :       IF (IFAC6(8,IR1).EQ.0) GOTO 520
 336 :       IF (IFAC6(8,IR2).EQ.0) GOTO 520
 337 :       DO 491 J1=1,6
 338 :       INU=IFAC6(J1,IR1)
 339 :       DO 492 J2=1,6
 340 :       IF (INU.EQ.IFAC6(J2,IR2)) GOTO 491
 341 :  492  CONTINUE
 342 :       GOTO 520
 343 :  491  CONTINUE
 344 :       GOTO 510
 345 :  500  CONTINUE
 346 :       IF (IFAC8(10,IR1).EQ.0) GOTO 520
 347 :       IF (IFAC8(10,IR2).EQ.0) GOTO 520
 348 :       DO 501 J1=1,8
 349 :       INU=IFAC8(J1,IR1)
 350 :       DO 502 J2=1,8
 351 :       IF (INU.EQ.IFAC8(J2,IR2)) GOTO 501
 352 :  502  CONTINUE
 353 :       GOTO 520
 354 :  501  CONTINUE
 355 :       GOTO 510
 356 :  520  CONTINUE
 357 :       GOTO 460
 358 :  510  CONTINUE
 359 : C  DEUX FACES EGALES ON LES SUPPRIMENT
 360 :       NTFAC(I1)=0
 361 :       NTFAC(I2)=0
 362 :       GOTO 450
 363 :  460  CONTINUE
 364 :  450  CONTINUE
 365 :  400  CONTINUE
 366 :       IPT1=0
 367 :       IPT2=0
 368 :       IPT3=0
 369 :       IPT4=0
 370 :       NBSOUS=0
 371 :       NBREF=0
 372 :       NBSOU2=0
 373 :       DO 600 ITY=1,4
 374 :       GOTO (610,620,630,640),ITY
 375 :  610  CONTINUE
 376 :       IF (NFAC3.EQ.0) GOTO 600
 377 :       IDEB=1
 378 :       IFIN=NFAC3
 379 :       NBELEM=0
 380 :       DO 611 I=IDEB,IFIN
 381 :       IF (NTFAC(I).NE.0) NBELEM=NBELEM+1
 382 :  611  CONTINUE
 383 :       IF (NBELEM.EQ.0) GOTO 600
 384 :       NBSOU2=NBSOU2+1
 385 :       NBNN=3
 386 :       SEGINI IPT1
 387 :       IPT1.ITYPEL=4
 388 :       n1ptel=3
 389 :       n1el=nbelem
 390 :       segini melva1
 391 :       JAUX=0
 392 :       DO 612 J=IDEB,IFIN
 393 :       IF (NTFAC(J).EQ.0) GOTO 612
 394 :       JAUX=JAUX+1
 395 :       IPT1.ICOLOR(JAUX)=IFAC3(4,KFAK(J))
 396 :       DO 613 I=1,NBNN
 397 :       IPT1.NUM(I,JAUX)=IFAC3(I,KFAK(J))
 398 :       melva1.velche(I,JAUX)=xFAC3(I,KFAK(J))
 399 :  613  CONTINUE
 400 :  612  CONTINUE
 401 :       SEGDES IPT1
 402 :       GOTO 600
 403 :  620  CONTINUE
 404 :       IF (NFAC4.EQ.0) GOTO 600
 405 :       IDEB=NFAC3+1
 406 :       IFIN=NFAC3+NFAC4
 407 :       NBELEM=0
 408 :       DO 621 I=IDEB,IFIN
 409 :       IF (NTFAC(I).NE.0) NBELEM=NBELEM+1
 410 :  621  CONTINUE
 411 :       IF (NBELEM.EQ.0) GOTO 600
 412 :       NBSOU2=NBSOU2+1
 413 :       NBNN=4
 414 :       SEGINI IPT2
 415 :       IPT2.ITYPEL=8
 416 :       n1ptel=4
 417 :       n1el=nbelem
 418 :       segini melva2
 419 :       JAUX=0
 420 :       DO 622 J=IDEB,IFIN
 421 :       IF (NTFAC(J).EQ.0) GOTO 622
 422 :       JAUX=JAUX+1
 423 :       IPT2.ICOLOR(JAUX)=IFAC4(5,KFAK(J))
 424 :       DO 623 I=1,NBNN
 425 :       IPT2.NUM(I,JAUX)=IFAC4(I,KFAK(J))
 426 :       melva2.velche(I,JAUX)=xFAC4(I,KFAK(J))
 427 :  623  CONTINUE
 428 :  622  CONTINUE
 429 :       SEGDES IPT2
 430 :       GOTO 600
 431 :  630  CONTINUE
 432 :       IF (NFAC6.EQ.0) GOTO 600
 433 :       IDEB=NFAC3+NFAC4+1
 434 :       IFIN=NFAC3+NFAC4+NFAC6
 435 :       NBELEM=0
 436 :       DO 631 I=IDEB,IFIN
 437 :       IF (NTFAC(I).NE.0) NBELEM=NBELEM+1
 438 :  631  CONTINUE
 439 :       IF (NBELEM.EQ.0) GOTO 600
 440 :       NBSOU2=NBSOU2+1
 441 :       NBNN=6
 442 :       SEGINI IPT3
 443 :       IPT3.ITYPEL=6
 444 :       n1ptel=6
 445 :       n1el=nbelem
 446 :       segini melva3
 447 :       JAUX=0
 448 :       DO 632 J=IDEB,IFIN
 449 :       IF (NTFAC(J).EQ.0) GOTO 632
 450 :       JAUX=JAUX+1
 451 :       IPT3.ICOLOR(JAUX)=IFAC6(7,KFAK(J))
 452 :       DO 633 I=1,NBNN
 453 :       IPT3.NUM(I,JAUX)=IFAC6(I,KFAK(J))
 454 :       melva3.velche(I,JAUX)=xFAC6(I,KFAK(J))
 455 :  633  CONTINUE
 456 :  632  CONTINUE
 457 :       SEGDES IPT3
 458 :       GOTO 600
 459 :  640  CONTINUE
 460 :       IF (NFAC8.EQ.0) GOTO 600
 461 :       IDEB=NFAC3+NFAC4+NFAC6+1
 462 :       IFIN=NFAC
 463 :       NBELEM=0
 464 :       DO 641 I=IDEB,IFIN
 465 :       IF (NTFAC(I).NE.0) NBELEM=NBELEM+1
 466 :  641  CONTINUE
 467 :       IF (NBELEM.EQ.0) GOTO 600
 468 :       NBSOU2=NBSOU2+1
 469 :       NBNN=8
 470 :       SEGINI IPT4
 471 :       IPT4.ITYPEL=10
 472 :       n1ptel=8
 473 :       n1el=nbelem
 474 :       segini melva4
 475 :       JAUX=0
 476 :       DO 642 J=IDEB,IFIN
 477 :       IF (NTFAC(J).EQ.0) GOTO 642
 478 :       JAUX=JAUX+1
 479 :       IPT4.ICOLOR(JAUX)=IFAC8(9,KFAK(J))
 480 :       DO 643 I=1,NBNN
 481 :       IPT4.NUM(I,JAUX)=IFAC8(I,KFAK(J))
 482 :       melva4.velche(I,JAUX)=xFAC8(I,KFAK(J))
 483 :  643  CONTINUE
 484 :  642  CONTINUE
 485 :       SEGDES IPT4
 486 :       GOTO 600
 487 :  600  CONTINUE
 488 : *  on rajoute les points et les segments qui pouvaient  etre dans le
 489 : *  maillage initial
 490 :       ipt5=0
 491 :       segact meleme
 492 :       ipt6=meleme
 493 :       do 710 io=1,max(1,lisous(/1))
 494 :       if (lisous(/1).ne.0) ipt6=lisous(io)
 495 :       segact ipt6
 496 :       if (ipt6.itypel.le.3) then
 497 :        nbsou2=nbsou2+1
 498 :        ipt5=ipt6
 499 :       endif
 500 :       segdes ipt6
 501 :  710  continue
 502 :       segdes meleme
 503 :       NBSOUS=NBSOU2+NTPOL
 503 :       IF (NBSOUS.EQ.0) CALL ERREUR(26)
 504 :       NBREF=nbsous
 505 :       NBNN=0
 506 :       NBELEM=0
 507 :       SEGINI IPT5
 508 :       I=0
 509 :       IF (IPT1.EQ.0) GOTO 701
 510 :       I=I+1
 511 :       IPT5.LISOUS(I)=IPT1
 512 :       IPT5.LISref(I)=melva1
 513 :  701  CONTINUE
 514 :       IF (IPT2.EQ.0) GOTO 702
 515 :       I=I+1
 516 :       IPT5.LISOUS(I)=IPT2
 517 :       IPT5.LISref(I)=melva2
 518 :  702  CONTINUE
 519 :       IF (IPT3.EQ.0) GOTO 703
 520 :       I=I+1
 521 :       IPT5.LISOUS(I)=IPT3
 522 :       IPT5.LISref(I)=melva3
 523 :  703  CONTINUE
 524 :       IF (IPT4.EQ.0) GOTO 704
 525 :       I=I+1
 526 :       IPT5.LISOUS(I)=IPT4
 527 :       IPT5.LISref(I)=melva4
 528 :  704  CONTINUE
 529 :       segact meleme
 530 :       ipt1=meleme
 531 :       do 711 io=1,max(1,lisous(/1))
 532 :       if (lisous(/1).ne.0) ipt1=lisous(io)
 533 :       segact ipt1
 534 :       if (ipt1.itypel.le.3) then
 535 :        I=I+1
 536 :        IPT5.LISOUS(I)=IPT1
 537 :        IPT5.LISref(I)=lisref(io)
 538 :       endif
 539 :       segdes ipt1
 540 :  711  continue
 541 :       DO 720, IO = 1, NTPOL
 542 :         I= I+1
 543 :         IPT5.LISOUS(I) = IPPOL(IO)
 544 :         IPT5.LISREF(I) = IPREF(IO)
 545 :  720  CONTINUE
 546 :       segdes meleme
 547 :       melres=ipt5
 548 :       SEGSUP IFAC3,IFAC4,IFAC6,IFAC8,NTFAC,KFAK,NAUX,IPPOL,IPREF
 549 :       SEGSUP xFAC3,xFAC4,xFAC6,xFAC8
 550 :       RETURN
 551 :       END
 552 : 
 553 : 
 554 :  
 555 :  
 556 :  
 557 :  
 558 :  
 559 :  
 560 :  
 561 :  
 562 :  
 563 :  
 564 :  
 565 :  
 566 :  

© Cast3M 2003 - All rights reserved.
Disclaimer