Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / uttfi2.F
diff --git a/src/tool/Utilitaire/uttfi2.F b/src/tool/Utilitaire/uttfi2.F
new file mode 100644 (file)
index 0000000..c890d6b
--- /dev/null
@@ -0,0 +1,131 @@
+      subroutine uttfi2 ( sss, ttt,
+     >                    v1, v2, v3, v4, vn )
+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 - TFI - option 2
+c    --           ---          -
+c ______________________________________________________________________
+c
+c Creation d'un noeud par methode TFI a l'interieur d'un quadrangle
+c programme en dimension 2
+c
+c         Conventions d'orientation :
+c
+c              4 .--------------------. 3
+c                .                    .
+c                .                    .
+c                .                    .
+c              1 .--------------------. 2
+c
+c ______________________________________________________________________
+c .        .     .        .                                            .
+c .  nom   . e/s . taille .           description                      .
+c .____________________________________________________________________.
+c . sss    . e   . 1      . abscisse curviligne selon 12/43            .
+c . ttt    . e   . 1      . abscisse curviligne selon 14/23            .
+c . v1     . e   .   2    . coordonnees du sommet 1 du quadrangle      .
+c . v2     . e   .   2    . coordonnees du sommet 2 du quadrangle      .
+c . v3     . e   .   2    . coordonnees du sommet 3 du quadrangle      .
+c . v4     . e   .   2    . coordonnees du sommet 4 du quadrangle      .
+c . vn     .  s  .   2    . coordonnees du noeud cree                  .
+c .____________________________________________________________________.
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+      implicit none
+      save
+c
+cgn      character*6 nompro
+cgn      parameter ( nompro = 'UTTFI2' )
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+      double precision v1(2), v2(2), v3(2), v4(2), vn(2)
+      double precision sss, ttt
+c
+c 0.4. ==> variables locales
+c
+      integer iaux
+c
+      double precision v12(2), v43(2), v14(2), v23(2)
+      double precision unmsss, unmttt
+
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1. abscisses curvilignes
+c====
+c
+      unmsss = 1.d0 - sss
+      unmttt = 1.d0 - ttt
+cgn      print 1789 ,'........ sss = ',sss
+cgn      print 1789 ,'........ ttt = ',ttt
+cgn      print 1789 ,'........ v1 = ',v1
+cgn      print 1789 ,'........ v2 = ',v2
+cgn      print 1789 ,'........ v3 = ',v3
+cgn      print 1789 ,'........ v4 = ',v4
+c
+c====
+c 2. noeuds de bord
+c====
+c
+      do 20 , iaux = 1 , 2
+c
+        v12(iaux) = v1(iaux) + sss*(v2(iaux)-v1(iaux))
+        v43(iaux) = v4(iaux) + sss*(v3(iaux)-v4(iaux))
+        v14(iaux) = v1(iaux) + ttt*(v4(iaux)-v1(iaux))
+        v23(iaux) = v2(iaux) + ttt*(v3(iaux)-v2(iaux))
+c
+   20 continue
+cgn      print 1789,'v12 =',v12
+cgn      print 1789,'v43 =',v43
+cgn      print 1789,'v14 =',v14
+cgn      print 1789,'v23 =',v23
+cgn 1789 format(a,2g14.7)
+c
+c====
+c 3. Calcul
+c====
+c
+      do 30 , iaux = 1 , 2
+c
+        vn(iaux) = unmttt * v12(iaux)
+     >           + ttt * v43(iaux)
+     >           + unmsss * v14(iaux)
+     >           + sss * v23(iaux)
+     >           - unmsss * unmttt * v1(iaux)
+     >           - unmsss * ttt * v4(iaux)
+     >           - sss * unmttt * v2(iaux)
+     >           - sss * ttt * v3(iaux)
+c
+   30 continue
+cgn      print 1789 ,'........ vn = ',vn
+cgn      print 1789 ,'........ pv = ',
+cgn     >         vn(2)*(v4(1)-v1(1)) - vn(1)*(v4(2)-v1(2))
+c
+      end