Télécharger exmali.eso

Retour à la liste

Numérotation des lignes :

exmali
  1. C EXMALI SOURCE PV 20/09/26 21:16:48 10724
  2. SUBROUTINE EXMALI(IMAT,LNBME,LELEM,
  3. $ LMATR,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : EXMALI
  9. C DESCRIPTION : Matrice + liste de noms de composantes + liste de numéro
  10. C d'élément => extraction et stockage dans un tableau de
  11. C listes indexées.
  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 : ACTIMA, DESIMA, INIRPM, RPELEM
  19. C APPELE PAR : PROMAT
  20. C***********************************************************************
  21. C ENTREES : IMAT, LNBME, LELEM
  22. C SORTIES : LMATR
  23. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  24. C***********************************************************************
  25. C VERSION : v1, 08/02/2000, version initiale
  26. C HISTORIQUE : v1, 08/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 LNBME.MLENTI
  39. POINTEUR LELEM.MLENTI
  40. POINTEUR RPMAT.MLENTI
  41. POINTEUR IMAT.IMATRI
  42. POINTEUR SIMAT.IZAFM
  43. * Includes persos
  44. * Segment LSRIND (liste séquentielle indexée)
  45. SEGMENT LSRIND
  46. INTEGER IDXX(NBM+1)
  47. REAL*8 XVAL(NBTVAL)
  48. ENDSEGMENT
  49. INTEGER NBM,NBTVAL
  50. POINTEUR SLMAT1.LSRIND
  51. POINTEUR SLMATR.LSRIND
  52. SEGMENT LLI
  53. POINTEUR LISLI(NBME).LSRIND
  54. ENDSEGMENT
  55. INTEGER NBME
  56. POINTEUR LMATR.LLI
  57. *
  58. INTEGER IMPR,IRET
  59. *
  60. INTEGER NELEM,NNBME,NPP,NPD
  61. INTEGER IELEM,INBME,IPP,IPD,IBME
  62. INTEGER IVMATR,NUELEM,NOSOMA,NUELMA
  63. INTEGER NPPD
  64. *
  65. * Executable statements
  66. *
  67. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans exmali.eso'
  68. CALL ACTIMA(IMAT)
  69. CALL INIRPM(IMAT,
  70. $ RPMAT,
  71. $ IMPR,IRET)
  72. IF (IRET.NE.0) GOTO 9999
  73. * Dimensionnment de LMATR
  74. SEGACT LNBME
  75. NNBME=LNBME.LECT(/1)
  76. NBME=NNBME
  77. SEGINI LMATR
  78. * Dimensionnement des SLMATR stocké dans SLMAT1
  79. SEGACT RPMAT
  80. SEGACT LELEM
  81. NELEM=LELEM.LECT(/1)
  82. NBM=NELEM
  83. NBTVAL=0
  84. SEGINI SLMAT1
  85. DO 1 IELEM=1,NELEM
  86. NUELEM=LELEM.LECT(IELEM)
  87. CALL RPELEM(NUELEM,RPMAT,
  88. $ NOSOMA,NUELMA,
  89. $ IMPR,IRET)
  90. IF (IRET.NE.0) GOTO 9999
  91. NOSOMA=MAX(1,NOSOMA)
  92. SIMAT=IMAT.LIZAFM(NOSOMA,1)
  93. NPP=SIMAT.AM(/2)
  94. NPD=SIMAT.AM(/3)
  95. NPPD=NPP*NPD
  96. SLMAT1.IDXX(IELEM+1)=NPPD
  97. 1 CONTINUE
  98. SLMAT1.IDXX(1)=1
  99. DO 3 IELEM=1,NELEM
  100. SLMAT1.IDXX(IELEM+1)=SLMAT1.IDXX(IELEM+1)+SLMAT1.IDXX(IELEM)
  101. 3 CONTINUE
  102. * Remplissage des SLMATR
  103. DO 5 INBME=1,NNBME
  104. IBME=LNBME.LECT(INBME)
  105. NBM=NELEM
  106. NBTVAL=SLMAT1.IDXX(NELEM+1)-1
  107. SEGINI SLMATR
  108. SLMATR.IDXX(1)=1
  109. IVMATR=0
  110. DO 52 IELEM=1,NELEM
  111. NUELEM=LELEM.LECT(IELEM)
  112. CALL RPELEM(NUELEM,RPMAT,
  113. $ NOSOMA,NUELMA,
  114. $ IMPR,IRET)
  115. IF (IRET.NE.0) GOTO 9999
  116. NOSOMA=MAX(1,NOSOMA)
  117. SIMAT=IMAT.LIZAFM(NOSOMA,IBME)
  118. NPP=SIMAT.AM(/2)
  119. NPD=SIMAT.AM(/3)
  120. DO 522 IPD=1,NPD
  121. DO 5222 IPP=1,NPP
  122. IVMATR=IVMATR+1
  123. SLMATR.XVAL(IVMATR)=SIMAT.AM(NUELMA,IPP,IPD)
  124. 5222 CONTINUE
  125. 522 CONTINUE
  126. SLMATR.IDXX(IELEM+1)=SLMAT1.IDXX(IELEM+1)
  127. 52 CONTINUE
  128. SEGDES SLMATR
  129. *
  130. * Bug !
  131. *
  132. * LMATR.LISLI(IBME)=SLMATR
  133. LMATR.LISLI(INBME)=SLMATR
  134. 5 CONTINUE
  135. SEGSUP SLMAT1
  136. SEGDES LELEM
  137. SEGSUP RPMAT
  138. SEGDES LMATR
  139. SEGDES LNBME
  140. CALL DESIMA(IMAT)
  141. *
  142. * Normal termination
  143. *
  144. IRET=0
  145. RETURN
  146. *
  147. * Format handling
  148. *
  149. *
  150. * Error handling
  151. *
  152. 9999 CONTINUE
  153. IRET=1
  154. WRITE(IOIMP,*) 'An error was detected in subroutine exmali'
  155. RETURN
  156. *
  157. * End of subroutine EXMALI
  158. *
  159. END
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  

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