]> SALOME platform Git repositories - modules/homard.git/blobdiff - src/tool/Utilitaire/utdtri.F
Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utdtri.F
diff --git a/src/tool/Utilitaire/utdtri.F b/src/tool/Utilitaire/utdtri.F
new file mode 100644 (file)
index 0000000..f6758f5
--- /dev/null
@@ -0,0 +1,134 @@
+      subroutine utdtri ( letria, diamet,
+     >                    coonoe, somare, aretri )
+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 : Diametre d'un TRIangle
+c     --           -             ---
+c ______________________________________________________________________
+c
+c    Le diametre d'une maille est la longueur du plus grand segment que
+c    l'on peut tracer a l'interieur de cette maille.
+c    Pour un triangle, le diametre est la longueur maximale des aretes
+c ______________________________________________________________________
+c .        .     .        .                                            .
+c .  nom   . e/s . taille .           description                      .
+c .____________________________________________________________________.
+c . letria . e   .  1     . numero du triangle a examiner              .
+c . diamet .  s  .  1     . diametre                                   .
+c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
+c .        .     . * sdim .                                            .
+c . somare . e   .2*nbarto. numeros des extremites d'arete             .
+c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
+c .____________________________________________________________________.
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+      implicit none
+      save
+c
+c 0.2. ==> communs
+c
+#include "nombno.h"
+#include "nombar.h"
+#include "nombtr.h"
+#include "envca1.h"
+c
+c 0.3. ==> arguments
+c
+      double precision diamet, coonoe(nbnoto,sdim)
+c
+      integer somare(2,nbarto), aretri(nbtrto,3)
+c
+      integer letria
+c
+c 0.4. ==> variables locales
+c
+      integer a1, a2, a3
+c
+      double precision ar1, ar2, ar3
+      double precision var(3)
+c
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1. les aretes
+c====
+c
+      a1 = aretri(letria,1)
+      a2 = aretri(letria,2)
+      a3 = aretri(letria,3)
+c
+c====
+c 2. les carres des longueurs des 3 aretes
+c====
+c
+c 2.1. ==> en dimension 2
+c
+      if ( sdim.eq.2 ) then
+c
+        var(1) = coonoe(somare(2,a1),1) - coonoe(somare(1,a1),1)
+        var(2) = coonoe(somare(2,a1),2) - coonoe(somare(1,a1),2)
+        ar1 = var(1)*var(1) + var(2)*var(2)
+c
+        var(1) = coonoe(somare(2,a2),1) - coonoe(somare(1,a2),1)
+        var(2) = coonoe(somare(2,a2),2) - coonoe(somare(1,a2),2)
+        ar2 = var(1)*var(1) + var(2)*var(2)
+c
+        var(1) = coonoe(somare(2,a3),1) - coonoe(somare(1,a3),1)
+        var(2) = coonoe(somare(2,a3),2) - coonoe(somare(1,a3),2)
+        ar3 = var(1)*var(1) + var(2)*var(2)
+c
+c 2.2. ==> en dimension 3
+c
+      else
+c
+        var(1) = coonoe(somare(2,a1),1) - coonoe(somare(1,a1),1)
+        var(2) = coonoe(somare(2,a1),2) - coonoe(somare(1,a1),2)
+        var(3) = coonoe(somare(2,a1),3) - coonoe(somare(1,a1),3)
+        ar1 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
+c
+        var(1) = coonoe(somare(2,a2),1) - coonoe(somare(1,a2),1)
+        var(2) = coonoe(somare(2,a2),2) - coonoe(somare(1,a2),2)
+        var(3) = coonoe(somare(2,a2),3) - coonoe(somare(1,a2),3)
+        ar2 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
+c
+        var(1) = coonoe(somare(2,a3),1) - coonoe(somare(1,a3),1)
+        var(2) = coonoe(somare(2,a3),2) - coonoe(somare(1,a3),2)
+        var(3) = coonoe(somare(2,a3),3) - coonoe(somare(1,a3),3)
+        ar3 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
+c
+      endif
+c
+c====
+c 3. diametre
+c    on ne prend la racine carre qu'ici pour economiser du temps calcul
+c====
+c
+      diamet = max ( ar1, ar2, ar3 )
+      diamet = sqrt(diamet)
+cgn      print *, ar1, ar2, ar3, ' ==> ', diamet
+c
+      end