Télécharger bbcalc.eso

Retour à la liste

Numérotation des lignes :

bbcalc
  1. C BBCALC SOURCE SP204843 25/07/11 21:15:02 12317
  2.  
  3. SUBROUTINE BBCALC(MELE,NBNN,MFR,IDIM,XE,
  4. 1 NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
  5. 2 NSTRS,LRE,IFOUR,NHRM,A,BB,
  6. 3 SHPTOT,SHP,BGENE,XDPGE,YDPGE,P,NOER)
  7.  
  8. *******************************************************************
  9. * projection de dN/dx dans l espace de dimension inferieure
  10. c=======================================================================
  11. c calcul des composantes de la matrice b-barre-dlatation
  12. c - en 2d: elements ict3,icq4,ict6
  13. c - en 3d: elements ....
  14. c calcul des coefficients de modification de la matrice b-barre-dilatation
  15. c - en 2d: elements icq8
  16. c - en 3d: elements ....
  17. c coefficients {a}={a1,a2,a3}
  18. c=======================================================================
  19. c input
  20. c mele = numero de l'element dans nomtp
  21. c nbnn = nombre de noeuds
  22. c mfr = formulation de l'element
  23. c idim = dimension espace
  24. c xe = coordonnees de l'element
  25. c nbpgau = nombre de points de gauss pour la rigidite
  26. c poigau = poids des points de gauss
  27. c qsigau,etagau,dzegau = coordonnees des points de gauss
  28. c nstrs = nombre de composantes de contraintes
  29. c lre = nombre de colonnes de la matrice b
  30. c ifour = ifour dans ccoptio
  31. c nhrm = numero du mode de fourier
  32. c xdpge,ydpge = coordonnees du point autour duquel se fait
  33. c le mouvement de la section
  34. c
  35. c output
  36. c tableau des coefficients de modification: a(4,*)
  37. c tableau des composantes bbarre-dilatation: bb(3,*)
  38. c=======================================================================
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8 (A-H,O-Z)
  41.  
  42. -INC CCREEL
  43. PARAMETER (XZer=0.D0, XUn=1.D0, X1s2=0.5D0, X1s4 = 0.25D0,
  44. & X2s3 = 0.666666666666666666666666666666666666666667D0,
  45. & X1s3 = 0.333333333333333333333333333333333333333333D0,
  46. & X1s6 = 0.166666666666666666666666666666666666666667D0)
  47.  
  48. DIMENSION XE(3,*), POIGAU(*),QSIGAU(*),ETAGAU(*),DZEGAU(*),
  49. & SHP(6,*),SHPTOT(6,NBNN,*),
  50. & A(4,*),BB(3,*),BGENE(NSTRS,*),P(4,*)
  51.  
  52. DIMENSION XNUM1(8),XNUM2(8),XNUM3(8)
  53.  
  54. * write(*,*) 'Entree dans le sousprogramme BBCALC'
  55. * write(*,*) 'Element :',MELE
  56. * write(*,*) 'Nombre de points Gauss : ', nbpgau
  57.  
  58. * Code erreur et pas CALL ERREUR pour rester en fortran 77
  59. NOER = 0
  60.  
  61. IF (MFR.NE.31) GOTO 666
  62. C=======================================================================
  63. C= Elements incompressibles implementes :
  64. C=======================================================================
  65. C= NOM : ICT3, ICQ4, ICT6, ICQ8, ICC8, ICT4, ICP6, IC20, IC10, IC15,
  66. C= MELE : 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 ,
  67. C= NOM : ICY5, IC13
  68. C= MELE : 273, 274
  69. C=======================================================================
  70.  
  71. C= 0 = Quelques initialisations ========================================
  72. IFR = IFOUR+4
  73. IF (IFR.LE.4 .OR. IFR.GE.7) THEN
  74. KINC = 2
  75. ELSE
  76. KINC = 3
  77. ENDIF
  78.  
  79. CALL ZERO(BB,3,60)
  80. IF (MELE.EQ.72 .OR. MELE.GE.76) THEN
  81. CALL ZERO(A,4,60)
  82. CALL ZERO(P,4,4)
  83. ENDIF
  84.  
  85. C= 1 = Branchement selon l'Element Fini BBAR ============================
  86. IF (MELE.EQ.273 .OR. MELE.EQ.274) GOTO 100
  87. GOTO ( 10, 20, 30, 40,100,100,100,100,100,100), (MELE-68)
  88. GOTO 999
  89.  
  90. 3 FORMAT (4(A,I1,A,I1,A,F10.4,2X))
  91. 4 FORMAT (3(A,I1,A,I1,A,F10.4,2X))
  92.  
  93. C=======================================================================
  94. C========== Elements MASSIFS INCOMPRESSIBLES BIDIMENSIONNELS ===========
  95. C=======================================================================
  96.  
  97. *-----------------------------------------------------------------------
  98. *----------------------------- Element ICT3 ----------------------------
  99. *-----------------------------------------------------------------------
  100. 10 CONTINUE
  101. * write(6,*) 'Element ICT3',ifour
  102. * write(6,*) 'Ecriture de la matrice xe[ ]'
  103. * write(6,3) (('xe(',i,',',j,')=',xe(i,j),i=1,2),j=1,3)
  104. GOTO (101,101,101,103),IFR
  105. GOTO 999
  106.  
  107. *--------contraintes planes ou deformations planes (ifour=-2,-1)
  108. 101 CONTINUE
  109. *--------donnee des composantes de bb-dil
  110. r_z = - XE(1,1)*XE(2,3) - XE(1,2)*XE(2,1) + XE(1,2)*XE(2,3)
  111. & + XE(1,1)*XE(2,2) + XE(1,3)*XE(2,1) - XE(1,3)*XE(2,2)
  112. * AIRE = X1s2 * r_z
  113. r_z = XUn / r_z
  114. BB(1,1) = (XE(2,2)-XE(2,3)) * r_z
  115. BB(2,2) = (XE(1,3)-XE(1,2)) * r_z
  116. BB(1,3) = (XE(2,3)-XE(2,1)) * r_z
  117. BB(2,4) = (XE(1,1)-XE(1,3)) * r_z
  118. BB(1,5) = (XE(2,1)-XE(2,2)) * r_z
  119. BB(2,6) = (XE(1,2)-XE(1,1)) * r_z
  120. * write(6,*) 'calcul de aire pour bbdil'
  121. * write(6,*) 'aire = ',AIRE
  122. * write(6,*) 'ecriture de la matrice bb'
  123. * write(6,3) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  124. GOTO 666
  125. *--------axisymetrique (ifour=0)
  126. 103 CONTINUE
  127. *--------donnee des composantes de bb-dil
  128. r_z = - XE(1,1)*XE(2,3) - XE(1,2)*XE(2,1) + XE(1,2)*XE(2,3)
  129. & + XE(1,1)*XE(2,2) + XE(1,3)*XE(2,1) - XE(1,3)*XE(2,2)
  130. * AIRE = X1s6 * r_z * (XE(1,1)+XE(1,2)+XE(1,3))
  131. r_z = XUn / r_z
  132. BB(1,1) = r_z * (XE(2,2)-XE(2,3))
  133. BB(2,2) = r_z * (XE(1,3)-XE(1,2))
  134. BB(1,3) = r_z * (XE(2,3)-XE(2,1))
  135. BB(2,4) = r_z * (XE(1,1)-XE(1,3))
  136. BB(1,5) = r_z * (XE(2,1)-XE(2,2))
  137. BB(2,6) = r_z * (XE(1,2)-XE(1,1))
  138. *-- Integration analytique des termes BB(3,1),BB(3,3),BB(3,5)
  139. BB(3,1) = XUn / (XE(1,1)+XE(1,2)+XE(1,3))
  140. BB(3,3) = BB(3,1)
  141. BB(3,5) = BB(3,1)
  142. * write(6,*) 'calcul de aire pour bbdil'
  143. * write(6,*) 'aire = ',AIRE
  144. * write(6,*) 'ecriture de la matrice bb'
  145. * write(6,4) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  146. GOTO 666
  147.  
  148. *-----------------------------------------------------------------------
  149. *----------------------------- Element ICQ4 ----------------------------
  150. *-----------------------------------------------------------------------
  151. 20 CONTINUE
  152. * write(6,*) 'Element ICQ4',ifour
  153. * write(6,*) 'Ecriture de la matrice xe[ ]'
  154. * write(6,3) (('xe(',i,',',j,')=',xe(i,j),i=1,2),j=1,4)
  155. GOTO (201,201,201,203),IFR
  156. GOTO 999
  157. *--------contraintes planes ou deformations planes (ifour=-2,-1)
  158. 201 CONTINUE
  159. *--------donnee des composantes de bb-dil
  160. r_z = - XE(1,4)*XE(2,3) - XE(1,2)*XE(2,1) + XE(1,1)*XE(2,2)
  161. & - XE(1,1)*XE(2,4) - XE(1,3)*XE(2,2) + XE(1,2)*XE(2,3)
  162. & + XE(1,3)*XE(2,4) + XE(1,4)*XE(2,1)
  163. * AIRE = X1s2 * r_z
  164. r_z = XUn / r_z
  165. BB(1,1) = r_z * (XE(2,2)-XE(2,4))
  166. BB(2,2) = r_z * (XE(1,4)-XE(1,2))
  167. BB(1,3) = r_z * (XE(2,3)-XE(2,1))
  168. BB(2,4) = r_z * (XE(1,1)-XE(1,3))
  169. BB(1,5) = r_z * (XE(2,4)-XE(2,2))
  170. BB(2,6) = r_z * (XE(1,2)-XE(1,4))
  171. BB(1,7) = r_z * (XE(2,1)-XE(2,3))
  172. BB(2,8) = r_z * (XE(1,3)-XE(1,1))
  173. IF (IFR.EQ.1) THEN
  174. XGXE = X1s4 * (XE(1,1) + XE(1,2) + XE(1,3) + XE(1,4))
  175. YGXE = X1s4 * (XE(2,1) + XE(2,2) + XE(2,3) + XE(2,4))
  176. BB(3,9) = Xun
  177. BB(3,10) = XDPGE - XGXE
  178. BB(3,11) = YGXE - YDPGE
  179. ENDIF
  180. * write (*,*) 'calcul de aire pour bbdil'
  181. * write (*,*) 'aire = ',aire
  182. * write (*,*) 'ecriture de la matrice bb'
  183. * write (*,4) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  184. GOTO 666
  185. *
  186. *--------axisymetriques(ifour=0)
  187. 203 CONTINUE
  188. r_z = XE(1,1)*( XE(1,1)*XE(2,2)-XE(1,1)*XE(2,4)-XE(1,4)*XE(2,4)
  189. & +XE(1,4)*XE(2,1)-XE(1,2)*XE(2,1)+XE(1,2)*XE(2,2))
  190. & + XE(1,2)*(-XE(1,2)*XE(2,1)+XE(1,2)*XE(2,3)+XE(1,3)*XE(2,3)
  191. & -XE(1,3)*XE(2,2))
  192. & + XE(1,3)*( XE(1,3)*XE(2,4)+XE(1,4)*XE(2,4)-XE(1,4)*XE(2,3)
  193. & -XE(1,3)*XE(2,2))
  194. & + XE(1,4)*XE(1,4)*(XE(2,1)-XE(2,3))
  195. * AIRE = x1s6 * r_z
  196. r_z = xUn / r_z
  197. BB(1,1) = ( XE(2,2)*(XE(1,2)+XE(1,1))-XE(2,4)*(XE(1,1)+XE(1,4))
  198. & +X1s2*( XE(1,3)*(XE(2,2)-XE(2,4))
  199. & +XE(1,4)*(XE(2,2)+XE(2,3))
  200. & -XE(1,2)*(XE(2,3)+XE(2,4))) ) * r_z
  201. BB(2,2) = ( XE(1,4)*(XE(1,1)+XE(1,4))
  202. & -XE(1,2)*(XE(1,1)+XE(1,2)) ) * r_z
  203. BB(1,3) = ( XE(2,3)*(XE(1,2)+XE(1,3))-XE(2,1)*(XE(1,2)+XE(1,1))
  204. & +X1s2*( XE(1,4)*(XE(2,3)-XE(2,1))
  205. & +XE(1,1)*(XE(2,3)+XE(2,4))
  206. & -XE(1,3)*(XE(2,4)+XE(2,1))) ) * r_z
  207. BB(2,4) = ( XE(1,1)*(XE(1,2)+XE(1,1))
  208. & -XE(1,3)*(XE(1,3)+XE(1,2)) ) * r_z
  209. BB(1,5) = ( XE(2,4)*(XE(1,3)+XE(1,4))-XE(2,2)*(XE(1,3)+XE(1,2))
  210. & +X1s2*( XE(1,1)*(XE(2,4)-XE(2,2))
  211. & +XE(1,2)*(XE(2,4)+XE(2,1))
  212. & -XE(1,4)*(XE(2,1)+XE(2,2))) ) * r_z
  213. BB(2,6) = ( XE(1,2)*(XE(1,2)+XE(1,3))
  214. & -XE(1,4)*(XE(1,4)+XE(1,3)) ) * r_z
  215. BB(1,7) = ( XE(2,1)*(XE(1,4)+XE(1,1))-XE(2,3)*(XE(1,4)+XE(1,3))
  216. & +X1s2*( XE(1,2)*(XE(2,1)-XE(2,3))
  217. & +XE(1,3)*(XE(2,1)+XE(2,2))
  218. & -XE(1,1)*(XE(2,2)+XE(2,3))) ) * r_z
  219. BB(2,8) = ( XE(1,3)*(XE(1,3)+XE(1,4))
  220. & -XE(1,1)*(XE(1,1)+XE(1,4)) ) * r_z
  221. *- Integration analytique des termes BB(3,1),BB(3,3),BB(3,5),BB(3,7)
  222. BB(3,1) = ( XE(1,1)*(XE(2,2)-XE(2,4))+XE(2,1)*(XE(1,4)-XE(1,2))
  223. & +X1s2*( XE(1,2)*(XE(2,3)+XE(2,4))
  224. & +XE(1,3)*(XE(2,4)-XE(2,2))
  225. & -XE(1,4)*(XE(2,3)+XE(2,2))) ) * r_z
  226. BB(3,3) = ( XE(1,2)*(XE(2,3)-XE(2,1))+XE(2,2)*(XE(1,1)-XE(1,3))
  227. & +X1s2*( XE(1,3)*(XE(2,1)+XE(2,4))
  228. & +XE(1,4)*(XE(2,1)-XE(2,3))
  229. & -XE(1,1)*(XE(2,3)+XE(2,4))) ) * r_z
  230. BB(3,5) = ( XE(1,3)*(XE(2,4)-XE(2,2))+XE(2,3)*(XE(1,2)-XE(1,4))
  231. & +X1s2*( XE(1,4)*(XE(2,1)+XE(2,2))
  232. & +XE(1,1)*(XE(2,2)-XE(2,4))
  233. & -XE(1,2)*(XE(2,4)+XE(2,1))) ) * r_z
  234. BB(3,7) = ( XE(1,4)*(XE(2,1)-XE(2,3))+XE(2,4)*(XE(1,3)-XE(1,1))
  235. & +X1s2*( XE(1,1)*(XE(2,2)+XE(2,3))
  236. & +XE(1,2)*(XE(2,3)-XE(2,1))
  237. & -XE(1,3)*(XE(2,1)+XE(2,2))) ) * r_z
  238. * write (*,*) 'calcul de aire pour bbdil'
  239. * write (*,*) 'aire = ',aire
  240. * write (*,*) 'ecriture de la matrice bb'
  241. * write (*,4) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  242. GOTO 666
  243.  
  244. *-----------------------------------------------------------------------
  245. *----------------------------- Element ICT6 ----------------------------
  246. *-----------------------------------------------------------------------
  247. 30 CONTINUE
  248. * write(*,*) 'Element ICT6',ifour
  249. * write (*,*) 'ecriture de la matrice xe[ ]'
  250. * write (*,3) (('xe(',i,',',j,')=',xe(i,j),i=1,2),j=1,6)
  251. GOTO (301,301,301,303),IFR
  252. GOTO 999
  253. *
  254. *--------contraintes planes ou deformations planes(ifour=-2,-1)
  255. 301 CONTINUE
  256. *--------donnee des composantes de bb-dil
  257. r_z = ( XE(1,1)*(XE(2,2)-XE(2,6)) + XE(1,2)*(XE(2,3)-XE(2,1))
  258. & + XE(1,3)*(XE(2,4)-XE(2,2)) + XE(1,4)*(XE(2,5)-XE(2,3))
  259. & + XE(1,5)*(XE(2,6)-XE(2,4)) + XE(1,6)*(XE(2,1)-XE(2,5)) )
  260. & + X1s4 * ( XE(1,1)*(XE(2,5)-XE(2,3))
  261. & + XE(1,3)*(XE(2,1)-XE(2,5))
  262. & + XE(1,5)*(XE(2,3)-XE(2,1)) )
  263. AIRE = X2s3 * r_z
  264. r_z = xUn / r_z
  265. BB(1, 1) = ( (XE(2,2)-XE(2,6)) + X1s4 * (XE(2,5)-XE(2,3)) ) * r_z
  266. BB(2, 2) = ( (XE(1,6)-XE(1,2)) + X1s4 * (XE(1,3)-XE(1,5)) ) * r_z
  267. BB(1, 3) = (XE(2,3)-XE(2,1)) * r_z
  268. BB(2, 4) = (XE(1,1)-XE(1,3)) * r_z
  269. BB(1, 5) = ( (XE(2,4)-XE(2,2)) + X1s4 * (XE(2,1)-XE(2,5)) ) * r_z
  270. BB(2, 6) = ( (XE(1,2)-XE(1,4)) + X1s4 * (XE(1,5)-XE(1,1)) ) * r_z
  271. BB(1, 7) = (XE(2,5)-XE(2,3)) * r_z
  272. BB(2, 8) = (XE(1,3)-XE(1,5)) * r_z
  273. BB(1, 9) = ( (XE(2,6)-XE(2,4)) + X1s4 * (XE(2,3)-XE(2,1)) ) * r_z
  274. BB(2,10) = ( (XE(1,4)-XE(1,6)) + X1s4 * (XE(1,1)-XE(1,3)) ) * r_z
  275. BB(1,11) = (XE(2,1)-XE(2,5)) * r_z
  276. BB(2,12) = (XE(1,5)-XE(1,1)) * r_z
  277.  
  278. * write (*,*) 'calcul de aire pour bbdil'
  279. * write (*,*) 'aire = ',aire
  280. * write (*,*) 'ecriture de la matrice bb'
  281. * write (*,4) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  282. GOTO 666
  283. *
  284. *--------axisymetriques (ifour=0)
  285. 303 CONTINUE
  286. *--------donnee des composantes de bb-dil
  287. *-----integration numerique des composantes bb-dil------
  288. AIRE = XZer
  289. DO i = 1,nbnn
  290. XNUM1(i) = XZer
  291. XNUM2(i) = XZer
  292. XNUM3(i) = XZer
  293. ENDDO
  294. DO IGAU = 1,NBPGAU
  295. DO i = 1,nbnn
  296. SHP(1,i) = SHPTOT(1,i,IGAU)
  297. SHP(2,i) = SHPTOT(2,i,IGAU)
  298. SHP(3,i) = SHPTOT(3,i,IGAU)
  299. ENDDO
  300. CALL DISTRR(XE,SHP,nbnn,RR)
  301. CALL DISTR2(XE,SHP,nbnn,RR2)
  302. CALL DISTR3(XE,SHP,nbnn,RR3)
  303. CALL DISTZ2(XE,SHP,nbnn,ZZ2)
  304. CALL DISTZ3(XE,SHP,nbnn,ZZ3)
  305. CALL JACOBI(XE,SHP,2,nbnn,DJAC)
  306. r_z = POIGAU(IGAU) * RR
  307. r_zz2 = r_z * ZZ2
  308. r_zz3 = r_z * ZZ3
  309. r_rr2 = r_z * RR2
  310. r_rr3 = r_z * RR3
  311. r_z = POIGAU(IGAU) * DJAC
  312. AIRE = AIRE + (r_z * RR)
  313. DO i = 1,nbnn
  314. XNUM1(i) = XNUM1(i) + ( SHPTOT(2,i,IGAU)*r_zz3
  315. & - SHPTOT(3,i,IGAU)*r_zz2 )
  316. XNUM2(i) = XNUM2(i) + ( SHPTOT(3,i,IGAU)*r_rr2
  317. & - SHPTOT(2,i,IGAU)*r_rr3 )
  318. XNUM3(i) = XNUM3(i) + ( SHPTOT(1,i,IGAU)*r_z )
  319. ENDDO
  320. ENDDO
  321. r_z = XUn / AIRE
  322. DO i = 1,nbnn
  323. k = 2*i
  324. BB(1,k-1) = XNUM1(i) * r_z
  325. BB(2,k) = XNUM2(i) * r_z
  326. BB(3,k-1) = XNUM3(i) * r_z
  327. ENDDO
  328. * write (*,*) 'calcul de aire pour bbdil'
  329. * write (*,*) 'aire = ',aire
  330. * write (*,*) 'ecriture de la matrice bb'
  331. * write (*,4) (('bb(',i,',',j,')=',bb(i,j),i=1,3),j=1,2*nbnn)
  332. GOTO 666
  333.  
  334. *-----------------------------------------------------------------------
  335. *----------------------------- Element ICQ8 ----------------------------
  336. *-----------------------------------------------------------------------
  337. 40 CONTINUE
  338. * write(*,*) 'Element ICQ8',ifour
  339. * write(*,*) 'Ecriture de la matrice xe[ ]'
  340. * write(*,3) (('xe(',i,',',j,')=',xe(i,j),i=1,2),j=1,6)
  341. GOTO (401,401,401,403),IFR
  342. GOTO 999
  343.  
  344. *--------contraintes planes ou deformations planes (ifour=-2,-1)
  345. 401 CONTINUE
  346. *--------donnee de la matrice symetrique p(3,3) (1 fois par element)
  347. P(1,1) = X2s3 * ( XE(1,1)*(XE(2,2)-XE(2,8))
  348. 1 + XE(1,2)*(XE(2,3)-XE(2,1))
  349. 1 +XE(1,3)*(XE(2,4)-XE(2,2))+XE(1,4)*(XE(2,5)-XE(2,3))
  350. 2 +XE(1,5)*(XE(2,6)-XE(2,4))+XE(1,6)*(XE(2,7)-XE(2,5))
  351. 3 +XE(1,7)*(XE(2,8)-XE(2,6))+XE(1,8)*(XE(2,1)-XE(2,7)) )
  352. 4 + X1s6 * ( (XE(1,1)-XE(1,5))*(XE(2,7)-XE(2,3))
  353. 5 +(XE(1,3)-XE(1,7))*(XE(2,1)-XE(2,5)) )
  354. P(1,2) = 5.D0/9.D0*(-XE(2,2)*(XE(1,1)+XE(1,3))
  355. 1 +XE(1,2)*(XE(2,1)+XE(2,3))+XE(1,6)*(-XE(2,5)-XE(2,7))
  356. 1 +XE(2,6)*(XE(1,5)+XE(1,7)))
  357. 2 +4.D0/9.D0*(XE(1,8)*(XE(2,7)+XE(2,2)-XE(2,6)-XE(2,1))
  358. 2 +XE(2,8)*(-XE(1,7)-XE(1,2)+XE(1,6)+XE(1,1))
  359. 2 +XE(1,4)*(XE(2,2)-XE(2,6)+XE(2,5)-XE(2,3))
  360. 2 +XE(2,4)*(-XE(1,2)+XE(1,6)-XE(1,5)+XE(1,3)))
  361. 3 +7.D0/45.D0*(XE(1,2)*(XE(2,5)+XE(2,7))
  362. 3 -XE(2,2)*(XE(1,5)+XE(1,7))-XE(1,6)*(XE(2,1)+XE(2,3))
  363. 3 +XE(2,6)*(XE(1,1)+XE(1,3)))
  364. 4 +8.D0/15.D0*(XE(1,6)*XE(2,2)-XE(1,2)*XE(2,6))
  365. 5 +7.D0/90.D0*(XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  366. 5 +XE(1,5)*XE(2,3)-XE(1,1)*XE(2,7))
  367. 6 +1.D0/30.D0*(-XE(1,7)*XE(2,3)+XE(1,3)*XE(2,7)
  368. 6 -XE(1,5)*XE(2,1)+XE(1,1)*XE(2,5))
  369. P(1,3) = 5.D0/9.D0*(-XE(1,8)*(XE(2,7)+XE(2,1))
  370. 1 +XE(2,8)*(XE(1,7)+XE(1,1))
  371. 1 +XE(1,4)*(XE(2,3)+XE(2,5))
  372. 1 -XE(2,4)*(XE(1,3)+XE(1,5)))
  373. 2 +4.D0/9.D0*((XE(1,8)-XE(1,4))*(XE(2,2)+XE(2,6))
  374. 2 +(-XE(2,8)+XE(2,4))*(XE(1,2)+XE(1,6))
  375. 2 +XE(1,2)*(XE(2,1)-XE(2,3))+XE(2,2)*(-XE(1,1)+XE(1,3))
  376. 2 +XE(1,6)*(XE(2,7)-XE(2,5))+XE(2,6)*(-XE(1,7)+XE(1,5)))
  377. 3 +7.D0/45.D0*(-XE(1,8)*(XE(2,3)+XE(2,5))
  378. 3 +XE(2,8)*(XE(1,3)+XE(1,5))
  379. 3 +XE(1,4)*(XE(2,1)+XE(2,7))
  380. 3 -XE(2,4)*(XE(1,1)+XE(1,7)))
  381. 4 +1.D0/30.D0*(-XE(1,7)*XE(2,3)+XE(1,3)*XE(2,7)
  382. 4 +XE(1,5)*XE(2,1)-XE(1,1)*XE(2,5))
  383. 5 +7.D0/90.D0*(XE(1,7)*XE(2,5)-XE(1,3)*XE(2,1)
  384. 5 -XE(1,5)*XE(2,7)+XE(1,1)*XE(2,3))
  385. 6 +8.D0/15.D0*(XE(1,8)*XE(2,4)-XE(1,4)*XE(2,8))
  386. P(1,4) = XZer
  387.  
  388. P(2,1) = P(1,2)
  389. P(2,2) = 16.D0/45.D0*(XE(2,6)*(XE(1,5)-XE(1,7))
  390. 1 +XE(1,6)*(XE(2,7)-XE(2,5))+XE(1,2)*(XE(2,3)-XE(2,1))
  391. 1 +XE(2,2)*(XE(1,1)-XE(1,3)))
  392. 2 +14.D0/45.D0*(XE(2,4)*(XE(1,3)-XE(1,5))
  393. 2 +XE(1,4)*(XE(2,5)-XE(2,3))+XE(1,8)*(XE(2,1)-XE(2,7))
  394. 2 +XE(2,8)*(XE(1,7)-XE(1,1)))
  395. 3 +8.D0/45.D0*(XE(1,4)*(XE(2,2)-XE(2,6))
  396. 3 +XE(1,8)*(XE(2,6)-XE(2,2))+XE(1,2)*(XE(2,8)-XE(2,4))
  397. 3 +XE(1,6)*(XE(2,4)-XE(2,8)))
  398. 4 +2.D0/45.D0*(XE(2,2)*(XE(1,5)-XE(1,7))
  399. 4 +XE(1,2)*(XE(2,7)-XE(2,5)) +XE(1,6)*(XE(2,3)-XE(2,1))
  400. 4 +XE(2,6)*(XE(1,1)-XE(1,3)))
  401. 5 +4.D0/45.D0*(XE(2,4)*(XE(1,1)-XE(1,7))
  402. 5 +XE(1,4)*(XE(2,7)-XE(2,1)) +XE(1,8)*(XE(2,3)-XE(2,5))
  403. 5 +XE(2,8)*(XE(1,5)-XE(1,3)))
  404. 6 +17.D0/90.D0*(XE(1,7)*XE(2,5)+XE(1,3)*XE(2,1)
  405. 6 -XE(1,5)*XE(2,7)-XE(1,1)*XE(2,3))
  406. 7 +1.D0/90.D0*(-XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  407. 7 +XE(1,5)*XE(2,3)+XE(1,1)*XE(2,7))
  408. P(2,3) = 1.D0/3.D0*(XE(1,5)*(XE(2,6)-XE(2,4))
  409. 1 +XE(1,8)*(XE(2,7)+XE(2,1))+XE(1,7)*(XE(2,6)-XE(2,8))
  410. 1 -XE(1,2)*(XE(2,1)+XE(2,3))+XE(1,1)*(XE(2,2)-XE(2,8))
  411. 1 +XE(1,4)*(XE(2,5)+XE(2,3))-XE(1,6)*(XE(2,7)+XE(2,5))
  412. 1 +XE(1,3)*(XE(2,2)-XE(2,4)))
  413. 2 +4.D0/9.D0*(-XE(1,4)*(XE(2,2)+XE(2,6))
  414. 2 -XE(1,8)*(XE(2,6)+XE(2,2))+XE(1,2)*(XE(2,8)+XE(2,4))
  415. 2 +XE(1,6)*(XE(2,4)+XE(2,8)))
  416. 3 +1.D0/9.D0*(XE(1,7)*(XE(2,2)-XE(2,4))
  417. 3 +XE(1,8)*(XE(2,3)+XE(2,5))
  418. 3 +XE(1,5)*(XE(2,2)-XE(2,8))+XE(1,3)*(XE(2,6)-XE(2,8))
  419. 3 -XE(1,2)*(XE(2,5)+XE(2,7))+XE(1,1)*(XE(2,6)-XE(2,4))
  420. 3 +XE(1,4)*(XE(2,1)+XE(2,7))-XE(1,6)*(XE(2,1)+XE(2,3)))
  421. P(2,4) = XZer
  422.  
  423. P(3,1) = P(1,3)
  424. P(3,2) = P(2,3)
  425. P(3,3) = 14.D0/45.D0*(XE(1,6)*(XE(2,7)-XE(2,5))
  426. 1 +XE(2,6)*(XE(1,5)-XE(1,7))+XE(1,2)*(XE(2,3)-XE(2,1))
  427. 1 +XE(2,2)*(XE(1,1)-XE(1,3)))
  428. 2 +16.D0/45.D0*(XE(1,8)*(XE(2,1)-XE(2,7))
  429. 2 +XE(2,8)*(XE(1,7)-XE(1,1))+XE(1,4)*(XE(2,5)-XE(2,3))
  430. 2 +XE(2,4)*(XE(1,3)-XE(1,5)))
  431. 3 +8.D0/45.D0*(XE(1,4)*(XE(2,2)-XE(2,6))
  432. 3 +XE(1,8)*(XE(2,6)-XE(2,2))+XE(1,2)*(XE(2,8)-XE(2,4))
  433. 3 +XE(1,6)*(XE(2,4)-XE(2,8)))
  434. 4 +2.D0/45.D0*(XE(2,4)*(XE(1,7)-XE(1,1))
  435. 4 +XE(1,8)*(XE(2,5)-XE(2,3))+XE(2,8)*(-XE(1,5)+XE(1,3))
  436. 4 +XE(1,4)*(XE(2,1)-XE(2,7)))
  437. 5 +4.D0/45.D0*(XE(2,2)*(XE(1,7)-XE(1,5))
  438. 5 +XE(1,2)*(XE(2,5)-XE(2,7))+XE(1,6)*(XE(2,1)-XE(2,3))
  439. 5 +XE(2,6)*(XE(1,3)-XE(1,1)))
  440. 6 +1.D0/90.D0*(-XE(1,5)*XE(2,7)+XE(1,3)*XE(2,1)
  441. 6 +XE(1,7)*XE(2,5)-XE(1,1)*XE(2,3))
  442. 7 +17.D0/90.D0*(-XE(1,7)*XE(2,1)-XE(1,3)*XE(2,5)
  443. 7 +XE(1,5)*XE(2,3)+XE(1,1)*XE(2,7))
  444. P(3,4) = XZer
  445.  
  446. P(4,1) = XZer
  447. P(4,2) = XZer
  448. P(4,3) = XZer
  449. P(4,4) = XZer
  450.  
  451. * write (*,*) 'ecriture de la matrice p[ ]'
  452. * write (*,4) (('p(',i,',',j,')=',p(i,j),i=1,3),j=1,3)
  453.  
  454. *-----------------donnee des vecteurs {t}={t1,t2,t3}--------------------
  455. A(1,1) = 2.D0/3.D0*(XE(2,2)-XE(2,8))
  456. 1 +1.D0/6.D0*(XE(2,7)-XE(2,3))
  457. A(2,1) = 1.D0/9.D0*(4.D0*XE(2,8)-5.D0*XE(2,2))
  458. 1 +7.D0/90.D0*(-XE(2,7)+2.D0*XE(2,6))
  459. 1 +1.D0/30.D0*XE(2,5)
  460. A(3,1) = 1.D0/9.D0*(-4.D0*XE(2,2)+5.D0*XE(2,8))
  461. 1 +7.D0/90.D0*(XE(2,3)-2.D0*XE(2,4))
  462. 1 -1.D0/30.D0*XE(2,5)
  463.  
  464. A(1,2) = 2.D0/3.D0*(XE(1,8)-XE(1,2))
  465. 1 +1.D0/6.D0*(XE(1,3)-XE(1,7))
  466. A(2,2) = 1.D0/9.D0*(-4.D0*XE(1,8)+5.D0*XE(1,2))
  467. 1 +7.D0/90.D0*(XE(1,7)-2.D0*XE(1,6))
  468. 1 -1.D0/30.D0*XE(1,5)
  469. A(3,2) = 1.D0/9.D0*(4.D0*XE(1,2)-5.D0*XE(1,8))
  470. 1 +7.D0/90.D0*(-XE(1,3)+2.D0*XE(1,4))
  471. 1 +1.D0/30.D0*XE(1,5)
  472.  
  473. A(1,3) = 2.D0/3.D0*(-XE(2,1)+XE(2,3))
  474. A(2,3) = 5.D0/9.D0*(XE(2,1)+XE(2,3))
  475. 1 +7.D0/45.D0*(XE(2,5)+XE(2,7))
  476. 1 -4.D0/9.D0*(XE(2,4)+XE(2,8))
  477. 1 -8.D0/15.D0*XE(2,6)
  478. A(3,3) = 4.D0/9.D0*(XE(2,1)-XE(2,3)+XE(2,4)-XE(2,8))
  479.  
  480. A(1,4) = 2.D0/3.D0*(-XE(1,3)+XE(1,1))
  481. A(2,4) = -5.D0/9.D0*(XE(1,1)+XE(1,3))
  482. 1 -7.D0/45.D0*(XE(1,5)+XE(1,7))
  483. 1 +4.D0/9.D0*(XE(1,4)+XE(1,8))
  484. 1 +8.D0/15.D0*XE(1,6)
  485. A(3,4) = 4.D0/9.D0*(-XE(1,1)+XE(1,3)-XE(1,4)+XE(1,8))
  486.  
  487. A(1,5) = 2.D0/3.D0*(XE(2,4)-XE(2,2))
  488. 1 +1.D0/6.D0*(-XE(2,5)+XE(2,1))
  489. A(2,5) = 1.D0/9.D0*(4.D0*XE(2,4)-5.D0*XE(2,2))
  490. 1 +7.D0/90.D0*(-XE(2,5)+2.D0*XE(2,6))
  491. 1 +1.D0/30.D0*XE(2,7)
  492. A(3,5) = 1.D0/9.D0*(4.D0*XE(2,2)-5.D0*XE(2,4))
  493. 1 +7.D0/90.D0*(-XE(2,1)+2.D0*XE(2,8))
  494. 1 +1.D0/30.D0*XE(2,7)
  495.  
  496. A(1,6) = 2.D0/3.D0*(-XE(1,4)+XE(1,2))
  497. 1 +1.D0/6.D0*(XE(1,5)-XE(1,1))
  498. A(2,6) = 1.D0/9.D0*(-4.D0*XE(1,4)+5.D0*XE(1,2))
  499. 1 +7.D0/90.D0*(XE(1,5)-2.D0*XE(1,6))
  500. 1 -1.D0/30.D0*XE(1,7)
  501. A(3,6) = 1.D0/9.D0*(-4.D0*XE(1,2)+5.D0*XE(1,4))
  502. 1 +7.D0/90.D0*(XE(1,1)-2.D0*XE(1,8))
  503. 1 -1.D0/30.D0*XE(1,7)
  504.  
  505. A(1,7) = 2.D0/3.D0*(-XE(2,3)+XE(2,5))
  506. A(2,7) = 4.D0/9.D0*(XE(2,5)-XE(2,3)+XE(2,2)-XE(2,6))
  507. A(3,7) = 5.D0/9.D0*(XE(2,3)+XE(2,5))
  508. 1 +7.D0/45.D0*(XE(2,1)+XE(2,7))
  509. 1 -4.D0/9.D0*(XE(2,2)+XE(2,6))
  510. 1 -8.D0/15.D0*XE(2,8)
  511.  
  512. A(1,8) = 2.D0/3.D0*(XE(1,3)-XE(1,5))
  513. A(2,8) = 4.D0/9.D0*(-XE(1,5)+XE(1,3)-XE(1,2)+XE(1,6))
  514. A(3,8) = -5.D0/9.D0*(XE(1,3)+XE(1,5))
  515. 1 -7.D0/45.D0*(XE(1,1)+XE(1,7))
  516. 1 +4.D0/9.D0*(XE(1,2)+XE(1,6))
  517. 1 +8.D0/15.D0*XE(1,8)
  518.  
  519. A(1,9) = 2.D0/3.D0*(-XE(2,4)+XE(2,6))
  520. 1 +1.D0/6.D0*(XE(2,3)-XE(2,7))
  521. A(2,9) = 1.D0/9.D0*(-4.D0*XE(2,4)+5.D0*XE(2,6))
  522. 1 +7.D0/90.D0*(XE(2,3)-2.D0*XE(2,2))
  523. 1 -1.D0/30.D0*XE(2,1)
  524. A(3,9) = 1.D0/9.D0*(4.D0*XE(2,6)-5.D0*XE(2,4))
  525. 1 +7.D0/90.D0*(-XE(2,7)+2.D0*XE(2,8))
  526. 1 +1.D0/30.D0*XE(2,1)
  527.  
  528. A(1,10) = 2.D0/3.D0*(XE(1,4)-XE(1,6))
  529. 1 +1.D0/6.D0*(-XE(1,3)+XE(1,7))
  530. A(2,10) = 1.D0/9.D0*(4.D0*XE(1,4)-5.D0*XE(1,6))
  531. 1 +7.D0/90.D0*(-XE(1,3)+2.D0*XE(1,2))
  532. 1 +1.D0/30.D0*XE(1,1)
  533. A(3,10) = 1.D0/9.D0*(-4.D0*XE(1,6)+5.D0*XE(1,4))
  534. 1 +7.D0/90.D0*(XE(1,7)-2.D0*XE(1,8))
  535. 1 -1.D0/30.D0*XE(1,1)
  536.  
  537. A(1,11) = 2.D0/3.D0*(-XE(2,5)+XE(2,7))
  538. A(2,11) = -5.D0/9.D0*(XE(2,7)+XE(2,5))
  539. 1 -7.D0/45.D0*(XE(2,1)+XE(2,3))
  540. 1 +4.D0/9.D0*(XE(2,4)+XE(2,8))
  541. 1 +8.D0/15.D0*XE(2,2)
  542. A(3,11) = 4.D0/9.D0*(XE(2,4)-XE(2,5)-XE(2,8)+XE(2,7))
  543.  
  544. A(1,12) = 2.D0/3.D0*(XE(1,5)-XE(1,7))
  545. A(2,12) = 5.D0/9.D0*(XE(1,7)+XE(1,5))
  546. 1 +7.D0/45.D0*(XE(1,1)+XE(1,3))
  547. 1 -4.D0/9.D0*(XE(1,4)+XE(1,8))
  548. 1 -8.D0/15.D0*XE(1,2)
  549. A(3,12) = 4.D0/9.D0*(-XE(1,4)+XE(1,5)+XE(1,8)-XE(1,7))
  550.  
  551. A(1,13) = 2.D0/3.D0*(-XE(2,6)+XE(2,8))
  552. 1 +1.D0/6.D0*(XE(2,5)-XE(2,1))
  553. A(2,13) = 1.D0/9.D0*(-4.D0*XE(2,8)+5.D0*XE(2,6))
  554. 1 +7.D0/90.D0*(XE(2,1)-2.D0*XE(2,2))
  555. 1 -1.D0/30.D0*XE(2,3)
  556. A(3,13) = 1.D0/9.D0*(-4.D0*XE(2,6)+5.D0*XE(2,8))
  557. 1 +7.D0/90.D0*(XE(2,5)-2.D0*XE(2,4))
  558. 1 -1.D0/30.D0*XE(2,3)
  559.  
  560. A(1,14) = 2.D0/3.D0*(XE(1,6)-XE(1,8))
  561. 1 +1.D0/6.D0*(-XE(1,5)+XE(1,1))
  562. A(2,14) = 1.D0/9.D0*(4.D0*XE(1,8)-5.D0*XE(1,6))
  563. 1 +7.D0/90.D0*(-XE(1,1)+2.D0*XE(1,2))
  564. 1 +1.D0/30.D0*XE(1,3)
  565. A(3,14) = 1.D0/9.D0*(4.D0*XE(1,6)-5.D0*XE(1,8))
  566. 1 +7.D0/90.D0*(-XE(1,5)+2.D0*XE(1,4))
  567. 1 +1.D0/30.D0*XE(1,3)
  568.  
  569. A(1,15) = 2.D0/3.D0*(-XE(2,7)+XE(2,1))
  570. A(2,15) = 4.D0/9.D0*(-XE(2,6)+XE(2,7)+XE(2,2)-XE(2,1))
  571. A(3,15) = -5.D0/9.D0*(XE(2,1)+XE(2,7))
  572. 1 -7.D0/45.D0*(XE(2,3)+XE(2,5))
  573. 1 +4.D0/9.D0*(XE(2,2)+XE(2,6))
  574. 1 +8.D0/15.D0*XE(2,4)
  575.  
  576. A(1,16) = 2.D0/3.D0*(XE(1,7)-XE(1,1))
  577. A(2,16) = 4.D0/9.D0*(XE(1,6)-XE(1,7)-XE(1,2)+XE(1,1))
  578. A(3,16) = 5.D0/9.D0*(XE(1,1)+XE(1,7))
  579. 1 +7.D0/45.D0*(XE(1,3)+XE(1,5))
  580. 1 -4.D0/9.D0*(XE(1,2)+XE(1,6))
  581. 1 -8.D0/15.D0*XE(1,4)
  582.  
  583. * write (*,*) 'ecriture de la matrice t[ ]'
  584. * write (*,4) (('t(',i,',',j,')=',a(i,j),i=1,3),j=1,16)
  585. *--------------resolution matricielle de [p]{a}={t}---------------------
  586. * write (*,*) 'Appel a GAUSSJ'
  587. N = 3
  588. NP = 4
  589. M = 16
  590. MP = 60
  591. CALL GAUSSJ(P,N,NP,A,M,MP)
  592. GOTO 666
  593.  
  594. *--------axisymetriques (ifour=0)
  595. 403 CONTINUE
  596. *--------donnee de la matrice symetrique p(3,3) (1 fois par element)
  597. CALL ZERO(P,4,4)
  598. DO IGAU = 1,NBPGAU
  599. DO I = 1,nbnn
  600. SHP(1,I) = SHPTOT(1,I,IGAU)
  601. SHP(2,I) = SHPTOT(2,I,IGAU)
  602. SHP(3,I) = SHPTOT(3,I,IGAU)
  603. ENDDO
  604. CALL DISTRR(XE,SHP,nbnn,RR)
  605. CALL JACOBI(XE,SHP,2,nbnn,DJAC)
  606. r_z = POIGAU(IGAU)*RR*DJAC
  607. P(1,1) = P(1,1) + r_z
  608. P(2,1) = P(2,1) + (r_z * QSIGAU(IGAU))
  609. P(3,1) = P(3,1) + (r_z * ETAGAU(IGAU))
  610. P(2,2) = P(2,2) + (r_z * QSIGAU(IGAU) * QSIGAU(IGAU))
  611. P(3,2) = P(3,2) + (r_z * QSIGAU(IGAU) * ETAGAU(IGAU))
  612. P(3,3) = P(3,3) + (r_z * ETAGAU(IGAU) * ETAGAU(IGAU))
  613. ENDDO
  614. P(1,2) = P(2,1)
  615. P(1,3) = P(3,1)
  616. P(2,3) = P(3,2)
  617. * write (*,*) 'ecriture de la matrice p[ ]'
  618. * write (*,4) (('p(',i,',',j,')=',p(i,j),i=1,3),j=1,3)
  619. *-----------calcul des vecteurs {t}={t1,t2,t3}--integration numerique---
  620. CALL ZERO(A,4,24)
  621. DO 4031 IGAU = 1,NBPGAU
  622. DO I = 1,nbnn
  623. SHP(1,I) = SHPTOT(1,I,IGAU)
  624. SHP(2,I) = SHPTOT(2,I,IGAU)
  625. SHP(3,I) = SHPTOT(3,I,IGAU)
  626. ENDDO
  627. CALL DISTRR(XE,SHP,nbnn,RR)
  628. CALL DISTR2(XE,SHP,nbnn,RR2)
  629. CALL DISTR3(XE,SHP,nbnn,RR3)
  630. CALL DISTZ2(XE,SHP,nbnn,ZZ2)
  631. CALL DISTZ3(XE,SHP,nbnn,ZZ3)
  632. CALL JACOBI(XE,SHP,2,nbnn,DJAC)
  633. K = 0
  634. DO I = 1,nbnn
  635. K = K+1
  636. r_z = POIGAU(IGAU)*RR
  637. & *(SHPTOT(2,I,IGAU)*ZZ3-SHPTOT(3,I,IGAU)*ZZ2)
  638. A(1,K) = A(1,K) + r_z
  639. A(2,K) = A(2,K) + r_z * QSIGAU(IGAU)
  640. A(3,K) = A(3,K) + r_z * ETAGAU(IGAU)
  641. K = K+1
  642. r_z = POIGAU(IGAU)*RR
  643. & *(-SHPTOT(2,I,IGAU)*RR3+SHPTOT(3,I,IGAU)*RR2)
  644. A(1,K) = A(1,K) + r_z
  645. A(2,K) = A(2,K) + r_z * QSIGAU(IGAU)
  646. A(3,K) = A(3,K) + r_z * ETAGAU(IGAU)
  647. K = K+1
  648. r_z = POIGAU(IGAU)*SHPTOT(1,I,IGAU)*DJAC
  649. A(1,K) = A(1,K) + r_z
  650. A(2,K) = A(2,K) + r_z * QSIGAU(IGAU)
  651. A(3,K) = A(3,K) + r_z * ETAGAU(IGAU)
  652. ENDDO
  653. 4031 CONTINUE
  654. * write(*,*) 'Ecriture de la matrice t[ ]'
  655. * write(*,4) (('t(',i,',',j,')=',a(i,j),i=1,3),j=1,24)
  656. *------------resolution matricielle de [p]{a}={t}-----------------
  657. N = 3
  658. NP = 4
  659. M = 24
  660. MP = 60
  661. * write (*,*) 'appel a GAUSSJ'
  662. CALL GAUSSJ(P,N,NP,A,M,MP)
  663. * write(*,*) 'Ecriture de la matrice a[ ]'
  664. * write(*,4) (('a(',i,',',j,')=',a(i,j),i=1,3),j=1,24)
  665. GOTO 666
  666.  
  667. C=======================================================================
  668. C========== Elements MASSIFS INCOMPRESSIBLES TRIDIMENSIONNELS ==========
  669. C=======================================================================
  670. 100 CONTINUE
  671. IF (ifour.NE.2) GOTO 999
  672.  
  673. DIM3 = 1.D0
  674. FACAR = 1.D0
  675. FACSCA = 1.D0
  676. ESTEL = XZero
  677.  
  678. C= Boucle sur les points d'integration
  679. DO iGau=1,NBPGAU
  680.  
  681. * BGENE au point IGAU
  682. CALL BMATST(IGAU,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU,
  683. & MELE,MFR,NBNN,LRE,IFOUR,NSTRS,NHRM,DIM3,
  684. & XE,SHPTOT,SHP,BGENE,DJAC,XDPGE,YDPGE)
  685.  
  686. C= Calcul de la composante integree en ce point de Gauss
  687. DJAC=ABS(DJAC)*POIGAU(iGau)*FACAR*DIM3
  688. ESTEL=ESTEL+FACSCA*DJAC
  689.  
  690. *----- Element ICQ8 ICCU20(76) ICTE10(77) ICPR15(78) ICPY13(274)
  691. IF (MELE.EQ.72 .or. (MELE.ge.76.and.MELE.le.78) .or.
  692. & MELE.EQ.274) then
  693. * second membre T
  694. K = 1
  695. jj = 0
  696. DO i = 1,NBNN
  697. jj = jj + 1
  698. A(1,jj) = A(1,jj) + BGENE(1,K)*DJAC
  699. A(2,jj) = A(2,jj) + BGENE(1,K)*qsigau(igau)*DJAC
  700. A(3,jj) = A(3,jj) + BGENE(1,K)*etagau(igau)*DJAC
  701. if (mele.ge.76)
  702. & A(4,jj) = A(4,jj) + BGENE(1,K)*dzegau(igau)*DJAC
  703. jj = jj + 1
  704. A(1,jj) = A(1,jj) + BGENE(2,K+1)*DJAC
  705. A(2,jj) = A(2,jj) + BGENE(2,K+1)*qsigau(igau)*DJAC
  706. A(3,jj) = A(3,jj) + BGENE(2,K+1)*etagau(igau)*DJAC
  707. if (mele.ge.76) then
  708. A(4,jj) = A(4,jj) + BGENE(2,K+1)*dzegau(igau)*DJAC
  709. jj = jj + 1
  710. A(1,jj) = A(1,jj) + BGENE(3,K+2)*DJAC
  711. A(2,jj) = A(2,jj) + BGENE(3,K+2)*qsigau(igau)*DJAC
  712. A(3,jj) = A(3,jj) + BGENE(3,K+2)*etagau(igau)*DJAC
  713. A(4,jj) = A(4,jj) + BGENE(3,K+2)*dzegau(igau)*DJAC
  714. endif
  715. K = K + KINC
  716. ENDDO
  717. * matrice M
  718. P(1,1) = P(1,1) + DJAC
  719. P(1,2) = P(1,2) + qsigau(igau)*DJAC
  720. P(1,3) = P(1,3) + etagau(igau)*DJAC
  721. P(2,2) = P(2,2) + qsigau(igau)*qsigau(igau)*DJAC
  722. P(2,3) = P(2,3) + qsigau(igau)*etagau(igau)*DJAC
  723. P(3,3) = P(3,3) + etagau(igau)*etagau(igau)*DJAC
  724. if (mele.ge.76) then
  725. P(1,4) = P(1,4) + dzegau(igau)*DJAC
  726. P(2,4) = P(2,4) + qsigau(igau)*dzegau(igau)*DJAC
  727. P(3,4) = P(3,4) + etagau(igau)*dzegau(igau)*DJAC
  728. P(4,4) = P(4,4) + dzegau(igau)*dzegau(igau)*DJAC
  729. endif
  730.  
  731. else if(mele.le.71) then
  732.  
  733. K = 1
  734. DO i = 1,NBNN
  735. bb(1,K) = bb(1,K) + BGENE(1,K)*DJAC
  736. bb(2,K+1) = bb(2,K+1) + BGENE(2,K+1)*DJAC
  737. bb(3,K) = bb(3,K) + BGENE(3,K)*DJAC
  738. K = K + KINC
  739. ENDDO
  740.  
  741. else if ( (mele.ge.73.and.mele.le.75)
  742. &.or.mele.eq.273) then
  743.  
  744. K = 1
  745. DO i = 1,NBNN
  746. bb(1,K) = bb(1,K) + BGENE(1,K)*DJAC
  747. bb(2,K+1) = bb(2,K+1) + BGENE(2,K+1)*DJAC
  748. bb(3,K+2) = bb(3,K+2) + BGENE(3,K+2)*DJAC
  749. K = K + KINC
  750. ENDDO
  751.  
  752. endif
  753.  
  754. ENDDO
  755.  
  756. if (MELE.EQ.72) then
  757. P(1,4) = XZer
  758. P(2,1) = P(1,2)
  759. P(2,4) = XZer
  760. P(3,1) = P(1,3)
  761. P(3,2) = P(2,3)
  762. P(3,4) = XZer
  763.  
  764. P(4,1) = XZer
  765. P(4,2) = XZer
  766. P(4,3) = XZer
  767. P(4,4) = XZer
  768.  
  769. ELSE IF (mele.GE.76) THEN
  770. P(2,1) = P(1,2)
  771. P(3,1) = P(1,3)
  772. P(3,2) = P(2,3)
  773. P(4,1) = P(1,4)
  774. P(4,2) = P(2,4)
  775. P(4,3) = P(3,4)
  776. ENDIF
  777. *
  778. ** synthese
  779. *
  780. if (MELE.EQ.72) then
  781. N = 3
  782. NP = 4
  783. M = 16
  784. MP = 60
  785. * write (*,*) 'appel a GAUSSJ'
  786. CALL GAUSSJ(P,N,NP,A,M,MP)
  787. * write(*,*) 'Ecriture de la matrice a[ ]'
  788. * write(*,4) (('a(',i,',',j,')=',a(i,j),i=1,3),j=1,24)
  789.  
  790. elseif (mele.ge.76.and.mele.ne.273) then
  791. N = 4
  792. NP = 4
  793. M = NBNN*3
  794. MP = 60
  795. * write (*,*) 'appel a GAUSSJ'
  796. CALL GAUSSJ(P,N,NP,A,M,MP)
  797.  
  798. elseif(mele.le.71) then
  799.  
  800. K = 1
  801. DO i = 1,NBNN
  802. bb(1,K) = bb(1,K)/ESTEL
  803. bb(2,K+1) = bb(2,K+1)/ESTEL
  804. bb(3,K) = bb(3,K)/ESTEL
  805. K = K + KINC
  806. ENDDO
  807.  
  808. elseif((mele.ge.73.and.mele.le.75).or.
  809. &mele.eq.273) then
  810.  
  811. K = 1
  812. DO i = 1,NBNN
  813. bb(1,K) = bb(1,K)/ESTEL
  814. bb(2,K+1) = bb(2,K+1)/ESTEL
  815. bb(3,K+2) = bb(3,K+2)/ESTEL
  816. K = K + KINC
  817. ENDDO
  818.  
  819. endif
  820.  
  821. GOTO 666
  822.  
  823. C=======================================================================
  824. C======================= ERREUR : Cas non prevus =======================
  825. C=======================================================================
  826. 999 CONTINUE
  827. C write(6,*) 'Erreur d aiguillage - cas non prevu',MELE,IFOUR
  828. C CALL ERREUR(922)
  829. NOER = 922
  830.  
  831. 666 CONTINUE
  832. C write(6,*) 'bbcalc:MELE,IFOUR',MELE,IFOUR
  833. RETURN
  834. END
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  

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