Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utfaa2.F
1       subroutine utfaa2 ( nbtrto, nbquto,
2      >                    nbtral, nbqual,
3      >                    aretri, arequa,
4      >                    nbfaar, posifa, facare )
5 c
6 c ______________________________________________________________________
7 c
8 c                             H O M A R D
9 c
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c
18 c    HOMARD est une marque deposee d'Electricite de France
19 c
20 c Copyright EDF 1996
21 c Copyright EDF 1998
22 c Copyright EDF 2002
23 c Copyright EDF 2020
24 c ______________________________________________________________________
25 c
26 c    UTilitaire - voisinage FAce-Aretes - phase 2
27 c    --                     --   -              -
28 c ______________________________________________________________________
29 c
30 c       determine les faces voisines de chaque arete
31 c ______________________________________________________________________
32 c .        .     .        .                                            .
33 c .  nom   . e/s . taille .           description                      .
34 c .____________________________________________________________________.
35 c . nbtrto . e   .   1    . nombre de triangles a examiner             .
36 c . nbquto . e   .   1    . nombre de quadrangles a examiner           .
37 c . nbtral . e   .   1    . nombre de triangles pour les allocations   .
38 c . nbqual . e   .   1    . nombre de quadrangles pour les allocations .
39 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
40 c . arequa . e   .nbquto*4. numeros des 4 aretes des quadrangles       .
41 c . nbfaar . e   .   1    . nombre cumule de faces par arete           .
42 c . posifa . e/s .0:nbaret. pointeur sur tableau facare                .
43 c . facare .  s  . nbfaar . liste des faces contenant une arete        .
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 nbtrto, nbquto, nbfaar
60       integer nbtral, nbqual
61       integer aretri(nbtral,3), arequa(nbqual,4)
62       integer posifa(0:*), facare(nbfaar)
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 indique qu'elle est voisine de
71 c    ses aretes : on incremente le pointeur posifa(i) et on
72 c    memorise la face dans facare a la place posifa(i) :
73 c    . pour un triangle, c'est le numero HOMARD du triangle
74 c    . pour un quadrangle, c'est l'oppose du numero HOMARD du quadrangle
75 c
76 c    au depart :
77 c    posifa(0) = 0
78 c    posifa(i) = position de la derniere voisine de l'arete i-1
79 c              = nombre cumule de voisines pour les (i-1) 1eres aretes
80 c
81 c    a l'arrivee :
82 c    posifa(0) = 0
83 c    posifa(i) = position de la derniere voisine de l'arete i
84 c              = nombre cumule de voisines pour les i premieres aretes
85 c====
86 c
87       do 11 , laface = 1 , nbtrto
88 c
89          larete = aretri(laface,1)
90          posifa(larete) = posifa(larete) + 1
91          facare(posifa(larete)) = laface
92 c
93          larete = aretri(laface,2)
94          posifa(larete) = posifa(larete) + 1
95          facare(posifa(larete)) = laface
96 c
97          larete = aretri(laface,3)
98          posifa(larete) = posifa(larete) + 1
99          facare(posifa(larete)) = laface
100 c
101    11 continue
102 c
103       do 12 , laface = 1 , nbquto
104 c
105          larete = arequa(laface,1)
106          posifa(larete) = posifa(larete) + 1
107          facare(posifa(larete)) = -laface
108 c
109          larete = arequa(laface,2)
110          posifa(larete) = posifa(larete) + 1
111          facare(posifa(larete)) = -laface
112 c
113          larete = arequa(laface,3)
114          posifa(larete) = posifa(larete) + 1
115          facare(posifa(larete)) = -laface
116 c
117          larete = arequa(laface,4)
118          posifa(larete) = posifa(larete) + 1
119          facare(posifa(larete)) = -laface
120 c
121    12 continue
122 c
123       end