1 : C AMELI2 SOURCE PV 07/11/23 21:15:18 5978 2 : SUBROUTINE AMELI2 (NUM,NSA,NBNN,NUMELG,NUMNP,NBVOIS,MAXVOI,KON) 3 : ************************************************************************ 4 : * 5 : * A M E L I 2 6 : * ----------- 7 : * 8 : * FONCTION: 9 : * --------- 10 : * 11 : * AMELIORATION D'UN MAILLAGE DE "QUA4" ET/OU "TRI3" SANS 12 : * DEPLACEMENT DES NOEUDS. 13 : * 14 : * MODULES UTILISES: 15 : * ----------------- 16 : * 17 : IMPLICIT INTEGER(I-N) 18 : implicit real*8 (a-h,o-z) 19 : -INC CCREEL 20 : -INC CCOPTIO 21 : * 22 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 23 : * ----------- 24 : * 25 : * NUM(I,J) E/S NUMERO DU I-EME NOEUD DU J-EME ELEMENT. 26 : * - MELANGE "QUA4" ET "TRI3" DANS LE MEME TABLEAU, 27 : * - TABLEAU SURDIMENSIONNE. 28 : * - NUMEROTATION DES NOEUDS LOCALE A L'OPERATEUR. 29 : * NSA (E) TABLEAU DE CORRESPONDANCE ENTRE NUMEROS LOCAUX ET 30 : * GLOBAUX. 31 : * NBNN (E) NOMBRE MAXI DE NOEUDS PAR ELEMENT. 32 : * NUMELG E/S NOMBRE D'ELEMENTS DU MAILLAGE. 33 : * NUMNP (E) NOMBRE DE NOEUDS DU MAILLAGE. 34 : * NBVOIS (E) NOMBRE D'ELEMENTS APPUYES SUR UN NOEUD DONNE. 35 : * KON (E) TABLEAU DE CONNEXIONS DES NOEUDS. 36 : * KON(I, N.NOEUD - CSTE) = N.ELEMENT 37 : * 38 : INTEGER NUM(NBNN,*),NSA(*),NBVOIS(*),KON(MAXVOI,*) 39 : * 40 : * CONSTANTES: 41 : * ----------- 42 : * 43 : PARAMETER (PI = XPI) 44 : PARAMETER (ANGMIN = 30.D0 * XPI/180.D0) 45 : PARAMETER (ANGMAX = XPI - ANGMIN) 46 : PARAMETER (QUAL0 = 0.3) 47 : * 48 : * VARIABLES: 49 : * ---------- 50 : * 51 : * QUADRA = .TRUE. SI ON CHERCHE A MAILLER EN QUADRANGLES. 52 : * 53 : LOGICAL QUADRA 54 : * 55 : * FONCTIONS: 56 : * ---------- 57 : * 58 : LOGICAL QUAD 59 : QUAD(I) = (NBNN.EQ.4).AND.(NUM(NBNN,I).NE.0) 60 : * 61 : * REMARQUES: 62 : * ---------- 63 : * 64 : * CRITERES DE QUALITE: 65 : * - PLUS GRAND ANGLE DE QUADRANGLE (ANALOGUE AU S.P. "AMELIO"), 66 : * - PLUS PETIT ANGLE DE QUADRANGLE, 67 : * - SURFACE TRIANGLE PAR RAPPORT A EQUILATERAL (ANALOGUE AU S.P. 68 : * "AMELIO", LIMITE A 0.3 AU LIEU DE 0.4) 69 : * MAIS CALCUL DANS L'ESPACE GEOMETRIQUE REEL ET IMPOSSIBILITE DE 70 : * DEPLACER LES NOEUDS. 71 : * 72 : * AUTEUR, DATE DE CREATION: 73 : * ------------------------- 74 : * 75 : * PASCAL MANIGOT 19 NOVEMBRE 1990 76 : * 77 : * LANGAGE: 78 : * -------- 79 : * 80 : * FORTRAN77 81 : * 82 : ************************************************************************ 83 : * 84 : IF (NUMELG.LE.1) RETURN 85 : * 86 : QUADRA = NBNN.EQ.4 87 : * 88 : * 89 : * 1) CONVERSION DES QUADRANGLES APLATIS EN COUPLES DE TRIANGLES 90 : * 91 : IF (QUADRA) THEN 92 : * 93 : NUMEL0 = NUMELG 94 : DO 100 L1=1,NUMEL0 95 : IF (.NOT. QUAD(L1)) GOTO 100 96 : * 97 : I1=NUM(1,L1) 98 : I2=NUM(2,L1) 99 : I3=NUM(3,L1) 100 : I4=NUM(4,L1) 101 : N1 = NSA(I1) 102 : N2 = NSA(I2) 103 : N3 = NSA(I3) 104 : N4 = NSA(I4) 104 : CALL ANGQUA (N1,N2,N3,N4, ANG1,ANG2,ANG3,ANG4) 105 : IF (ANG1.GT.ANGMAX .OR. ANG2.LT.ANGMIN 106 : & .OR. ANG3.GT.ANGMAX .OR. ANG4.LT.ANGMIN) THEN 107 : NUM(4,L1)=0 108 : NUMELG=NUMELG+1 109 : NUM(1,NUMELG)=I1 110 : NUM(2,NUMELG)=I3 111 : NUM(3,NUMELG)=I4 112 : NUM(4,NUMELG)=0 113 : ELSE IF (ANG1.LT.ANGMIN .OR. ANG2.GT.ANGMAX 114 : & .OR. ANG3.LT.ANGMIN .OR. ANG4.GT.ANGMAX) THEN 115 : NUM(4,L1)=0 116 : NUM(3,L1)=I4 117 : NUMELG=NUMELG+1 118 : NUM(1,NUMELG)=I2 119 : NUM(2,NUMELG)=I3 120 : NUM(3,NUMELG)=I4 121 : NUM(4,NUMELG)=0 122 : END IF 123 : 100 CONTINUE 124 : * END DO 125 : * 126 : IF (IIMPI .EQ. 1808) THEN 127 : WRITE (IOIMP,2100) (NUMELG - NUMEL0) 128 : 2100 FORMAT (1X,I5,' DECOUPAGES DE 1 QUADRANGLE EN 2 TRIANGLES.') 129 : END IF 130 : * 131 : END IF 132 : * 133 : * 134 : MODIF2 = 0 135 : MODIF4 = 0 136 : MODIF6 = 0 137 : * DO 138 : 400 CONTINUE 139 : MODIF1 = MODIF2 140 : MODIF3 = MODIF4 141 : MODIF5 = MODIF6 142 : * 143 : * 144 : * 2) RECHERCHE DE TRIANGLES ADJACENTS POUR: 145 : * - CREATION DE QUADRANGLE, OU 146 : * - INVERSION EVENTUELLE DE DIAGONALE. 147 : * 148 : * 149 : * DEFINITION DE LA TABLE DES CONNEXIONS: 150 : DO 200 I=1,NUMNP 151 : NBVOIS(I)=0 152 : 200 CONTINUE 153 : * END DO 154 : DO 202 L2=1,NUMELG 155 : DO 2021 I=1,NBNN 156 : IA = NUM(I,L2) 157 : IF (IA .NE. 0) THEN 158 : NBVOIS(IA)=NBVOIS(IA)+1 159 : KON(NBVOIS(IA),IA)=L2 160 : END IF 161 : 2021 CONTINUE 162 : 202 CONTINUE 163 : * END DO 164 : * 165 : L1 = 0 166 : 500 IF (L1.LT.NUMELG) THEN 167 : L1 = L1 + 1 168 : IF (QUAD(L1)) GOTO 500 169 : * 170 : I1=NUM(1,L1) 171 : I2=NUM(2,L1) 172 : I3=NUM(3,L1) 173 : N1 = NSA(I1) 174 : N2 = NSA(I2) 175 : N3 = NSA(I3) 175 : CALL VALTRI (N1,N2,N3, CAL1) 176 : * 177 : DO 540 IPOI=1,3 178 : * 179 : NODL1 = NUM(IPOI,L1) 180 : NM=NBVOIS(NODL1) 181 : * 182 : DO 520 IVOIS=1,NM 183 : * 184 : L2=KON(IVOIS,NODL1) 185 : IF (L2 .EQ. L1) GOTO 520 186 : IF (QUAD(L2)) GOTO 520 187 : * 188 : IF ((I1.EQ.NUM(1,L2)).AND.(I2.EQ.NUM(3,L2))) THEN 189 : I9=NUM(2,L2) 190 : ELSEIF((I1.EQ.NUM(2,L2)).AND.(I2.EQ.NUM(1,L2))) THEN 191 : I9=NUM(3,L2) 192 : ELSEIF((I1.EQ.NUM(3,L2)).AND.(I2.EQ.NUM(2,L2))) THEN 193 : I9=NUM(1,L2) 194 : * 195 : ELSEIF((I1.EQ.NUM(1,L2)).AND.(I3.EQ.NUM(2,L2))) THEN 196 : IAA=I1 197 : I1=I3 198 : I3=I2 199 : I2=IAA 200 : I9=NUM(3,L2) 201 : ELSEIF((I1.EQ.NUM(2,L2)).AND.(I3.EQ.NUM(3,L2))) THEN 202 : IAA=I1 203 : I1=I3 204 : I3=I2 205 : I2=IAA 206 : I9=NUM(1,L2) 207 : ELSEIF((I1.EQ.NUM(3,L2)).AND.(I3.EQ.NUM(1,L2))) THEN 208 : IAA=I1 209 : I1=I3 210 : I3=I2 211 : I2=IAA 212 : I9=NUM(2,L2) 213 : * 214 : ELSEIF((I2.EQ.NUM(1,L2)).AND.(I3.EQ.NUM(3,L2))) THEN 215 : IAA=I1 216 : I1=I2 217 : I2=I3 218 : I3=IAA 219 : I9=NUM(2,L2) 220 : ELSEIF((I2.EQ.NUM(2,L2)).AND.(I3.EQ.NUM(1,L2))) THEN 221 : IAA=I1 222 : I1=I2 223 : I2=I3 224 : I3=IAA 225 : I9=NUM(3,L2) 226 : ELSEIF((I2.EQ.NUM(3,L2)).AND.(I3.EQ.NUM(2,L2))) THEN 227 : IAA=I1 228 : I1=I2 229 : I2=I3 230 : I3=IAA 231 : I9=NUM(1,L2) 232 : ELSE 233 : * ITERATE 234 : GOTO 520 235 : END IF 236 : * 237 : N1 = NSA(I1) 238 : N9 = NSA(I9) 239 : N2 = NSA(I2) 240 : N3 = NSA(I3) 240 : CALL ANGQUA (N1,N9,N2,N3, ANG1,ANG2,ANG3,ANG4) 241 : * 242 : IF (QUADRA) THEN 243 : IF (MIN(ANG1,ANG2,ANG3,ANG4).GT.ANGMIN 244 : & .AND. MAX(ANG1,ANG2,ANG3,ANG4).LT.ANGMAX) THEN 245 : * ON PEUT ASSEMBLER UN QUADRANGLE: 246 : NUM(1,L1)=I1 247 : NUM(2,L1)=I9 248 : NUM(3,L1)=I2 249 : NUM(4,L1)=I3 250 : * 251 : * ON ENLEVE L'ELEMENT "L2": 252 : NUMELG=NUMELG-1 253 : DO 102 K=L2,NUMELG 254 : NUM(1,K)=NUM(1,K+1) 255 : NUM(2,K)=NUM(2,K+1) 256 : NUM(3,K)=NUM(3,K+1) 257 : NUM(4,K)=NUM(4,K+1) 258 : 102 CONTINUE 259 : * END DO 260 : IF (L1.GT.L2) L1 = L1 - 1 261 : DO 103 K1=1,MAXVOI 262 : DO 1031 K2=1,NUMNP 263 : IF (KON(K1,K2).GT.L2) THEN 264 : KON(K1,K2)=KON(K1,K2)-1 265 : ELSE IF (KON(K1,K2).EQ.L2) THEN 266 : NBVOIS(K2) = NBVOIS(K2) - 1 267 : DO 120 K1B = K1,NBVOIS(K2) 268 : KON(K1B,K2) = KON(K1B+1,K2) 269 : 120 CONTINUE 270 : * END DO 271 : END IF 272 : 1031 CONTINUE 273 : 103 CONTINUE 274 : * END DO 275 : * FIN DE LA SUPPRESSION DE L'ELEMENT "L2" 276 : * 277 : MODIF2 = MODIF2 + 1 278 : GOTO 500 279 : END IF 280 : END IF 281 : * 282 : IF (MAX(ANG1,ANG2,ANG3,ANG4) .LT. PI) THEN 283 : * INVERSION EVENTUELLE DE DIAGONALE POUR LES 2 284 : * TRIANGLES ADJACENTS: 284 : CALL VALTRI (N1,N9,N3, CAL2) 285 : IF (CAL2.GT.CAL1) THEN 285 : CALL VALTRI (N9,N2,N3, CAL2) 286 : IF (CAL2.GT.CAL1) THEN 287 : * ON PEUT COUPER SUIVANT LA DEUXIEME DIAGONALE 288 : NUM(1,L1)=I1 289 : NUM(2,L1)=I9 290 : NUM(3,L1)=I3 291 : NUM(1,L2)=I9 292 : NUM(2,L2)=I2 293 : NUM(3,L2)=I3 294 : MODIF4 = MODIF4 + 1 295 : GOTO 500 296 : END IF 297 : END IF 298 : END IF 299 : * 300 : 520 CONTINUE 301 : * END DO 302 : * 303 : 540 CONTINUE 304 : * END DO 305 : * 306 : GOTO 500 307 : END IF 308 : * 309 : IF (IIMPI .EQ. 1808) THEN 310 : WRITE (IOIMP,2000) (MODIF2 - MODIF1) 311 : 2000 FORMAT (1X,I5, 312 : & ' TRANSFORMATIONS DE 2 TRIANGLES EN 1 QUADRANGLE.') 313 : WRITE (IOIMP,2110) (MODIF4 - MODIF3) 314 : 2110 FORMAT (1X,I5,' INVERSIONS DE DIAGONALES.') 315 : END IF 316 : * 317 : IF (.NOT. QUADRA) THEN 318 : IF (MODIF4 .GT. MODIF3) GOTO 400 319 : RETURN 320 : END IF 321 : * 322 : * 323 : * 3) AMELIORATION DES QUADRANGLES PAR GLISSEMENT DES TRIANGLES 324 : * 325 : * 326 : IF ((MODIF2+MODIF4) .GT. (MODIF1+MODIF3)) THEN 327 : * REDEFINITION DE LA TABLE DES CONNEXIONS: 328 : DO 610 I=1,NUMNP 329 : NBVOIS(I)=0 330 : 610 CONTINUE 331 : * END DO 332 : DO 620 L2=1,NUMELG 333 : DO 6201 I=1,NBNN 334 : IA = NUM(I,L2) 335 : IF (IA .NE. 0) THEN 336 : NBVOIS(IA)=NBVOIS(IA)+1 337 : KON(NBVOIS(IA),IA)=L2 338 : END IF 339 : 6201 CONTINUE 340 : 620 CONTINUE 341 : * END DO 342 : END IF 343 : * 344 : L1 = 0 345 : 700 IF (L1.LT.NUMELG) THEN 346 : L1 = L1 + 1 347 : IF (QUAD(L1)) GOTO 700 348 : * 349 : I1=NUM(1,L1) 350 : I2=NUM(2,L1) 351 : I3=NUM(3,L1) 352 : PABO1 = ANGMAX * 1.01 353 : * 354 : DO 740 IPOI=1,3 355 : * 356 : NODL1 = NUM(IPOI,L1) 357 : NM=NBVOIS(NODL1) 358 : * 359 : DO 720 IVOIS=1,NM 360 : * 361 : L2=KON(IVOIS,NODL1) 362 : IF (.NOT.QUAD(L2)) GOTO 720 363 : * 364 : IF ((I1.EQ.NUM(1,L2)).AND.(I2.EQ.NUM(4,L2))) THEN 365 : II1 = I2 366 : II2 = I3 367 : II3 = I1 368 : II4 = NUM(2,L2) 369 : II5 = NUM(3,L2) 370 : ELSEIF((I1.EQ.NUM(2,L2)).AND.(I2.EQ.NUM(1,L2))) THEN 371 : II1 = I2 372 : II2 = I3 373 : II3 = I1 374 : II4 = NUM(3,L2) 375 : II5 = NUM(4,L2) 376 : ELSEIF((I1.EQ.NUM(3,L2)).AND.(I2.EQ.NUM(2,L2))) THEN 377 : II1 = I2 378 : II2 = I3 379 : II3 = I1 380 : II4 = NUM(4,L2) 381 : II5 = NUM(1,L2) 382 : ELSEIF((I1.EQ.NUM(4,L2)).AND.(I2.EQ.NUM(3,L2))) THEN 383 : II1 = I2 384 : II2 = I3 385 : II3 = I1 386 : II4 = NUM(1,L2) 387 : II5 = NUM(2,L2) 388 : * 389 : ELSEIF((I1.EQ.NUM(1,L2)).AND.(I3.EQ.NUM(2,L2))) THEN 390 : II1 = I1 391 : II2 = I2 392 : II3 = I3 393 : II4 = NUM(3,L2) 394 : II5 = NUM(4,L2) 395 : ELSEIF((I1.EQ.NUM(2,L2)).AND.(I3.EQ.NUM(3,L2))) THEN 396 : II1 = I1 397 : II2 = I2 398 : II3 = I3 399 : II4 = NUM(4,L2) 400 : II5 = NUM(1,L2) 401 : ELSEIF((I1.EQ.NUM(3,L2)).AND.(I3.EQ.NUM(4,L2))) THEN 402 : II1 = I1 403 : II2 = I2 404 : II3 = I3 405 : II4 = NUM(1,L2) 406 : II5 = NUM(2,L2) 407 : ELSEIF((I1.EQ.NUM(4,L2)).AND.(I3.EQ.NUM(1,L2))) THEN 408 : II1 = I1 409 : II2 = I2 410 : II3 = I3 411 : II4 = NUM(2,L2) 412 : II5 = NUM(3,L2) 413 : * 414 : ELSEIF((I2.EQ.NUM(1,L2)).AND.(I3.EQ.NUM(4,L2))) THEN 415 : II1 = I3 416 : II2 = I1 417 : II3 = I2 418 : II4 = NUM(2,L2) 419 : II5 = NUM(3,L2) 420 : ELSEIF((I2.EQ.NUM(2,L2)).AND.(I3.EQ.NUM(1,L2))) THEN 421 : II1 = I3 422 : II2 = I1 423 : II3 = I2 424 : II4 = NUM(3,L2) 425 : II5 = NUM(4,L2) 426 : ELSEIF((I2.EQ.NUM(3,L2)).AND.(I3.EQ.NUM(2,L2))) THEN 427 : II1 = I3 428 : II2 = I1 429 : II3 = I2 430 : II4 = NUM(4,L2) 431 : II5 = NUM(1,L2) 432 : ELSEIF((I2.EQ.NUM(4,L2)).AND.(I3.EQ.NUM(3,L2))) THEN 433 : II1 = I3 434 : II2 = I1 435 : II3 = I2 436 : II4 = NUM(1,L2) 437 : II5 = NUM(2,L2) 438 : ELSE 439 : * ITERATE 440 : GOTO 720 441 : END IF 442 : * 443 : N1 = NSA(II1) 444 : N2 = NSA(II2) 445 : N3 = NSA(II3) 446 : N4 = NSA(II4) 447 : N5 = NSA(II5) 448 : * TRIANGLE=1,2,3 QUADRANGLE=1,3,4,5 449 : * 450 : * QUALITE DU QUADRANGLE ACTUEL: 450 : CALL ANGQUA (N1,N3,N4,N5, ANG1,ANG2,ANG3,ANG4) 451 : AN1345 = MAX(ANG1,ANG2,ANG3,ANG4, 452 : & PI-ANG1,PI-ANG2,PI-ANG3,PI-ANG4) 453 : * 2 AUTRES QUADRANGLES POSSIBLES: 453 : CALL ANGQUA (N1,N2,N3,N4, ANG1,ANG2,ANG3,ANG4) 454 : AN1234 = MAX(ANG1,ANG2,ANG3,ANG4, 455 : & PI-ANG1,PI-ANG2,PI-ANG3,PI-ANG4) 455 : CALL ANGQUA (N1,N2,N3,N5, ANG1,ANG2,ANG3,ANG4) 456 : AN1235 = MAX(ANG1,ANG2,ANG3,ANG4, 457 : & PI-ANG1,PI-ANG2,PI-ANG3,PI-ANG4) 458 : * 459 : IF (AN1234 .LT. AN1345) THEN 460 : IF (AN1234 .LT. PABO1) THEN 461 : * 1ER NOUVEAU TRIANGLE POSSIBLE: 461 : CALL VALTRI (N1,N4,N5, CAL1) 462 : IF (CAL1 .GT. QUAL0) THEN 463 : PABO1 = AN1234 464 : L2BEST = L2 465 : III1 = II4 466 : III2 = II5 467 : III3 = II1 468 : III4 = II2 469 : III5 = II3 470 : END IF 471 : END IF 472 : END IF 473 : IF (AN1235 .LT. PI) THEN 474 : * 2EME NOUVEAU TRIANGLE POSSIBLE: 474 : CALL VALTRI (N1,N2,N5, CAL1) 475 : IF (CAL1 .GT. QUAL0) THEN 475 : CALL ANGQUA (N2,N3,N4,N5, ANG1,ANG2,ANG3,ANG4) 476 : PABO3 = MAX(ANG1,ANG2,ANG3,ANG4, 477 : & PI-ANG1,PI-ANG2,PI-ANG3,PI-ANG4) 478 : IF (PABO3 .LT. AN1345) THEN 479 : IF (PABO3 .LT. PABO1) THEN 480 : PABO1 = PABO3 481 : L2BEST = L2 482 : III1 = II5 483 : III2 = II1 484 : III3 = II2 485 : III4 = II3 486 : III5 = II4 487 : END IF 488 : END IF 489 : END IF 490 : END IF 491 : IF (AN1234 .LT. PI) THEN 492 : * 3EME NOUVEAU TRIANGLE POSSIBLE: 492 : CALL VALTRI (N2,N3,N4, CAL1) 493 : IF (CAL1 .GT. QUAL0) THEN 493 : CALL ANGQUA (N4,N5,N1,N2, ANG1,ANG2,ANG3,ANG4) 494 : PABO3 = MAX(ANG1,ANG2,ANG3,ANG4, 495 : & PI-ANG1,PI-ANG2,PI-ANG3,PI-ANG4) 496 : IF (PABO3 .LT. AN1345) THEN 497 : IF (PABO3 .LT. PABO1) THEN 498 : PABO1 = PABO3 499 : L2BEST = L2 500 : III1 = II2 501 : III2 = II3 502 : III3 = II4 503 : III4 = II5 504 : III5 = II1 505 : END IF 506 : END IF 507 : END IF 508 : END IF 509 : IF (AN1235 .LT. AN1345) THEN 510 : IF (AN1235 .LT. PABO1) THEN 511 : * 4EME NOUVEAU TRIANGLE POSSIBLE: 511 : CALL VALTRI (N3,N4,N5, CAL1) 512 : IF (CAL1 .GT. QUAL0) THEN 513 : PABO1 = AN1235 514 : L2BEST = L2 515 : III1 = II3 516 : III2 = II4 517 : III3 = II5 518 : III4 = II1 519 : III5 = II2 520 : END IF 521 : END IF 522 : END IF 523 : * 524 : 720 CONTINUE 525 : * END DO 526 : * 527 : 740 CONTINUE 528 : * END DO 529 : * 530 : IF (PABO1 .LT. ANGMAX) THEN 531 : * ON A TROUVE LE MOYEN DE MIEUX REPRESENTER UN ENSEMBLE 532 : * QUADRANGLE+TRIANGLE DANS UN POLYGONE DE 5 POINTS. 533 : MODIF6 = MODIF6 + 1 534 : L2 = MAX(L1,L2BEST) 535 : L1 = MIN(L1,L2BEST) 536 : NUM(1,L1) = III1 537 : NUM(2,L1) = III2 538 : NUM(3,L1) = III3 539 : NUM(4,L1) = 0 540 : NUM(1,L2) = III1 541 : NUM(2,L2) = III3 542 : NUM(3,L2) = III4 543 : NUM(4,L2) = III5 544 : L1 = L1 - 1 545 : END IF 546 : * 547 : GOTO 700 548 : END IF 549 : * 550 : IF (IIMPI .EQ. 1808) THEN 551 : WRITE (IOIMP,2010) (MODIF6 - MODIF5) 552 : 2010 FORMAT (1X,I5,' DEPLACEMENTS DE TRIANGLES.') 553 : END IF 554 : * 555 : IF ((MODIF4+MODIF6) .GT. (MODIF3+MODIF5)) GOTO 400 556 : * END DO 557 : * 558 : END 559 : 560 : 561 : 562 : 563 : 564 :
© Cast3M 2003 - All rights reserved.
Disclaimer