Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utdtet.F
1       subroutine utdtet ( letetr, diamet,
2      >                    coonoe, somare, aretri,
3      >                    tritet, cotrte, aretet )
4 c ______________________________________________________________________
5 c
6 c                             H O M A R D
7 c
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
9 c
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
15 c
16 c    HOMARD est une marque deposee d'Electricite de France
17 c
18 c Copyright EDF 1996
19 c Copyright EDF 1998
20 c Copyright EDF 2002
21 c Copyright EDF 2020
22 c ______________________________________________________________________
23 c
24 c     UTilitaire : Diametre d'un TETraedre
25 c     --           -             ---
26 c ______________________________________________________________________
27 c
28 c    Le diametre d'une maille est la longueur du plus grand segment que
29 c    l'on peut tracer a l'interieur de cette maille.
30 c    Pour un tetraedre, le diametre est la longueur maximale des aretes
31 c ______________________________________________________________________
32 c .        .     .        .                                            .
33 c .  nom   . e/s . taille .           description                      .
34 c .____________________________________________________________________.
35 c . letetr . e   .  1     . numero du tetraedre a examiner             .
36 c . diamet .  s  .  1     . qualite                                    .
37 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
38 c .        .     . * sdim .                                            .
39 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
40 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
41 c . tritet . e   .nbtecf*4. numeros des 4 triangles des tetraedres     .
42 c . cotrte . e   .nbtecf*4. code des 4 triangles des tetraedres        .
43 c . aretet . e   .nbteca*6. numeros des 6 aretes des tetraedres        .
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 #include "nombno.h"
58 #include "nombar.h"
59 #include "nombtr.h"
60 #include "nombte.h"
61 c
62 c 0.3. ==> arguments
63 c
64       double precision diamet, coonoe(nbnoto,3)
65 c
66       integer letetr
67       integer somare(2,nbarto)
68       integer aretri(nbtrto,3)
69       integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
70 c
71 c 0.4. ==> variables locales
72 c
73       integer listar(6), listso(4)
74       integer iaux
75 c
76       double precision ar1, ar2, ar3, ar4, ar5, ar6
77       double precision var(3)
78 cc
79 c 0.5. ==> initialisations
80 c
81 c ______________________________________________________________________
82 c
83 c====
84 c 1. les aretes et les sommets de ce tetraedre
85 c====
86 c
87       call utaste ( letetr,
88      >              nbtrto, nbtecf, nbteca,
89      >              somare, aretri,
90      >              tritet, cotrte, aretet,
91      >              listar, listso )
92 c
93 c====
94 c 2. les carres des longueurs des 6 aretes
95 c====
96 c
97       var(1) = coonoe(listso(2),1) - coonoe(listso(1),1)
98       var(2) = coonoe(listso(2),2) - coonoe(listso(1),2)
99       var(3) = coonoe(listso(2),3) - coonoe(listso(1),3)
100       ar1 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
101 c
102       var(1) = coonoe(listso(3),1) - coonoe(listso(1),1)
103       var(2) = coonoe(listso(3),2) - coonoe(listso(1),2)
104       var(3) = coonoe(listso(3),3) - coonoe(listso(1),3)
105       ar2 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
106 c
107       var(1) = coonoe(listso(4),1) - coonoe(listso(1),1)
108       var(2) = coonoe(listso(4),2) - coonoe(listso(1),2)
109       var(3) = coonoe(listso(4),3) - coonoe(listso(1),3)
110       ar3 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
111 c
112       var(1) = coonoe(listso(3),1) - coonoe(listso(2),1)
113       var(2) = coonoe(listso(3),2) - coonoe(listso(2),2)
114       var(3) = coonoe(listso(3),3) - coonoe(listso(2),3)
115       ar4 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
116 c
117       var(1) = coonoe(listso(4),1) - coonoe(listso(2),1)
118       var(2) = coonoe(listso(4),2) - coonoe(listso(2),2)
119       var(3) = coonoe(listso(4),3) - coonoe(listso(2),3)
120       ar5 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
121 c
122       var(1) = coonoe(listso(4),1) - coonoe(listso(3),1)
123       var(2) = coonoe(listso(4),2) - coonoe(listso(3),2)
124       var(3) = coonoe(listso(4),3) - coonoe(listso(3),3)
125       ar6 = var(1)*var(1) + var(2)*var(2) + var(3)*var(3)
126 c
127 c====
128 c 3. diametre
129 c    on ne prend la racine carre qu'ici pour economiser du temps calcul
130 c====
131 c
132       diamet = max ( ar1, ar2, ar3, ar4, ar5, ar6 )
133       diamet = sqrt(diamet)
134 cgn      print *, ar1, ar2, ar3, ar4, ar5, ar6, ' ==> ', diamet
135 c
136       end