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

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