Télécharger idmat5.eso

Retour à la liste

Numérotation des lignes :

  1. C IDMAT5 SOURCE BP208322 16/12/14 21:15:15 9258
  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. *
  123. CALL EXCOO1 (NUMP1,XDIR1,YDIR1,ZDIR1,REEL1)
  124. IF (NUDIR1 .EQ. 1) THEN
  125. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  126. XDIR1 = XDIR1 / XNORM
  127. YDIR1 = YDIR1 / XNORM
  128. ZDIR1 = ZDIR1 / XNORM
  129. END IF
  130. XDIR2 = XDIR1
  131. YDIR2 = YDIR1
  132. ZDIR2 = ZDIR1
  133. *
  134. SEGINI XVAL
  135. IPVAL=XVAL
  136. SEGINI GEOM
  137. *
  138. *
  139. *
  140. DO 10 IEL=1,NBELEM
  141. *
  142. * ON CHERCHE LES COORDONNEES DES NOEUDS DE L'ELEMENT IEL,
  143. * DANS LE REPERE GLOBAL
  144. *
  145. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IEL,XE)
  146. *
  147. *
  148. * CALCUL DES AXES LOCAUX A TOUS LES NOEUDS DE L'ELEMENT
  149. *
  150. *
  151. CALL CQ8LOC (XE,NBNN,MINTE1.SHPTOT,TXR,IRR)
  152. IF(IRR.EQ.0)THEN
  153. *
  154. * ECHEC DANS LE CALCUL DES AXES LOCAUX
  155. *
  156. CALL ERREUR (515)
  157. SEGSUP ,GEOM,XVAL
  158. SEGDES,MELEME,MINTE,MINTE1
  159. RETURN
  160. ENDIF
  161. *
  162. * ON CHERCHE LES EPAISSEURS ET LES EXCENTREMENTS
  163. DO 20 IG=1,NBNN
  164. MELVAL=IPEPAI
  165. IGMN=MIN(IG,VELCHE(/1))
  166. IBMN=MIN(IEL,VELCHE(/2))
  167. EP(IG)=VELCHE(IGMN,IBMN)
  168. IF(IPEXCE.NE.0)THEN
  169. MELVAL=IPEXCE
  170. IGMN=MIN(IG,VELCHE(/1))
  171. IBMN=MIN(IEL,VELCHE(/2))
  172. EXC(IG)=VELCHE(IGMN,IBMN)
  173. ELSE
  174. EXC(IG)=XZERO
  175. ENDIF
  176. 20 CONTINUE
  177. NPG1=NPG2/2
  178. *
  179. * BOUCLE SUR LES POINTS DE GAUSS
  180. *
  181. DO 50 IGAU = 1,NPG2
  182. *
  183. *
  184. * CALCUL DU JACOBIEN ET DE SON DETERMINENT EN CE POINT DE GAUSS
  185. *
  186. E3=DZEGAU(IGAU)
  187. *
  188. CALL CQ8JCE(IGAU,NBNN,E3,XE,EP,EXC,TXR,SHPTOT,XJ,DJAC,IRR)
  189. IF (IRR.LT.0)THEN
  190. * JACOBIEN NUL DANS L'ELEMENT IEL
  191. INTERR(1)=IEL
  192. CALL ERREUR (405)
  193. SEGSUP ,GEOM,XVAL
  194. SEGDES,MELEME,MINTE,MINTE1
  195. RETURN
  196. ENDIF
  197. *
  198. * DETERMINATION DES COSINUS DIRECTEURS DES AXES LOCAUX EN CE POINT
  199. *
  200. *
  201. DO 30 I=1,3
  202. DO 30 J=1,2
  203. K=3*(J-1)+I
  204. TT(K) = XJ(J,I)
  205. 30 CONTINUE
  206. *
  207. * PRODUITS VECTORIELS ET NORMALISATIONS
  208. *
  209. CALL CROSS2(TT(1),TT(4),TT(7),IRR)
  210. CALL CROSS2(TT(7),TT(1),TT(4),IRR)
  211. CALL CROSS2(TT(4),TT(7),TT(1),IRR)
  212. *
  213. IF (NUDIR1 .EQ. 1) THEN
  214. XDIR1 = XDIR2
  215. YDIR1 = YDIR2
  216. ZDIR1 = ZDIR2
  217. ELSE
  218. * OPTION "RADIAL": L'ORIENTATION DE L'ORTHOTROPIE EST
  219. * DETERMINEE A PARTIR DU VECTEUR DE VALEUR (PTGAUSS - P1
  220. XDIR1 = - XDIR2
  221. YDIR1 = - YDIR2
  222. ZDIR1 = - ZDIR2
  223. DO 40 INOE=1,NBNN
  224. XDIR1 = XDIR1 + SHPTOT(1,INOE,IGAU)*(XE(1,INOE)+
  225. 1 UNDEMI*EP(INOE)*E3*TXR(1,3,INOE)+EXC(INOE)*TXR(1,3,INOE))
  226. YDIR1 = YDIR1 + SHPTOT(1,INOE,IGAU)*(XE(2,INOE)+
  227. 1 UNDEMI*EP(INOE)*E3*TXR(2,3,INOE)+EXC(INOE)*TXR(2,3,INOE))
  228. ZDIR1 = ZDIR1 + SHPTOT(1,INOE,IGAU)*(XE(3,INOE)+
  229. 1 UNDEMI*EP(INOE)*E3*TXR(3,3,INOE)+EXC(INOE)*TXR(3,3,INOE))
  230. 40 CONTINUE
  231. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  232. XDIR1 = XDIR1 / XNORM
  233. YDIR1 = YDIR1 / XNORM
  234. ZDIR1 = ZDIR1 / XNORM
  235. END IF
  236. XI=TT(1)
  237. YI=TT(2)
  238. ZI=TT(3)
  239. XN=TT(7)
  240. YN=TT(8)
  241. ZN=TT(9)
  242. *
  243. * PROJECTION SUR LE PLAN TANGENT LE VECTEUR D'ORIENTATION DE
  244. * L'ORTROTHOPIE.
  245. *
  246. P1N = XDIR1*XN + YDIR1*YN + ZDIR1*ZN
  247. IF (ABS(P1N) .GT. COS1D) THEN
  248. * DIRECTION FOURNIE ORTHOGONALE A LA COQUE.
  249. CALL ERREUR (344)
  250. SEGSUP ,GEOM,XVAL
  251. SEGDES,MELEME,MINTE,MINTE1
  252. RETURN
  253. END IF
  254. XDIR1 = XDIR1 - P1N*XN
  255. YDIR1 = YDIR1 - P1N*YN
  256. ZDIR1 = ZDIR1 - P1N*ZN
  257. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  258. XDIR1 = XDIR1 / XNORM
  259. YDIR1 = YDIR1 / XNORM
  260. ZDIR1 = ZDIR1 / XNORM
  261. *
  262. * ANGLE DU VECTEUR PROJETE AVEC LA DIRECTION 1 DE LA COQUE:
  263. COSA = XI * XDIR1 + YI * YDIR1 + ZI * ZDIR1
  264. SINA = XN * (YI*ZDIR1 - ZI*YDIR1)
  265. & + YN * (ZI*XDIR1 - XI*ZDIR1)
  266. & + ZN * (XI*YDIR1 - YI*XDIR1)
  267. *
  268. *
  269. IF (NUDIR2 .EQ. 2) THEN
  270. * 'PERPENDICULAIRE' -> ON AJOUTE PI/2 A L'ANGLE:
  271. REEL1 = COSA
  272. COSA = - SINA
  273. SINA = REEL1
  274. ELSE IF (NUDIR2 .EQ. 3) THEN
  275. * 'INCLINE' -> ON TOURNE de +/-ANG
  276. COSB = COS(ANG)
  277. SINB = SIN(ANG)
  278. c si pas de point P3, on oriente selon la normale a la coque
  279. if (NUMP3.eq.0) then
  280. REEL1=1.D0
  281. else
  282. CALL EXCOO1 (NUMP3,XDIR3,YDIR3,ZDIR3,REEL1)
  283. XNORM = SQRT(XDIR3**2 + YDIR3**2 + ZDIR3**2)
  284. IF(XNORM .LT. XPETIT) THEN
  285. C POINT P3 est trop proche de l'origine
  286. CALL ERREUR (239)
  287. RETURN
  288. ENDIF
  289. XDIR3 = XDIR3 / XNORM
  290. YDIR3 = YDIR3 / XNORM
  291. ZDIR3 = ZDIR3 / XNORM
  292. REEL1 = XN * XDIR3 + YN * YDIR3 + ZN * ZDIR3
  293. endif
  294. IF (REEL1 .GT. XPETIT) THEN
  295. * prod scal >0 -> ON AJOUTE "ANGLE":
  296. REEL1 = SINA*COSB + COSA*SINB
  297. COSA = COSA*COSB - SINA*SINB
  298. SINA = REEL1
  299. ELSE IF (REEL1 .LT. (-XPETIT) ) THEN
  300. * prod scal >0 -> ON RETRANCHE "ANGLE":
  301. REEL1 = SINA*COSB - COSA*SINB
  302. COSA = COSA*COSB + SINA*SINB
  303. SINA = REEL1
  304. ELSE
  305. * POINT P3 DONNE POUR ORIENTATION INAPROPRIE.
  306. CALL ERREUR (278)
  307. SEGSUP ,GEOM,XVAL
  308. SEGDES,MELEME,MINTE,MINTE1
  309. RETURN
  310. END IF
  311. END IF
  312. *
  313. CVAL(IGAU,IEL) = COSA
  314. SVAL(IGAU,IEL) = SINA
  315. *
  316. 50 CONTINUE
  317. *
  318. 10 CONTINUE
  319. *
  320. *
  321. SEGSUP ,GEOM
  322. SEGDES,XVAL
  323. SEGDES,MELEME,MINTE,MINTE1
  324. *
  325. RETURN
  326. END
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales