Télécharger ella12.eso

Retour à la liste

Numérotation des lignes :

ella12
  1. C ELLA12 SOURCE CHAT 05/01/12 23:34:04 5004
  2. SUBROUTINE ELLA12(CORRES ,XCL ,FLAG ,NUMERO, CARACT ,COOR,
  3. & MASS ,NMAS ,IRAILO ,VALRAI, NRAIDE ,
  4. & NP,NP28,NNT,ZA1,ZSM,ZS,XPI,IMP)
  5. C
  6. C OPERATEUR ELFE LAPLACE ACOU
  7. C
  8. C PROGRAMME APPELE PAR ELLA11 : CALCUL LA DEUXIEME PARTIE DE LA
  9. C MATRICE ZA1 ET DE SECOND MEMBRE ZSM
  10. C
  11. C PARAMETRES :
  12. C
  13. C ENTREE :
  14. C
  15. C CORRES : TABLEAU D'ENTIER DES NUMEROS DES NOEUDS REELS
  16. C POUR CHAQUE NOEUD FICTIF
  17. C XCL : TABLEAU DES VALEURS DES CONDITIONS AUX LIMITES
  18. C FLAG : TABLEAU DE POINTEURS SUR XCL
  19. C NUMERO : TABLEAU DE TRANSFORMATION NUMERO GLOBAL <--> NUMERO LOCAL
  20. C CARACT : TABLEAU DES CARACTERISTIQUES DES POUTRES
  21. C COOR : TABLEAU DES COORDONNEES DES NOEUDS FICTIFS
  22. C
  23. C NP : NOMBRE DE POUTRES
  24. C NNT : NOMBRE DE NOEUDS REELS
  25. C ZS : VALEUR DE S = S0 + I W
  26. C XPI : VALEUR PRECISE DE PI
  27. C
  28. C
  29. C SORTIES :
  30. C
  31. C ZA1 : TABLEAU COMPLEXE REPRESENTANT LA MATRICE DE "RIGIDITE"
  32. C ZSM : VECTEUR COMPLEXE SECOND MEMBRE
  33. C
  34. C
  35. C AUTEURS : SAINT-DIZIER ET GORCY
  36.  
  37. C DATE : 29 JANVIER 1991
  38. C MODIFICATION : 26 JUIN 1991
  39. C
  40. C
  41. IMPLICIT INTEGER(I-N)
  42. COMPLEX*16 ZA1,ZSM,ZB,ZI,ZS
  43. REAL*8 XCL,CARACT,COOR,VALRAI,XPI,X1,Y1,Z1,X2,Y2,Z2,
  44. & XI1,XI2,XI3,XL,CSEF,CROF
  45. INTEGER FLAG,CORRES,NUMERO,MASS,IRAILO,J0,JCOLO
  46. C
  47. DIMENSION ZA1(NP28,*),ZSM(*)
  48. DIMENSION XCL(17,*),CARACT(10,*),COOR(3,*),VALRAI(6,*),
  49. & FLAG(*),CORRES(*),NUMERO(*),MASS(4,*),IRAILO(4,*)
  50. C
  51. C REMPLISSAGE DE LA 2EME PARTIE DE ZA1 (INDEPENDANT DE W)
  52. C + 2EME PARTIE DU SECOND MEMBRE
  53. C
  54. J0=0
  55. JCOLO=0
  56. ZI = CMPLX(1.D0,0.D0)
  57. C
  58. IZA1 = 14 * NP + 1
  59. NP2 = 2 * NP
  60. C
  61. C --------------------- CONDITION DE NOEUDS IDENTIQUES
  62. C (CONTINUITE DU DEPLACEMENT ET DE LA PRESSION)
  63. C
  64. DO 10 I = 1 , NNT
  65. C
  66. ITEST = 0
  67. J = 0
  68. C
  69. 11 J = J + 1
  70. C
  71. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.0)) THEN
  72. J0 = J
  73. ITEST = 1
  74. ELSE IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.1)) THEN
  75. C
  76. ZA1 (IZA1 , 14*(J0-1)+1 ) = -ZI
  77. ZA1 (IZA1+1 , 14*(J0-1)+2 ) = -ZI
  78. ZA1 (IZA1+2 , 14*(J0-1)+3 ) = -ZI
  79. ZA1 (IZA1+3 , 14*(J0-1)+4 ) = -ZI
  80. ZA1 (IZA1+4 , 14*(J0-1)+5 ) = -ZI
  81. ZA1 (IZA1+5 , 14*(J0-1)+6 ) = -ZI
  82. ZA1 (IZA1+6 , 14*(J0-1)+13) = -ZI
  83. C
  84. ZA1 (IZA1 , 14*(J-1)+1 ) = ZI
  85. ZA1 (IZA1+1 , 14*(J-1)+2 ) = ZI
  86. ZA1 (IZA1+2 , 14*(J-1)+3 ) = ZI
  87. ZA1 (IZA1+3 , 14*(J-1)+4 ) = ZI
  88. ZA1 (IZA1+4 , 14*(J-1)+5 ) = ZI
  89. ZA1 (IZA1+5 , 14*(J-1)+6 ) = ZI
  90. ZA1 (IZA1+6 , 14*(J-1)+13) = ZI
  91. C
  92. C INTRODUCTION DES SOUPLESSES DANS LA MATRICE ZA1
  93. C
  94. IF (NRAIDE.GT.0) THEN
  95. C
  96. DO 15 IM1 = 1 , NRAIDE
  97. C
  98. IF (IRAILO(4,IM1).EQ.2) THEN
  99. C
  100. C COUDE
  101. C
  102. JCOLO=(14*(IRAILO(2,IM1)-1) ) + 7
  103. ELSE IF (IRAILO(4,IM1).EQ.3) THEN
  104. C
  105. C TE
  106. C
  107. JCOLO=(14*(IRAILO(1,IM1)-1) ) + 7
  108. ELSE
  109. IF (IMP.NE.0) THEN
  110. WRITE(IMP,*)
  111. ENDIF
  112. 600 FORMAT(1X,'IL Y A UNE ERREUR')
  113. END IF
  114. C
  115. IF ( (IRAILO(2,IM1).EQ.J0).OR.(IRAILO(1,IM1).EQ.J) ) THEN
  116. C
  117. ZA1 (IZA1 , JCOLO ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  118. & VALRAI(1,IM1) )
  119. ZA1 (IZA1+1, JCOLO + 1 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  120. & VALRAI(2,IM1) )
  121. ZA1 (IZA1+2, JCOLO + 2 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  122. & VALRAI(3,IM1) )
  123. ZA1 (IZA1+3, JCOLO + 3 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  124. & VALRAI(4,IM1) )
  125. ZA1 (IZA1+4, JCOLO + 4 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  126. & VALRAI(5,IM1) )
  127. ZA1 (IZA1+5, JCOLO + 5 ) = CMPLX( (-1.D0)**IRAILO(4,IM1)/
  128. & VALRAI(6,IM1) )
  129.  
  130. END IF
  131. C
  132. 15 CONTINUE
  133. END IF
  134. C
  135. ZSM ( IZA1+6 ) = CMPLX(XCL ( 13,I))
  136. C
  137. IZA1 = IZA1 + 7
  138. C
  139. END IF
  140. C
  141. IF (J.NE.NP2) GOTO 11
  142. C
  143. 10 CONTINUE
  144. C
  145. DO 100 I = 1 , NNT
  146. C
  147. C --------------------- CONDITION AUX LIMITES SUR LE DEPLACEMENT
  148. C
  149. IF (FLAG((I-1)*17+1).EQ.I) THEN
  150. C
  151. J = 0
  152. ISTOP = 0
  153. 20 J = J + 1
  154. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  155. C
  156. ZA1 (IZA1 , 14*(J-1)+1 ) = ZI
  157. ZSM ( IZA1 ) = CMPLX(XCL ( 1,I))
  158. C
  159. IZA1 = IZA1 + 1
  160. ISTOP = 1
  161. C
  162. END IF
  163. C
  164. IF (J.NE.NP2) GO TO 20
  165. C
  166. END IF
  167. C
  168. IF (FLAG((I-1)*17+2).EQ.I) THEN
  169. C
  170. J = 0
  171. ISTOP = 0
  172. 21 J = J + 1
  173. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  174. C
  175. ZA1 (IZA1 , 14*(J-1)+2 ) = ZI
  176. ZSM ( IZA1 ) = CMPLX(XCL ( 2,I))
  177. C
  178. IZA1 = IZA1 + 1
  179. ISTOP = 1
  180. C
  181. END IF
  182. C
  183. IF (J.NE.NP2) GO TO 21
  184. C
  185. END IF
  186. C
  187. C
  188. IF (FLAG((I-1)*17+3).EQ.I) THEN
  189. C
  190. J = 0
  191. ISTOP = 0
  192. 22 J = J + 1
  193. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  194. C
  195. ZA1 (IZA1 , 14*(J-1)+3 ) = ZI
  196. ZSM ( IZA1 ) = CMPLX(XCL ( 3,I))
  197. C
  198. IZA1 = IZA1 + 1
  199. ISTOP = 1
  200. C
  201. END IF
  202. C
  203. IF (J.NE.NP2) GO TO 22
  204. C
  205. END IF
  206. C
  207. C --------------------- CONDITION AUX LIMITES SUR LA ROTATION
  208. C
  209. IF (FLAG((I-1)*17+4).EQ.I) THEN
  210. C
  211. J = 0
  212. ISTOP = 0
  213. 30 J = J + 1
  214. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  215. C
  216. ZA1 (IZA1 , 14*(J-1)+4 ) = ZI
  217. ZSM ( IZA1 ) = CMPLX(XCL ( 4,I))
  218. C
  219. IZA1 = IZA1 + 1
  220. ISTOP = 1
  221. C
  222. END IF
  223. C
  224. IF (J.NE.NP2) GO TO 30
  225. C
  226. END IF
  227. C
  228. IF (FLAG((I-1)*17+5).EQ.I) THEN
  229. C
  230. J = 0
  231. ISTOP = 0
  232. 31 J = J + 1
  233. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  234. C
  235. ZA1 (IZA1 , 14*(J-1)+5 ) = ZI
  236. ZSM ( IZA1 ) = CMPLX(XCL ( 5,I))
  237. C
  238. IZA1 = IZA1 + 1
  239. ISTOP = 1
  240. C
  241. END IF
  242. C
  243. IF (J.NE.NP2) GO TO 31
  244. C
  245. END IF
  246. C
  247. IF (FLAG((I-1)*17+6).EQ.I) THEN
  248. C
  249. J = 0
  250. ISTOP = 0
  251. 32 J = J + 1
  252. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  253. C
  254. ZA1 (IZA1 , 14*(J-1)+6 ) = ZI
  255. ZSM ( IZA1 ) = CMPLX(XCL ( 6,I))
  256. C
  257. IZA1 = IZA1 + 1
  258. ISTOP = 1
  259. C
  260. END IF
  261. C
  262. IF (J.NE.NP2) GO TO 32
  263. C
  264. END IF
  265. C
  266. C --------------------- CONDITION AUX LIMITES SUR LA FORCE
  267. C
  268. IF (FLAG((I-1)*17+1).EQ.0) THEN
  269. C
  270. DO 40 J = 1 , 2*NP
  271. IF (CORRES(J).EQ.NUMERO(I)) THEN
  272. C
  273. INP = INT((J+1)/2)
  274. CSEF = XPI * CARACT(4,INP) * CARACT(4,INP)
  275. N1 = 2*INP-1
  276. N2 = 2*INP
  277. X1 = COOR (1,N1)
  278. Y1 = COOR (2,N1)
  279. Z1 = COOR (3,N1)
  280. X2 = COOR (1,N2)
  281. Y2 = COOR (2,N2)
  282. Z2 = COOR (3,N2)
  283. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  284. C
  285. XI1 = (X2-X1)/XL
  286. IF (J.EQ.N2) THEN
  287. XI1 = -XI1
  288. END IF
  289. C
  290. ZA1 (IZA1 , 14*(J-1)+7 ) = ZI
  291. ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI1 )
  292. C
  293. END IF
  294. 40 CONTINUE
  295. C
  296. ZSM ( IZA1 ) = -CMPLX(XCL(7,I))
  297. C
  298. IF (NMAS.GT.0) THEN
  299. DO 41 I1 = 1 , NMAS
  300. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  301. MASS(4,I1) = IZA1
  302. END IF
  303. 41 CONTINUE
  304. END IF
  305. C
  306. IZA1 = IZA1 + 1
  307. C
  308. END IF
  309. C
  310. C
  311. IF (FLAG((I-1)*17+2).EQ.0) THEN
  312. C
  313. DO 42 J = 1 , 2*NP
  314. IF (CORRES(J).EQ.NUMERO(I)) THEN
  315. C
  316. INP = INT((J+1)/2)
  317. CSEF = XPI * CARACT(4,INP) * CARACT(4,INP)
  318. N1 = 2*INP-1
  319. N2 = 2*INP
  320. X1 = COOR (1,N1)
  321. Y1 = COOR (2,N1)
  322. Z1 = COOR (3,N1)
  323. X2 = COOR (1,N2)
  324. Y2 = COOR (2,N2)
  325. Z2 = COOR (3,N2)
  326. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  327. C
  328. XI2 = (Y2-Y1)/XL
  329. IF (J.EQ.N2) THEN
  330. XI2 = -XI2
  331. END IF
  332. C
  333. ZA1 (IZA1 , 14*(J-1)+8 ) = ZI
  334. ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI2 )
  335. C
  336. END IF
  337. 42 CONTINUE
  338. C
  339. ZSM ( IZA1 ) = -CMPLX(XCL(8,I))
  340. C
  341. IF (NMAS.GT.0) THEN
  342. DO 43 I1 = 1 , NMAS
  343. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  344. MASS(4,I1) = IZA1-1
  345. END IF
  346. 43 CONTINUE
  347. END IF
  348. C
  349. IZA1 = IZA1 + 1
  350. C
  351. END IF
  352. C
  353. C
  354. IF (FLAG((I-1)*17+3).EQ.0) THEN
  355. C
  356. DO 44 J = 1 , 2*NP
  357. IF (CORRES(J).EQ.NUMERO(I)) THEN
  358. C
  359. INP = INT((J+1)/2)
  360. CSEF = XPI * CARACT(4,INP) * CARACT(4,INP)
  361. N1 = 2*INP-1
  362. N2 = 2*INP
  363. X1 = COOR (1,N1)
  364. Y1 = COOR (2,N1)
  365. Z1 = COOR (3,N1)
  366. X2 = COOR (1,N2)
  367. Y2 = COOR (2,N2)
  368. Z2 = COOR (3,N2)
  369. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  370. C
  371. XI3 = (Z2-Z1)/XL
  372. IF (J.EQ.N2) THEN
  373. XI3 = -XI3
  374. END IF
  375. C
  376. ZA1 (IZA1 , 14*(J-1)+9 ) = ZI
  377. ZA1 (IZA1 , 14*(J-1)+13) = -CMPLX( CSEF*XI3 )
  378. C
  379. END IF
  380. 44 CONTINUE
  381. C
  382. ZSM ( IZA1 ) = -CMPLX(XCL(9,I))
  383. C
  384. IF (NMAS.GT.0) THEN
  385. DO 45 I1 = 1 , NMAS
  386. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  387. MASS(4,I1) = IZA1-2
  388. END IF
  389. 45 CONTINUE
  390. END IF
  391. C
  392. IZA1 = IZA1 + 1
  393. C
  394. END IF
  395. C
  396. C --------------------- CONDITION AUX LIMITES SUR LE MOMENT
  397. C
  398. IF (FLAG((I-1)*17+4).EQ.0) THEN
  399. C
  400. DO 50 J = 1 , 2*NP
  401. IF (CORRES(J).EQ.NUMERO(I)) THEN
  402. ZA1 (IZA1 , 14*(J-1)+10) = ZI
  403. END IF
  404. 50 CONTINUE
  405. C
  406. ZSM ( IZA1 ) = -CMPLX(XCL(10,I))
  407. C
  408. IF (NMAS.GT.0) THEN
  409. DO 51 I1 = 1 , NMAS
  410. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  411. MASS(4,I1) = IZA1-3
  412. END IF
  413. 51 CONTINUE
  414. END IF
  415. C
  416. IZA1 = IZA1 + 1
  417. C
  418. END IF
  419. C
  420. C
  421. IF (FLAG((I-1)*17+5).EQ.0) THEN
  422. C
  423. DO 52 J = 1 , 2*NP
  424. IF (CORRES(J).EQ.NUMERO(I)) THEN
  425. ZA1 (IZA1 , 14*(J-1)+11) = ZI
  426. END IF
  427. 52 CONTINUE
  428. C
  429. ZSM ( IZA1 ) = -CMPLX(XCL(11,I))
  430. C
  431. IF (NMAS.GT.0) THEN
  432. DO 53 I1 = 1 , NMAS
  433. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  434. MASS(4,I1) = IZA1-4
  435. END IF
  436. 53 CONTINUE
  437. END IF
  438. C
  439. IZA1 = IZA1 + 1
  440. C
  441. END IF
  442. C
  443. C
  444. IF (FLAG((I-1)*17+6).EQ.0) THEN
  445. C
  446. DO 54 J = 1 , 2*NP
  447. IF (CORRES(J).EQ.NUMERO(I)) THEN
  448. ZA1 (IZA1 , 14*(J-1)+12) = ZI
  449. END IF
  450. 54 CONTINUE
  451. C
  452. ZSM ( IZA1 ) = -CMPLX(XCL(12,I))
  453. C
  454. IF (NMAS.GT.0) THEN
  455. DO 55 I1 = 1 , NMAS
  456. IF (CORRES(MASS(1,I1)).EQ.NUMERO(I)) THEN
  457. MASS(4,I1) = IZA1-5
  458. END IF
  459. 55 CONTINUE
  460. END IF
  461. C
  462. IZA1 = IZA1 + 1
  463. C
  464. END IF
  465. C
  466. C--------------------- CONDITION AUX LIMITES SUR LE DEBIT
  467. C
  468. IF (FLAG((I-1)*17+15).EQ.0) THEN
  469. C
  470. DO 60 J = 1 , 2*NP
  471. IF (CORRES(J).EQ.NUMERO(I)) THEN
  472. C
  473. INP = INT((J+1)/2)
  474. CSEF = XPI * CARACT(4,INP) * CARACT(4,INP)
  475. CROF = CARACT(9,INP)
  476. N1 = 2*INP-1
  477. N2 = 2*INP
  478. X1 = COOR (1,N1)
  479. Y1 = COOR (2,N1)
  480. Z1 = COOR (3,N1)
  481. X2 = COOR (1,N2)
  482. Y2 = COOR (2,N2)
  483. Z2 = COOR (3,N2)
  484. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  485. C
  486. XI1 = (X2-X1)/XL
  487. XI2 = (Y2-Y1)/XL
  488. XI3 = (Z2-Z1)/XL
  489. IF (J.EQ.N2) THEN
  490. XI1 = -XI1
  491. XI2 = -XI2
  492. XI3 = -XI3
  493. END IF
  494. C
  495. ZA1 (IZA1 , 14*(J-1)+14) = ZI
  496. IF (J.EQ.N2) ZA1 (IZA1 , 14*(J-1)+14) = -ZI
  497. ZA1 (IZA1 , 14*(J-1)+1) = -ZS * ( CROF*CSEF*XI1 )
  498. ZA1 (IZA1 , 14*(J-1)+2) = -ZS * ( CROF*CSEF*XI2 )
  499. ZA1 (IZA1 , 14*(J-1)+3) = -ZS * ( CROF*CSEF*XI3 )
  500. C
  501. END IF
  502. C
  503. 60 CONTINUE
  504. C
  505. ZSM (IZA1 ) = CMPLX(XCL(14,I))
  506. C
  507. IZA1 =IZA1 + 1
  508. END IF
  509. C
  510. C--------------------- CONDITION AUX LIMITES D'IMPEDANCE ACOUSTIQUE
  511. C
  512. IF (FLAG((I-1)*17+15).EQ.I) THEN
  513. C
  514. ISTOP = 0
  515. J = 0
  516. C
  517. 70 J = J + 1
  518. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  519.  
  520. C
  521. INP = INT((J+1)/2)
  522. CSEF = XPI * CARACT(4,INP) * CARACT(4,INP)
  523. CROF = CARACT(9,INP)
  524. N1 = 2*INP-1
  525. N2 = 2*INP
  526. X1 = COOR (1,N1)
  527. Y1 = COOR (2,N1)
  528. Z1 = COOR (3,N1)
  529. X2 = COOR (1,N2)
  530. Y2 = COOR (2,N2)
  531. Z2 = COOR (3,N2)
  532. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  533. C
  534. XI1 = (X2-X1)/XL
  535. XI2 = (Y2-Y1)/XL
  536. XI3 = (Z2-Z1)/XL
  537. C
  538. ZA1 (IZA1 , 14*(J-1)+13 ) = CMPLX(XCL (15,I))
  539. C
  540. ZB = CMPLX(XCL (16,I))
  541. ZA1 (IZA1 , 14*(J-1)+14) = ZB
  542. ZA1 (IZA1 , 14*(J-1)+1) = -ZS * ( CROF*CSEF*XI1 )* ZB
  543. ZA1 (IZA1 , 14*(J-1)+2) = -ZS * ( CROF*CSEF*XI2 )* ZB
  544. ZA1 (IZA1 , 14*(J-1)+3) = -ZS * ( CROF*CSEF*XI3 )* ZB
  545. C
  546. ZSM ( IZA1 ) = CMPLX(XCL (17,I))
  547. C
  548. IZA1 = IZA1+1
  549. ISTOP = 1
  550. END IF
  551. C
  552. IF (J.NE.NP2) GO TO 70
  553. C
  554. END IF
  555. C
  556. 100 CONTINUE
  557. C
  558. RETURN
  559.  
  560. END
  561.  
  562.  
  563.  

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