testar
C TESTAR SOURCE CHAT 05/01/13 03:36:16 5004 ************************************************************************ *** SP 'TESTAR' : en coordonnees de reference, dans le cas 3D , teste un *** pt par rapport à un element pour savoir s'il appartient à l'une *** de ses aretes à 'EPSILO' près (erreur acceptable % à arete). *** *** APPELES 1 = aucun *** APPELES 2 = aucun *** *** E = 'EPSILO' erreur de précision de calcul (calibrage) acceptable *** 'ITYG' entier caracterisant la géométrie de l'élément *** 'XREF' coordonnées reference du pt considéré *** *** S = 'ITEST' vaut 1 si pt se trouve sur une arete, 0 sinon *** 'INOEU1' n° local premier noeud appartenant à arete, 0 sinon *** 'INOEU2' n° local deuxieme noeud appartenant à arete, 0 sinon ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION XREF(3) ITEST=0 INOEU1=0 INOEU2=0 *** element de reference est un cube CUB8 IF (ITYG.EQ.14) THEN IF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN IF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=6 INOEU2=7 XREF(3)=1.D0 XREF(1)=1.D0 ELSEIF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=5 INOEU2=8 XREF(3)=1.D0 XREF(1)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=7 INOEU2=8 XREF(3)=1.D0 XREF(2)=1.D0 ELSEIF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=5 INOEU2=6 XREF(3)=1.D0 XREF(2)=-1.D0 ENDIF ELSEIF (ABS(1.D0+XREF(3)).LT.EPSILO) THEN IF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=3 XREF(3)=-1.D0 XREF(1)=1.D0 ELSEIF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=4 XREF(3)=-1.D0 XREF(1)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=3 INOEU2=4 XREF(3)=-1.D0 XREF(2)=1.D0 ELSEIF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=2 XREF(3)=-1.D0 XREF(2)=-1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=3 INOEU2=7 XREF(1)=1.D0 XREF(2)=1.D0 ELSEIF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=6 XREF(1)=1.D0 XREF(2)=-1.D0 ENDIF ELSEIF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=4 INOEU2=8 XREF(1)=-1.D0 XREF(2)=1.D0 ELSEIF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=5 XREF(1)=-1.D0 XREF(2)=-1.D0 ENDIF ENDIF *** element de reference est un prisme PRI6 ELSEIF (ITYG.EQ.16) THEN IF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=4 INOEU2=6 XREF(3)=1.D0 XREF(1)=0.D0 ELSEIF (ABS(XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=4 INOEU2=5 XREF(3)=1.D0 XREF(2)=0.D0 ELSEIF (ABS(1.D0-XREF(1)-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=5 INOEU2=6 XREF(3)=1.D0 XREF(2)=1.D0-XREF(1) ENDIF ELSEIF (ABS(1.D0+XREF(3)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=3 XREF(3)=-1.D0 XREF(1)=0.D0 ELSEIF (ABS(XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=2 XREF(3)=-1.D0 XREF(2)=0.D0 ELSEIF (ABS(1.D0-XREF(1)-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=3 XREF(3)=-1.D0 XREF(2)=1.D0-XREF(1) ENDIF ELSEIF (ABS(XREF(2)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=4 XREF(2)=0.D0 XREF(1)=0.D0 ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=5 XREF(1)=1.D0 XREF(2)=0.D0 ENDIF ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=3 INOEU2=6 XREF(2)=1.D0 XREF(1)=0.D0 ENDIF ENDIF *** element de reference est un tetraedre TET4 ELSEIF (ITYG.EQ.23) THEN IF (ABS(XREF(3)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=3 XREF(3)=0.D0 XREF(1)=0.D0 ELSEIF (ABS(XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=2 XREF(3)=0.D0 XREF(2)=0.D0 ELSEIF (ABS(1.D0-XREF(1)-XREF(2)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=3 XREF(3)=0.D0 XREF(2)=1.D0-XREF(1) ENDIF ELSEIF (ABS(XREF(2)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN ITEST=1 INOEU1=1 INOEU2=4 XREF(2)=0.D0 XREF(1)=0.D0 ELSEIF (ABS(1.D0-XREF(1)-XREF(3)).LT.EPSILO) THEN ITEST=1 INOEU1=2 INOEU2=4 XREF(2)=0.D0 XREF(3)=1.D0-XREF(1) ENDIF ELSEIF (ABS(XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0-XREF(2)-XREF(3)).LT.EPSILO) THEN ITEST=1 INOEU1=3 INOEU2=4 XREF(1)=0.D0 XREF(3)=1.D0-XREF(2) ENDIF ENDIF ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales