in2
C IN2 SOURCE JC220346 16/11/29 21:15:21 9221 C---------------------------------------------------------------------| C | C | C CETTE FONCTION LOGIQUE VERIFIE QUE LE POINT IP2 (QUI VIENT | C D'ETRE CREE ), EST BIEN A L'INTERIEUR DU MAILLAGE DE SUR- | C FACE. | C | C IP1 appartenant au maillage de surface, on va juste verifier | C que ip1 ip2 ne coupe aucun element. | C | C IN EST VRAI SI LE POINT IP EST INTERNE AU MAILLAGE DE SUR- | C FACE OU EST UN POINT DU MAILLAGE DE SURFACE | C IN EST FAUX SI LE POINT IP EST EXTERNE AU MAILLAGE DE SUR- | C FACE. | C | C---------------------------------------------------------------------| C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) logical in2dan -INC PPARAM -INC CCOPTIO -INC TDEMAIT C * WRITE(6,5000) nfcini,nfacet *5000 FORMAT(' IN2 nfcini,nfacet ',i8,i8) C ------------------------ * write (6,*) ' in2 ip1 ',xyz(1,ip1),xyz(2,ip1),xyz(3,ip1) * write (6,*) ' in2 ip2 ',xyz(1,ip2),xyz(2,ip2),xyz(3,ip2) DO 100 I=1,NFACET IF=IFUT(I) if (if.gt.nfcini) goto 100 I1=NFC(1,IF) IF (IP1.EQ.I1) GOTO 100 IF (IP2.EQ.I1) GOTO 100 I3=NFC(3,IF) IF (IP1.EQ.I3) GOTO 100 IF (IP2.EQ.I3) GOTO 100 I4=NFC(4,IF) IF (IP1.EQ.I4) GOTO 100 IF (IP2.EQ.I4) GOTO 100 * ip1 et ip2 sont ils de part et d'autre du plan de la facette v2x=xyz(1,i1)-xyz(1,i3) v2y=xyz(2,i1)-xyz(2,i3) v2z=xyz(3,i1)-xyz(3,i3) vnx=v1y*v2z-v1z*v2y vny=v1z*v2x-v1x*v2z vnz=v1x*v2y-v1y*v2x v1x=xyz(1,i1)-xyz(1,ip1) v1y=xyz(2,i1)-xyz(2,ip1) v1z=xyz(3,i1)-xyz(3,ip1) pm1=v1x*vnx+v1y*vny+v1z*vnz v2x=xyz(1,i1)-xyz(1,ip2) v2y=xyz(2,i1)-xyz(2,ip2) v2z=xyz(3,i1)-xyz(3,ip2) pm2=v2x*vnx+v2y*vny+v2z*vnz if (pm1*pm2.gt.0.) goto 100 * ok touche t on le segment ? * write (6,*) ' in2 de part et d'' autre du plan ',pm1,pm2 if (i4.eq.0) goto 100 v1x=xyz(1,i1)-xyz(1,i4) v1y=xyz(2,i1)-xyz(2,i4) v1z=xyz(3,i1)-xyz(3,i4) v2x=xyz(1,i1)-xyz(1,i3) v2y=xyz(2,i1)-xyz(2,i3) v2z=xyz(3,i1)-xyz(3,i3) vnx=v1y*v2z-v1z*v2y vny=v1z*v2x-v1x*v2z vnz=v1x*v2y-v1y*v2x v1x=xyz(1,i1)-xyz(1,ip1) v1y=xyz(2,i1)-xyz(2,ip1) v1z=xyz(3,i1)-xyz(3,ip1) pm1=v1x*vnx+v1y*vny+v1z*vnz v2x=xyz(1,i1)-xyz(1,ip2) v2y=xyz(2,i1)-xyz(2,ip2) v2z=xyz(3,i1)-xyz(3,ip2) pm2=v2x*vnx+v2y*vny+v2z*vnz if (pm1*pm2.gt.0.) goto 100 * ok on touche touche t on le segment ? * write (6,*) ' in2 de part et d'' autre du plan ' 100 CONTINUE return 200 continue 1000 FORMAT (' IN2 intersection facette segment') C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales