Télécharger elfcha.eso

Retour à la liste

Numérotation des lignes :

elfcha
  1. C ELFCHA SOURCE CB215821 20/11/25 13:27:13 10792
  2. SUBROUTINE ELFCHA(MCHARG,KOMALI,KNREFE,KACHAR)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C
  6. C =====================================================================
  7. C
  8. C CREATION DU SEGMENT MACHAR A PARTIR DE L'OBJET CHARGEMENT MCHARG
  9. C
  10. C SOUS PROGRAMME APPELE PAR ELFE
  11. C
  12. C KNREFE : SEGMENT QUI DECRIT LES ELEMENTS
  13. C KOMALI : SEGMENT DE POINTEURS SUR LES SEGMENTS MALIAI DEFINISSANT
  14. C LES LIAISONS
  15. C
  16. C GUILBAUD MAI 86
  17. C
  18. C =====================================================================
  19. C
  20.  
  21. -INC PPARAM
  22. -INC CCOPTIO
  23. -INC CCHAMP
  24. -INC SMCHARG
  25. -INC SMCHPOI
  26. -INC SMELEME
  27. -INC SMLREEL
  28. C
  29. SEGMENT MALIAI
  30. REAL*8 ALIA1(NALI)
  31. REAL*8 ALIA2(NBLI)
  32. REAL*8 ALIA3(NL/2,NL/2)
  33. REAL*8 ALIA4(NL/2,NL/2)
  34. REAL*8 BLIAI(NL)
  35. REAL*8 XLIAI(NL)
  36. INTEGER NLBLI(2,NBSTLI)
  37. INTEGER NDCLIA(NL)
  38. INTEGER NVNLIA(NL/2)
  39. INTEGER IBCHA(NCHAL)
  40. POINTEUR KWLIAI.MWLIAI
  41. POINTEUR KLIMAS.MLIMAS
  42. ENDSEGMENT
  43. C
  44. C MATRICE DE LIAISON PUIS SON INVERSE EN 4 BLOCS:
  45. C ALIA1 : MATRICE BANDE I-A0
  46. C -1
  47. C ALIA2 : MATRICE BANDE -B0
  48. C ALIA3 : MATRICE DE LIAISON TERMES EN DEPLACEMENT
  49. C ALIA4 : MATRICE DE LIAISON TERMES EN CONTRAINTE
  50. C NLBLI : TABLEAU DE CORRESPONDANCE ENTRE LES BLOCS
  51. C BLIAI : VECTEUR SECOND MEMBRE -> VN ET CHARGEMENT EVENTUEL
  52. C XLIAI : VECTEUR PREMIER MEMBRE -> DNCN
  53. C NDCLIA(NJC)=IKID : LA NJC-IEME INCONNUE DE XLIAI EST LE IKID-IEME
  54. C DDL DE DNCN
  55. C DNCN(IKID) <- XLIAI(NJC)
  56. C NVNLIA(NJL)=IKIV : LA NJL-IEME INCONNUE DE BLIAI EST LE IKIV-IEME
  57. C DDL DE VN
  58. C BLIAI(NJL) <- VN(IKIV)
  59. C NCHAL : NOMBRE DE SOUS-CHARGEMENTS AGISSANT SUR LA LIAISON
  60. C IBCHA(I)=K : LA PARTIE CHARGEMENT DE BLIAI POUR LE I-IEME SOUS-
  61. C CHARGEMENT SE TROUVE A PARTIR DE LA K+1-IEME PLACE DANS BCHAR2
  62. C BLIAI(NL/2+NJL) <- BCHAR2(K+NJL)
  63. C
  64. SEGMENT MWLIAI
  65. REAL*8 ALIAI(NL/2,NL)
  66. ENDSEGMENT
  67. C
  68. SEGMENT ICPR(nbpts)
  69. C
  70. C IKID=ICPR(NUM(I,J))+K
  71. C LA COMPOSANTE NOMD(K) DU POINT NUM EST LE IKID-IEME DDL DE DNCN
  72. C
  73. SEGMENT MACHAR
  74. INTEGER LACHAL(NCHAR)
  75. POINTEUR LACHAT(NCHAR).ICHPO2
  76. POINTEUR LACHAF(NCHAR).ICHPO3
  77. REAL*8 BCHAR1(NV1)
  78. REAL*8 BCHAR2(NV1)
  79. ENDSEGMENT
  80. C
  81. C LACHAL(I) : NOMBRE DE TERMES RELATIFS AU CHARGEMENT I DANS BCHAR1
  82. C LACHAT(I) : POINTEUR SUR LA LISTE DES TEMPS DU CHARGEMENT I
  83. C LACHAF(I) : POINTEUR SUR LA LISTE DES F(T) DU CHARGEMENT I
  84. C BCHAR1 : VECTEUR FORME PAR L'EMPILEMENT DE LA PARTIE CHARGEMENT
  85. C DES SECOND-MEMBRES BLIAI, POUR TOUTES LES LIAISONS CONCERNEES
  86. C PAR UN SOUS-CHARGEMENT ET POUR TOUS LES SOUS-CHARGEMENTS
  87. C BCHAR2 : IDEM MODULE PAR LES FONCTIONS TEMPORELLES
  88. C
  89. SEGMENT MOMALI
  90. POINTEUR NOMALI(NBLIPE).MALIAI
  91. POINTEUR KCPR2.ICPR2
  92. ENDSEGMENT
  93. C
  94. SEGMENT MNREFE
  95. INTEGER NREFE(8,NSTR)
  96. INTEGER NTANBN
  97. INTEGER NIDNCN
  98. INTEGER NTVN
  99. POINTEUR NREPA.MPASS
  100. POINTEUR NRECA.MCARA
  101. POINTEUR NRENO.MNORM
  102. POINTEUR NRECPR.ICPR
  103. POINTEUR NREMEL.MELEME
  104. POINTEUR NREDEN.MDEN
  105. ENDSEGMENT
  106. C
  107. C NSTR : NOMBRE D'ELEMENTS
  108. C NREFE(1,I) : MELEME
  109. C NREFE(2,I) : MSOSTU
  110. C NREFE(3,I) : TYPE DE L'ELEMENT
  111. C NREFE(4,I) : NOMBRE DE POINTS DU MELEME
  112. C NREFE(5,I) : NOMBRE DE DDL PAR POINT
  113. C NREFE(6,I)=IVN :LE 1ER DDL DE L'ELEMENT EST LE IVN+1 IEME DE VN
  114. C NREFE(7,I)=IAN :LE 1ER TERME DE LA MATRICE A EST LE IAN IEME DE ANBN
  115. C NREFE(8,I)= 1 :LE IEME ELEMENT EST RIGIDE (OU PARTIELLEMENT) SINON 0
  116. C NTANBN : NOMBRE DE TERMES DES MATRICES A ET B POUR TOUS LES ELEMENTS
  117. C NIDNCN : NOMBRE TOTAL D'INCONNUES DE DNCN
  118. C NTVN : LONGUEUR DU TABLEAU VN
  119. C
  120. SEGMENT ICPR2(NIDNCN)
  121. C
  122. C NJ=ICPR2(IKID) : LE IKID-IEME DDL DE DNCN EST LE NJ-IEME DANS
  123. C L'ENSEMBLE DES XLIAI MIS BOUT-A-BOUT
  124. C
  125. SEGMENT V0(2*NTVN)*D
  126. C
  127. SEGMENT ITCOM(NC)
  128. C
  129. SEGMENT IT(NBLIPE)
  130. C
  131. SEGMENT/ITLI/(ITLIA(NCHAR,NBLIPE))
  132. C
  133. CHARACTER*(LOCOMP) NOC
  134.  
  135.  
  136. WRITE(IOIMP,*) 'DEBUT DE ELFCHA'
  137. KACHAR=0
  138. MNREFE=KNREFE
  139. ICPR=NRECPR
  140. SEGINI V0
  141. C
  142. MOMALI=KOMALI
  143. ICPR2=KCPR2
  144. NBLIPE=NOMALI(/1)
  145. SEGINI IT
  146. C
  147. SEGACT MCHARG
  148. NCHAR=KCHARG(/1)
  149. SEGINI ITLI
  150. DO 1 I=1,NBLIPE
  151. IT(I)=0
  152. DO 1 J=1,NCHAR
  153. ITLIA(J,I)=0
  154. 1 CONTINUE
  155. C
  156. NV1=NTVN
  157. SEGINI MACHAR
  158. C
  159. C BOUCLE SUR LES SOUS-CHARGEMENTS DE L'OBJET CHARGEMENT
  160. C
  161. NV1=0
  162. DO 140 I=1,NCHAR
  163. DO 10 II=1,NIDNCN
  164. V0(II)=0.D0
  165. 10 CONTINUE
  166. C
  167. C 1 - RECHERCHE DE LA POSITION DU DDL CHARGE DANS L'ENSEMBLE DES XLIAI
  168. C ET REMPLISSAGE DE V0
  169. C
  170. ICHARG=KCHARG(I)
  171. SEGACT ICHARG
  172. IF(CHATYP.NE.'CHPOINT '.OR.CHAMOB(I).NE.'STAT'
  173. & .OR.CHALIE(I).NE.'LIE ') THEN
  174. SEGDES ICHARG,MCHARG
  175. CALL ERREUR(696)
  176. RETURN
  177. ENDIF
  178. MCHPOI=ICHPO1
  179. SEGACT MCHPOI
  180. NSOUPO=IPCHP(/1)
  181. DO 70 ISOUPO=1,NSOUPO
  182. MSOUPO=IPCHP(ISOUPO)
  183. SEGACT MSOUPO
  184. MPOVAL=IPOVAL
  185. SEGACT MPOVAL
  186. NC=VPOCHA(/2)
  187. SEGINI ITCOM
  188. DO 40 INC=1,NC
  189. NOC=NOCOMP(INC)
  190. ITCOM(INC)=0
  191. DO 20 IDD=1,6
  192. IF(NOC.EQ.NOMDD(IDD)) THEN
  193. ITCOM(INC)=IDD
  194. GO TO 40
  195. ENDIF
  196. 20 CONTINUE
  197. DO 30 IDU=1,6
  198. IF(NOC.EQ.NOMDU(IDU)) THEN
  199. ITCOM(INC)=IDU+6
  200. GO TO 40
  201. ENDIF
  202. 30 CONTINUE
  203. 40 CONTINUE
  204. C
  205. MELEME=IGEOC
  206. SEGACT MELEME
  207. NBPO=NUM(/2)
  208. DO 60 IBPO=1,NBPO
  209. IKI=ICPR(NUM(1,IBPO))
  210. IF(IKI.EQ.-1) THEN
  211. C *** LE POINT NE FAIT PAS PARTIE DE LA STRUCTURE
  212. INTERR(1)=IKI
  213. CALL ERREUR(384)
  214. RETURN
  215. ENDIF
  216. DO 50 INC=1,NC
  217. IKC=ITCOM(INC)
  218. IF(IKC.EQ.0) THEN
  219. C *** LA COMPOSANTE N'EST PAS DEFINIE POUR LA STRUCTURE
  220. MOTERR=NOCOMP(INC)
  221. CALL ERREUR(385)
  222. RETURN
  223. ENDIF
  224. VP=VPOCHA(IBPO,INC)
  225. IV=ICPR2(IKI+IKC)
  226. C WRITE(IOIMP,*) IV
  227. IF(VP.NE.0.D0) V0(IV)=VP
  228. 50 CONTINUE
  229. 60 CONTINUE
  230. SEGSUP ITCOM
  231. 70 CONTINUE
  232. C WRITE(IOIMP,*)(V0(J),J=1,NIDNCN)
  233. C
  234. C 2 - CREATION DU TABLEAU V1 A PARTIR DE V0
  235. C
  236. NDEPLA=0
  237. NV2=0
  238. DO 130 INLIAI=1,NBLIPE
  239. MALIAI=NOMALI(INLIAI)
  240. MWLIAI=KWLIAI
  241. NL=NDCLIA(/1)
  242. C
  243. C Y A-T-IL UN CHARGEMENT SUR LA LIAISON ?
  244. C
  245. DO 80 NJCC=1,NL
  246. IF(V0(NDEPLA+NJCC).NE.0.D0) THEN
  247. C
  248. C CREATION DE LA PARTIE CHARGEMENT DU SECOND MEMBRE BLIAI
  249. C ET EMPILEMENT DANS BCHAR1
  250. C
  251. ITT=IT(INLIAI)+1
  252. IT(INLIAI)=ITT
  253. NLS2=NL/2
  254. ITLIA(ITT,INLIAI)=NV1
  255. NVA=NV1
  256. NV1=NV1+NLS2
  257. NV2=NV2+NLS2
  258. C WRITE(IOIMP,*)ITT,NV1,NV2,INLIAI,NDEPLA
  259. DO 110 NJC=1,NL
  260. VV=V0(NDEPLA+NJC)
  261. IF(VV.NE.0.D0) THEN
  262. DO 100 NJ=1,NLS2
  263. C WRITE(IOIMP,*) ALIAI(NJL,NJC)
  264. IF(ALIAI(NJ,NJC).NE.0.D0) THEN
  265. NJA=NVA+NJ
  266. BCHAR1(NJA)=BCHAR1(NJA)+VV
  267. C WRITE(IOIMP,*) BCHAR1(NJA)
  268. ENDIF
  269. 100 CONTINUE
  270. ENDIF
  271. 110 CONTINUE
  272. GOTO 120
  273. ENDIF
  274. 80 CONTINUE
  275. 120 NDEPLA=NDEPLA+NL
  276. 130 CONTINUE
  277. C
  278. LACHAL(I)=NV2
  279. MLREEL=ICHPO2
  280. SEGACT MLREEL
  281. LACHAT(I)=ICHPO2
  282. MLREEL=ICHPO3
  283. SEGACT MLREEL
  284. LACHAF(I)=ICHPO3
  285. SEGDES ICHARG
  286. 140 CONTINUE
  287. C
  288. SEGDES MCHARG
  289. SEGSUP V0
  290. SEGADJ MACHAR
  291. KACHAR=MACHAR
  292. C
  293. C CREATION DU TABLEAU IBCHA DES SEGMENTS MALIAI
  294. C
  295. DO 160 INLIAI=1,NBLIPE
  296. MALIAI=NOMALI(INLIAI)
  297. MWLIAI=KWLIAI
  298. SEGSUP MWLIAI
  299. NCHAL=IT(INLIAI)
  300. IF(NCHAL.NE.0) THEN
  301. NL=NDCLIA(/1)
  302. NALI=ALIA1(/1)
  303. NBLI=ALIA2(/1)
  304. NBSTLI=NLBLI(/2)
  305. SEGADJ MALIAI
  306. DO 150 ITT=1,NCHAL
  307. IBCHA(ITT)=ITLIA(ITT,INLIAI)
  308. 150 CONTINUE
  309. ENDIF
  310. 160 CONTINUE
  311. SEGSUP IT,ITLI
  312. C
  313. IF(IIMPI.EQ.1) THEN
  314. DO 210 INLIAI=1,NBLIPE
  315. MALIAI=NOMALI(INLIAI)
  316. NCHAL=IBCHA(/1)
  317. WRITE(IOIMP,1001) INLIAI,NCHAL
  318. 1001 FORMAT(/1X,' LA ',I5,' IEME LIAISON EST CHARGEE AVEC ',I5,
  319. *' CHARGEMENT(S) '/)
  320. IF(NCHAL.NE.0) THEN
  321. NLS2=NDCLIA(/1)/2
  322. DO 200 J=1,NCHAL
  323. IT1=IBCHA(J)+1
  324. IT2=0
  325. DO 170 N=1,NCHAR
  326. IT2=IT2+LACHAL(N)
  327. IF(IT1.LE.IT2) THEN
  328. WRITE(IOIMP,1002) N,LACHAT(N),LACHAF(N),LACHAL(N)
  329. 1002 FORMAT(//1X,' CHARGEMENT ',I5,' T, F(T) :',I6,1X,I6,1X,I6)
  330. GOTO 180
  331. ENDIF
  332. 170 CONTINUE
  333. 180 CONTINUE
  334. IT2=IT1+NLS2-1
  335. WRITE(IOIMP,1003)(BCHAR1(IT),IT=IT1,IT2)
  336. 1003 FORMAT(1X,10(1PE12.5,1X))
  337. 200 CONTINUE
  338. ENDIF
  339. 210 CONTINUE
  340. ENDIF
  341. C
  342. WRITE(IOIMP,*) 'FIN DE ELFCHA'
  343. RETURN
  344. END
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  

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