Download nunonu.eso

Back to the list

   1 : C NUNONU    SOURCE    CHAT      06/03/29    21:28:36     5360           
   2 : C
   3 : C     *****************************************************************
   4 : C     MODULE  : ST (STRUCTURE DES DONNEES)
   5 : C     FICHIER : ST_NOEUD.F
   6 : C     OBJET   : RENUMEROTE LES NOEUDS D'UN MAILLAGE 2D OU 3D
   7 : C     FONCT.  : 
   8 : C
   9 : C     OBJET NUNONU : RENUMEROTE LES NOEUDS D'UN MAILLAGE
  10 : C     OBJET NUNOCP : COMPRIME LES NUMEROS DES NOEUDS D'UN MAILLAGE
  11 : C     OBJET          EN DEBUT : DE 1 A "NBNUM"
  12 : C     OBJET NUNISO : RENUMEROTATION, LES NOEUDS ISOLES SONT MIS EN FIN 
  13 : C     OBJET NUENUL : RENUMEROTATION, LES ELEMENTS NULS SONT MIS EN FIN 
  14 : C     OBJET NUGCNU : GARBAGE COLLECTOR ELEMENTS ET POINTS
  15 : C
  16 : C     AUTEUR  : O. STAB 
  17 : C     DATE    : 08.96
  18 : C     TESTS   :  
  19 : C     MODIFICATIONS :
  20 : C      AUTEUR, DATE, OBJET :
  21 : C
  22 : C
  23 : C     *****************************************************************
  24 : C
  25 : C
  26 :       SUBROUTINE NUNONU(ITRNOE,NBNMAX,NOETRI,NOEMAX,NBE,
  27 :      >                  COORD,IDIMC,
  28 :      >                  NUM,NBNUM,ITRAMA,iarr)
  29 : C     *****************************************************************
  30 : C     OBJET NUNONU : RENUMEROTE LES NOEUDS D'UN MAILLAGE
  31 : C
  32 : C     EN ENTREE:
  33 : C      ITRNOE,NBNMAX,NBE,NOETRI,NOEMAX :  LE MAILLAGE
  34 : C      NBNMAX: SI NBNMAX = 0 ALORS ITRNOE N'EST PAS CONSIDERE
  35 : C      NOEMAX: SI NOEMAX = 0 ALORS NOETRI N'EST PAS CONSIDERE
  36 : C      
  37 : C
  38 : C      COORD,IDIMC : COORDONNEES DES NOEUDS
  39 : C      IDIMC : SI IDIMC = 0 ALORS COORD N'EST PAS CONSIDERE
  40 : C
  41 : C      NUM    :  NUM(I) EST NUMERO DE L'ELEMENT QUI DOIT ETRE MIS EN I
  42 : C                ATTENTION !! NUM DOIT ETRE TRIE AVEC ENSTRI
  43 : C      NBNUM  :  NOMBRE DE NOEUDS A RENUMEROTER
  44 : C      ITRAMA :  TABLEAU DE TRAVAIL DE TAILLE = MAX(NUM(I))
  45 : C
  46 : C     EN SORTIE:
  47 : C       ITRNOE : MIS A JOUR
  48 : C       NOETRI : MIS A JOUR
  49 : C       COORD  : MIS A JOUR
  50 : C
  51 : C     CONDITION D'APPLICATION : TOUT MAILLAGE
  52 : C     REMARQUE : COPIE DE IORDRE DE S.M. TIJANI
  53 : C     *****************************************************************
  54 :       IMPLICIT INTEGER(I-N)
  55 :       INTEGER    ITRNOE(*),NBNMAX,NOETRI(*),NBE
  56 :       REAL*8       COORD(*)
  57 :       INTEGER    IDIMC
  58 :       INTEGER    NOEMAX, NUM(*), NBNUM, ITRAMA(*), iarr
  59 : C
  60 : C     ---- COPIE DE IORDRE (S.M.TIJANI )----
  61 : C
  62 :       INTEGER I,J,LI,MI
  63 :       INTEGER NUMOLD,ITAMPO
  64 :       REAL*8    RTAMPO
  65 : C
  66 : C     ON N'A RIEN A FAIRE
  67 : C
  68 :       iarr = 0
  69 :       IF(NBNUM.LE.1) GOTO 9999
  70 : C
  71 :       DO 20 I=1,NBE
  72 : C           -----------------------------------
  73 : C       --- MISE A JOUR DES NOEUDS DES ELEMENTS ---
  74 : C           -----------------------------------
  75 :         DO 10 J=1,NBNMAX
  76 :           NUMOLD = ITRNOE((I-1)*NBNMAX + J)
  77 :           IF((NUMOLD.GT.0 ).AND.(NUMOLD.LE.NBNUM))THEN
  78 :             ITRNOE((I-1)*NBNMAX + J) = NUM(NUMOLD)
  79 :           ENDIF  
  80 :    10   CONTINUE
  81 :    20 CONTINUE
  82 : C
  83 : C     PERMUTATION M INVERSE DE L :
  84 : C
  85 :       DO 30 I=1,NBNUM
  86 :         ITRAMA(NUM(I))=I
  87 :    30 CONTINUE
  88 : C
  89 : C     IMPOSER A NARG L'ORDRE DEFINI PAR L.
  90 : C     LES TABLEAUX L ET M SONT CASSES.
  91 : C
  92 :       DO 50 I=1,NBNUM
  93 :         LI=NUM(I)
  94 :         MI=ITRAMA(I)
  95 : C           ----------------------
  96 : C       --- PERMUTATION DES NOEUDS ---
  97 : C           ----------------------
  98 :           IF( NOEMAX.NE.0)THEN
  99 :             ITAMPO         = NOETRI(I)
 100 :             NOETRI(I)      = NOETRI(LI)
 101 :             NOETRI(LI) = ITAMPO
 102 :           ENDIF
 103 :           DO 40 J=1,IDIMC
 104 :             RTAMPO                = COORD((I-1)*IDIMC+J)
 105 :             COORD((I-1)*IDIMC+J)  = COORD((LI-1)*IDIMC+J)
 106 :             COORD((LI-1)*IDIMC+J) = RTAMPO
 107 :    40     CONTINUE
 108 : C
 109 : C       LE NOUVEAU NUMERO DE LI EST I
 110 : C       LE NOUVEAU NUMERO DE MI A CHANGE, C'EST DEVENU LI
 111 : C
 112 :         NUM(MI)=LI
 113 :         ITRAMA(LI)=MI
 114 :    50 CONTINUE
 115 : C
 116 : C     RESTAURATION DES TABLEAUX L (INITIAL) ET M (SON INVERSE).
 117 : C
 118 :       DO 60 I=1,NBE
 119 :         LI=NUM(I)
 120 :         MI=ITRAMA(I)
 121 :         NUM(MI)=I
 122 :         ITRAMA(LI)=I
 123 :    60 CONTINUE
 124 :  9999 END
 125 :  
 126 :  
 127 :  

© Cast3M 2003 - All rights reserved.
Disclaimer