Télécharger rpelle.eso

Retour à la liste

Numérotation des lignes :

rpelle
  1. C RPELLE SOURCE CHAT 05/01/13 03:06:54 5004
  2. SUBROUTINE RPELLE(LMAIL,KREF,NREF,
  3. $ LIRFLM,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : RPELLE
  9. C DESCRIPTION : Construction d'un liste indexée qui, à un point associe
  10. C les numéros des éléments qui contiennent ce point.
  11. C Les éléments sont stockés dans une liste indexée.
  12. C
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C APPELES : -
  19. C APPELE PAR : PROMAT
  20. C***********************************************************************
  21. C ENTREES : LMAIL, KREF, NREF
  22. C SORTIES : LIRFLM
  23. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  24. C***********************************************************************
  25. C VERSION : v1, 09/02/2000, version initiale
  26. C HISTORIQUE : v1, 09/02/2000, création
  27. C HISTORIQUE :
  28. C HISTORIQUE :
  29. C***********************************************************************
  30. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  31. C en cas de modification de ce sous-programme afin de faciliter
  32. C la maintenance !
  33. C***********************************************************************
  34.  
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. -INC SMLENTI
  38. POINTEUR KREF.MLENTI
  39. * Includes persos
  40. * Segment LSTIND (liste séquentielle indexée)
  41. INTEGER NBM,NBTVAL
  42. SEGMENT LSTIND
  43. INTEGER IDX(NBM+1)
  44. INTEGER IVAL(NBTVAL)
  45. ENDSEGMENT
  46. *-INC SLSTIND
  47. POINTEUR LMAIL.LSTIND
  48. POINTEUR LIRFLM.LSTIND
  49. *
  50. INTEGER NREF
  51. INTEGER IMPR,IRET
  52. *
  53. INTEGER IREF,IEL
  54. INTEGER NEL
  55. INTEGER NONOEU,NOSTRT,NOSTOP
  56. INTEGER NUNOEU
  57. *
  58. * Executable statements
  59. *
  60. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans rpelle.eso'
  61. * Construction de l'indexation de la liste séquentielle
  62. * Pour l'instant LIRFLM.IDX(IREF+1)=nombre d'éléments de LMAIL
  63. * tels que il existe un point KREF(point)=IREF
  64. * On a supposé qu'il n'y avait pas de noeuds doubles dans les élément.
  65. SEGACT LMAIL
  66. NEL=LMAIL.IDX(/1)-1
  67. SEGACT KREF
  68. NBM=NREF
  69. NBTVAL=0
  70. SEGINI LIRFLM
  71. DO 1 IEL=1,NEL
  72. NOSTRT=LMAIL.IDX(IEL)
  73. NOSTOP=LMAIL.IDX(IEL+1)-1
  74. DO 12 NONOEU=NOSTRT,NOSTOP
  75. NUNOEU=LMAIL.IVAL(NONOEU)
  76. IREF=KREF.LECT(NUNOEU)
  77. IF (IREF.NE.0) THEN
  78. LIRFLM.IDX(IREF+1)=LIRFLM.IDX(IREF+1)+1
  79. ENDIF
  80. 12 CONTINUE
  81. 1 CONTINUE
  82. * SEGPRT,LIRFLM
  83. * LIRFLM.IDX est transformé en la liste d'indexation sur
  84. * LIRFLM.IVAL
  85. LIRFLM.IDX(1)=1
  86. DO 3 IREF=1,NREF
  87. LIRFLM.IDX(IREF+1)=LIRFLM.IDX(IREF+1)+LIRFLM.IDX(IREF)
  88. 3 CONTINUE
  89. NBM=NREF
  90. NBTVAL=LIRFLM.IDX(NREF+1)-1
  91. SEGADJ,LIRFLM
  92. * SEGPRT,LIRFLM
  93. * LIRFLM.IDX est désormais la liste des index courants sur
  94. * LIRFLM.IVAL que l'on remplit.
  95. DO 5 IEL=1,NEL
  96. NOSTRT=LMAIL.IDX(IEL)
  97. NOSTOP=LMAIL.IDX(IEL+1)-1
  98. DO 52 NONOEU=NOSTRT,NOSTOP
  99. NUNOEU=LMAIL.IVAL(NONOEU)
  100. IREF=KREF.LECT(NUNOEU)
  101. IF (IREF.NE.0) THEN
  102. LIRFLM.IVAL(LIRFLM.IDX(IREF))=IEL
  103. LIRFLM.IDX(IREF)=LIRFLM.IDX(IREF)+1
  104. ENDIF
  105. 52 CONTINUE
  106. 5 CONTINUE
  107. * SEGPRT,LIRFLM
  108. * On restaure les valeurs de LIRFLM.IDX
  109. DO 7 IREF=NREF,2,-1
  110. LIRFLM.IDX(IREF)=LIRFLM.IDX(IREF-1)
  111. 7 CONTINUE
  112. LIRFLM.IDX(1)=1
  113. SEGDES LIRFLM
  114. SEGDES KREF
  115. SEGDES LMAIL
  116. *
  117. * Normal termination
  118. *
  119. IRET=0
  120. RETURN
  121. *
  122. * Format handling
  123. *
  124. *
  125. * Error handling
  126. *
  127. 9999 CONTINUE
  128. IRET=1
  129. WRITE(IOIMP,*) 'An error was detected in subroutine rpelle'
  130. RETURN
  131. *
  132. * End of subroutine RPELLE
  133. *
  134. END
  135.  
  136.  
  137.  
  138.  

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