1 : C IDMAT5 SOURCE PV 09/03/12 21:24:58 6325 2 : SUBROUTINE IDMAT5 (NUDIR1,NUMP1,NUDIR2,NUMP3,ANG,MELEME,MINTE, 3 : 1 MINTE1,IPEPAI,IPEXCE,NPG2,ITHER,IPVAL) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8(A-H,O-Z) 6 : * 7 : ************************************************************************ 8 : * 9 : * I D M A T 5 10 : * ----------- 11 : * 12 : * FONCTION: 13 : * --------- 14 : * 15 : * CALCUL DES COSINUS-DIRECTEURS DU 1ER AXE D'ORTHOTROPIE /REPERES 16 : * 17 : * LOCAUX D'UNE COQUE EPAISSE 18 : * 19 : * 20 : * MODULES UTILISES: 21 : * ----------------- 22 : * 23 : -INC CCOPTIO 24 : -INC SMCOORD 25 : -INC CCREEL 26 : -INC SMELEME 27 : -INC SMINTE 28 : -INC SMCHAML 29 : * 30 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 31 : * ----------- 32 : * 33 : * NUDIR1 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE: 34 : * "DIRECTION", "RADIAL", 35 : * POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE. 36 : * NUMP1 (E) NUMERO DU POINT P ASSOCIE A NUDIR1 37 : * NUDIR2 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE: 38 : * "PARALLELE", "PERPENDIC.", "INCLINE", 39 : * POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE. 40 : * NUMP3 (E) NUMERO DU POINT P ASSOCIE A NUDIR2 41 : * ANG (E) ANGLE UTILISE DANS LA DEFINITION DES DIRECTIONS 42 : * D ORTHOTROPIE (INCLINE) 43 : * MELEME (E) POINTEUR DE "MAILLAGE" A 1 SEUL TYPE D'ELEMENT. 44 : * MINTE (E) SEGMENT CONTENANT LES FONCTIONS DE FORME ET LEURS 45 : * DERIVEES AU POINTS DE GAUSS 46 : * MINTE1 (E) SEGMENT CONTENANT LES FONCTIONS DE FORME ET LEURS 47 : * DERIVEES AU NOEUDS 48 : * IPEPAI (E) POINTEUR DU SEGMENT CONTENANT LES EPAISSEURS 49 : * IPEXCE (E) POINTEUR DU SEGMENT CONTENANT LES EXCENTREMENTS 50 : * XVAL (S) DIRECTIONS D'ORTHOTROPIE PAR POINT DE GAUSS 51 : * ON FOURNIT LE COSINUS ET LE SINUS DE L'ANGLE QUE FAIT 52 : * LA DIRECTION 1 D'ORTHOTROPIE AVEC L'AXE 1 DU REPRE 53 : * LIE AU POINT DE GAUSS 54 : * NPG2 (E) NOMBRE DE POINTS DE GAUSS 55 : * 56 : * 57 : * VARIABLES: 58 : * ---------- 59 : * 60 : * COSA = COSINUS DE L'ANGLE DE LA DIRECTION 1 D'ORTHOTROPIE AVEC 61 : * L'AXE 1 DU REPERE LOCAL SITUE AU POINT DE GAUSS CONSIDER 62 : * SINA = SINUS DE L'ANGLE DE LA DIRECTION 1 D'ORTHOTROPIE AVEC L 63 : * 'AXE 1 DU REPERE LOCAL SITUE AU POINT DE GAUSS CONSIDERE 64 : * XI,YI,ZI = COSINUS-DIRECTEURS DE L'AXE 1 DU REPERE LOCAL SITUE AU 65 : * POINT DE GAUSS CONSIDERE 66 : * XN,YN,ZN = COSINUS-DIRECTEURS DE L'AXE 3 DU REPERE LOCAL SITUE AU 67 : * POINT DE GAUSS CONSIDERE 68 : * XDIR1,.. = COORDONNEES DE LA DIRECTION FOURNIE POUR DETERMINER LES 69 : * DIRECTIONS D'ORTHOTROPIE. 70 : * 71 : * REMARQUES: 72 : * ---------- 73 : * 74 : * LA PREMIERE DIRECTION D'ORTHOTROPIE EST DEFINIE A CHAQUE POINT DE 75 : * GAUSS PAR RAPPORT A UN REPERE LOCAL DONT LES DEUX PREMIERS AXES SONT 76 : * SITUES DANS LE PLAN TANGENT 77 : * 78 : * AUTEUR, DATE DE CREATION: 79 : * ------------------------- 80 : * 81 : * P DOWLATYARI JANVIER 1991 82 : * 83 : * LANGAGE: 84 : * -------- 85 : * 86 : * ESOPE77 FORTRAN77 + EXTENSION 87 : * 88 : * 89 : ************************************************************************ 90 : * 91 : * 92 : REAL*8 XJ(3,3),TT(9) 93 : * 94 : SEGMENT GEOM 95 : REAL*8 EP(NBNN),TXR(3,3,NBNN),EXC(NBNN),XE(3,NBNN) 96 : ENDSEGMENT 97 : * 98 : SEGMENT XVAL 99 : REAL*8 CVAL(NPG2,NBELEM),SVAL(NPG2,NBELEM) 100 : ENDSEGMENT 101 : * 102 : * 103 : * CONSTANTES: 104 : * ----------- 105 : * 106 : * COS1D = VALEUR APPROCHEE DE COSINUS(1 DEGRE). 107 : * SIN1D = VALEUR APPROCHEE DE SINUS(1 DEGRE). 108 : * 109 : PARAMETER (COS1D = 0.999 85 D0) 110 : PARAMETER (SIN1D = 0.017 45 D0) 111 : PARAMETER (UNDEMI= 0.5D0 ) 112 : * 113 : SEGACT MELEME 114 : SEGACT MINTE 115 : SEGACT MINTE1 116 : NBELEM=NUM(/2) 117 : NBNN = NUM(/1) 118 : * 119 : * DIRECTION FOURNIE, AVANT PROJECTION SUR LA COQUE. 120 : * 121 : * ON CHERCHE LE POINT NUMP1 RATACHER A LA DIRECTIVE DIRECTION 122 : * 122 : CALL EXCOO1 (NUMP1,XDIR1,YDIR1,ZDIR1,REEL1) 123 : IF (NUDIR1 .EQ. 1) THEN 124 : XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2) 125 : XDIR1 = XDIR1 / XNORM 126 : YDIR1 = YDIR1 / XNORM 127 : ZDIR1 = ZDIR1 / XNORM 128 : END IF 129 : XDIR2 = XDIR1 130 : YDIR2 = YDIR1 131 : ZDIR2 = ZDIR1 132 : * 133 : SEGINI XVAL 134 : IPVAL=XVAL 135 : SEGINI GEOM 136 : * 137 : * 138 : * 139 : DO 10 IEL=1,NBELEM 140 : * 141 : * ON CHERCHE LES COORDONNEES DES NOEUDS DE L'ELEMENT IEL, 142 : * DANS LE REPERE GLOBAL 143 : * 143 : CALL DOXE(XCOOR,IDIM,NBNN,NUM,IEL,XE) 144 : * 145 : * 146 : * CALCUL DES AXES LOCAUX A TOUS LES NOEUDS DE L'ELEMENT 147 : * 148 : * 148 : CALL CQ8LOC (XE,NBNN,MINTE1.SHPTOT,TXR,IRR) 149 : IF(IRR.EQ.0)THEN 150 : * 151 : * ECHEC DANS LE CALCUL DES AXES LOCAUX 152 : * 152 : CALL ERREUR (515) 153 : SEGSUP ,GEOM,XVAL 154 : SEGDES,MELEME,MINTE,MINTE1 155 : RETURN 156 : ENDIF 157 : * 158 : * ON CHERCHE LES EPAISSEURS ET LES EXCENTREMENTS 159 : DO 20 IG=1,NBNN 160 : MELVAL=IPEPAI 161 : IGMN=MIN(IG,VELCHE(/1)) 162 : IBMN=MIN(IEL,VELCHE(/2)) 163 : EP(IG)=VELCHE(IGMN,IBMN) 164 : IF(IPEXCE.NE.0)THEN 165 : MELVAL=IPEXCE 166 : IGMN=MIN(IG,VELCHE(/1)) 167 : IBMN=MIN(IEL,VELCHE(/2)) 168 : EXC(IG)=VELCHE(IGMN,IBMN) 169 : ELSE 170 : EXC(IG)=XZERO 171 : ENDIF 172 : 20 CONTINUE 173 : NPG1=NPG2/2 174 : * 175 : * BOUCLE SUR LES POINTS DE GAUSS 176 : * 177 : DO 50 IGAU = 1,NPG2 178 : * 179 : * 180 : * CALCUL DU JACOBIEN ET DE SON DETERMINENT EN CE POINT DE GAUSS 181 : * 182 : E3=DZEGAU(IGAU) 183 : * 183 : CALL CQ8JCE(IGAU,NBNN,E3,XE,EP,EXC,TXR,SHPTOT,XJ,DJAC,IRR) 184 : IF (IRR.LT.0)THEN 185 : * JACOBIEN NUL DANS L'ELEMENT IEL 186 : INTERR(1)=IEL 186 : CALL ERREUR (405) 187 : SEGSUP ,GEOM,XVAL 188 : SEGDES,MELEME,MINTE,MINTE1 189 : RETURN 190 : ENDIF 191 : * 192 : * DETERMINATION DES COSINUS DIRECTEURS DES AXES LOCAUX EN CE POINT 193 : * 194 : * 195 : DO 30 I=1,3 196 : DO 30 J=1,2 197 : K=3*(J-1)+I 198 : TT(K) = XJ(J,I) 199 : 30 CONTINUE 200 : * 201 : * PRODUITS VECTORIELS ET NORMALISATIONS 202 : * 202 : CALL CROSS2(TT(1),TT(4),TT(7),IRR) 202 : CALL CROSS2(TT(7),TT(1),TT(4),IRR) 202 : CALL CROSS2(TT(4),TT(7),TT(1),IRR) 203 : * 204 : IF (NUDIR1 .EQ. 1) THEN 205 : XDIR1 = XDIR2 206 : YDIR1 = YDIR2 207 : ZDIR1 = ZDIR2 208 : ELSE 209 : * OPTION "RADIAL": L'ORIENTATION DE L'ORTHOTROPIE EST 210 : * DETERMINEE A PARTIR DU VECTEUR DE VALEUR (PTGAUSS - P1 211 : XDIR1 = - XDIR2 212 : YDIR1 = - YDIR2 213 : ZDIR1 = - ZDIR2 214 : DO 40 INOE=1,NBNN 215 : XDIR1 = XDIR1 + SHPTOT(1,INOE,IGAU)*(XE(1,INOE)+ 216 : 1 UNDEMI*EP(INOE)*E3*TXR(1,3,INOE)+EXC(INOE)*TXR(1,3,INOE)) 217 : YDIR1 = YDIR1 + SHPTOT(1,INOE,IGAU)*(XE(2,INOE)+ 218 : 1 UNDEMI*EP(INOE)*E3*TXR(2,3,INOE)+EXC(INOE)*TXR(2,3,INOE)) 219 : ZDIR1 = ZDIR1 + SHPTOT(1,INOE,IGAU)*(XE(3,INOE)+ 220 : 1 UNDEMI*EP(INOE)*E3*TXR(3,3,INOE)+EXC(INOE)*TXR(3,3,INOE)) 221 : 40 CONTINUE 222 : XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2) 223 : XDIR1 = XDIR1 / XNORM 224 : YDIR1 = YDIR1 / XNORM 225 : ZDIR1 = ZDIR1 / XNORM 226 : END IF 227 : XI=TT(1) 228 : YI=TT(2) 229 : ZI=TT(3) 230 : XN=TT(7) 231 : YN=TT(8) 232 : ZN=TT(9) 233 : * 234 : * PROJECTION SUR LE PLAN TANGENT LE VECTEUR D'ORIENTATION DE 235 : * L'ORTROTHOPIE. 236 : * 237 : P1N = XDIR1*XN + YDIR1*YN + ZDIR1*ZN 238 : IF (ABS(P1N) .GT. COS1D) THEN 239 : * DIRECTION FOURNIE ORTHOGONALE A LA COQUE. 239 : CALL ERREUR (344) 240 : SEGSUP ,GEOM,XVAL 241 : SEGDES,MELEME,MINTE,MINTE1 242 : RETURN 243 : END IF 244 : XDIR1 = XDIR1 - P1N*XN 245 : YDIR1 = YDIR1 - P1N*YN 246 : ZDIR1 = ZDIR1 - P1N*ZN 247 : XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2) 248 : XDIR1 = XDIR1 / XNORM 249 : YDIR1 = YDIR1 / XNORM 250 : ZDIR1 = ZDIR1 / XNORM 251 : * 252 : * ANGLE DU VECTEUR PROJETE AVEC LA DIRECTION 1 DE LA COQUE: 253 : COSA = XI * XDIR1 + YI * YDIR1 + ZI * ZDIR1 254 : SINA = XN * (YI*ZDIR1 - ZI*YDIR1) 255 : & + YN * (ZI*XDIR1 - XI*ZDIR1) 256 : & + ZN * (XI*YDIR1 - YI*XDIR1) 257 : * 258 : * 259 : IF (NUDIR2 .EQ. 2) THEN 260 : * ON AJOUTE PI/2 A L'ANGLE: 261 : REEL1 = COSA 262 : COSA = - SINA 263 : SINA = REEL1 264 : ELSE IF (NUDIR2 .EQ. 3) THEN 265 : COSB = COS(ANG) 266 : SINB = SIN(ANG) 266 : CALL EXCOO1 (NUMP3, XDIR1,YDIR1,ZDIR1,REEL1) 267 : REEL1 = XN * XDIR1 + YN * YDIR1 + ZN * ZDIR1 268 : IF (REEL1 .GT. XPETIT) THEN 269 : * ON AJOUTE "ANGLE": 270 : REEL1 = SINA*COSB + COSA*SINB 271 : COSA = COSA*COSB - SINA*SINB 272 : SINA = REEL1 273 : ELSE IF (REEL1 .LT. (-XPETIT) ) THEN 274 : * ON RETRANCHE "ANGLE": 275 : REEL1 = SINA*COSB - COSA*SINB 276 : COSA = COSA*COSB + SINA*SINB 277 : SINA = REEL1 278 : ELSE 279 : * POINT P3 DONNE POUR ORIENTATION INAPROPRIE. 279 : CALL ERREUR (278) 280 : SEGSUP ,GEOM,XVAL 281 : SEGDES,MELEME,MINTE,MINTE1 282 : RETURN 283 : END IF 284 : END IF 285 : * 286 : CVAL(IGAU,IEL) = COSA 287 : SVAL(IGAU,IEL) = SINA 288 : * 289 : 50 CONTINUE 290 : * 291 : 10 CONTINUE 292 : * 293 : * 294 : SEGSUP ,GEOM 295 : SEGDES,XVAL 296 : SEGDES,MELEME,MINTE,MINTE1 297 : * 298 : RETURN 299 : END 300 : 301 : 302 : 303 : 304 :
© Cast3M 2003 - All rights reserved.
Disclaimer