Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utvoh0.F
1       subroutine utvoh0 ( coosom, volume )
2 c ______________________________________________________________________
3 c
4 c                             H O M A R D
5 c
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
7 c
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
13 c
14 c    HOMARD est une marque deposee d'Electricite de France
15 c
16 c Copyright EDF 1996
17 c Copyright EDF 1998
18 c Copyright EDF 2002
19 c Copyright EDF 2020
20 c ______________________________________________________________________
21 c
22 c   UTilitaire : VOlume Hexaedre - 0
23 c   --           --     -          -
24 c ______________________________________________________________________
25 c .        .     .        .                                            .
26 c .  nom   . e/s . taille .           description                      .
27 c .____________________________________________________________________.
28 c . coosom . e   .   3*8  . coordonnees des noeuds                     .
29 c . volume .  s  .    1   . Volume de l'hexaedre                       .
30 c ______________________________________________________________________
31 c
32 c====
33 c 0. declarations et dimensionnement
34 c====
35 c
36 c 0.1. ==> generalites
37 c
38       implicit none
39       save
40 c
41 #include "fracte.h"
42 c
43 c 0.2. ==> communs
44 c 0.3. ==> arguments
45 c
46       double precision coosom(3,8)
47       double precision volume
48 c
49 c 0.4. ==> variables locales
50 c
51       integer iaux
52 c
53       double precision volcou
54       double precision v12(3), v13(3), v14(3), v15(3)
55       double precision v16(3), v17(3), v18(3)
56 c
57 c====
58 c 1. le volume de l'hexaedre est la somme des volumes des 6 tetraedres
59 c    que l'on obtient en coupant les quadrangles en 2 triangles
60 c    on rappelle que le volume d'un tetraedre est egale au sixieme
61 c    de la valeur absolue du produit mixte de trois des vecteurs
62 c    representant les aretes.
63 c         vn = v1xv2 --> volume = 1/6 * produit mixte (v1,v2,v3)
64 c====
65 c
66       do 11 , iaux = 1 , 3
67 c
68         v12(iaux) = coosom(iaux,2) - coosom(iaux,1)
69         v13(iaux) = coosom(iaux,3) - coosom(iaux,1)
70         v14(iaux) = coosom(iaux,4) - coosom(iaux,1)
71         v15(iaux) = coosom(iaux,5) - coosom(iaux,1)
72         v16(iaux) = coosom(iaux,6) - coosom(iaux,1)
73         v17(iaux) = coosom(iaux,7) - coosom(iaux,1)
74         v18(iaux) = coosom(iaux,8) - coosom(iaux,1)
75 c
76    11 continue
77 c
78       call utprmi ( v18, v13, v12, volcou )
79 c      write(*,*) 'volume du premier tetraedre', volcou
80       volume = abs(volcou)
81 c
82       call utprmi ( v18, v12, v15, volcou )
83 c      write(*,*) 'volume du deuxieme tetraedre', volcou
84       volume = volume + abs(volcou)
85 c
86       call utprmi ( v18, v15, v16, volcou )
87 c      write(*,*) 'volume du troisieme tetraedre', volcou
88       volume = volume + abs(volcou)
89 c
90       call utprmi ( v18, v16, v17, volcou )
91 c      write(*,*) 'volume du quatrieme tetraedre', volcou
92       volume = volume + abs(volcou)
93 c
94       call utprmi ( v18, v17, v14, volcou )
95 c      write(*,*) 'volume du cinquieme tetraedre', volcou
96       volume = volume + abs(volcou)
97 c
98       call utprmi ( v18, v14, v13, volcou )
99 c      write(*,*) 'volume du sixieme tetraedre', volcou
100       volume = volume + abs(volcou)
101 c
102       volume = unssix * volume
103 c
104       end