]> SALOME platform Git repositories - modules/homard.git/blobdiff - src/tool/Utilitaire/utfaa2.F
Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utfaa2.F
diff --git a/src/tool/Utilitaire/utfaa2.F b/src/tool/Utilitaire/utfaa2.F
new file mode 100644 (file)
index 0000000..dd6acaa
--- /dev/null
@@ -0,0 +1,123 @@
+      subroutine utfaa2 ( nbtrto, nbquto,
+     >                    nbtral, nbqual,
+     >                    aretri, arequa,
+     >                    nbfaar, posifa, facare )
+c
+c ______________________________________________________________________
+c
+c                             H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c    HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c
+c    UTilitaire - voisinage FAce-Aretes - phase 2
+c    --                     --   -              -
+c ______________________________________________________________________
+c
+c       determine les faces voisines de chaque arete
+c ______________________________________________________________________
+c .        .     .        .                                            .
+c .  nom   . e/s . taille .           description                      .
+c .____________________________________________________________________.
+c . nbtrto . e   .   1    . nombre de triangles a examiner             .
+c . nbquto . e   .   1    . nombre de quadrangles a examiner           .
+c . nbtral . e   .   1    . nombre de triangles pour les allocations   .
+c . nbqual . e   .   1    . nombre de quadrangles pour les allocations .
+c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
+c . arequa . e   .nbquto*4. numeros des 4 aretes des quadrangles       .
+c . nbfaar . e   .   1    . nombre cumule de faces par arete           .
+c . posifa . e/s .0:nbaret. pointeur sur tableau facare                .
+c . facare .  s  . nbfaar . liste des faces contenant une arete        .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+      implicit none
+      save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+      integer nbtrto, nbquto, nbfaar
+      integer nbtral, nbqual
+      integer aretri(nbtral,3), arequa(nbqual,4)
+      integer posifa(0:*), facare(nbfaar)
+c
+c 0.4. ==> variables locales
+c
+      integer laface, larete
+c ______________________________________________________________________
+c
+c====
+c 1. on passe en revue chaque face et on indique qu'elle est voisine de
+c    ses aretes : on incremente le pointeur posifa(i) et on
+c    memorise la face dans facare a la place posifa(i) :
+c    . pour un triangle, c'est le numero HOMARD du triangle
+c    . pour un quadrangle, c'est l'oppose du numero HOMARD du quadrangle
+c
+c    au depart :
+c    posifa(0) = 0
+c    posifa(i) = position de la derniere voisine de l'arete i-1
+c              = nombre cumule de voisines pour les (i-1) 1eres aretes
+c
+c    a l'arrivee :
+c    posifa(0) = 0
+c    posifa(i) = position de la derniere voisine de l'arete i
+c              = nombre cumule de voisines pour les i premieres aretes
+c====
+c
+      do 11 , laface = 1 , nbtrto
+c
+         larete = aretri(laface,1)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = laface
+c
+         larete = aretri(laface,2)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = laface
+c
+         larete = aretri(laface,3)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = laface
+c
+   11 continue
+c
+      do 12 , laface = 1 , nbquto
+c
+         larete = arequa(laface,1)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = -laface
+c
+         larete = arequa(laface,2)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = -laface
+c
+         larete = arequa(laface,3)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = -laface
+c
+         larete = arequa(laface,4)
+         posifa(larete) = posifa(larete) + 1
+         facare(posifa(larete)) = -laface
+c
+   12 continue
+c
+      end