Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utfaa1.F
1       subroutine utfaa1 ( nbarto, nbtrto, nbquto,
2      >                    nbaral, nbtral, nbqual,
3      >                    aretri, arequa,
4      >                    nbfaar, posifa )
5 c ______________________________________________________________________
6 c
7 c                             H O M A R D
8 c
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c
17 c    HOMARD est une marque deposee d'Electricite de France
18 c
19 c Copyright EDF 1996
20 c Copyright EDF 1998
21 c Copyright EDF 2002
22 c Copyright EDF 2020
23 c ______________________________________________________________________
24 c
25 c    UTilitaire - voisinage FAce-Aretes - phase 1
26 c    --                     --   -              -
27 c ______________________________________________________________________
28 c
29 c       determine le nombre de faces voisines de chaque arete
30 c ______________________________________________________________________
31 c .        .     .        .                                            .
32 c .  nom   . e/s . taille .           description                      .
33 c .____________________________________________________________________.
34 c . nbarto . e   .   1    . nombre d'aretes a examiner                 .
35 c . nbtrto . e   .   1    . nombre de triangles a examiner             .
36 c . nbquto . e   .   1    . nombre de quadrangles a examiner           .
37 c . nbaral . e   .   1    . nombre d'aretes pour les allocations       .
38 c . nbtral . e   .   1    . nombre de triangles pour les allocations   .
39 c . nbqual . e   .   1    . nombre de quadrangles pour les allocations .
40 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
41 c . arequa . e   .nbquto*4. numeros des 4 aretes des quadrangles       .
42 c . nbfaar .  s  .   1    . nombre cumule de faces par arete           .
43 c . posifa .  s  .0:nbarto. pointeur sur tableau facare                .
44 c ______________________________________________________________________
45 c
46 c====
47 c 0. declarations et dimensionnement
48 c====
49 c
50 c 0.1. ==> generalites
51 c
52       implicit none
53       save
54 c
55 c 0.2. ==> communs
56 c
57 c 0.3. ==> arguments
58 c
59       integer nbarto, nbtrto, nbquto, nbfaar
60       integer nbaral, nbtral, nbqual
61       integer aretri(nbtral,3), arequa(nbqual,4)
62       integer posifa(0:nbaral)
63 c
64 c 0.4. ==> variables locales
65 c
66       integer laface, larete
67 c ______________________________________________________________________
68 c
69 c====
70 c 1. on passe en revue chaque face et on incremente de 1 le nombre de
71 c    faces voisines de ses 3 aretes
72 c
73 c    au depart :
74 c    posifa(0) = 0
75 c    posifa(i) = 0
76 c
77 c    a l'arrivee :
78 c    posifa(0) = 0
79 c    posifa(i) = nombre de faces voisines de l'arete i
80 c====
81 c
82       do 11 , larete = 0 , nbarto
83         posifa(larete) = 0
84    11 continue
85 c
86       do 12 , laface = 1 , nbtrto
87         posifa(aretri(laface,1)) = posifa(aretri(laface,1)) + 1
88         posifa(aretri(laface,2)) = posifa(aretri(laface,2)) + 1
89         posifa(aretri(laface,3)) = posifa(aretri(laface,3)) + 1
90    12 continue
91 c
92       do 13 , laface = 1 , nbquto
93         posifa(arequa(laface,1)) = posifa(arequa(laface,1)) + 1
94         posifa(arequa(laface,2)) = posifa(arequa(laface,2)) + 1
95         posifa(arequa(laface,3)) = posifa(arequa(laface,3)) + 1
96         posifa(arequa(laface,4)) = posifa(arequa(laface,4)) + 1
97    13 continue
98 c
99 c====
100 c 2. on initialise le pointeur dans le tableau des voisins
101 c
102 c    au depart :
103 c    posifa(0) = 0
104 c    posifa(i) = nombre de faces voisines de l'arete i
105 c
106 c    a l'arrivee :
107 c    posifa(0) = 0
108 c    posifa(i) = position de la derniere voisine de l'arete i-1
109 c              = nombre cumule de voisines pour les (i-1) 1eres aretes
110 c====
111 c
112       do 21 , larete = 1 , nbarto
113         posifa(larete) = posifa(larete) + posifa(larete-1)
114    21 continue
115 c
116       nbfaar = posifa(nbarto)
117 c
118       do 22 , larete = nbarto , 1 , -1
119         posifa(larete) = posifa(larete-1)
120    22 continue
121 c
122       end