Télécharger pb702.eso

Retour à la liste

Numérotation des lignes :

pb702
  1. C PB702 SOURCE MAGN 10/05/31 21:15:16 6679
  2. SUBROUTINE PB702(XREF,X,Y,PG,FN,GR,FM,GM,ND,NP,MP,NPG,NOM2,ITYPI)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C
  7. C CALCULE LES FONCTIONS DE FORME D'UN : TRI7
  8. C
  9. C Cf Crouzeix Raviard. Conforming and nonconforming finite element
  10. C methods for solving the stationary Stokes equations I
  11. C R.A.I.R.O. (7e année, décembre 1973,R-3,p.33 à 76)
  12. C
  13. C
  14. C ^ eta
  15. C |
  16. C |n3
  17. C r2 5 1 -> A1
  18. C |\ 2 -> A12 -
  19. C | \ r2=sqrt(2) 3 -> A2
  20. C | \ 4 -> A23
  21. C | \ 5 -> A3
  22. C | \ 6 -> A13
  23. C | \ 7 -> A123
  24. C r2/2 6------4
  25. C | |\ D1=1-x/r2-y/r2
  26. C | | \ D2=x/r2
  27. C | 7 | \ D3=y/r2
  28. C | | \
  29. C | | \
  30. C 1------2-----3--->ksi
  31. C 0 r2/2 r2
  32. C
  33. C Pi = Di(aDi-c)+FD1xD2xD3 1 <= i <= 3
  34. C Pij = bxDi(aDi-c)-GxD1xD2xD3 1 <= i < j <= 3
  35. C P123= QxD1xD2xD3
  36. C Pour l'élément de référence on a a=2 b=4 c=1 F=3 G=12
  37. C Si on veut perturber un peu la position des points il faut néanmoins
  38. C vérifier les propriétés essentielles des fonctions de forme qui outre
  39. C Pi=1 en X=i et Pi=0 ailleur on doit avoir Somme des Pi = 1
  40. C (intégration exacte d'une fonction constante). Ceci conduit à des
  41. C relations entre a,b,c,F,G et Q
  42. C b=2a c=a-1 Q=3(G-F) (Somme Pi = 1) a ne 2 points Aij non au milieux
  43. C des arètes
  44. C
  45. C ITYPI=2 pts d'integration de type Gauss Lobatto i.e. sommets element
  46. C
  47. C REMARQUE :
  48. C En coordonnées cylindriques,pour une distribution régulière des noeuds
  49. C conforme à l'article de Crouzeix Raviard, la matrice masse diagonale
  50. C s'annule sur l'axe, comme pour le QUA9 (voir pb902.eso).
  51. C /1
  52. C | 2 pi x N1 dx = 0.
  53. C /0
  54. C Pour remédier à cela on se sert de la bulle en la décalant un peu par
  55. C rapport à l'élément de référence en jouant sur les constantes F et G.
  56. C On a pas à toucher "a" position des points 2,4 et 6.
  57. C Le choix que l'on a fait conduit à une matrice masse diagonale >0. En
  58. C conséquence ce choix doit être accompagné d'une numérotation dans le
  59. C sens trigo de l'élément courant.
  60. C
  61. C***********************************************************************
  62.  
  63. REAL*8 XREF(ND,NP),X(NPG),Y(NPG)
  64. DIMENSION FN(NP,NPG),GR(ND,NP,NPG),PG(NPG)
  65. DIMENSION FM(MP,NPG),GM(ND,MP,NPG)
  66. REAL*8 A,B,C,D,U(5),H(5)
  67. CHARACTER*4 NOM2
  68.  
  69. -INC PPARAM
  70. -INC CCOPTIO
  71. C***
  72.  
  73. IF(IFOMOD.EQ.0)THEN
  74. F=3.0001
  75. G=11.9999
  76. F=3.
  77. G=12.
  78. ELSE
  79. F=3.
  80. G=12.
  81. ENDIF
  82. Q=3.*(G-F)
  83. a=2.
  84. b=2.*a
  85. c=a-1.
  86.  
  87.  
  88. R2=SQRT(2.D0)
  89. IPOSP=2
  90.  
  91.  
  92. XREF(1,1)=0.D0
  93. XREF(2,1)=0.D0
  94.  
  95. XREF(1,2)=R2/2.D0
  96. XREF(2,2)=0.D0
  97.  
  98. XREF(1,3)=R2
  99. XREF(2,3)=0.D0
  100.  
  101. XREF(1,4)=R2/2.D0
  102. XREF(2,4)=R2/2.D0
  103.  
  104. XREF(1,5)=0.D0
  105. XREF(2,5)=R2
  106.  
  107. XREF(1,6)=0.
  108. XREF(2,6)=R2/2.D0
  109.  
  110. XREF(1,7)=R2/3.D0
  111. XREF(2,7)=R2/3.D0
  112.  
  113. C Verification des coordonnées
  114. c IF(.TRUE.)THEN
  115. IF(.FALSE.)THEN
  116. DO 11 L=1,NP
  117. X(L)=XREF(1,L)
  118. Y(L)=XREF(2,L)
  119. 11 CONTINUE
  120.  
  121. DO 12 L=1,NP
  122.  
  123. D1=1.D0-X(L)/R2-Y(L)/R2
  124. D2=X(L)/R2
  125. D3=Y(L)/R2
  126.  
  127. FN(1,L)=D1*(a*D1-c)+F*D1*D2*D3
  128. FN(2,L)=b*D1*D2-G*D1*D2*D3
  129. FN(3,L)=D2*(a*D2-c)+F*D1*D2*D3
  130. FN(4,L)=b*D2*D3-G*D1*D2*D3
  131. FN(5,L)=D3*(a*D3-c)+F*D1*D2*D3
  132. FN(6,L)=b*D1*D3-G*D1*D2*D3
  133. FN(7,L)=Q*D1*D2*D3
  134. write(6,1033)L,FN(1,L),FN(2,L),FN(3,L),FN(4,L),FN(5,L),FN(6,L)
  135. & ,FN(7,L)
  136. 12 CONTINUE
  137. 1033 FORMAT(1X,I4,' FN',10(1X,1PD11.4))
  138. ENDIF
  139. C Fin Vérification
  140.  
  141. IF(ITYPI.EQ.2)THEN
  142. X(1)=0.D0
  143. Y(1)=0.D0
  144. X(2)=R2/2.D0
  145. Y(2)=0.D0
  146. X(3)=R2
  147. Y(3)=0.D0
  148. X(4)=R2/2.D0
  149. Y(4)=R2/2.D0
  150. X(5)=0.D0
  151. Y(5)=R2
  152. X(6)=0.D0
  153. Y(6)=R2/2.D0
  154. X(7)=(X(1)+X(3)+X(5))/3.D0
  155. Y(7)=(Y(1)+Y(3)+Y(5))/3.D0
  156. DO 2 L=1,7
  157. PG(L)=1.D0/7.D0
  158. 2 CONTINUE
  159. ELSE
  160. CALL CALUHH(X,Y,PG,NPG)
  161. ENDIF
  162.  
  163. DO 1 L=1,NPG
  164. C
  165. IF(NOM2.EQ.'PRP0')THEN
  166. FM(1,L)=1.D0
  167. GM(1,1,L)=0.D0
  168. GM(2,1,L)=0.D0
  169. ELSEIF(NOM2.EQ.'PRP1')THEN
  170. C? FM(1,L)=R2*(X(L)+Y(L)-R2/2.D0)
  171. C? FM(2,L)=-R2*(X(L)-R2/2.D0)
  172. C? FM(3,L)=-R2*(Y(L)-R2/2.D0)
  173. A1=6.D0/5.D0/R2
  174. FM(1,L)=5.D0/3.D0*(1.D0-A1*X(L)-A1*Y(L))
  175. FM(2,L)=-1.D0/3.D0*(1.D0-6.D0/R2*X(L))
  176. FM(3,L)=-1.D0/3.D0*(1.D0-6.D0/R2*Y(L))
  177. C
  178. GM(1,1,L)=0.D0
  179. GM(2,1,L)=0.D0
  180. GM(1,2,L)=0.D0
  181. GM(2,2,L)=0.D0
  182. GM(1,3,L)=0.D0
  183. GM(2,3,L)=0.D0
  184. ELSEIF(NOM2.EQ.'PFP1')THEN
  185. FM(1,L)=-R2/2.D0*(X(L)+Y(L)-R2)
  186. FM(2,L)=R2/2.D0*X(L)
  187. FM(3,L)=R2/2.D0*Y(L)
  188.  
  189. GM(1,1,L)=-R2/2.D0
  190. GM(2,1,L)=-R2/2.D0
  191. GM(1,2,L)=R2/2.D0
  192. GM(2,2,L)=0.D0
  193. GM(1,3,L)=0.D0
  194. GM(2,3,L)=R2/2.D0
  195. ENDIF
  196.  
  197. C
  198. c IF(.FALSE.)THEN
  199. IF(.TRUE.)THEN
  200. C
  201.  
  202. D1=1.D0-X(L)/R2-Y(L)/R2
  203. D2=X(L)/R2
  204. D3=Y(L)/R2
  205.  
  206. FN(1,L)=D1*(a*D1-c)+F*D1*D2*D3
  207. FN(2,L)=b*D1*D2-G*D1*D2*D3
  208. FN(3,L)=D2*(a*D2-c)+F*D1*D2*D3
  209. FN(4,L)=b*D2*D3-G*D1*D2*D3
  210. FN(5,L)=D3*(a*D3-c)+F*D1*D2*D3
  211. FN(6,L)=b*D1*D3-G*D1*D2*D3
  212. FN(7,L)=Q*D1*D2*D3
  213. c write(6,*)FN(1,L),FN(2,L),FN(3,L),FN(4,L),FN(5,L),FN(6,L),FN(7,L)
  214.  
  215. D1x=-1./R2
  216. D1y=-1./R2
  217.  
  218. D2x=1./R2
  219. D2y=0.
  220.  
  221. D3x=0.
  222. D3y=1/R2
  223.  
  224. GR(1,1,L)=D1x*(a*D1-c)+D1*a*D1x+F*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  225. GR(2,1,L)=D1y*(a*D1-c)+D1*a*D1y+F*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  226.  
  227. GR(1,2,L)=b*(D1x*D2+D1*D2x)-G*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  228. GR(2,2,L)=b*(D1y*D2+D1*D2y)-G*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  229.  
  230. GR(1,3,L)=D2x*(a*D2-c)+D2*a*D2x+F*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  231. GR(2,3,L)=D2y*(a*D2-c)+D2*a*D2y+F*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  232.  
  233. GR(1,4,L)=b*(D2x*D3+D2*D3x)-G*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  234. GR(2,4,L)=b*(D2y*D3+D2*D3y)-G*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  235.  
  236. GR(1,5,L)=D3x*(a*D3-c)+D3*a*D3x+F*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  237. GR(2,5,L)=D3y*(a*D3-c)+D3*a*D3y+F*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  238.  
  239. GR(1,6,L)=b*(D1x*D3+D1*D3x)-G*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  240. GR(2,6,L)=b*(D1y*D3+D1*D3y)-G*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  241.  
  242. GR(1,7,L)=Q*(D1x*D2*D3+D1*D2x*D3+D1*D2*D3x)
  243. GR(2,7,L)=Q*(D1y*D2*D3+D1*D2y*D3+D1*D2*D3y)
  244.  
  245. ELSE
  246.  
  247. c write(6,*)'La base'
  248.  
  249. C
  250. C
  251. FN(1,L)=(1.D0-X(L)/R2-Y(L)/R2)*(1.D0-2.D0*X(L)/R2-2.D0*Y(L)/R2+
  252. & 3.D0/2.D0*X(L)*Y(L))
  253. FN(2,L)=(1.D0-X(L)/R2-Y(L)/R2)*(4.D0/R2-6.D0*Y(L))*X(L)
  254. FN(3,L)=X(L)/R2*(2.D0*X(L)/R2-1.D0+3.D0*(1.D0-X(L)/R2-Y(L)/R2)
  255. & *Y(L)/R2)
  256. FN(4,L)=2.D0*X(L)*Y(L)*(1.D0-3.D0*(1.D0-X(L)/R2-Y(L)/R2))
  257. FN(5,L)=Y(L)*Y(L)-Y(L)*R2/2.D0+3.D0/2.D0*X(L)*Y(L)-
  258. & 3.D0*R2/4.D0*X(L)*X(L)*Y(L)-3.D0*R2/4.D0*X(L)*Y(L)*Y(L)
  259. FN(6,L)=2.D0*R2*(-R2/2.D0*Y(L)*Y(L)+3.D0/2.D0*(Y(L)*Y(L)*X(L)+
  260. & X(L)*X(L)*Y(L))-2.D0*R2*X(L)*Y(L)+Y(L))
  261. FN(7,L)=27.D0/2.D0*(X(L)*Y(L)-R2/2.D0*X(L)*X(L)*Y(L)-
  262. &R2/2.D0*X(L)*Y(L)*Y(L))
  263. C
  264. C
  265. C
  266. GR(1,1,L)=-3.D0*R2/4.D0*Y(L)*Y(L)+2.D0*X(L)+7./2.D0*Y(L)-
  267. * 3.D0*R2/2.D0*X(L)*Y(L)-3.D0*R2/2.D0
  268. GR(2,1,L)=-3.D0*R2/4.D0*X(L)*X(L)+2.D0*Y(L)+7./2.D0*X(L)-
  269. * 3.D0*R2/2.D0*X(L)*Y(L)-3.D0*R2/2.D0
  270. GR(1,2,L)=3.D0*R2*Y(L)*Y(L)+6.D0*R2*X(L)*Y(L)-4.D0*X(L)-8.D0*Y(L)+
  271. * 2.D0*R2
  272. GR(2,2,L)=3.D0*R2*X(L)*X(L)+6.D0*R2*X(L)*Y(L)-8.D0*X(L)
  273. GR(1,3,L)=-3.D0*R2/4.D0*Y(L)*Y(L)-3.D0*R2/2.D0*X(L)*Y(L)+
  274. * 2.D0*X(L)+3.D0/2.D0*Y(L)-R2/2.D0
  275. GR(2,3,L)=R2/2.D0*(-3.D0/2.D0*X(L)*X(L)-3.D0*X(L)*Y(L)+
  276. * 3.D0*R2/2.D0*X(L))
  277. GR(1,4,L)=3.D0*R2*Y(L)*Y(L)+6.D0*R2*X(L)*Y(L)-4.D0*Y(L)
  278. GR(2,4,L)=3.D0*R2*X(L)*X(L)+6.D0*R2*X(L)*Y(L)-4.D0*X(L)
  279. GR(1,5,L)=-3.D0*R2/4.D0*Y(L)*Y(L)-3.D0*R2/2.D0*X(L)*Y(L)
  280. & +3.D0/2.D0*Y(L)
  281. GR(2,5,L)=-3.D0*R2/4.D0*X(L)*X(L)-3.D0*R2/2.D0*X(L)*Y(L)
  282. & +2.D0*Y(L)+
  283. * 3.D0/2.D0*X(L)-R2/2.D0
  284. GR(1,6,L)=3.D0*R2*Y(L)*Y(L)+6.D0*R2*X(L)*Y(L)-8.D0*Y(L)
  285. GR(2,6,L)=3.D0*R2*X(L)*X(L)+6.D0*R2*X(L)*Y(L)-8.D0*X(L)
  286. & -4.D0*Y(L)+2.D0*R2
  287. GR(1,7,L)=27.D0/2.D0*(-R2/2*Y(L)*Y(L)-R2*X(L)*Y(L)+Y(L))
  288. GR(2,7,L)=27.D0/2.D0*(-R2/2*X(L)*X(L)-R2*X(L)*Y(L)+X(L))
  289. C
  290. ENDIF
  291. 1 CONTINUE
  292.  
  293. IF(.FALSE.)THEN
  294. c IF(.TRUE.)THEN
  295. DO 121 L=1,NPG
  296. F1=0.
  297. DO 131 I=1,NP
  298. F1=F1+FN(I,L)
  299. 131 CONTINUE
  300. Write(6,*)' L=',L,F1
  301. 121 CONTINUE
  302.  
  303. DO 122 L=1,NPG
  304. G1=0.
  305. G2=0.
  306. DO 141 I=1,NP
  307. G1=G1+GR(1,I,L)
  308. G2=G2+GR(2,I,L)
  309. 141 CONTINUE
  310. Write(6,*)' L=',L,G1,G2
  311. 122 CONTINUE
  312. ENDIF
  313.  
  314. c stop
  315.  
  316.  
  317. C
  318. C
  319. C WRITE(6,101)
  320. C WRITE(6,1002)FM
  321. C WRITE(6,1002)GM
  322. C WRITE(6,1002)FN
  323. C WRITE(6,1002)GR
  324. C WRITE(6,101)
  325.  
  326. RETURN
  327. 1002 FORMAT(10(1X,1PD11.4))
  328. 1001 FORMAT(20(1X,I5))
  329. 101 FORMAT(1X,'... SUBPB702 ... FM,GM,FN,GR ',9(10H..........)/)
  330. C
  331. END
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  

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