Download dualis.eso

Back to the list

   1 : C DUALIS    SOURCE    CHAT      05/01/12    22:58:42     5004           
   2 : C   dualise un maillage pour le maillage par polygone
   3 : C
   4 :       subroutine dualis(fer,fer1,xpro,xproj1)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 :       SEGMENT /FER/(NFI(ITT),MAI(IPP),ITOUR)
   8 :       SEGMENT XPRO
   9 :         REAL*8 XPROJ(3,1)
  10 :       ENDSEGMENT
  11 :       POINTEUR XPROJ1.XPRO, FER1.FER
  12 :       xproj1=xpro
  13 :       segini,xpro=xproj1
  14 :       segini,fer1=fer
  15 :       do 10 it=1,itour
  16 :         ideb=mai(it)+1
  17 :         ifin=mai(it+1)
  18 :         do 20 ip1=ideb,ifin
  19 :           ip2=ip1+1
  20 :           if (ip2.gt.ifin) ip2=ideb
  21 :           xproj(1,nfi(ip1))=(xproj1.XPROJ(1,nfi(ip1))+
  22 :      >                       xproj1.XPROJ(1,nfi(ip2)))/2
  23 :           xproj(2,nfi(ip1))=(xproj1.XPROJ(2,nfi(ip1))+
  24 :      >                       xproj1.XPROJ(2,nfi(ip2)))/2
  25 :           xproj(3,nfi(ip1))=(xproj1.XPROJ(3,nfi(ip1))+
  26 :      >                       xproj1.XPROJ(3,nfi(ip2)))/2
  27 :  
  28 :   20    continue
  29 :   10  continue
  30 : *
  31 : *     Decalage des points duals associes aux sommets 
  32 : *     interieurs d'un contour concave
  33 : *
  34 :       do 40 it=1,itour
  35 :         ideb=mai(it)+1
  36 :         ifin=mai(it+1)
  37 :         do 30 ip1=ideb,ifin
  38 :           ip2=ip1+1
  39 :           if (ip2.gt.ifin) ip2=ideb
  40 :           ip3 = ip2 + 1
  41 :           if (ip3.gt.ifin) ip3=ideb
  42 : * 
  43 : *         Produit vectoriel des cotes liant un sommet
  44 : * 
  45 :           xvec1 = xproj1.XPROJ(1,nfi(ip2)) - xproj1.XPROJ(1,nfi(ip1))
  46 :           yvec1 = xproj1.XPROJ(2,nfi(ip2)) - xproj1.XPROJ(2,nfi(ip1))
  47 :           xvec2 = xproj1.XPROJ(1,nfi(ip3)) - xproj1.XPROJ(1,nfi(ip2))
  48 :           yvec2 = xproj1.XPROJ(2,nfi(ip3)) - xproj1.XPROJ(2,nfi(ip2))
  49 : 
  50 :           prod = xvec1 * yvec2 - xvec2 * yvec1
  51 :           IF ( prod .LT. -1.E-10) THEN
  52 : *
  53 : *           Le sommet est "entrant", decalage des points duals voisins.
  54 : *
  55 :             xproj(1,nfi(ip1))= xproj(1,nfi(ip1)) + (xvec1 - xvec2)/4
  56 :             xproj(2,nfi(ip1))= xproj(2,nfi(ip1)) + (yvec1 - yvec2)/4
  57 :             xproj(1,nfi(ip2))= xproj(1,nfi(ip2)) + (xvec1 - xvec2)/4
  58 :             xproj(2,nfi(ip2))= xproj(2,nfi(ip2)) + (yvec1 - yvec2)/4
  59 : 
  60 :           ENDIF
  61 :   30    continue
  62 :   40  continue
  63 :       end
  64 :  
  65 :  

© Cast3M 2003 - All rights reserved.
Disclaimer