Télécharger pb883.eso

Retour à la liste

Numérotation des lignes :

  1. C PB883 SOURCE CHAT 05/01/13 02:11:02 5004
  2. SUBROUTINE PB883(X,Y,Z,PG,FN,GR,FM,GM,ND,NP,MP,NG,NPG,NOM2)
  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 : Iso-Q2 (iso P1/P0 nc) CU27
  8. C
  9. C ^ zeta
  10. C | n8______n7
  11. C | / /|
  12. C 1 |/_______/ |
  13. C |n5| |n6|
  14. C | |eta_|__|
  15. C | /n4 | /n3
  16. C |/______|/____>ksi
  17. C 0 1
  18. C n1 \ n2
  19. C \
  20. C \
  21. C \
  22. C \
  23. C 19__\________18____________17
  24. C / \ / /
  25. C / V / /
  26. C 20___________26____________/16
  27. C / / /
  28. C / / /
  29. C /____________/____________/
  30. C 13 14 15
  31. C
  32. C 12___________23____________ 11
  33. C / / /
  34. C / / /
  35. C 24___________27____________/22
  36. C / / /
  37. C / / /
  38. C /____________/____________/
  39. C 9 21 10
  40. C
  41. C 7____________6____________5
  42. C / / /
  43. C / / /
  44. C 8/___________25____________/4
  45. C / / /
  46. C / / /
  47. C /____________/____________/
  48. C 1 2 3
  49. C
  50. C
  51. C
  52. C
  53. C************************************************************************
  54.  
  55. CHARACTER*4 NOM2
  56. REAL*8 X(NPG),Y(NPG),Z(NPG)
  57. DIMENSION FN(NP,NPG),GR(ND,NP,NPG),PG(NPG)
  58. DIMENSION FM(MP,NPG),GM(ND,MP,NPG)
  59. DIMENSION U(5),H(5)
  60. DIMENSION XX(2,8),YY(2,8),ZZ(2,8)
  61. DATA XX/0.D0,0.5D0,0.5D0,1.D0,0.5D0,1.D0,0.D0,0.5D0,
  62. & 0.D0,0.5D0,0.5D0,1.D0,0.5D0,1.D0,0.D0,0.5D0/
  63. DATA YY/0.D0,0.5D0,0.D0,0.5D0,0.5D0,1.D0,0.5D0,1.D0,
  64. & 0.D0,0.5D0,0.D0,0.5D0,0.5D0,1.D0,0.5D0,1.D0/
  65. DATA ZZ/0.D0,0.5D0,0.D0,0.5D0,0.D0,0.5D0,0.D0,0.5D0,
  66. & 0.5D0,1.D0,0.5D0,1.D0,0.5D0,1.D0,0.5D0,1.D0/
  67.  
  68. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  69. CALL CALUHG(U,H,NG)
  70. NGG=NG*NG*NG
  71.  
  72. DO 1 K=1,8
  73. C
  74. X1=XX(1,K)
  75. X2=XX(2,K)
  76. Y1=YY(1,K)
  77. Y2=YY(2,K)
  78. Z1=ZZ(1,K)
  79. Z2=ZZ(2,K)
  80. K0=(K-1)*NGG
  81. CALL CALG3(X1,X2,Y1,Y2,Z1,Z2,NG,H,U,X(K0+1),Y(K0+1),Z(K0+1),
  82. & PG(K0+1))
  83.  
  84. P1C=Y2-Y1
  85. P2C=X1-X2
  86. P3C=Y1-Y2
  87. P4C=X2-X1
  88. P5C=Z2-Z1
  89. P6C=Z1-Z2
  90. C write(6,*)'PiC '
  91. C write(6,1002)P1C,P2C,P3C,P4C,P5C,P6C
  92.  
  93. DO 1 L=1,NGG
  94. P1=Y(K0+L)-Y1
  95. P2=X(K0+L)-X2
  96. P3=Y(K0+L)-Y2
  97. P4=X(K0+L)-X1
  98. P5=Z(K0+L)-Z1
  99. P6=Z(K0+L)-Z2
  100.  
  101.  
  102. F1C=P2C*P3C*P6C
  103. F1=P2*P3*P6/F1C
  104.  
  105. F2C=P3C*P4C*P6C
  106. F2=P3*P4*P6/F2C
  107.  
  108. F3C=P4C*P1C*P6C
  109. F3=P4*P1*P6/F3C
  110.  
  111. F4C=P1C*P2C*P6C
  112. F4=P1*P2*P6/F4C
  113.  
  114. F5C=P2C*P3C*P5C
  115. F5=P2*P3*P5/F5C
  116.  
  117. F6C=P3C*P4C*P5C
  118. F6=P3*P4*P5/F6C
  119.  
  120. F7C=P4C*P1C*P5C
  121. F7=P4*P1*P5/F7C
  122.  
  123. F8C=P1C*P2C*P5C
  124. F8=P1*P2*P5/F8C
  125.  
  126. C write(6,*)'FiC'
  127. C write(6,1002)F1C,F2C,F3C,F4C,F5C,F6C,F7C,F8C
  128. GX1=P3*P6/F1C
  129. GY1=P2*P6/F1C
  130. GZ1=P2*P3/F1C
  131.  
  132. GX2=P3*P6/F2C
  133. GY2=P4*P6/F2C
  134. GZ2=P3*P4/F2C
  135.  
  136. GX3=P1*P6/F3C
  137. GY3=P4*P6/F3C
  138. GZ3=P4*P1/F3C
  139.  
  140. GX4=P1*P6/F4C
  141. GY4=P2*P6/F4C
  142. GZ4=P1*P2/F4C
  143.  
  144. GX5=P3*P5/F5C
  145. GY5=P2*P5/F5C
  146. GZ5=P2*P3/F5C
  147.  
  148. GX6=P3*P5/F6C
  149. GY6=P4*P5/F6C
  150. GZ6=P3*P4/F6C
  151.  
  152. GX7=P1*P5/F7C
  153. GY7=P4*P5/F7C
  154. GZ7=P4*P1/F7C
  155.  
  156. GX8=P1*P5/F8C
  157. GY8=P2*P5/F8C
  158. GZ8=P1*P2/F8C
  159.  
  160. C write(6,1002)F1,f2,f3,f4,f5,f6,f7,f8
  161. C
  162. C write(6,1002)gx1,gx2,gx3,gx4,gx5,gx6,gx7,gx8
  163. C write(6,1002)gy1,gy2,gy3,gy4,gy5,gy6,gy7,gy8
  164. C write(6,1002)gz1,gz2,gz3,gz4,gz5,gz6,gz7,gz8
  165.  
  166. LL=K0+L
  167.  
  168. IF(K.EQ.1)THEN
  169. FN( 1,LL)=F1
  170. FN( 2,LL)=F2
  171. FN(25,LL)=F3
  172. FN( 8,LL)=F4
  173. FN( 9,LL)=F5
  174. FN(21,LL)=F6
  175. FN(27,LL)=F7
  176. FN(24,LL)=F8
  177.  
  178. GR(1, 1,LL)=GX1
  179. GR(1, 2,LL)=GX2
  180. GR(1,25,LL)=GX3
  181. GR(1, 8,LL)=GX4
  182. GR(1, 9,LL)=GX5
  183. GR(1,21,LL)=GX6
  184. GR(1,27,LL)=GX7
  185. GR(1,24,LL)=GX8
  186.  
  187. GR(2, 1,LL)=GY1
  188. GR(2, 2,LL)=GY2
  189. GR(2,25,LL)=GY3
  190. GR(2, 8,LL)=GY4
  191. GR(2, 9,LL)=GY5
  192. GR(2,21,LL)=GY6
  193. GR(2,27,LL)=GY7
  194. GR(2,24,LL)=GY8
  195.  
  196. GR(3, 1,LL)=GZ1
  197. GR(3, 2,LL)=GZ2
  198. GR(3,25,LL)=GZ3
  199. GR(3, 8,LL)=GZ4
  200. GR(3, 9,LL)=GZ5
  201. GR(3,21,LL)=GZ6
  202. GR(3,27,LL)=GZ7
  203. GR(3,24,LL)=GZ8
  204.  
  205. ELSEIF(K.EQ.2)THEN
  206.  
  207. FN(2,LL)=F1
  208. FN(3,LL)=F2
  209. FN(4,LL)=F3
  210. FN(25,LL)=F4
  211. FN(21,LL)=F5
  212. FN(10,LL)=F6
  213. FN(22,LL)=F7
  214. FN(27,LL)=F8
  215.  
  216. GR(1,2,LL)=GX1
  217. GR(1,3,LL)=GX2
  218. GR(1,4,LL)=GX3
  219. GR(1,25,LL)=GX4
  220. GR(1,21,LL)=GX5
  221. GR(1,10,LL)=GX6
  222. GR(1,22,LL)=GX7
  223. GR(1,27,LL)=GX8
  224.  
  225. GR(2,2,LL)=GY1
  226. GR(2,3,LL)=GY2
  227. GR(2,4,LL)=GY3
  228. GR(2,25,LL)=GY4
  229. GR(2,21,LL)=GY5
  230. GR(2,10,LL)=GY6
  231. GR(2,22,LL)=GY7
  232. GR(2,27,LL)=GY8
  233.  
  234. GR(3,2,LL)=GZ1
  235. GR(3,3,LL)=GZ2
  236. GR(3,4,LL)=GZ3
  237. GR(3,25,LL)=GZ4
  238. GR(3,21,LL)=GZ5
  239. GR(3,10,LL)=GZ6
  240. GR(3,22,LL)=GZ7
  241. GR(3,27,LL)=GZ8
  242.  
  243. ELSEIF(K.EQ.3)THEN
  244.  
  245. FN(25,LL)=F1
  246. FN(4,LL)=F2
  247. FN(5,LL)=F3
  248. FN(6,LL)=F4
  249. FN(27,LL)=F5
  250. FN(22,LL)=F6
  251. FN(11,LL)=F7
  252. FN(23,LL)=F8
  253.  
  254. GR(1,25,LL)=GX1
  255. GR(1,4,LL)=GX2
  256. GR(1,5,LL)=GX3
  257. GR(1,6,LL)=GX4
  258. GR(1,27,LL)=GX5
  259. GR(1,22,LL)=GX6
  260. GR(1,11,LL)=GX7
  261. GR(1,23,LL)=GX8
  262.  
  263. GR(2,25,LL)=GY1
  264. GR(2,4,LL)=GY2
  265. GR(2,5,LL)=GY3
  266. GR(2,6,LL)=GY4
  267. GR(2,27,LL)=GY5
  268. GR(2,22,LL)=GY6
  269. GR(2,11,LL)=GY7
  270. GR(2,23,LL)=GY8
  271.  
  272. GR(3,25,LL)=GZ1
  273. GR(3,4,LL)=GZ2
  274. GR(3,5,LL)=GZ3
  275. GR(3,6,LL)=GZ4
  276. GR(3,27,LL)=GZ5
  277. GR(3,22,LL)=GZ6
  278. GR(3,11,LL)=GZ7
  279. GR(3,23,LL)=GZ8
  280.  
  281. ELSEIF(K.EQ.4)THEN
  282.  
  283. FN(8,LL)=F1
  284. FN(25,LL)=F2
  285. FN(6,LL)=F3
  286. FN(7,LL)=F4
  287. FN(24,LL)=F5
  288. FN(27,LL)=F6
  289. FN(23,LL)=F7
  290. FN(12,LL)=F8
  291.  
  292. GR(1,8,LL)=GX1
  293. GR(1,25,LL)=GX2
  294. GR(1,6,LL)=GX3
  295. GR(1,7,LL)=GX4
  296. GR(1,24,LL)=GX5
  297. GR(1,27,LL)=GX6
  298. GR(1,23,LL)=GX7
  299. GR(1,12,LL)=GX8
  300.  
  301. GR(2,8,LL)=GY1
  302. GR(2,25,LL)=GY2
  303. GR(2,6,LL)=GY3
  304. GR(2,7,LL)=GY4
  305. GR(2,24,LL)=GY5
  306. GR(2,27,LL)=GY6
  307. GR(2,23,LL)=GY7
  308. GR(2,12,LL)=GY8
  309.  
  310. GR(3,8,LL)=GZ1
  311. GR(3,25,LL)=GZ2
  312. GR(3,6,LL)=GZ3
  313. GR(3,7,LL)=GZ4
  314. GR(3,24,LL)=GZ5
  315. GR(3,27,LL)=GZ6
  316. GR(3,23,LL)=GZ7
  317. GR(3,12,LL)=GZ8
  318.  
  319. ELSEIF(K.EQ.5)THEN
  320.  
  321. FN( 9,LL)=F1
  322. FN(21,LL)=F2
  323. FN(27,LL)=F3
  324. FN(24,LL)=F4
  325. FN(13,LL)=F5
  326. FN(14,LL)=F6
  327. FN(26,LL)=F7
  328. FN(20,LL)=F8
  329.  
  330. GR(1, 9,LL)=GX1
  331. GR(1,21,LL)=GX2
  332. GR(1,27,LL)=GX3
  333. GR(1,24,LL)=GX4
  334. GR(1,13,LL)=GX5
  335. GR(1,14,LL)=GX6
  336. GR(1,26,LL)=GX7
  337. GR(1,20,LL)=GX8
  338.  
  339. GR(2, 9,LL)=GY1
  340. GR(2,21,LL)=GY2
  341. GR(2,27,LL)=GY3
  342. GR(2,24,LL)=GY4
  343. GR(2,13,LL)=GY5
  344. GR(2,14,LL)=GY6
  345. GR(2,26,LL)=GY7
  346. GR(2,20,LL)=GY8
  347.  
  348. GR(3, 9,LL)=GZ1
  349. GR(3,21,LL)=GZ2
  350. GR(3,27,LL)=GZ3
  351. GR(3,24,LL)=GZ4
  352. GR(3,13,LL)=GZ5
  353. GR(3,14,LL)=GZ6
  354. GR(3,26,LL)=GZ7
  355. GR(3,20,LL)=GZ8
  356.  
  357. ELSEIF(K.EQ.6)THEN
  358.  
  359. FN(21,LL)=F1
  360. FN(10,LL)=F2
  361. FN(22,LL)=F3
  362. FN(27,LL)=F4
  363. FN(14,LL)=F5
  364. FN(15,LL)=F6
  365. FN(16,LL)=F7
  366. FN(26,LL)=F8
  367.  
  368. GR(1,21,LL)=GX1
  369. GR(1,10,LL)=GX2
  370. GR(1,22,LL)=GX3
  371. GR(1,27,LL)=GX4
  372. GR(1,14,LL)=GX5
  373. GR(1,15,LL)=GX6
  374. GR(1,16,LL)=GX7
  375. GR(1,26,LL)=GX8
  376.  
  377. GR(2,21,LL)=GY1
  378. GR(2,10,LL)=GY2
  379. GR(2,22,LL)=GY3
  380. GR(2,27,LL)=GY4
  381. GR(2,14,LL)=GY5
  382. GR(2,15,LL)=GY6
  383. GR(2,16,LL)=GY7
  384. GR(2,26,LL)=GY8
  385.  
  386. GR(3,21,LL)=GZ1
  387. GR(3,10,LL)=GZ2
  388. GR(3,22,LL)=GZ3
  389. GR(3,27,LL)=GZ4
  390. GR(3,14,LL)=GZ5
  391. GR(3,15,LL)=GZ6
  392. GR(3,16,LL)=GZ7
  393. GR(3,26,LL)=GZ8
  394.  
  395.  
  396. ELSEIF(K.EQ.7)THEN
  397.  
  398. FN(27,LL)=F1
  399. FN(22,LL)=F2
  400. FN(11,LL)=F3
  401. FN(23,LL)=F4
  402. FN(26,LL)=F5
  403. FN(16,LL)=F6
  404. FN(17,LL)=F7
  405. FN(18,LL)=F8
  406.  
  407. GR(1,27,LL)=GX1
  408. GR(1,22,LL)=GX2
  409. GR(1,11,LL)=GX3
  410. GR(1,23,LL)=GX4
  411. GR(1,26,LL)=GX5
  412. GR(1,16,LL)=GX6
  413. GR(1,17,LL)=GX7
  414. GR(1,18,LL)=GX8
  415.  
  416. GR(2,27,LL)=GY1
  417. GR(2,22,LL)=GY2
  418. GR(2,11,LL)=GY3
  419. GR(2,23,LL)=GY4
  420. GR(2,26,LL)=GY5
  421. GR(2,16,LL)=GY6
  422. GR(2,17,LL)=GY7
  423. GR(2,18,LL)=GY8
  424.  
  425. GR(3,27,LL)=GZ1
  426. GR(3,22,LL)=GZ2
  427. GR(3,11,LL)=GZ3
  428. GR(3,23,LL)=GZ4
  429. GR(3,26,LL)=GZ5
  430. GR(3,16,LL)=GZ6
  431. GR(3,17,LL)=GZ7
  432. GR(3,18,LL)=GZ8
  433.  
  434. ELSEIF(K.EQ.8)THEN
  435.  
  436. FN(24,LL)=F1
  437. FN(27,LL)=F2
  438. FN(23,LL)=F3
  439. FN(12,LL)=F4
  440. FN(20,LL)=F5
  441. FN(26,LL)=F6
  442. FN(18,LL)=F7
  443. FN(19,LL)=F8
  444.  
  445. GR(1,24,LL)=GX1
  446. GR(1,27,LL)=GX2
  447. GR(1,23,LL)=GX3
  448. GR(1,12,LL)=GX4
  449. GR(1,20,LL)=GX5
  450. GR(1,26,LL)=GX6
  451. GR(1,18,LL)=GX7
  452. GR(1,19,LL)=GX8
  453.  
  454. GR(2,24,LL)=GY1
  455. GR(2,27,LL)=GY2
  456. GR(2,23,LL)=GY3
  457. GR(2,12,LL)=GY4
  458. GR(2,20,LL)=GY5
  459. GR(2,26,LL)=GY6
  460. GR(2,18,LL)=GY7
  461. GR(2,19,LL)=GY8
  462.  
  463. GR(3,24,LL)=GZ1
  464. GR(3,27,LL)=GZ2
  465. GR(3,23,LL)=GZ3
  466. GR(3,12,LL)=GZ4
  467. GR(3,20,LL)=GZ5
  468. GR(3,26,LL)=GZ6
  469. GR(3,18,LL)=GZ7
  470. GR(3,19,LL)=GZ8
  471.  
  472. ENDIF
  473.  
  474. 1 CONTINUE
  475.  
  476. IF(NOM2.EQ.'MCP0')THEN
  477. DO 2 L=1,NPG
  478. FM(1,L)=1.D0
  479. GM(1,1,L)=0.D0
  480. GM(2,1,L)=0.D0
  481. GM(3,1,L)=0.D0
  482. 2 CONTINUE
  483. ELSEIF(NOM2.EQ.'MCP1')THEN
  484.  
  485. DO 3 LL=1,(2*NGG)
  486. FM(1,LL)=0.25D0
  487. FM(2,LL+2*NGG)=0.25D0
  488. FM(3,LL+4*NGG)=0.25D0
  489. FM(4,LL+6*NGG)=0.25D0
  490. 3 CONTINUE
  491. CALL INITD(GM,(12*NPG),0.D0)
  492. ELSEIF(NOM2.EQ.'MCF1')THEN
  493. DO 4 L=1,NPG
  494. FM(1,L)=-(X(L)-1.D0)*(Y(L)-1.D0)*(Z(L)-1.D0)
  495. FM(2,L)=X(L)*(Y(L)-1.D0)*(Z(L)-1.D0)
  496. FM(3,L)=-X(L)*Y(L)*(Z(L)-1.D0)
  497. FM(4,L)=(X(L)-1.D0)*Y(L)*(Z(L)-1.D0)
  498. FM(5,L)=(X(L)-1.D0)*(Y(L)-1.D0)*Z(L)
  499. FM(6,L)=-X(L)*(Y(L)-1.D0)*Z(L)
  500. FM(7,L)=X(L)*Y(L)*Z(L)
  501. FM(8,L)=-(X(L)-1.D0)*Y(L)*Z(L)
  502.  
  503. GM(1,1,L)=-(Y(L)-1.D0)*(Z(L)-1.D0)
  504. GM(2,1,L)=-(X(L)-1.D0)*(Z(L)-1.D0)
  505. GM(3,1,L)=-(X(L)-1.D0)*(Y(L)-1.D0)
  506. C
  507. GM(1,2,L)=(Y(L)-1.D0)*(Z(L)-1.D0)
  508. GM(2,2,L)=X(L)*(Z(L)-1.D0)
  509. GM(3,2,L)=X(L)*(Y(L)-1.D0)
  510. C
  511. GM(1,3,L)=-Y(L)*(Z(L)-1.D0)
  512. GM(2,3,L)=-X(L)*(Z(L)-1.D0)
  513. GM(3,3,L)=-X(L)*Y(L)
  514. C
  515. GM(1,4,L)=Y(L)*(Z(L)-1.D0)
  516. GM(2,4,L)=(X(L)-1.D0)*(Z(L)-1.D0)
  517. GM(3,4,L)=(X(L)-1.D0)*Y(L)
  518. C
  519. GM(1,5,L)=(Y(L)-1.D0)*Z(L)
  520. GM(2,5,L)=(X(L)-1.D0)*Z(L)
  521. GM(3,5,L)=(X(L)-1.D0)*(Y(L)-1.D0)
  522. C
  523. GM(1,6,L)=-(Y(L)-1.D0)*Z(L)
  524. GM(2,6,L)=-X(L)*Z(L)
  525. GM(3,6,L)=-X(L)*(Y(L)-1.D0)
  526. C
  527. GM(1,7,L)=Y(L)*Z(L)
  528. GM(2,7,L)=X(L)*Z(L)
  529. GM(3,7,L)=X(L)*Y(L)
  530. C
  531. GM(1,8,L)=-Y(L)*Z(L)
  532. GM(2,8,L)=-(X(L)-1.D0)*Z(L)
  533. GM(3,8,L)=-(X(L)-1.D0)*Y(L)
  534. C
  535. 4 CONTINUE
  536. ENDIF
  537.  
  538. C write(6,*)' VERIF ,PG='
  539. C write(6,1002)(pg(ii),ii=1,npg)
  540. C do 75 ll=1,npg
  541. C write(6,*)' VERIF ,fn,gr ll=',ll
  542. C write(6,1002)(fn(ii,ll),ii=1,np)
  543. C write(6,1002)(gr(1,ii,ll),ii=1,np)
  544. C write(6,1002)(gr(2,ii,ll),ii=1,np)
  545. C write(6,1002)(gr(3,ii,ll),ii=1,np)
  546. C write(6,*)' X '
  547. C write(6,1008) x
  548. C write(6,*)' Y '
  549. C write(6,1008) y
  550. C write(6,*)' GM '
  551. C write(6,*)' Z '
  552. C write(6,1008) Z
  553. C write(6,1002) gm
  554. C75 continue
  555.  
  556. C write(6,*)' VERIF ,NPG,NP,NGG=',NPG,NP,NGG
  557. C UPG=0.D0
  558. C do 72 L=1,NPG
  559. C UPG=UPG+PG(L)
  560. C UF=0.D0
  561. C UG1=0.D0
  562. C UG2=0.D0
  563. C UG3=0.D0
  564. C DO 71 I=1,NP
  565. C UF=UF+FN(I,L)
  566. C UG1=UG1+GR(1,I,L)
  567. C UG2=UG2+GR(2,I,L)
  568. C UG3=UG3+GR(3,I,L)
  569. C71 CONTINUE
  570. C? WRITE(6,*)' VERIF L=',L,UF,UG1,UG2,UG3
  571. C72 CONTINUE
  572.  
  573. C WRITE(6,*)' VERIF PG=',UPG
  574. C WRITE(6,101)
  575. RETURN
  576. 1002 FORMAT(10(1X,1PD11.4))
  577. 1008 FORMAT( 8(1X,1PD11.4))
  578. 1001 FORMAT(20(1X,I5))
  579. 100 FORMAT(1H1)
  580. 101 FORMAT(1X,'... SUB PB883 ... FN,GR,FM,GM ',9(10H..........)/)
  581. END
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  

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