The TELEMAC-MASCARET system  trunk
inistb.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE inistb
3 ! *****************
4 !
5  &(npoin1,typele,maille,precis,ngeo,nsec2,nsec11,nsec12)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 09/08/89 J.C. GALLAND
9 !***********************************************************************
10 !
11 ! FONCTION : RECHERCHE LES NOMBRES TOTAUX DE NOEUDS ET D'ELEMENTS DU
12 ! MAILLAGE DANS LE FICHIER UNIVERSEL DE SUPERTAB
13 !
14 !-----------------------------------------------------------------------
15 ! ARGUMENTS
16 ! .________________.____.______________________________________________
17 ! | NOM |MODE| ROLE
18 ! |________________|____|______________________________________________
19 ! | NPOIN1 |<-- | NOMBRE REEL DE POINTS DU MAILLAGE
20 ! | | | (NPOIN REPRESENTE L'INDICE MAX DES NOEUDS CAR
21 ! | | | SUPERTAB LAISSE DES TROUS DANS LA NUMEROTATION
22 ! | TYPELE |<-- | TYPE D'ELEMENTS
23 ! | MAILLE |<-- | NOM DU MAILLEUR
24 ! | PRECIS |<-- | FORMAT DE LECTURE DES COORDONNEES DES NOEUDS
25 ! |________________|____|______________________________________________
26 ! | COMMON: | |
27 ! | GEO: | |
28 ! | MESH |<-- | TYPE DES ELEMENTS DU MAILLAGE
29 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
30 ! | NPOIN |<-- | NOMBRE TOTAL DE NOEUDS DU MAILLAGE
31 ! | NELEM |<-- | NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
32 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
33 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
34 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
35 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
36 ! | FICH: | |
37 ! | NRES |--> | NUMERO DU CANAL DU FICHIER DE SERAFIN
38 ! | NGEO |--> | NUMERO DU CANAL DU FICHIER MAILLEUR
39 ! | NLIM |--> | NUMERO DU CANAL DU FICHIER DYNAM DE TELEMAC
40 ! | NFO1 |--> | NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
41 ! | SECT: | |
42 ! | NSEC11 |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
43 ! | | | (LECTURE EN SIMPLE PRECISION)
44 ! | NSEC12 |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
45 ! | | | (LECTURE EN DOUBLE PRECISION)
46 ! | NSEC2 |--> | INDICATEUR DU SECTEUR CONTENANT LES ELEMENTS
47 ! | NSEC3 |--> | INDICATEUR DU SECTEUR CONTENANT LE TITRE
48 ! |________________|____|______________________________________________
49 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
50 !-----------------------------------------------------------------------
51 ! APPELE PAR : HOMERE
52 ! APPEL DE : -
53 !***********************************************************************
54 !
57  IMPLICIT NONE
58 !
59  INTEGER, INTENT(INOUT) :: NPOIN1
60  CHARACTER(LEN=11), INTENT(INOUT) :: TYPELE
61  CHARACTER(LEN=9), INTENT(IN) :: MAILLE
62  CHARACTER(LEN=6), INTENT(INOUT) :: PRECIS
63  INTEGER, INTENT(IN) :: NSEC11 , NSEC12 , NGEO, NSEC2
64 !
65  DOUBLE PRECISION X1
66  INTEGER NPOIN2
67  INTEGER N1, NSEC
68  INTEGER N2
69  INTEGER INDI11 , INDI12 , INDIC2
70 !
71  CHARACTER(LEN=2) MOINS1
72  CHARACTER(LEN=4) BLANC*4
73 !
74 ! COMMON
75 !
76 !
77 !=======================================================================
78 ! INITIALISATION
79 !=======================================================================
80 !
81  rewind ngeo
82  npoin1 = 0
83  npoin2 = 0
84  nelem = 0
85  indi11 = 0
86  indi12 = 0
87  indic2 = 0
88 !
89 !=======================================================================
90 ! LECTURE SEQUENTIELLE DU FICHIER ET RECHERCHE DES INDICATEURS
91 ! NSEC1 ET NSEC2
92 !=======================================================================
93 !
94  10 READ(ngeo,1000,err=110,end=120) blanc,moins1
95  IF (moins1.NE.'-1'.OR.blanc.NE.' ') GOTO 10
96  1000 FORMAT(a4,a2)
97 !
98  20 READ(ngeo,2000,err=110,end=120) nsec
99  IF (nsec.EQ.-1) THEN
100  GOTO 20
101 !
102 !=======================================================================
103 ! NOMBRE DE POINTS
104 !=======================================================================
105 !
106 ! LECTURE EN SIMPLE PRECISION
107 !
108  ELSE IF (nsec.EQ.nsec11) THEN
109  indi11 = 1
110 !
111  30 CONTINUE
112  READ(ngeo,2000,err=110,end=120) nsec
113 !
114  IF (nsec.NE.-1) THEN
115  npoin1 = npoin1+1
116  npoin2 = max0(nsec,npoin1)
117  GOTO 30
118  ELSE
119  GOTO 50
120  ENDIF
121 !
122 ! LECTURE EN DOUBLE PRECISION
123 !
124  ELSE IF (nsec.EQ.nsec12) THEN
125  indi12 = 1
126 !
127  31 CONTINUE
128  READ(ngeo,2000,err=110,end=120) nsec
129 !
130  IF (nsec.NE.-1) THEN
131  npoin1 = npoin1+1
132  npoin2 = max0(nsec,npoin1)
133  ELSE
134  GOTO 50
135  ENDIF
136 !
137  READ(ngeo,4000,err=110,end=120) x1
138 !
139  GOTO 31
140 !
141 !=======================================================================
142 ! NOMBRE ET TYPE D'ELEMENTS
143 !=======================================================================
144 !
145  ELSE IF (nsec.EQ.nsec2) THEN
146  indic2 = 1
147  IF (maille.EQ.'SUPERTAB4') THEN
148 ! LECTURE AU FORMAT SUPERTAB VERSION 4
149  READ(ngeo,3000,err=110,end=120) n1,n2,mesh
150  ELSE
151 ! LECTURE AU FORMAT SUPERTAB VERSION 6
152  READ(ngeo,3000,err=110,end=120) n1,mesh,n2
153  ENDIF
154  nelem = 1
155  40 READ(ngeo,2000,err=110,end=120) nsec
156  IF (nsec.NE.-1) THEN
157  nelem = nelem+1
158  GOTO 40
159  ELSE
160  GOTO 50
161  ENDIF
162  ENDIF
163 !
164  50 IF ((indi11.EQ.1.OR.indi12.EQ.1).AND.indic2.EQ.1) THEN
165  GOTO 60
166  ELSE
167  GOTO 10
168  ENDIF
169 !
170  110 CONTINUE
171  WRITE(lu,4100)
172  CALL plante(1)
173  stop
174 !
175  120 CONTINUE
176  IF (indi11.NE.1.AND.indi12.NE.1) WRITE(lu,4200)
177  IF (indi12.NE.1) WRITE(lu,4300)
178  stop
179 !
180  60 CONTINUE
181 !
182 !=======================================================================
183 ! AFFECTATION DES VALEURS LUES AUX VARIABLES CONCERNEES
184 !=======================================================================
185 !
186  IF (indi11.EQ.1) precis='SIMPLE'
187  IF (indi12.EQ.1) precis='DOUBLE'
188 !
189  nelem =nelem / 2
190 !
191  npoin = npoin2
192 !
193 !=======================================================================
194 ! MISE DES VALEURS DE MESH AU STANDARD TELEMAC
195 !=======================================================================
196 !
197  IF (mesh.EQ.94) THEN
198  mesh = 2
199  ndp = 4
200  typele = 'QUADRANGLES'
201  ELSEIF (mesh.EQ.91) THEN
202  mesh = 3
203  ndp = 3
204  typele = 'TRIANGLES '
205  ELSE
206  WRITE(lu,3140) mesh
207  3140 FORMAT(' INISTB : TYPE OF MESH NOT AVAILABLE IN TELEMAC,
208  & MESH = ',i4)
209  ENDIF
210 !
211 !=======================================================================
212 ! IMPRESSION DES RESULTATS
213 !=======================================================================
214 !
215  4100 FORMAT(//,'****************************************',/,
216  & 'ERROR IN READING UNIVERSAL FILE (INISTB)',/,
217  & '****************************************')
218  4200 FORMAT(//,'********************************************',/,
219  & 'END OF THE UNIVERSAL FILE : NO NODE (INISTB)',/,
220  & '********************************************')
221  4300 FORMAT(//,'***********************************************',/,
222  & 'END OF THE UNIVERSAL FILE : NO ELEMENT (INISTB)',/,
223  & '***********************************************')
224  2000 FORMAT(i10)
225  3000 FORMAT(3i10)
226  4000 FORMAT(d25.16)
227 !
228  RETURN
229  END
subroutine inistb(NPOIN1, TYPELE, MAILLE, PRECIS, NGEO, NSEC2, NSEC11, NSEC12)
Definition: inistb.f:7