Télécharger ellp12.eso

Retour à la liste

Numérotation des lignes :

ellp12
  1. C ELLP12 SOURCE CHAT 05/01/12 23:35:16 5004
  2. SUBROUTINE ELLP12(CORRES,XCL,FLAG,NUMERO,MASS,NMAS,
  3. * NP,NP24,NNT,ZA1,ZSM)
  4. C
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Y)
  7. IMPLICIT COMPLEX*16 (Z)
  8. C
  9. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  10. C
  11. C OPERATEUR ELFE LAPLACE POUTRE
  12. C
  13. C PROGRAMME APPELE PAR ELLP11 : CALCUL LA DEUXIEME PARTIE DE LA
  14. C MATRICE ZA1 ET DE SECOND MEMBRE ZSM
  15. C
  16. C
  17. C
  18. C PARAMETRES :
  19. C
  20. C ENTREE :
  21. C
  22. C CORRES : TABLEAU D'ENTIER DES NUMEROS DES NOEUDS REELS
  23. C POUR CHAQUE NOEUD FICTIF
  24. C XCL : TABLEAU DES VALEURS DES CONDITIONS AUX LIMITES
  25. C FLAG : TABLEAU DE POINTEURS SUR XCL
  26. C NUMERO : TABLEAU DE TRANSFORMATION NUMERO GLOBAL <--> NUMERO LOCAL
  27. C
  28. C NP : NOMBRE DE POUTRES
  29. C NNT : NOMBRE DE NOEUDS REELS
  30. C
  31. C
  32. C SORTIES :
  33. C
  34. C ZA1 : TABLEAU COMPLEXE REPRESENTANT LA MATRICE DE "RIGIDITE"
  35. C ZSM : VECTEUR COMPLEXE SECOND MEMBRE
  36. C
  37. C
  38. C AUTEUR : SAINT-DIZIER
  39. C DATE : 22 DECEMBRE 1989 (VERSION DU 03 AVRIL 1990)
  40. C
  41. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  42. C
  43. COMPLEX*16 ZA1(NP24,*),ZSM(*)
  44. REAL*8 XCL(12,*)
  45. INTEGER FLAG(*),CORRES(*),NUMERO(*),MASS(NNT,4)
  46. C
  47. C **********************************************************************
  48. C REMPLISSAGE DE LA 2EME PARTIE DE ZA1 (INDEPENDANT DE W)
  49. C + 2EME PARTIE DU SECOND MEMBRE
  50. C **********************************************************************
  51. C
  52. ZI = 1.D0
  53. C
  54. IZA1 = 12 * NP + 1
  55. NP2 = 2 * NP
  56. C
  57. C
  58. C --------------------- CONDITION DE NOEUDS IDENTIQUES
  59. C
  60. DO 10 I = 1 , NNT
  61. C
  62. ITEST = 0
  63. J = 0
  64. C
  65. 11 J = J + 1
  66. C
  67. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.0)) THEN
  68. J0 = J
  69. ITEST = 1
  70. ELSE IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.1)) THEN
  71. ZA1 (IZA1 , 12*(J0-1)+1 ) = ZI
  72. ZA1 (IZA1+1 , 12*(J0-1)+2 ) = ZI
  73. ZA1 (IZA1+2 , 12*(J0-1)+3 ) = ZI
  74. ZA1 (IZA1+3 , 12*(J0-1)+4 ) = ZI
  75. ZA1 (IZA1+4 , 12*(J0-1)+5 ) = ZI
  76. ZA1 (IZA1+5 , 12*(J0-1)+6 ) = ZI
  77. C
  78. ZA1 (IZA1 , 12*(J-1)+1 ) = -ZI
  79. ZA1 (IZA1+1 , 12*(J-1)+2 ) = -ZI
  80. ZA1 (IZA1+2 , 12*(J-1)+3 ) = -ZI
  81. ZA1 (IZA1+3 , 12*(J-1)+4 ) = -ZI
  82. ZA1 (IZA1+4 , 12*(J-1)+5 ) = -ZI
  83. ZA1 (IZA1+5 , 12*(J-1)+6 ) = -ZI
  84. IZA1 = IZA1 + 6
  85. C
  86. ENDIF
  87. C
  88. IF (J.NE.NP2) GOTO 11
  89. C
  90. 10 CONTINUE
  91. C
  92. C
  93. DO 100 I = 1 , NNT
  94. C
  95. C --------------------- CONDITION AUX LIMITES SUR LE DEPLACEMENT
  96. C
  97. IF (FLAG((I-1)*12+1).EQ.I) THEN
  98. C
  99. J = 0
  100. ISTOP = 0
  101. 20 J = J + 1
  102. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  103. C
  104. ZA1 (IZA1 , 12*(J-1)+1 ) = ZI
  105. ZSM ( IZA1 ) = CMPLX(XCL ( 1,I))
  106. C
  107. IZA1 = IZA1 + 1
  108. ISTOP = 1
  109. C
  110. ENDIF
  111. C
  112. IF (J.NE.NP2) GO TO 20
  113. C
  114. END IF
  115. C
  116. C
  117. IF (FLAG((I-1)*12+2).EQ.I) THEN
  118. C
  119. J = 0
  120. ISTOP = 0
  121. 21 J = J + 1
  122. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  123. C
  124. ZA1 (IZA1 , 12*(J-1)+2 ) = ZI
  125. ZSM ( IZA1 ) = CMPLX(XCL ( 2,I))
  126. C
  127. IZA1 = IZA1 + 1
  128. ISTOP = 1
  129. C
  130. ENDIF
  131. C
  132. IF (J.NE.NP2) GO TO 21
  133. C
  134. END IF
  135. C
  136. C
  137. IF (FLAG((I-1)*12+3).EQ.I) THEN
  138. C
  139. J = 0
  140. ISTOP = 0
  141. 22 J = J + 1
  142. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  143. C
  144. ZA1 (IZA1 , 12*(J-1)+3 ) = ZI
  145. ZSM ( IZA1 ) = CMPLX(XCL ( 3,I))
  146. C
  147. IZA1 = IZA1 + 1
  148. ISTOP = 1
  149. C
  150. ENDIF
  151. C
  152. IF (J.NE.NP2) GO TO 22
  153. C
  154. END IF
  155. C
  156. C --------------------- CONDITION AUX LIMITES SUR LA ROTATION
  157. C
  158. IF (FLAG((I-1)*12+4).EQ.I) THEN
  159. C
  160. J = 0
  161. ISTOP = 0
  162. 30 J = J + 1
  163. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  164. C
  165. ZA1 (IZA1 , 12*(J-1)+4 ) = ZI
  166. ZSM ( IZA1 ) = CMPLX(XCL ( 4,I))
  167. C
  168. IZA1 = IZA1 + 1
  169. ISTOP = 1
  170. C
  171. ENDIF
  172. C
  173. IF (J.NE.NP2) GO TO 30
  174. C
  175. END IF
  176. C
  177. C
  178. IF (FLAG((I-1)*12+5).EQ.I) THEN
  179. C
  180. J = 0
  181. ISTOP = 0
  182. 31 J = J + 1
  183. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  184. C
  185. ZA1 (IZA1 , 12*(J-1)+5 ) = ZI
  186. ZSM ( IZA1 ) = CMPLX(XCL ( 5,I))
  187. C
  188. IZA1 = IZA1 + 1
  189. ISTOP = 1
  190. C
  191. ENDIF
  192. C
  193. IF (J.NE.NP2) GO TO 31
  194. C
  195. END IF
  196. C
  197. C
  198. IF (FLAG((I-1)*12+6).EQ.I) THEN
  199. C
  200. J = 0
  201. ISTOP = 0
  202. 32 J = J + 1
  203. IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN
  204. C
  205. ZA1 (IZA1 , 12*(J-1)+6 ) = ZI
  206. ZSM ( IZA1 ) = CMPLX(XCL ( 6,I))
  207. C
  208. IZA1 = IZA1 + 1
  209. ISTOP = 1
  210. C
  211. ENDIF
  212. C
  213. IF (J.NE.NP2) GO TO 32
  214. C
  215. END IF
  216. C
  217. C --------------------- CONDITION AUX LIMITES SUR LA FORCE
  218. C
  219. IF (FLAG((I-1)*12+1).EQ.0) THEN
  220. C
  221. DO 40 J = 1 , 2*NP
  222. IF (CORRES(J).EQ.NUMERO(I)) THEN
  223. C
  224. ZA1 (IZA1 , 12*(J-1)+7 ) = ZI
  225. C
  226. END IF
  227. 40 CONTINUE
  228. C
  229. ZSM ( IZA1 ) = CMPLX(XCL(7,I))
  230. C
  231. IF (NMAS.GT.0) THEN
  232. DO 41 I1 = 1 , NMAS
  233. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  234. MASS(I1,4) = IZA1
  235. END IF
  236. 41 CONTINUE
  237. END IF
  238. C
  239. IZA1 = IZA1 + 1
  240. C
  241. END IF
  242. C
  243. C
  244. IF (FLAG((I-1)*12+2).EQ.0) THEN
  245. C
  246. DO 42 J = 1 , 2*NP
  247. IF (CORRES(J).EQ.NUMERO(I)) THEN
  248. ZA1 (IZA1 , 12*(J-1)+8 ) = ZI
  249. C
  250. END IF
  251. 42 CONTINUE
  252. C
  253. ZSM ( IZA1 ) = CMPLX(XCL(8,I))
  254. C
  255. IF (NMAS.GT.0) THEN
  256. DO 43 I1 = 1 , NMAS
  257. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  258. MASS(I1,4) = IZA1-1
  259. END IF
  260. 43 CONTINUE
  261. END IF
  262. C
  263. IZA1 = IZA1 + 1
  264. C
  265. END IF
  266. C
  267. C
  268. IF (FLAG((I-1)*12+3).EQ.0) THEN
  269. C
  270. DO 44 J = 1 , 2*NP
  271. IF (CORRES(J).EQ.NUMERO(I)) THEN
  272. ZA1 (IZA1 , 12*(J-1)+9 ) = ZI
  273. C
  274. END IF
  275. 44 CONTINUE
  276. C
  277. ZSM ( IZA1 ) = CMPLX(XCL(9,I))
  278. C
  279. IF (NMAS.GT.0) THEN
  280. DO 45 I1 = 1 , NMAS
  281. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  282. MASS(I1,4) = IZA1-2
  283. END IF
  284. 45 CONTINUE
  285. END IF
  286. C
  287. IZA1 = IZA1 + 1
  288. C
  289. END IF
  290. C
  291. C --------------------- CONDITION AUX LIMITES SUR LE MOMENT
  292. C
  293. IF (FLAG((I-1)*12+4).EQ.0) THEN
  294. C
  295. DO 50 J = 1 , 2*NP
  296. IF (CORRES(J).EQ.NUMERO(I)) THEN
  297. ZA1 (IZA1 , 12*(J-1)+10) = ZI
  298. END IF
  299. 50 CONTINUE
  300. C
  301. ZSM ( IZA1 ) = CMPLX(XCL(10,I))
  302. C
  303. IF (NMAS.GT.0) THEN
  304. DO 51 I1 = 1 , NMAS
  305. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  306. MASS(I1,4) = IZA1-3
  307. END IF
  308. 51 CONTINUE
  309. END IF
  310. C
  311. IZA1 = IZA1 + 1
  312. C
  313. END IF
  314. C
  315. C
  316. IF (FLAG((I-1)*12+5).EQ.0) THEN
  317. C
  318. DO 52 J = 1 , 2*NP
  319. IF (CORRES(J).EQ.NUMERO(I)) THEN
  320. ZA1 (IZA1 , 12*(J-1)+11) = ZI
  321. END IF
  322. 52 CONTINUE
  323. C
  324. ZSM ( IZA1 ) = CMPLX(XCL(11,I))
  325. C
  326. IF (NMAS.GT.0) THEN
  327. DO 53 I1 = 1 , NMAS
  328. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  329. MASS(I1,4) = IZA1-4
  330. END IF
  331. 53 CONTINUE
  332. END IF
  333. C
  334. IZA1 = IZA1 + 1
  335. C
  336. END IF
  337. C
  338. C
  339. IF (FLAG((I-1)*12+6).EQ.0) THEN
  340. C
  341. DO 54 J = 1 , 2*NP
  342. IF (CORRES(J).EQ.NUMERO(I)) THEN
  343. ZA1 (IZA1 , 12*(J-1)+12) = ZI
  344. END IF
  345. 54 CONTINUE
  346. C
  347. ZSM ( IZA1 ) = CMPLX(XCL(12,I))
  348. C
  349. IF (NMAS.GT.0) THEN
  350. DO 55 I1 = 1 , NMAS
  351. IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN
  352. MASS(I1,4) = IZA1-5
  353. END IF
  354. 55 CONTINUE
  355. END IF
  356. C
  357. IZA1 = IZA1 + 1
  358. C
  359. END IF
  360. C
  361. C
  362. 100 CONTINUE
  363. C
  364. END
  365.  
  366.  

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