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

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