Télécharger idmat6.eso

Retour à la liste

Numérotation des lignes :

  1. C IDMAT6 SOURCE CB215821 16/04/21 21:17:05 8920
  2. SUBROUTINE IDMAT6 (NUMP1,NUMP2,NUDIR1,NUDIR2,ANG,
  3. & MELEME,IPVAL,NPG2)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6. *
  7. ************************************************************************
  8. *
  9. * I D M A T 6
  10. * -----------
  11. *
  12. * FONCTION:
  13. * ---------
  14. *
  15. * RECUPERATION DES COORDONNEES DES AXES OTHOTROPIE (OU ANISOTROPIE)
  16. *
  17. *
  18. *
  19. *
  20. * MODULES UTILISES:
  21. * -----------------
  22. *
  23. -INC SMCOORD
  24. -INC CCOPTIO
  25. -INC CCREEL
  26. -INC SMELEME
  27. *
  28. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  29. * -----------
  30. *
  31. * NUMP1 (E) NUMERO DU POINT P1 ASSOCIE A NUDIR1
  32. * NUMP2 (E) NUMERO DU POINT P2 ASSOCIE A NUDIR1
  33. * NUDIR1 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:
  34. * "DIRECTION", "RADIAL"
  35. * NUDIR2 (E) NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:
  36. * "PARALLELE", "PERPENDIC.", "INCLINE",
  37. * POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE.
  38. * ANG (E) ANGLE UTILISE DANS LA DEFINITION DES DIRECTIONS
  39. * D ORTHOTROPIE (INCLINE)
  40. * MELEME (E) POINTEUR DE "MAILLAGE" A 1 SEUL TYPE D'ELEMENT.
  41. * XVAL (S) DIRECTIONS D'ORTHOTROPIE PAR ELEMENT,
  42. * ON FOURNIT LES COSINUS DIRECTEURS DE L'AXE 1
  43. * EN BIDIM ,ET LES COSINUS DIRECTEURS DES AXES 1 ET
  44. * 2 EN TRIDIM,PAR RAPPORT AU REPERE LOCAL DE L'ELEMENT
  45. *
  46. *
  47. * VARIABLES:
  48. *-----------
  49. * VGLOB1,VGLOB2,VGLOB3 = COS.DIRECTEURS DES AXES 1, 2 ET 3 D'ORTH. PAR
  50. * RAPPOT AU REPERE GLOBAL
  51. *
  52. *
  53. * REMARQUES:
  54. * ----------
  55. *
  56. * LES DIRECTION P1 ET P2 DEFINISSENT LE PLAN QUI CONTIENT LES AXES 1,2
  57. * NUDIR2 =1 SIGNIFIE QUE L'AXE 1 EST PARALLELE A LA DIRECTION P1,
  58. * NUDIR2 =2 SIGNIFIE QUE L'AXE 1 EST PERPENDICULAIRE A LA DIRECTION P1,
  59. * NUDIR2 =3 SIGNIFIE QUE L'AXE 1 FAIT AN ANGLE DE (ANG) AVEC LA
  60. * DIRECTION P1
  61. *
  62. *
  63. * AUTEUR, DATE DE CREATION:
  64. * -------------------------
  65. *
  66. * P. DOWLATYARI OCT. 1990
  67. *
  68. * LANGAGE:
  69. * --------
  70. * FORTRAN 77 + ESOPE
  71. *
  72. *
  73. ************************************************************************
  74. *
  75. DIMENSION VGLOB1(3),VGLOB2(3)
  76. DIMENSION VPT1(3),VPT2(3)
  77. *
  78. SEGMENT YVAL
  79. REAL*8 VLOC1(IDIM,NPG2,NBELEM)
  80. REAL*8 VLOC2(IDIM,NPG2,NBELEM)
  81. ENDSEGMENT
  82. *
  83. SEGACT MELEME
  84. NBELEM=NUM(/2)
  85. *
  86. * DIRECTIONS FOURNIES
  87. IF (IDIM.EQ.2)THEN
  88. *
  89. * COORDONNEES DU POINT P1
  90. *
  91. CALL EXCOO1 (NUMP1,VPT1(1),VPT1(2),VPT1(3),REEL1)
  92. *
  93. IF(NUDIR1.NE.2) THEN
  94. *
  95. * NORMALISATION VECT1
  96. *
  97. VNORM=SQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2))
  98. IF (VNORM.EQ.0.) THEN
  99. CALL ERREUR (524)
  100. SEGDES,MELEME
  101. RETURN
  102. ENDIF
  103. *
  104. VGLOB1(1)=VPT1(1)/VNORM
  105. VGLOB1(2)=VPT1(2)/VNORM
  106. ENDIF
  107. *
  108. IF(NUDIR1.EQ.2) THEN
  109. VGLOB1(1)=VPT2(1)-VPT1(1)
  110. VGLOB1(2)=VPT2(2)-VPT1(2)
  111. *
  112. * NORMALISATION VECT1
  113. *
  114. VNORM=SQRT(VGLOB1(1)*VGLOB1(1)+VGLOB1(2)*VGLOB1(2))
  115. VGLOB1(1)=VGLOB1(1)/VNORM
  116. VGLOB1(2)=VGLOB1(2)/VNORM
  117. GO TO 15
  118. ENDIF
  119. *
  120. *
  121. IF(NUDIR2.EQ.2)THEN
  122. *
  123. * ON EFFECTUE UNE ROTATION DE 90 DEGRE AUTOUR DE L'AXE 3
  124. *
  125. REEL1=VGLOB1(1)
  126. VGLOB1(1)=VGLOB2(1)
  127. VGLOB2(1)=-REEL1
  128. REEL1=VGLOB1(2)
  129. VGLOB1(2)=VGLOB2(2)
  130. VGLOB2(2)=-REEL1
  131. *
  132. ELSEIF(NUDIR2.EQ.3)THEN
  133. *
  134. * ON EFFECTUE UNE ROTATION DE (ANG) DEGRE AUTOUR DE L'AXE 3
  135. *
  136. COSA=COS(ANG)
  137. SINA=SIN(ANG)
  138. REEL1=VGLOB1(1)
  139. VGLOB1(1)=VGLOB1(1)*COSA+VGLOB2(1)*SINA
  140. VGLOB2(1)=-REEL1*SINA+VGLOB2(1)*COSA
  141. REEL1=VGLOB1(2)
  142. VGLOB1(2)=VGLOB1(2)*COSA+VGLOB2(2)*SINA
  143. VGLOB2(2)=-REEL1*SINA+VGLOB2(2)*COSA
  144. ENDIF
  145. *
  146. ELSEIF(IDIM.EQ.3)THEN
  147. *
  148. * COORDONNEES DU POINT P1
  149. *
  150. CALL EXCOO1 (NUMP1,VPT1(1),VPT1(2),VPT1(3),REEL1)
  151. *
  152. * COORDONNEES DU POINT P2
  153. *
  154. CALL EXCOO1 (NUMP2,VPT2(1),VPT2(2),VPT2(3),REEL1)
  155. *
  156. * Verification de la normalité des deux vecteurs donnés
  157. *
  158. PS = ABS(VPT1(1)*VPT2(1)+VPT1(2)*VPT2(2)+VPT1(3)*VPT2(3))
  159. V1N = SQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2)+VPT1(3)*VPT1(3))
  160. V2N = SQRT(VPT2(1)*VPT2(1)+VPT2(2)*VPT2(2)+VPT2(3)*VPT2(3))
  161. PS = PS/(V1N*V2N)
  162. IF(PS.GT.1D-4) THEN
  163. CALL ERREUR (524)
  164. SEGDES,MELEME
  165. RETURN
  166. ENDIF
  167. *
  168. IF(NUDIR1.NE.2) THEN
  169. *
  170. * NORMALISATION VECT1
  171. *
  172. VNORM=SQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2)+
  173. . VPT1(3)*VPT1(3))
  174. IF (VNORM.EQ.0.) THEN
  175. CALL ERREUR (524)
  176. SEGDES,MELEME
  177. RETURN
  178. ENDIF
  179. VGLOB1(1)=VPT1(1)/VNORM
  180. VGLOB1(2)=VPT1(2)/VNORM
  181. VGLOB1(3)=VPT1(3)/VNORM
  182. ENDIF
  183. *
  184. IF(NUDIR1.EQ.2) THEN
  185. VGLOB1(1)=VPT2(1)-VPT1(1)
  186. VGLOB1(2)=VPT2(2)-VPT1(2)
  187. VGLOB1(3)=VPT2(3)-VPT1(3)
  188. *
  189. * NORMALISATION VECT1
  190. *
  191. VNORM=SQRT(VGLOB1(1)*VGLOB1(1)+VGLOB1(2)*VGLOB1(2)+
  192. . VGLOB1(3)*VGLOB1(3))
  193. VGLOB1(1)=VGLOB1(1)/VNORM
  194. VGLOB1(2)=VGLOB1(2)/VNORM
  195. VGLOB1(3)=VGLOB1(3)/VNORM
  196. GO TO 15
  197. ENDIF
  198. *
  199. * NORMALISATION VECT2
  200. *
  201. VNORM2=SQRT(VPT2(1)*VPT2(1)+VPT2(2)*VPT2(2)+
  202. . VPT2(3)*VPT2(3))
  203. IF (VNORM2.EQ.0.) THEN
  204. CALL ERREUR (524)
  205. SEGDES,MELEME
  206. RETURN
  207. ENDIF
  208. VGLOB2(1)=VPT2(1)/VNORM2
  209. VGLOB2(2)=VPT2(2)/VNORM2
  210. VGLOB2(3)=VPT2(3)/VNORM2
  211. *
  212. IF(NUDIR2.EQ.2)THEN
  213. *
  214. * ON EFFECTUE UNE ROTATION DE 90 DEGRE AUTOUR DE L'AXE 3
  215. *
  216. REEL1=VGLOB1(1)
  217. VGLOB1(1)=VGLOB2(1)
  218. VGLOB2(1)=-REEL1
  219. REEL1=VGLOB1(2)
  220. VGLOB1(2)=VGLOB2(2)
  221. VGLOB2(2)=-REEL1
  222. REEL1=VGLOB1(3)
  223. VGLOB1(3)=VGLOB2(3)
  224. VGLOB2(3)=-REEL1
  225. *
  226. ELSEIF(NUDIR2.EQ.3)THEN
  227. *
  228. * ON EFFECTUE UNE ROTATION DE (ANG) DEGRE AUTOUR DE L'AXE 3
  229. *
  230. COSA=COS(ANG)
  231. SINA=SIN(ANG)
  232. REEL1=VGLOB1(1)
  233. VGLOB1(1)=VGLOB1(1)*COSA+VGLOB2(1)*SINA
  234. VGLOB2(1)=-REEL1*SINA+VGLOB2(1)*COSA
  235. REEL1=VGLOB1(2)
  236. VGLOB1(2)=VGLOB1(2)*COSA+VGLOB2(2)*SINA
  237. VGLOB2(2)=-REEL1*SINA+VGLOB2(2)*COSA
  238. REEL1=VGLOB1(3)
  239. VGLOB1(3)=VGLOB1(3)*COSA+VGLOB2(3)*SINA
  240. VGLOB2(3)=-REEL1*SINA+VGLOB2(3)*COSA
  241. ENDIF
  242. ENDIF
  243. *
  244. *
  245. 15 CONTINUE
  246. *
  247. SEGINI YVAL
  248. IPVAL=YVAL
  249. *
  250. * BOUCLE SUR LES ELEMENTS
  251. *
  252. DO 10 IEL=1,NBELEM
  253. *
  254. DO 20 NC=1,IDIM
  255. DO 20 NV=1,NPG2
  256. VLOC1(NC,NV,IEL)=0.D0
  257. VLOC2(NC,NV,IEL)=0.D0
  258. 20 CONTINUE
  259. *
  260. * ON BOUCLE SUR LES POINTS DE GAUSS
  261. *
  262. DO 80 IGAU=1,NPG2
  263. IF(IDIM.EQ.2)THEN
  264. VLOC1(1,IGAU,IEL)=VLOC1(1,IGAU,IEL)+VGLOB1(1)
  265. VLOC1(2,IGAU,IEL)=VLOC1(2,IGAU,IEL)+VGLOB1(2)
  266. *
  267. ELSEIF(IDIM.EQ.3)THEN
  268. DO 40 J=1,3
  269. VLOC1(J,IGAU,IEL)=VLOC1(J,IGAU,IEL)+VGLOB1(J)
  270. VLOC2(J,IGAU,IEL)=VLOC2(J,IGAU,IEL)+VGLOB2(J)
  271. 40 CONTINUE
  272. ENDIF
  273. *
  274. 80 CONTINUE
  275. 10 CONTINUE
  276. *
  277. * DESACTIVATION DES SEGMENTS
  278. *
  279. SEGDES,YVAL,MELEME
  280. *
  281. RETURN
  282. END
  283.  
  284.  
  285.  
  286.  
  287.  

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