Download exmlli.eso

Back to the list

   1 : C EXMLLI    SOURCE    CHAT      05/01/12    23:51:08     5004           
   2 :       SUBROUTINE EXMLLI(MAIL,LELEM,
   3 :      $     LSTXML,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : C***********************************************************************
   8 : C NOM         : EXMLLI
   9 : C DESCRIPTION : Extraction d'éléments d'un maillage que l'on stocke dans
  10 : C               une liste indexée. 
  11 : C               LELEM est supposée ordonné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          : ACTMEL, DESMEL, INIRPL, RPELEM
  19 : C APPELE PAR       : ML2LIE
  20 : C***********************************************************************
  21 : C ENTREES            : MAIL, LELEM
  22 : C SORTIES            : LSTXML
  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 : -INC CCOPTIO
  35 : -INC SMLENTI
  36 :       POINTEUR LELEM.MLENTI
  37 :       POINTEUR RPMAIL.MLENTI
  38 : -INC SMELEME
  39 :       POINTEUR MAIL.MELEME
  40 :       POINTEUR SOUMAI.MELEME
  41 : * Includes persos
  42 : *     Segment LSTIND (liste séquentielle indexée)
  43 :       SEGMENT LSTIND
  44 :       INTEGER IDX(NBM+1)
  45 :       INTEGER IVAL(NBTVAL)
  46 :       ENDSEGMENT
  47 :       INTEGER NBM,NBTVAL
  48 :       POINTEUR LSTXML.LSTIND
  49 : *
  50 :       INTEGER IMPR,IRET
  51 : *
  52 :       INTEGER NELEM,NNO
  53 :       INTEGER IELEM,INO,IVXML
  54 :       INTEGER NOSOMA,NUELEM,NUELMA,NUNO
  55 : *     
  56 : * Executable statements
  57 : *
  58 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans exmlli.eso' 
  58 :       CALL ACTMEL(MAIL)
  58 :       CALL INIRPL(MAIL,
  59 :      $     RPMAIL,
  60 :      $     IMPR,IRET)
  61 :       IF (IRET.NE.0) GOTO 9999
  62 : * Dimensionnement de LSTXML
  63 :       SEGACT LELEM
  64 :       NELEM=LELEM.LECT(/1)
  65 :       NBM=NELEM
  66 :       NBTVAL=0
  67 :       SEGINI LSTXML
  68 :       SEGACT RPMAIL
  69 :       DO 1 IELEM=1,NELEM
  70 :          NUELEM=LELEM.LECT(IELEM)
  70 :          CALL RPELEM(NUELEM,RPMAIL,
  71 :      $        NOSOMA,NUELMA,
  72 :      $        IMPR,IRET)
  73 :           IF (IRET.NE.0) GOTO 9999
  74 :           IF (NOSOMA.NE.0) THEN
  75 :              SOUMAI=MAIL.LISOUS(NOSOMA)
  76 :           ELSE 
  77 :              SOUMAI=MAIL
  78 :           ENDIF
  79 :           NNO=SOUMAI.NUM(/1)
  80 :           LSTXML.IDX(IELEM+1)=NNO
  81 :  1     CONTINUE
  82 : * LSTXML.IDX est transformé en la liste d'indexation sur
  83 : * LSTXML.IVAL
  84 :       LSTXML.IDX(1)=1
  85 :       DO 3 IELEM=1,NELEM
  86 :          LSTXML.IDX(IELEM+1)=LSTXML.IDX(IELEM+1)+LSTXML.IDX(IELEM)
  87 :  3    CONTINUE
  88 :       NBM=NELEM
  89 :       NBTVAL=LSTXML.IDX(NELEM+1)-1
  90 :       SEGADJ,LSTXML
  91 : * Remplissage de LSTXML
  92 :       IVXML=0
  93 :       DO 5 IELEM=1,NELEM
  94 :          NUELEM=LELEM.LECT(IELEM)
  94 :          CALL RPELEM(NUELEM,RPMAIL,
  95 :      $        NOSOMA,NUELMA,
  96 :      $        IMPR,IRET)
  97 :           IF (IRET.NE.0) GOTO 9999
  98 :           IF (NOSOMA.NE.0) THEN
  99 :              SOUMAI=MAIL.LISOUS(NOSOMA)
 100 :           ELSE 
 101 :              SOUMAI=MAIL
 102 :           ENDIF
 103 :           NNO=SOUMAI.NUM(/1)
 104 :           DO 52 INO=1,NNO
 105 :              IVXML=IVXML+1
 106 :              NUNO=SOUMAI.NUM(INO,NUELMA)
 107 :              LSTXML.IVAL(IVXML)=NUNO
 108 :  52       CONTINUE
 109 :  5     CONTINUE
 110 :        SEGSUP RPMAIL
 111 :        SEGDES LSTXML
 112 :        SEGDES LELEM
 112 :        CALL DESMEL(MAIL)
 113 : *
 114 : * Normal termination
 115 : *
 116 :       IRET=0
 117 :       RETURN
 118 : *
 119 : * Format handling
 120 : *
 121 : *
 122 : * Error handling
 123 : *
 124 :  9999 CONTINUE
 125 :       IRET=1
 126 :       WRITE(IOIMP,*) 'An error was detected in subroutine exmlli'
 127 :       RETURN
 128 : *
 129 : * End of subroutine EXMLLI
 130 : *
 131 :       END
 132 : 
 133 :  
 134 :  

© Cast3M 2003 - All rights reserved.
Disclaimer