The TELEMAC-MASCARET system  trunk
verifi.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE verifi
3 ! *****************
4 !
5  &(x,y,ikle,ncolor,trav1,epsi,mesh,ndp,npoin,nelem,nelmax)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 09/08/89 J-C GALLAND (LNH)
9 !***********************************************************************
10 !
11 ! FONCTION : ELIMINATION DES TROUS DANS LA NUMEROTATION DES NOEUDS
12 ! ET RE-ORIENTATION DES ELEMENTS DU MAILLAGE
13 !
14 !-----------------------------------------------------------------------
15 ! ARGUMENTS
16 ! .________________.____.______________________________________________
17 ! | NOM |MODE| ROLE
18 ! |________________|____|______________________________________________
19 ! | X,Y |<-->| COORDONNEES DU MAILLAGE .
20 ! | IKLE |<-->| NUMEROS GLOBAUX DES NOEUDS DE CHAQUE ELEMENT
21 ! | NCOLOR |<-->| TABLEAU DES COULEURS DES POINTS DU MAILLAGE
22 ! | TRAV1,2 |<-->| TABLEAUX DE TRAVAIL
23 ! | EPSI | -->| DISTANCE MINIMALE ENTRE 2 NOEUDS DU MAILLAGE
24 ! |________________|____|______________________________________________
25 ! | COMMON: | |
26 ! | GEO: | |
27 ! | MESH | -->| TYPE DES ELEMENTS DU MAILLAGE
28 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
29 ! | NPOIN |<-->| NOMBRE TOTAL DE NOEUDS DU MAILLAGE
30 ! | NELEM |<-->| NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
31 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
32 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
33 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
34 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
35 ! |________________|____|______________________________________________
36 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
37 !----------------------------------------------------------------------
38 ! APPELE PAR : STBTEL
39 ! APPEL DE : REMAIL, CIRCUL
40 !***********************************************************************
41 !
43  USE interface_stbtel, ex_verifi => verifi
44  IMPLICIT NONE
45 !
46  INTEGER, INTENT(IN) :: MESH , NDP , NELMAX
47  INTEGER, INTENT(INOUT) :: NPOIN, NELEM
48  INTEGER, INTENT(INOUT) :: IKLE(nelmax,4) , NCOLOR(*)
49  INTEGER, INTENT(INOUT) :: TRAV1(*)
50 !
51  DOUBLE PRECISION, INTENT(INOUT) :: X(*) , Y(*)
52  DOUBLE PRECISION, INTENT(INOUT) :: EPSI
53 !
54  INTEGER ITEST , ITEST1 , IELEM
55 ! COMMON
56 !
57 !
58 !=======================================================================
59 ! ON VERIFIE QUE TOUS LES POINTS SONT DISTINCTS
60 !=======================================================================
61 !
62  CALL remail (ikle,ncolor,trav1,x,y,epsi,
63  & ndp,npoin,nelem,nelmax)
64 !
65 !=======================================================================
66 ! ON VERIFIE QUE TOUS LES ELEMENTS SONT CORRECTEMENT ORIENTES
67 !=======================================================================
68 !
69  itest = 0
70 !
71 ! CAS DES QUADRANGLES
72 !
73  IF (mesh.EQ.2) THEN
74 !
75  DO ielem=1,nelem
76 !
77  itest1 = 0
78  CALL circul (ikle,itest1,ielem,1,2,3,x,y,nelmax)
79  CALL circul (ikle,itest1,ielem,2,3,4,x,y,nelmax)
80  CALL circul (ikle,itest1,ielem,3,4,1,x,y,nelmax)
81  CALL circul (ikle,itest1,ielem,4,1,2,x,y,nelmax)
82  IF (itest1.GT.0) itest = itest + 1
83 !
84  ENDDO
85 !
86 ! CAS DES TRIANGLES
87 !
88  ELSE IF (mesh.EQ.3) THEN
89 !
90  DO ielem=1,nelem
91 !
92  itest1 = 0
93  CALL circul (ikle,itest1,ielem,1,2,3,x,y,nelmax)
94  IF (itest1.GT.0) itest = itest + 1
95 !
96  ENDDO
97 !
98  ELSE
99  WRITE(lu,3090) mesh
100  3090 FORMAT(/,' LECSTB TYPE OF MESH NOT AVAILABLE , MESH = ',i4)
101  ENDIF
102 !
103  WRITE(lu,3100) itest
104  3100 FORMAT(1x,'NUMBER OF ELEMENTS BADLY ORIENTED : ',i5)
105 !
106  RETURN
107  END
subroutine remail(IKLE, NCOLOR, NEW, X, Y, EPSI, NDP, NPOIN, NELEM, NELMAX)
Definition: remail.f:7
subroutine circul(IKLE, ITEST1, IELEM, I1, I2, I3, X, Y, NNELMAX)
Definition: circul.f:7
subroutine verifi(X, Y, IKLE, NCOLOR, TRAV1, EPSI, MESH, NDP, NPOIN, NELEM, NELMAX)
Definition: verifi.f:7