Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utb3e1.h
1 c
2 c 2.1. ==> les aretes et les sommets de cet hexaedre actif
3 c          vi(1->3) = coordonnees du sommet si
4 c
5 #ifdef _DEBUG_HOMARD_
6         if ( glop.ne.0 ) then
7         write (ulsort,90002) mess14(langue,1,typenh), lehexa
8         endif
9 #endif
10 c
11           if ( lehexa.le.nbhecf ) then
12 c
13             call utarhe ( lehexa,
14      >                    nbquto, nbhecf,
15      >                    arequa, quahex, coquhe,
16      >                    listar )
17 c
18           else
19 c
20             do 210 , iaux = 1 , 12
21               listar(iaux) = arehex(lehexa-nbhecf,iaux)
22   210       continue
23 c
24           endif
25 c
26 #ifdef _DEBUG_HOMARD_
27         if ( glop.ne.0 ) then
28         write (ulsort,90002) 'listar', (listar(iaux),iaux=1,10)
29         write (ulsort,90002) 'listar', (listar(iaux),iaux=11,12)
30         endif
31 #endif
32 c
33           call utsohe ( somare, listar, sommet )
34 c
35 #ifdef _DEBUG_HOMARD_
36         if ( glop.ne.0 ) then
37         write (ulsort,90002) 'sommet', sommet
38         endif
39 #endif
40 c
41           if ( degre.eq.2 ) then
42             do 211 , iaux = 1 , 12
43               sommet(8+iaux) = np2are(listar(iaux))
44   211       continue
45           endif
46 c
47 c 2.2. ==> le parallelepipede enveloppe
48 c
49           v1(1) = coonoe(sommet(1),1)
50           v1(2) = coonoe(sommet(1),2)
51           v1(3) = coonoe(sommet(1),3)
52 c
53           v2(1) = coonoe(sommet(2),1)
54           v2(2) = coonoe(sommet(2),2)
55           v2(3) = coonoe(sommet(2),3)
56 c
57           v3(1) = coonoe(sommet(3),1)
58           v3(2) = coonoe(sommet(3),2)
59           v3(3) = coonoe(sommet(3),3)
60 c
61           v4(1) = coonoe(sommet(4),1)
62           v4(2) = coonoe(sommet(4),2)
63           v4(3) = coonoe(sommet(4),3)
64 c
65           v5(1) = coonoe(sommet(5),1)
66           v5(2) = coonoe(sommet(5),2)
67           v5(3) = coonoe(sommet(5),3)
68 c
69           v6(1) = coonoe(sommet(6),1)
70           v6(2) = coonoe(sommet(6),2)
71           v6(3) = coonoe(sommet(6),3)
72 c
73           v7(1) = coonoe(sommet(7),1)
74           v7(2) = coonoe(sommet(7),2)
75           v7(3) = coonoe(sommet(7),3)
76 c
77           v8(1) = coonoe(sommet(8),1)
78           v8(2) = coonoe(sommet(8),2)
79           v8(3) = coonoe(sommet(8),3)
80 c
81           xmin = min(v1(1),v2(1),v3(1),v4(1),v5(1),v6(1),v7(1),v8(1))
82           xmax = max(v1(1),v2(1),v3(1),v4(1),v5(1),v6(1),v7(1),v8(1))
83           ymin = min(v1(2),v2(2),v3(2),v4(2),v5(2),v6(2),v7(2),v8(2))
84           ymax = max(v1(2),v2(2),v3(2),v4(2),v5(2),v6(2),v7(2),v8(2))
85           zmin = min(v1(3),v2(3),v3(3),v4(3),v5(3),v6(3),v7(3),v8(3))
86           zmax = max(v1(3),v2(3),v3(3),v4(3),v5(3),v6(3),v7(3),v8(3))
87 c
88           logaux(1) = .true.
89           logaux(2) = .true.
90           logaux(3) = .true.
91           logaux(4) = .true.
92           logaux(5) = .true.
93           logaux(6) = .true.
94 c
95 c 2.3. ==> on passe en revue tous les autres sommets qui ne sont pas des
96 c          sommets isoles.
97 c       . on ne s'interesse qu'a ceux qui sont contenus dans le
98 c         parallelepide enveloppe de l'hexaedre
99 c       . ensuite, on elimine les noeuds coincidents
100 c       . on recherche si le noeud est a l'interieur de l'hexaedre
101 c         cela est vrai si le noeud et un sommet sont du meme cote du
102 c         plan forme par les quatre autres sommets. pour cela, on
103 c         regarde si les produits mixtes (ab,ac,ad) et (ab,ac,an) sont
104 c         de meme signe pour les quatre permutations circulaires
105 c         sur (a,b,c,d)
106 c       . on elimine les huit noeuds de l'hexaedre
107 c
108 c         Remarque hyper importante : il ne faut faire les affectations
109 c         de vn(2) et vn(3) que si c'est utile car elles coutent
110 c         tres cheres (30% du temps total !)
111 c         Remarque hyper importante : il vaut mieux mettre en dernier
112 c         le test sur l'identite de lenoeu avec les noeuds de l'hexaedre
113 c         car on gagne aussi 40% !
114 c         En revanche, inutile de deplier davantage les tests
115 c
116 cgn      call gtfims (93)