1 : C TESTNO SOURCE CHAT 05/01/13 03:36:35 5004 2 : SUBROUTINE TESTNO(EPSILO,ITYG,XREF,INOEUD) 3 : ************************************************************************ 4 : *** SP 'TESTNO' : en coordonnees de reference, teste un pt par rapport 5 : *** à un element pour savoir s'il appartient à l'un de ses noeuds à 6 : *** 'EPSILO' près (erreur acceptable % noeud). 7 : *** 8 : *** APPELES 1 = aucun 9 : *** APPELES 2 = aucun 10 : *** 11 : *** E = 'EPSILO' erreur de précision de calcul (calibrage) acceptable 12 : *** 'ITYG' entier caracterisant la géométrie de l'élément 13 : *** 'XREF' coordonnées reference du pt considéré 14 : *** 15 : *** S = 'INOEUD' vaut n° local du noeud où se trouve le pt, 0 sinon 16 : *** 17 : *** ORIGINE = PATRICK, MODIFICATION = CYRIL, TEST = OK !!! 18 : ************************************************************************ 19 : IMPLICIT INTEGER(I-N) 20 : IMPLICIT REAL*8 (A-H,O-Z) 21 : DIMENSION XREF(3) 22 : INOEUD=0 23 : *** element de reference est un triangle TRI3 24 : IF (ITYG.EQ.4) THEN 25 : IF (ABS(XREF(1)).LT.EPSILO) THEN 26 : IF (ABS(XREF(2)).LT.EPSILO) THEN 27 : INOEUD=1 28 : XREF(1)=0.D0 29 : XREF(2)=0.D0 30 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 31 : INOEUD=3 32 : XREF(1)=0.D0 33 : XREF(2)=1.D0 34 : ENDIF 35 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 36 : IF (ABS(XREF(2)).LT.EPSILO) THEN 37 : INOEUD=2 38 : XREF(1)=1.D0 39 : XREF(2)=0.D0 40 : ENDIF 41 : ENDIF 42 : *** element de reference est un carre QUA4 43 : ELSEIF (ITYG.EQ.8) THEN 44 : IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN 45 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 46 : INOEUD=1 47 : XREF(1)=-1.D0 48 : XREF(2)=-1.D0 49 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 50 : INOEUD=4 51 : XREF(1)=-1.D0 52 : XREF(2)=1.D0 53 : ENDIF 54 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 55 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 56 : INOEUD=2 57 : XREF(1)=1.D0 58 : XREF(2)=-1.D0 59 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 60 : INOEUD=3 61 : XREF(1)=1.D0 62 : XREF(2)=1.D0 63 : ENDIF 64 : ENDIF 65 : *** element de reference est un cube CUB8 66 : ELSEIF (ITYG.EQ.14) THEN 67 : IF (ABS(1.D0+XREF(3)).LT.EPSILO) THEN 68 : IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN 69 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 70 : INOEUD=1 71 : XREF(1)=-1.D0 72 : XREF(2)=-1.D0 73 : XREF(3)=-1.D0 74 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 75 : INOEUD=4 76 : XREF(1)=-1.D0 77 : XREF(2)=1.D0 78 : XREF(3)=-1.D0 79 : ENDIF 80 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 81 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 82 : INOEUD=2 83 : XREF(1)=1.D0 84 : XREF(2)=-1.D0 85 : XREF(3)=-1.D0 86 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 87 : INOEUD=3 88 : XREF(1)=1.D0 89 : XREF(2)=1.D0 90 : XREF(3)=-1.D0 91 : ENDIF 92 : ENDIF 93 : ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN 94 : IF (ABS(1.D0+XREF(1)).LT.EPSILO) THEN 95 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 96 : INOEUD=5 97 : XREF(1)=-1.D0 98 : XREF(2)=-1.D0 99 : XREF(3)=1.D0 100 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 101 : INOEUD=8 102 : XREF(1)=-1.D0 103 : XREF(2)=1.D0 104 : XREF(3)=1.D0 105 : ENDIF 106 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 107 : IF (ABS(1.D0+XREF(2)).LT.EPSILO) THEN 108 : INOEUD=6 109 : XREF(1)=1.D0 110 : XREF(2)=-1.D0 111 : XREF(3)=1.D0 112 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 113 : INOEUD=7 114 : XREF(1)=1.D0 115 : XREF(2)=1.D0 116 : XREF(3)=1.D0 117 : ENDIF 118 : ENDIF 119 : ENDIF 120 : *** element de reference est un prisme PRI6 121 : ELSEIF (ITYG.EQ.16) THEN 122 : IF ((ABS(XREF(3)+1.D0).LT.EPSILO)) THEN 123 : IF (ABS(XREF(1)).LT.EPSILO) THEN 124 : IF (ABS(XREF(2)).LT.EPSILO) THEN 125 : INOEUD=1 126 : XREF(1)=0.D0 127 : XREF(2)=0.D0 128 : XREF(3)=-1.D0 129 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 130 : INOEUD=3 131 : XREF(1)=0.D0 132 : XREF(2)=1.D0 133 : XREF(3)=-1.D0 134 : ENDIF 135 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 136 : IF (ABS(XREF(2)).LT.EPSILO) THEN 137 : INOEUD=2 138 : XREF(1)=1.D0 139 : XREF(2)=0.D0 140 : XREF(3)=-1.D0 141 : ENDIF 142 : ENDIF 143 : ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN 144 : IF (ABS(XREF(1)).LT.EPSILO) THEN 145 : IF (ABS(XREF(2)).LT.EPSILO) THEN 146 : INOEUD=4 147 : XREF(1)=0.D0 148 : XREF(2)=0.D0 149 : XREF(3)=1.D0 150 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 151 : INOEUD=6 152 : XREF(1)=0.D0 153 : XREF(2)=1.D0 154 : XREF(3)=1.D0 155 : ENDIF 156 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 157 : IF (ABS(XREF(2)).LT.EPSILO) THEN 158 : INOEUD=5 159 : XREF(1)=1.D0 160 : XREF(2)=0.D0 161 : XREF(3)=1.D0 162 : ENDIF 163 : ENDIF 164 : ENDIF 165 : *** element de reference est un tetraedre TET4 166 : ELSEIF (ITYG.EQ.23) THEN 167 : IF (ABS(XREF(3)).LT.EPSILO) THEN 168 : IF (ABS(XREF(1)).LT.EPSILO) THEN 169 : IF (ABS(XREF(2)).LT.EPSILO) THEN 170 : INOEUD=1 171 : XREF(1)=0.D0 172 : XREF(2)=0.D0 173 : XREF(3)=0.D0 174 : ELSEIF (ABS(1.D0-XREF(2)).LT.EPSILO) THEN 175 : INOEUD=3 176 : XREF(1)=0.D0 177 : XREF(2)=1.D0 178 : XREF(3)=0.D0 179 : ENDIF 180 : ELSEIF (ABS(1.D0-XREF(1)).LT.EPSILO) THEN 181 : IF (ABS(XREF(2)).LT.EPSILO) THEN 182 : INOEUD=2 183 : XREF(1)=1.D0 184 : XREF(2)=0.D0 185 : XREF(3)=0.D0 186 : ENDIF 187 : ENDIF 188 : ELSEIF (ABS(1.D0-XREF(3)).LT.EPSILO) THEN 189 : IF (ABS(XREF(1)).LT.EPSILO) THEN 190 : IF (ABS(XREF(2)).LT.EPSILO) THEN 191 : INOEUD=4 192 : XREF(1)=0.D0 193 : XREF(2)=0.D0 194 : XREF(3)=1.D0 195 : ENDIF 196 : ENDIF 197 : ENDIF 198 : ENDIF 199 : RETURN 200 : END 201 : 202 : 203 :
© Cast3M 2003 - All rights reserved.
Disclaimer