The TELEMAC-MASCARET system  trunk
stbtel.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE stbtel
3 ! *****************
4 !
5  &( npoin1 , typele , nfond , precis , nsfond , titre)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL 7.2 09/08/89 J.C. GALLAND
9 ! 19/02/93 J.M. JANIN
10 ! 09/11/94 P. LANG / LHF (TRIGRID)
11 ! 07/96 P. CHAILLET / LHF (FASTTABS)
12 ! 09/98 A. CABAL / P. LANG SOGREAH
13 !***********************************************************************
14 !
15 ! FONCTION : STBTEL MAIN PROGRAM
16 !
17 !history J-M HERVOUET (JUBILADO)
18 !+ 24/10/2016
19 !+ V7P2
20 !+ Optimisation in the case of splitting of all elements. Look for
21 !+ the second call to VERIFI (no skipped with a test) and the only
22 !+ call to INTERP (test changed). The work of VERIFI and INTERP is
23 !+ done in DIVISE in the case DIV4.AND.NSOM2.EQ.0.
24 !
25 !-----------------------------------------------------------------------
26 ! ARGUMENTS
27 ! .________________.____.______________________________________________
28 ! | NOM |MODE| ROLE
29 ! |________________|____|______________________________________________
30 ! | X,Y |<-- | COORDONNEES DES POINTS DU MAILLAGE
31 ! | ZF |<-- | COTES DU FOND
32 ! | XR,YR |<-- | COORDONNEES DES POINTS DE BATHY
33 ! | ZR |<-- | COTES DES POINTS DE BATHY
34 ! | NBAT | -->| NOMBRE DE POINTS DE BATHY
35 ! | IKLE |<-- | NUMEROS GLOBAUX DES NOEUDS DE CHAQUE ELEMENT
36 ! | IFABOR |<-- | NUMERO DE L'ELEMENT VOISIN DE CHAQUE FACE
37 ! | NBOR |<-- | NUMEROTATION DES ELEMENTS DE BORD
38 ! | TRAV1,2 |<-->| TABLEAUX DE TRAVAIL
39 ! | NCOLOR |<-- | TABLEAU DES COULEURS DES NOEUDS
40 ! | NCOLFR |<-- | TABLEAU DES COULEURS DES NOEUDS FRONTIERES
41 ! | NOP5 | -->| TABLEAU DE TRAVAIL POUR LA LECTURE DU FICHIER
42 ! | | | GEOMETRIE DE SIMAIL
43 ! | NPOIN1 | -->| NOMBRE REEL DE POINTS DU MAILLAGE
44 ! | | | (NPOIN REPRESENTE L'INDICE MAX DES NOEUDS CAR
45 ! | | | SUPERTAB LAISSE DES TROUS DANS LA NUMEROTATION
46 ! | TYPELE | -->| TYPE DES ELEMENTS
47 ! | STD | -->| STANDARD DE BINAIRE
48 ! | DECTRI | -->| DECOUPAGE OU NON DES TRIANGLES SURCONTRAINTS
49 ! | FOND | -->| TABLEAU DES NOMS DES FICHIERS BATHY
50 ! | NFOND | -->| TABLEAU DES CANAUX DES FICHIERS BATHY
51 ! | EPSI | -->| DISTANCE MINIMALE ENTRE 2 POINTS POUR DEFINIR
52 ! | | | LES POINTS DE MAILLAGE CONFONDUS
53 ! | COLOR |<-- | COULEUR DES NOEUDS
54 ! | ELIDEP | -->| LOGIQUE POUR L'ELIMINATION DES MOTS-CLES
55 ! | NBFOND | -->| NOMBRE DE FICHIERS DE BATHY
56 ! | MAILLE | -->| NOM DU MAILLEUR UTILISE
57 ! | DM | -->| DISTANCE MINIMALE A LA FRONTIERE
58 ! | | | POUR LA PROJECTION DES FONDS
59 ! | PRECIS | -->| FORMAT DE LECTURE DES COORDONNEES DES NOEUDS
60 ! | FONTRI | -->| INDICATEUR DE LECTURE DES FONDS DANS NGEO
61 ! | CORTRI | -->| CORRECTION DES FONDS POUR TRIGRID
62 ! | TFAST1,2 | -->| TABLEAUX DE TRAVAIL (FASTTABS)
63 ! | ADDFAS | -->| INDICATEUR UTILISATION DES C.L. (FASTTABS)
64 ! | VAR | -->| TABLEAU DOUBLE PREC. SERVANT A LIRE LES RESULTATS
65 ! | ELISEC | -->| INDICATEUR ELIMINATION DES ELEMENTS SECS
66 ! | ELPSEC | -->| INDICATEUR ELIM DES ELEMENTS PARTIELLEMENT SECS
67 ! | SEUSEC | -->| VALEUR POUR LA DEFINITION SECHERESSE
68 ! | ISDRY | -->| TABLEAU D'INDICATEURS HAUTEUR NULLE
69 ! | IHAUT | -->| INDICE DE LA HAUTEUR_D_EAU DANS LA LISTE DES VARIABLES
70 ! |________________|____|______________________________________________
71 ! | COMMON: | |
72 ! | GEO: | |
73 ! | MESH | -->| TYPE DES ELEMENTS DU MAILLAGE
74 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
75 ! | NPOIN | -->| NOMBRE TOTAL DE NOEUDS DU MAILLAGE
76 ! | NELEM | -->| NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
77 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
78 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
79 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
80 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
81 ! | FICH: | |
82 ! | NRES |--> | NUMERO DU CANAL DU FICHIER DE SERAFIN
83 ! | NGEO |--> | NUMERO DU CANAL DU FICHIER MAILLEUR
84 ! | NLIM |--> | NUMERO DU CANAL DU FICHIER DYNAM DE TELEMAC
85 ! | NFO1 |--> | NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
86 ! | SECT: | |
87 ! | NSEC11 |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
88 ! | |--> | (LECTURE EN SIMPLE PRECISION)
89 ! | NSEC12 |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
90 ! | |--> | (LECTURE EN DOUBLE PRECISION)
91 ! | NSEC2 |--> | INDICATEUR DU SECTEUR CONTENANT LES ELEMENTS
92 ! | NSEC3 |--> | INDICATEUR DU SECTEUR CONTENANT LE TITRE
93 ! |________________|____|______________________________________________
94 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
95 !-----------------------------------------------------------------------
96 ! APPELE PAR : HOMERE
97 ! APPEL DE : LECSIM, LECSTB, IMPRIM , VERIFI, VOISIN, RANBO, SURCON,
98 ! SHUFLE, CORDEP, DEPARR, PROJEC, PRESEL, FMTSEL, ECRSEL,
99 ! DYNAMI
100 !***********************************************************************
101 !
102  USE bief_def
103  USE bief, ONLY : voisin
107  USE interface_stbtel, ex_stbtel => stbtel
108 !
109  IMPLICIT NONE
110 !
111  INTEGER, INTENT(INOUT) :: NPOIN1
112  CHARACTER(LEN=11), INTENT(INOUT) :: TYPELE
113  INTEGER, INTENT(IN) :: NFOND(5)
114  CHARACTER(LEN=6), INTENT(INOUT) :: PRECIS
115  INTEGER, INTENT(INOUT) :: NSFOND
116  CHARACTER(LEN=80), INTENT(INOUT) :: TITRE
117 !
118  INTEGER NPTFR , NITER, OLD_NPTFR
119  INTEGER NDEPAR , IELM
120 !
121 ! TABLEAU BIDON UTILISE PAR VOISIN SEULEMENT EN PARALLELISME
122  INTEGER NACHB(1)
123 !
124  INTEGER NVAR , NVARCL
125  INTEGER NPINIT , NEINIT
126  INTEGER NUMPB(100), NBPB, I
127  INTEGER :: IPARAM(10) = (/ 0,0,0,0,0,0,0,0,0,0 /)
128 !
129  REAL, DIMENSION(:), ALLOCATABLE :: W
130  DOUBLE PRECISION,DIMENSION(:) ,ALLOCATABLE :: WORK,X,Y,ZF
131  DOUBLE PRECISION,DIMENSION(:) ,ALLOCATABLE :: XR,YR,ZR
132  DOUBLE PRECISION,DIMENSION(:) ,ALLOCATABLE :: XINIT,YINIT
133  DOUBLE PRECISION,DIMENSION(:) ,ALLOCATABLE :: VAINIT,VAR
134  DOUBLE PRECISION,DIMENSION(:) ,ALLOCATABLE :: CHBORD
135  DOUBLE PRECISION,ALLOCATABLE :: HBOR(:),UBOR(:,:),VBOR(:,:)
136  DOUBLE PRECISION,DIMENSION(:,:),ALLOCATABLE :: SHP
137  INTEGER, DIMENSION(:) , ALLOCATABLE :: TRAV1,TRAV2,TRAV3
138  INTEGER, DIMENSION(:,:), ALLOCATABLE :: IKLE,IFABOR,IKINIT
139  INTEGER, DIMENSION(:) , ALLOCATABLE :: NBOR,KP1BOR,LIUBOR
140  INTEGER, ALLOCATABLE :: OLD_NBOR(:)
141  INTEGER, DIMENSION(:) , ALLOCATABLE :: LIVBOR,LITBOR,LIHBOR
142  INTEGER, DIMENSION(:) , ALLOCATABLE :: ELT,NCOLOR,NCOLFR,NOP5
143  INTEGER, DIMENSION(:),ALLOCATABLE :: TFAST1,TFAST2,ISDRY,IPOBO
144 !
145 !
146  CHARACTER(LEN=32) TEXTE(26) , VARCLA(1)
147 !
148  LOGICAL SORLEO(26)
149  LOGICAL SUIT , ECRI , DEBU , LISTIN
150 !
151  INTEGER DATE(3) , TIME(3)
152  INTEGER X_ORIG,Y_ORIG
153  DOUBLE PRECISION TPSFIN(1)
154  INTEGER NVARIN , NVAROU , NVAR2 ,ERR
155  INTEGER NSOR , MXPTVS , MXELVS
156  TYPE(bief_obj) :: DUMMY
157 !
158 !
159 ! ALLOCATION DYNAMIQUE DES TABLEAUX REELS
160 !
161  ALLOCATE(w(npoin) ,stat=err)
162  CALL check_allocate(err,'W')
163  ALLOCATE(work(npmax) ,stat=err)
164  CALL check_allocate(err,'WORK')
165  ALLOCATE(x(npmax) ,stat=err)
166  CALL check_allocate(err,'X')
167  ALLOCATE(y(npmax) ,stat=err)
168  CALL check_allocate(err,'Y')
169  ALLOCATE(zf(npmax) ,stat=err)
170  CALL check_allocate(err,'ZF')
171  ALLOCATE(xr(nbat) ,stat=err)
172  CALL check_allocate(err,'XR')
173  ALLOCATE(yr(nbat) ,stat=err)
174  CALL check_allocate(err,'YR')
175  ALLOCATE(zr(nbat) ,stat=err)
176  CALL check_allocate(err,'ZR')
177  ALLOCATE(xinit(npoin) ,stat=err)
178  CALL check_allocate(err,'XINIT')
179  ALLOCATE(yinit(npoin) ,stat=err)
180  CALL check_allocate(err,'YINIT')
181  ALLOCATE(vainit(npoin) ,stat=err)
182  CALL check_allocate(err,'VAINIT')
183  ALLOCATE(var(npmax) ,stat=err)
184  CALL check_allocate(err,'VAR')
185  ALLOCATE(shp(npmax,3) ,stat=err)
186  CALL check_allocate(err,'SHP')
187  ALLOCATE(nop5(inop5) ,stat=err)
188  CALL check_allocate(err,'NOP5')
189 !
190 ! ALLOCATION DYNAMIQUE DES TABLEAUX ENTIERS
191 !
192  ALLOCATE(trav1(4*nelmax) ,stat=err)
193  CALL check_allocate(err,'TRAV1')
194  ALLOCATE(trav2(4*nelmax) ,stat=err)
195  CALL check_allocate(err,'TRAV2')
196  ALLOCATE(trav3(npmax) ,stat=err)
197  CALL check_allocate(err,'TRAV3')
198  ALLOCATE(ncolor(npmax) ,stat=err)
199  CALL check_allocate(err,'NCOLOR')
200  ALLOCATE(ikle(nelmax,4) ,stat=err)
201  CALL check_allocate(err,'IKLE')
202  ALLOCATE(ikinit(nelem,3) ,stat=err)
203  CALL check_allocate(err,'IKINIT')
204  ALLOCATE(ifabor(nelmax,4) ,stat=err)
205  CALL check_allocate(err,'IFABOR')
206  ALLOCATE(elt(npmax) ,stat=err)
207  CALL check_allocate(err,'ELT')
208  ALLOCATE(tfast1(npmax) ,stat=err)
209  CALL check_allocate(err,'TFAST1')
210  ALLOCATE(tfast2(npmax) ,stat=err)
211  CALL check_allocate(err,'TFAST2')
212  ALLOCATE(isdry(npmax) ,stat=err)
213  CALL check_allocate(err,'ISDRY')
214 ! NPTFR REMPLACE PAR NPMAX (VALEUR PAR EXCES)
215  ALLOCATE(nbor(npmax) ,stat=err)
216  CALL check_allocate(err,'NBOR')
217  ALLOCATE(old_nbor(npmax) ,stat=err)
218  CALL check_allocate(err,'OLD_NBOR')
219  ALLOCATE(kp1bor(npmax) ,stat=err)
220  CALL check_allocate(err,'KP1BOR')
221  ALLOCATE(liubor(npmax) ,stat=err)
222  CALL check_allocate(err,'LIUBOR')
223  ALLOCATE(livbor(npmax) ,stat=err)
224  CALL check_allocate(err,'LIVBOR')
225  ALLOCATE(litbor(npmax) ,stat=err)
226  CALL check_allocate(err,'LITBOR')
227  ALLOCATE(lihbor(npmax) ,stat=err)
228  CALL check_allocate(err,'LIHBOR')
229  ALLOCATE(ncolfr(npmax) ,stat=err)
230  CALL check_allocate(err,'NCOLFR')
231 
232  ALLOCATE(chbord(npmax) ,stat=err)
233  CALL check_allocate(err,'CHBORD')
234  ALLOCATE(hbor(npmax) ,stat=err)
235  CALL check_allocate(err,'HBOR')
236  ALLOCATE(ubor(npmax,2) ,stat=err)
237  CALL check_allocate(err,'UBOR')
238  ALLOCATE(vbor(npmax,2) ,stat=err)
239  CALL check_allocate(err,'VBOR')
240 
241 !
242 !=======================================================================
243 ! LECTURE DES COORDONNEES ET DE LA COULEUR DES POINTS , DES IKLE ET DU
244 ! TITRE DU MAILLAGE
245 !=======================================================================
246 !
247  nvarin = 0
248  nptfr = 1
249  npinit = npoin
250  neinit = nelem
251 !
253  ALLOCATE(ipobo(npoin) ,stat=err)
254  CALL check_allocate(err,'IPOBO')
255  IF (maille.EQ.'SELAFIN') THEN
256  CALL lecsel (xinit,yinit,ikinit,npinit,neinit,x,y,ikle,trav1,
257  & w,titre,texte,nvarin,nvar2,std,fusion,
258  & ngeo,nfo1,ipobo,iparam,date,time,x_orig,y_orig)
259  IF(nombnd2(1:1) .NE. ' ') THEN
260  CALL lecsellim (ngeo,lihbor,liubor,livbor,hbor,ubor,vbor,
261  & chbord,nbor,npmax,nptfr,ncolor)
262  ENDIF
263  ELSEIF (maille.EQ.'ADCIRC') THEN
264  CALL lecadc (x,y,zf,ikle,ngeo)
265  nsfond=1
266  ELSEIF (maille.EQ.'SIMAIL') THEN
267  CALL lecsim (x,y,ikle,ncolor,titre,nop5,ngeo)
268  ELSEIF (maille.EQ.'TRIGRID') THEN
269  CALL lectri (x,y,ikle,ncolor,ngeo,nfo1)
270  titre = 'MAILLAGE TRIGRID'
271  ELSEIF (maille.EQ.'FASTTABS') THEN
272  CALL lecfas (x,y,ikle, ncolor, tfast1, tfast2, addfas,
273  & ngeo , nfo1)
274  titre = 'MAILLAGE FASTTABS'
275  ELSE
277  CALL lecstb (x,y,ikle,ncolor,titre,npoin1,
279  ENDIF
280 !
281 !=======================================================================
282 ! EXTRACTION D'UN MAILLAGE
283 !=======================================================================
284 !
285  IF(mesh.EQ.3.AND.nsom.GE.3) THEN
286  CALL extrac(x,y,som,ikle,trav1,nelem,nelmax,npoin,nsom,projex)
287  ENDIF
288 !
289 !=======================================================================
290 ! IMPRESSION DES DONNEES GEOMETRIQUES
291 !=======================================================================
292 !
293  CALL imprim(npoin1,npoin,typele,nelem,titre,maille,precis)
294 !
295 !=======================================================================
296 ! DIVISION PAR 4 DE TOUTE OU PARTIE DES MAILLES
297 !=======================================================================
298 !
299  IF(mesh.EQ.3.AND.div4) THEN
300  CALL divise(x,y,ikle,ncolor,npoin,nelem,nelmax,nsom2,som2,
301  & trav1,trav2,shp,elt,npmax)
302  old_nptfr = nptfr
303  old_nbor = nbor
304  ELSE
305  IF(div4) WRITE(lu,3901)
306  ENDIF
307 !
308 !=======================================================================
309 ! OPTION ELIMINATION DES ELEMENTS SECS OU PARTIELLEMENT SECS
310 !=======================================================================
311 !
312  IF(elisec) THEN
313  IF(mesh.EQ.3) THEN
314  WRITE(lu,3007)
315  CALL elmsec ( elpsec, seusec, tpsfin, x, y, ikle,
316  & ncolor, isdry, ihaut, nvarin, var, w , trav2, std ,ngeo,texte)
317 !
318 ! APRES ELIMINATION, ON RECHERCHE LES POINTS FRONTIERES POSANT PROBLEME
319 !
320  CALL verifi(x,y,ikle,ncolor,trav1,epsi,
322  ielm = 11
323  CALL voisin(ifabor,nelem,nelmax,ielm,ikle,nelmax,npoin,
324  & nachb,nbor,nptfr,trav1,trav2)
325  CALL verifs (ifabor,ikle,trav1,nptfr,numpb,nbpb)
326  IF (nbpb.GT.0) THEN
327  DO i=1,nbpb
328  WRITE(lu,3001) numpb(i)
329  ENDDO
330  CALL elmpb (nbpb, numpb, x,y,ikle,ncolor,isdry,trav2)
331  ELSE
332  WRITE(lu,3009)
333  ENDIF
334  ELSE
335  WRITE(lu,4002)
336  ENDIF
337  ENDIF
338 !
339 !=======================================================================
340 ! MISE AU FORMAT TELEMAC DU MAILLAGE
341 !=======================================================================
342 !
343  IF(.NOT.div4) THEN
344  CALL verifi(x,y,ikle,ncolor,trav1,epsi,
346  ENDIF
347 !
348 !=======================================================================
349 ! CONSTRUCTION DU TABLEAU IFABOR
350 !=======================================================================
351 !
352  ielm = 21
353  IF (mesh.EQ.3) ielm = 11
354 !
355  CALL voisin(ifabor,nelem,nelmax,ielm,ikle,nelmax,npoin,
356  & nachb,nbor,nptfr,trav1,trav2)
357 !
358 !=======================================================================
359 ! CONSTRUCTION DE LA TABLE DES POINTS DE BORD
360 ! (RANGES DANS L'ORDRE TRIGONOMETRIQUE POUR LE CONTOUR
361 ! ET L'ORDRE INVERSE POUR LES ILES)
362 !=======================================================================
363 !
364  CALL ranbo(nbor,kp1bor,ifabor,ikle,ncolor,trav1,nptfr,x,y,
365  & ncolfr,ndp,npoin,nelem,nelmax,mesh)
366 !
367 !=======================================================================
368 ! Setting boudnary info after a refinement
369 !=======================================================================
370 !
371  IF(mesh.EQ.3.AND.div4) THEN
372  ! Fill_lim only works if the whole mesh is refined
373  IF(nsom.LT.3) THEN
374  CALL fill_lim
375  & (old_nptfr,npmax,0,lihbor,liubor,livbor,dummy,
376  & hbor,ubor,vbor,chbord,dummy,dummy,dummy, nbor, old_nbor)
377  ENDIF
378  ENDIF
379 !
380 !=======================================================================
381 ! ELIMINATION DES TRIANGLES SURCONTRAINTS
382 !=======================================================================
383 !
384  IF(mesh.EQ.3.AND.dectri) THEN
385 !
386  CALL surcon (x,y,ikle,trav1,nbor,nptfr,ncolor,ifabor,color)
387 !
388  ELSE
389  IF (dectri) WRITE(lu,3900)
390  ENDIF
391 !
392 !=======================================================================
393 ! RENUMEROTATION DES NOEUDS POUR OPTIMISATION D'ASSEMBLAGE
394 !=======================================================================
395 !
396  IF(optass) THEN
397  IF(div4.OR.nsom2.GT.0) THEN
398  WRITE(lu,*) 'RENUMBERING IS NOT POSSIBLE IF '//
399  & 'YOU ARE DOING A REFINEMENT.'
400  WRITE(lu,*) 'YOU WILL NEED TO DO IT IN ANOTHER RUN'
401  CALL plante(1)
402  stop
403  ENDIF
404  CALL renum
405  & (x,y,work,ikle,nbor,trav1,trav2,trav3,ncolor,color,nptfr)
406  ENDIF
407 !
408 !=======================================================================
409 ! RENUMEROTATION DES ELEMENTS POUR EVITER LES DEPENDENCES ARRIERES
410 !=======================================================================
411 !
412  IF (elidep) THEN
413 !
414  WRITE(lu,3011)
415  CALL shufle (ikle,x)
416 !
417  niter = 0
418 !
419 10 CONTINUE
420 !
421  CALL cordep (ikle,lgvec)
422 !
423 !=======================================================================
424 ! VERIFICATION DES DEPENDANCES ARRIERES
425 !=======================================================================
426 !
427  CALL deparr (ikle,ndepar,lgvec)
428  IF(ndepar.NE.0) THEN
429  niter = niter + 1
430  IF (niter.GT.50) THEN
431  WRITE(lu,4000)
432  CALL plante(1)
433  stop
434  ENDIF
435  GOTO 10
436  ENDIF
437 !
438  WRITE(lu,4100) niter
439 !
440  ENDIF
441 !
442 !=======================================================================
443 ! PROJECTION DES FONDS SUR LE MAILLAGE
444 !=======================================================================
445 !
446  IF(nbfond.NE.0) THEN
447  CALL projec (x,y,zf,xr,yr,zr,nbat,nbor,nptfr,nfond,nbfond,
448  & fond,dm,fontri,cortri,maille,ngeo,kp1bor)
449  ENDIF
450 !
451 !=======================================================================
452 ! CONSTRUCTION DU FICHIER DE GEOMETRIE AU FORMAT SELAFIN :
453 !=======================================================================
454 !
455  WRITE(lu,3003)
456  nvarcl= 0
457  debu = .false.
458  suit = .false.
459  ecri = .true.
460  listin= .true.
461 !
462  nsor = 26
463 ! SI LA DATE MANQUE
464  IF(iparam(10).EQ.0) THEN
465  date(1) = 0
466  date(2) = 0
467  date(3) = 0
468  time(1) = 0
469  time(2) = 0
470  time(3) = 0
471  ENDIF
472 !
473  CALL presel(ikle,trav1,nelem,nelmax,ndp,texte,nbfond,sorleo,
474  & color,nsfond,nvarin,nvarou,maille)
475 !
476 ! ATTENTION DANS L'APPEL A FM3SEL, LE VRAI IKLE EST TRAV1
477 ! ET IKLE EST EMPLOYE COMME TABLEAU DE TRAVAIL.
478 !
479  CALL fm3sel(x,y,npoin,nbor,nres,std,nvar,texte,texte,
480  & varcla,nvarcl,titre,sorleo,nsor,w,trav1,ikle,
481  & trav2,nelem,nptfr,ndp,mxptvs,mxelvs,date,time,
482  & debu,suit,ecri,listin,iparam,ipobo,x_orig,y_orig)
483 !
484 ! INTERPOLATION DES VARIABLES DU FICHIER D'ENTREE
485 !
486  IF(maille.EQ.'SELAFIN'.AND..NOT.div4) THEN
487  CALL interp(xinit,yinit,ikinit,npinit,neinit,x,y,npoin,
488  & npmax,shp,elt)
489  ENDIF
490 !
491  IF(elisec) THEN
492 ! ECRITURE DES VARIABLES DE SORTIE AU FORMAT RESULTAT TELEMAC-2D
493  CALL ecrsel (vainit,ikinit,npinit,neinit,shp,elt,npoin,npoin1,
494  & npmax,w,x,zf,nsfond,ncolor,color,var,nvarin,nvarou,
495  & 0, 'STD', .false., nres, ngeo, 0, maille, texte)
496  ELSE
497 ! ECRITURE DES VARIABLES DE SORTIE AU FORMAT SELAFIN
498  CALL ecrsel(vainit,ikinit,npinit,neinit,shp,elt,npoin,npoin1,
499  & npmax,w,x,zf,nsfond,ncolor,color,var,nvarin,nvarou,
500  & nvar2,std,fusion,nres,ngeo,nfo1,maille,texte)
501  ENDIF
502 !
503 !=======================================================================
504 ! CONSTRUCTION DU FICHIER DYNAM DE TELEMAC
505 !=======================================================================
506 !
507  WRITE(lu,3005)
508  IF(div4 .AND. nombnd2(1:1).NE.' ') THEN
509  CALL writesellim
510  &(nres,lihbor,liubor,livbor,hbor,ubor(:,1),vbor(:,1),
511  & chbord,nbor,npmax,nptfr)
512  ELSE
513  CALL dynami (nptfr,nbor,lihbor,liubor,livbor,litbor,
514  & ncolfr,maille,nres)
515  ENDIF
516 !
517  3900 FORMAT(//,'********************************************',/,
518  & 'OVERSTRESSED ELEMENTS ARE CANCELLED ONLY IN',/,
519  & 'THE CASE OF TRIANGLES ',/,
520  & '********************************************',/)
521  3901 FORMAT(//,'********************************************',/,
522  & 'ELEMENTS CAN BE CUT IN FOUR ONLY IN',/,
523  & 'THE CASE OF TRIANGLES ',/,
524  & '********************************************',/)
525  4000 FORMAT(//,'***********************************************',/,
526  & 'FAILURE IN CANCELLING BACKWARD DEPENDENCIES ',/,
527  & ' (NUMBER OF ATTEMPTS : 50) ',/,
528  & 'THERE MUST BE TOO FEW NODES IN THE MESH ',/,
529  & '***********************************************')
530  4100 FORMAT(1x,'BACKWARD DEPENDENCIES ARE CANCELLED AFTER ',i2,
531  & ' ATTEMPTS')
532 !
533  4002 FORMAT(//,'***********************************************',/,
534  & 'MESH DRY ELEMENT SUPPRESION NOT AVAILABLE FOR ',
535  & 'NON TRIANGULAR MESH.',/,
536  & '***********************************************')
537 !
538  3001 FORMAT(1x,'THE POINT NUMBER ',i6,' HAS TO BE REMOVED')
539  3003 FORMAT(//,1x,'GENERATING GEOMETRY FILE',/,
540  & 1x,'------------------------')
541  3005 FORMAT(//,1x,'TREATMENT OF BOUNDARY CONDITIONS',/,
542  & 1x,'--------------------------------')
543  3007 FORMAT(//,1x,'MESH DRY ELEMENT SUPPRESSION',
544  & /,1x,'----------------------------',/)
545  3009 FORMAT(/,1x,'NO CONNECTED ISLAND')
546  3011 FORMAT(//,1x,'ELIMINATION OK BACKWARDS DEPENDENCIES',
547  & /,1x,'------------------------------------',/)
548 !
549  DEALLOCATE(w)
550  DEALLOCATE(work)
551  DEALLOCATE(x)
552  DEALLOCATE(y)
553  DEALLOCATE(zf)
554  DEALLOCATE(xr)
555  DEALLOCATE(yr)
556  DEALLOCATE(zr)
557  DEALLOCATE(xinit)
558  DEALLOCATE(yinit)
559  DEALLOCATE(vainit)
560  DEALLOCATE(var)
561  DEALLOCATE(shp)
562  DEALLOCATE(nop5)
563  DEALLOCATE(trav1)
564  DEALLOCATE(trav2)
565  DEALLOCATE(trav3)
566  DEALLOCATE(ncolor)
567  DEALLOCATE(ikle)
568  DEALLOCATE(ikinit)
569  DEALLOCATE(ifabor)
570  DEALLOCATE(elt)
571  DEALLOCATE(tfast1)
572  DEALLOCATE(tfast2)
573  DEALLOCATE(isdry)
574  DEALLOCATE(nbor)
575  DEALLOCATE(old_nbor)
576  DEALLOCATE(kp1bor)
577  DEALLOCATE(liubor)
578  DEALLOCATE(livbor)
579  DEALLOCATE(litbor)
580  DEALLOCATE(lihbor)
581  DEALLOCATE(ncolfr)
582 
583  DEALLOCATE(chbord)
584  DEALLOCATE(hbor)
585  DEALLOCATE(ubor)
586  DEALLOCATE(vbor)
587  DEALLOCATE(ipobo)
588 !
589 !-----------------------------------------------------------------------
590 !
591  RETURN
592  END
subroutine lecsim(X, Y, IKLE, NCOLOR, TITRE, NOP5, NGEO)
Definition: lecsim.f:7
subroutine elmsec(ELPSEC, SEUSEC, TPSFIN, X, Y, IKLE, NCOLOR, ISDRY, IHAUT, NVAR, H, WORK, NEW, STD, NGEO, TEXTE)
Definition: elmsec.f:8
subroutine interp(XINIT, YINIT, IKINIT, NPINIT, NEINIT, X, Y, NPOIN, NPMAX, SHP, ELT)
Definition: interp.f:8
character(len=9) maille
subroutine surcon(X, Y, IKLE, IPO, NBOR, NPTFR, NCOLOR, IFABOR, COLOR)
Definition: surcon.f:7
integer, parameter triangle_elt_type
subroutine fill_lim(NPTFR, NPTFRX, NTRAC, LIHBOR, LIUBOR, LIVBOR, LITBOR, HBOR, UBOR, VBOR, CHBORD, TBOR, ATBOR, BTBOR, NBOR, OLD_NBOR)
Definition: fill_lim.f:8
double precision seusec
subroutine shufle(IKLE, X)
Definition: shufle.f:7
subroutine dynami(NPTFR, NBOR, LIHBOR, LIUBOR, LIVBOR, LITBOR, NCOLFR, MAILLE, NLIM)
Definition: dynami.f:7
subroutine lecfas(X, Y, IKLE, NCOLOR, TFAST1, TFAST2, ADDFAS, NGEO, NFO1)
Definition: lecfas.f:8
subroutine projec(X, Y, ZF, XRELV, YRELV, ZRELV, NBAT, NBOR, NPTFR, NFOND, NBFOND, FOND, DM, FONTRI, CORTRI, MAILLE, NGEO, KP1BOR)
Definition: projec.f:9
double precision, dimension(10, 2) som2
subroutine cordep(IKLE, LGVEC)
Definition: cordep.f:7
subroutine fm3sel(X, Y, NPOIN, NBOR, NFIC, STD, NVAR, TEXTE, TEXTLU, VARCLA, NVARCL, TITRE, SORLEO, NSOR, W, IKLE, IKLES, ITRAV, NELEM, NPTFR, NDP, MXPTVS, MXELVS, DATE, TIME, DEBU, SUIT, ECRI, LISTIN, IPARAM, IPOBO, X_ORIG, Y_ORIG)
Definition: fm3sel.f:10
subroutine lecadc(X, Y, ZF, IKLE, NGEO)
Definition: lecadc.f:7
double precision cortri
subroutine extrac(X, Y, SOM, IKLE, INDIC, NELEM, NELMAX, NPOIN, NSOM, PROJEC)
Definition: extrac.f:7
double precision epsi
subroutine lecstb(X, Y, IKLE, NCOLOR, TITRE, NPOIN1, NGEO, NSEC2, NSEC3, NSEC11, NSEC12)
Definition: lecstb.f:8
double precision, dimension(10, 2) som
subroutine deparr(IKLE, NDEPAR, LGVEC)
Definition: deparr.f:7
subroutine ranbo(NBOR, KP1BOR, IFABOR, IKLE, NCOLOR, TRAV1, NPTFR, X, Y, NCOLFR, NDP, NPOIN, NELEM, NELMAX, MESH)
Definition: ranbo.f:8
integer, parameter quadrangle_elt_type
character(len=3) std
subroutine elmpb(NBPB, NUMPB, X, Y, IKLE, NCOLOR, ISDRY, NEW)
Definition: elmpb.f:7
subroutine verifs(IFABOR, IKLE, TRAV1, NPTFR, NUMPB, NBPB)
Definition: verifs.f:7
character(len=path_len), dimension(5) fond
subroutine lecsellim(NLIM, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, NBOR, NPMAX, NPTFR, NCOLOR)
Definition: lecsellim.f:8
character(len=maxlenfile) nombnd2
subroutine ecrsel(VAINIT, IKINIT, NPINIT, NEINIT, SHP, ELT, NPOIN, NPOIN1, NPMAX, W, X, ZF, NSFOND, NCOLOR, COLOR, VAR, NVARIN, NVAROU, NVAR2, STD, FUSION, NRES, NGEO, NFO1, MAILLE, TEXTE)
Definition: ecrsel.f:9
subroutine divise(X, Y, IKLE, NCOLOR, NPOIN, NELEM, NELMAX, NSOM2, SOM2, INDICP, INDICE, SHP, ELT, NPMAX, CORR, LEVEL)
Definition: divise.f:8
subroutine lecsel(XINIT, YINIT, IKINIT, NPINIT, NEINIT, X, Y, IKLE, IKLES, W, TITRE, TEXTE, NVARIN, NVAR2, STD, FUSION, NGEO, NFO1, IPOBO, IPARAM, DATE, TIME, X_ORIG, Y_ORIG)
Definition: lecsel.f:9
subroutine voisin(IFABOR, NELEM, NELMAX, IELM, IKLE, SIZIKL, NPOIN, NACHB, NBOR, NPTFR, IADR, NVOIS)
Definition: voisin.f:8
subroutine imprim(NPOIN1, NPOIN, TYPELE, NELEM, TITRE, MAILLE, PRECIS)
Definition: imprim.f:7
subroutine lectri(X, Y, IKLE, NCOLOR, NGEO, NFO1)
Definition: lectri.f:7
subroutine renum(X, Y, W, IKLE, NBOR, TRAV1, TRAV2, TAB, NCOLOR, COLOR, NPTFR)
Definition: renum.f:7
subroutine stbtel(NPOIN1, TYPELE, NFOND, PRECIS, NSFOND, TITRE)
Definition: stbtel.f:7
subroutine presel(IKLE, TRAV1, NELEM, NELMAX, NDP, TEXTE, NBFOND, SORLEO, COLOR, NSFOND, NVARIN, NVAROU, MAILLE)
Definition: presel.f:8
subroutine verifi(X, Y, IKLE, NCOLOR, TRAV1, EPSI, MESH, NDP, NPOIN, NELEM, NELMAX)
Definition: verifi.f:7
subroutine writesellim(NLIM, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, NBOR, NPMAX, NPTFR)
Definition: writesellim.f:8
Definition: bief.f:3