Download elpofa.eso

Back to the list

   1 : C ELPOFA    SOURCE    CHAT      05/01/12    23:37:47     5004           
   2 :       SUBROUTINE ELPOFA(MCLAS,MCLPO1,MCENT,MFACEL,MFACEP,MELPOE,MCENEL)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C***********************************************************************
   6 : C NOM         : ELPOEL
   7 : C DESCRIPTION : Construit le MELEME de correspondance
   8 : C               Elément-(Point)-Elément
   9 : C               Les éléments du MELEME sont de type POLY. Ils ont pour
  10 : C               DERNIER point le point centre de l'élément considéré.
  11 : C               Les points suivants sont les points centre des éléments
  12 : C               qui ont un point de MCLPO1 et de MFACEP en commun avec 
  13 : C               l'élément considéré.
  14 : C LANGAGE     : ESOPE
  15 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  16 : C               mél : gounand@semt2.smts.cea.fr
  17 : C***********************************************************************
  18 : C APPELES          : ELCONT : les éléments du contour de MCLAS et leur 
  19 : C                             centre
  20 : C                    POINB2 : maillage de points -> LISTENTI de
  21 : C                             nb d'éléments auxquels ils appartiennent
  22 : C                    POELE2 : maillage de points -> MLELEM contenant les
  23 : C                             points et les centres d'éléments auxquels 
  24 : C                             ils appartiennent.
  25 : C                    ELENB2 : maillage de points -> LISTENTI de 
  26 : C                             nb d'éléments adjacents (ayant un 
  27 : C                             point du maillage de points en 
  28 : C                             commun) à des éléments repérés par
  29 : C                             leur centre.
  30 : C                    ELELE2 : maillage de points -> MLELEM contenant
  31 : C                             les centres des éléments, et, pour 
  32 : C                             chaque centre, les centres des éléments
  33 : C                             adjacents.
  34 : C                    LE2ME2 : MLELEM (liste indexée d'éléments) 
  35 : C                             -> MELEME 
  36 : C APPELES (E/S)    : -
  37 : C APPELES (BLAS)   : -
  38 : C APPELES (CALCUL) : -
  39 : C APPELE PAR       : LEKTAB
  40 : C***********************************************************************
  41 : C SYNTAXE GIBIANE    : -
  42 : C ENTREES            : MCLAS (type MELEME)  : maillage de classe de 
  43 : C                                             points (sommet, face) par
  44 : C                                             élément (MMAIL,ELTFA)
  45 : C                      MCLPO1 (type MELEME) : maillage de points
  46 : C                                             correspondant à MCLAS
  47 : C                      MCENT (type MELEME)  : maillage des points
  48 : C                                             centre
  49 : C                      MFACEL (type MELEME) : maillage de connectivité
  50 : C                                             face-centre-face
  51 : C                      MFACEP (type MELEME) : maillage de connectivité
  52 : C                                             sommets-centre de face
  53 : C ENTREES/SORTIES    : -
  54 : C SORTIES            : MELPOE (type MELEME) : maillage de 
  55 : C                                             connectivités
  56 : C                                             élément-(point)-élément
  57 : C***********************************************************************
  58 : C VERSION    : v1, 08/10/98, version initiale
  59 : C HISTORIQUE : v1, 08/10/98, création
  60 : C HISTORIQUE : Modif, R. MOREL and A. BECCANTINI, 11.04.2000
  61 : C HISTORIQUE :
  62 : C***********************************************************************
  63 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  64 : C en cas de modification de ce sous-programme afin de faciliter
  65 : C la maintenance !
  66 : C***********************************************************************
  67 : -INC CCOPTIO
  68 : -INC SMELEME
  69 :       POINTEUR MCLAS.MELEME
  70 :       POINTEUR MCLPO1.MELEME
  71 :       POINTEUR MCENT.MELEME
  72 :       POINTEUR MCONT.MELEME
  73 :       POINTEUR MCCEN.MELEME
  74 :       POINTEUR MFACEL.MELEME
  75 :       POINTEUR MFACEP.MELEME
  76 :       POINTEUR MELPOE.MELEME
  77 :       POINTEUR MCENEL.MELEME
  78 : -INC SMLENTI
  79 :       POINTEUR PONBEL.MLENTI
  80 :       POINTEUR ELNBEL.MLENTI
  81 : *
  82 : *     Segment MLELEM
  83 : *
  84 :       SEGMENT MLELEM
  85 :       INTEGER INDEX(NBL+1)
  86 :       INTEGER LESPOI(NBTPOI)
  87 :       ENDSEGMENT
  88 : *
  89 : *     LISTE SEQUENTIELLE INDEXEE D'ELEMENTS
  90 : *
  91 : *     NBL      : NOMBRE D'ELEMENTS
  92 : *     NBTPOI   : NOMBRE TOTAL DE POINTS REFERENCEES 
  93 : *     INDEX(I) : INDICE DU 1ER POINT DU IEME ELEMENT 
  94 : *                DANS LE TABLEAU LESPOI
  95 : *     LESPOI(INDEX(I) -> INDEX(I+1)-1) : NUMERO DES NOEUDS
  96 : *                DU IEME ELEMENT
  97 : *
  98 :       POINTEUR LEPOEL.MLELEM
  99 :       POINTEUR LEELEL.MLELEM
 100 : C     
 101 : C**** Variables de COOPTIO
 102 : C     
 103 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
 104 : C     &     ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
 105 : C     &     ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
 106 : C     &     ,IECHO,   IIMPI,  IOSPI
 107 : C     &     ,IDIM
 108 : C     &     ,MCOORD
 109 : C     &     ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
 110 : C     &     ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
 111 : C     &     ,NORINC,NORVAL,NORIND,NORVAD
 112 : C     &     ,NUCROU, IPSAUV
 113 : *
 114 :       INTEGER ILISOU, NBSOUS
 115 : *
 116 : * Executable statements
 117 : *     
 118 : *
 119 : * On commence par appeler ELCONT pour avoir les éléments du contour 
 120 : * de MCLAS et leur centre : en entree : les connectivités FACE, FACEL,
 121 : * FACEP ; en sortie : le maillage MCONT de faces du contour et le
 122 : * maillage MCCEN des centres de ces faces.
 123 : *
 124 : * In ELCONT: new temporary object MCONT.MAILLAGE (SEGINI) 
 125 : *                                 MCENT.MAILLAGE (SEGINI)
 126 : *
 126 :       CALL ELCONT(MFACEL,MFACEP,MCONT,MCCEN)
 127 :       IF (IERR.NE.0) GOTO 9999
 128 : *
 129 : *  Pour dimensionner le tableau LESPOI et remplir le tableau
 130 : *  INDEX du segment LEPOEL (type MLELEM), on construit d'abord :
 131 : *               PONBEL(NOPOI1)
 132 : *  NOPOI1 : indice du point considéré dans MCLPO1
 133 : *  PONBEL(NOPOI1) : nombre d'éléments de MCLAS et MCONT
 134 : *                   contenant le point considéré
 135 : *
 136 : *  In POIBE2 : new temporary object PONBEL.MLENTI (SEGINI)
 137 : *
 137 :       CALL POINB2(MCLAS,MCONT,MCLPO1,PONBEL)
 138 :       IF (IERR.NE.0) GOTO 9999
 139 : *
 140 : *  On construit la liste séquentielle indexée d'éléments LEPOEL
 141 : *  (type MLELEM).
 142 : *  NOPOI1 : indice du point considéré dans MCLPO1
 143 : *  LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)) :
 144 : *           contient le numéro du point considéré
 145 : *  LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)+1 -> LEPOEL.INDEX(NOPOI1+1)-1) :
 146 : *           contient les numéro des points centre des éléments
 147 : *           contenant le point considéré (!)
 148 : *  
 149 : *  In POELE2 : new temporary object LEPOEL.MLELEM (SEGINI)
 150 : *
 150 :       CALL POELE2(MCLAS,MCONT,MCLPO1,MCENT,MCCEN,PONBEL,LEPOEL)
 151 :       IF (IERR.NE.0) GOTO 9999
 152 :       SEGSUP PONBEL
 153 : *     
 154 : *    On doit créer l'équivalent de PONBEL pour les centres
 155 : *    On construit ELNBEL(NOCENT)
 156 : *    NOCENT : indice du centre de l'élément considéré dans MCENT
 157 : *    ELNBEL(NOCENT) : nombre d'éléments partageant (au moins)
 158 : *         un point de MCLPO1 avec l'élément considéré.
 159 : *
 160 : *     In ELENB2 : SEGINI ELNBEL 
 161 : *
 161 :       CALL ELENB2(MCLAS,MCLPO1,MCENT,LEPOEL,
 162 :      $     ELNBEL)
 163 :       IF (IERR.NE.0) GOTO 9999
 164 : *
 165 : *  On construit la liste séquentielle indexée d'éléments LEELEL
 166 : *  (type MLELEM).
 167 : *  NOCENT : indice du centre de l'élément considéré dans MCENT
 168 : *  LEELEL.LESPOI(LEELEL.INDEX(NOCENT)) :
 169 : *           contient le numéro du centre de l'élément considéré
 170 : *  LEELEL.LESPOI(LEPOEL.INDEX(NOCENT)+1 -> LEPOEL.INDEX(NOCENT+1)-1) :
 171 : *           contient les numéro des points centre des éléments 
 172 : *           qui ont un point de MCLPO1 en commun avec l'élément
 173 : *           considéré (!)
 174 : *  
 175 : *  In ELELE2 : new temporary object LEELEL.MLELEM (SEGINI)
 176 : *
 176 :       CALL ELELE2(MCLAS,MCLPO1,MCENT,LEPOEL,ELNBEL,LEELEL)
 177 :       IF (IERR.NE.0) GOTO 9999
 178 : *
 179 : *  A partir de LEELEL, on peut construire la structure MELEME 
 180 : *  correspondante : elle est constituée d'éléments de type POLY. 
 181 : *  En gros, on regroupe les éléments qui ont le meme nombre de points.
 182 : *
 183 : *  In LE2ME2 : new object MELPOE.MELEME (SEGINI-SEGDES)
 184 : *
 184 :       CALL LE2ME2(LEELEL,
 185 :      $     MELPOE,MCENEL)
 186 :       IF (IERR.NE.0) GOTO 9999
 187 : *
 188 : *  Suppressions d'objets temporaires
 189 : *
 190 :       SEGSUP ELNBEL
 191 :       SEGSUP LEPOEL
 192 :       SEGSUP LEELEL
 193 :       IPT1 = MCCEN
 194 :       SEGACT IPT1
 195 :       NBSOUS = IPT1.LISOUS
 196 :       IF(NBSOUS .EQ. 0)THEN
 197 :          SEGSUP IPT1
 198 :       ELSE
 199 :          DO ILISOU = 1, NBSOUS
 200 :             IPT2 = IPT1.LISOUS(ILISOU)
 201 :             SEGSUP IPT2
 202 :          ENDDO
 203 :          SEGSUP IPT1
 204 :       ENDIF
 205 :       IPT1 = MCONT
 206 :       SEGACT IPT1
 207 :       NBSOUS = IPT1.LISOUS
 208 :       IF(NBSOUS .EQ. 0)THEN
 209 :          SEGSUP IPT1
 210 :       ELSE
 211 :          DO ILISOU = 1, NBSOUS
 212 :             IPT2 = IPT1.LISOUS(ILISOU)
 213 :             SEGSUP IPT2
 214 :          ENDDO
 215 :          SEGSUP IPT1
 216 :       ENDIF
 217 : *     
 218 : * Normal termination
 219 : *     
 220 :  9999 CONTINUE
 221 :       RETURN
 222 : *     
 223 : * End of subroutine ELPOFA
 224 : *     
 225 :       END
 226 : 
 227 : 
 228 :  
 229 :  
 230 :  

© Cast3M 2003 - All rights reserved.
Disclaimer