1 subroutine utprma ( sommet, arete1, arete2, arete3,
2 > somare, nbnoto, coonoe,
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
22 c ______________________________________________________________________
24 c UTilitaire : PRoduit Mixte - par Arete
26 c effectue promix = A1.(A2^A3)
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . sommet . e . 1 . sommet du triedre .
32 c . arete1 . e . 1 . premiere arete du triedre .
33 c . arete2 . e . 1 . premiere arete du triedre .
34 c . arete3 . e . 1 . premiere arete du triedre .
35 c . somare . e .2*nbarto. numeros des extremites d'arete .
36 c . nbnoto . e . 1 . nombre de noeuds .
37 c . coonoe . e . nbnoto . coordonnees des noeuds .
39 c . promix . s . 1 . le produit mixte brut .
40 c . promin . s . 1 . le produit mixte des vecteurs normalises .
41 c .____________________________________________________________________.
44 c 0. declarations et dimensionnement
47 c 0.1. ==> generalites
57 integer arete1, arete2, arete3
61 double precision coonoe(nbnoto,*)
62 double precision promix, promin
64 c 0.4. ==> variables locales
69 double precision daux, daux0
70 double precision v1(3), v2(3), v3(3)
71 double precision vn(3)
72 c ______________________________________________________________________
75 c 1. Les vecteurs des aretes
78 if ( somare(1,arete1).eq.sommet ) then
88 v1(iaux) = coonoe(somare(ifin,arete1),iaux)
89 > - coonoe(somare(ideb,arete1),iaux)
90 daux0 = daux0 + v1(iaux)**2
94 if ( somare(1,arete2).eq.sommet ) then
104 v2(iaux) = coonoe(somare(ifin,arete2),iaux)
105 > - coonoe(somare(ideb,arete2),iaux)
106 daux0 = daux0 + v2(iaux)**2
108 daux = daux*sqrt(daux0)
110 if ( somare(1,arete3).eq.sommet ) then
120 v3(iaux) = coonoe(somare(ifin,arete3),iaux)
121 > - coonoe(somare(ideb,arete3),iaux)
122 daux0 = daux0 + v3(iaux)**2
124 daux = daux*sqrt(daux0)
126 vn(1) = v2(2)*v3(3) - v2(3)*v3(2)
127 vn(2) = v2(3)*v3(1) - v2(1)*v3(3)
128 vn(3) = v2(1)*v3(2) - v2(2)*v3(1)
130 promix = v1(1)*vn(1) + v1(2)*vn(2) + v1(3)*vn(3)