Télécharger ella21.eso

Retour à la liste

Numérotation des lignes :

ella21
  1. C ELLA21 SOURCE KK2000 14/04/09 21:15:16 8027
  2.  
  3. SUBROUTINE ELLA21 (CARACT,INP,ZS,COOR,GAMA,ZC1,XPI)
  4. C
  5. IMPLICIT INTEGER(I-N)
  6. REAL*8 CARACT,COOR,GAMA,XPI,CE,CNU,CRO,CRIN,CREX,
  7. & CKC,CAM,CETA,CROF,CSON,CSE,CSEF,CC,CI,CIP,
  8. & COEF,X1,Y1,Z1,X2,Y2,Z2,XL,XI1,XI2,XI3,
  9. & GX,GY,GZ,GG,DELTA,DET,XJ1,XJ2,XJ3,
  10. & XK1,XK2,XK3
  11. C
  12. COMPLEX*16 ZA,ZA1,ZC1,ZD,ZE,ZER,ZR,
  13. & ZI,ZS,ZCE,ZCP,ZCMU,ZCR,ZALFA2,ZALFAX,ZALFAR,
  14. & ZALFA4,ZALFAF,ZZ3,ZALFAA,
  15. & ZA56,ZB56,ZA89,ZB89,ZA1112,ZB1112,
  16. & ZG010,ZG110,ZG020,ZG120,ZG030,ZG130,ZG230,
  17. & ZG330,ZG430,ZG040,ZG140,
  18. & ZG011,ZG111,ZG021,ZG121,ZG031,ZG131,ZG231,ZG331,
  19. & ZG431,ZG041,ZG141
  20. C
  21. INTEGER INP
  22. C
  23.  
  24.  
  25. C OPERATEUR ELFE LAPLACE ACOU
  26. C
  27. C CALCUL POUR LA POUTRE Num INP DE LA MATRICE CI TEL QUE CI * U = SM
  28. C
  29. C PARAMETRES :
  30. C
  31. C CARACT : TABLEAU DES CARACTERISTIQUE DES POUTRES (10,NP)
  32. C INP : NUMERO DE LA POUTRE
  33. C ZS : VALEUR DE S = S0 + I W
  34. C COOR : TABLEAU DES COORDONNEES DES NOEUDS (3,2*NP)
  35. C GAMA : TABLEAU DES VECTEUR DEFINISSANT LE PLAN LOCALE OXY (3,2*NP)
  36. C XPI : VALEUR PRECISE DE PI
  37. C
  38. C SORTIES :
  39. C
  40. C ZC1 : MATRICE 14*28 CALCULEE EN DIMENSIONNEL DANS LE REPERE
  41. C GLOBLAL
  42. C
  43. C
  44. C AUTEURS : SAINT-DIZIER ET GORCY
  45. C DATE : 24 JANVIER 1991
  46. C
  47. C
  48. DIMENSION CARACT(10,*),COOR(3,*),GAMA(3,*)
  49. DIMENSION ZC1(14,28)
  50. DIMENSION ICHANG(28)
  51. DIMENSION ZR(3,3),ZD(14),ZE(14,14),ZA(14,28),ZA1(14,28)
  52. DIMENSION ZER(28,28)
  53. C
  54. C -------------- ACQUISITION DES CARACTERISTIQUES DE LA POUTRE
  55. C ---------------------------------------------
  56. C
  57. CE = CARACT( 1,INP)
  58. CNU = CARACT( 2,INP)
  59. CRO = CARACT( 3,INP)
  60. CRIN = CARACT( 4,INP)
  61. CREX = CARACT( 5,INP)
  62. CKC = CARACT( 6,INP)
  63. CAM = CARACT( 7,INP)
  64. CETA = CARACT( 8,INP)
  65. CROF = CARACT( 9,INP)
  66. CSON = CARACT(10,INP)
  67. C
  68. ZI = CMPLX(0.D0 , 1.D0)
  69. C
  70. CSE = XPI * ((CREX*CREX)-(CRIN*CRIN))
  71. CSEF = XPI * (CRIN*CRIN)
  72. CC = XPI * ((CREX*CREX*CREX*CREX)-(CRIN*CRIN*CRIN*CRIN)) / 2.D0
  73. CI = XPI * ((CREX*CREX*CREX*CREX)-(CRIN*CRIN*CRIN*CRIN)) / 4.D0
  74.  
  75. CIP = 2.D0 * CI
  76. C
  77. COEF = 1.D0+( 2.D0*CROF*CSON*CSON*CRIN / (CE*(CREX-CRIN)))
  78. CSON = CSON / SQRT(COEF)
  79. C
  80. ZCE = CE*(CMPLX(1.D0)+CETA*ZI)
  81. ZCP = SQRT(ZCE/CRO)
  82. ZCMU = ZCE/(CMPLX(2.D0)*(CMPLX(1.D0)+CNU))
  83. ZCR = SQRT(ZCMU/CRO)
  84. C
  85. ZALFA2= ZS*ZS*CRO*CSE + CAM*ZS
  86. ZALFA2= ZALFA2 / (ZCE*CSE)
  87. ZALFAX= SQRT(ZALFA2)
  88. C
  89. ZALFA2= ZS*ZS*CRO*CIP + CAM*ZS
  90. ZALFA2= ZALFA2 / (ZCMU*CC)
  91. ZALFAR= SQRT(ZALFA2)
  92. C
  93. ZALFA4= CRO*CRO*CI*ZS*ZS*ZS*ZS/ZCMU/CKC
  94. * + CAM*CRO*CI*ZS*ZS*ZS/ZCMU/CKC/CSE
  95. * + ((CRO*CSE)+(CROF*CSEF))*ZS*ZS
  96. * + CAM*ZS
  97. ZALFA4= ZALFA4/(ZCE*CI)
  98. ZALFA2= SQRT(ZALFA4)
  99. ZALFAF= SQRT(ZALFA2)
  100. C
  101. ZZ3 = CRO*CI*(CMPLX(1.D0)+ZCE/(ZCMU*CKC))*ZS*ZS
  102. * + CAM*ZCE*CI*ZS/(ZCMU*CKC*CSE)
  103. ZZ3 = ZZ3 / (ZCE*CI*ZALFA2)
  104. C
  105. ZALFAA = ZS / CSON
  106. C
  107. N1 = 2*INP-1
  108. N2 = 2*INP
  109. X1 = COOR (1,N1)
  110. Y1 = COOR (2,N1)
  111. Z1 = COOR (3,N1)
  112. X2 = COOR (1,N2)
  113. Y2 = COOR (2,N2)
  114. Z2 = COOR (3,N2)
  115. C
  116. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  117. C
  118. C ------------------------------ VECTEUR UNITAIRE OX REPERE LOCALE
  119. C ---------------------------------
  120. XI1 = (X2-X1)/XL
  121. XI2 = (Y2-Y1)/XL
  122. XI3 = (Z2-Z1)/XL
  123. C
  124. C ------------------------- VECTEUR UNITAIRE OY REPERE LOCALE
  125. C ---------------------------------
  126. GX = GAMA(1,INP)
  127. GY = GAMA(2,INP)
  128. GZ = GAMA(3,INP)
  129. GG = SQRT(GX*GX + GY*GY + GZ*GZ)
  130. GX = GX/GG
  131. GY = GY/GG
  132. GZ = GZ/GG
  133. C
  134. DELTA = SQRT (1.D0 - (XI1*GX + XI2*GY + XI3*GZ)**2)
  135. C
  136. DET=-(GX*XI3-GZ*XI1)**2-(GY*XI1-GX*XI2)**2-(GY*XI3-GZ*XI2)**2
  137. C
  138. IF (ABS(DET).LT.1.D-12) THEN
  139. XJ1 = -XI2
  140. XJ2 = 0.D0
  141. XJ3 = 0.D0
  142. ELSE
  143. XJ1 = (XI2*(GY*XI1-GX*XI2)-XI3*(GX*XI3-GZ*XI1))*DELTA/DET
  144. XJ2 = (XI3*(GZ*XI2-GY*XI3)-XI1*(GY*XI1-GX*XI2))*DELTA/DET
  145. XJ3 = (XI1*(GX*XI3-GZ*XI1)-XI2*(GZ*XI2-GY*XI3))*DELTA/DET
  146. END IF
  147. C
  148. C ---------------------------- VECTEUR UNITAIRE OZ REPERE LOCALE
  149. C ---------------------------------
  150. XK1 = XI2*XJ3 - XI3*XJ2
  151. XK2 = XI3*XJ1 - XI1*XJ3
  152. XK3 = XI1*XJ2 - XI2*XJ1
  153. C
  154. ZR(1,1) = CMPLX(XJ2*XK3 - XJ3*XK2)
  155. ZR(1,2) = CMPLX(XJ3*XK1 - XJ1*XK3)
  156. ZR(1,3) = CMPLX(XJ1*XK2 - XJ2*XK1)
  157. ZR(2,1) = CMPLX(XI3*XK2 - XI2*XK3)
  158. ZR(2,2) = CMPLX(XI1*XK3 - XI3*XK1)
  159. ZR(2,3) = CMPLX(XI2*XK1 - XI1*XK2)
  160. ZR(3,1) = CMPLX(XI2*XJ3 - XI3*XJ2)
  161. ZR(3,2) = CMPLX(XI3*XJ1 - XI1*XJ3)
  162. ZR(3,3) = CMPLX(XI1*XJ2 - XI2*XJ1)
  163. C
  164. C ----------------------------- MATRICE DIMENSIONNEMENT ZD
  165. C --------------------------
  166. ZD( 1) = XL**2/ZCP
  167. ZD( 2) = XL**2/ZCP
  168. ZD( 3) = XL**2/ZCP
  169. ZD( 4) = XL/ZCR
  170. ZD( 5) = XL**2/ZCP*ZALFAF
  171. ZD( 6) = XL**2/ZCP*ZALFAF
  172. ZD( 7) = XL**2/ZCP*ZALFAX
  173. ZD( 8) = XL**2/ZCP*(ZALFAF**3)
  174. ZD( 9) = XL**2/ZCP*(ZALFAF**3)
  175. ZD(10) = XL/ZCR*ZALFAR
  176. ZD(11) = XL**2/ZCP*(ZALFAF**2)
  177. ZD(12) = XL**2/ZCP*(ZALFAF**2)
  178. ZD(13) = CMPLX(XL*CROF*CSON,0.D0)
  179. ZD(14) = XL*CROF*CSON*ZALFAA
  180. C
  181. C ------------------------------- MATRICE DES EFFORTS ZE
  182. C ----------------------
  183. DO 20 I = 1 , 14
  184. DO 21 J = 1 , 14
  185. ZE(I,J) = (0.D0,0.D0)
  186. 21 CONTINUE
  187. 20 CONTINUE
  188. C
  189. ZA56 = (1.D0,0.D0)
  190. ZB56 = CMPLX(1.D0) / (ZCMU*CKC*CSE)
  191. C
  192. ZA89 = (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*ZCMU*CKC*CKC*CSE*CSE)
  193. * - CMPLX(1.D0)/(ZCE*CI)
  194. ZB89 = CRO*ZS*ZS*(CMPLX(1.D0)/(ZCMU*CKC)+CMPLX(1.D0)/ZCE)
  195. * + CAM*ZS/(ZCMU*CKC*CSE)
  196. C
  197. ZA1112= CMPLX(1.D0)/(ZCE*CI)
  198. ZB1112= (CRO*CSE*ZS*ZS+CAM*ZS)/(ZCMU*CKC*CSE)
  199. C
  200. ZE( 1, 1) = CMPLX(1.D0,0.D0)
  201. ZE( 2, 2) = CMPLX(1.D0,0.D0)
  202. ZE( 3, 3) = CMPLX(1.D0,0.D0)
  203. ZE( 4, 4) = CMPLX(1.D0,0.D0)
  204. ZE( 5, 5) = -ZA56
  205. C
  206. ZE( 5, 9) = ZB56
  207. ZE( 6, 6) = ZA56
  208. ZE( 6, 8) = ZB56
  209. ZE( 7, 7) = CMPLX(1.D0)/(ZCE*CSE)
  210. ZE( 8, 6) = ZB89
  211. ZE( 8, 8) = ZA89
  212. ZE( 9, 5) = -ZB89
  213. C
  214. ZE( 9, 9) = ZA89
  215. ZE(10,10) = CMPLX(1.D0)/(ZCMU*CC)
  216. C
  217. ZE(11, 3) = ZB1112
  218. ZE(11,11) = -ZA1112
  219. C
  220. ZE(12, 2) = ZB1112
  221. ZE(12,12) = ZA1112
  222. ZE(13,13) = (1.D0,0.D0)
  223. ZE(14,14) = -ZS/CSEF
  224. C
  225. C -- CALCUL DES FONCTIONS DE GREEN
  226. C
  227. CALL ELLA31(0.D0,ZALFAX,ZALFAR,ZALFAF,ZALFAA,
  228. * ZG010,ZG110,ZG020,ZG120,
  229. * ZG030,ZG130,ZG230,ZG330,ZG430,ZZ3,
  230. * ZG040,ZG140)
  231. C
  232. CALL ELLA31(XL,ZALFAX,ZALFAR,ZALFAF,ZALFAA,
  233. * ZG011,ZG111,ZG021,ZG121,
  234. * ZG031,ZG131,ZG231,ZG331,ZG431,ZZ3,
  235. * ZG041,ZG141)
  236. C
  237. C -- REMPLISSAGE DE LA MATRICE A LOCAL DANS L'ORDRE INITIAL
  238. C
  239. DO 50 J = 1,28
  240. DO 51 I = 1,14
  241. ZA(I,J)= (0.D0,0.D0)
  242. 51 CONTINUE
  243. 50 CONTINUE
  244. C
  245. ZA( 1, 1) = ZG110+CMPLX(1.D0)
  246. ZA( 1, 2) = ZG010
  247. ZA( 1, 3) = ZG111
  248. ZA( 1, 4) =-ZG011
  249. ZA( 2, 1) = ZG111
  250. ZA( 2, 2) = ZG011
  251. ZA( 2, 3) = ZG110+CMPLX(1.D0)
  252. ZA( 2, 4) =-ZG010
  253. C
  254. ZA( 3, 5) = ZG120+CMPLX(1.D0)
  255. ZA( 3, 6) = ZG020
  256. ZA( 3, 7) = ZG121
  257. ZA( 3, 8) =-ZG021
  258. ZA( 4, 5) = ZG121
  259. ZA( 4, 6) = ZG021
  260. ZA( 4, 7) = ZG120+CMPLX(1.D0)
  261. ZA( 4, 8) =-ZG020
  262. C
  263. ZA( 5, 9) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  264. ZA( 5,10) =-ZG230+ZZ3*ZG030
  265. ZA( 5,11) =-ZG130
  266. ZA( 5,12) =-ZG030
  267. ZA( 5,13) =-ZG331+ZZ3*ZG131
  268. ZA( 5,14) = ZG231-ZZ3*ZG031
  269. ZA( 5,15) =-ZG131
  270. ZA( 5,16) = ZG031
  271. ZA( 6, 9) =-ZG331+ZZ3*ZG131
  272. ZA( 6,10) =-ZG231+ZZ3*ZG031
  273. ZA( 6,11) =-ZG131
  274. ZA( 6,12) =-ZG031
  275. ZA( 6,13) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  276. ZA( 6,14) = ZG230-ZZ3*ZG030
  277. ZA( 6,15) =-ZG130
  278. ZA( 6,16) = ZG030
  279. ZA( 7, 9) =-ZG430+ZZ3*ZG230
  280. ZA( 7,10) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  281. ZA( 7,11) =-ZG230
  282. ZA( 7,12) =-ZG130
  283. ZA( 7,13) = ZG431-ZZ3*ZG231
  284. ZA( 7,14) =-ZG331+ZZ3*ZG131
  285. ZA( 7,15) = ZG231
  286. ZA( 7,16) =-ZG131
  287. ZA( 8, 9) =-ZG431+ZZ3*ZG231
  288. ZA( 8,10) =-ZG331+ZZ3*ZG131
  289. ZA( 8,11) =-ZG231
  290. ZA( 8,12) =-ZG131
  291. ZA( 8,13) = ZG430-ZZ3*ZG230
  292. ZA( 8,14) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  293. ZA( 8,15) = ZG230
  294. ZA( 8,16) =-ZG130
  295. C
  296. ZA( 9,17) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  297. ZA( 9,18) =-ZG230+ZZ3*ZG030
  298. ZA( 9,19) =-ZG130
  299. ZA( 9,20) =-ZG030
  300. ZA( 9,21) =-ZG331+ZZ3*ZG131
  301. ZA( 9,22) = ZG231-ZZ3*ZG031
  302. ZA( 9,23) =-ZG131
  303. ZA( 9,24) = ZG031
  304. ZA(10,17) =-ZG331+ZZ3*ZG131
  305. ZA(10,18) =-ZG231+ZZ3*ZG031
  306. ZA(10,19) =-ZG131
  307. ZA(10,20) =-ZG031
  308. ZA(10,21) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  309. ZA(10,22) = ZG230-ZZ3*ZG030
  310. ZA(10,23) =-ZG130
  311. ZA(10,24) = ZG030
  312. ZA(11,17) =-ZG430+ZZ3*ZG230
  313. ZA(11,18) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  314. ZA(11,19) =-ZG230
  315. ZA(11,20) =-ZG130
  316. ZA(11,21) = ZG431-ZZ3*ZG231
  317. ZA(11,22) =-ZG331+ZZ3*ZG131
  318. ZA(11,23) = ZG231
  319. ZA(11,24) =-ZG131
  320. ZA(12,17) =-ZG431+ZZ3*ZG231
  321. ZA(12,18) =-ZG331+ZZ3*ZG131
  322. ZA(12,19) =-ZG231
  323. ZA(12,20) =-ZG131
  324. ZA(12,21) = ZG430-ZZ3*ZG230
  325. ZA(12,22) =-ZG330+ZZ3*ZG130+CMPLX(1.D0)
  326. ZA(12,23) = ZG230
  327. ZA(12,24) =-ZG130
  328. C
  329. ZA(13,25) = ZG140+CMPLX(1.D0)
  330. ZA(13,26) = ZG040
  331. ZA(13,27) = ZG141
  332. ZA(13,28) =-ZG041
  333. ZA(14,25) = ZG141
  334. ZA(14,26) = ZG041
  335. ZA(14,27) = ZG140+CMPLX(1.D0)
  336. ZA(14,28) =-ZG040
  337. C
  338. C -- TRANSFORMATION DE CETTE MATRICE DANS L'ORDRE U R F M P Q
  339. C
  340. C - ICHANG : MATRICE DE TRANSFORMATION DES COLONNES
  341. C
  342. ICHANG( 1) = 1
  343. ICHANG( 2) = 7
  344. ICHANG( 3) = 15
  345. ICHANG( 4) = 21
  346. ICHANG( 5) = 4
  347. ICHANG( 6) = 10
  348. ICHANG( 7) = 18
  349. ICHANG( 8) = 24
  350. ICHANG( 9) = 2
  351. ICHANG(10) = 6
  352. ICHANG(11) = 12
  353. ICHANG(12) = 8
  354. ICHANG(13) = 16
  355. ICHANG(14) = 20
  356. ICHANG(15) = 26
  357. ICHANG(16) = 22
  358. ICHANG(17) = 3
  359. ICHANG(18) = 5
  360. ICHANG(19) = 11
  361. ICHANG(20) = 9
  362. ICHANG(21) = 17
  363. ICHANG(22) = 19
  364. ICHANG(23) = 25
  365. ICHANG(24) = 23
  366. ICHANG(25) = 13
  367. ICHANG(26) = 14
  368. ICHANG(27) = 27
  369. ICHANG(28) = 28
  370. C
  371. DO 10 I = 1,28
  372. K = ICHANG(I)
  373. DO 11 J = 1,14
  374. ZA1(J,K) = ZA(J,I)
  375. 11 CONTINUE
  376. 10 CONTINUE
  377. C
  378. C
  379. C -- CACUL DE ZCI = ZA1*ZR (DANS CET ORDRE CAR LE PRODUIT N'EST
  380. C -- PAS COMMUTATIF
  381. C
  382. C
  383. C - CALCUL DE ZR :
  384. C
  385. DO 26 I = 1 , 28
  386. DO 25 J = 1 , 28
  387. ZER(I,J)= CMPLX(0.D0,0.D0)
  388. 25 CONTINUE
  389. 26 CONTINUE
  390. C
  391. DO 30 L = 1,4
  392. DO 31 I = 1,12
  393. DO 32 J = 1,3
  394. DO 33 K = 1,3
  395. ZER(I,(L-1)*3+J) = ZER(I,(L-1)*3+J) + ZE(I,(L-1)*3+K)*ZR(K,J)
  396. 33 CONTINUE
  397. 32 CONTINUE
  398. 31 CONTINUE
  399. 30 CONTINUE
  400. C
  401. ZER(13,13) = ZE(13,13)
  402. ZER(14,14) = ZE(14,14)
  403. C
  404. DO 34 L = 1,2
  405. DO 35 I = 1,12
  406. DO 36 J = 1,3
  407. DO 37 K = 1,3
  408. ZER(I+14,(L-1)*3+J+14) = ZER(I+14,(L-1)*3+J+14)
  409. * + ZE(I,(L-1)*3+K)*ZR(K,J)
  410. 37 CONTINUE
  411. 36 CONTINUE
  412. 35 CONTINUE
  413. 34 CONTINUE
  414. C
  415. DO 54 L = 3,4
  416. DO 55 I = 1,12
  417. DO 56 J = 1,3
  418. DO 57 K = 1,3
  419. ZER(I+14,(L-1)*3+J+14) = ZER(I+14,(L-1)*3+J+14)
  420. * - ZE(I,(L-1)*3+K)*ZR(K,J)
  421. 57 CONTINUE
  422. 56 CONTINUE
  423. 55 CONTINUE
  424. 54 CONTINUE
  425. C
  426. ZER(27,27) = ZE(13,13)
  427. ZER(28,28) = ZE(14,14)
  428. C
  429. DO 38 I = 1 , 14
  430. DO 39 J = 1 , 28
  431. ZER(I ,J) = ZER(I ,J)/ZD(I )
  432. ZER(I+14,J) = ZER(I+14,J)/ZD(I )
  433. 39 CONTINUE
  434. 38 CONTINUE
  435. C
  436. C --------------------------------- CALCUL DE ZA1*ZER
  437. C -----------------
  438. DO 60 J = 1,28
  439. DO 61 I = 1,14
  440. ZC1(I,J)= CMPLX(0.D0,0.D0)
  441. 61 CONTINUE
  442. 60 CONTINUE
  443. C
  444. DO 40 I = 1,14
  445. DO 41 J = 1,28
  446. DO 42 K = 1,28
  447. ZC1(I,J) = ZC1(I,J) + ZA1(I,K)*ZER(K,J)
  448. 42 CONTINUE
  449. 41 CONTINUE
  450. 40 CONTINUE
  451. C
  452. END
  453.  
  454.  
  455.  
  456.  

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