--- /dev/null
+ subroutine utntri ( letria, normal,
+ > 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 : Normale d'un TRIangle
+c -- - ---
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . letria . e . 1 . numero du triangle a examiner .
+c . normal . s . 3 . vecteur de la normale .
+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 normal(3), coonoe(nbnoto,sdim)
+c
+ integer somare(2,nbarto), aretri(nbtrto,3)
+c
+ integer letria
+c
+c 0.4. ==> variables locales
+c
+ integer a1, a2
+c
+ double precision aret1(3), aret2(3)
+c
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1. les aretes
+c====
+c
+ a1 = aretri(letria,1)
+ a2 = aretri(letria,2)
+c
+ aret1(1) = coonoe(somare(2,a1),1) - coonoe(somare(1,a1),1)
+ aret1(2) = coonoe(somare(2,a1),2) - coonoe(somare(1,a1),2)
+ aret1(3) = coonoe(somare(2,a1),3) - coonoe(somare(1,a1),3)
+c
+ aret2(1) = coonoe(somare(2,a2),1) - coonoe(somare(1,a2),1)
+ aret2(2) = coonoe(somare(2,a2),2) - coonoe(somare(1,a2),2)
+ aret2(3) = coonoe(somare(2,a2),3) - coonoe(somare(1,a2),3)
+c
+c====
+c 2. normal = produit vectoriel
+c====
+c
+ normal(1) = aret2(2)*aret1(3) - aret2(3)*aret1(2)
+ normal(2) = aret2(3)*aret1(1) - aret2(1)*aret1(3)
+ normal(3) = aret2(1)*aret1(2) - aret2(2)*aret1(1)
+c
+ aret1(1) = sqrt ( normal(1)*normal(1) +
+ > normal(2)*normal(2) +
+ > normal(3)*normal(3) )
+c
+ normal(1) = normal(1)/aret1(1)
+ normal(2) = normal(2)/aret1(1)
+ normal(3) = normal(3)/aret1(1)
+c
+ end