Download mldcdb.eso

Back to the list

   1 : C MLDCDB    SOURCE    CHAT      05/01/13    01:46:38     5004           
   2 :       SUBROUTINE MLDCDB(LILBLC,LMDUAC,NTOTPO,
   3 :      $     LMDCDB,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : C***********************************************************************
   8 : C NOM         : MLDCDB
   9 : C DESCRIPTION : On construit la liste des éléments duaux de CD-1Bt.
  10 : C
  11 : C
  12 : C LANGAGE     : ESOPE
  13 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  14 : C               mél : gounand@semt2.smts.cea.fr
  15 : C***********************************************************************
  16 : C APPELES          : -
  17 : C APPELE PAR       : PROMAT
  18 : C***********************************************************************
  19 : C ENTREES            : LILBLC, LMDUAC, NTOTPO
  20 : C SORTIES            : LMDCDB
  21 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  22 : C***********************************************************************
  23 : C VERSION    : v1, 09/02/2000, version initiale
  24 : C HISTORIQUE : v1, 09/02/2000, création
  25 : C HISTORIQUE :
  26 : C HISTORIQUE :
  27 : C***********************************************************************
  28 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  29 : C en cas de modification de ce sous-programme afin de faciliter
  30 : C la maintenance !
  31 : C***********************************************************************
  32 : -INC CCOPTIO
  33 : -INC SMLENTI
  34 :       INTEGER JG
  35 :       POINTEUR KPDCDB.MLENTI
  36 : * Includes persos
  37 : *     Segment LSTIND (liste séquentielle indexée)
  38 :       INTEGER NBM,NBTVAL
  39 :       SEGMENT LSTIND
  40 :       INTEGER IDX(NBM+1)
  41 :       INTEGER IVAL(NBTVAL)
  42 :       ENDSEGMENT
  43 : *-INC SLSTIND
  44 :       POINTEUR LILBLC.LSTIND
  45 :       POINTEUR LMDUAC.LSTIND
  46 :       POINTEUR LMDCDB.LSTIND
  47 : *
  48 :       INTEGER NTOTPO
  49 :       INTEGER IMPR,IRET
  50 : *
  51 :       INTEGER LDG,NEL
  52 :       INTEGER IDG,IEL,IVDCDB
  53 :       INTEGER IVLBLC,IVSTRT,IVSTOP
  54 :       INTEGER JVDUAC,JVSTRT,JVSTOP
  55 :       INTEGER LAST,PREC
  56 :       INTEGER NUELC,NUPODC
  57 : *     
  58 : * Executable statements
  59 : *
  60 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans mldcdb.eso' 
  61 : * Dimensionnement de LMDCDB
  62 : * Pour l'instant LMDCDB.IDX(IEL+1)=nombre de points du IELeme élément de
  63 : * LMDCDB
  64 :       SEGACT LILBLC
  65 :       NEL=LILBLC.IDX(/1)-1
  66 :       NBM=NEL
  67 :       NBTVAL=0
  68 :       SEGINI LMDCDB
  69 :       SEGACT LMDUAC
  70 :       JG=NTOTPO
  71 :       SEGINI KPDCDB
  72 :       DO 1 IEL=1,NEL
  73 : * Degré et fin de la liste chaînée
  74 :          LDG=0
  75 :          LAST=-1
  76 :          IVSTRT=LILBLC.IDX(IEL)
  77 :          IVSTOP=LILBLC.IDX(IEL+1)-1
  78 :          DO 12 IVLBLC=IVSTRT,IVSTOP
  79 :             NUELC=LILBLC.IVAL(IVLBLC)
  80 :             JVSTRT=LMDUAC.IDX(NUELC)
  81 :             JVSTOP=LMDUAC.IDX(NUELC+1)-1
  82 :             DO 122 JVDUAC=JVSTRT,JVSTOP
  83 :                NUPODC=LMDUAC.IVAL(JVDUAC)
  84 :                IF (KPDCDB.LECT(NUPODC).EQ.0) THEN
  85 :                   LDG=LDG+1
  86 :                   KPDCDB.LECT(NUPODC)=LAST
  87 :                   LAST=NUPODC
  88 :                ENDIF
  89 :  122        CONTINUE
  90 :  12      CONTINUE
  91 :          LMDCDB.IDX(IEL+1)=LDG
  92 : * Remise à zéro de la liste chaînée
  93 :          DO 14 IDG=1,LDG
  94 :             PREC=KPDCDB.LECT(LAST)
  95 :             KPDCDB.LECT(LAST)=0
  96 :             LAST=PREC
  97 :  14      CONTINUE
  98 :  1    CONTINUE
  99 : * LMDCDB.IDX est transformé en la liste d'indexation sur
 100 : * LMDCDB.IVAL
 101 :       LMDCDB.IDX(1)=1
 102 :       DO 3 IEL=1,NEL
 103 :          LMDCDB.IDX(IEL+1)=LMDCDB.IDX(IEL+1)+LMDCDB.IDX(IEL)
 104 :  3    CONTINUE
 105 :       NBM=NEL
 106 :       NBTVAL=LMDCDB.IDX(NEL+1)-1
 107 :       SEGADJ,LMDCDB
 108 : * Remplissage de LMDCDB
 109 :       IVDCDB=0
 110 :       DO 5 IEL=1,NEL
 111 : * Degré et fin de la liste chaînée
 112 :          LDG=0
 113 :          LAST=-1
 114 :          IVSTRT=LILBLC.IDX(IEL)
 115 :          IVSTOP=LILBLC.IDX(IEL+1)-1
 116 :          DO 52 IVLBLC=IVSTRT,IVSTOP
 117 :             NUELC=LILBLC.IVAL(IVLBLC)
 118 :             JVSTRT=LMDUAC.IDX(NUELC)
 119 :             JVSTOP=LMDUAC.IDX(NUELC+1)-1
 120 :             DO 522 JVDUAC=JVSTRT,JVSTOP
 121 :                NUPODC=LMDUAC.IVAL(JVDUAC)
 122 :                IF (KPDCDB.LECT(NUPODC).EQ.0) THEN
 123 :                   LDG=LDG+1
 124 :                   KPDCDB.LECT(NUPODC)=LAST
 125 :                   LAST=NUPODC
 126 :                ENDIF
 127 :  522        CONTINUE
 128 :  52      CONTINUE
 129 : * Remise à zéro de la liste chaînée et vidage dans LMDCDB
 130 :          DO 54 IDG=1,LDG
 131 :             PREC=KPDCDB.LECT(LAST)
 132 :             IVDCDB=IVDCDB+1
 133 :             LMDCDB.IVAL(IVDCDB)=LAST
 134 :             KPDCDB.LECT(LAST)=0
 135 :             LAST=PREC
 136 :  54      CONTINUE
 137 :  5    CONTINUE
 138 :       SEGSUP KPDCDB
 139 :       SEGDES LMDUAC
 140 :       SEGDES LMDCDB
 141 :       SEGDES LILBLC
 142 : *
 143 : * Normal termination
 144 : *
 145 :       IRET=0
 146 :       RETURN
 147 : *
 148 : * Format handling
 149 : *
 150 : *
 151 : * Error handling
 152 : *
 153 :  9999 CONTINUE
 154 :       IRET=1
 155 :       WRITE(IOIMP,*) 'An error was detected in subroutine mldcdb'
 156 :       RETURN
 157 : *
 158 : * End of subroutine MLDCDB
 159 : *
 160 :       END
 161 : 
 162 :  
 163 :  

© Cast3M 2003 - All rights reserved.
Disclaimer