Télécharger idmat6.eso

Retour à la liste

Numérotation des lignes :

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

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