trjqua
C TRJQUA SOURCE PV 22/04/19 16:18:14 11344 C C********************************************************************** C C OBJET : CE SOUS-PROGRAMME CALCULE L'APPARTENANCE DE POINTS A UN C ----- ELEMENT QUADRILATERE D'UN MAILLAGE M1. C issu de TRIOEF utilise dans le calcul des trajectoires C C ARGUMENTS: C --------- C C ENTREE : IZNOEU = POINTEUR DU SEGMENT CONTENANT LES COORDONNEES C ET LES NUMEROS DES NOEUDS DE L ELEMENT C IZTRAV = POINTEUR DU SEGMENT CONTENANT LES COORDONNEES C DES POINTS DONT ON CHERCHE L'APPARTENANCE C IZAPAR = POINTEUR DU SEGMENT QUI CONTIENDRA LES C APPARTENANCES C NPAPAR = NOMBRE DE POINTS APPARTENANT A UN ELEMENT C IEL = NUMERO GLOBAL DE L'ELEMENT DANS LE MAILLAGE C J = NUMERO DU POINT TRAITE C C INOELO = NUMERO LOCAL SI LE POINT CHERCHE EST UN NOEUD C DU TRIANGLE CONSIDERE C TLI COORDONNEES BARYCENTRIQUES DU POINT CONSIDERE C C*********************************************************************** C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION X(3),TLI(*) C SEGMENT IZAPAR INTEGER IAPAR(4,NPT2) ENDSEGMENT C SEGMENT IZTRAV REAL*8 COOR(NDIM,NPART) ENDSEGMENT SEGMENT IZNOEU REAL*8 XELE(IDIM,NOEL) INTEGER NOEGLO(NOEL) ENDSEGMENT DIMENSION XELTRI(2,6),IDET3(3,2), * IDET67(6,2),NUARET(3,2),NOEAR1(9),NOEAR2(9) C C C DATA IDET3/2,3,1, 4,1,3/ DATA IDET67/3,4,5,9,1,2, 7,8,1,9,5,6/ DATA NUARET/2,0,1, 4,0,3/ DATA NOEAR1/4,1,2,3,0,0,0,0,0/ DATA NOEAR2/4,1,1,2,2,3,3,4,0/ C IDIM=XELE(/1) NOEL=XELE(/2) IF(NOEL.GT.4)GO TO 50 C C--- CAS QUA4 C C C*** DECOUPAGE DU QUA4 EN 2 TRI3 ET RECHERCHE DE L'APPARTENANCE DES C*** POINTS A CHACUN DES TRI3. C DO 40 I=1,2 ITRI=I C C DO 20 K=1,3 IN=IDET3(K,ITRI) DO 10 L=1,2 XELTRI(L,K)=XELE(L,IN) 10 CONTINUE 20 CONTINUE C C C C WRITE(6,*)'CALQUA IAPAR ',J,IAPAR(1,J) IF(IAPAR(1,J).NE.0) GO TO 9999 X(1)=COOR(1,J) X(2)=COOR(2,J) C WRITE(6,*)'CALQUA APAT3',IELEM,IARTRI,INOTRI C WRITE(6,*)' IELEM ',IELEM IF(IELEM.EQ.0) GO TO 40 C C--- LE POINT APPARTIENT A L'ELEMENT C NPAPAR=NPAPAR+1 IAPAR(1,J)=IEL C C--- APPARTENANCE A UNE ARETE DU QUA4 C IF(IARTRI.EQ.0) GO TO 9999 IAPAR(3,J)=NUARET(IARTRI,ITRI) C C--- APPARTENANCE A UN NOEUD DU QUA4 C IF(INOTRI.EQ.0) GO TO 9999 INOELO=IDET3(INOTRI,ITRI) IAPAR(3,J)=NOEAR1(INOELO) IAPAR(4,J)=NOEGLO(INOELO) GO TO 9999 40 CONTINUE GO TO 9999 C C--- CAS QUA8-QUA9 C 50 CONTINUE IF(NOEL.NE.8) GO TO 60 C C*** CALCUL DES COORDONNEES DU POINT MILIEU DE L'ELEMENT POUR GENERER C*** UN QUA9 C XELE(1,9)=0.5D0*(XELE(1,1)+XELE(1,3)) XELE(2,9)=0.5D0*(XELE(2,3)+XELE(2,5)) 60 CONTINUE C C*** DECOUPAGE DU QUA9 EN 2 TRI6 ET RECHERCHE DE L'APPARTENANCE DES C*** POINTS A CHACUN DES TRI6. C DO 80 I=1,2 ITRI=I C C DO 120 K=1,6 IN=IDET67(K,ITRI) DO 110 L=1,2 XELTRI(L,K)=XELE(L,IN) 110 CONTINUE 120 CONTINUE C C C IF(IAPAR(1,J).NE.0) GO TO 9999 X(1)=COOR(1,J) X(2)=COOR(2,J) IF(IELEM.EQ.0) GO TO 80 C C--- LE POINT APPARTIENT A L'ELEMENT C NPAPAR=NPAPAR+1 IAPAR(1,J)=IEL C C--- APPARTENANCE A UNE ARETE DU QUA9 C IF(IARTRI.EQ.0) GO TO 9999 IAPAR(3,J)=NUARET(IARTRI,ITRI) C C--- APPARTENANCE A UN NOEUD DU QUA8 OU QUA9 C IF(INOTRI.EQ.0) GO TO 9999 INOELO=IDET67(INOTRI,ITRI) IF(INOELO.EQ.9.AND.NOEL.EQ.8) GO TO 9999 IAPAR(3,J)=NOEAR2(INOELO) IAPAR(4,J)=NOEGLO(INOELO) GO TO 9999 80 CONTINUE C C 9999 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales