ttconn
C TTCONN SOURCE CB215821 17/11/30 21:17:18 9639 C C ***************************************************************** C MODULE : D3 (RESPECT D'UNE ARETE) C FICHIER : D3_FRONTIER.F C OBJET : FORCE LE RESPECT DES ARETES FRONTIERE DANS UN MAILLAGE C TETRAEDRIQUE 3D C FONCT. : C RF3RAR : IMPOSE LE RESPECTER D'UNE ARETE A UN MAILLAGE C RF3FAR : FORCE LE MAILLAGE A RESPECTER UNE ARETE C C AUTEUR : O. STAB C DATE : C TEST : C MODIFICATIONS : C AUTEUR, DATE, OBJET : C C ***************************************************************** C C > ICONN,NBCONN,NADMAX,NBNOCO,iarr) C ********************************************************************** C OBJET : TETRAEDRES CONTENANT DES NOEUDS C EN ENTREE : C NBN : NOMBRE DE NOEUDS RECHERCHES C NN : TABLEAU DES NOEUDS RECHERCHES C ITT : L'ELEMENT DE DEPART CONTENANT DES NOEUDS DE NN C NBT : NOMBRE DE NOEUDS DE NN QUE CONTIENT ITT ( 0 < NBT <= NBN) C ITRNOE,NBNMAX,ITRTRI,NBCMAX : LA TRIANGULATION C C ICONN,NBCONN : L'ENSEMBLE DES ELEMENTS CONNEXES C NBCONNMNAX : TAILLE DU TABLEAU ICONN C EN SORTIE : C ICONN : TABLEAU DES ELEMENTS C NBCONN : NOMBRE D'ELEMENTS C NBNOCO : NOMBRE DE NOEUDS TROUVES C ********************************************************************** IMPLICIT INTEGER(I-N) INTEGER ITT,NBT,NN(*),NBN INTEGER ITRNOE(*),NBNMAX,ITRTRI(*),NBCMAX INTEGER ICONN(*),NBCONN,NADMAX,NBNOCO,iarr C C C --- POUR LE DEBUG --- C C COMMON /DEBUG/ ITRACE, ITEST, IERROR, IMESS C INTEGER ITRACE, ITEST, IERROR C CHARACTER*256 IMESS C --------------------------------------------------------------------- C --- POUR LES STATS --- C COMMON /STATS/ ICARD(100) INTEGER ICARD C --------------------------------------------------------------------- C --- VARIABLES INTERNES --- INTEGER J,K,IPTDS, NBTRA, IVOIS, IT, ITRA, NBC, JJ INTEGER ITI C iarr = 0 NBC = NBCMAX IT = ITT IPTDS = NBT NBCONN = 0 C 1 ITI = IT NBNOCO = IPTDS NBTRA = 0 ITRA = 2 NBCONN = 1 ICONN(NBCONN) = ITI C PRINT *,'NBNOCO =',NBNOCO C DO 3 J=1,NBC IVOIS = ITRTRI((IT-1)*NBCMAX+J) IF( IVOIS .LE. 0 )GOTO 3 ICONN(ITRA + NBTRA) = IVOIS NBTRA = NBTRA + 1 3 CONTINUE C C ON BOUCLE TANTQUE ITRAVAIL N'EST PAS VIDE C ---------------------------------------- 5 IF( NBTRA .EQ. 0 )GOTO 999 IT = ICONN(ITRA) NBTRA = NBTRA-1 ITRA = ITRA + 1 C C --- LE TEST --- C IPTDS = 0 DO 100 J=1,NBNMAX DO 110 JJ=1,NBN IF( ITRNOE((IT-1)*NBNMAX+J).EQ.NN(JJ) )IPTDS = IPTDS+1 110 CONTINUE 100 CONTINUE C IF( IPTDS.GT.NBNOCO )GOTO 1 C ---------------------------------------------- C ON A TROUVE MIEUX : LA LISTE EST REINITIALISEE C ---------------------------------------------- IF( IPTDS.EQ.NBNOCO )THEN C --------------------------- C LE TRIANGLE EST A AJOUTE C --------------------------- NBCONN = NBCONN+1 IF(NBCONN.GT.NADMAX)THEN c WRITE(*,*) 'TABLEAU NADMAX TROP PETIT 1' c WRITE(*,*) 'NADMAX = ',NADMAX,'> NBCONN = ',NBCONN iarr = -2 GO TO 999 ENDIF ICONN(NBCONN)= IT C ------------------------------------------ C ON MET LES VOISINS A TRAITER DANS ITRAVAIL C ------------------------------------------ DO 20 J=1,NBC IVOIS = ITRTRI((IT-1)*NBCMAX+J) IF( IVOIS .LE. 0 )GOTO 20 DO 10 K=1,NBCONN IF( IVOIS.EQ.ICONN(K) )GOTO 20 10 CONTINUE C --- LE VOISIN EST DEJA A TRAITER --- C ------------------------------------------- DO 15 K=1,NBTRA IF( IVOIS.EQ.ICONN(ITRA+K-1) )GOTO 20 15 CONTINUE C IF((NBTRA+ITRA).GT.NADMAX)THEN c WRITE(*,*) 'TABLEAU NADMAX TROP PETIT 2' c WRITE(*,*) 'NBTRA + ITRA = ',NBTRA+ITRA, c > ' NADMAX = ',NADMAX iarr = -2 GO TO 999 ENDIF ICONN(ITRA + NBTRA) = IVOIS NBTRA = NBTRA + 1 20 CONTINUE ENDIF GOTO 5 999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales