The TELEMAC-MASCARET system  trunk
lecfas.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE lecfas
3 ! *****************
4 !
5  & (x, y, ikle, ncolor, tfast1, tfast2, addfas,
6  & ngeo , nfo1)
7 !
8 !***********************************************************************
9 ! PROGICIEL : STBTEL V5.2 09/07/96 P. CHAILLET (LHF)
10 !
11 !***********************************************************************
12 !
13 ! FONCTION : LECTURE DES INFOS DE GEOMETRIE DANS LES FICHIERS
14 ! ISSUS DU MAILLEUR FASTTABS
15 !
16 !-----------------------------------------------------------------------
17 ! ARGUMENTS
18 ! .________________.____.______________________________________________
19 ! ! NOM !MODE! ROLE
20 ! !________________!____!______________________________________________
21 ! ! X,Y !<-- ! COORDONNEES DES POINTS DU MAILLAGE
22 ! ! IKLE !<-- ! NUMEROS GLOBAUX DES NOEUDS DE CHAQUE ELEMENT
23 ! ! NCOLOR !<-- ! TABLEAU DES COULEURS DES NOEUDS(POUR LES CL)
24 ! ! NCOLOR !<-- ! TABLEAU DES COULEURS DES NOEUDS(POUR LES CL)
25 ! | TFAST1,2 | -->| TABLEAUX DE TRAVAIL (FASTTABS)
26 ! | ADDFAS | -->| INDICATEUR UTILISATION DES C.L. (FASTTABS)
27 ! ! NGEO !--> ! NUMERO DU CANAL DU FICHIER MAILLEUR
28 ! ! NFO1 !--> ! NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
29 ! !________________!____!______________________________________________
30 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
31 !-----------------------------------------------------------------------
32 ! APPELE PAR :
33 ! APPEL DE :
34 !***********************************************************************
35 !
38  IMPLICIT NONE
39 !
40  INTEGER, INTENT(IN) :: NGEO, NFO1
41  INTEGER, INTENT(INOUT) :: IKLE(nelmax,4)
42  INTEGER, INTENT(INOUT) :: NCOLOR(*)
43  INTEGER, INTENT(INOUT) :: TFAST1(*),TFAST2(*)
44  LOGICAL, INTENT(IN) :: ADDFAS
45  DOUBLE PRECISION, INTENT(INOUT) :: X(*), Y(*)
46 !
47 ! VARIABLES LOCALES
48  INTEGER ITYPND,IPOIN,IELEM,IP,IE, IGC,I,J
49  INTEGER ELMLOC(8)
50  REAL U,V
51  CHARACTER(LEN=80) LIGNE
52 !
53  ipoin=0
54  ielem=0
55  DO i=1,npoin
56  tfast1(i)= -1
57  ENDDO
58 !
59 ! TRAITEMENT DE LA GEOMETRIE
60 ! PREMIERE PASSE, ON S'OCCUPE DES ELEMENTS
61 !
62  rewind(ngeo)
63  10 READ (ngeo, '(A)',err=8000, end=1000) ligne
64  IF (ligne(1:2).EQ.'GE') THEN
65  ielem=ielem+1
66  READ(ligne(4:80),*,err=8000,end=9000) ie, (elmloc(j),j=1,8)
67 !
68 ! TRAITEMENT EN FONCTION DU TYPE D'ELEMENT
69 !
70 !
71  IF (elmloc(8).NE.0) THEN
72 !
73 ! QUADRANGLE QUADRATIQUE
74 !- Il faut splitter les elements
75 !- on elimine des points
76 !
77 !
78 ! - 1er element
79 !
80  ikle(ielem,1)=elmloc(1)
81  ikle(ielem,2)=elmloc(3)
82  ikle(ielem,3)=elmloc(5)
83 !
84 ! - 2eme element
85 !
86  ielem=ielem+1
87  ikle(ielem,1)=elmloc(5)
88  ikle(ielem,2)=elmloc(7)
89  ikle(ielem,3)=elmloc(1)
90  ELSEIF (elmloc(6).NE.0) THEN
91 !
92 ! TRIANGLE QUADRATIQUE
93 !- on elimine des points
94 !
95  ikle(ielem,1)=elmloc(1)
96  ikle(ielem,2)=elmloc(3)
97  ikle(ielem,3)=elmloc(5)
98  ELSEIF (elmloc(4).NE.0) THEN
99 !
100 ! QUADRANGLE LINEAIRE
101 !- Il faut splitter les elements
102 !
103 !
104 ! - 1er element
105 !
106  ikle(ielem,1)=elmloc(1)
107  ikle(ielem,2)=elmloc(2)
108  ikle(ielem,3)=elmloc(3)
109 !
110 ! - 2eme element
111 !
112  ielem=ielem+1
113  ikle(ielem,1)=elmloc(3)
114  ikle(ielem,2)=elmloc(4)
115  ikle(ielem,3)=elmloc(1)
116  ELSE
117 !
118 ! TRIANGLE LINEAIRE
119 !- on conserve les elements tels quels
120 !
121  DO i=1,3
122  ikle(ielem,i)=elmloc(i)
123  ENDDO
124  ENDIF
125 !
126  ENDIF
127  GO TO 10
128 !
129 ! TRAITEMENT DE LA GEOMETRIE
130 ! DEUXIEME PASSE, ON S'OCCUPE DES POINTS
131 !
132  1000 CONTINUE
133  rewind(ngeo)
134  20 READ (ngeo, '(A)',err=8000, end=1010) ligne
135  IF (ligne(1:3).EQ.'GNN') THEN
136  ipoin=ipoin+1
137  READ(ligne(4:70),*,err=8000,end=9000)ip,x(ipoin),y(ipoin)
138  tfast1(ip)=ipoin
139  ENDIF
140  GO TO 20
141  1010 CONTINUE
142 !
143 ! - CONVERTION DES NUMEROS DE POINTS DES ELEMENTS
144 !
145  DO i=1,nelem
146  DO j=1,3
147  ikle(i,j)=tfast1(ikle(i,j))
148  ENDDO
149  ENDDO
150 !
151 ! TRAITEMENT DES CONDITION CONDITIONS LIMITES
152 ! SI DEMANDE
153 !
154  IF (.NOT.addfas) THEN
155  RETURN
156 ! ------
157  ENDIF
158 ! -------------------
159  DO i=1,npoin
160  tfast1(i)= 0
161  ENDDO
162  rewind(nfo1)
163  30 READ (nfo1, '(A)',err=8010, end=2000) ligne
164  IF (ligne(1:3).EQ.'BCN') THEN
165 !
166 ! CARTE BCN : NODAL BOUNDARY CONDITION
167 !
168  READ(ligne(4:70),*,err=8010,end=9010)itypnd
169  IF (itypnd.EQ.200) THEN
170 !
171 ! FASTTABS BOUNDARY CONDITION = EXIT HEAD
172 !
173  ncolor(ip)=1
174  ELSEIF (itypnd.EQ.1200) THEN
175 !
176 ! FASTTABS BOUNDARY CONDITION = SLIP EXIT HEAD
177 !
178  ncolor(ip)=11
179  ELSEIF (itypnd.EQ.1100) THEN
180 !
181 ! FASTTABS BOUNDARY CONDITION = VELOCITY
182 !
183  ncolor(ip)=9
184  ENDIF
185  ELSEIF (ligne(1:3).EQ.'BQL') THEN
186 !
187 ! CARTE BQL : NODAL BOUNDARY CONDITION
188 !
189  READ(ligne(4:70),*,err=8010,end=9010) igc, u, v
190  tfast1(igc)=8
191  ELSEIF (ligne(1:3).EQ.'BHL') THEN
192 !
193 ! CARTE BHL : NODAL BOUNDARY CONDITION
194 !
195  READ(ligne(4:70),*,err=8010,end=9010) igc, u
196  tfast2(igc)=1
197  ENDIF
198  GO TO 30
199  2000 CONTINUE
200 !
201 ! ON VA RELIRE LE FICHIER NFO1 (BC)
202 ! POUR LIRE LES CARTES GC
203 !
204  igc=0
205  rewind(nfo1)
206  40 READ (nfo1, '(A)',err=8010, end=3000) ligne
207  IF (ligne(1:3).EQ.'GC') THEN
208  igc=igc+1
209  READ(ligne(4:70),*,err=8010,end=9010)ie,
210  & (tfast2(i),i=1,ie)
211  DO i=1,ie
212  ncolor(tfast2(i))=tfast1(igc)
213  ENDDO
214  ENDIF
215  GO TO 40
216  3000 RETURN
217  8000 CONTINUE
218  WRITE (lu,4001)
219  4001 FORMAT (//,1x,'****************************'
220  & ,/,1x,'SUBROUTINE LECFAS :'
221  & ,/,1x,'ERROR READING FASTTABS FILE.'
222  & ,/,1x,'****************************')
223  CALL plante(1)
224  stop
225  9000 CONTINUE
226  WRITE (lu,4011)
227  4011 FORMAT (//,1x,'***************************************'
228  & ,/,1x,'SUBROUTINE LECFAS : UNEXPECTED END OF'
229  & ,/,1x,'FASTTABS FILE ENCOUNTERED'
230  & ,/,1x,'***************************************')
231  CALL plante(1)
232  stop
233  8010 CONTINUE
234  WRITE (lu,4021)
235  4021 FORMAT (//,1x,'***************************************'
236  & ,/,1x,'SUBROUTINE LECFAS : ERROR READING'
237  & ,/,1x,'FASTTABS BOUNDARY CONDITION FILE'
238  & ,/,1x,'***************************************')
239  CALL plante(1)
240  stop
241  9010 CONTINUE
242  WRITE (lu,4031)
243  4031 FORMAT (//,1x,'***************************************'
244  & ,/,1x,'SUBROUTINE LECFAS : END OF'
245  & ,/,1x,'FASTTABS BOUNDARY CONDITION FILE ENCOUNTERED'
246  & ,/,1x,'***************************************')
247  CALL plante(1)
248  stop
249  END
subroutine lecfas(X, Y, IKLE, NCOLOR, TFAST1, TFAST2, ADDFAS, NGEO, NFO1)
Definition: lecfas.f:8