testno
C TESTNO SOURCE CHAT 05/01/13 03:36:35 5004 ************************************************************************ *** SP 'TESTNO' : en coordonnees de reference, teste un pt par rapport *** à un element pour savoir s'il appartient à l'un de ses noeuds à *** 'EPSILO' près (erreur acceptable % noeud). *** *** 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 = 'INOEUD' vaut n° local du noeud où se trouve le pt, 0 sinon *** *** ORIGINE = PATRICK, MODIFICATION = CYRIL, TEST = OK !!! ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION XREF(3) INOEUD=0 *** element de reference est un triangle TRI3 IF (ITYG.EQ.4) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=1 XREF(1)=0.D0 XREF(2)=0.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=3 XREF(1)=0.D0 XREF(2)=1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=2 XREF(1)=1.D0 XREF(2)=0.D0 ENDIF ENDIF *** element de reference est un carre QUA4 ELSEIF (ITYG.EQ.8) THEN IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN INOEUD=1 XREF(1)=-1.D0 XREF(2)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=4 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 INOEUD=2 XREF(1)=1.D0 XREF(2)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=3 XREF(1)=1.D0 XREF(2)=1.D0 ENDIF ENDIF *** element de reference est un cube CUB8 ELSEIF (ITYG.EQ.14) THEN IF (ABS(1.D0+XREF(3)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN INOEUD=1 XREF(1)=-1.D0 XREF(2)=-1.D0 XREF(3)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=4 XREF(1)=-1.D0 XREF(2)=1.D0 XREF(3)=-1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN INOEUD=2 XREF(1)=1.D0 XREF(2)=-1.D0 XREF(3)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=3 XREF(1)=1.D0 XREF(2)=1.D0 XREF(3)=-1.D0 ENDIF ENDIF ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN INOEUD=5 XREF(1)=-1.D0 XREF(2)=-1.D0 XREF(3)=1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=8 XREF(1)=-1.D0 XREF(2)=1.D0 XREF(3)=1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN INOEUD=6 XREF(1)=1.D0 XREF(2)=-1.D0 XREF(3)=1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=7 XREF(1)=1.D0 XREF(2)=1.D0 XREF(3)=1.D0 ENDIF ENDIF ENDIF *** element de reference est un prisme PRI6 ELSEIF (ITYG.EQ.16) THEN IF ((ABS(XREF(3)+1.D0).LT.EPSILO)) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=1 XREF(1)=0.D0 XREF(2)=0.D0 XREF(3)=-1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=3 XREF(1)=0.D0 XREF(2)=1.D0 XREF(3)=-1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=2 XREF(1)=1.D0 XREF(2)=0.D0 XREF(3)=-1.D0 ENDIF ENDIF ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=4 XREF(1)=0.D0 XREF(2)=0.D0 XREF(3)=1.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=6 XREF(1)=0.D0 XREF(2)=1.D0 XREF(3)=1.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=5 XREF(1)=1.D0 XREF(2)=0.D0 XREF(3)=1.D0 ENDIF 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 IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=1 XREF(1)=0.D0 XREF(2)=0.D0 XREF(3)=0.D0 ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN INOEUD=3 XREF(1)=0.D0 XREF(2)=1.D0 XREF(3)=0.D0 ENDIF ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=2 XREF(1)=1.D0 XREF(2)=0.D0 XREF(3)=0.D0 ENDIF ENDIF ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN IF (ABS(XREF(1)).LT.EPSILO) THEN IF (ABS(XREF(2)).LT.EPSILO) THEN INOEUD=4 XREF(1)=0.D0 XREF(2)=0.D0 XREF(3)=1.D0 ENDIF ENDIF ENDIF ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales