nunonu
C NUNONU SOURCE CHAT 06/03/29 21:28:36 5360 C C ***************************************************************** C MODULE : ST (STRUCTURE DES DONNEES) C FICHIER : ST_NOEUD.F C OBJET : RENUMEROTE LES NOEUDS D'UN MAILLAGE 2D OU 3D C FONCT. : C C OBJET NUNONU : RENUMEROTE LES NOEUDS D'UN MAILLAGE C OBJET NUNOCP : COMPRIME LES NUMEROS DES NOEUDS D'UN MAILLAGE C OBJET EN DEBUT : DE 1 A "NBNUM" C OBJET NUNISO : RENUMEROTATION, LES NOEUDS ISOLES SONT MIS EN FIN C OBJET NUENUL : RENUMEROTATION, LES ELEMENTS NULS SONT MIS EN FIN C OBJET NUGCNU : GARBAGE COLLECTOR ELEMENTS ET POINTS C C AUTEUR : O. STAB C DATE : 08.96 C TESTS : C MODIFICATIONS : C AUTEUR, DATE, OBJET : C C C ***************************************************************** C C > COORD,IDIMC, > NUM,NBNUM,ITRAMA,iarr) C ***************************************************************** C OBJET NUNONU : RENUMEROTE LES NOEUDS D'UN MAILLAGE C C EN ENTREE: C ITRNOE,NBNMAX,NBE,NOETRI,NOEMAX : LE MAILLAGE C NBNMAX: SI NBNMAX = 0 ALORS ITRNOE N'EST PAS CONSIDERE C NOEMAX: SI NOEMAX = 0 ALORS NOETRI N'EST PAS CONSIDERE C C C COORD,IDIMC : COORDONNEES DES NOEUDS C IDIMC : SI IDIMC = 0 ALORS COORD N'EST PAS CONSIDERE C C NUM : NUM(I) EST NUMERO DE L'ELEMENT QUI DOIT ETRE MIS EN I C ATTENTION !! NUM DOIT ETRE TRIE AVEC ENSTRI C NBNUM : NOMBRE DE NOEUDS A RENUMEROTER C ITRAMA : TABLEAU DE TRAVAIL DE TAILLE = MAX(NUM(I)) C C EN SORTIE: C ITRNOE : MIS A JOUR C NOETRI : MIS A JOUR C COORD : MIS A JOUR C C CONDITION D'APPLICATION : TOUT MAILLAGE C REMARQUE : COPIE DE IORDRE DE S.M. TIJANI C ***************************************************************** IMPLICIT INTEGER(I-N) INTEGER ITRNOE(*),NBNMAX,NOETRI(*),NBE REAL*8 COORD(*) INTEGER IDIMC INTEGER NOEMAX, NUM(*), NBNUM, ITRAMA(*), iarr C C ---- COPIE DE IORDRE (S.M.TIJANI )---- C INTEGER I,J,LI,MI INTEGER NUMOLD,ITAMPO REAL*8 RTAMPO C C ON N'A RIEN A FAIRE C iarr = 0 IF(NBNUM.LE.1) GOTO 9999 C DO 20 I=1,NBE C ----------------------------------- C --- MISE A JOUR DES NOEUDS DES ELEMENTS --- C ----------------------------------- DO 10 J=1,NBNMAX NUMOLD = ITRNOE((I-1)*NBNMAX + J) IF((NUMOLD.GT.0 ).AND.(NUMOLD.LE.NBNUM))THEN ITRNOE((I-1)*NBNMAX + J) = NUM(NUMOLD) ENDIF 10 CONTINUE 20 CONTINUE C C PERMUTATION M INVERSE DE L : C DO 30 I=1,NBNUM ITRAMA(NUM(I))=I 30 CONTINUE C C IMPOSER A NARG L'ORDRE DEFINI PAR L. C LES TABLEAUX L ET M SONT CASSES. C DO 50 I=1,NBNUM LI=NUM(I) MI=ITRAMA(I) C ---------------------- C --- PERMUTATION DES NOEUDS --- C ---------------------- IF( NOEMAX.NE.0)THEN ITAMPO = NOETRI(I) NOETRI(I) = NOETRI(LI) NOETRI(LI) = ITAMPO ENDIF DO 40 J=1,IDIMC RTAMPO = COORD((I-1)*IDIMC+J) COORD((I-1)*IDIMC+J) = COORD((LI-1)*IDIMC+J) COORD((LI-1)*IDIMC+J) = RTAMPO 40 CONTINUE C C LE NOUVEAU NUMERO DE LI EST I C LE NOUVEAU NUMERO DE MI A CHANGE, C'EST DEVENU LI C NUM(MI)=LI ITRAMA(LI)=MI 50 CONTINUE C C RESTAURATION DES TABLEAUX L (INITIAL) ET M (SON INVERSE). C DO 60 I=1,NBE LI=NUM(I) MI=ITRAMA(I) NUM(MI)=I ITRAMA(LI)=I 60 CONTINUE 9999 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales