Télécharger limtak.eso

Retour à la liste

Numérotation des lignes :

limtak
  1. C LIMTAK SOURCE PV 17/12/05 21:16:29 9646
  2. SUBROUTINE LIMTAK(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 MATRAK 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***********************************************************************
  18. C SYNTAXE GIBIANE : RESTITUER
  19. C ENTREES : IFRES, numéro du fichier de lecture
  20. C IMAX1, nombre d'objets MATRAK à lire
  21. C IFORM, le fichier à lire est formaté ou
  22. C non.
  23. C ENTREES/SORTIES : ITLACC, la pile des objets MATRAK à
  24. C laquelle on ajoute les objets lus
  25. C CODE RETOUR (IRET) : 0, ok
  26. C 1, erreur dans la lecture de l'objet
  27. C***********************************************************************
  28. C VERSION : v1, 15/07/98, version initiale
  29. C HISTORIQUE : v1, 15/07/98, création
  30. C HISTORIQUE :
  31. C HISTORIQUE :
  32. C***********************************************************************
  33. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  34. C en cas de modification de ce sous-programme afin de faciliter
  35. C la maintenance !
  36. C***********************************************************************
  37.  
  38. -INC PPARAM
  39. -INC CCOPTIO
  40. C-INC SMMATRAKANC
  41. C*************************************************************************
  42. C
  43. C REPERAGE ET STOKAGE DES MATRICES ELEMENTAIRES puis assemblees
  44. C
  45.  
  46. * LGEOC SPG de la pression et/ou des multiplicateurs de Lagrange
  47. * (points CENTRE ) pour chaque operateur de contrainte
  48. * KGEOC SPG pour la totalite des points CENTRE.
  49. * KGEOS SPG pour la totalite des points SOMMET (Diagonale vitesse)
  50. * KLEMC Connectivites de l'ensemble des contraintes
  51. * LIZAFM(NBSOUS) contient les pointeurs IZAFM des sous-zones
  52.  
  53. SEGMENT MATRAK
  54. INTEGER LGEOC(NBOP),IDEBS(NBOP),IFINS(NBOP)
  55. INTEGER LIZAFM(NBSOUS)
  56. INTEGER IKAM0 (NBSOUS)
  57. INTEGER IMEM (NBELC)
  58. INTEGER KLEMC,KGEOS,KGEOC,KDIAG,KCAC,KIZCL,KIZGC
  59. ENDSEGMENT
  60.  
  61. SEGMENT IZAFM
  62. REAL*8 AM(NNELP,NP,IESP),RPGI(NELAX)
  63. ENDSEGMENT
  64. C*************************************************************************
  65. -INC TMCOLAC
  66. SEGMENT IZA
  67. REAL*8 A(NBVA)
  68. ENDSEGMENT
  69. C
  70. INTEGER NDTAB
  71. INTEGER IEL,I
  72. INTEGER ILENA(7)
  73. C======================================================================
  74. *
  75. * Executable statements
  76. *
  77. IRET=0
  78. IRETOU=0
  79. C ... BOUCLE SUR LES MATRAK DE LA PILE
  80. DO 1 IEL=1,IMAX1
  81. C Restitution du chapeau
  82. MATRAK=0
  83. C Dimensions
  84. NDTAB=3
  85. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  86. IF (IRETOU.NE.0) GOTO 9999
  87. NBOP =ILENA(1)
  88. NBSOUS=ILENA(2)
  89. NBELC =ILENA(3)
  90. SEGINI MATRAK
  91. C Rigidités élémentaires
  92. NDTAB = NBOP
  93. CALL LFCDIE(IFRES,NDTAB,LGEOC,IRETOU,IFORM)
  94. IF (IRETOU.NE.0) GOTO 9999
  95. NDTAB = NBOP
  96. CALL LFCDIE(IFRES,NDTAB,IDEBS,IRETOU,IFORM)
  97. IF (IRETOU.NE.0) GOTO 9999
  98. NDTAB = NBOP
  99. CALL LFCDIE(IFRES,NDTAB,IFINS,IRETOU,IFORM)
  100. IF (IRETOU.NE.0) GOTO 9999
  101. NDTAB = NBSOUS
  102. CALL LFCDIE(IFRES,NDTAB,LIZAFM,IRETOU,IFORM)
  103. IF (IRETOU.NE.0) GOTO 9999
  104. NDTAB = NBSOUS
  105. CALL LFCDIE(IFRES,NDTAB,IKAM0,IRETOU,IFORM)
  106. IF (IRETOU.NE.0) GOTO 9999
  107. NDTAB = NBELC
  108. CALL LFCDIE(IFRES,NDTAB,IMEM,IRETOU,IFORM)
  109. IF (IRETOU.NE.0) GOTO 9999
  110. NDTAB = 7
  111. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  112. IF (IRETOU.NE.0) GOTO 9999
  113. KLEMC=ILENA( 1)
  114. KGEOS=ILENA( 2)
  115. KGEOC=ILENA( 3)
  116. KDIAG=ILENA( 4)
  117. KCAC =ILENA( 5)
  118. KIZCL=ILENA( 6)
  119. KIZGC=ILENA( 7)
  120. C Restitution des IZAFM
  121. DO 11 I=1,NBSOUS
  122. IZAFM=LIZAFM(I)
  123. IF (IZAFM.NE.0) THEN
  124. NDTAB=4
  125. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  126. IF (IRETOU.NE.0) GOTO 9999
  127. NNELP=ILENA(1)
  128. NP =ILENA(2)
  129. IESP =ILENA(3)
  130. NELAX=ILENA(4)
  131. SEGINI IZAFM
  132. NDTAB=NNELP*NP*IESP
  133. CALL LFCDI2(IFRES,NDTAB,AM,IRETOU,IFORM)
  134. IF (IRETOU.NE.0) GOTO 9999
  135. NDTAB=NELAX
  136. CALL LFCDI2(IFRES,NDTAB,RPGI,IRETOU,IFORM)
  137. IF (IRETOU.NE.0) GOTO 9999
  138. SEGDES IZAFM
  139. LIZAFM(I)=IZAFM
  140. ENDIF
  141. 11 CONTINUE
  142. C Restitution du IZL
  143. IF (KIZCL.NE.0) THEN
  144. C Dimensions
  145. NDTAB=4
  146. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  147. IF (IRETOU.NE.0) GOTO 9999
  148. NJA =ILENA(1)
  149. NJAN=ILENA(2)
  150. NJAB=ILENA(3)
  151. SEGINI IZL
  152. KZA1=ILENA(4)
  153. C Contenu des tableaux
  154. NDTAB=NJA
  155. CALL LFCDIE(IFRES,NDTAB,KZA,IRETOU,IFORM)
  156. IF (IRETOU.NE.0) GOTO 9999
  157. NDTAB=NJAN
  158. CALL LFCDIE(IFRES,NDTAB,NUAN,IRETOU,IFORM)
  159. IF (IRETOU.NE.0) GOTO 9999
  160. NDTAB=NJAN
  161. CALL LFCDIE(IFRES,NDTAB,NUNA,IRETOU,IFORM)
  162. IF (IRETOU.NE.0) GOTO 9999
  163. NDTAB=NJAN
  164. CALL LFCDIE(IFRES,NDTAB,IMEL,IRETOU,IFORM)
  165. IF (IRETOU.NE.0) GOTO 9999
  166. NDTAB=NJAN
  167. CALL LFCDIE(IFRES,NDTAB,IMJ,IRETOU,IFORM)
  168. IF (IRETOU.NE.0) GOTO 9999
  169. NDTAB=NJAB
  170. CALL LFCDI2(IFRES,NDTAB,B,IRETOU,IFORM)
  171. IF (IRETOU.NE.0) GOTO 9999
  172. C Restitution du IDMAT
  173. IF (KZA1.NE.0) THEN
  174. C Dimension
  175. NDTAB=2
  176. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  177. IF (IRETOU.NE.0) GOTO 9999
  178. NBLK =ILENA(1)
  179. SEGINI IDMAT
  180. IDIAG=ILENA(2)
  181. NDTAB=NBLK
  182. CALL LFCDIE(IFRES,NDTAB,IDESCR,IRETOU,IFORM)
  183. IF (IRETOU.NE.0) GOTO 9999
  184. NDTAB=NBLK+1
  185. CALL LFCDIE(IFRES,NDTAB,NLDBLK,IRETOU,IFORM)
  186. IF (IRETOU.NE.0) GOTO 9999
  187. IF (IDIAG.NE.0) THEN
  188. NDTAB=1
  189. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  190. IF (IRETOU.NE.0) GOTO 9999
  191. NBVA=ILENA(1)
  192. SEGINI IZA
  193. NDTAB=NBVA
  194. CALL LFCDI2(IFRES,NDTAB,A,IRETOU,IFORM)
  195. IF (IRETOU.NE.0) GOTO 9999
  196. SEGDES IZA
  197. IDIAG=IZA
  198. ENDIF
  199. C Restitution des IDBLK
  200. DO 211 INBLK=1,NBLK
  201. IDBLK=IDESCR(INBLK)
  202. IF (IDBLK.NE.0) THEN
  203. C Dimension
  204. NDTAB=3
  205. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  206. IF (IRETOU.NE.0) GOTO 9999
  207. NLBLK=ILENA(1)
  208. SEGINI IDBLK
  209. IMAT =ILENA(2)
  210. ILON =ILENA(3)
  211. NDTAB=NLBLK+1
  212. CALL LFCDIE(IFRES,NDTAB,IDEBLK,IRETOU,IFORM)
  213. IF (IRETOU.NE.0) GOTO 9999
  214. IF (IMAT.NE.0) THEN
  215. NDTAB=1
  216. CALL LFCDIE(IFRES,NDTAB,ILENA,IRETOU,IFORM)
  217. IF (IRETOU.NE.0) GOTO 9999
  218. NBVA=ILENA(1)
  219. SEGINI IZA
  220. NDTAB=NBVA
  221. CALL LFCDI2(IFRES,NDTAB,A,IRETOU,IFORM)
  222. IF (IRETOU.NE.0) GOTO 9999
  223. SEGDES IZA
  224. IMAT=IZA
  225. ENDIF
  226. SEGDES IDBLK
  227. IDESCR(INBLK)=IDBLK
  228. ENDIF
  229. 211 CONTINUE
  230. SEGDES IDMAT
  231. KZA1=IDMAT
  232. ENDIF
  233. SEGDES IZL
  234. KIZCL=IZL
  235. ENDIF
  236. SEGDES MATRAK
  237. ITLAC(**)=MATRAK
  238. 1 CONTINUE
  239. *
  240. * Normal termination
  241. *
  242. IRET=0
  243. RETURN
  244. *
  245. * Format handling
  246. *
  247. *
  248. * Error handling
  249. *
  250. 9999 CONTINUE
  251. WRITE(IOIMP,*) 'An error was detected in subroutine limtak'
  252. IRET=1
  253. RETURN
  254. *
  255. * End of subroutine LIMTAK
  256. *
  257. END
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  

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