1 subroutine utvga1 ( nbnoto, nbarto, nvosom,
3 c ______________________________________________________________________
7 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
9 c Version originale enregistree le 18 juin 1996 sous le numero 96036
10 c aupres des huissiers de justice Simart et Lavoir a Clamart
11 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
12 c aupres des huissiers de justice
13 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
15 c HOMARD est une marque deposee d'Electricite de France
21 c ______________________________________________________________________
23 c UTilitaire - voisinage ARetes-Noeuds - phase 1
25 c ______________________________________________________________________
27 c determine le nombre d'aretes voisines de chaque sommet
28 c les eventuels noeuds milieux d'arete sont ignores.
29 c ______________________________________________________________________
31 c . nom . e/s . taille . description .
32 c .____________________________________________________________________.
33 c . nbnoto . e . 1 . nombre de noeuds total .
34 c . nbarto . e . 1 . nombre d'aretes total .
35 c . nvosom . s . 1 . nombre cumule d'aretes voisines de noeud .
36 c . somare . e .2*nbarto. numeros des extremites d'arete .
37 c . povoso . s .0:nbnoto. pointeur des voisins par sommet .
38 c ______________________________________________________________________
41 c 0. declarations et dimensionnement
44 c 0.1. ==> generalites
53 integer nbnoto, nbarto, nvosom
55 integer somare(2,nbarto)
56 integer povoso(0:nbnoto)
58 c 0.4. ==> variables locales
60 integer lenoeu, larete
61 c ______________________________________________________________________
64 c 1. on passe en revue chaque arete et on incremente de 1
65 c le nombre de voisins de ses sommets
69 cgn print *,'nbnoto = ',nbnoto
70 cgn print *,'nbarto = ',nbarto
72 do 11 , lenoeu = 0 , nbnoto
76 do 12 , larete = 1 , nbarto
78 cgn print *,'larete = ', larete
79 cgn print *,'sommets = ', somare(1,larete), somare(2,larete)
82 povoso(somare(1,larete)) = povoso(somare(1,larete)) + 1
83 povoso(somare(2,larete)) = povoso(somare(2,larete)) + 1
88 c 2. on initialise le pointeur dans le tableau des voisins
92 c povoso(i) = nombre d'aretes voisines du noeud i
96 c povoso(i) = position de la derniere voisine du noeud i-1
97 c = nombre cumule de voisines pour les (i-1) 1ers noeuds
99 c a la fin de cette partie, pour les noeuds au milieu des aretes
100 c le pointeur est le meme que celui du noeud qui le suit.
103 do 21 , lenoeu = 1 , nbnoto
104 #ifdef _DEBUG_HOMARD_
105 cgn print *,'povoso(',lenoeu,') = ',povoso(lenoeu)
107 povoso(lenoeu) = povoso(lenoeu-1) + povoso(lenoeu)
110 nvosom = povoso(nbnoto)
112 do 22 , lenoeu = nbnoto , 1 , -1
113 povoso(lenoeu) = povoso(lenoeu-1)
114 #ifdef _DEBUG_HOMARD_
115 cgn print *,'povoso(',lenoeu,') = ',povoso(lenoeu)