lieupt
C LIEUPT SOURCE CHAT 05/01/13 01:17:33 5004 **************************************************************************** *** SP 'LIEUPT' : permet de determiner si pt considere est à l'interieur *** ou à l'exterieur de l'element considere à epsilon pres *** *** APPELES 1 = aucun *** APPELES 2 = 'LIEUP2' *** *** E = 'EPSILO' marge relative acceptée position pt % element *** 'NDIM' dimension de l'espace *** 'ITYG' entier caracterisant la geometrie de l'element considere *** 'XREEL' pt considere en coordonnees reelles *** 'IZSH' segment content coord reelles noeuds, fcts forme et base *** *** S = 'JTEST' vaut 1 si pt à l'interieur de l'elemt a epsilon pres, 0 sinon *** *** Auteur Cyril Nou **************************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) SEGMENT IZSH REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9) ENDSEGMENT DIMENSION PT1(3),PT2(3),PT3(3),PT4(3),XREEL(3) DIMENSION ITRIAN(5),ICARRE(6),ICUBE(4,6),IPRISM(4,5),ITETRA(4,4) *** donnees ordonnées specifiquement pour chaque type d'element afin de *** parcourir les faces dans l'ordre croissant dans les diverses boucles DATA ITRIAN/1,2,3,1,2/ DATA ICARRE/1,2,3,4,1,2/ DATA ICUBE/1,2,3,5, 5,6,7,1, 1,2,6,3, 2,3,7,1, 3,4,8,1, 1,4,8,2/ DATA IPRISM/1,2,3,4, 4,5,6,1, 1,2,5,3, 2,3,6,1, 1,3,6,2/ DATA ITETRA/1,2,4,3, 1,2,3,4, 2,3,4,1, 1,3,4,2/ *** on postule initialement 'XREEL' appartient à element JTEST=1 ************** *** CAS 2D *** ************** *** cas TRI3 (triangles), boucle sur les différentes faces IF (ITYG.EQ.4) THEN DO 10 I=1,3 *** recuperation des pts definissant la face + l'origine DO 20 J=1,NDIM PT1(J)=XYZL(J,ITRIAN(I)) PT2(J)=XYZL(J,ITRIAN(I+1)) PT3(J)=XYZL(J,ITRIAN(I+2)) 20 CONTINUE *** teste la position de 'XREEL' par rapport à la face *** si 'XREEL' est du mauvais cote de la face *** 'JTEST'=0 car 'XREEL' est hors du TRI3 JTEST=0 RETURN ENDIF 10 CONTINUE *** cas QUA4 (quadrangles) ELSEIF (ITYG.EQ.8) THEN DO 30 I=1,4 DO 40 J=1,NDIM PT1(J)=XYZL(J,ICARRE(I)) PT2(J)=XYZL(J,ICARRE(I+1)) PT3(J)=XYZL(J,ICARRE(I+2)) 40 CONTINUE JTEST=0 RETURN ENDIF 30 CONTINUE ************** *** CAS 3D *** ************** *** cas CUB8 (cubes) ELSEIF (ITYG.EQ.14) THEN DO 50 I=1,6 DO 60 J=1,NDIM PT1(J)=XYZL(J,ICUBE(1,I)) PT2(J)=XYZL(J,ICUBE(2,I)) PT3(J)=XYZL(J,ICUBE(3,I)) PT4(J)=XYZL(J,ICUBE(4,I)) 60 CONTINUE JTEST=0 RETURN ENDIF 50 CONTINUE *** cas PRI6 (prismes) ELSEIF (ITYG.EQ.16) THEN DO 70 I=1,5 DO 80 J=1,NDIM PT1(J)=XYZL(J,IPRISM(1,I)) PT2(J)=XYZL(J,IPRISM(2,I)) PT3(J)=XYZL(J,IPRISM(3,I)) PT4(J)=XYZL(J,IPRISM(4,I)) 80 CONTINUE JTEST=0 RETURN ENDIF 70 CONTINUE *** cas TET4 (tetraedres) ELSEIF (ITYG.EQ.23) THEN DO 90 I=1,4 DO 100 J=1,NDIM PT1(J)=XYZL(J,ITETRA(1,I)) PT2(J)=XYZL(J,ITETRA(2,I)) PT3(J)=XYZL(J,ITETRA(3,I)) PT4(J)=XYZL(J,ITETRA(4,I)) 100 CONTINUE JTEST=0 RETURN ENDIF 90 CONTINUE ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales