]> SALOME platform Git repositories - modules/homard.git/blobdiff - src/tool/Utilitaire/utvoh0.F
Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utvoh0.F
diff --git a/src/tool/Utilitaire/utvoh0.F b/src/tool/Utilitaire/utvoh0.F
new file mode 100644 (file)
index 0000000..28384b9
--- /dev/null
@@ -0,0 +1,104 @@
+      subroutine utvoh0 ( coosom, volume )
+c ______________________________________________________________________
+c
+c                             H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c    HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c
+c   UTilitaire : VOlume Hexaedre - 0
+c   --           --     -          -
+c ______________________________________________________________________
+c .        .     .        .                                            .
+c .  nom   . e/s . taille .           description                      .
+c .____________________________________________________________________.
+c . coosom . e   .   3*8  . coordonnees des noeuds                     .
+c . volume .  s  .    1   . Volume de l'hexaedre                       .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+      implicit none
+      save
+c
+#include "fracte.h"
+c
+c 0.2. ==> communs
+c 0.3. ==> arguments
+c
+      double precision coosom(3,8)
+      double precision volume
+c
+c 0.4. ==> variables locales
+c
+      integer iaux
+c
+      double precision volcou
+      double precision v12(3), v13(3), v14(3), v15(3)
+      double precision v16(3), v17(3), v18(3)
+c
+c====
+c 1. le volume de l'hexaedre est la somme des volumes des 6 tetraedres
+c    que l'on obtient en coupant les quadrangles en 2 triangles
+c    on rappelle que le volume d'un tetraedre est egale au sixieme
+c    de la valeur absolue du produit mixte de trois des vecteurs
+c    representant les aretes.
+c         vn = v1xv2 --> volume = 1/6 * produit mixte (v1,v2,v3)
+c====
+c
+      do 11 , iaux = 1 , 3
+c
+        v12(iaux) = coosom(iaux,2) - coosom(iaux,1)
+        v13(iaux) = coosom(iaux,3) - coosom(iaux,1)
+        v14(iaux) = coosom(iaux,4) - coosom(iaux,1)
+        v15(iaux) = coosom(iaux,5) - coosom(iaux,1)
+        v16(iaux) = coosom(iaux,6) - coosom(iaux,1)
+        v17(iaux) = coosom(iaux,7) - coosom(iaux,1)
+        v18(iaux) = coosom(iaux,8) - coosom(iaux,1)
+c
+   11 continue
+c
+      call utprmi ( v18, v13, v12, volcou )
+c      write(*,*) 'volume du premier tetraedre', volcou
+      volume = abs(volcou)
+c
+      call utprmi ( v18, v12, v15, volcou )
+c      write(*,*) 'volume du deuxieme tetraedre', volcou
+      volume = volume + abs(volcou)
+c
+      call utprmi ( v18, v15, v16, volcou )
+c      write(*,*) 'volume du troisieme tetraedre', volcou
+      volume = volume + abs(volcou)
+c
+      call utprmi ( v18, v16, v17, volcou )
+c      write(*,*) 'volume du quatrieme tetraedre', volcou
+      volume = volume + abs(volcou)
+c
+      call utprmi ( v18, v17, v14, volcou )
+c      write(*,*) 'volume du cinquieme tetraedre', volcou
+      volume = volume + abs(volcou)
+c
+      call utprmi ( v18, v14, v13, volcou )
+c      write(*,*) 'volume du sixieme tetraedre', volcou
+      volume = volume + abs(volcou)
+c
+      volume = unssix * volume
+c
+      end