apat67
C APAT67 SOURCE PV 18/06/20 21:15:01 9860 C C********************************************************************** C C OBJET : CE SOUS-PROGRAMME RECHERCHE L'APPARTENANCE D'UN POINT C ----- A UN TRI6 OU TRI7 DE REFERENCE. C C ARGUMENTS: C --------- C C ENTREE : IDIM = DIMENSION DE L'ESPACE C X = TABLEAU DES COORDONNEES DU POINT C XELTRI = TABLEAU DES COORDONNEES DU TRI6 OU TRI7 C C SORTIE : IELEM = 0 SI LE POINT N'APPARTIENT PAS A L'ELEMENT C = 1 SI LE POINT APPARTIENT A L'ELEMENT C IFACE = 0 SI LE POINT N'APPARTIENT PAS A UNE FACE C = N NUMERO DE LA FACE SINON C IARTRI = 0 SI LE POINT N'APPARTIENT PAS A UNE ARETE C = N NUMERO DE L'ARETE SINON C INOTRI = 0 SI LE POINT N'APPARTIENT PAS A UN NOEUD C = N NUMERO DU NOEUD SINON C TLI COORDONNEES BARYCENTRIQUES DU POINT X C C*********************************************************************** C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION X(*),XELTRI(2,*),NOEMIL(4), * XEL3(2,3),NOESOM(3),IART(3),TLI(*) C C DATA NOEMIL/2,4,6,7/ DATA NOESOM/1,3,5/ DATA IART/2,3,1/ C IDIM=2 IELEM=0 IARTRI=0 INOTRI=0 NOEU=3 EPS=1.D-5 UN=1.D0+EPS C C*** CONSTRUCTION DE XEL3 COORDONNEES DES NOEUDS SOMMETS DU TRI3 ELEMEN C DO 20 I=1,NOEU I1=2*(I-1)+1 DO 10 J=1,IDIM XEL3(J,I)=XELTRI(J,I1) 10 CONTINUE 20 CONTINUE C C*** CALCUL DES COORDONNEES BARYCENTRIQUES C C C IF(TLI(1).LT.-EPS.OR.TLI(1).GT.UN)GO TO 9999 IF(TLI(2).LT.-EPS.OR.TLI(2).GT.UN)GO TO 9999 IF(TLI(3).LT.-EPS.OR.TLI(3).GT.UN)GO TO 9999 C C*** LE POINT APPARTIENT A L'ELEMENT C IELEM=1 C C*** RECHERCHE DE L'APPARTENANCE A UNE ARETE C C WRITE(6,*)' TLI ',TLI(1),TLI(2),TLI(3) DO 80 I=1,NOEU IARTRI=IART(I) VAL=ABS(TLI(I)) IF(VAL.LE.EPS) GO TO 90 80 CONTINUE IARTRI=0 GO TO 110 C C*** RECHERCHE DE L'APPARTENANCE A UN NOEUD SOMMET DE L'ARETE C 90 CONTINUE DO 100 I=1,3 IN=I VAL=ABS(TLI(IN)-1.) IF(VAL.GT.EPS) GO TO 100 INOTRI=NOESOM(IN) GO TO 9999 100 CONTINUE INOTRI=0 C C*** RECHERCHE SI C'EST LE NOEUD MILIEU DE L'ARETE C IJ=IARTRI VAL=ABS(TLI(IJ)-0.5) IF(VAL.GT.EPS) GO TO 9999 INOTRI=NOEMIL((IART(IARTRI))) GO TO 9999 C C*** RECHERCHE SI C'EST LE NOEUD CENTRAL POUR TRI7 C 110 IF(NOET.LT.7) GO TO 9999 UNTIER=1./3. VAL1=ABS(TLI(1)-UNTIER) VAL2=ABS(TLI(2)-UNTIER) IF(VAL1.GT.EPS.OR.VAL2.GT.EPS) GO TO 9999 INOTRI=NOEMIL(4) 9999 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales