Télécharger idmat3.eso

Retour à la liste

Numérotation des lignes :

  1. C IDMAT3 SOURCE BP208322 16/12/14 21:15:14 9258
  2. SUBROUTINE IDMAT3 (NUDIR1,NUMP1,NUDIR2,NUMP3,ANG,MELEME,MINTE,
  3. 1 NPG2,ICALC,MFR,IPVAL)
  4. *
  5. ************************************************************************
  6. *
  7. * I D M A T 3
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * DEFINITION DES DIRECTIONS D'ORTHOTROPIE D'UNE COQUE EN 3D ET D'UN
  14. * JOINT EN 3D JOT3 ET JOI4.
  15. * (MODIF. DE DIMENSION A FAIRE POUR PLUS DE 8 NOEUDS)
  16. *
  17. * REMARQUE : ROUTINE ANALOGUE A MATEO2 ET COBIOR
  18. *
  19. * MODULES UTILISES:
  20. * -----------------
  21. *
  22. IMPLICIT INTEGER(I-N)
  23. -INC CCOPTIO
  24. -INC CCREEL
  25. -INC SMELEME
  26. -INC SMINTE
  27. -INC SMCOORD
  28. *
  29. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  30. * -----------
  31. *
  32. * NUDIR1 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:
  33. * "DIRECTION", "RADIAL",
  34. * POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE.
  35. * NUMP1 (E) NUMERO DU POINT P ASSOCIE A NUDIR1
  36. * NUDIR2 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:
  37. * "PARALLELE", "PERPENDIC.", "INCLINE",
  38. * POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE.
  39. * NUMP3 (E) NUMERO DU POINT P ASSOCIE A NUDIR2
  40. * ANG (E) ANGLE UTILISE DANS LA DEFINITION DES DIRECTIONS
  41. * D ORTHOTROPIE (INCLINE)
  42. * MELEME (E) POINTEUR DE "MAILLAGE" A 1 SEUL TYPE D'ELEMENT.
  43. * MINTE (E) SEGMENT CONTENANT LES FONCTIONS DE FORME, NECESSAIRE
  44. * AVEC L'OPTION "RADIAL".
  45. * XVAL (S) DIRECTIONS D'ORTHOTROPIE, PAR ELEMENT ET, SI OPTION
  46. * "RADIAL", PAR POINT DE GAUSS.
  47. * ON FOURNIT LE COSINUS ET LE SINUS DE L'ANGLE QUE FAIT
  48. * LA DIRECTION 1 D'ORTHOTROPIE AVEC LA DIRECTION 1 DE
  49. * L'ELEMENT.
  50. * MFR NUMERO DE FORMULATION D'ELEMENT.
  51. * =3 SI COQUE @ 3 NOEUDS.
  52. * =9 SI COQUE @ 4 NOEUDS.
  53. * =35 SI JOINT @ 6 OU @ 8 NOEUDS.
  54. * ICALC FLAG POUR ORIENTER LE CALCUL (POUR COQ EN BIDI)
  55. * +IDIM (E) VOIR LE COMMUN "COPTIO".
  56. * +MCOORD (E) VOIR LE COMMUN "COPTIO". Segment suppos{ actif.
  57. *
  58. INTEGER NUDIR1,NUMP1,NUDIR2,NUMP3,ICALC
  59. INTEGER NPG2,IPVAL
  60. REAL*8 ANG
  61. *
  62. * VARIABLES:
  63. * ----------
  64. *
  65. * COSA = COSINUS DE L'ANGLE DE LA DIRECTION 1 D'ORTHOTROPIE AVEC
  66. * LA DIRECTION 1 DE L'ELEMENT.
  67. * SINA = SINUS DE L'ANGLE DE LA DIRECTION 1 D'ORTHOTROPIE AVEC
  68. * LA DIRECTION 1 DE L'ELEMENT.
  69. * XI,YI,ZI = COORDONNEES DE LA DIRECTION 1 DANS LE REPERE LOCAL.
  70. * XN,YN,ZN = COORDONNEES DE LA NORMALE A L'ELEMENT.
  71. * XDIR1,.. = COORDONNEES DE LA DIRECTION FOURNIE POUR DETERMINER LES
  72. * DIRECTIONS D'ORTHOTROPIE.
  73. * XE = COORDONNEES DES NOEUDS DE L'ELEMENT.
  74. *
  75. REAL*8 XN,YN,ZN,XI,YI,ZI,XJ,YJ,ZJ,XNORM,P1N,COSA,SINA
  76. & ,XDIR1,YDIR1,ZDIR1,XDIR2,YDIR2,ZDIR2,COSB,SINB
  77. & ,REEL1,XDIR3,YDIR3,ZDIR3
  78. REAL*8 XE(3,8),XEL(3,8),BPSS(3,3)
  79. *
  80. * CONSTANTES:
  81. * -----------
  82. *
  83. * COS1D = VALEUR APPROCHEE DE COSINUS(1 DEGRE).
  84. *
  85. REAL*8 COS1D
  86. PARAMETER (COS1D = 0.999 85 D0)
  87. *
  88. * REMARQUES:
  89. * ----------
  90. *
  91. * 1. LE PLAN MOYEN EST DEFINI PAR LES SOUS-PROGRAMMES USUELS DE
  92. * CALCUL DE REPERE POUR LES ELEMENTS CONSIDERES.
  93. *
  94. * 2. HYP.: LA PLACE DES NOMS DE COMPOSANTES DANS "NOMYO" (COMMUN
  95. * "CHAMP") EST FIGEE. C'EST UNE HYPOTHESE COURAMMENT UTILISEE POUR
  96. * D'AUTRES TABLEAUX DE "CHAMP".
  97. *
  98. * AUTEUR, DATE DE CREATION:
  99. * -------------------------
  100. *
  101. * PASCAL MANIGOT 30 AVRIL 1987
  102. * P.M. 09/07/91: PRISE EN COMPTE DES DIFFERENCES DE REPERAGE ENTRE
  103. * TRIANGLE(COQ3 ET DKT) ET QUADRANGLE (COQ4).
  104. *
  105. * LANGAGE:
  106. * --------
  107. *
  108. * ESOPE77 FORTRAN77 + EXTENSION: DECLARATION "REAL*8".
  109. *
  110. * MISE A NIVEAU DE MATR AVEC MATE
  111. * -------------------------------
  112. *
  113. * JM CAMPENON LE 30 08 90
  114. *
  115. ************************************************************************
  116. *
  117. C
  118. SEGMENT XVAL
  119. REAL*8 CVAL(NPG2,NBELEM),SVAL(NPG2,NBELEM)
  120. ENDSEGMENT
  121. C
  122. IF (ICALC.EQ.0) THEN
  123. SEGACT MELEME
  124. IF ((NUDIR1 .EQ. 2).OR.((NUDIR1.EQ.1).AND.(MFR.EQ.35)) )
  125. . SEGACT MINTE
  126. NBELEM=NUM(/2)
  127. NBNN =NUM(/1)
  128. *
  129. * DIRECTION FOURNIE, AVANT PROJECTION SUR LA COQUE.
  130. C
  131. C ON CHERCHE LE POINT NUMP1 RATACHER A LA DIRECTIVE DIRECTION
  132. C
  133. CALL EXCOO1 (NUMP1,XDIR1,YDIR1,ZDIR1,REEL1)
  134. IF (NUDIR1 .EQ. 1) THEN
  135. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  136. XDIR1 = XDIR1 / XNORM
  137. YDIR1 = YDIR1 / XNORM
  138. ZDIR1 = ZDIR1 / XNORM
  139. END IF
  140. XDIR2 = XDIR1
  141. YDIR2 = YDIR1
  142. ZDIR2 = ZDIR1
  143. C
  144. SEGINI XVAL
  145. IPVAL=XVAL
  146. C
  147. C
  148. C
  149. DO 100 IEL=1,NBELEM
  150. C
  151. CALL DOXE (XCOOR,IDIM,NBNN,NUM,IEL, XE)
  152. IF (MFR.EQ.35.AND.NBNN.EQ.8) THEN
  153. CALL JO4LOC(XE,SHPTOT,NBNN,XEL,BPSS,NOQUAL)
  154. ELSE IF (MFR.EQ.35.AND.NBNN.EQ.6) THEN
  155. CALL JT3LOC(XE,SHPTOT,NBNN,XEL,BPSS,NOQUAL)
  156. ELSE IF (MFR.EQ. 9.AND.NBNN.EQ.4) THEN
  157. CALL CQ4LOC (XE,XEL,BPSS,IRRT,0)
  158. ELSE
  159. * "MFR" EST SUPPOS{ VALOIR 3 (COQ3, DKT,DST)
  160. CALL VPAST (XE,BPSS)
  161. END IF
  162. XI = BPSS(1,1)
  163. YI = BPSS(1,2)
  164. ZI = BPSS(1,3)
  165. XN = BPSS(3,1)
  166. YN = BPSS(3,2)
  167. ZN = BPSS(3,3)
  168. *
  169. DO 120 INOG=1,NPG2
  170. *
  171. IF (NUDIR1 .EQ. 1) THEN
  172. XDIR1 = XDIR2
  173. YDIR1 = YDIR2
  174. ZDIR1 = ZDIR2
  175. ELSE
  176. * OPTION "RADIAL": L'ORIENTATION DE L'ORTHOTROPIE EST
  177. * DETERMINEE A PARTIR DU VECTEUR DE VALEUR (PTGAUSS - P1
  178. XDIR1 = - XDIR2
  179. YDIR1 = - YDIR2
  180. ZDIR1 = - ZDIR2
  181. DO 130 INOE=1,NBNN
  182. XDIR1 = XDIR1 + SHPTOT(1,INOE,INOG)*XE(1,INOE)
  183. YDIR1 = YDIR1 + SHPTOT(1,INOE,INOG)*XE(2,INOE)
  184. ZDIR1 = ZDIR1 + SHPTOT(1,INOE,INOG)*XE(3,INOE)
  185. 130 CONTINUE
  186. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  187. XDIR1 = XDIR1 / XNORM
  188. YDIR1 = YDIR1 / XNORM
  189. ZDIR1 = ZDIR1 / XNORM
  190. END IF
  191. *
  192. * PROJECTION SUR LA COQUE DU VECTEUR D'ORIENTATION DE
  193. * L'ORTROTHOPIE.
  194. *
  195. P1N = XDIR1*XN + YDIR1*YN + ZDIR1*ZN
  196. IF (ABS(P1N) .GT. COS1D) THEN
  197. * DIRECTION FOURNIE ORTHOGONALE A LA COQUE.
  198. CALL ERREUR (344)
  199. GOTO 9990
  200. END IF
  201. XDIR1 = XDIR1 - P1N*XN
  202. YDIR1 = YDIR1 - P1N*YN
  203. ZDIR1 = ZDIR1 - P1N*ZN
  204. XNORM = SQRT(XDIR1**2 + YDIR1**2 + ZDIR1**2)
  205. XDIR1 = XDIR1 / XNORM
  206. YDIR1 = YDIR1 / XNORM
  207. ZDIR1 = ZDIR1 / XNORM
  208. *
  209. * ANGLE DU VECTEUR PROJETE AVEC LA DIRECTION 1 DE LA COQUE:
  210. COSA = XI * XDIR1 + YI * YDIR1 + ZI * ZDIR1
  211. SINA = XN * (YI*ZDIR1 - ZI*YDIR1)
  212. & + YN * (ZI*XDIR1 - XI*ZDIR1)
  213. & + ZN * (XI*YDIR1 - YI*XDIR1)
  214. *
  215. *
  216. IF (NUDIR2 .EQ. 2) THEN
  217. * 'PERPENDICULAIRE' -> ON AJOUTE PI/2 A L'ANGLE:
  218. REEL1 = COSA
  219. COSA = - SINA
  220. SINA = REEL1
  221. ELSE IF (NUDIR2 .EQ. 3) THEN
  222. * 'INCLINE' -> ON TOURNE de +/-ANG
  223. COSB = COS(ANG)
  224. SINB = SIN(ANG)
  225. c si pas de point P3, on oriente selon la normale a la coque
  226. if (NUMP3.eq.0) then
  227. REEL1=1.D0
  228. else
  229. CALL EXCOO1 (NUMP3,XDIR3,YDIR3,ZDIR3,REEL1)
  230. XNORM = SQRT(XDIR3**2 + YDIR3**2 + ZDIR3**2)
  231. IF(XNORM .LT. XPETIT) THEN
  232. C POINT P3 est trop proche de l'origine
  233. CALL ERREUR (239)
  234. GOTO 9990
  235. ENDIF
  236. XDIR3 = XDIR3 / XNORM
  237. YDIR3 = YDIR3 / XNORM
  238. ZDIR3 = ZDIR3 / XNORM
  239. REEL1 = XN * XDIR3 + YN * YDIR3 + ZN * ZDIR3
  240. endif
  241. IF (REEL1 .GT. XPETIT) THEN
  242. * prod scal >0 -> ON AJOUTE "ANGLE":
  243. REEL1 = SINA*COSB + COSA*SINB
  244. COSA = COSA*COSB - SINA*SINB
  245. SINA = REEL1
  246. ELSE IF (REEL1 .LT. (-XPETIT) ) THEN
  247. * prod scal >0 -> ON RETRANCHE "ANGLE":
  248. REEL1 = SINA*COSB - COSA*SINB
  249. COSA = COSA*COSB + SINA*SINB
  250. SINA = REEL1
  251. ELSE
  252. C POINT P3 DONNE POUR ORIENTATION INAPROPRIE.
  253. CALL ERREUR (278)
  254. GOTO 9990
  255. END IF
  256. END IF
  257. C
  258. CVAL(INOG,IEL) = COSA
  259. SVAL(INOG,IEL) = SINA
  260. C
  261. 120 CONTINUE
  262. C
  263. 100 CONTINUE
  264. C
  265. C
  266. C
  267. SEGDES XVAL
  268. SEGDES,MELEME
  269. IF ((NUDIR1.EQ.2).OR.( (NUDIR1.EQ.1).AND.(MFR.EQ.35) ) )
  270. . SEGDES,MINTE
  271. C
  272. RETURN
  273. C
  274. 9990 CONTINUE
  275. SEGSUP XVAL
  276. SEGDES MELEME
  277. IF ((NUDIR1.EQ.2).OR.( (NUDIR1.EQ.1).AND.(MFR.EQ.35) ) )
  278. . SEGDES,MINTE
  279. RETURN
  280. C
  281. ELSE
  282. C
  283. C COQUES EN BIDIMENSIONNEL
  284. C
  285. SEGACT MELEME
  286. NBELEM=NUM(/2)
  287. C
  288. SEGINI XVAL
  289. IPVAL=XVAL
  290. C
  291. COSA=1.D0
  292. SINA=0.D0
  293. IF (NUDIR2.EQ.2) THEN
  294. COSA=0.D0
  295. SINA=1.D0
  296. ELSE IF (NUDIR2.EQ.3) THEN
  297. c bp : on ajoute cette option, mais resultats non garantis :
  298. COSA=COS(ANG)
  299. SINA=SIN(ANG)
  300. END IF
  301. C
  302. DO 1100 IB=1,NBELEM
  303. DO 1100 INOG=1,NPG2
  304. CVAL(INOG,IB)=COSA
  305. SVAL(INOG,IB)=SINA
  306. 1100 CONTINUE
  307. C
  308. SEGDES,XVAL
  309. SEGDES,MELEME
  310. C
  311. RETURN
  312. ENDIF
  313. C
  314. END
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  

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