Download ttconn.eso

Back to the list

   1 : C TTCONN    SOURCE    CHAT      06/03/29    21:36:57     5360           
   2 : C
   3 : C     *****************************************************************
   4 : C     MODULE  : D3 (RESPECT D'UNE ARETE)
   5 : C     FICHIER : D3_FRONTIER.F
   6 : C     OBJET   : FORCE LE RESPECT DES ARETES FRONTIERE DANS UN MAILLAGE 
   7 : C               TETRAEDRIQUE 3D
   8 : C     FONCT.  : 
   9 : C       RF3RAR : IMPOSE LE RESPECTER D'UNE ARETE A UN MAILLAGE 
  10 : C       RF3FAR : FORCE LE MAILLAGE A RESPECTER UNE ARETE 
  11 : C
  12 : C     AUTEUR  : O. STAB
  13 : C     DATE    :  
  14 : C     TEST    :  
  15 : C     MODIFICATIONS :
  16 : C      AUTEUR, DATE, OBJET :
  17 : C
  18 : C     *****************************************************************
  19 : C
  20 : C
  21 :       SUBROUTINE TTCONN(NBN,NN,ITT,NBT,ITRNOE,NBNMAX,ITRTRI,NBCMAX,
  22 :      >                   ICONN,NBCONN,NADMAX,NBNOCO,iarr)
  23 : C     **********************************************************************
  24 : C     OBJET : TETRAEDRES CONTENANT DES NOEUDS
  25 : C     EN ENTREE   :
  26 : C        NBN  : NOMBRE DE NOEUDS RECHERCHES 
  27 : C        NN   : TABLEAU DES NOEUDS RECHERCHES
  28 : C        ITT  : L'ELEMENT DE DEPART CONTENANT DES NOEUDS DE NN
  29 : C        NBT  : NOMBRE DE NOEUDS DE NN QUE CONTIENT ITT ( 0 < NBT <= NBN)
  30 : C        ITRNOE,NBNMAX,ITRTRI,NBCMAX : LA TRIANGULATION
  31 : C
  32 : C        ICONN,NBCONN : L'ENSEMBLE DES ELEMENTS CONNEXES
  33 : C        NBCONNMNAX   : TAILLE DU TABLEAU ICONN 
  34 : C     EN SORTIE   :
  35 : C        ICONN    : TABLEAU DES ELEMENTS
  36 : C        NBCONN   : NOMBRE D'ELEMENTS
  37 : C        NBNOCO   : NOMBRE DE NOEUDS TROUVES
  38 : C     **********************************************************************
  39 :       IMPLICIT INTEGER(I-N)
  40 :       INTEGER    ITT,NBT,NN(*),NBN
  41 :       INTEGER    ITRNOE(*),NBNMAX,ITRTRI(*),NBCMAX
  42 :       INTEGER    ICONN(*),NBCONN,NADMAX,NBNOCO,iarr
  43 : C
  44 : C   
  45 : C     --- POUR LE DEBUG ---
  46 : C
  47 : C      COMMON /DEBUG/ ITRACE, ITEST, IERROR, IMESS
  48 : C      INTEGER       ITRACE, ITEST, IERROR
  49 : C      CHARACTER*256 IMESS
  50 : C     ---------------------------------------------------------------------
  51 : C     --- POUR LES STATS ---
  52 : C
  53 :       COMMON /STATS/ ICARD(100)
  54 :       INTEGER       ICARD
  55 : C     ---------------------------------------------------------------------
  56 : C     --- VARIABLES INTERNES ---
  57 :       INTEGER   J,K,IPTDS, NBTRA, IVOIS, IT, ITRA, NBC, JJ
  58 :       INTEGER   ITI
  59 : C
  60 :       iarr = 0
  61 :       NBC = NBCMAX
  62 :       IT = ITT
  63 :       IPTDS = NBT
  64 :       NBCONN = 0
  65 : C
  66 :     1 ITI = IT
  67 :       NBNOCO = IPTDS
  68 :       NBTRA = 0
  69 :       ITRA  = 2
  70 :       NBCONN = 1
  71 :       ICONN(NBCONN) = ITI
  72 : C      PRINT *,'NBNOCO =',NBNOCO
  73 : C      
  74 :       DO 3 J=1,NBC
  75 :         IVOIS = ITRTRI((IT-1)*NBCMAX+J)
  76 :         IF( IVOIS .LE. 0 )GOTO 3
  77 :         ICONN(ITRA + NBTRA) = IVOIS
  78 :         NBTRA = NBTRA + 1
  79 :     3 CONTINUE      
  80 : C
  81 : C     ON BOUCLE TANTQUE ITRAVAIL N'EST PAS VIDE
  82 : C     ----------------------------------------
  83 :     5 IF( NBTRA .EQ. 0 )GOTO 999
  84 :       IT     = ICONN(ITRA)
  85 :       NBTRA  = NBTRA-1 
  86 :       ITRA   = ITRA + 1 
  87 : C
  88 : C     --- LE TEST ---
  89 : C
  90 :       IPTDS = 0
  91 :       DO 100 J=1,NBNMAX
  92 :         DO 110 JJ=1,NBN
  93 :           IF( ITRNOE((IT-1)*NBNMAX+J).EQ.NN(JJ) )IPTDS = IPTDS+1
  94 :   110   CONTINUE
  95 :   100 CONTINUE 
  96 : C
  97 :         IF( IPTDS.GT.NBNOCO )GOTO 1
  98 : C         ----------------------------------------------
  99 : C         ON A TROUVE MIEUX : LA LISTE EST REINITIALISEE
 100 : C         ----------------------------------------------
 101 :         IF( IPTDS.EQ.NBNOCO )THEN
 102 : C         ---------------------------
 103 : C         LE TRIANGLE EST A AJOUTE
 104 : C         ---------------------------
 105 :           NBCONN = NBCONN+1
 106 :           IF(NBCONN.GT.NADMAX)THEN
 107 : c            WRITE(*,*) 'TABLEAU NADMAX TROP PETIT 1'
 108 : c            WRITE(*,*) 'NADMAX = ',NADMAX,'> NBCONN = ',NBCONN
 109 :             iarr = -2
 110 :             GO TO 999
 111 :           ENDIF
 112 :           ICONN(NBCONN)= IT
 113 : C         ------------------------------------------
 114 : C         ON MET LES VOISINS A TRAITER DANS ITRAVAIL
 115 : C         ------------------------------------------
 116 :           DO 20 J=1,NBC
 117 :             IVOIS = ITRTRI((IT-1)*NBCMAX+J)
 118 :             IF( IVOIS .LE. 0 )GOTO 20
 119 :             DO 10 K=1,NBCONN
 120 :               IF( IVOIS.EQ.ICONN(K) )GOTO 20
 121 :    10       CONTINUE
 122 : C           --- LE VOISIN EST DEJA A TRAITER  ---
 123 : C           -------------------------------------------
 124 :             DO 15 K=1,NBTRA
 125 :               IF( IVOIS.EQ.ICONN(ITRA+K-1) )GOTO 20
 126 :    15       CONTINUE
 127 : C
 128 :             IF((NBTRA+ITRA).GT.NADMAX)THEN
 129 : c              WRITE(*,*) 'TABLEAU NADMAX TROP PETIT 2'
 130 : c              WRITE(*,*) 'NBTRA + ITRA = ',NBTRA+ITRA,
 131 : c     >                   ' NADMAX = ',NADMAX         
 132 :               iarr = -2
 133 :               GO TO 999
 134 :             ENDIF
 135 :             ICONN(ITRA + NBTRA) = IVOIS
 136 :             NBTRA = NBTRA + 1
 137 :    20     CONTINUE
 138 :         ENDIF
 139 :         GOTO 5
 140 :   999 END
 141 :  
 142 :  
 143 :  

© Cast3M 2003 - All rights reserved.
Disclaimer