Télécharger makpr2.eso

Retour à la liste

Numérotation des lignes :

makpr2
  1. C MAKPR2 SOURCE PV 20/09/26 21:18:43 10724
  2. SUBROUTINE MAKPR2(MELPRI,KRINCP,
  3. $ MELDUA,NPODUA,KJSPGD,KRSPGD,KRINCD,
  4. $ KMINCT,KRSPGT,
  5. $ LDDLDU,PMCOU,
  6. $ IMPR,IRET)
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. C***********************************************************************
  10. C NOM : MAKPR2
  11. C PROJET : Noyau linéaire NLIN
  12. C DESCRIPTION : Matrice élémentaire + repérage => profil Morse de la
  13. C matrice assemblée (les colonnes ne sont pas
  14. C ordonnées).
  15. C
  16. C LANGAGE : ESOPE
  17. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  18. C mél : gounand@semt2.smts.cea.fr
  19. C***********************************************************************
  20. C APPELES : PONBL2, POELM2, PONBPO, POPOIN, MKPMOR
  21. C APPELE PAR : PRASEM
  22. C***********************************************************************
  23. C ENTREES : tout sauf PMCOU
  24. C SORTIES : PMCOU
  25. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  26. C***********************************************************************
  27. C VERSION : v1, 13/12/99, création
  28. C HISTORIQUE : v1, 13/12/99, création
  29. C HISTORIQUE :
  30. C HISTORIQUE :
  31. C***********************************************************************
  32. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33. C en cas de modification de ce sous-programme afin de faciliter
  34. C la maintenance !
  35. C***********************************************************************
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC SMELEME
  40. POINTEUR MELPRI.MELEME
  41. POINTEUR MELDUA.MELEME
  42. POINTEUR KJSPGD.MELEME
  43. POINTEUR KMINCT.MINC
  44. POINTEUR PMCOU.PMORS
  45. -INC SMLENTI
  46. POINTEUR KRINCP.MLENTI
  47. POINTEUR KRSPGD.MLENTI
  48. POINTEUR KRINCD.MLENTI
  49. POINTEUR KRSPGT.MLENTI
  50. POINTEUR PONBLD.MLENTI
  51. POINTEUR PODPOP.MLENTI
  52. POINTEUR LDDLDU.MLENTI
  53. INTEGER NPODUA
  54. *
  55. * Includes perso
  56. *
  57. *STAT -INC SMSTAT
  58. *-INC SLSTIND
  59. *
  60. * Segment LSTIND (liste séquentielle indexée)
  61. *
  62. SEGMENT LSTIND
  63. INTEGER IDX(NBM+1)
  64. INTEGER IVAL(NBTVAL)
  65. ENDSEGMENT
  66. *
  67. * LISTE SEQUENTIELLE INDEXEE D'ENTIERS
  68. *
  69. * NBM : NOMBRE DE MULTIPLETS
  70. * NBTVAL : NOMBRE TOTAL DE VALEURS
  71. * IDX(I) : INDICE DE LA PREMIERE VALEUR DU IEME
  72. * MULTIPLET DANS LE TABLEAU IVAL
  73. * IVAL(IDX(I) -> IDX(I+1)-1) : VALEURS DU IEME MULTIPLET
  74. POINTEUR P2ELDU.LSTIND
  75. POINTEUR LPDPP.LSTIND
  76. *
  77. INTEGER IMPR,IRET
  78. *
  79. * Executable statements
  80. *
  81. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans makpr2'
  82. *STAT CALL INMSTA(MSTAT,0)
  83. C - Construire la liste indexée suivante (P2ELDU) :
  84. C * Nombre de multiplets = nb points P1 de MELDUA ;
  85. C * chaque multiplet : numéro des éléments de MELDUA
  86. C contenant P1.
  87. * SEGPRT,MELPRI
  88. * SEGPRT,MELDUA
  89. * SEGPRT,KRSPGD
  90. * In PONBL2 : SEGINI PONBLD
  91. CALL PONBL2(MELDUA,KRSPGD,NPODUA,
  92. $ PONBLD,
  93. $ IMPR,IRET)
  94. IF (IRET.NE.0) GOTO 9999
  95. * SEGPRT,PONBLD
  96. *STAT CALL PRMSTA(' sub. ponbl2',MSTAT,IMPR)
  97. * In POELM2 : SEGINI P2ELDU
  98. CALL POELM2(MELDUA,KRSPGD,PONBLD,
  99. $ P2ELDU,
  100. $ IMPR,IRET)
  101. IF (IRET.NE.0) GOTO 9999
  102. SEGSUP PONBLD
  103. * SEGPRT,P2ELDU
  104. *STAT CALL PRMSTA(' sub. poelm2',MSTAT,IMPR)
  105. C - Construire la liste d'entiers suivante (PODPOP) :
  106. C * Nombre d'entiers = nb points P1 de MELDUA ;
  107. C * pour chaque P1 : nb. de points P2 de MELPRI avec lesquels il
  108. C a une liaison.
  109. * In PONBPO : SEGINI PODPOP
  110. CALL PONBPO(P2ELDU,MELPRI,
  111. $ PODPOP,
  112. $ IMPR,IRET)
  113. IF (IRET.NE.0) GOTO 9999
  114. * SEGPRT,PODPOP
  115. *STAT CALL PRMSTA(' sub. ponbpo',MSTAT,IMPR)
  116. C - Construire la liste indexée suivante (LPDPP) :
  117. C * Nombre de multiplets = nb points P1 de MELDUA
  118. C * pour chaque P1 : numéro des points P2 de MELPRI avec
  119. C lesquels il a une liaison.
  120. * In POPOIN : SEGINI LPDPP
  121. CALL POPOIN(P2ELDU,MELPRI,PODPOP,
  122. $ LPDPP,
  123. $ IMPR,IRET)
  124. IF (IRET.NE.0) GOTO 9999
  125. SEGSUP P2ELDU
  126. SEGSUP PODPOP
  127. IF (IMPR.GT.4) THEN
  128. WRITE(IOIMP,*) 'Liste des points duaux :'
  129. SEGPRT,KJSPGD
  130. WRITE(IOIMP,*) 'Liste indexée de correspondance ',
  131. $ 'point dual-points primaux :'
  132. SEGPRT,LPDPP
  133. ENDIF
  134. *STAT CALL PRMSTA(' sub. popoin',MSTAT,IMPR)
  135. C
  136. C - Initialisation et remplissage du profil de la matrice morse
  137. C
  138. *SG 2016/02/09 Avant, on utilisait MKPMO2
  139. * qui avait un niveau d'indirection en plus => très lent
  140. * MKPMO3 a un niveau d'indirection en moins mais les lignes
  141. * ne sont pas forcément ordonnées. Cela ne pose pas de problème
  142. * à FUSPR5 mais en pose à FUSPRn (n<5) donc il faut avoir METASS=5
  143. * dans tout ce qui appelle l'assemblage de KRES3 (KRESLL, EXDIAG)
  144. CALL MKPMO3(LPDPP,KJSPGD,KRINCP,KRINCD,
  145. $ KRSPGT,KMINCT,
  146. $ LDDLDU,PMCOU,
  147. $ IMPR,IRET)
  148. IF (IRET.NE.0) GOTO 9999
  149. IF (IMPR.GT.4) THEN
  150. WRITE(IOIMP,*) 'Profil Morse non ordonné :'
  151. SEGPRT,PMCOU
  152. ENDIF
  153. SEGSUP LPDPP
  154. *
  155. * Normal termination
  156. *
  157. IRET=0
  158. RETURN
  159. *
  160. * Format handling
  161. *
  162. *
  163. * Error handling
  164. *
  165. 9999 CONTINUE
  166. IRET=1
  167. WRITE(IOIMP,*) 'An error was detected in subroutine makpr2'
  168. RETURN
  169. *
  170. * End of subroutine MAKPR2
  171. *
  172. END
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  

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