The TELEMAC-MASCARET system  trunk
renum.f
Go to the documentation of this file.
1 ! ****************
2  SUBROUTINE renum
3 ! ****************
4 !
5  &(x,y,w,ikle,nbor,trav1,trav2,tab,ncolor,color,nptfr)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 19/04/91 J-C GALLAND (LNH)
9 ! 19/02/93 J-M JANIN (LNH)
10 !***********************************************************************
11 !
12 ! FONCTION : DECOUPAGE DES TRIANGLES SURCONTRAINTS :
13 ! ILS SONT COUPES EN TROIS PAR AJOUT D'UN POINT A
14 ! LEUR BARYCENTRE
15 !
16 !
17 !-----------------------------------------------------------------------
18 !| X,Y |<->| COORDONNEES DU MAILLAGE .
19 !| IKLE |<->| LISTE DES POINTS DE CHAQUE ELEMENT
20 !| TRAV1,2 |<->| TABLEAUX DE TRAVAIL
21 !| TAB |<->| TABLEAU DE TRAVAIL
22 !| NCOLOR |<->| TABLEAU DES COULEURS DES POINTS
23 !| COLOR |<->| STOCKAGE COULEURS DES NOEUDS SUR FICHIER GEO
24 !| NPOIN |-->| NOMBRE TOTAL DE NOEUDS DU MAILLAGE
25 !| NELEM |-->| NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
26 !| NELMAX |-->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
27 !| | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
28 !-----------------------------------------------------------------------
29 !
32  IMPLICIT NONE
33 !
34  DOUBLE PRECISION, INTENT(INOUT) :: X(*) , Y(*) , W(*)
35  INTEGER, INTENT(INOUT) :: TRAV1(*) , TRAV2(*)
36  INTEGER, INTENT(INOUT) :: IKLE(nelmax,3) , NCOLOR(*) , NBOR(*)
37  INTEGER, INTENT(INOUT) :: TAB(*)
38  LOGICAL, INTENT(IN) :: COLOR
39  INTEGER, INTENT(IN) :: NPTFR
40 !
41  INTEGER IPOIN , IELEM , IPTFR , I1 , I2 , TABMAX
42 !
43 !
44 !
45 !=======================================================================
46 ! CALCUL DU NOMBRE DE POINTS ET ELEMENTS VOISINS
47 !=======================================================================
48 !
49  DO ipoin = 1,npoin
50  trav1(ipoin) = 0
51  ENDDO
52 !
53  DO ielem = 1,nelem
54  trav1(ikle(ielem,1)) = trav1(ikle(ielem,1)) + 2
55  trav1(ikle(ielem,2)) = trav1(ikle(ielem,2)) + 2
56  trav1(ikle(ielem,3)) = trav1(ikle(ielem,3)) + 2
57  ENDDO
58 !
59  DO iptfr = 1,nptfr
60  trav1(nbor(iptfr)) = trav1(nbor(iptfr)) + 1
61  ENDDO
62 !
63 !=======================================================================
64 ! RENUMEROTATIONS DES POINTS SUIVANT ORDRE CROISSANT DE VOISINS
65 !=======================================================================
66 !
67  tabmax = 0
68 !
69  DO ipoin = 1,npoin
70 !
71  i1 = trav1(ipoin)
72 !
73  IF (i1.GT.tabmax) THEN
74  DO i2 = tabmax+1,i1
75  tab(i2) = ipoin - 1
76  ENDDO
77  tabmax = i1
78  ELSEIF (i1.LT.tabmax) THEN
79  DO i2 = tabmax,i1+1,-1
80  tab(i2) = tab(i2) + 1
81  trav2(tab(i2)) = trav2(tab(i2-1)+1)
82  ENDDO
83  ENDIF
84 !
85  tab(i1) = tab(i1) + 1
86  trav2(tab(i1)) = ipoin
87 !
88  ENDDO
89 !
90  DO i1 = 1,tabmax
91  WRITE(lu,*)'TAB(',i1,')=',tab(i1)
92  ENDDO
93 !
94 !=======================================================================
95 ! MODIFICATIONS CORRESPONDANTES DANS LES DIFFERENTES VARIABLES
96 !=======================================================================
97 !
98  DO ipoin = 1,npoin
99  trav1(trav2(ipoin)) = ipoin
100  ENDDO
101 !
102  DO ielem = 1,nelem
103  ikle(ielem,1) = trav1(ikle(ielem,1))
104  ikle(ielem,2) = trav1(ikle(ielem,2))
105  ikle(ielem,3) = trav1(ikle(ielem,3))
106  ENDDO
107 !
108  DO iptfr = 1,nptfr
109  nbor(iptfr) = trav1(nbor(iptfr))
110  nbor(nptfr+iptfr) = trav1(nbor(nptfr+iptfr))
111  ENDDO
112 !
113  DO ipoin = 1,npoin
114  w(ipoin) = x(trav2(ipoin))
115  ENDDO
116  DO ipoin = 1,npoin
117  x(ipoin) = w(ipoin)
118  ENDDO
119 !
120  DO ipoin = 1,npoin
121  w(ipoin) = y(trav2(ipoin))
122  ENDDO
123  DO ipoin = 1,npoin
124  y(ipoin) = w(ipoin)
125  ENDDO
126 !
127  IF (color) THEN
128 !
129  DO ipoin = 1,npoin
130  trav1(ipoin) = ncolor(trav2(ipoin))
131  ENDDO
132  DO ipoin = 1,npoin
133  ncolor(ipoin) = trav1(ipoin)
134  ENDDO
135 !
136  ENDIF
137 !
138 !=======================================================================
139 !
140  RETURN
141  END
subroutine renum(X, Y, W, IKLE, NBOR, TRAV1, TRAV2, TAB, NCOLOR, COLOR, NPTFR)
Definition: renum.f:7