Télécharger elfele.eso

Retour à la liste

Numérotation des lignes :

  1. C ELFELE SOURCE FANDEUR 10/12/14 21:16:00 6812
  2. C
  3. SUBROUTINE ELFELE(MSTRUC,KNREFE)
  4. C
  5. C =====================================================================
  6. C APPELE PAR ELFE POUR TRAITER LES ELEMENTS DE POUTRES.
  7. C LE SOUS-PROGRAMME ELFELE CREE LE SEGMENT DE TRAVAIL MNREFE
  8. C A PARTIR DE L'OBJET STRUCTURE.
  9. C
  10. C VERSION : 24/10/86
  11. C PROGRAMMEUR : GUILBAUD
  12. C
  13. C =====================================================================
  14. C
  15. IMPLICIT INTEGER(I-N)
  16. IMPLICIT REAL*8(A-H,O-Z)
  17. C
  18. -INC CCOPTIO
  19. C
  20. -INC SMCHAML
  21. -INC SMCOORD
  22. -INC SMELEME
  23. -INC SMSTRUC
  24. C
  25. SEGMENT MNREFE
  26. INTEGER NREFE(8,NSTR)
  27. INTEGER NTANBN
  28. INTEGER NIDNCN
  29. INTEGER NTVN
  30. POINTEUR NREPA.MPASS
  31. POINTEUR NRECA.MCARA
  32. POINTEUR NRENO.MNORM
  33. POINTEUR NRECPR.ICPR
  34. POINTEUR NREMEL.MELEME
  35. POINTEUR NREDEN.MDEN
  36. ENDSEGMENT
  37. C
  38. C NSTR : NOMBRE D'ELEMENTS
  39. C NREFE(1,I) : MELEME
  40. C NREFE(2,I) : MSOSTU
  41. C NREFE(3,I) : TYPE DE L'ELEMENT
  42. C NREFE(4,I) : NOMBRE DE POINTS DU MELEME
  43. C NREFE(5,I) : NOMBRE DE DDL PAR POINT
  44. C NREFE(6,I)=IVN :LE 1ER DDL DE L'ELEMENT EST LE IVN+1 IEME DE VN
  45. C NREFE(7,I)=IAN :LE 1ER TERME DE LA MATRICE A EST LE IAN IEME DE ANBN
  46. C NREFE(8,I)= 1 :LE IEME ELEMENT EST RIGIDE (OU PARTIELLEMENT) SINON 0
  47. C NTANBN : NOMBRE DE TERMES DES MATRICES A ET B POUR TOUS LES ELEMENTS
  48. C NIDNCN : NOMBRE TOTAL D'INCONNUES DE DNCN
  49. C NTVN : LONGUEUR DU TABLEAU VN
  50. C
  51. SEGMENT MPASS
  52. REAL*8 PASS(9*NSTR)
  53. ENDSEGMENT
  54. C
  55. C PASS(9) : MATRICE DE CHANGEMENT DE REPERE POUR L'ELEMENT I
  56. C
  57. SEGMENT MCARA
  58. REAL*8 CARA(LCAR*NSTR)
  59. ENDSEGMENT
  60. C
  61. C LCAR : NOMBRE DE CARACTERISTIQUES DE L'ELEMENT
  62. C
  63. SEGMENT MNORM
  64. REAL*8 DNORM(LNORM)
  65. ENDSEGMENT
  66. C
  67. C DNORM : VECTEUR DE NORMALISATION
  68. C
  69. SEGMENT ICPR(XCOOR(/1)/(IDIM+1))
  70. C
  71. C IKID=ICPR(NUM(I,J))+K
  72. C LA COMPOSANTE NOMD(K) DU POINT NUM EST LE IKID-IEME DDL DE DNCN( , ,1
  73. C
  74. SEGMENT MDEN
  75. INTEGER IDEN(INS)
  76. ENDSEGMENT
  77. C
  78. C IL Y A INS STRUCTURES AYANT DES CARACTERISTIQUES DIFFERENTES
  79. C IDEN CONTIENT LEUR NUMERO D'ORDRE DANS MNREFE
  80. C
  81. DIMENSION XE(2),YE(2),ZE(2),VECT(3),P(3,3)
  82. DATA L11/11/,L6/6/,L24/24/,L28/28/
  83. C
  84. WRITE(IOIMP,*) ' DEBUT DE ELFELE '
  85. EPS=1.D-3
  86. SEGACT MSTRUC
  87. NSTR= LISTRU(/1)
  88. LCAR=L11
  89. SEGINI MNREFE,ICPR,MPASS,MCARA
  90. DO 5 I=1,XCOOR(/1)/(IDIM+1)
  91. ICPR(I)=-1
  92. 5 CONTINUE
  93. NRECPR=ICPR
  94. NREPA=MPASS
  95. NRECA=MCARA
  96. C
  97. C BOUCLE SUR LES ELEMENTS
  98. C
  99. INS=NSTR
  100. SEGINI MDEN
  101. NREDEN=MDEN
  102. INS=0
  103. NTVN=0
  104. NIDNCN=0
  105. NTANBN=1
  106. NBELEM=2*NSTR
  107. NBNN=1
  108. NBSOUS=0
  109. NBREF=0
  110. SEGINI IPT1
  111. IPT1.ITYPEL=1
  112. LBP=0
  113. NRG=0
  114. LNORM=L24*NSTR
  115. SEGINI MNORM
  116. NRENO=MNORM
  117. DO 30 NS=1,NSTR
  118. MSOSTU =LISTRU(NS)
  119. SEGACT MSOSTU
  120. MCHELM=ISCHAM(1)
  121. MCHEL1=ISCHAM(2)
  122. SEGDES MSOSTU
  123. IF(MCHELM.EQ.0.OR.MCHEL1.EQ.0) THEN
  124. C *** LA SOUS-STRUCTURE DOIT ETRE DEFINIE A PARTIR DES CHAMPS PAR ELEMEN
  125. INTERR(1)=MSOSTU
  126. CALL ERREUR(376)
  127. RETURN
  128. ENDIF
  129. SEGACT MCHELM,MCHEL1
  130. NSOUS=IMACHE(/1)
  131. IF(NSOUS.NE.1) THEN
  132. C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'UNE SEULE ZONE D'ELEMENTS
  133. INTERR(1)=MSOSTU
  134. CALL ERREUR(377)
  135. RETURN
  136. ENDIF
  137. MELEME=IMACHE(1)
  138. SEGACT MELEME
  139. IF(ITYPEL.NE.2) THEN
  140. C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'ELEMENTS SEG2
  141. INTERR(1)=MSOSTU
  142. CALL ERREUR(378)
  143. RETURN
  144. ENDIF
  145. NBELEM=NUM(/2)
  146. IF(NBELEM.NE.1) THEN
  147. C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'UN SEUL ELEMENT
  148. INTERR(1)=MSOSTU
  149. CALL ERREUR(379)
  150. RETURN
  151. ENDIF
  152. C
  153. C LES DIMENSIONS SUIVANTES SONT POUR LES ELEMENTS POUTRES :
  154. C
  155. NDDL=L6
  156. NTAEL=L28
  157. C
  158. C REMPLISSAGE DE ICPR
  159. C
  160. NBNOE=NUM(/1)
  161. DO 10 NB=1,NBNOE
  162. IP=NUM(NB,1)
  163. IF(ICPR(IP).NE.-1) THEN
  164. C *** LA SOUS-STRUCTURE POSSEDE DES NOEUDS EN COMMUN AVEC LES PRECEDENTE
  165. INTERR(1)=MSOSTU
  166. CALL ERREUR(380)
  167. RETURN
  168. ENDIF
  169. ICPR(IP)=NIDNCN
  170. NIDNCN=NIDNCN+2*NDDL
  171. LBP=LBP+1
  172. IPT1.NUM(1,LBP)=IP
  173. 10 CONTINUE
  174. NREFE(1,NS)=MELEME
  175. NREFE(2,NS)=MSOSTU
  176. NREFE(3,NS)=ITYPEL
  177. NREFE(4,NS)=NBNOE
  178. NREFE(5,NS)=NDDL
  179. NREFE(6,NS)=NTVN
  180. NTVN=NTVN+NDDL*NBNOE
  181. C
  182. C RECUPERATION DES CARACTERISTIQUES DYNAMIQUES DE L'ELEMENT
  183. C REMPLISSAGE DE CARA
  184. C
  185. MCHAML=ICHAML(1)
  186. SEGACT,MCHAML
  187. MELVAL=IELVAL(1)
  188. SEGACT,MELVAL
  189. E=VELCHE(1,1)
  190. SEGDES,MELVAL
  191. MELVAL=IELVAL(2)
  192. SEGACT,MELVAL
  193. ANU=VELCHE(1,1)
  194. SEGDES,MELVAL
  195. MELVAL=IELVAL(3)
  196. SEGACT,MELVAL
  197. RHO=VELCHE(1,1)
  198. SEGDES,MELVAL
  199. SEGDES,MCHAML
  200.  
  201. MCHAML=MCHEL1.ICHAML(1)
  202. SEGACT,MCHAML
  203. MELVAL=IELVAL(1)
  204. SEGACT,MELVAL
  205. TORS=VELCHE(1,1)
  206. SEGDES,MELVAL
  207. MELVAL=IELVAL(2)
  208. SEGACT,MELVAL
  209. AINRY=VELCHE(1,1)
  210. SEGDES,MELVAL
  211. MELVAL=IELVAL(3)
  212. SEGACT,MELVAL
  213. AINRZ=VELCHE(1,1)
  214. SEGDES,MELVAL
  215. MELVAL=IELVAL(4)
  216. SEGACT,MELVAL
  217. SECT=VELCHE(1,1)
  218. SEGDES,MELVAL
  219. MELVAL=IELVAL(7)
  220. SEGACT,MELVAL
  221. VX=VELCHE(1,1)
  222. SEGDES,MELVAL
  223. MELVAL=IELVAL(8)
  224. SEGACT,MELVAL
  225. VY=VELCHE(1,1)
  226. SEGDES,MELVAL
  227. MELVAL=IELVAL(9)
  228. SEGACT,MELVAL
  229. VZ=VELCHE(1,1)
  230. SEGDES,MELVAL
  231. SEGDES,MCHAML
  232. C
  233. C CALCUL DES CARACTERISTIQUES DYNAMIQUES
  234. C
  235. ES=E*SECT
  236. AIP=AINRY+AINRZ
  237. AMU=E/(2.D0*(1.D0+ANU))
  238. CTC= SQRT(E/RHO)
  239. C POUR UNE POUTRE DE SECTION CIRCULAIRE SEULEMENT
  240. CTO=SQRT(AMU/RHO)
  241. RTC=SQRT(AIP/SECT)
  242. RTO=SQRT(TORS*2.D0*(1.D0+ANU)/SECT)
  243. RFY=SQRT(AINRY/SECT)
  244. RFZ=SQRT(AINRZ/SECT)
  245. NCOO1=(NUM(1,1)-1)*(IDIM+1)
  246. NCOO2=(NUM(2,1)-1)*(IDIM+1)
  247. XE(1)=XCOOR(NCOO1+1)
  248. XE(2)=XCOOR(NCOO2+1)
  249. YE(1)=XCOOR(NCOO1+2)
  250. YE(2)=XCOOR(NCOO2+2)
  251. ZE(1)=XCOOR(NCOO1+3)
  252. ZE(2)=XCOOR(NCOO2+3)
  253. XL=XE(2)-XE(1)
  254. YL=YE(2)-YE(1)
  255. ZL=ZE(2)-ZE(1)
  256. DL=SQRT(XL*XL+YL*YL+ZL*ZL)
  257. C
  258. C CREATION DE MCARA
  259. C
  260. NCA=LCAR*(NS-1)
  261. CARA(NCA+1)=DL
  262. CARA(NCA+2)=RTC
  263. CARA(NCA+3)=RTO
  264. CARA(NCA+4)=RFY
  265. CARA(NCA+5)=RFZ
  266. CARA(NCA+6)=CTC
  267. CARA(NCA+7)=CTO
  268. CARA(NCA+8)=RHO
  269. CARA(NCA+9)=SECT
  270. CARA(NCA+10)=AIP
  271. CARA(NCA+11)=0.D0
  272. C
  273. C EXISTE-T-IL DES STRUCTURES DE MEME CARACTERISTIQUE ?
  274. C
  275. NS1=NS-1
  276. DO 25 NSP=1,NS1
  277. NCAP=LCAR*(NSP-1)
  278. DO 20 JK=1,7
  279. DIF=ABS(CARA(NCAP+JK)-CARA(NCA+JK))
  280. IF(DIF.GT.EPS) GOTO 25
  281. 20 CONTINUE
  282. NREFE(7,NS)=NREFE(7,NSP)
  283. GOTO 27
  284. 25 CONTINUE
  285. NREFE(7,NS)=NTANBN
  286. NTANBN=NTANBN+NTAEL
  287. INS=INS+1
  288. IDEN(INS)=NS
  289. 27 CONTINUE
  290. C
  291. C CREATION DE LA MATRICE DE PASSAGE REPERE LOCAL-REPERE GLOBAL
  292. C
  293. VECT(1)=VX
  294. VECT(2)=VY
  295. VECT(3)=VZ
  296. MP=9*(NS-1)+1
  297. CALL POUPAS(XE,YE,ZE,VECT,PASS(MP),KERRE)
  298. IF(KERRE.NE.0) THEN
  299. C *** L'ELEMENT EST DE LONGUEUR NULLE
  300. INTERR(1)=MSOSTU
  301. CALL ERREUR(381)
  302. ENDIF
  303. C
  304. C CREATION DU VECTEUR DE NORMALISATION
  305. C
  306. DO 50 IEXTR=1,2
  307. DNORM(NRG+1)=RTC
  308. DNORM(NRG+2)=RFZ
  309. DNORM(NRG+3)=RFY
  310. DNORM(NRG+4)=1.D0
  311. DNORM(NRG+5)=1.D0
  312. DNORM(NRG+6)=1.D0
  313. DNORM(NRG+7)=ES
  314. DNORM(NRG+8)=ES
  315. DNORM(NRG+9)=ES
  316. DNORM(NRG+10)=ES*RTO
  317. DNORM(NRG+11)=ES*RFZ
  318. DNORM(NRG+12)=ES*RFY
  319. NRG=NRG+2*NDDL
  320. 50 CONTINUE
  321. C
  322. SEGDES MELEME
  323. SEGDES MCHELM,MCHEL1
  324. 30 CONTINUE
  325. NTANBN=NTANBN-1
  326. SEGADJ MDEN
  327. NBELEM=LBP
  328. SEGADJ IPT1
  329. NREMEL=IPT1
  330. KNREFE=MNREFE
  331. C
  332. IF(IIMPI.EQ.1) THEN
  333. WRITE(IOIMP,1000) NSTR
  334. 1000 FORMAT(1X,///' NOMBRE D''ELEMENTS ',I5//)
  335. DO 40 NS=1,NSTR
  336. WRITE(IOIMP,1012) NREFE(1,NS)
  337. WRITE(IOIMP,1013) NREFE(2,NS)
  338. WRITE(IOIMP,1014) NREFE(3,NS)
  339. WRITE(IOIMP,1015) NREFE(4,NS)
  340. WRITE(IOIMP,1016) NREFE(5,NS)
  341. WRITE(IOIMP,1017) NREFE(6,NS)
  342. WRITE(IOIMP,1018) NREFE(7,NS)
  343. 1012 FORMAT(1X,' MELEME ',I5)
  344. 1013 FORMAT(1X,' MSOSTU ',I5)
  345. 1014 FORMAT(1X,' ITYPEL ',I5)
  346. 1015 FORMAT(1X,' NBNOE ',I5)
  347. 1016 FORMAT(1X,' NDDL ',I5)
  348. 1017 FORMAT(1X,' IVN ',I5)
  349. 1018 FORMAT(1X,' IAN ',I5,//)
  350. NCA=LCAR*(NS-1)
  351. WRITE(IOIMP,1001) CARA(NCA+1)
  352. WRITE(IOIMP,1002) CARA(NCA+2)
  353. WRITE(IOIMP,1003) CARA(NCA+3)
  354. WRITE(IOIMP,1004) CARA(NCA+4)
  355. WRITE(IOIMP,1005) CARA(NCA+5)
  356. WRITE(IOIMP,1006) CARA(NCA+6)
  357. WRITE(IOIMP,1007) CARA(NCA+7)
  358. WRITE(IOIMP,1008) CARA(NCA+8)
  359. WRITE(IOIMP,1009) CARA(NCA+9)
  360. 1001 FORMAT(1X,' DL ',1PE12.5)
  361. 1002 FORMAT(1X,' RTC ',1PE12.5)
  362. 1003 FORMAT(1X,' RTO ',1PE12.5)
  363. 1004 FORMAT(1X,' RFY ',1PE12.5)
  364. 1005 FORMAT(1X,' EIZ ',1PE12.5)
  365. 1006 FORMAT(1X,' CTC ',1PE12.5)
  366. 1007 FORMAT(1X,' CTO ',1PE12.5)
  367. 1008 FORMAT(1X,' RHO ',1PE12.5)
  368. 1009 FORMAT(1X,' SECT ',1PE12.5)
  369. WRITE(IOIMP,1022)
  370. 1022 FORMAT(1X,' MATRICE DE CHANGEMENT DE REPERE '/)
  371. MP=9*(NS-1)
  372. WRITE(IOIMP,1019)(PASS(MP+I),I=1,9)
  373. 1019 FORMAT(1X,6(1PE12.5,1X))
  374. 40 CONTINUE
  375. WRITE(IOIMP,1122)
  376. 1122 FORMAT(1X,' VECTEURS DE NORMALISATION '/)
  377. WRITE(IOIMP,1019) (DNORM(I),I=1,LNORM)
  378. WRITE(IOIMP,1020)
  379. 1020 FORMAT(1X/,' ICPR '/)
  380. WRITE(IOIMP,1021)(ICPR(I),I=1,ICPR(/1))
  381. 1021 FORMAT(1X,20(I5,1X))
  382. WRITE(IOIMP,*) 'NTANBN',NTANBN,'NIDNCN',NIDNCN,'NTVN',NTVN
  383. ENDIF
  384. SEGDES MSTRUC
  385. WRITE (IOIMP,*) ' FIN DE ELFELE '
  386. RETURN
  387. END
  388.  
  389.  
  390.  

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