1 : C MINDEG SOURCE CHAT 05/01/13 01:45:16 5004 2 : C************************************************************************** 3 : C************************************************************************** 4 : C************************************************************************** 5 : C***************************** ****************************** 6 : C************************* *************************** 7 : c******************* MINIDEG ********************* 8 : c************************** *************************** 9 : C**************************** ****************************** 10 : C************************************************************************** 11 : C************************************************************************** 12 : C************************************************************************** 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : SUBROUTINE MINDEG(NPVOIS,NVOIS,NBENS,IORDRE) 21 : C***************************************************************************** 22 : 23 : 24 : C Cette procedure permet: 25 : C - tout d'abord, de renumeroter les noeuds a partir 26 : C du minimum degre. 27 : C - ensuite,a partir de cette nouvelle renumerotation,d'obtenir 28 : C une matrice par blocs par le biais de la methode multifrontale. 29 : 30 : 31 : C domaine d'etude. 32 : C*********************** 33 : 34 : IMPLICIT INTEGER(I-N) 35 : SEGMENT NPVOIS(0),NVOIS(0) 36 : INTEGER NBENS 37 : 38 : SEGMENT MPVOIS(NBENS*2),MVOIS(0) 39 : C MVOIS contient pour chaque noeud: 40 : C tous les voisins de noeud contenus dans NVOIS. 41 : C des nouveaux voisins qui apparaissent lors de l'elimination 42 : C d'un voisin (appartenant a MVOIS) de noeud. 43 : C le nombre de voisins total du noeud X= MPVOIS(X,2)-MPVOIS(X,1) 44 : 45 : SEGMENT NOERES(NBENS+1) 46 : C NOERES=tableau des noeuds non elimines. 47 : C NOERES(1)=dimension de NOERES 48 : 49 : SEGMENT IORDRE(NBENS*2) 50 : 51 : INTEGER COMPT,RACINE,NOEUD 52 : SEGMENT IFILS(NBENS),IFRERE(NBENS) 53 : C RACINE,IFILS,IFRERE servent a la confection du graphe de 54 : C renumerotation. 55 : 56 : 57 : 58 : 59 : 60 : 61 : C initialisation : 62 : C************************ 63 : SEGINI NOERES,MPVOIS,MVOIS,IORDRE 64 : DO 10 I=1,NBENS 65 : NOERES(I+1)=I 66 : MPVOIS(I)=NPVOIS(I) 67 : IORDRE(I)=0 68 : IORDRE(I+NBENS)=0 69 : MPVOIS(I+NBENS)=NPVOIS(I+NBENS) 70 : DO 20 J=NPVOIS(I),NPVOIS(I+NBENS) 71 : MVOIS(**)=NVOIS(J) 72 : 20 CONTINUE 73 : 10 CONTINUE 74 : NOERES(1)=NBENS 75 : C tous les noeuds sont des noeuds restants. 76 : COMPT=0 77 : C le compteur est initialise a 0. 78 : 79 : 80 : C Boucle principale : 81 : C************************** 82 : 83 : 100 IF (NOERES(1).NE.0) THEN 84 : C si le nombre de noeuds restants n'est pas nul, 85 : 85 : CALL CHDEG(NPVOIS,NVOIS,NOERES,NOEUD,NBENS) 86 : C on cherche alors le NOEUD de degre minimum. 87 : 87 : CALL FUSION(NPVOIS,NVOIS,NOEUD,NBENS) 88 : C on elimine ce NOEUD de la gestion de donnees de 89 : C ses voisins . 90 : C on rajoute a la gestion de donnees des voisins de NOEUD 91 : C tous les voisins de NOEUD qui ne leur sont pas deja 92 : C voisins et differents d'eux-memes. 93 : C dans MGD, on ne fait que rajouter;on n'elimine pas. 93 : C CALL MFUSIO(MPVOIS,MVOIS,NOEUD,NPVOIS,NVOIS,NBENS) 94 : 94 : CALL DELIMI(NOEUD,NOERES) 95 : C on elimine NOEUD de NOERES. 96 : 97 : COMPT=COMPT+1 98 : C COMPT correspond au nombre de noeuds elimines. 99 : 100 : 101 : IORDRE(NOEUD+NBENS)=COMPT 102 : IORDRE(COMPT)=NOEUD 103 : C IORDRE(NOEUD+NBENS)=ordre d'elimination de noeud. 104 : C = nouvelle numerotation. 105 : C IORDRE(NOEUD)=ancienne numerotation. 106 : 107 : GOTO 100 108 : ENDIF 109 : 110 : SEGINI IFILS,IFRERE 111 : 111 : CALL IFILSF(MPVOIS,MVOIS,IORDRE,COMPT,IFILS, 112 : & IFRERE,RACINE,NBENS) 113 : C cree les liens de parente entre noeuds. 114 : 115 : SEGSUP MPVOIS,MVOIS 116 : C suppression des segments inutiles. 117 : 117 : CALL NUMO(IFILS,IFRERE,RACINE,IORDRE,NBENS) 118 : C renumerote les noeuds a partir des liens de parente. 119 : 120 : SEGSUP NOERES,IFILS,IFRERE 121 : C suppression des segments. 122 : 123 : RETURN 124 : END 125 :
© Cast3M 2003 - All rights reserved.
Disclaimer