Télécharger elfele.eso

Retour à la liste

Numérotation des lignes :

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

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