Download doubl3.eso

Back to the list

   1 : C DOUBL3    SOURCE    CHAT      07/10/29    21:18:24     5940           
   2 :       SUBROUTINE DOUBL3(MELEME,NBELEM,NBNN,BAVARD)
   3 : C----------------------------------------------------
   4 : C
   5 : C     ELIMINATION DES ÉLÉMENTS EN DOUBLON D'UN MAILLAGE
   6 : C
   7 : C----------------------------------------------------
   8 : C
   9 : C     Création : tiré originellement de coupe.eso
  10 : C
  11 : C     Modification : Pascal Maugis 28/7/2005
  12 : C       Extension à des occurences multiples et non simplement doubles
  13 : C
  14 : C----------------------------------------------------
  15 : C
  16 : C     Appelé par DOUBL2
  17 : C
  18 : C     Entrée :
  19 : C       MELEME : élémentaire ACTIVE
  20 : C       NBELEM
  21 : C       NBNN
  22 : C
  23 : C
  24 : C     Sortie
  25 : C       MELEME : modifié ACTIVE
  26 : C
  27 : C----------------------------------------------------
  28 :       IMPLICIT INTEGER(I-N)
  29 :       IMPLICIT REAL*8(A-H,O-Z)
  30 : -INC CCOPTIO
  31 : -INC CCGEOME
  32 : -INC SMELEME
  33 : -INC SMLENTI
  34 : C
  35 :       LOGICAL BAVARD
  36 : C
  37 : C     tri préalable des points de chaque éléments surfaciques
  38 : C     selon la somme des numéros de noeud
  39 : C
  40 :       SEGACT,MELEME*MOD
  41 :       JG=NBELEM
  42 :       SEGINI,MLENT1,MLENTI
  43 :       DO IE2=1,NBELEM
  44 :         MLENTI.LECT(IE2)=IE2
  45 :         MLENT1.LECT(IE2)=0
  46 :         DO IE3=1,NBNN
  47 :           MLENT1.LECT(IE2)=MLENT1.LECT(IE2)+NUM(IE3,IE2)
  48 :         ENDDO
  49 :       ENDDO
  50 :       SEGINI,MLENT2=MLENTI
  50 :       CALL GENOR2(MLENT1.LECT,MLENT2.LECT,NBELEM)
  51 : C
  52 : *     Quand on trouve une occurence multiple,
  53 : *     on permute les indices dans la liste MLENTI.LECT
  53 :       CALL DOUBL4(NUM,NBNN,NBELEM,
  54 :      >            MLENT1.LECT,MLENT2.LECT,MLENTI.LECT)
  55 : C
  56 : C     REECRITURE DE LA SOUS-ZONE RESULTAT
  57 :       ITYP=MELEME.ITYPEL
  58 :       MBELEM=0
  59 :       DO IE2=1,NBELEM
  60 :         LIE2=LECT(IE2)
  61 :         IF(LIE2.NE.0)THEN
  62 :           IF(LIE2.NE.IE2)THEN
  63 : *           tous les doublons de cet élément seront ignorés au prochain passage
  64 :             NDBL = 0
  65 :             LIE4 = LIE2
  66 :             DO WHILE (LIE4.NE.IE2)
  67 :               NDBL = NDBL + 1
  68 :               IE5=LIE4
  69 :               LIE5=LECT(IE5)
  70 :               LECT(IE5)=0
  71 :               IF (BAVARD)
  72 :      &          write(IOIMP,*) '  maille ',IE5,' supprimee'
  73 : *             on passe au doublon suivant
  74 :               LIE4=LIE5
  75 :             ENDDO
  76 :             IF (BAVARD)
  77 :      &        write(IOIMP,*) 'AVERTISSEMENT : maille ',NOMS(ITYP),
  78 :      &          ' numero ',IE2,' en ',(NDBL+1),' exemplaires.'
  79 : 
  80 :           ENDIF
  81 : *         écriture de la nouvelle maille au nouvel emplacement
  82 :           MBELEM=MBELEM+1
  83 :           DO IE3=1,NBNN
  84 :             NUM(IE3,MBELEM) = NUM(IE3,IE2)
  85 :           ENDDO
  86 :           ICOLOR(MBELEM)    = ICOLOR(IE2)
  87 :         ENDIF
  88 :       ENDDO
  89 : 
  90 : C     On tronquera la fin du maillage contenant les doublons
  91 :       NBELEM=MBELEM
  92 :       NBSOUS=0
  93 :       NBREF=LISREF(/1)
  94 :       SEGADJ,MELEME
  95 : 
  96 :       SEGSUP,MLENTI,MLENT1,MLENT2
  97 : C
  98 :       RETURN
  99 :       END
 100 : 
 101 : 
 102 : 
 103 :  
 104 :  

© Cast3M 2003 - All rights reserved.
Disclaimer