1 subroutine utvoh0 ( coosom, volume )
2 c ______________________________________________________________________
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
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
14 c HOMARD est une marque deposee d'Electricite de France
20 c ______________________________________________________________________
22 c UTilitaire : VOlume Hexaedre - 0
24 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 ______________________________________________________________________
33 c 0. declarations et dimensionnement
36 c 0.1. ==> generalites
46 double precision coosom(3,8)
47 double precision volume
49 c 0.4. ==> variables locales
53 double precision volcou
54 double precision v12(3), v13(3), v14(3), v15(3)
55 double precision v16(3), v17(3), v18(3)
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)
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)
78 call utprmi ( v18, v13, v12, volcou )
79 c write(*,*) 'volume du premier tetraedre', volcou
82 call utprmi ( v18, v12, v15, volcou )
83 c write(*,*) 'volume du deuxieme tetraedre', volcou
84 volume = volume + abs(volcou)
86 call utprmi ( v18, v15, v16, volcou )
87 c write(*,*) 'volume du troisieme tetraedre', volcou
88 volume = volume + abs(volcou)
90 call utprmi ( v18, v16, v17, volcou )
91 c write(*,*) 'volume du quatrieme tetraedre', volcou
92 volume = volume + abs(volcou)
94 call utprmi ( v18, v17, v14, volcou )
95 c write(*,*) 'volume du cinquieme tetraedre', volcou
96 volume = volume + abs(volcou)
98 call utprmi ( v18, v14, v13, volcou )
99 c write(*,*) 'volume du sixieme tetraedre', volcou
100 volume = volume + abs(volcou)
102 volume = unssix * volume