Télécharger makprm.eso

Retour à la liste

Numérotation des lignes :

makprm
  1. C MAKPRM SOURCE PV 20/09/26 21:18:44 10724
  2. SUBROUTINE MAKPRM(MELPRI,KRINCP,
  3. $ MELDUA,NPODUA,KJSPGD,KRSPGD,KRINCD,
  4. $ KMINCT,KRSPGT,
  5. $ PMCOU,
  6. $ IMPR,IRET)
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. C***********************************************************************
  10. C NOM : MAKPRM
  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. INTEGER NPODUA
  53. *
  54. * Includes perso
  55. *
  56. *STAT -INC SMSTAT
  57. *-INC SLSTIND
  58. *
  59. * Segment LSTIND (liste séquentielle indexée)
  60. *
  61. SEGMENT LSTIND
  62. INTEGER IDX(NBM+1)
  63. INTEGER IVAL(NBTVAL)
  64. ENDSEGMENT
  65. *
  66. * LISTE SEQUENTIELLE INDEXEE D'ENTIERS
  67. *
  68. * NBM : NOMBRE DE MULTIPLETS
  69. * NBTVAL : NOMBRE TOTAL DE VALEURS
  70. * IDX(I) : INDICE DE LA PREMIERE VALEUR DU IEME
  71. * MULTIPLET DANS LE TABLEAU IVAL
  72. * IVAL(IDX(I) -> IDX(I+1)-1) : VALEURS DU IEME MULTIPLET
  73. POINTEUR P2ELDU.LSTIND
  74. POINTEUR LPDPP.LSTIND
  75. *
  76. INTEGER IMPR,IRET
  77. *
  78. * Executable statements
  79. *
  80. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans makprm'
  81. *STAT CALL INMSTA(MSTAT,0)
  82. C - Construire la liste indexée suivante (P2ELDU) :
  83. C * Nombre de multiplets = nb points P1 de MELDUA ;
  84. C * chaque multiplet : numéro des éléments de MELDUA
  85. C contenant P1.
  86. * SEGPRT,MELPRI
  87. * SEGPRT,MELDUA
  88. * SEGPRT,KRSPGD
  89. * In PONBL2 : SEGINI PONBLD
  90. CALL PONBL2(MELDUA,KRSPGD,NPODUA,
  91. $ PONBLD,
  92. $ IMPR,IRET)
  93. IF (IRET.NE.0) GOTO 9999
  94. * SEGPRT,PONBLD
  95. *STAT CALL PRMSTA(' sub. ponbl2',MSTAT,IMPR)
  96. * In POELM2 : SEGINI P2ELDU
  97. CALL POELM2(MELDUA,KRSPGD,PONBLD,
  98. $ P2ELDU,
  99. $ IMPR,IRET)
  100. IF (IRET.NE.0) GOTO 9999
  101. SEGSUP PONBLD
  102. * SEGPRT,P2ELDU
  103. *STAT CALL PRMSTA(' sub. poelm2',MSTAT,IMPR)
  104. C - Construire la liste d'entiers suivante (PODPOP) :
  105. C * Nombre d'entiers = nb points P1 de MELDUA ;
  106. C * pour chaque P1 : nb. de points P2 de MELPRI avec lesquels il
  107. C a une liaison.
  108. * In PONBPO : SEGINI PODPOP
  109. CALL PONBPO(P2ELDU,MELPRI,
  110. $ PODPOP,
  111. $ IMPR,IRET)
  112. IF (IRET.NE.0) GOTO 9999
  113. * SEGPRT,PODPOP
  114. *STAT CALL PRMSTA(' sub. ponbpo',MSTAT,IMPR)
  115. C - Construire la liste indexée suivante (LPDPP) :
  116. C * Nombre de multiplets = nb points P1 de MELDUA
  117. C * pour chaque P1 : numéro des points P2 de MELPRI avec
  118. C lesquels il a une liaison.
  119. * In POPOIN : SEGINI LPDPP
  120. CALL POPOIN(P2ELDU,MELPRI,PODPOP,
  121. $ LPDPP,
  122. $ IMPR,IRET)
  123. IF (IRET.NE.0) GOTO 9999
  124. SEGSUP P2ELDU
  125. SEGSUP PODPOP
  126. IF (IMPR.GT.4) THEN
  127. WRITE(IOIMP,*) 'Liste des points duaux :'
  128. SEGPRT,KJSPGD
  129. WRITE(IOIMP,*) 'Liste indexée de correspondance ',
  130. $ 'point dual-points primaux :'
  131. SEGPRT,LPDPP
  132. ENDIF
  133. *STAT CALL PRMSTA(' sub. popoin',MSTAT,IMPR)
  134. C
  135. C - Initialisation et remplissage du profil de la matrice morse
  136. C
  137. CALL MKPMOR(LPDPP,KJSPGD,KRINCP,KRINCD,
  138. $ KRSPGT,KMINCT,
  139. $ PMCOU,
  140. $ IMPR,IRET)
  141. IF (IRET.NE.0) GOTO 9999
  142. IF (IMPR.GT.4) THEN
  143. WRITE(IOIMP,*) 'Profil Morse non ordonné :'
  144. SEGPRT,PMCOU
  145. ENDIF
  146. SEGSUP LPDPP
  147. *
  148. * Normal termination
  149. *
  150. IRET=0
  151. RETURN
  152. *
  153. * Format handling
  154. *
  155. *
  156. * Error handling
  157. *
  158. 9999 CONTINUE
  159. IRET=1
  160. WRITE(IOIMP,*) 'An error was detected in subroutine makprm'
  161. RETURN
  162. *
  163. * End of subroutine MAKPRM
  164. *
  165. END
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  

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