Télécharger limtik.eso

Retour à la liste

Numérotation des lignes :

limtik
  1. C LIMTIK SOURCE PV 20/09/26 21:18:39 10724
  2. SUBROUTINE LIMTIK(IFRES,ITLACC,IMAX1,IRET,IFORM)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C***********************************************************************
  6. C NOM : LIMTAK
  7. C DESCRIPTION : Lecture d'un objet de type MATRIK sur le
  8. C fichier IFRES
  9. C (appelé par lipil.eso)
  10. C
  11. C LANGAGE : ESOPE
  12. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  13. C mél : gounand@semt2.smts.cea.fr
  14. C***********************************************************************
  15. C APPELES (E/S) : LFCDIE (lecture d'un tableau d'entiers)
  16. C LFCDI2 (lecture d'un tableau de REAL*8)
  17. C LFCDIM (lecture d'un tableau de CHARACTER*4)
  18. C***********************************************************************
  19. C SYNTAXE GIBIANE : RESTITUER
  20. C ENTREES : IFRES, numéro du fichier de lecture
  21. C IMAX1, nombre d'objets MATRIK à lire
  22. C IFORM, le fichier à lire est formaté ou
  23. C non.
  24. C ENTREES/SORTIES : ITLACC, la pile des objets MATRIK à
  25. C laquelle on ajoute les objets lus
  26. C CODE RETOUR (IRET) : 0, ok
  27. C 1, erreur dans la lecture de l'objet
  28. C***********************************************************************
  29. C VERSION : v1, 15/07/98, version initiale
  30. C HISTORIQUE : v1, 15/07/98, création
  31. C HISTORIQUE :
  32. C HISTORIQUE :
  33. C***********************************************************************
  34. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  35. C en cas de modification de ce sous-programme afin de faciliter
  36. C la maintenance !
  37. C***********************************************************************
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC TMCOLAC
  42. SEGMENT/ITBBM1/( ITABM1(NM))
  43. C
  44. INTEGER NDTAB
  45. INTEGER IEL,I,J,K,L
  46. INTEGER ILENA(11)
  47. C======================================================================
  48. *
  49. * Executable statements
  50. *
  51. IRET=0
  52. IRETOU=0
  53. NM=0
  54. SEGINI ITBBM1
  55. DO 1 IEL=1,IMAX1
  56. C Restitution du chapeau
  57. C.... On initialise des piles d'objets non connus de CASTEM
  58. C MINC, PMORS, IZA, IDMAT
  59. SEGINI ITLAC1
  60. SEGINI ITLAC2
  61. SEGINI ITLAC3
  62. SEGINI ITLAC4
  63. MATRIK=0
  64. C Dimensions
  65. NDTAB=4
  66. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  67. IF (IRETOU.NE.0) GOTO 9999
  68. NRIGE =ILENA(1)
  69. NMATRI=ILENA(2)
  70. NKID =ILENA(3)
  71. NKMT =ILENA(4)
  72. SEGINI MATRIK
  73. C Rigidités élémentaires
  74. NDTAB = NRIGE * NMATRI
  75. CALL LFCDIE(IFRES,NDTAB,IRIGEL,IRETOU,IFORM)
  76. IF (IRETOU.NE.0) GOTO 9999
  77. C Matrice assemblée
  78. NDTAB=11
  79. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  80. IF (IRETOU.NE.0) GOTO 9999
  81. KSYM =ILENA( 1)
  82. KMINC =ILENA( 2)
  83. KMINCP=ILENA( 3)
  84. KMINCD=ILENA( 4)
  85. KIZM =ILENA( 5)
  86. KISPGT=ILENA( 6)
  87. KISPGP=ILENA( 7)
  88. KISPGD=ILENA( 8)
  89. KNTTT =ILENA( 9)
  90. KNTTP =ILENA(10)
  91. KNTTD =ILENA(11)
  92. NDTAB=NKID
  93. CALL LFCDIE(IFRES,NDTAB,KIDMAT,IRETOU,IFORM)
  94. IF (IRETOU.NE.0) GOTO 9999
  95. NDTAB=NKMT
  96. CALL LFCDIE(IFRES,NDTAB,KKMMT,IRETOU,IFORM)
  97. IF (IRETOU.NE.0) GOTO 9999
  98. C Restitution des IMATRI
  99. DO 11 I=1,NMATRI
  100. IMATRI=IRIGEL(4,I)
  101. IF (IMATRI.NE.0) THEN
  102. NDTAB=2
  103. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  104. IF (IRETOU.NE.0) GOTO 9999
  105. NBSOUS=ILENA(1)
  106. NBME =ILENA(2)
  107. SEGINI IMATRI
  108. NM=4*NBME
  109. SEGADJ ITBBM1
  110. CALL LFCDIM(IFRES,NM,ITABM1,IRETOU,IFORM)
  111. DO 111 J=1,NBME
  112. J4=(4*J)-3
  113. WRITE(LISPRI(J),FMT='(2A4)') ITABM1(J4),ITABM1(J4+1)
  114. WRITE(LISDUA(J),FMT='(2A4)') ITABM1(J4+2),ITABM1(J4+3)
  115. 111 CONTINUE
  116. NDTAB=NBSOUS*NBME
  117. CALL LFCDIE(IFRES,NDTAB,LIZAFM,IRETOU,IFORM)
  118. IF (IRETOU.NE.0) GOTO 9999
  119. NDTAB=2
  120. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  121. IF (IRETOU.NE.0) GOTO 9999
  122. KSPGP=ILENA(1)
  123. KSPGD=ILENA(2)
  124. C Restitution des IZAFM
  125. DO 112 K=1,NBME
  126. DO 1121 L=1,NBSOUS
  127. IZAFM=LIZAFM(L,K)
  128. IF (IZAFM.NE.0) THEN
  129. NDTAB=3
  130. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  131. IF (IRETOU.NE.0) GOTO 9999
  132. NBEL=ILENA(1)
  133. NP =ILENA(2)
  134. MP =ILENA(3)
  135. SEGINI IZAFM
  136. NDTAB=NBEL*NP*MP
  137. CALL LFCDI2(IFRES,NDTAB,AM,IRETOU,IFORM)
  138. IF (IRETOU.NE.0) GOTO 9999
  139. SEGDES IZAFM
  140. LIZAFM(L,K)=IZAFM
  141. ENDIF
  142. 1121 CONTINUE
  143. 112 CONTINUE
  144. SEGDES IMATRI
  145. IRIGEL(4,I)=IMATRI
  146. ENDIF
  147. 11 CONTINUE
  148. C Restitution des MINC
  149. NDTAB=4
  150. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  151. IF (IRETOU.NE.0) GOTO 9999
  152. NBMINC=ILENA(1)
  153. JMINC =ILENA(2)
  154. JMINCP=ILENA(3)
  155. JMINCD=ILENA(4)
  156. DO 12 I=1,NBMINC
  157. NDTAB=2
  158. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  159. IF (IRETOU.NE.0) GOTO 9999
  160. NPT=ILENA(1)
  161. NBI=ILENA(2)
  162. SEGINI MINC
  163. NM=2*NBI
  164. SEGADJ ITBBM1
  165. CALL LFCDIM(IFRES,NM,ITABM1,IRETOU,IFORM)
  166. IF (IRETOU.NE.0) GOTO 9999
  167. DO 121 J=1,NBI
  168. J2=(2*J)-1
  169. WRITE(LISINC(J),FMT='(2A4)') ITABM1(J2),ITABM1(J2+1)
  170. 121 CONTINUE
  171. NDTAB=NPT+1
  172. CALL LFCDIE(IFRES,NDTAB,NPOS,IRETOU,IFORM)
  173. IF (IRETOU.NE.0) GOTO 9999
  174. NDTAB=NPT*(NBI+1)
  175. CALL LFCDIE(IFRES,NDTAB,MPOS,IRETOU,IFORM)
  176. IF (IRETOU.NE.0) GOTO 9999
  177. SEGDES MINC
  178. ITLAC1.ITLAC(**)=MINC
  179. 12 CONTINUE
  180. IF (JMINC.NE.0) KMINC =ITLAC1.ITLAC(JMINC)
  181. IF (JMINCP.NE.0) KMINCP=ITLAC1.ITLAC(JMINCP)
  182. IF (JMINCD.NE.0) KMINCD=ITLAC1.ITLAC(JMINCD)
  183. C Restitution des PMORS
  184. NDTAB=3
  185. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  186. IF (IRETOU.NE.0) GOTO 9999
  187. NBMORS=ILENA(1)
  188. JMORS =ILENA(2)
  189. JMRST =ILENA(3)
  190. DO 13 I=1,NBMORS
  191. NDTAB=2
  192. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  193. IF (IRETOU.NE.0) GOTO 9999
  194. NTT=ILENA(1)
  195. NJA=ILENA(2)
  196. SEGINI PMORS
  197. NDTAB=NTT+1
  198. CALL LFCDIE(IFRES,NDTAB,IA,IRETOU,IFORM)
  199. IF (IRETOU.NE.0) GOTO 9999
  200. NDTAB=NJA
  201. CALL LFCDIE(IFRES,NDTAB,JA,IRETOU,IFORM)
  202. IF (IRETOU.NE.0) GOTO 9999
  203. SEGDES PMORS
  204. ITLAC2.ITLAC(**)=PMORS
  205. 13 CONTINUE
  206. IF (JMORS.NE.0) KIDMAT(4)=ITLAC2.ITLAC(JMORS)
  207. IF (JMRST.NE.0) KIDMAT(6)=ITLAC2.ITLAC(JMRST)
  208. C Restitution des IDMAT (faite avant les IZA
  209. C car IDIAG pointe sur un IZA)
  210. NDTAB=3
  211. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  212. IF (IRETOU.NE.0) GOTO 9999
  213. NBIDMA=ILENA(1)
  214. JDMATP=ILENA(2)
  215. JDMATD=ILENA(3)
  216. DO 15 I=1,NBIDMA
  217. NDTAB=4
  218. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  219. IF (IRETOU.NE.0) GOTO 9999
  220. NTT =ILENA(1)
  221. NPT =ILENA(2)
  222. NBLK=ILENA(3)
  223. SEGINI IDMAT
  224. IDIAG=ILENA(4)
  225. NDTAB=NTT
  226. CALL LFCDIE(IFRES,NDTAB,KZA,IRETOU,IFORM)
  227. IF (IRETOU.NE.0) GOTO 9999
  228. NDTAB=2*NTT
  229. CALL LFCDIE(IFRES,NDTAB,NUIA,IRETOU,IFORM)
  230. IF (IRETOU.NE.0) GOTO 9999
  231. NDTAB=NPT
  232. CALL LFCDIE(IFRES,NDTAB,NUAN,IRETOU,IFORM)
  233. IF (IRETOU.NE.0) GOTO 9999
  234. NDTAB=NPT
  235. CALL LFCDIE(IFRES,NDTAB,NUNA,IRETOU,IFORM)
  236. IF (IRETOU.NE.0) GOTO 9999
  237. NDTAB=NBLK
  238. CALL LFCDIE(IFRES,NDTAB,IDESCL,IRETOU,IFORM)
  239. IF (IRETOU.NE.0) GOTO 9999
  240. NDTAB=NBLK
  241. CALL LFCDIE(IFRES,NDTAB,IDESCU,IRETOU,IFORM)
  242. IF (IRETOU.NE.0) GOTO 9999
  243. NDTAB=NBLK+1
  244. CALL LFCDIE(IFRES,NDTAB,NLDBLK,IRETOU,IFORM)
  245. IF (IRETOU.NE.0) GOTO 9999
  246. SEGDES IDMAT
  247. ITLAC4.ITLAC(**)=IDMAT
  248. 15 CONTINUE
  249. IF (JDMATP.NE.0) KIDMAT(1)=ITLAC4.ITLAC(JDMATP)
  250. IF (JDMATD.NE.0) KIDMAT(2)=ITLAC4.ITLAC(JDMATD)
  251. C Restitution des IZA
  252. NDTAB=8
  253. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  254. IF (IRETOU.NE.0) GOTO 9999
  255. NBIZA =ILENA( 1)
  256. JS2B =ILENA( 2)
  257. JISA =ILENA( 3)
  258. JIST =ILENA( 4)
  259. JZDU =ILENA( 5)
  260. JZDP =ILENA( 6)
  261. JZFU =ILENA( 7)
  262. JZFP =ILENA( 8)
  263. DO 14 I=1,NBIZA
  264. NDTAB=1
  265. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  266. IF (IRETOU.NE.0) GOTO 9999
  267. NBVA=ILENA(1)
  268. SEGINI IZA
  269. NDTAB=NBVA
  270. CALL LFCDI2(IFRES,NDTAB,A,IRETOU,IFORM)
  271. IF (IRETOU.NE.0) GOTO 9999
  272. SEGDES IZA
  273. ITLAC3.ITLAC(**)=IZA
  274. 14 CONTINUE
  275. IF (JS2B.NE.0) KIDMAT(3)=ITLAC3.ITLAC(JS2B)
  276. IF (JISA.NE.0) KIDMAT(5)=ITLAC3.ITLAC(JISA)
  277. IF (JIST.NE.0) KIDMAT(7)=ITLAC3.ITLAC(JIST)
  278. IF (JZDU.NE.0) KKMMT (4)=ITLAC3.ITLAC(JZDU)
  279. IF (JZDP.NE.0) KKMMT (5)=ITLAC3.ITLAC(JZDP)
  280. IF (JZFU.NE.0) KKMMT (6)=ITLAC3.ITLAC(JZFU)
  281. IF (JZFP.NE.0) KKMMT (7)=ITLAC3.ITLAC(JZFP)
  282. C Restauration des pointeurs des IZA dans IDMAT
  283. DO 17 I=1,NBIDMA
  284. IDMAT=ITLAC4.ITLAC(I)
  285. SEGACT IDMAT*MOD
  286. NBLK=IDESCL(/1)
  287. C IDIAG
  288. IV3=IDIAG
  289. IF (IV3.NE.0) IDIAG=ITLAC3.ITLAC(IV3)
  290. C IDESCL
  291. DO 171 J=1,NBLK
  292. IV3=IDESCL(J)
  293. IF (IV3.NE.0) IDESCL(J)=ITLAC3.ITLAC(IV3)
  294. 171 CONTINUE
  295. C IDESCU
  296. DO 172 J=1,NBLK
  297. IV3=IDESCU(J)
  298. IF (IV3.NE.0) IDESCU(J)=ITLAC3.ITLAC(IV3)
  299. 172 CONTINUE
  300. SEGDES IDMAT
  301. 17 CONTINUE
  302. SEGDES MATRIK
  303. ITLAC(**)=MATRIK
  304. SEGSUP ITLAC4
  305. SEGSUP ITLAC3
  306. SEGSUP ITLAC2
  307. SEGSUP ITLAC1
  308. 1 CONTINUE
  309. SEGSUP ITBBM1
  310. *
  311. * Normal termination
  312. *
  313. IRET=0
  314. RETURN
  315. *
  316. * Format handling
  317. *
  318. *
  319. * Error handling
  320. *
  321. 9999 CONTINUE
  322. WRITE(IOIMP,*) 'An error was detected in subroutine limtik'
  323. IRET=1
  324. RETURN
  325. *
  326. * End of subroutine LIMTIK
  327. *
  328. END
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  

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