Télécharger prolis.eso

Retour à la liste

Numérotation des lignes :

  1. C PROLIS SOURCE GOUNAND 06/04/26 21:16:21 5414
  2. SUBROUTINE PROLIS(JCDUAB,JCPRIB,JCPRIC,JCDUAC,
  3. $ LIPNMC, KRIPRI,
  4. $ LMDUAB,LMPRIB,LMPRIC,LMDUAC,
  5. $ LILBLC,KRMPRI,
  6. $ LCHPOD,LMATRB,LMATRC,
  7. $ ICPCDB,ICDCDB,NIUNIQ,
  8. $ LMPCDB,LMDCDB,NTOTPO,
  9. $ LMACDB,
  10. $ IMPR,IRET)
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8 (A-H,O-Z)
  13. C***********************************************************************
  14. C NOM : PROLIS
  15. C DESCRIPTION : Produit des matrices stockées sous forme de listes
  16. C indexées (1 : Initialisation des tableaux de travail et
  17. C boucle sur les noms d'inconnues)
  18. C
  19. C
  20. C LANGAGE : ESOPE
  21. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  22. C mél : gounand@semt2.smts.cea.fr
  23. C***********************************************************************
  24. C APPELES : INLMAP, RSETEE, PROLI2
  25. C APPELE PAR : PROMAT
  26. C***********************************************************************
  27. C ENTREES : tout sauf LMACDB
  28. C SORTIES : LMACDB
  29. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  30. C***********************************************************************
  31. C VERSION : v1, 10/02/2000, version initiale
  32. C HISTORIQUE : v1, 10/02/2000, création
  33. C HISTORIQUE :
  34. C HISTORIQUE :
  35. C***********************************************************************
  36. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  37. C en cas de modification de ce sous-programme afin de faciliter
  38. C la maintenance !
  39. C***********************************************************************
  40. -INC CCOPTIO
  41. -INC SMLENTI
  42. POINTEUR JCPRIB.MLENTI
  43. POINTEUR JCDUAB.MLENTI
  44. POINTEUR JCPRIC.MLENTI
  45. POINTEUR JCDUAC.MLENTI
  46. POINTEUR KRIPRI.MLENTI
  47. POINTEUR ICPCDB.MLENTI
  48. INTEGER JG
  49. POINTEUR KRMPRI.MLENTI
  50. POINTEUR KIPCDB.MLENTI
  51. POINTEUR KIDCDB.MLENTI
  52. POINTEUR KMPRBP.MLENTI
  53. POINTEUR KMDCDB.MLENTI
  54. * Includes persos
  55. * Segment LSTIND (liste séquentielle indexée)
  56. SEGMENT LSTIND
  57. INTEGER IDX(NBM+1)
  58. INTEGER IVAL(NBTVAL)
  59. ENDSEGMENT
  60. POINTEUR LIPNMC.LSTIND
  61. POINTEUR ICDCDB.LSTIND
  62. POINTEUR LMDUAB.LSTIND
  63. POINTEUR LMPRIB.LSTIND
  64. POINTEUR LMPRIC.LSTIND
  65. POINTEUR LMDUAC.LSTIND
  66. POINTEUR LILBLC.LSTIND
  67. POINTEUR LMPCDB.LSTIND
  68. POINTEUR LMDCDB.LSTIND
  69. SEGMENT LSRIND
  70. INTEGER IDXX(NBM+1)
  71. REAL*8 XVAL(NBTVAL)
  72. ENDSEGMENT
  73. SEGMENT LLI
  74. POINTEUR LISLI(NBME).LSRIND
  75. ENDSEGMENT
  76. POINTEUR LMATRB.LLI
  77. POINTEUR LMATRC.LLI
  78. POINTEUR LMACDB.LLI
  79. POINTEUR SLMATB.LSRIND
  80. POINTEUR SLMATC.LSRIND
  81. POINTEUR SLMCDB.LSRIND
  82. -INC SMLREEL
  83. SEGMENT LLR
  84. POINTEUR LISLR(NBME).MLREEL
  85. ENDSEGMENT
  86. POINTEUR LCHPOD.LLR
  87. POINTEUR SLCHPD.MLREEL
  88. *
  89. INTEGER IMPR,IRET
  90. *
  91. INTEGER NIUNIQ
  92. INTEGER NTOTPO
  93. INTEGER NBMEB,NMPCDB,NELCDB
  94. INTEGER IBMEB,IMPCDB,IBMEC,IBMCDB,INMLPB,NUIDP
  95. INTEGER IVDCDB,IVSTRT,IVSTOP
  96. INTEGER JVBMEC,JVSTRT,JVSTOP
  97.  
  98. *
  99. * Executable statements
  100. *
  101. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans prolis.eso'
  102. * Initialisation de LMACDB
  103. CALL INLMAP(ICDCDB,LMPCDB,LMDCDB,
  104. $ LMACDB,
  105. $ IMPR,IRET)
  106. IF (IRET.NE.0) GOTO 9999
  107. *
  108. * Bouclage sur les inconnues
  109. *
  110. * Repérage dans ICPCDB
  111. JG=NIUNIQ
  112. SEGINI KIPCDB
  113. SEGACT ICPCDB
  114. NMPCDB=ICPCDB.LECT(/1)
  115. CALL RSETEE(ICPCDB.LECT,NMPCDB,
  116. $ KIPCDB.LECT,NIUNIQ,
  117. $ IMPR,IRET)
  118. IF (IRET.NE.0) GOTO 9999
  119. SEGDES ICPCDB
  120. * Repérage dans ICDCDB
  121. JG=NIUNIQ
  122. SEGINI KIDCDB
  123. SEGACT ICDCDB
  124. * Repérage dans MAIPRI
  125. JG=NTOTPO
  126. SEGINI KMPRBP
  127. * Repérage dans LMDCDB
  128. JG=NTOTPO
  129. SEGINI KMDCDB
  130. SEGACT JCDUAB
  131. SEGACT JCPRIB
  132. NBMEB=JCPRIB.LECT(/1)
  133. SEGACT JCPRIC
  134. SEGACT JCDUAC
  135. SEGACT KRIPRI
  136. SEGACT LIPNMC
  137. SEGACT LMDUAB
  138. SEGACT LMPRIB
  139. SEGACT LMPRIC
  140. SEGACT LMDUAC
  141. SEGACT KRMPRI
  142. SEGACT LILBLC
  143. SEGACT LMPCDB
  144. NELCDB=LMPCDB.IDX(/1)-1
  145. SEGACT LMDCDB
  146. SEGACT LMATRB
  147. SEGACT LMATRC
  148. IF (LCHPOD.NE.0) THEN
  149. SEGACT LCHPOD
  150. ENDIF
  151. SEGACT LMACDB
  152. *
  153. * Boucle sur les inconnues de B
  154. *
  155. DO 1 IBMEB=1,NBMEB
  156. IMPCDB=KIPCDB.LECT(JCDUAB.LECT(IBMEB))
  157. IVSTRT=ICDCDB.IDX(IMPCDB)
  158. IVSTOP=ICDCDB.IDX(IMPCDB+1)-1
  159. DO 12 IVDCDB=IVSTRT,IVSTOP
  160. NUIDP=ICDCDB.IVAL(IVDCDB)
  161. KIDCDB.LECT(NUIDP)=IVDCDB
  162. 12 CONTINUE
  163. INMLPB=KRIPRI.LECT(JCPRIB.LECT(IBMEB))
  164. JVSTRT=LIPNMC.IDX(INMLPB)
  165. JVSTOP=LIPNMC.IDX(INMLPB+1)-1
  166. *
  167. * Boucle sur les inconnues C associées à chaque inconnue B
  168. *
  169. DO 14 JVBMEC=JVSTRT,JVSTOP
  170. IBMEC=LIPNMC.IVAL(JVBMEC)
  171. IBMCDB=KIDCDB.LECT(JCDUAC.LECT(IBMEC))
  172. SLMATB=LMATRB.LISLI(IBMEB)
  173. SLMATC=LMATRC.LISLI(IBMEC)
  174. IF (LCHPOD.NE.0) THEN
  175. SLCHPD=LCHPOD.LISLR(INMLPB)
  176. SEGACT SLCHPD
  177. ELSE
  178. SLCHPD=0
  179. ENDIF
  180. SLMCDB=LMACDB.LISLI(IBMCDB)
  181. SEGACT SLMATB
  182. SEGACT SLMATC
  183. SEGACT SLMCDB*MOD
  184. CALL PROLI2(LMDUAB,LMPRIB,LMPRIC,LMDUAC,
  185. $ LILBLC,KRMPRI,KMDCDB,KMPRBP,
  186. $ SLCHPD,SLMATB,SLMATC,
  187. $ LMPCDB,LMDCDB,NELCDB,
  188. $ SLMCDB,
  189. $ IMPR,IRET)
  190. IF (IRET.NE.0) GOTO 9999
  191. SEGDES SLMCDB
  192. IF (SLCHPD.NE.0) THEN
  193. SEGDES SLCHPD
  194. ENDIF
  195. SEGDES SLMATC
  196. SEGDES SLMATB
  197. 14 CONTINUE
  198. DO 16 IVDCDB=IVSTRT,IVSTOP
  199. NUIDP=ICDCDB.IVAL(IVDCDB)
  200. KIDCDB.LECT(NUIDP)=0
  201. 16 CONTINUE
  202. 1 CONTINUE
  203. SEGDES LMACDB
  204. IF (LCHPOD.NE.0) THEN
  205. SEGDES LCHPOD
  206. ENDIF
  207. SEGDES LMATRC
  208. SEGDES LMATRB
  209. SEGDES LMDCDB
  210. SEGDES LMPCDB
  211. SEGDES LILBLC
  212. SEGDES KRMPRI
  213. SEGDES LMDUAC
  214. SEGDES LMPRIC
  215. SEGDES LMPRIB
  216. SEGDES LMDUAB
  217. SEGDES LIPNMC
  218. SEGDES KRIPRI
  219. SEGDES JCDUAC
  220. SEGDES JCPRIC
  221. SEGDES JCPRIB
  222. SEGDES JCDUAB
  223. SEGSUP KMDCDB
  224. SEGSUP KMPRBP
  225. SEGDES ICDCDB
  226. SEGSUP KIDCDB
  227. SEGSUP KIPCDB
  228. *
  229. * Normal termination
  230. *
  231. IRET=0
  232. RETURN
  233. *
  234. * Format handling
  235. *
  236. *
  237. * Error handling
  238. *
  239. 9999 CONTINUE
  240. IRET=1
  241. WRITE(IOIMP,*) 'An error was detected in subroutine prolis'
  242. RETURN
  243. *
  244. * End of subroutine PROLIS
  245. *
  246. END
  247.  
  248.  
  249.  
  250.  
  251.  

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