Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utvga1.F
1       subroutine utvga1 ( nbnoto, nbarto, nvosom,
2      >                    somare, povoso )
3 c ______________________________________________________________________
4 c
5 c                             H O M A R D
6 c
7 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c
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
14 c
15 c    HOMARD est une marque deposee d'Electricite de France
16 c
17 c Copyright EDF 1996
18 c Copyright EDF 1998
19 c Copyright EDF 2002
20 c Copyright EDF 2020
21 c ______________________________________________________________________
22 c
23 c    UTilitaire - voisinage ARetes-Noeuds - phase 1
24 c    --                     --     -              -
25 c ______________________________________________________________________
26 c
27 c       determine le nombre d'aretes voisines de chaque sommet
28 c       les eventuels noeuds milieux d'arete sont ignores.
29 c ______________________________________________________________________
30 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 ______________________________________________________________________
39 c
40 c====
41 c 0. declarations et dimensionnement
42 c====
43 c
44 c 0.1. ==> generalites
45 c
46       implicit none
47       save
48 c
49 c 0.2. ==> communs
50 c
51 c 0.3. ==> arguments
52 c
53       integer nbnoto, nbarto, nvosom
54 c
55       integer somare(2,nbarto)
56       integer povoso(0:nbnoto)
57 c
58 c 0.4. ==> variables locales
59 c
60       integer lenoeu, larete
61 c ______________________________________________________________________
62 c
63 c====
64 c 1. on passe en revue chaque arete et on incremente de 1
65 c    le nombre de voisins de ses sommets
66 c====
67 c
68 #ifdef _DEBUG_HOMARD_
69 cgn        print *,'nbnoto = ',nbnoto
70 cgn        print *,'nbarto = ',nbarto
71 #endif
72       do 11 , lenoeu = 0 , nbnoto
73          povoso(lenoeu) = 0
74    11 continue
75 c
76       do 12 , larete = 1 , nbarto
77 #ifdef _DEBUG_HOMARD_
78 cgn        print *,'larete = ', larete
79 cgn        print *,'sommets = ', somare(1,larete), somare(2,larete)
80 #endif
81 c
82         povoso(somare(1,larete)) = povoso(somare(1,larete)) + 1
83         povoso(somare(2,larete)) = povoso(somare(2,larete)) + 1
84 c
85    12 continue
86 c
87 c====
88 c 2. on initialise le pointeur dans le tableau des voisins
89 c
90 c    au depart :
91 c    povoso(0) = 0
92 c    povoso(i) = nombre d'aretes voisines du noeud i
93 c
94 c    a l'arrivee :
95 c    povoso(0) = 0
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
98 c
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.
101 c====
102 c
103       do 21 , lenoeu = 1 , nbnoto
104 #ifdef _DEBUG_HOMARD_
105 cgn        print *,'povoso(',lenoeu,') = ',povoso(lenoeu)
106 #endif
107          povoso(lenoeu) = povoso(lenoeu-1) + povoso(lenoeu)
108    21 continue
109 c
110       nvosom = povoso(nbnoto)
111 c
112       do 22 , lenoeu = nbnoto , 1 , -1
113          povoso(lenoeu) = povoso(lenoeu-1)
114 #ifdef _DEBUG_HOMARD_
115 cgn        print *,'povoso(',lenoeu,') = ',povoso(lenoeu)
116 #endif
117    22 continue
118 c
119       end