The TELEMAC-MASCARET system  trunk
elmpb.f
Go to the documentation of this file.
1 ! ****************
2  SUBROUTINE elmpb
3 ! ****************
4 !
5  &(nbpb,numpb,x,y,ikle,ncolor,isdry,new)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 A. CABAL / P. LANG SOGREAH
9 !***********************************************************************
10 !
11 ! FONCTION : ELIMINATION DES ELEMENTS APPARTENANT A PLUSIEURS
12 ! SEGMENTS FRONTIERES
13 !
14 !-----------------------------------------------------------------------
15 ! ARGUMENTS
16 ! .________________.____.______________________________________________
17 ! | NOM |MODE| ROLE
18 ! |________________|____|______________________________________________
19 ! | NBPB |--> | NB DE POINTS A SUPPRIMER
20 ! | NUMPB |--> | NUMERO DES POINTS A SUPPRIMER
21 ! | X,Y |<-->| COORDONNEES DU MAILLAGE .
22 ! | IKLE |<-->| NUMEROS GLOBAUX DES NOEUDS DE CHAQUE ELEMENT
23 ! | NCOLOR |<-->| TABLEAU DES COULEURS DES POINTS DU MAILLAGE
24 ! | ELPSEC | -->| INDICATEUR ELIMIN. DES ELEMENTS PARTIELLEMENT SECS
25 ! | ISDRY(NELMAX) |<-- | TAB INDICATEUR ELEMENTS SECS
26 ! | | | = 1 POINT TOUJOURS SEC,
27 ! | | | = 0 SOUS SEUSEC M D'EAU AU MOINS POUR 1 PAS DE TEMPS
28 ! | IHAUT | -->| NUM D'ORDRE DE LA VARIABLE HAUT D'EAU DANS FICH TEL2D
29 ! | NVAR | -->| NB DE VAR STOCKEES DANS LE FICHIER TEL2D
30 ! | H | -->| TABLEAU DES HAUTEURS D'EAU
31 ! |________________|____|______________________________________________
32 ! | COMMON: | |
33 ! | GEO: |
34 ! | MESH | -->| TYPE DES ELEMENTS DU MAILLAGE
35 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
36 ! | NPOIN |<-->| NOMBRE TOTAL DE NOEUDS DU MAILLAGE
37 ! | NELEM |<-->| NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
38 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
39 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
40 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
41 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
42 ! |________________|____|______________________________________________
43 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
44 !----------------------------------------------------------------------
45 ! APPELE PAR : STBTEL
46 !***********************************************************************
47 !
50  IMPLICIT NONE
51 !
52  INTEGER, INTENT(INOUT) :: IKLE(nelmax,4), ISDRY(npmax), NEW(npmax)
53  INTEGER, INTENT(INOUT) :: NCOLOR(npmax)
54  INTEGER,INTENT(IN) :: NBPB, NUMPB(100)
55  DOUBLE PRECISION, INTENT(INOUT) :: X(npmax) , Y(npmax)
56 !
57  INTEGER I, IEL, J, NELI
58 
59 !
60 !
61 ! -------------------------------------------------------------
62 ! ELIMINATION DES ELEMENTS COMPORTANT DES POINTS A PROBLEME
63 ! -------------------------------------------------------------
64 !
65  DO i=1,nbpb
66  DO iel = 1, nelem
67  IF (ikle(iel,1).EQ.numpb(i).OR.ikle(iel,2).EQ.numpb(i)
68  & .OR.ikle(iel,3).EQ.numpb(i)) THEN
69  ikle(iel, 1) = 0
70  ikle(iel, 2) = 0
71  ikle(iel, 3) = 0
72  ENDIF
73  ENDDO
74  ENDDO
75 !
76 ! ELIMINATION DES ELEMENTS
77 ! ------------------------
78 !
79  neli = 0
80  iel = 1
81 ! POUR CHAQUE ELEMENT FAIRE
82  20 CONTINUE
83  IF ((ikle(iel, 1).EQ.0).AND.(ikle(iel, 2).EQ.0).AND.
84  & (ikle(iel, 3).EQ.0)) THEN
85  neli = neli + 1
86  DO i = iel, nelem - neli
87  ikle(i,1) = ikle(i+1, 1)
88  ikle(i,2) = ikle(i+1, 2)
89  ikle(i,3) = ikle(i+1, 3)
90  ENDDO
91  ELSE
92  iel = iel + 1
93  ENDIF
94  IF (iel .LE. nelem-neli) GOTO 20
95 ! FIN POUR CHAQUE ELEMENT
96 !
97  WRITE(lu,2009) neli
98 !
99  nelem = nelem - neli
100 !
101 ! ELIMINATION DES POINTS NE FAISANT PLUS PARTIE DU MAILLAGE
102 ! REUTILISATION DE ISDRY POUR MARQUER LES POINTS NON UTILISEES
103 ! ---------------------------------------------
104  DO i = 1, npoin
105  isdry(i) = 0
106  new(i) = 0
107  ENDDO
108 !
109  DO iel = 1, nelem
110  ENDDO
111 !
112  neli = 0
113  i = 1
114 ! POUR CHAQUE POINT FAIRE
115  DO i = 1, npoin
116  IF (isdry(i) .EQ.0) THEN
117  neli = neli + 1
118  new(i) = 0
119  ELSE
120  new(i) = i - neli
121  ENDIF
122  ENDDO
123 ! FIN POUR CHAQUE POINT
124 !
125  neli = 0
126  i = 1
127 ! POUR CHAQUE POINT FAIRE
128  30 CONTINUE
129  IF (isdry(i) .EQ.0) THEN
130 ! POINT I A ELIMINER
131  neli = neli + 1
132 ! DECALAGE DANS LE TABLEAU DES POINTS
133  DO j = i, npoin - neli
134  x(j) = x(j+1)
135  y(j) = y(j+1)
136  ncolor(j) = ncolor(j+1)
137  IF (isdry(j+1).GT.0) THEN
138  isdry(j) = isdry(j+1) - 1
139  ELSE
140  isdry(j) = 0
141  ENDIF
142  ENDDO
143  ELSE
144  i = i + 1
145  ENDIF
146  IF (i .LE. npoin - neli) GOTO 30
147 ! FIN POUR CHAQUE POINT
148  WRITE(lu,2011) neli
149  npoin = npoin - neli
150 !
151 ! ON REPERCUTE LA RENUMEROTATION DANS IKLE
152 ! ----------------------------------------
153  DO iel = 1, nelem
154  j = ikle(iel,1)
155  ikle(iel,1) = new(j)
156  j = ikle(iel,2)
157  ikle(iel,2) = new(j)
158  j = ikle(iel,3)
159  ikle(iel,3) = new(j)
160  ENDDO
161  RETURN
162 !***********************************************************************
163  2009 FORMAT(1x,'ELEMENTS CANCELLED IN THE MESH:',i8)
164  2011 FORMAT(1x,'POINTS CANCELLED IN THE MESH: ',i8)
165  END
subroutine elmpb(NBPB, NUMPB, X, Y, IKLE, NCOLOR, ISDRY, NEW)
Definition: elmpb.f:7