The TELEMAC-MASCARET system  trunk
lecdon_telemac3d.F
Go to the documentation of this file.
1 ! ***************************
2  SUBROUTINE lecdon_telemac3d
3 ! ***************************
4 !
5  &(motcar,file_desc,path,ncar,
6  & cas_file,dico_file,
7  & gaia_cas_file,gaia_dico_file)
8 !
9 !***********************************************************************
10 ! TELEMAC3D V8P2
11 !***********************************************************************
12 !
13 !brief READS THE STEERING FILE USING DAMOCLES.
14 !+ SETS SOME DEFAULT VALUES.
15 !+ CHECKS SOME INCONSISTENCIES.
16 !
17 !history J-M HERVOUET (LNHE)
18 !+ 02/04/2012
19 !+ V6P2
20 !+ A clean restart implemented: RESTART_MODE and restart file.
21 !
22 !history J-M HERVOUET (LNHE)
23 !+ 18/01/2013
24 !+ V6P3
25 !+ Keyword for spherical coordinates added.
26 !
27 !history J-M HERVOUET (LNHE)
28 !+ 18/04/2013
29 !+ V6P3
30 !+ New keyword FILE FOR 2D CONTINUATION added, and coherence checked.
31 !+ Look for T3DS2D.
32 !
33 !history C. VILLARET & T. BENSON & D. KELLY (HR-WALLINGFORD)
34 !+ 27/02/2014
35 !+ V7P0
36 !+ New developments in sediment merged on 25/02/2014.
37 !
38 !history J-M HERVOUET (EDF LAB LNHE)
39 !+ 12/09/2014
40 !+ V7P0
41 !+ Variable SORG2D(37) set to false if .NOT.S3D_SEDI
42 !
43 !history G. ANTOINE (EDF LAB, LNHE)
44 !+ 19/09/2014
45 !+ V7P0
46 !+ Adding 3 keywords for mixed sediment
47 !
48 !history J-M HERVOUET (EDF LAB, LNHE)
49 !+ 18/05/2015
50 !+ V7P1
51 !+ Adding CHECK_MESH for the keyword 'CHECKING THE MESH'
52 !
53 !history J-M HERVOUET (EDF LAB, LNHE)
54 !+ 25/06/2015
55 !+ V7P1
56 !+ Adding vertical velocity of sources and diffusion coefficient of
57 !+ tracers given per tracer.
58 !
59 !history A. JOLY (EDF LAB, LNHE)
60 !+ 27/08/2015
61 !+ V7P1
62 !+ Imposed flowrates on the bed.
63 !
64 !history J-M HERVOUET (EDF LAB, LNHE)
65 !+ 28/09/2015
66 !+ V7P1
67 !+ Allocating arrays with new keywords.
68 !
69 !history J-M HERVOUET (EDF LAB, LNHE)
70 !+ 16/11/2015
71 !+ V7P1
72 !+ Checking that wave driven currents will be given if they have to be
73 !+ taken into account.
74 !
75 !history J-M HERVOUET (EDF LAB, LNHE)
76 !+ 01/02/2016
77 !+ V7P1
78 !+ Adding the line CALL MAJUS(COUPLING) like in Telemac-2D.
79 !
80 !history J-M HERVOUET (EDF LAB, LNHE)
81 !+ 25/02/2016
82 !+ V7P2
83 !+ Adaptation to the possibility of OPT_HNEG=3 for new advection 15.
84 !+ (the latter not yet implemented in Telemac-3D).
85 !
86 !history C-T PHAM (EDF LAB, LNHE)
87 !+ 29/02/2016
88 !+ V7P2
89 !+ Changes for the filling of tracer arrays
90 !
91 !history J-M HERVOUET (EDF LAB, LNHE)
92 !+ 22/03/2016
93 !+ V7P2
94 !+ New keywords and options for distributive schemes. All like in 2D.
95 !
96 !history J-M HERVOUET (EDF LAB, LNHE)
97 !+ 31/05/2016
98 !+ V7P2
99 !+ Scheme for advection of tracers (SCHCTA) completed when there are
100 !+ several tracers and not the corresponding number of values given.
101 !+ Previously the default value 5 was given. Exit of S3D_PVSCO and S3D_PVSNCO
102 !+ precluded when no sediment. A section reading sediment parameters
103 !+ is now executed also IF(S3D_MIXTE)...
104 !
105 !history J-M HERVOUET (EDF LAB, LNHE)
106 !+ 27/08/2016
107 !+ V7P2
108 !+ Checking the number of values of the tracers at sources, and
109 !+ stop if wrong.
110 !
111 !history J-M HERVOUET (EDF LAB, LNHE)
112 !+ 15/09/2016
113 !+ V7P2
114 !+ Default values of COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES
115 !+ managed differently. The missing values are completed with the last
116 !+ value given by the user, not by 1.D-6.
117 !
118 !history M JODEAU (EDF LAB, LNHE)
119 !+ 08/2016
120 !+ V7P3
121 !+ Water quality: AED2 coupling
122 !
123 !history C.-T. PHAM (EDF, LNHE)
124 !+ 01/03/2017
125 !+ V7P2
126 !+ Allowing k-epsilon model on a direction and not on the other.
127 !
128 !history S.E. BOURBAN (HRW)
129 !+ 07/06/2017
130 !+ V7P3
131 !+ Re-working NAMETRAC to avoid conflicting naming convention
132 !+ between user defined tracers, water quality processes and
133 !+ ice processes in 2d.
134 !
135 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
136 !| FILE_DESC |<->| STORES STRINGS 'SUBMIT' OF DICTIONARY
137 !| MOTCAR |<->| KEYWORD IN CHARACTER
138 !| NCAR |-->| NUMBER OF LETTERS IN STRING PATH
139 !| PATH |-->| FULL PATH TO CODE DICTIONARY
140 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141 !
143  USE bief
147  USE meteo_telemac
149 #if defined HAVE_AED2
150  USE t3d_aed2
152 #endif
154  & sed0,dnusedh,dnusedv,npresed,
155  & nverprosed,verprosed,presed,sortis,
156  & nsedsce,sedsce
157 !
159  IMPLICIT NONE
160 !
161 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
162 !
163  CHARACTER(LEN=PATH_LEN), INTENT(INOUT) :: MOTCAR(maxkeyword)
164  CHARACTER(LEN=PATH_LEN), INTENT(INOUT) :: FILE_DESC(4,maxkeyword)
165  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: PATH
166  INTEGER, INTENT(IN) :: NCAR
167  !API
168  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: CAS_FILE
169  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: DICO_FILE
170  CHARACTER(LEN=PATH_LEN), OPTIONAL, INTENT(IN) :: GAIA_CAS_FILE
171  CHARACTER(LEN=PATH_LEN), OPTIONAL, INTENT(IN) :: GAIA_DICO_FILE
172 !
173 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
174 !
175  LOGICAL CONVEC,YES2D,GRAP_PRINT2D
176  INTEGER I,J,K,NTRTOT,ITRAC,TEMP_SCHDTA
177 !
178  CHARACTER(LEN=8) MNEMO(maxvar)
179  CHARACTER(LEN=8) MNEM3(maxva3)
180 !
181  CHARACTER(LEN=PATH_LEN) NOM_CAS,NOM_DIC
182  CHARACTER(LEN=24), PARAMETER :: CODE1='TELEMAC3D '
183  CHARACTER(LEN=PATH_LEN) MOTCAR_GAIA(maxkeyword)
184  CHARACTER(LEN=PATH_LEN) FILE_DESC_GAIA(4,maxkeyword)
185 !
186 !-----------------------------------------------------------------------
187 !
188 ! ARRAYS NEEDED TO CALL DAMOCLES
189 !
190  INTEGER ADRESS(4,maxkeyword),DIMEN(4,maxkeyword)
191  INTEGER MOTINT(maxkeyword),TROUVE(4,maxkeyword)
192  DOUBLE PRECISION MOTREA(maxkeyword)
193  LOGICAL MOTLOG(maxkeyword)
194  CHARACTER(LEN=72) MOTCLE(4,maxkeyword,2)
195  CHARACTER(LEN=PATH_LEN) DUMMY, DUMMY2
196  LOGICAL DOC
197  INTEGER :: ID_DICO, ID_CAS
198 !
199 ! LOCAL_NSUSP_TEL is a copy of nsusp_tel
200 ! (i.e. is the total number of suspended sediments) which is known
201 ! only after lecdon_gaia
202  INTEGER :: LOCAL_NSUSP_TEL
203  INTEGER :: DIMTOT
204 !
205 !-----------------------------------------------------------------------
206 !
207  INTRINSIC max,mod
208 !
209 !-----------------------------------------------------------------------
210 !
211  CHARACTER(LEN=2) CHAR2
212 !
213 !-----------------------------------------------------------------------
214 !
215  DO i=1,maxvar
216  mnemo(i) = repeat(' ',8)
217  mnem3(i) = repeat(' ',8)
218  ENDDO
219  WRITE(lu,102)
220 !
221 102 FORMAT(1x,/,19x, '********************************************',/,
222  & 19x, '* LECDON: *',/,
223  & 19x, '* BEFORE CALLING DAMOCLES *',/,
224  & 19x, '********************************************',/)
225 !
226 !-----------------------------------------------------------------------
227 ! 3D CASE, SO YES2D SET TO FALSE
228 !
229  yes2d=.false.
230 !
231 ! INITIALISATIONS TO CALL DAMOCLES:
232 ! STRINGS MUST BE EQUAL TO ' ' (ONE BLANK CHARACTER)
233 !
234  DO k=1,maxkeyword
235  motcar(k)(1:1)=' '
236  dimen(1,k) = 0
237  dimen(2,k) = 0
238  dimen(3,k) = 0
239  dimen(4,k) = 0
240  ENDDO
241 !
242 ! DO NOT PRINT THE DICTIONARY OUT
243 !
244  doc = .false.
245 !
246 !-----------------------------------------------------------------------
247 ! OPENS THE DICTIONARY AND STEERING FILES
248 !-----------------------------------------------------------------------
249 !
250  nom_dic=repeat(' ',path_len)
251  nom_cas=repeat(' ',path_len)
252  IF(ncar.GT.0) THEN
253 !
254  nom_dic=path(1:ncar)//'T3DDICO'
255  nom_cas=path(1:ncar)//'T3DCAS'
256 !
257  ELSE
258 !
259  nom_dic='T3DDICO'
260  nom_cas='T3DCAS'
261 !
262  ENDIF
263  IF((cas_file(1:1).NE.' ').AND.(dico_file(1:1).NE.' ')) THEN
264  nom_dic=dico_file
265  nom_cas=cas_file
266  ENDIF
267 !
268  CALL get_free_id(id_dico)
269  OPEN(id_dico,file=nom_dic,form='FORMATTED',action='READ')
270  CALL get_free_id(id_cas)
271  OPEN(id_cas,file=nom_cas,form='FORMATTED',action='READ')
272 !
273 !-----------------------------------------------------------------------
274 !
275  CALL damocle( adress , dimen , maxkeyword , doc , lng , lu ,
276  & motint , motrea , motlog , motcar , motcle ,
277  & trouve , id_dico, id_cas , .false. , file_desc )
278 !
279 !-----------------------------------------------------------------------
280 ! CLOSES THE DICTIONARY AND STEERING FILES
281 !-----------------------------------------------------------------------
282 !
283  CLOSE(id_dico)
284  CLOSE(id_cas)
285 !
286 ! DECODES THE SUBMIT STRINGS
287 !
288  CALL read_submit(t3d_files,maxlu_t3d,file_desc,maxkeyword)
289 !
290 !-----------------------------------------------------------------------
291 !
292 ! RETRIEVES FILES NUMBERS IN TELEMAC-3D FORTRAN PARAMETERS
293 !
294  DO i=1,maxlu_t3d
295  IF(t3d_files(i)%TELNAME.EQ.'T3DGEO') THEN
296  t3dgeo=i
297  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DCLI') THEN
298  t3dcli=i
299  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DPRE') THEN
300  t3dpre=i
301  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DRES') THEN
302  t3dres=i
303  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DFON') THEN
304  t3dfon=i
305  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DHYD') THEN
306  t3dhyd=i
307  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DFO1') THEN
308  t3dfo1=i
309  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DFO2') THEN
310  t3dfo2=i
311  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBI1') THEN
312  t3dbi1=i
313  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBI2') THEN
314  t3dbi2=i
315  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3ATMA') THEN
316  t3atma=i
317  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3ATMB') THEN
318  t3atmb=i
319  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBND') THEN
320  t3dbnd=i
321  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DL93') THEN
322  t3dl93 = i
323  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DSED') THEN
324  s3d_t3dsed=i
325  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DSUS') THEN
326  t3dsus=i
327  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DREF') THEN
328  t3dref=i
329  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DIMP') THEN
330  t3dimp=i
331  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL1') THEN
332  t3ddl1=i
333  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL2') THEN
334  t3ddl2=i
335  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL3') THEN
336  t3ddl3=i
337  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL4') THEN
338  t3ddl4=i
339  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL5') THEN
340  t3ddl5=i
341  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL6') THEN
342  t3ddl6=i
343  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL7') THEN
344  t3ddl7=i
345  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL8') THEN
346  t3ddl8=i
347  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DDL9') THEN
348  t3ddl9=i
349  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DL10') THEN
350  t3dl10=i
351  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DL11') THEN
352  t3dl11=i
353  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DPAR') THEN
354  t3dpar=i
355  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DVEF') THEN
356  t3dvef=i
357  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DRBI') THEN
358  t3drbi=i
359  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DRFO') THEN
360  t3drfo=i
361  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DMIG') THEN
362  t3dmig=i
363  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DRST') THEN
364  t3drst=i
365  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DHAR') THEN
366  t3dhar=i
367  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DTID') THEN
368  t3dtid=i
369  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBDD') THEN
370  t3dbdd=i
371  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBB1') THEN
372  t3dbb1=i
373  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBB2') THEN
374  t3dbb2=i
375  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DFLO') THEN
376  t3dflo=i
377  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBLO') THEN
378  t3dblo=i
379  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DS2D') THEN
380  t3ds2d=i
381  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DBUS') THEN
382  t3dbus=i
383  ELSEIF(t3d_files(i)%TELNAME.EQ.'T3DGTM') THEN
384  t3dgtm=i
385  ENDIF
386  ENDDO
387 !
388 !-----------------------------------------------------------------------
389 !
390 ! COUPLING IN BIEF DECLARATIONS
391  coupling = motcar(adress(4,62))(1:74)
392  CALL majus(coupling)
393 !
394 !-----------------------------------------------------------------------
395 !
396 ! READING FIRST 3 KEYWORDS THAT WILL BE DIMENSIONS TO ARRAYS THAT
397 ! WILL STORE OTHER KEYWORDS, THEN ALLOCATING THESE ARRAYS
398 !
399  maxfro = motint(adress(1,121))
400  maxsce = motint(adress(1,122))
401  maxtra = motint(adress(1,123))
402  maxblb = motint(adress(1,124))
403 !
404 ! ALLOCATING
405 !
406  ALLOCATE(frtype(maxfro))
407  ALLOCATE(debimp(maxfro))
408  ALLOCATE(cotimp(maxfro))
409  ALLOCATE(vitimp(maxfro))
410  ALLOCATE(flux_boundaries(maxfro))
411  ALLOCATE(tracer(maxtra*maxfro))
412  ALLOCATE(pts_curves(maxfro))
413  ALLOCATE(sta_dis_curves(maxfro))
414  ALLOCATE(profvel(maxfro))
415  ALLOCATE(verprovel(maxfro))
416  ALLOCATE(verprotra(maxfro*maxtra))
417  ALLOCATE(dirflu(0:maxfro))
418  ALLOCATE(okq3(maxfro))
419  ALLOCATE(oksl3(maxfro))
420  ALLOCATE(oktr3(maxfro,maxtra))
421  ALLOCATE(okvit3(maxfro))
422  ALLOCATE(bnd_tide(maxfro))
423  ALLOCATE(isce(maxsce))
424  ALLOCATE(ksce(maxsce))
425  ALLOCATE(xsce(maxsce))
426  ALLOCATE(ysce(maxsce))
427  ALLOCATE(zsce(maxsce))
428  ALLOCATE(qsce(maxsce))
429  ALLOCATE(qsce2(maxsce))
430  ALLOCATE(tasce(maxsce,maxtra))
431  ALLOCATE(usce(maxsce))
432  ALLOCATE(vsce(maxsce))
433  ALLOCATE(wsce(maxsce))
434  ALLOCATE(okdebsce(maxsce))
435  ALLOCATE(oktrsce(maxsce,maxtra))
436  ALLOCATE(schcta(maxtra))
437  ALLOCATE(train(maxtra))
438  ALLOCATE(trac0(maxtra))
439  ALLOCATE(t0ac(maxtra))
440  ALLOCATE(betac(maxtra))
441  ALLOCATE(dnutah(maxtra))
442  ALLOCATE(dnutav(maxtra))
443  ALLOCATE(s_adv(5+maxtra))
444  ALLOCATE(nom_adv(5+maxtra))
445  ALLOCATE(calcflu(5+maxtra))
446  ALLOCATE(calcrain(5+maxtra))
447  ALLOCATE(slvdta(maxtra))
448  ALLOCATE(nametrac(maxtra))
449  ALLOCATE(bedflo(maxblb))
450  ALLOCATE(bedqarea(maxblb))
451  ALLOCATE(optadv_tr(maxtra))
452 !
453 ! INITIALISING
454 !
455  DO k=1,maxfro
456  frtype(k)=1
457  profvel(k)=1
458  sta_dis_curves(k)=0
459  bnd_tide(k)=0
460  okq3(k)=.true.
461  oksl3(k)=.true.
462  okvit3(k)=.true.
463  ENDDO
464  DO itrac=1,maxtra
465  DO k=1,maxfro
466  oktr3(k,itrac)=.true.
467  ENDDO
468  ENDDO
469  DO k=1,maxsce
470  okdebsce(k)=.true.
471  ENDDO
472  DO itrac=1,maxtra
473  DO k=1,maxsce
474  oktrsce(k,itrac)=.true.
475  ENDDO
476  ENDDO
477  DO itrac=1,maxtra
478  dnutah(itrac)=1.d-6
479  dnutav(itrac)=1.d-6
480  schcta(itrac)=5
481  slvdta(itrac)%PRECON=2
482  slvdta(itrac)%SLV=1
483  betac(itrac)=0.d0
484  t0ac(itrac)=0.d0
485  ENDDO
486 !
487 !-----------------------------------------------------------------------
488 ! GETS VALUES ACCORDING TO THE KEYWORDS
489 !
490 ! INTEGER KEYWORDS
491 !
492  nit = max(motint(adress(1, 1)),0)
493  nplan = max(motint(adress(1, 2)),2)
494 !
495 ! THE NUMBER OF TRACERS DEPENDS ON VARIOUS ASPECTS INLCLUDING:
496 ! - WATER QUALITY PROCESSES
497 ! - OTHERS POSSIBLE
498 !
499 ! USER DEFINED NUMBER OF TRACERS
500  ntrac = max(motint(adress(1, 3)),0)
501 ! INITIALISES AND READS THE NAMES OF TRACERS
502  ntrtot=dimen(4,56)
503  IF( ntrtot.GT.ntrac ) ntrac = ntrtot
504  IF( ntrac.GT.0 ) THEN
505  DO i=1,ntrac
506  WRITE(char2,'(I2)') i
507  IF(lng.EQ.lng_fr) THEN
508  nametrac(i) = 'TRACEUR '//adjustl(char2)//' '
509  & // '?? '
510  ELSEIF(lng.EQ.lng_en) THEN
511  nametrac(i) = 'TRACER '//adjustl(char2)//' '
512  & // '?? '
513  ENDIF
514  ENDDO
515  ENDIF
516  IF( ntrtot.GT.0 ) THEN
517  DO i=1,ntrtot
518  nametrac(i) = motcar(adress(4,56)+i-1)(1:32)
519  ENDDO
520  ENDIF
521 !
522 ! INITIALISATION OF WAQ INDICES (REGARDELESS OF COUPLING)
523 !
524 ! TODO: DO THE SAME WITH S3D_SEDI
525 !
526  waqprocess = motint( adress(1,127) )
527  CALL nametrac_waqtel( nametrac,ntrac,1 )
528 !
529 ! SPECIFIC RULES BETWEEN PROCESSES OF WAQPROCESS
530 !
531 ! AED2 SHOULD BE USED TOGETHER WITH THERMAL PROCESSES AT LEAST
532  IF( inclus(coupling,'WAQTEL') ) THEN
533  IF( 13*int(waqprocess/13).EQ.waqprocess ) THEN
534 #if defined HAVE_AED2
535 ! READING OF THE AED2 STEERING FILE
536  CALL get_free_id(i)
538 #else
539  WRITE(lu,*) 'ERROR: AED2 LIBRARY NOT COMPILED'
540  CALL plante(1)
541  stop
542 #endif
543  ENDIF
544  ENDIF
545 !
546 ! SETTING OF WAQ INDICES (INCLUDING OF COUPLING)
547 !
548  IF( inclus(coupling,'WAQTEL') ) THEN
549  IF( waqprocess.NE.1 ) THEN
550  CALL nametrac_waqtel( nametrac,ntrac,waqprocess )
551  ELSE
552  WRITE(lu,*) 'COUPLING WITH WAQTEL IS ACTIVE AND YET'
553  WRITE(lu,*) ' THE PROCESS NUMBER IS NOT DEFINED'
554  CALL plante(1)
555  stop
556  ENDIF
557  ENDIF
558 !
559  ind_sed = 0
560  local_nsusp_tel = 0
561  IF( inclus(coupling,'GAIA') ) THEN
562  dummy = ' '
563  dummy2 = ' '
564  IF(PRESENT(gaia_cas_file)) THEN
565  dummy = gaia_cas_file
566  dummy2 = gaia_dico_file
567  ENDIF
568  ! This will increase ntrac by adding the tracer from gaia
569  ! It will also set ind_sed (which points to the first gaia
570  ! tracer)
571  CALL lecdon_telemac3d_gaia(motcar_gaia,file_desc_gaia,path,
572  & ncar,dummy,dummy2,local_nsusp_tel)
573  ENDIF
574 !
575 ! LOCATING TRACERS OF IMPORTANCE TO TELEMAC-3D
576 !
577  ind_t=0
578  ind_s=0
579  IF( ntrac.GT.0 ) THEN
580  DO i=1,ntrac
581  IF(nametrac(i)(1:11).EQ.'TEMPERATURE') ind_t = i
582  IF(nametrac(i)(1: 7).EQ.'SALINIT') ind_s = i
583  ENDDO
584  ENDIF
585 !
586  mixing = max(motint(adress(1, 4)),0)
587  nflot_max = max(motint(adress(1, 5)),0)
588  floprd = max(motint(adress(1, 6)),1)
589  graprd = max(motint(adress(1, 7)),1)
590  lisprd = max(motint(adress(1, 8)),1)
591  gradeb = max(motint(adress(1, 9)),0)
592  lisdeb = max(motint(adress(1,10)),0)
593  lisfon = max(motint(adress(1,11)),0)
594  nsousi = max(motint(adress(1,12)),1)
595 ! NPLINT = MAX(MIN(MOTINT(ADRESS(1,13)),NPLAN-1),1)
596  iturbv = motint(adress(1,14))
597  lisruf = motint(adress(1,15))
598  lisrul = motint(adress(1,16))
599  iordrh = motint(adress(1,17))
600 !
601  schcvi = motint(adress(1,18))
602 ! SCHEME FOR THE ADVECTION OF TRACERS, DEFAULT INITIALLY SET TO 5
603  IF(ntrac.GT.0) THEN
604  IF(dimen(1,19).LT.ntrac.AND.dimen(1,19).GT.0) THEN
605  DO k=1,dimen(1,19)
606  schcta(k) = motint(adress(1,19)+k-1)
607  ENDDO
608 ! COMPLETING WITH THE LAST VALUE GIVEN
609  DO k=dimen(1,19)+1,ntrac
610  schcta(k) = motint(adress(1,19)+dimen(1,19)-1)
611  ENDDO
612  ELSEIF(dimen(1,19).EQ.ntrac) THEN
613  DO k=1,ntrac
614  schcta(k) = motint(adress(1,19)+k-1)
615  ENDDO
616  ENDIF
617  ENDIF
618 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN SCHCTA
619  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
620  DO k=ind_sed,ind_sed+local_nsusp_tel-1
621  isusp=k-ind_sed+1
623  ENDDO
624  ENDIF
625 !
626 ! IF MICROPOL MODULE IS ACTIVATED, TRACERS BOTTOM SEDIMENT (IND_SF)
627 ! AND MICROPOLLUTANT ADSORBED BY BOTTOM SEDIMENT (IND_CSF)
628 ! ARE NEITHER ADVECTED NOR DIFFUSED (NO DIFFUSION DONE IN TELEMAC3D)
629 !
630  IF(inclus(coupling,'WAQTEL').AND.
631  & 7*int(waqprocess/7).EQ.waqprocess) THEN
632  schcta(ind_sf) = 0
633  schcta(ind_csf) = 0
634  ENDIF
635 !
636  damping = motint(adress(1,20))
637  schcke = motint(adress(1,21))
638  schch = motint(adress(1,22))
639  schdvi = motint(adress(1,23))
640  schdta = motint(adress(1,24))
641 !
642 ! POSSIBLE CHANGE IN SCHDTA IF SEDIMENTS
643  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
644  temp_schdta = schdta
645  schdta = schdsed
646  IF(ind_sed.GT.1.AND.temp_schdta.NE.schdta) THEN
647 ! CASE WITH TRACERS AND SEDIMENTS AT THE SAME TIME
648  WRITE(lu,*) '!!! WARNING !!!'
649  WRITE(lu,*) 'DIFFERENT VALUES FOR SCHEME FOR DIFFUSION:'
650  WRITE(lu,*) temp_schdta,' FOR TRACERS'
651  WRITE(lu,*) schdta,' FOR SEDIMENTS.'
652  WRITE(lu,*) 'ONLY THE VALUE FOR SEDIMENTS IS KEPT'
653  ENDIF
654  ENDIF
655 !
656  kfrotl = motint(adress(1,25))
657  schdke = motint(adress(1,26))
658 !
659  slvdvi%PRECON = motint(adress(1,27))
660  IF(ntrac.GT.0) THEN
661  IF(dimen(1,28).LT.ntrac.AND.dimen(1,28).GT.0) THEN
662  DO k=1,dimen(1,28)
663  slvdta(k)%PRECON = motint(adress(1,28)+k-1)
664  ENDDO
665  ELSEIF(dimen(1,28).EQ.ntrac) THEN
666  DO k=1,ntrac
667  slvdta(k)%PRECON = motint(adress(1,28)+k-1)
668  ENDDO
669 ! ELSE = 2 (DEFAULT VALUE), SEE ABOVE
670  ENDIF
671  ENDIF
672  s3d_slvdse%NITMAX = motint(adress(1,29))
673  slvdke%PRECON = motint(adress(1,30))
674  slvpro%PRECON = motint(adress(1,31))
675 ! SLVW%PRECON = MOTINT(ADRESS(1,32))
676 !
677  slvdvi%SLV = motint(adress(1,33))
678  IF(ntrac.GT.0) THEN
679  IF(dimen(1,34).LT.ntrac.AND.dimen(1,34).GT.0) THEN
680  DO k=1,dimen(1,34)
681  slvdta(k)%SLV = motint(adress(1,34)+k-1)
682  ENDDO
683  ELSEIF(dimen(1,34).EQ.ntrac) THEN
684  DO k=1,ntrac
685  slvdta(k)%SLV = motint(adress(1,34)+k-1)
686  ENDDO
687 ! ELSE = 1 (DEFAULT VALUE), SEE ABOVE
688  ENDIF
689  ENDIF
690  percou_wac = motint(adress(1,35))
691  slvdke%SLV = motint(adress(1,36))
692  slvpro%SLV = motint(adress(1,37))
693 ! SLVW%SLV = MOTINT(ADRESS(1,38))
694 !
695  slvdvi%NITMAX = motint(adress(1,39))
696  slvdta(1)%NITMAX = motint(adress(1,40))
697  IF(ntrac.GT.1) THEN
698  DO k=2,ntrac
699  slvdta(k)%NITMAX = slvdta(1)%NITMAX
700  ENDDO
701  ENDIF
702 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN SLVDTA
703  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
704  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
705  isusp=itrac-ind_sed+1
706  slvdta(itrac)%SLV=slvsed(isusp)%SLV
707  slvdta(itrac)%PRECON=slvsed(isusp)%PRECON
708  slvdta(itrac)%NITMAX=slvsed(isusp)%NITMAX
709  ENDDO
710  ENDIF
711 
712 
713  percou_sis = motint(adress(1,41))
714  slvdke%NITMAX = motint(adress(1,42))
715  slvpro%NITMAX = motint(adress(1,43))
716 ! SLVW%NITMAX = MOTINT(ADRESS(1,44))
717 !
718 ! NCSIZE = MOTINT(ADRESS(1,45))
719 ! NUMBER OF PROCESSORS (ALREADY IN INIT_FILES2; MUST BE THE
720 ! SAME, BUT IT CAN (ERRONEOUSLY) BE DIFFERENT WHEN COUPLING).
721  IF(ncsize.NE.motint(adress(1,45))) THEN
722  WRITE(lu,*) 'DIFFERENT NUMBER OF PARALLEL PROCESSORS:'
723  WRITE(lu,*) 'DECLARED BEFORE (CASE OF COUPLING ?):',ncsize
724  WRITE(lu,*) 'TELEMAC-2D :',motint(adress(1,45))
725  WRITE(lu,*) 'VALUE ',ncsize,' IS KEPT'
726  ENDIF
727 !
728  trbavi = motint(adress(1,46))
729  trbata = motint(adress(1,47))
730  bc_bottom = motint(adress(1,48))
731  trbake = motint(adress(1,49))
732 !
733 ! NEW ONES 60,61 (50++ FOR SEDIMENT)
734 !
735  lvmac = motint(adress(1,61))
736  npriv = motint(adress(1,62))
737  kfrot = motint(adress(1,64))
738  s3d_ncouch= motint(adress(1,65))
739 !
740 ! NUMBER OF DIRECTIONS FOR DIFFERENTIATED VARIABLES
741  ad_numofdir = motint( adress(1,69) )
742 !
743 ! NON-HYDROSTATIC
744 !
745  slvpoi%PRECON = motint( adress(1,71) )
746  slvpoi%SLV = motint( adress(1,72) )
747  slvpoi%NITMAX = motint( adress(1,73) )
748 !
749 ! FOLLOWING LINES ARE DONE LATER
750 ! SLVDVI%KRYLOV = MOTINT( ADRESS(1,74) )
751 ! SLVDTA(1)%KRYLOV = MOTINT( ADRESS(1,75) )
752 ! SLVDKE%KRYLOV = MOTINT( ADRESS(1,76) )
753 ! SLVPRO%KRYLOV = MOTINT( ADRESS(1,77) )
754 ! SLVPRJ NO MORE USED
755 ! SLVPRJ%PRECON = MOTINT( ADRESS(1,78) )
756 ! SLVPRJ%SLV = MOTINT( ADRESS(1,79) )
757 ! SLVPRJ%NITMAX = MOTINT( ADRESS(1,80) )
758 ! FOLLOWING LINE IS DONE LATER
759 ! SLVPOI%KRYLOV = MOTINT( ADRESS(1,81) )
760  start_record = motint( adress(1,82) )
761 ! FOLLOWING LINES ARE DONE LATER
762 ! SLVPRJ%KRYLOV = MOTINT( ADRESS(1,83) )
763 ! S3D_SLVDSE%KRYLOV = MOTINT( ADRESS(1,84) )
764  iturbh = motint( adress(1,85) )
765  protyp = motint( adress(1,86) )
766  protyp0 = protyp
767  optass = motint( adress(1,87) )
768  optass2d = optass
769 ! ?????? = MOTINT( ADRESS(1,88) )
770 ! ?????? = MOTINT( ADRESS(1,88) + 1 )
771  denlaw = motint( adress(1,89) )
772  optban = motint( adress(1,90) )
773  mardat(1) = motint( adress(1,91) )
774  mardat(2) = motint( adress(1,91) + 1 )
775  mardat(3) = motint( adress(1,91) + 2 )
776  martim(1) = motint( adress(1,92) )
777  martim(2) = motint( adress(1,92) + 1 )
778  martim(3) = motint( adress(1,92) + 2 )
779 ! COMPUTING OFFSET IN SECOND FROM DATE
780  IF(any(mardat.NE.0).OR.any(martim.NE.0)) THEN
782  ELSE
783  tel_offset = 0.d0
784  ENDIF
785 ! HYDSTEP = MOTINT( ADRESS(1,94) )
786  nbuse = motint( adress(1,58) )
787  optbuse = motint( adress(1,57) )
788  dirflu(0)=0
789  DO k=1,maxfro
790  profvel(k)=1
791  dirflu(k)=1
792  verprovel(k)=1
793  sta_dis_curves(k)=0
794  ENDDO
795  DO k=1,maxfro*maxtra
796  verprotra(k)=1
797  ENDDO
798  IF(dimen(1,95).GT.0) THEN
799  DO k=1,dimen(1,95)
800  profvel(k) = motint( adress(1,95) + k-1 )
801  ENDDO
802  ENDIF
803  transf= motint( adress(1,96) )
804  itrac_amr = motint( adress(1,32) )
805 !
806  IF(dimen(1,97).GT.0) THEN
807  DO k=1,dimen(1,97)
808  dirflu(k) = motint( adress(1,97) + k-1 )
809  ENDDO
810  ENDIF
811  IF(dimen(1,98).GT.0) THEN
812  DO k=1,dimen(1,98)
813  verprovel(k) = motint( adress(1,98) + k-1 )
814  ENDDO
815  ENDIF
816  IF(dimen(1,99).GT.0) THEN
817  DO k=1,dimen(1,99)
818  verprotra(k) = motint( adress(1,99) + k-1 )
819  ENDDO
820  ENDIF
821  IF(inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
822 ! SEDIMENT VERTICAL PROFILES ADDED TO TRACER VERTICAL PROFILES
823  dimtot=dimen(1,99)+nverprosed
824  DO i=1,dimtot
825  IF(i.GT.dimen(1,99)) THEN
826  verprotra(i)=verprosed(i-dimen(1,99))
827  ENDIF
828  ENDDO
829  ENDIF
830  optsup(1)=1
831  IF(dimen(1,100).GT.0) THEN
832  DO k=1,max(dimen(1,100),4)
833  optsup(k) = motint( adress(1,100) + k-1 )
834  ENDDO
835  ENDIF
836 ! SO FAR THE SUPG MATRIX IS THE SAME FOR ALL ADVECTIONS
837 ! SEE IN PRECON
838 ! OPTSUP(2)=OPTSUP(1) (THIS IS DEPTH, NO LONGER USED)
839  optsup(3)=optsup(1)
840  optsup(4)=optsup(1)
841  waqprd=motint( adress(1,101) )
842 ! KEYWORD: ORIGIN COORDINATES, GOT WITH GET_MESH_ORIG IN TELEMAC2D_INIT
843 ! I_ORIG = MOTINT( ADRESS(1,102) )
844 ! J_ORIG = MOTINT( ADRESS(1,102)+1 )
845 ! KEYWORD: STAGE-DISCHARGE CURVES
846  IF(dimen(1,103).NE.0) THEN
847  DO k=1,dimen(1,103)
848  sta_dis_curves(k) = motint( adress(1,103) + k-1 )
849  ENDDO
850  ENDIF
851 ! KEYWORD: DEBUGGER
852  debug = motint( adress(1,104) )
853 ! KEYWORD: RECORD IN THE WAVE DRIVEN CURRENTS FILE
854  npth = motint( adress(1,105) )
855 ! KEYWORD: TREATMENT OF NEGATIVE DEPTHS
856  opt_hneg = motint( adress(1,106) )
857 ! KEYWORD: SKIN FRICTION
858  s3d_icr= motint( adress(1,107) )
859 !
860  s3d_icq= motint( adress(1,108) )
861  IF(s3d_icq.NE.1.AND.s3d_icq.NE.3) THEN
862  WRITE(lu,1402) s3d_icq
863 1402 FORMAT('ERROR ON THE REFERENCE CONCENTRATION: ',1i3)
864  CALL plante(1)
865  stop
866  ENDIF
867 !
868  DO k=1,maxfro
869  frtype(k)=1
870  ENDDO
871  thomfr=.false.
872  IF(dimen(1,109).GT.0) THEN
873  DO k=1,dimen(1,109)
874  frtype(k) = motint( adress(1,109) + k-1 )
875  IF(frtype(k).EQ.2) thomfr=.true.
876  ENDDO
877  ENDIF
878 ! KEYWORD: VERTICAL VELOCITY DERIVATIVES
879  linlog = motint( adress(1,110) )
880 ! OPTION FOR TIDAL BOUNDARY CONDITIONS (TIDALTYPE IS DEDUCED FROM BND_TIDE)
881  tidaltype=0
882 ! NFRLIQ IS INITILIASED HERE AND WILL BE CHECKED WHEN FRONT2 IS CALLED
883  nfrliq=dimen(1,111)
884  IF(dimen(1,111).GT.0) THEN
885  DO k=1,dimen(1,111)
886  bnd_tide(k) = motint( adress(1,111) + k-1 )
888  ENDDO
889  ENDIF
890 ! INPUT TIDAL DATA BASE
891  tidaldb = motint(adress(1,112))
892 ! GEOGRAPHIC SYSTEM IN WHICH THE NUMERICAL MODEL IS BUILT (TIDAL MODEL)
893  geosyst = motint(adress(1,113))
894 ! ZONE NUMBER WHEN USING A PLANE PROJECTION,
895 ! ASSOCIATED TO GEOGRAPHIC SYSTEM (TIDAL MODEL)
896  numzone = motint(adress(1,114))
897 ! MAXIMUM NUMBER OF ITERATIONS FOR ADVECTION SCHEMES
898  maxadv = motint(adress(1,115))
899 ! OPTION FOR CHARACTERISTICS
900  optcha = motint(adress(1,116))
901 ! MAXIMUM NUMBER OF GAUSS POINTS FOR WEAK CHARACTERISTICS
902  ngauss = motint(adress(1,117))
903 ! NUMBER OF 2D PRIVATE ARRAYS
904  npriv2d = motint(adress(1,118))
905 ! TBE + CV
906  s3d_hind_type= motint(adress(1,125))
907  s3d_floc_type= motint(adress(1,126))
908 ! OPTION OF ATMOSPHERE-WATER EXCHANGE MODEL
909 ! CHANGED TO WAQTEL
910 ! ATMOSEXCH = MOTINT(ADRESS(1,50))
911 ! NUMBERS OF THE POINT TO CALIBRATE HIGH WATER (SCHEMATIC TIDES)
912  icalhwb = motint(adress(1,119))
913  icalhwg = motint(adress(1,120))
914 ! OPTION FOR THE COMPUTATION OF THE LATERAL BOUNDARY CONDITIONS OF K
915  optbcke = motint(adress(1,56))
916 ! OPTION FOR WIND MANAGEMENT
917  optwind = motint(adress(1,60))
918 !
919 ! KEYWORD 57 BY JACQUES, TO BE MERGED
920 !
921 ! SCHEME OPTION FOR ADVECTION OF VELOCITIES
922  optadv_vi=1
923  IF(schcvi.EQ.1) THEN
924 ! CHARACTERISTICS
926  ELSEIF(schcvi.EQ.2) THEN
927 ! SUPG
928  optadv_vi=optsup(1)
929  ENDIF
930 ! SCHEME OPTION FOR ADVECTION OF VELOCITIES
931 ! HAS PRIORITY WHEN PRESENT
932  IF(trouve(1,59).EQ.2) THEN
933  optadv_vi = motint(adress(1,59))
934 ! WEAK CHARACTERISTICS MEMORY ALLOCATIONS ARE TRIGGERED BY OPTCHA
935  IF(schcvi.EQ.1.AND.optadv_vi.EQ.2) optcha=2
936  ENDIF
937 ! SCHEME OPTION FOR ADVECTION OF K-EPSILON
938  optadv_ke=1
939  IF(schcke.EQ.1) THEN
940 ! CHARACTERISTICS
942  ELSEIF(schcke.EQ.2) THEN
943 ! SUPG
944  optadv_ke=optsup(4)
945  ENDIF
946 ! SCHEME OPTION FOR ADVECTION OF K-EPSILON
947 ! HAS PRIORITY WHEN PRESENT
948  IF(trouve(1,63).EQ.2) THEN
949  optadv_ke = motint(adress(1,63))
950 ! WEAK CHARACTERISTICS MEMORY ALLOCATIONS ARE TRIGGERED BY OPTCHA
951  IF(schcke.EQ.1.AND.optadv_ke.EQ.2) optcha=2
952  ENDIF
953 !
954 ! SCHEME OPTION FOR ADVECTION OF TRACERS
955  IF(ntrac.GT.0) THEN
956 ! IF SCHEME OPTION FOR ADVECTION OF TRACERS NOT PRESENT
957 ! VALUES TAKEN FROM PREVIOUSLY USED KEYWORDS
958  DO itrac=1,ntrac
959  ! DEFAULT VALUE CHANGED IN V8P1 FROM 1 (EXPLICIT) TO 4 (IMPLICIT)
960  optadv_tr(itrac)=4
961  IF(schcta(itrac).EQ.1) THEN
962 ! CHARACTERISTICS
963  optadv_tr(itrac)=optcha
964  ELSEIF(schcta(itrac).EQ.2) THEN
965 ! SUPG
966  optadv_tr(itrac)=optsup(3)
967  ENDIF
968  ENDDO
969 ! SCHEME OPTION FOR ADVECTION OF TRACERS
970 ! HAS PRIORITY WHEN PRESENT
971  IF(trouve(1,66).EQ.2) THEN
972  DO itrac=1,min(ntrac,dimen(1,66))
973  optadv_tr(itrac) = motint(adress(1,66)+itrac-1)
974 ! WEAK CHARACTERISTICS MEMORY ALLOCATIONS TRIGGERED BY OPTCHA
975  IF(schcta(itrac).EQ.1.AND.optadv_tr(itrac).EQ.2) optcha=2
976  ENDDO
977 ! MISSING VALUES COMPLETED WITH LAST VALUE GIVEN
978  IF(dimen(1,66).LT.ntrac) THEN
979  DO itrac=dimen(1,66)+1,ntrac
980  optadv_tr(itrac) = motint(adress(1,66)+dimen(1,66)-1)
981 ! WEAK CHARACTERISTICS MEMORY ALLOCATIONS TRIGGERED BY OPTCHA
982  IF(schcta(itrac).EQ.1.AND.optadv_tr(itrac).EQ.2) THEN
983  optcha=2
984  ENDIF
985  ENDDO
986  ENDIF
987  ENDIF
988  ENDIF
989 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN OPTADV_TR
990 !
991  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
992  DO k=ind_sed,ind_sed+local_nsusp_tel-1
993  isusp=k-ind_sed+1
995  IF(schcta(k).EQ.1) THEN
996 ! CHARACTERISTICS
997  optadv_tr(k)=optcha
998  ELSEIF(schcta(k).EQ.2) THEN
999 ! SUPG
1000  optadv_tr(k)=optsup(3)
1001  ENDIF
1002  IF(schcta(k).EQ.1.AND.optadv_tr(k).EQ.2) optcha=2
1003  ENDDO
1004  ENDIF
1005 !
1006 ! NUMBER OF CORRECTIONS OF DISTRIBUTIVE SCHEMES
1007  nco_dist = motint(adress(1,67))
1008 ! NUMBER OF SUB-STEPS OF DISTRIBUTIVE SCHEMES
1009  nsp_dist = motint(adress(1,68))
1010 !
1011 ! REAL KEYWORDS
1012 !
1013  dt = motrea(adress(2, 1))
1014  grav = motrea(adress(2, 2))
1015  fcor = motrea(adress(2, 3))
1016  fair = motrea(adress(2, 4))
1017  cst_windx = motrea(adress(2, 5))
1018  cst_windy = motrea(adress(2, 6))
1019 !
1020  IF(ntrac.GT.0) THEN
1021  IF(trouve(2,8).EQ.2.AND.dimen(2,8).EQ.ntrac) THEN
1022  DO i=1,ntrac
1023  betac(i) = motrea(adress(2, 8)+i-1)
1024  ENDDO
1025  ELSEIF(denlaw.EQ.4) THEN
1026  WRITE(lu,*) 'WITH DENSITY LAW = 4 GIVE THE KEY-WORD'
1027  WRITE(lu,*) 'BETA EXPANSION COEFFICIENT FOR TRACERS'
1028  WRITE(lu,*) 'FOR ALL TRACERS'
1029  CALL plante(1)
1030  stop
1031  ENDIF
1032  IF(trouve(2,9).EQ.2.AND.dimen(2,9).GE.ntrac) THEN
1033  DO i=1,ntrac
1034  t0ac(i) = motrea(adress(2, 9)+i-1)
1035  ENDDO
1036  ELSEIF(denlaw.EQ.4) THEN
1037  WRITE(lu,*) 'WITH DENSITY LAW = 4 GIVE THE KEY-WORD'
1038  WRITE(lu,*) 'STANDARD VALUE FOR TRACERS'
1039  WRITE(lu,*) 'FOR ALL TRACERS'
1040  CALL plante(1)
1041  stop
1042  ENDIF
1043  ENDIF
1044 !
1045  rho0 = motrea(adress(2,10))
1046  rugof0 = motrea(adress(2,11))
1047  rugol0 = motrea(adress(2,12))
1048 !
1049  IF(kfrot.NE.0.AND.trouve(2,11).NE.2) THEN
1050  WRITE(lu,2717) kfrot
1051 2717 FORMAT(1x,'THE LAW OF BOTTOM FRICTION ',1i2,' IS ASKED',/,1x,
1052  & 'GIVE THE CORRESPONDING FRICTION COEFFICIENT')
1053  CALL plante(1)
1054  stop
1055  ELSEIF(trouve(1,64).NE.2) THEN
1056  WRITE(lu,2719)
1057 2719 FORMAT(1x,'NO FRICTION LAW IS PRESCRIBED!')
1058  CALL plante(1)
1059  stop
1060  ENDIF
1061 !
1062 ! (...THE SAME ZERO FOR ALL SOLVERS...)
1063 !
1064  slvdvi%ZERO = motrea(adress(2,13))
1065  slvdta(1)%ZERO = motrea(adress(2,13))
1066  IF(ntrac.GT.1) THEN
1067  DO k=2,ntrac
1068  slvdta(k)%ZERO = slvdta(1)%ZERO
1069  ENDDO
1070  ENDIF
1071 ! NO KEY-WORD FOR THIS ONE
1072  s3d_slvdse%ZERO = slvdta(1)%ZERO
1073  slvdke%ZERO = motrea(adress(2,13))
1074  slvpro%ZERO = motrea(adress(2,13))
1075 ! SLVW%ZERO = MOTREA(ADRESS(2,13))
1076  slvpoi%ZERO = motrea(adress(2,13))
1077 ! SLVPRJ%ZERO = MOTREA(ADRESS(2,13))
1078 !
1079  hmin = motrea(adress(2,14))
1080  haulin = motrea(adress(2,15))
1081  dnuvih = motrea(adress(2,16))
1082  dnuviv = motrea(adress(2,17))
1083 !
1084  IF(ntrac.GT.0) THEN
1085  IF(trouve(2,18).GE.1.AND.dimen(2,18).EQ.ntrac) THEN
1086  DO i=1,ntrac
1087  dnutah(i) = motrea(adress(2,18)+i-1)
1088  ENDDO
1089  ELSEIF(trouve(2,18).GE.1.AND.
1090  & dimen(2,18).LT.ntrac.AND.dimen(2,18).GT.0) THEN
1091 ! READING WHAT HAS BEEN GIVEN
1092  DO i=1,dimen(2,18)
1093  dnutah(i) = motrea(adress(2,18)+i-1)
1094  ENDDO
1095 ! COMPLETING WITH THE LAST GIVEN
1096  DO i=dimen(2,18)+1,ntrac
1097  dnutah(i) = motrea(adress(2,18)+dimen(2,18)-1)
1098  ENDDO
1099  ENDIF
1100  IF(trouve(2,19).GE.1.AND.dimen(2,19).EQ.ntrac) THEN
1101  DO i=1,ntrac
1102  dnutav(i) = motrea(adress(2,19)+i-1)
1103  ENDDO
1104  ELSEIF(trouve(2,19).GE.1.AND.
1105  & dimen(2,19).LT.ntrac.AND.dimen(2,19).GT.0) THEN
1106 ! READING WHAT HAS BEEN GIVEN
1107  DO i=1,dimen(2,19)
1108  dnutav(i) = motrea(adress(2,19)+i-1)
1109  ENDDO
1110 ! COMPLETING WITH THE LAST GIVEN
1111  DO i=dimen(2,19)+1,ntrac
1112  dnutav(i) = motrea(adress(2,19)+dimen(2,19)-1)
1113  ENDDO
1114  ENDIF
1115  ENDIF
1116 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN DNUTAH AND DNUTAV
1117  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1118  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
1119  isusp=itrac-ind_sed+1
1120  dnutah(itrac)=dnusedh(isusp)
1121  dnutav(itrac)=dnusedv(isusp)
1122  ENDDO
1123  ENDIF
1124 !
1125 !
1126  IF(ntrac.GT.0) THEN
1127  IF(trouve(2,20).EQ.2.AND.dimen(2,20).GE.ntrac) THEN
1128  DO i=1,ntrac
1129  trac0(i) = motrea(adress(2,20)+i-1)
1130  ENDDO
1131  ELSEIF(ind_sed.EQ.0) THEN
1132  WRITE(lu,*) 'GIVE THE KEY-WORD'
1133  WRITE(lu,*) 'INITIAL VALUES OF TRACERS'
1134  WRITE(lu,*) 'FOR ALL TRACERS'
1135  CALL plante(1)
1136  stop
1137  ENDIF
1138  ENDIF
1139 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN TRAC0
1140  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1141  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
1142  isusp=itrac-ind_sed+1
1143  trac0(itrac)=sed0(isusp)
1144  ENDDO
1145  ENDIF
1146 !
1147  s3d_slvdse%EPS = motrea(adress(2,21))
1148  slvdvi%EPS = motrea(adress(2,22))
1149  slvdta(1)%EPS = motrea(adress(2,23))
1150  IF(ntrac.GT.1) THEN
1151  DO k=2,ntrac
1152  slvdta(k)%EPS = slvdta(1)%EPS
1153  ENDDO
1154  ENDIF
1155 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN SLVDTA
1156  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1157  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
1158  isusp=itrac-ind_sed+1
1159  slvdta(itrac)%EPS=slvsed(isusp)%EPS
1160  ENDDO
1161  ENDIF
1162  hlim = motrea(adress(2,24))
1163  s3d_hsed = motrea(adress(2,36)) ! CV
1164  slvdke%EPS = motrea(adress(2,25))
1165  slvpro%EPS = motrea(adress(2,26))
1166 ! SLVW%EPS = MOTREA(ADRESS(2,27))
1167 !
1168  tetah = motrea(adress(2,28))
1169  tetau = motrea(adress(2,29))
1170  aggloh = motrea(adress(2,30))
1171  agglou = motrea(adress(2,31))
1172 !
1173 ! VALUES OF TRACERS IN THE RAIN
1174 !
1175  IF(ntrac.GT.0) THEN
1176  DO i=1,ntrac
1177  train(i) = 0.d0
1178  ENDDO
1179  IF(trouve(2,32).EQ.2) THEN
1180  DO i=1,dimen(2,32)
1181  train(i) = motrea(adress(2,32)+i-1)
1182  ENDDO
1183  ENDIF
1184 ! RAIN TEMPERATURE SHOULD BE AT LEAST 1 DEGREE
1185  IF(ind_t.NE.0) THEN
1186  train(ind_t) = max(train(i),1.d0)
1187  ENDIF
1188  ENDIF
1189 !
1190  ndebit=dimen(2,33)
1191  DO i=1,ndebit
1192  debimp(i) = motrea(adress(2,33)+i-1)
1193  ENDDO
1194 !
1195  ncote=dimen(2,34)
1196  DO i=1,ncote
1197  cotimp(i) = motrea(adress(2,34)+i-1)
1198  ENDDO
1199 !
1200  nvit=dimen(2,35)
1201  DO i=1,nvit
1202  vitimp(i) = motrea(adress(2,35)+i-1)
1203  ENDDO
1204 !
1205 ! MINIMUM VOLUMES, DISTANCE BETWEEN PLANES AND HEIGHT FOR 3D ELEMENTS
1206 !
1207  minimum_volume = motrea(adress(2,37))
1208  dismin_bot = motrea(adress(2,38))
1209  dismin_sur = motrea(adress(2,39))
1210  min_dz = motrea(adress(2,40))
1211 !
1212  hmin_vit_ic = motrea(adress(2,41))
1213  hmin_vit_bc = motrea(adress(2,42))
1214 !
1215 ! BED BOUNDARY CONDITIONS
1216 !
1217  bedbou=motlog( adress(3,68) )
1218  IF(bedbou) THEN
1219  nbedflo=dimen(2,68)
1220  DO i=1,nbedflo
1221  bedflo(i) = motrea(adress(2,68)+i-1)
1222  ENDDO
1223  ENDIF
1224 !
1225 !
1226 ! CHECKING THE SIZE OF KEY-WORD TREATMENT OF FLUXES AT THE BOUNDARIES
1227 ! SOME USERS THINK IT IS A SINGLE VALUE FOR ALL BOUNDARIES
1228 !
1229  IF(trouve(1,97).EQ.2.AND.
1230  & dimen(1,97).LT.max(ndebit,ncote,nvit)) THEN
1231  WRITE(lu,*) 'THE KEY-WORD'
1232  WRITE(lu,*) 'TREATMENT OF FLUXES AT THE BOUNDARIES'
1233  WRITE(lu,*) 'MUST BE A LIST OF ',
1234  & max(ndebit,ncote,nvit),
1235  & ' VALUES AT LEAST'
1236  CALL plante(1)
1237  stop
1238  ENDIF
1239 !
1240 ! CV : TURBULENCE MODEL CONSTANTS
1241 ! 7.0
1242  karman= motrea( adress(2, 65) )
1243  prandtl= motrea( adress(2, 66) )
1244  fict = motrea( adress(2, 67) )
1245 !
1246 ! NON-HYDROSTATIC
1247 !
1248  slvpoi%EPS = motrea( adress(2, 71) )
1249 ! FOR MOTREA( ADRESS(2, 72) ) SEE AFTER REAL 87
1250 ! SLVPRJ%EPS = MOTREA( ADRESS(2, 73) )
1251 ! ????? = MOTREA( ADRESS(2, 74) )
1252 ! PHILAT = MOTREA( ADRESS(2, 75) )
1253 ! DELTA = MOTREA( ADRESS(2, 76) )
1254  latit = motrea( adress(2, 77) )
1255  longit = motrea( adress(2, 78) )
1256  nord = motrea( adress(2, 79) )
1257 !
1258 ! THE NUMBER OF SOURCES IS CONSIDERED TO BE THE NUMBER OF
1259 ! ABSCISSAE GIVEN
1260 !
1261  nptsce=dimen(2,80)
1262  IF(dimen(2,80).EQ.0) nptsce=dimen(2,83)
1263  nsce = nptsce + 2*nbuse
1264 !
1265  IF(dimen(2,83).EQ.nptsce) THEN
1266  DO i=1,nptsce
1267  qsce(i) = motrea(adress(2,83)+i-1)
1268  ENDDO
1269  ELSE
1270  WRITE(lu,*) 'WRONG NUMBER OF DISCHARGES OF SOURCES'
1271  CALL plante(1)
1272  stop
1273  ENDIF
1274 !
1275  nrejeti=dimen(1,70)
1276  IF(nrejeti.GT.0) THEN
1277 ! SOURCES GIVEN BY GLOBAL NODE NUMBERS
1278  IF(nrejeti.NE.nptsce) THEN
1279  WRITE(lu,194)
1280  WRITE(lu,*) dimen(2,83),' DISCHARGE OF SOURCES GIVEN'
1281  WRITE(lu,*) nrejeti,' NODE NUMBERS FOR SOURCES FOUND '
1282  WRITE(lu,195)
1283  CALL plante(1)
1284  stop
1285  ELSE
1286  DO i=1,nrejeti
1287  isce(i)=motint(adress(1,70)+i-1)
1288  ENDDO
1289  ENDIF
1290  ELSE
1291 ! SOURCES GIVEN BY COORDINATES
1292  DO i=1,nptsce
1293  xsce(i) = motrea(adress(2,80)+i-1)
1294  ENDDO
1295 !
1296  IF(dimen(2,81).EQ.nptsce) THEN
1297  DO i=1,nptsce
1298  ysce(i) = motrea(adress(2,81)+i-1)
1299  ENDDO
1300  ELSE
1301  WRITE(lu,*) 'WRONG NUMBER OF ORDINATES OF SOURCES'
1302  CALL plante(1)
1303  stop
1304  ENDIF
1305 !
1306  ENDIF
1307  IF(dimen(2,82).EQ.nptsce) THEN
1308  DO i=1,nptsce
1309  zsce(i) = motrea(adress(2,82)+i-1)
1310  ENDDO
1311  ELSE
1312  WRITE(lu,*) 'WRONG NUMBER OF ELEVATIONS OF SOURCES'
1313  CALL plante(1)
1314  stop
1315  ENDIF
1316 !
1317 !
1318  IF(ntrac.GT.0.AND.nptsce.GT.0) THEN
1319  dimtot=dimen(2,84)
1320  IF(inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1321  dimtot=dimen(2,84)+nsedsce
1322  ENDIF
1323  IF(dimtot.NE.ntrac*nptsce) THEN
1324  WRITE(lu,*) 'WRONG NUMBER OF'
1325  WRITE(lu,*) 'VALUE OF THE TRACERS AT THE SOURCES'
1326  WRITE(lu,*) dimen(2,84),' GIVEN'
1327  WRITE(lu,*) ntrac*nptsce,' EXPECTED'
1328  CALL plante(1)
1329  stop
1330  ENDIF
1331  IF(ind_sed.EQ.0) THEN
1332  DO i=1,ntrac
1333  DO j=1,nptsce
1334  tasce(j,i) = motrea(adress(2,84)+((j-1)*ntrac)+i-1)
1335  ENDDO
1336  ENDDO
1337  ELSE
1338  DO itrac=1,ntrac-local_nsusp_tel
1339  DO j=1,nptsce
1340  tasce(j,itrac)=motrea(adress(2,84)+(j-1)*
1341  & (ntrac-local_nsusp_tel)+itrac-1)
1342  ENDDO
1343  ENDDO
1344 ! ADDING VALUES OF SUSPENDED SEDIMENTS
1345  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
1346  isusp=itrac-ind_sed+1
1347  DO j=1,nptsce
1348  tasce(j,itrac)=sedsce(j,isusp)
1349  ENDDO
1350  ENDDO
1351  ENDIF
1352  ENDIF
1353  IF(ntrac.GT.0) THEN
1354  ntracer=dimen(2,85)
1355  IF(ntracer.GT.0) THEN
1356 ! TRACER WILL BE TRACER(NFRLIQ,NTRAC) BUT NFRLIQ UNKNOWN
1357  DO i=1,ntracer
1358  tracer(i)=motrea(adress(2,85)+i-1)
1359  ENDDO
1360  ENDIF
1361  IF(inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1362 ! IF SUSPENDED SEDIMENT, NTRACER CONTAINS NUMBER OF PRESCRIBED
1363 ! TRACERS GIVEN + NUMBER OF PRESCRIBED SUSPENDED SEDIMENTS GIVEN
1364  ntracer=ntracer+npresed
1365 ! TRACER(SEDIMENT) WILL BE TRACER(NFRLIQ,NTRAC) BUT NFRLIQ UNKNOWN
1366  DO i=1,ntracer
1367  IF(i.GT.dimen(2,85)) THEN
1368  tracer(i)=presed(i-dimen(2,85))
1369  ENDIF
1370  ENDDO
1371  ENDIF
1372  ENDIF
1373 !
1374  nrejeu = dimen(2,86)
1375  IF(nrejeu.EQ.nptsce) THEN
1376  DO i=1,nptsce
1377  usce(i) = motrea(adress(2,86)+i-1)
1378  ENDDO
1379  ELSEIF(nrejeu.EQ.0) THEN
1380  DO i=1,nptsce
1381  usce(i) = 0.d0
1382  ENDDO
1383  ELSE
1384  WRITE(lu,*) 'WRONG NUMBER OF VELOCITIES OF SOURCES ALONG X'
1385  CALL plante(1)
1386  stop
1387  ENDIF
1388 !
1389  IF(dimen(2,87).EQ.nptsce) THEN
1390  DO i=1,nptsce
1391  vsce(i) = motrea(adress(2,87)+i-1)
1392  ENDDO
1393  ELSEIF(dimen(2,87).EQ.0) THEN
1394  DO i=1,nptsce
1395  vsce(i) = 0.d0
1396  ENDDO
1397  ELSE
1398  WRITE(lu,*) 'WRONG NUMBER OF VELOCITIES OF SOURCES ALONG Y'
1399  CALL plante(1)
1400  stop
1401  ENDIF
1402 !
1403  IF(dimen(2,72).EQ.nptsce) THEN
1404  DO i=1,nptsce
1405  wsce(i) = motrea(adress(2,72)+i-1)
1406  ENDDO
1407  ELSEIF(dimen(2,72).EQ.0) THEN
1408  DO i=1,nptsce
1409  wsce(i) = 0.d0
1410  ENDDO
1411  ELSE
1412  WRITE(lu,*) 'WRONG NUMBER OF VELOCITIES OF SOURCES ALONG Z'
1413  CALL plante(1)
1414  stop
1415  ENDIF
1416 
1417  nrejeu = nrejeu + 2*nbuse
1418 !
1419 ! END OF SOGREAH ADDITIONS
1420 !
1421  cotini = motrea( adress(2, 88) )
1422  hautin = motrea( adress(2, 89) )
1423  tetadi = motrea( adress(2, 90) )
1424  s3d_d50= motrea( adress(2, 91) )
1425 ! RELEASE 5.5 : MASS-LUMPING FOR DIFFUSION
1426  agglod = motrea( adress(2, 92) )
1427 ! RELEASE 5.7 :
1428  duree = motrea( adress(2, 93) )
1429  nit=max(nit,int(duree/dt+0.5))
1430  tetazcomp = motrea( adress(2, 94) )
1431  cst_rainfall = motrea( adress(2, 95) )
1432  s3d_kspratio= motrea( adress(2, 96) )
1433  s3d_ac = motrea( adress(2, 97) )
1434  hwind = motrea( adress(2, 98) )
1435 ! COEFFICIENT TO CALIBRATE TIDAL RANGE
1436  ctide = motrea( adress(2, 99) )
1437 ! COEFFICIENT TO CALIBRATE TIDAL VELOCITIES
1438  ctidev = motrea( adress(2,100) )
1439 ! COEFFICIENT TO CALIBRATE SEA LEVEL (TIDAL MODEL)
1440  msl = motrea( adress(2,101) )
1441 ! MASS-LUMPING FOR WEAK CHARACTERISTICS
1442  s3d_agglow= motrea( adress(2,102) )
1443  s3d_cgel= motrea( adress(2,103) )
1444  s3d_cini= motrea( adress(2,104) )
1445 ! SETTLING VELOCITY OF SANDS
1446  s3d_wcs0= motrea( adress(2,105) )
1447 ! INITIAL PERCENTAGE OF NON COHESIVE SEDIMENT
1448  s3d_pvsnco0= motrea( adress(2,106) )
1449 !
1450 ! COEFFICIENT TO CALIBRATE THE ATMOSPHERE-WATER EXCHANGE MODEL
1451 ! MOVED TO WAQTEL
1452 ! C_ATMOS = MOTREA( ADRESS(2,37) )
1453 !
1454 ! ATMOSPHERIC PRESSURE VALUE
1455  cst_patmos = motrea( adress(2,107) )
1456 ! VALUE OF AIR TEMPERATURE
1457  cst_tair = motrea( adress(2,73) )
1458 ! VALUE OF CLOUD COVER
1459  cst_cldc = motrea( adress(2,74) )
1460 ! VALUE OF SOLAR RADIATION
1461  cst_ray3 = motrea( adress(2,75) )
1462 ! VALUE OF RELATIVE HUMIDITY
1463  cst_hrel = motrea( adress(2,76) )
1464 !
1465 ! LOGICAL KEYWORDS
1466 !
1467  debu = .NOT.motlog(adress(3,1))
1468  convec = motlog(adress(3, 2))
1469 ! PROP = MOTLOG(ADRESS(3, 4))
1470  coriol = motlog(adress(3, 5))
1471  vent = motlog(adress(3, 6))
1472  atmos = motlog(adress(3, 7))
1473  raztim = motlog(adress(3, 8))
1474  s3d_sedi = motlog(adress(3, 9))
1475  IF(s3d_sedi.AND.ntrac.EQ.0) THEN
1476  WRITE(lu,*)
1477  WRITE(lu,*) 'WITH SEDIMENT AT LEAST ONE TRACER NEEDED'
1478  WRITE(lu,*)
1479  CALL plante(1)
1480  stop
1481  ENDIF
1482  IF(s3d_sedi.AND.coupling(1:72).EQ.'GAIA') THEN
1483  WRITE(lu,*)
1484  WRITE(lu,*)'SEDI3D AND GAIA CANNOT BE USED SIMULTANEOUSLY'
1485  WRITE(lu,*)
1486  CALL plante(1)
1487  stop
1488  ENDIF
1489  mskuse = motlog(adress(3,10))
1490  bandec = motlog(adress(3,11))
1491  prolin = motlog(adress(3,12))
1492  bilmas = motlog(adress(3,13))
1493  infmas = motlog(adress(3,14))
1494  rain = motlog(adress(3,15))
1495  inchyd = motlog(adress(3,16))
1496  spheri = motlog(adress(3,17))
1497  maree = motlog(adress(3,18))
1498  valid = motlog(adress(3,19))
1499  restart_mode = motlog(adress(3,20))
1500 ! This one is in declarations_telemac.f
1501  check_mesh = motlog(adress(3,21))
1502  fairaccu = motlog(adress(3,22))
1503  vitini_tpxo = motlog(adress(3,23))
1504  keep_lonlat = motlog(adress(3,31))
1505  s3d_tasse = motlog(adress(3,51))
1506  lisfon_after = motlog(adress(3,60))
1507 ! OBSOLE REPLACED BY S3D_ITASS
1508 ! S3D_GIBSON = MOTLOG(ADRESS(3,52))
1509 ! S3D_TURBWC = MOTLOG(ADRESS(3,53))
1510  listin = motlog(adress(3,61))
1511 
1512 ! SYMBOLIC LINEAR SOLVER FOR AD
1513  ad_symblinsolv = motlog( adress(3,32) )
1514 ! RESET DERIVATIVES FOR AD
1515  ad_linsolv_resetderiv = motlog( adress(3,33) )
1516 !
1517 ! SYMBOLIC LINEAR SOLVER FOR AD
1518  ad_linsolv_derivative_convergence = motlog( adress(3,34) )
1519 ! 3D COUPLING
1520  bot_moment = motlog(adress(3,69))
1521 !
1522 ! NON-HYDROSTATIC
1523 !
1524  cldyn = motlog( adress(3,70) )
1525  nonhyd = motlog( adress(3,71) )
1526  dpwaveq = motlog( adress(3,72) )
1527 !
1528 ! SEDIMENT CONSOLIDATION (CURRENTLY NOT USED...)
1529 !
1530 ! CONSOL = MOTLOG( ADRESS(3,73) )
1531 !
1532 ! CONSISTENT PROJECTION (CURRENTLY NOT USED...)
1533 !
1534 ! CONPRO = MOTLOG( ADRESS(3,74) )
1535 !
1536  suit2 = motlog( adress(3,75) )
1537 ! COHESIVE SEDIMENT
1538  s3d_sedco = motlog( adress(3,76) )
1539 ! SALINITY AND TEMPERATURE OUTPUT FOR DELWAQ
1540  sali_del = motlog( adress(3,77) )
1541  temp_del = motlog( adress(3,78) )
1542  velo_del = motlog( adress(3,79) )
1543  diff_del = motlog( adress(3,80) )
1544 ! WAVE DRIVEN CURRENTS
1545  courou = motlog( adress(3,81) )
1546 ! BYPASS VOID VOLUMES
1547  bypass = motlog( adress(3,82) )
1548 ! VELOCITY PROJECTED ON SOLID LATERAL BOUNDARIES
1549  velprolat = motlog( adress(3,83) )
1550 ! VELOCITY PROJECTED ON BOTTOM
1551  velprobot = motlog( adress(3,84) )
1552 ! OIL SPILL MODEL
1553  spill_model=motlog( adress(3,85) )
1554 ! INFERENCE OF MINOR CONSTITUENTS OF TPXO TIDAL DATABASE
1555  intmicon = motlog( adress(3,86) )
1556 ! TBE + CV
1557  s3d_read_toce= motlog( adress(3,87))
1558  s3d_hinder= motlog( adress(3,90))
1559  s3d_floc= motlog( adress(3,91))
1560 ! MIXED SEDIMENT
1561  s3d_mixte= motlog( adress(3,92))
1562 ! LOGICAL S3D_SEDNCO IS DEDUCED FROM S3D_MIXTE AND S3D_SEDCO
1564 ! CONTINUITY CORRECTION ON OPEN BOUNDARIES
1565  concor= motlog( adress(3,93))
1566 !
1567  partel_concat = motlog(adress(3,58))
1568  IF(ncsize.LE.1) partel_concat=.false.
1569 !
1570 ! FOR NEXT LOGICAL, USE 21 TO 50 AND OTHER AVAILABLE NUMBERS !!!!!!!!!!!!
1571 !
1572 ! CHARACTER KEYWORDS (APPROPRIATELY TRUNCATED!)
1573 !
1574  titcas = motcar(adress(4, 1))(1:72)
1575  sort3d = motcar(adress(4, 2))(1:72)
1576  CALL majus(sort3d)
1577 ! ADDING VARIABLES FOR 3D GRAPHIC PRINTOUT IN CASE OF SUSP SEDIMENTS
1578  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1579 ! CHECK IF SUSP SEDIMENT AND OTHER VARIABLES ARE IN GRAPHIC
1580 ! PRINTOUT OF GAIA
1581  IF(inclus(sortis,'CS').OR.inclus(sortis,'SVX').OR.
1582  & inclus(sortis,'SVY').OR.inclus(sortis,'SVZ')) THEN
1583  grap_print2d=.false.
1584 ! CHECK WHICH SEDIMENTS ARE REQUESTED AND ADD THEM TO SORT3D
1585  CALL check_sortgai(sortis,maxvar,sort3d,ind_sed,yes2d,
1586  & grap_print2d)
1587  ENDIF
1588  ENDIF
1589  sort2d = motcar(adress(4, 3))(1:72)
1590  CALL majus(sort2d)
1591 ! ADDING VARIABLES FOR 2D GRAPHIC PRINTOUT IN CASE OF SUSP SEDIMENTS
1592  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
1593 ! CHECK IF SUSP SEDIMENT IS IN GRAPHIC PRINTOUT OF GAIA
1594  IF(inclus(sortis,'C2DS')) THEN
1595 ! CHECK WHICH SEDIMENTS ARE REQUESTED AND ADD THEM TO SORT2D
1596  grap_print2d=.true.
1597  CALL check_sortgai(sortis,maxvar,sort2d,ind_sed,yes2d,
1598  & grap_print2d)
1599  ENDIF
1600  ENDIF
1601 !
1602 ! FILENAMES FROM THE STEERING FILE
1603 !
1604 ! 4 TO 5 : READ AND USED BY LAUNCHING PROCEDURE
1605  t3d_files(t3dgeo)%NAME=motcar( adress(4, 6) )
1606  IF(t3d_files(t3dgeo)%NAME(1:1).EQ.' ') THEN
1607  WRITE(lu,*) 'THE FOLLOWING KEYWORD IS MANDATORY:'
1608  WRITE(lu,*) 'GEOMETRY FILE (FICHIER DE GEOMETRIE)'
1609  CALL plante(1)
1610  stop
1611  ENDIF
1612 ! NOMFOR =MOTCAR( ADRESS(4, 7) )
1613 ! NOMCAS =MOTCAR( ADRESS(4, 8) )
1614  t3d_files(t3dcli)%NAME=motcar( adress(4, 9) )
1615  IF(t3d_files(t3dcli)%NAME(1:1).EQ.' ') THEN
1616  WRITE(lu,*) 'THE FOLLOWING KEYWORD IS MANDATORY:'
1617  WRITE(lu,*) 'BOUNDARY CONDITIONS FILE '//
1618  & '(FICHIER DES CONDITIONS AUX LIMITES)'
1619  CALL plante(1)
1620  stop
1621  ENDIF
1622  t3d_files(t3dpre)%NAME=motcar( adress(4,10) )
1623  t3d_files(t3dres)%NAME=motcar( adress(4,11) )
1624 ! GOTM STEERING FILE
1625  t3d_files(t3dgtm)%NAME=motcar( adress(4,14) )
1626  t3d_files(t3dfon)%NAME=motcar( adress(4,16) )
1627 ! T3D_FILES(T3DSCO)%NAME=MOTCAR( ADRESS(4,17) )
1628 ! 2D RESULTS FILE
1629  t3d_files(t3dhyd)%NAME=motcar( adress(4,18) )
1630  t3d_files(t3dfo1)%NAME=motcar( adress(4,19) )
1631  t3d_files(t3dfo2)%NAME=motcar( adress(4,20) )
1632  t3d_files(t3dbi1)%NAME=motcar( adress(4,21) )
1633  t3d_files(t3dbi2)%NAME=motcar( adress(4,22) )
1634  t3d_files(t3dbus)%NAME=motcar( adress(4,50) )
1635  t3d_files(t3atma)%NAME=motcar( adress(4,33) )
1636  t3d_files(t3atmb)%NAME=motcar( adress(4,34) )
1637  t3d_files(t3dbnd)%NAME=motcar( adress(4,32) )
1638  t3d_files(t3dl93)%NAME=motcar( adress(4,35) )
1639  t3d_files(t3dref)%NAME=motcar( adress(4,55) )
1640 ! MIGRHYCAR STEERING FILE
1641  t3d_files(t3dmig)%NAME=motcar( adress(4,57) )
1642 ! LIQUID BOUNDARY FILE
1643  t3d_files(t3dimp)%NAME=motcar( adress(4,58) )
1644 ! HARMONIC CONSTANTS FILE
1645  t3d_files(t3dhar)%NAME=motcar( adress(4,86) )
1646 ! TIDAL MODEL FILE
1647  t3d_files(t3dtid)%NAME=motcar( adress(4,87) )
1648  t3d_files(t3dtid)%FMT=motcar( adress(4,17) )(1:8)
1649 ! TIDE DATA BASE FILE
1650  t3d_files(t3dbdd)%NAME=motcar( adress(4,88) )
1651 ! BINARY TIDE DATABASE FILE 1 (FOR SATELLITE ALTIMETRY)
1652  t3d_files(t3dbb1)%NAME=motcar( adress(4,89) )
1653 ! BINARY TIDE DATABASE FILE 2 (FOR SATELLITE ALTIMETRY)
1654  t3d_files(t3dbb2)%NAME=motcar( adress(4,90) )
1655 !
1656 ! INITIAL CONDITIONS
1657  cdtini = motcar(adress(4,59))(1:72)
1658 !
1659 ! BINGEO = MOTCAR(ADRESS(4,24))(1:3)
1660 ! CALL MAJUS(BINGEO)
1661 ! BINRES = MOTCAR(ADRESS(4,25))(1:3)
1662 ! CALL MAJUS(BINRES)
1663 ! BINPRE = MOTCAR(ADRESS(4,26))(1:3)
1664 ! CALL MAJUS(BINPRE)
1665 ! BINHYD = MOTCAR(ADRESS(4,27))(1:3)
1666 ! CALL MAJUS(BINHYD)
1667 ! FORMAT OF THE GEOMETRY FILE
1668  t3d_files(t3dgeo)%FMT = motcar( adress(4,29) )(1:8)
1669  CALL majus(t3d_files(t3dgeo)%FMT)
1670 ! FORMAT OF THE 3D RESULTS FILE
1671  t3d_files(t3dres)%FMT = motcar( adress(4,30) )(1:8)
1672  CALL majus(t3d_files(t3dres)%FMT)
1673 ! FORMAT OF THE 2D RESULTS FILE
1674  t3d_files(t3dhyd)%FMT = motcar( adress(4,28) )(1:8)
1675  CALL majus(t3d_files(t3dhyd)%FMT)
1676 ! FORMAT OF THE PREVIOUS COMPUTATION RESULTS FILE
1677  t3d_files(t3dpre)%FMT = motcar( adress(4,31) )(1:8)
1678  CALL majus(t3d_files(t3dpre)%FMT)
1679 ! FORMAT OF THE ATMOSPHERIC FILE
1680  t3d_files(t3atmb)%FMT = motcar( adress(4,41) )(1:8)
1681  CALL majus(t3d_files(t3atmb)%FMT)
1682 ! FORMAT OF THE BOUNDARY FILE
1683  t3d_files(t3dbnd)%FMT = motcar( adress(4,23) )(1:8)
1684  CALL majus(t3d_files(t3dbnd)%FMT)
1685 !
1686  element = motcar(adress(4,60))(1:72)
1687 !
1688 ! TELEMAC3D DISCRETISATION TYPES: 3D, 2D HORIZONTAL BOUNDARY,
1689 ! 2D VERTICAL BOUNDARY
1690 !
1691  IF(element(1:5).EQ.'PRISM') THEN
1692  ielm3 = 41 ! TELEMAC3D PRISMS
1693  ielm2h = 11 ! TRIANGULAR BOTTOM AND SURFACE
1694  ielm2v = 71 ! QUADRILATERAL LATERAL BOUNDARIES
1695  ELSEIF(element(1:5).EQ.'TETRA') THEN
1696  ielm3 = 51 ! PRISMS CUT INTO TETRAHEDRONS
1697  ielm2h = 11 ! TRIANGULAR BOTTOM AND SURFACE
1698  ielm2v = 61 ! TRIANGULAR LATERAL BOUNDARIES
1699  ELSE
1700  WRITE(lu,*) 'UNKNOWN ELEMENT: ',element
1701  CALL plante(1)
1702  stop
1703  ENDIF
1704 !
1705  CALL majus(coupling)
1706  CALL majus(coupling)
1707 ! 63-71 : DELWAQ FILES
1708  t3d_files(t3ddl1)%NAME=motcar( adress(4,63) )
1709  t3d_files(t3ddl2)%NAME=motcar( adress(4,64) )
1710  t3d_files(t3ddl3)%NAME=motcar( adress(4,65) )
1711  t3d_files(t3ddl5)%NAME=motcar( adress(4,66) )
1712  t3d_files(t3ddl6)%NAME=motcar( adress(4,67) )
1713  t3d_files(t3ddl7)%NAME=motcar( adress(4,68) )
1714  t3d_files(t3dl11)%NAME=motcar( adress(4,69) )
1715  t3d_files(t3ddl4)%NAME=motcar( adress(4,70) )
1716  t3d_files(t3ddl8)%NAME=motcar( adress(4,71) )
1717 !
1718  t3d_files(t3ddl9)%NAME=motcar( adress(4,76) )
1719  t3d_files(t3dl10)%NAME=motcar( adress(4,77) )
1720 ! STAGE-DISCHARGE CURVES FILE
1721  t3d_files(t3dpar)%NAME=motcar( adress(4,72) )
1722 ! SOURCES FILE (MUST BE ALSO NOMVEF IN TELEMAC-2D)
1723  t3d_files(t3dvef)%NAME=motcar( adress(4,73) )
1724 ! BINARY RESULTS FILE
1725  t3d_files(t3drbi)%NAME=motcar( adress(4,74) )
1726 ! FORMATTED RESULTS FILE
1727  t3d_files(t3drfo)%NAME=motcar( adress(4,75) )
1728 !
1729 ! 76 AND 77: SEE IN DELWAQ FILES ABOVE
1730 !
1731 ! FORMAT OF THE REFERENCE FILE
1732  t3d_files(t3dref)%FMT = motcar( adress(4,78) )(1:8)
1733  CALL majus(t3d_files(t3dref)%FMT)
1734 ! FORMAT OF THE BINARY DATA FILE 1
1735  t3d_files(t3dbi1)%FMT = motcar( adress(4,79) )(1:8)
1736  CALL majus(t3d_files(t3dbi1)%FMT)
1737 ! RESTART FILE
1738  t3d_files(t3drst)%NAME=motcar( adress(4,85) )
1739 ! RESTART FILE FORMAT
1740  t3d_files(t3drst)%FMT = motcar( adress(4,84) )(1:8)
1741 ! ASCII DROGUES FILE
1742  t3d_files(t3dflo)%NAME=motcar( adress(4,91) )
1743 ! BINARY DROGUES FILE
1744  t3d_files(t3dblo)%NAME=motcar( adress(4,102) )
1745 ! BINARY DROGUES FILE FORMAT
1746  t3d_files(t3dblo)%FMT = motcar( adress(4,103) )(1:8)
1747 ! 2D CONTINUATION FILE
1748  t3d_files(t3ds2d)%NAME=motcar( adress(4,92) )
1749 ! FORMAT OF THE 2D CONTINUATION FILE
1750  t3d_files(t3ds2d)%FMT = motcar( adress(4,93) )(1:8)
1751 ! NAMES OF 2D PRIVATE VARIABLES
1752  n_names_priv2d=dimen(4,94)
1753  IF(n_names_priv2d.GT.0) THEN
1754  DO i=1,n_names_priv2d
1755  names_prive2d(i) = motcar(adress(4,94)+i-1)(1:32)
1756  ENDDO
1757  ENDIF
1758 !
1759 !-----------------------------------------------------------------------
1760 ! SEDIMENT - EX-LECSED.F
1761 !
1762 ! INTEGERS
1763 !
1764  s3d_itass = motint(adress(1,51))
1765 !
1766  s3d_slvdse%SLV = motint(adress(1,52))
1767  s3d_slvdse%PRECON = motint(adress(1,53))
1768 !
1769 ! CV : VERTICAL ADVECTION SCHEME
1770 !
1771  s3d_setdep= motint( adress(1,54))
1772 !
1773 ! REALS
1774 !
1775  s3d_rhos = motrea(adress(2,51))
1776  s3d_tocd = motrea(adress(2,52))
1777  s3d_epai0 = motrea(adress(2,54))
1778  s3d_dtc = motrea(adress(2,55))
1779  s3d_cfmax = motrea(adress(2,56))
1780  s3d_mpart = motrea(adress(2,57))
1781 !
1782  s3d_turba = motrea(adress(2,59))
1783  s3d_turbb = motrea(adress(2,60))
1784  s3d_wchu0 = motrea(adress(2,61))
1785  IF(s3d_sedi.AND.s3d_wchu0.LT.0.d0) THEN
1786  WRITE(lu,*)'NEGATIVE SETLING VELOCITY'
1787  CALL plante(1)
1788  stop
1789  ENDIF
1790 !
1791  s3d_xkv= motrea(adress(2,63))
1792 !
1793 ! sediment bed layers initialization
1794 !
1795  IF(s3d_sedi.AND.(s3d_sedco.OR.s3d_mixte).AND.s3d_ncouch.GT.0) THEN
1796  IF(dimen(2,53).NE.s3d_ncouch) THEN
1797  WRITE(lu,*)'MUD CONCENTRATIONS PER LAYER'
1798  WRITE(lu,*)'GIVE A VALUE PER LAYER'
1799  CALL plante(1)
1800  stop
1801  ENDIF
1802  IF(dimen(2,58).NE.s3d_ncouch) THEN
1803  WRITE(lu,*)'CRITICAL EROSION SHEAR STRESS OF THE MUD LAYERS'
1804  WRITE(lu,*)'GIVE A VALUE PER LAYER'
1805  CALL plante(1)
1806  stop
1807  ENDIF
1808  IF(dimen(2,64).NE.s3d_ncouch) THEN
1809  WRITE(lu,*)'INITIAL THICKNESS OF SEDIMENT LAYERS'
1810  WRITE(lu,*)'GIVE A VALUE PER LAYER'
1811  CALL plante(1)
1812  stop
1813  ENDIF
1814  DO k = 1,s3d_ncouch
1815  s3d_conc_layer(k)=motrea( adress(2,53) + k-1 )
1816  s3d_toce_layer(k)=motrea( adress(2,58) + k-1 )
1817  s3d_es_layer(k) =motrea( adress(2,64) + k-1 )
1818  ENDDO
1819 ! multilayer consolidation
1820  IF(s3d_tasse) THEN
1821  IF(dimen(2,62).NE.s3d_ncouch) THEN
1822  WRITE(lu,*)'RESIDENCE TIME FOR MUD'
1823  WRITE(lu,*)'GIVE A VALUE PER LAYER'
1824  CALL plante(1)
1825  stop
1826  ENDIF
1827  DO k = 1,s3d_ncouch
1828  s3d_trest(k) = motrea(adress(2,62)+k-1)
1829  ENDDO
1830  ENDIF
1831  ENDIF
1832 !
1833 ! S3D_CFDEP no longer used, replaced by S3D_CONC(1)
1834 !
1835 ! IF(S3D_SEDCO) THEN
1836 ! S3D_CFDEP=S3D_CONC_LAYER(S3D_NCOUCH)
1837 ! ELSE
1838 ! S3D_CFDEP=(1.D0-S3D_XKV)* S3D_RHOS
1839 ! ENDIF
1840 !....CV
1841 !
1842 ! CHARACTERS
1843 !
1844  t3d_files(s3d_t3dsed)%NAME=motcar( adress(4,51) )
1845  t3d_files(t3dsus)%NAME=motcar( adress(4,52) )
1846 !
1847  s3d_birsed= motcar(adress(4,53))(1:3)
1848  CALL majus(s3d_birsed)
1849 ! BISUIS = MOTCAR(ADRESS(4,54))(1:3)
1850 ! CALL MAJUS(BISUIS)
1851 !
1852 !-----------------------------------------------------------------------
1853 ! INFORMS THE USER THAT NO LISTING WILL APPEAR
1854 !
1855  IF(listin) THEN
1856  WRITE(lu,104)
1857  ELSE
1858  WRITE(lu,*) '*** NO LISTING REQUIRED ***'
1859  ENDIF
1860 104 FORMAT(1x,/,19x, '********************************************',/,
1861  & 19x, '* LECDON: *',/,
1862  & 19x, '* AFTER CALLING DAMOCLES *',/,
1863  & 19x, '* CHECKING OF DATA READ *',/,
1864  & 19x, '* IN THE STEERING FILE *',/,
1865  & 19x, '********************************************',/)
1866 !
1867 !-----------------------------------------------------------------------
1868 ! DEDUCES OTHER PARAMETERS
1869 !-----------------------------------------------------------------------
1870 ! SEDIMENT CONCENTRATION IS THE LAST ACTIVE TRACER BY DEFINITION
1871 !
1872 ! SEDIMENT CONCENTRATION IS ONE OF ACTIVE TRACERS
1873 ! TA(1,NTRAC) --> SEDIMENT CONCENTRATION IF SEDIMENTOLOGY
1874 !
1875  IF (s3d_sedi) THEN
1876  WRITE(lu,112)
1877 112 FORMAT(/,'WARNING: THE SEDIMENT CONCENTRATION IS THE LAST',
1878  & /,'======= TRACER OF THE ARRAY OF ACTIVE TRACERS')
1879 !
1880  ENDIF
1881 !
1882 !-----------------------------------------------------------------------
1883 ! SPECIAL TREATMENT IF PARALLELISM
1884 !
1885  IF(ncsize.GT.1.AND.bandec.AND.optban.EQ.2) THEN
1886  optban=1
1887  WRITE(lu,122)
1888 122 FORMAT(/,'ATTENTION: YOU HAVE CHOSEN PARALLEL MODE,',
1889  & /,'========= THE TIDAL FLATS TREATMENT IS SET TO 1')
1890 !
1891  ENDIF
1892 !
1893 !-----------------------------------------------------------------------
1894 !
1895  IF(opt_hneg.LT.0.OR.opt_hneg.GT.3) THEN
1896  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS'
1897  WRITE(lu,*) 'MUST BE BETWEEN 0 AND 3'
1898  CALL plante(1)
1899  stop
1900  ENDIF
1901 !
1902 !-----------------------------------------------------------------------
1903 !
1904  IF(optban.EQ.1.AND.opt_hneg.GE.2) THEN
1905  IF(abs(aggloh-1.d0).GT.0.01d0) THEN
1906  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS=2'
1907  WRITE(lu,*) 'MASS-LUMPING FOR DEPTH MUST BE EQUAL TO 1.'
1908  CALL plante(1)
1909  stop
1910  ENDIF
1911  ENDIF
1912 !
1913 ! WITH SOME TIDAL FLATS VERSIONS OF DISTRIBUTIVE ADVECTION SCHEMES
1914 ! POSITIVE DEPTHS MUST BE TREATED WITH OPTION 2
1915 !
1916  IF(bandec.AND.optban.EQ.1.AND.opt_hneg.NE.2) THEN
1917  IF(schcvi.EQ.adv_nsc_tf.OR.schcke.EQ.adv_nsc_tf
1918  & .OR.schcvi.EQ.adv_lpo_tf.OR.schcke.EQ.adv_lpo_tf) THEN
1919  WRITE(lu,*) 'WITH ADVECTION SCHEMES'
1920  WRITE(lu,*) adv_lpo_tf,' OR ',adv_nsc_tf
1921  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS'
1922  WRITE(lu,*) 'MUST BE EQUAL TO 2'
1923  CALL plante(1)
1924  stop
1925  ENDIF
1926  IF(ntrac.GT.0) THEN
1927  DO k=1,ntrac
1928  IF(schcta(k).EQ.adv_nsc_tf.OR.schcta(k).EQ.adv_lpo_tf) THEN
1929  WRITE(lu,*) 'WITH ADVECTION SCHEMES'
1930  WRITE(lu,*) adv_lpo_tf,' OR ',adv_nsc_tf
1931  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS'
1932  WRITE(lu,*) 'MUST BE EQUAL TO 2'
1933  CALL plante(1)
1934  stop
1935  ENDIF
1936  ENDDO
1937  ENDIF
1938  ENDIF
1939 !
1940 ! WITH SOME OTHER TIDAL FLATS VERSIONS OF DISTRIBUTIVE ADVECTION SCHEMES
1941 ! POSITIVE DEPTHS MUST BE TREATED WITH OPTION 3
1942 !
1943  IF(bandec.AND.optban.EQ.1.AND.opt_hneg.NE.3) THEN
1944  IF(schcvi.EQ.adv_psi_tf.OR.schcke.EQ.adv_psi_tf) THEN
1945  WRITE(lu,*) 'WITH ADVECTION SCHEME'
1946  WRITE(lu,*) adv_psi_tf
1947  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS'
1948  WRITE(lu,*) 'MUST BE EQUAL TO 3'
1949  CALL plante(1)
1950  stop
1951  ENDIF
1952  IF(ntrac.GT.0) THEN
1953  DO k=1,ntrac
1954  IF(schcta(k).EQ.adv_psi_tf) THEN
1955  WRITE(lu,*) 'WITH ADVECTION SCHEME'
1956  WRITE(lu,*) adv_psi_tf
1957  WRITE(lu,*) 'TREATMENT OF NEGATIVE DEPTHS'
1958  WRITE(lu,*) 'MUST BE EQUAL TO 3'
1959  CALL plante(1)
1960  stop
1961  ENDIF
1962  ENDDO
1963  ENDIF
1964  ENDIF
1965 !
1966 ! WITH TETRAHEDRA, LEO POSTMA SCHEME IS REPLACED BY N-SCHEME
1967 !
1968  IF(ielm3.EQ.51) THEN
1969  IF(schcvi.EQ.adv_lpo.OR.schcvi.EQ.adv_lpo_tf) THEN
1970  WRITE(lu,*) 'WITH TETRAHEDRA ADVECTION SCHEME'
1971  WRITE(lu,*) adv_lpo,' OR ',adv_lpo_tf
1972  WRITE(lu,*) 'IS REPLACED BY'
1973  WRITE(lu,*) adv_nsc,' OR ',adv_nsc_tf
1974  schcvi=schcvi+1
1975  ENDIF
1976  IF(schcke.EQ.adv_lpo.OR.schcke.EQ.adv_lpo_tf) THEN
1977  WRITE(lu,*) 'WITH TETRAHEDRA ADVECTION SCHEME'
1978  WRITE(lu,*) adv_lpo,' OR ',adv_lpo_tf
1979  WRITE(lu,*) 'IS REPLACED BY'
1980  WRITE(lu,*) adv_nsc,' OR ',adv_nsc_tf
1981  schcke=schcke+1
1982  ENDIF
1983  IF(ntrac.GT.0) THEN
1984  DO k=1,ntrac
1985  IF(schcta(k).EQ.adv_lpo.OR.schcta(k).EQ.adv_lpo_tf) THEN
1986  WRITE(lu,*) 'WITH TETRAHEDRA ADVECTION SCHEME'
1987  WRITE(lu,*) adv_lpo,' OR ',adv_lpo_tf
1988  WRITE(lu,*) 'IS REPLACED BY'
1989  WRITE(lu,*) adv_nsc,' OR ',adv_nsc_tf
1990  schcta(k)=schcta(k)+1
1991  ENDIF
1992  ENDDO
1993  ENDIF
1994  ENDIF
1995 !
1996 !-----------------------------------------------------------------------
1997 ! GENERALISED SIGMA TRANSFORMATION REQUIRES SPECIAL TREATMENT
1998 ! OF ADVECTION TERMS
1999 !
2000  sigmag=.true.
2001  IF(transf.EQ.1.OR.transf.EQ.2) sigmag=.false.
2002 !
2003 !-----------------------------------------------------------------------
2004 !
2005  ielmh = 11
2006 !
2007  ielmu = ielmh
2008 !
2009  produc = 1
2010 !
2011  IF(.NOT.bandec) THEN
2012  optban = 0
2013  opt_hneg = 0
2014  ENDIF
2015  IF(optban.EQ.2) THEN
2016  msk = .true.
2017 ! WITH A NEGATIVE HMIN, MASKBD WILL FAIL
2018  hmin = max(hmin,0.d0)
2019  ELSEIF(mskuse) THEN
2020  msk = .true.
2021  ELSE
2022 ! MASKING BY THE USER DOES NOT APPEAR TO HAVE
2023 ! BEEN ENVISAGED
2024  msk = .false.
2025  ENDIF
2026 !
2027 ! TO KEEP DHN FREE FOR CALLING CONTIN
2028 !
2029  IF(iordrh.EQ.2.AND.nonhyd) iordrh=1
2030 !
2031 ! SUPG OPTIONS
2032 !
2033  IF(schch.EQ.5) THEN
2034  optsup(2) = 0
2035  ELSE
2036  WRITE(lu,*) 'SCHEME FOR ADVECTION OF DEPTH'
2037  WRITE(lu,*) 'MUST NOW ALWAYS BE EQUAL TO 5'
2038  CALL plante(1)
2039  stop
2040  ENDIF
2041 !
2042 ! OPTION FOR DIFFUSION OF VELOCITY
2043 !
2044  opdvit = 1
2045 ! OPTSOU : TREATMENT OF SOURCES, NORMAL (1) OR DIRAC (2)
2046  optsou = motint( adress(1,55) )
2047  tetad = 1.d0
2048 !
2049 !-----------------------------------------------------------------------
2050 ! SETS VARIABLES WHEN THE ADVECTION STEP IS NOT REQUIRED
2051 !
2052  IF(.NOT.convec) THEN
2053  schcvi = 0
2054  schcke = 0
2055  ENDIF
2056  IF(ntrac.GT.0.AND..NOT.convec) THEN
2057  DO k=1,ntrac
2058  schcta(k) = 0
2059  ENDDO
2060  ENDIF
2061 !
2062 !-----------------------------------------------------------------------
2063 !
2064 ! K-E IN ONE DIRECTION AND K-W IN THE OTHER ONE CANNOT BE COMBINED
2065 !
2066  IF( (iturbv.EQ.3.AND.iturbh.EQ.7)
2067  & .OR.(iturbv.EQ.7.AND.iturbh.EQ.3)) THEN
2068  WRITE(lu,*) 'LECDON:'
2069  WRITE(lu,*) 'HORIZONTAL AND VERTICAL TURBULENCE MODELS '
2070  WRITE(lu,*) 'CANNOT BE K-EPSILON IN ONE DIRECTION'
2071  WRITE(lu,*) 'AND K-OMEGA IN THE OTHER ONE'
2072  CALL plante(1)
2073  stop
2074  ENDIF
2075 !
2076 !-----------------------------------------------------------------------
2077 !
2078 ! IF NO K-EPSILON, K-W, SPALART OR DES MODELS:
2079 ! CORRESPONDING ADVECTION SCHEME SET TO 0
2080 !
2081  IF(iturbv.NE.3.AND.iturbh.NE.3.AND.
2082  & iturbv.NE.5.AND.iturbh.NE.5.AND.
2083  & iturbv.NE.7.AND.iturbh.NE.7.AND.
2084  & iturbv.NE.9.AND.iturbh.NE.9) THEN
2085  schcke = 0
2086  ENDIF
2087 !
2088 !-----------------------------------------------------------------------
2089 !
2090 ! IF SMAGORINSKI IS SELECTED FOR VERTICAL TURBULENCE
2091 ! IT IS MANDATORY FOR HORIZONTAL TURBULENCE
2092 ! AND NOT REVERSE !!!!!!!!!!!
2093 !
2094  IF(iturbv.EQ.4.AND.iturbh.NE.4) THEN
2095  iturbh = 4
2096  WRITE(lu,*) 'LECDON: HORIZONTAL TURBULENCE MODEL SET TO 4'
2097  ENDIF
2098 !
2099  IF(iturbh.NE.1.AND.iturbh.NE.3.AND.
2100  & iturbh.NE.4.AND.iturbh.NE.7.AND.
2101  & iturbh.NE.5.AND.iturbh.NE.9)THEN
2102  WRITE(lu,*)
2103  & 'LECDON: UNKNOWN HORIZONTAL TURBULENCE MODEL: ',iturbh
2104  CALL plante(1)
2105  stop
2106  ENDIF
2107 !
2108  IF(iturbv.NE.1.AND.iturbv.NE.2.AND.iturbv.NE.3.AND.
2109  & iturbv.NE.4.AND.iturbv.NE.5.AND.iturbv.NE.6.AND.
2110  & iturbv.NE.7.AND.iturbv.NE.9) THEN
2111  WRITE(lu,*)
2112  & 'LECDON: UNKNOWN VERTICAL TURBULENCE MODEL: ',iturbv
2113  CALL plante(1)
2114  stop
2115  ENDIF
2116 !
2117 ! IF SPALART IN HORIZONTAL, THEN SPALART FOR VERTICAL
2118 !
2119  IF(iturbv.EQ.5.AND.iturbh.NE.5.OR.
2120  & iturbv.NE.5.AND.iturbh.EQ.5)THEN
2121  WRITE(lu,999)iturbv,iturbh
2122  CALL plante(1)
2123  stop
2124  ENDIF
2125 999 FORMAT(1x,'LECDON: SPALART-ALLMARAS MODEL SHOULD BE USED',
2126  & /,1x,'FOR BOTH HORIZONTAL VERTICAL DIRECTIONS',
2127  & /,1x,'YOUR ACTUAL CHOICES ARE:',i4,'AND ',i4)
2128 !
2129 !-----------------------------------------------------------------------
2130 !
2131 ! BUILDS ARRAY CONV INDICATING IF THERE ARE VARIABLES TO BE TREATED
2132 ! FOR EACH ADVECTION SCHEME (15 IS THE MAXIMUM CONVENTION)
2133 !
2134 ! SIZE OF N_ADV GIVEN IN DECLARATIONS_TELEMAC3D
2135  DO i=0,15
2136  n_adv(i)=0
2137  ENDDO
2138 !
2139  IF(schcvi.EQ.8.OR.schcke.EQ.8) THEN
2140  WRITE(lu,*) 'ADVECTION SCHEME 8 IS NOW NUMBER ',adv_lpo
2141  ENDIF
2142  IF(schcvi.EQ.9.OR.schcke.EQ.9) THEN
2143  WRITE(lu,*) 'ADVECTION SCHEME 9 IS NOW NUMBER ',adv_lpo_tf
2144  ENDIF
2145  IF(ntrac.GT.0) THEN
2146  DO k=1,ntrac
2147  IF(schcta(k).EQ.8) THEN
2148  WRITE(lu,*) 'ADVECTION SCHEME 8 IS NOW NUMBER ',adv_lpo
2149  ENDIF
2150  IF(schcta(k).EQ.9) THEN
2151  WRITE(lu,*) 'ADVECTION SCHEME 9 IS NOW NUMBER ',adv_lpo_tf
2152  ENDIF
2153  ENDDO
2154  ENDIF
2155 !
2156  IF( schcvi.NE.0 .AND.schcvi.NE.adv_car.AND.schcvi.NE.adv_sup
2157  &.AND.schcvi.NE.adv_lpo.AND.schcvi.NE.adv_nsc.AND.schcvi.NE.adv_psi
2158  &.AND.schcvi.NE.adv_lpo_tf.AND.schcvi.NE.adv_nsc_tf) THEN
2159  WRITE(lu,*)
2160  & 'LECDON: SCHEME FOR ADVECTION OF VELOCITIES UNKNOWN: ', schcvi
2161  CALL plante(1)
2162  stop
2163  ENDIF
2164  IF(ntrac.GT.0) THEN
2165  DO k=1,ntrac
2166  IF( schcta(k).NE.0 .AND.schcta(k).NE.adv_car
2167  & .AND.schcta(k).NE.adv_sup .AND.schcta(k).NE.adv_lpo
2168  & .AND.schcta(k).NE.adv_nsc .AND.schcta(k).NE.adv_psi
2169  & .AND.schcta(k).NE.adv_lpo_tf.AND.schcta(k).NE.adv_nsc_tf) THEN
2170  WRITE(lu,*)
2171  & 'LECDON: SCHEME FOR ADVECTION OF TRACERS UNKNOWN: ', schcta(k)
2172  CALL plante(1)
2173  stop
2174  ENDIF
2175  ENDDO
2176  ENDIF
2177  IF( schcke.NE.0 .AND.schcke.NE.adv_car.AND.schcke.NE.adv_sup
2178  &.AND.schcke.NE.adv_lpo.AND.schcke.NE.adv_nsc.AND.schcke.NE.adv_psi
2179  &.AND.schcke.NE.adv_lpo_tf.AND.schcke.NE.adv_nsc_tf) THEN
2180  WRITE(lu,*)
2181  & 'LECDON: SCHEME FOR ADVECTION OF K-EPSILON UNKNOWN: ', schcke
2182  CALL plante(1)
2183  stop
2184  ENDIF
2185  IF(optass.NE.3) THEN
2186  IF(schcvi.NE.0.AND.(schcvi.EQ.adv_lpo.OR.
2187  & schcvi.EQ.adv_lpo_tf.OR.
2188  & schcvi.EQ.adv_nsc_tf)) THEN
2189  WRITE(lu,*) 'LECDON:'
2190  WRITE(lu,*) 'SCHEME FOR ADVECTION OF VELOCITIES: ',schcvi
2191  WRITE(lu,*) 'MATRIX STORAGE = 3 MANDATORY'
2192  CALL plante(1)
2193  stop
2194  ENDIF
2195  IF(ntrac.GT.0) THEN
2196  DO k=1,ntrac
2197  IF(schcta(k).NE.0.AND.(schcta(k).EQ.adv_lpo.OR.
2198  & schcta(k).EQ.adv_lpo_tf.OR.
2199  & schcta(k).EQ.adv_nsc_tf)) THEN
2200  WRITE(lu,*) 'LECDON:'
2201  WRITE(lu,*) 'SCHEME FOR ADVECTION OF TRACERS: ',schcta(k)
2202  WRITE(lu,*) 'MATRIX STORAGE = 3 MANDATORY'
2203  CALL plante(1)
2204  stop
2205  ENDIF
2206  ENDDO
2207  ENDIF
2208  IF(schcke.NE.0.AND.(schcke.EQ.adv_lpo.OR.
2209  & schcke.EQ.adv_lpo_tf.OR.
2210  & schcke.EQ.adv_nsc_tf)) THEN
2211  WRITE(lu,*) 'LECDON:'
2212  WRITE(lu,*) 'SCHEME FOR ADVECTION OF K-EPSILON: ',schcke
2213  WRITE(lu,*) 'MATRIX STORAGE = 3 MANDATORY'
2214  CALL plante(1)
2215  stop
2216  ENDIF
2217  ENDIF
2218 !
2219 ! LIST OF VARIABLES TO BE ADVECTED BY A SCHEME I (AT INDEX I IN LIST)
2220 ! LIST OF ALL VARIABLES TO BE ADVECTED (AT INDEX 0)
2221 !
2222  IF(schcvi.GT.0) THEN
2223  n_adv(schcvi)=n_adv(schcvi)+1
2224  n_adv(0 )=n_adv(0 )+1
2225  list_adv(n_adv(schcvi),schcvi)=1 ! U
2226  list_adv(n_adv(0 ),0 )=1 ! U
2227  n_adv(schcvi)=n_adv(schcvi)+1
2228  n_adv(0 )=n_adv(0 )+1
2229  list_adv(n_adv(schcvi),schcvi)=2 ! V
2230  list_adv(n_adv(0 ),0 )=2 ! V
2231  IF(nonhyd) THEN
2232  n_adv(schcvi)=n_adv(schcvi)+1
2233  n_adv(0 )=n_adv(0 )+1
2234  list_adv(n_adv(schcvi),schcvi)=3 ! W
2235  list_adv(n_adv(0 ),0 )=3 ! W
2236  ENDIF
2237  ENDIF
2238  IF(schcke.GT.0.AND.(iturbh.EQ.3.OR.iturbh.EQ.7.OR.
2239  & iturbv.EQ.3.OR.iturbv.EQ.7) ) THEN
2240  n_adv(schcke)=n_adv(schcke)+1
2241  n_adv(0 )=n_adv(0 )+1
2242  list_adv(n_adv(schcke),schcke)=4 ! AK
2243  list_adv(n_adv(0 ),0 )=4 ! AK
2244  n_adv(schcke)=n_adv(schcke)+1
2245  n_adv(0 )=n_adv(0 )+1
2246  list_adv(n_adv(schcke),schcke)=5 ! EP
2247  list_adv(n_adv(0 ),0 )=5 ! EP
2248 !
2249 ! FOR SPALART AND DES MODELS
2250 !
2251  ELSEIF(schcke.GT.0.AND.(iturbh.EQ.5.OR.iturbv.EQ.5.OR.
2252  & iturbh.EQ.9.OR.iturbv.EQ.9))THEN
2253  n_adv(schcke)=n_adv(schcke)+1
2254  n_adv(0 )=n_adv(0 )+1
2255  list_adv(n_adv(schcke),schcke)=4 ! NUT
2256  list_adv(n_adv(0 ),0 )=4 ! NUT
2257  ENDIF
2258  IF(ntrac.GT.0) THEN
2259  DO i=1,ntrac
2260  IF(schcta(i).GT.0) THEN
2261  n_adv(schcta(i))=n_adv(schcta(i))+1
2262  n_adv(0 )=n_adv(0 )+1
2263  list_adv(n_adv(schcta(i)),schcta(i))=5+i ! TA%ADR(I)%P
2264  list_adv(n_adv(0 ),0 )=5+i ! TA%ADR(I)%P
2265  ENDIF
2266  ENDDO
2267  ENDIF
2268 !
2269 ! ADVECTION SCHEME OF ALL ADVECTED VARIABLES, WITH THE NUMBERING
2270 ! GIVEN BY LIST
2271 !
2272  s_adv(1) = schcvi
2273  s_adv(2) = schcvi
2274  s_adv(3) = schcvi
2275  s_adv(4) = schcke
2276  s_adv(5) = schcke
2277  IF(ntrac.GT.0) THEN
2278  DO i=1,ntrac
2279  s_adv(5+i)=schcta(i)
2280  ENDDO
2281  ENDIF
2282 !
2283 !-----------------------------------------------------------------------
2284 ! SETS VARIABLES WHEN THE DIFFUSION STEP IS NOT REQUIRED
2285 ! Q? WHAT HAPPENS WHEN SUPG ADVECTION IS REQUIRED, BUT NO DIFFUSION
2286 !
2287  IF(ntrac.EQ.0) schdta = 0
2288  IF(iturbv.NE.3.AND.iturbh.NE.3.AND.
2289  & iturbv.NE.7.AND.iturbh.NE.7.AND.
2290  & iturbv.NE.5.AND.iturbh.NE.5.AND.
2291  & iturbv.NE.9.AND.iturbh.NE.9)THEN
2292  schdke = 0
2293  ENDIF
2294 !
2295 !-----------------------------------------------------------------------
2296 !
2297 ! BUILDS ARRAY DIF INDICATING IF THERE ARE VARIABLES TO BE TREATED
2298 ! FOR EACH DIFFUSION SCHEME
2299 !
2300  dif(0) = .false.
2301  dif(1) = .false.
2302  dif(2) = .false.
2303 !
2304  IF(schdvi.LT.0.OR.schdvi.GT.2.OR.
2305  & schdta.LT.0.OR.schdta.GT.2.OR.
2306  & schdke.LT.0.OR.schdke.GT.2) THEN
2307  WRITE(lu,*) 'KEYWORDS SCHEME FOR DIFFUSION OF...'
2308  WRITE(lu,*) 'MUST BE BETWEEN 0 AND 2'
2309  WRITE(lu,*) 'HERE THEY ARE ',schdvi,schdta,schdke
2310  CALL plante(1)
2311  stop
2312  ENDIF
2313 !
2314  dif(schdvi) = .true.
2315  dif(schdta) = .true.
2316  dif(schdke) = .true.
2317 !
2318 !-----------------------------------------------------------------------
2319 ! KRYLOV SPACE DIMENSION (VALID FOR GMRES, %SLV=7)
2320 !
2321  slvdvi%KRYLOV = motint(adress(1,74))
2322  slvdta(1)%KRYLOV = motint(adress(1,75))
2323  IF(ntrac.GT.1) THEN
2324  DO k=2,ntrac
2325  slvdta(k)%KRYLOV = slvdta(1)%KRYLOV
2326  ENDDO
2327  ENDIF
2328  slvdke%KRYLOV = motint(adress(1,76))
2329  slvpro%KRYLOV = motint(adress(1,77))
2330 ! NO LONGER USED
2331 ! SLVW%KRYLOV = 5
2332  s3d_slvdse%KRYLOV = motint(adress(1,84))
2333  slvpoi%KRYLOV = motint(adress(1,81))
2334 ! SLVPRJ%KRYLOV = MOTINT(ADRESS(1,83))
2335 !
2336 ! ADDING VALUES FOR SEDIMENTS AFTER TRACERS IN SLVDTA FOR KRYLOV
2337  IF(ntrac.GT.0.AND.inclus(coupling,'GAIA').AND.ind_sed.GT.0) THEN
2338  DO itrac=ind_sed,ind_sed+local_nsusp_tel-1
2339  isusp=itrac-ind_sed+1
2340  slvdta(itrac)%KRYLOV=slvsed(isusp)%KRYLOV
2341  ENDDO
2342  ENDIF
2343 !-----------------------------------------------------------------------
2344 ! NAMES OF THE VARIABLES FOR THE RESULTS AND GEOMETRY FILES:
2345 !-----------------------------------------------------------------------
2346 !
2347 ! TABLE OF LOGICALS FOR VARIABLES OUTPUT
2348 !
2349 ! FOR 2D
2350 !
2353  CALL sortie(sort2d , mnemo , maxvar , sorg2d )
2354 ! OUTPUTS WHICH ARE NOT RELEVANT OR NOT PROGRAMMED
2355  sorg2d( 9) = .false.
2356  sorg2d(10) = .false.
2357  sorg2d(11) = .false.
2358  sorg2d(12) = .false.
2359  sorg2d(20) = .false.
2360  sorg2d(21) = .false.
2361  sorg2d(22) = .false.
2362  IF(.NOT.s3d_sedi) THEN
2363  sorg2d(23) = .false.
2364  sorg2d(24) = .false.
2365  sorg2d(25) = .false.
2366  sorg2d(26) = .false.
2367  sorg2d(32) = .false.
2368  sorg2d(33) = .false.
2369  sorg2d(34) = .false.
2370  sorg2d(37) = .false.
2371  sorg2d(adr_trac_2d+2*ntrac+s3d_ncouch-1)=.false.
2372  sorg2d(adr_trac_2d+2*ntrac+s3d_ncouch) =.false.
2373  ENDIF
2374  IF(.NOT.vent) THEN
2375  sorg2d(16) = .false.
2376  sorg2d(17) = .false.
2377  ENDIF
2378 !
2379 ! DIFFERENT HERE FROM TELEMAC-2D
2380 ! CALL SORTIE(VARIMP , MNEMO , MAXVAR , SORIMP )
2381 ! SORIMP NOT USED SO FAR
2382  DO i=1,maxvar
2383  sorimp(i) = .false.
2384  ENDDO
2385 !
2386 ! FOR 3D
2387 !
2389  & nametrac)
2390  CALL sortie(sort3d , mnem3 , maxva3 , sorg3d )
2391 !
2392 ! FOR RESTART FILE
2393 !
2394  DO i=1,maxva3
2395  soris3(i)=.false.
2396  sorest(i)=.false.
2397  ENDDO
2398 ! Z
2399  sorest(1)=.true.
2400 ! U
2401  sorest(2)=.true.
2402 ! V
2403  sorest(3)=.true.
2404 ! W
2405  sorest(4)=.true.
2406 ! K AND EPSILON
2407  IF(iturbh.EQ.3.OR.iturbv.EQ.3.OR.iturbh.EQ.7.OR.iturbv.EQ.7.OR.
2408  & iturbh.EQ.5.OR.iturbv.EQ.5.OR.iturbh.EQ.9.OR.iturbv.EQ.9.OR.
2409  & iturbv.EQ.6) THEN
2410  sorest(8)=.true.
2411  sorest(9)=.true.
2412  ENDIF
2413 ! NON HYDROSTATIC PRESSURE
2414  IF(nonhyd) sorest(12)=.true.
2415 ! UCONV,VCONV,WCONV,DM1
2416  sorest(14)=.true.
2417  sorest(15)=.true.
2418  IF(nonhyd) sorest(16)=.true.
2419  sorest(18)=.true.
2420 ! DH AND HN IN A SINGLE 3D ARRAY
2421  sorest(19)=.true.
2422  IF(n_adv(adv_car).GT.0) THEN
2423  sorest(20)=.true.
2424  sorest(21)=.true.
2425  ENDIF
2426 ! UD,VD,WD
2427  sorest(22)=.true.
2428  sorest(23)=.true.
2429  IF(nonhyd) sorest(24)=.true.
2430 ! TRACERS
2431  IF(ntrac.GT.0) THEN
2432  DO i=1,ntrac
2433  sorest(adr_trac+i-1)=.true.
2434  ENDDO
2435  ENDIF
2436 !
2437 !-----------------------------------------------------------------------
2438 !
2439 ! RESTART FILE
2440 !
2441  IF(restart_mode) THEN
2442  IF(t3d_files(t3drst)%NAME.EQ.' ') THEN
2443  WRITE(lu,*) 'THE RESTART FILE IS MISSING'
2444  CALL plante(1)
2445  stop
2446  ENDIF
2447  ENDIF
2448 !
2449 !-----------------------------------------------------------------------
2450 !
2451 ! NO K AND NO EPSILON IF NOT K-EPSILON OR K-OMEGA MODELS
2452 !
2453  IF(iturbv.NE.3.AND.iturbh.NE.3.AND.
2454  & iturbv.NE.7.AND.iturbh.NE.7.AND.
2455  & iturbv.NE.5.AND.iturbh.NE.5.AND.
2456  & iturbv.NE.9.AND.iturbh.NE.9.AND.
2457  & iturbv.NE.6) THEN
2458  sorg3d(8)=.false.
2459  sorg3d(9)=.false.
2460  ENDIF
2461 !
2462 !-----------------------------------------------------------------------
2463 !
2464 ! NO RICHARDSON IF NO MIXING LENGTH AND NO K-EPSILON
2465 !
2466  IF(iturbv.NE.2.AND.iturbv.NE.3) THEN
2467  sorg3d(10)=.false.
2468  ENDIF
2469 !
2470 !-----------------------------------------------------------------------
2471 !
2472 ! VARIABLES WHICH DO NOT EXIST WITHOUT NON-HYDROSTATIC OPTION
2473 !
2474  IF(.NOT.nonhyd) THEN
2475 ! NO DYNAMIC PRESSURE
2476  sorg3d(12)=.false.
2477 ! NO HYDROSTATIC PRESSURE
2478  sorg3d(13)=.false.
2479 ! NO W ADVECTION
2480  sorg3d(16)=.false.
2481  ENDIF
2482 !
2483 !-----------------------------------------------------------------------
2484 !
2485 ! NO STOKES VELOCITY IF NO 3D COUPLING WITH TOMAWAC
2486 !
2487  IF(.NOT.inclus(coupling,'TOMAWACT3D')) THEN
2488  sorg3d(29)=.false.
2489  sorg3d(30)=.false.
2490  sorg3d(31)=.false.
2491  ENDIF
2492 !
2493 !-----------------------------------------------------------------------
2494 !
2495 ! IN CASE OF A VALIDATION, A REFERENCE FILE SHOULD BE GIVEN
2496 !
2497  IF(valid.AND.t3d_files(t3dref)%NAME(1:1).EQ.' ') THEN
2498  IF(listin) THEN
2499  WRITE(lu,1005)
2500  ENDIF
2501 1005 FORMAT(1x,'LECDON: A VALIDATION IS ASKED, SO A',/,
2502  & 9x,'REFERENCE FILE IS NECESSARY',/,
2503  & 9x,'(KEY-WORD: REFERENCE FILE)',/,
2504  & 9x,'FOR COMPARISON. INTERRUPTION OF PROGRAM',
2505  & ////)
2506  CALL plante(1)
2507  stop
2508  ENDIF
2509 !
2510 !-----------------------------------------------------------------------
2511 !
2512 ! CHECKS THE TRACERS USED IN THE DENSITY LAW
2513 !
2514  IF(denlaw.NE.0.AND.ntrac.EQ.0) THEN
2515  WRITE(lu,*) 'LECDON: WITH DENSITY LAW # 0'
2516  WRITE(lu,*) ' AT LEAST 1 TRACER IS REQUIRED'
2517  CALL plante(1)
2518  stop
2519  ENDIF
2520 !
2521 ! CHECKS THE MAX TRACER NUMBER
2522 !
2523  IF(ntrac.GT.maxtra) THEN
2524  WRITE(lu,*) 'LECDON: TRACERS NUMBER BIGGER THAN MAX NUMBER'
2525  WRITE(lu,*) ' MODIFIY THE VALUE OF THE KEYWORD:'
2526  WRITE(lu,*) ' MAXIMUM NUMBER OF TRACERS'
2527  CALL plante(1)
2528  stop
2529  ENDIF
2530 !
2531 ! CHECKS THE EXISTENCE OF RELEVANT TRACERS FOR DELWAQ
2532 !
2533  IF(ind_t.EQ.0.AND.temp_del) THEN
2534  WRITE(lu,*) 'TEMPERATURE MISSING FOR DELWAQ'
2535  CALL plante(1)
2536  stop
2537  ENDIF
2538  IF(ind_s.EQ.0.AND.sali_del) THEN
2539  WRITE(lu,*) 'SALINITY MISSING FOR DELWAQ'
2540  CALL plante(1)
2541  stop
2542  ENDIF
2543 !
2544 ! CHECKS THE EXISTENCE OF RELEVANT TRACERS FOR THE DENSITY LAW
2545 !
2546  IF( (denlaw.EQ.1.AND. ind_t.EQ.0 ) .OR.
2547  & (denlaw.EQ.2.AND. ind_s.EQ.0 ) .OR.
2548  & (denlaw.EQ.3.AND.(ind_t.EQ.0.OR.ind_s.EQ.0) ) .OR.
2549  & (denlaw.EQ.6.AND.(ind_t.EQ.0.OR.ind_s.EQ.0) ) ) THEN
2550 !
2551  WRITE(lu,*) 'LECDON: WITH DENSITY LAW = ',denlaw
2552  IF(ind_t.EQ.0.AND.
2553  & (denlaw.EQ.1.OR.denlaw.EQ.3.OR.denlaw.EQ.6)) THEN
2554  WRITE(lu,*) ' ONE TRACER MUST BE THE TEMPERATURE'
2555  ENDIF
2556  IF(ind_s.EQ.0.AND.
2557  & (denlaw.EQ.2.OR.denlaw.EQ.3.OR.denlaw.EQ.6)) THEN
2558  WRITE(lu,*) ' ONE TRACER MUST BE THE SALINITY'
2559  ENDIF
2560  CALL plante(1)
2561  stop
2562  ENDIF
2563 !
2564 !-----------------------------------------------------------------------
2565 !
2566 ! CROUT TYPE PRECONDITIONING WITH GMRES: NOT ON VECTOR MACHINES
2567 !
2568 162 FORMAT(1x,'LECDON: KEY-WORDS SOLVERS AND PRECONDITONING:',/,1x,
2569  & 'ON VECTOR MACHINES,',/,1x,
2570  & 'DO NOT USE GMRES + CROUT',///)
2571  IF(lvmac.NE.1) THEN
2572 !
2573  IF(slvdvi%SLV.EQ.7.AND.slvdvi%PRECON.NE.0) THEN
2574  IF(mod(slvdvi%PRECON, 7).EQ.0.OR.
2575  & mod(slvdvi%PRECON,11).EQ.0.OR.
2576  & mod(slvdvi%PRECON,13).EQ.0 ) THEN
2577  WRITE(lu,162)
2578  CALL plante(1)
2579  stop
2580  ENDIF
2581  ENDIF
2582  IF(slvpro%SLV.EQ.7.AND.slvpro%PRECON.NE.0) THEN
2583  IF(mod(slvpro%PRECON, 7).EQ.0.OR.
2584  & mod(slvpro%PRECON,11).EQ.0.OR.
2585  & mod(slvpro%PRECON,13).EQ.0 ) THEN
2586  WRITE(lu,162)
2587  CALL plante(1)
2588  stop
2589  ENDIF
2590  ENDIF
2591  IF(ntrac.GT.0) THEN
2592  DO k=1,ntrac
2593  IF(slvdta(k)%SLV.EQ.7.AND.slvdta(k)%PRECON.NE.0) THEN
2594  IF(mod(slvdta(k)%PRECON, 7).EQ.0.OR.
2595  & mod(slvdta(k)%PRECON,11).EQ.0.OR.
2596  & mod(slvdta(k)%PRECON,13).EQ.0 ) THEN
2597  WRITE(lu,162)
2598  CALL plante(1)
2599  stop
2600  ENDIF
2601  ENDIF
2602  ENDDO
2603  ENDIF
2604  IF(slvdke%SLV.EQ.7.AND.slvdke%PRECON.NE.0) THEN
2605  IF(mod(slvdke%PRECON, 7).EQ.0.OR.
2606  & mod(slvdke%PRECON,11).EQ.0.OR.
2607  & mod(slvdke%PRECON,13).EQ.0 ) THEN
2608  WRITE(lu,162)
2609  CALL plante(1)
2610  stop
2611  ENDIF
2612  ENDIF
2613 !
2614  ENDIF
2615 !
2616 ! CROUT-TYPE PRECONDITIONING AND PARALLELISM :
2617 !
2618 172 FORMAT(1x,'WITH PARALLELISM = 2',/,1x,
2619  & 'CROUT-TYPE PRECONDITIONNING DOWNGRADED',///)
2620  IF(ncsize.GT.1) THEN
2621  IF(slvdvi%PRECON.NE.0) THEN
2622  IF(mod(slvdvi%PRECON, 7).EQ.0.OR.
2623  & mod(slvdvi%PRECON,11).EQ.0.OR.
2624  & mod(slvdvi%PRECON,13).EQ.0 ) THEN
2625  WRITE(lu,172)
2626  ENDIF
2627  ENDIF
2628  IF(slvpro%PRECON.NE.0) THEN
2629  IF(mod(slvpro%PRECON, 7).EQ.0.OR.
2630  & mod(slvpro%PRECON,11).EQ.0.OR.
2631  & mod(slvpro%PRECON,13).EQ.0 ) THEN
2632  WRITE(lu,172)
2633  ENDIF
2634  ENDIF
2635  IF(ntrac.GT.0) THEN
2636  DO k=1,ntrac
2637  IF(slvdta(k)%PRECON.NE.0) THEN
2638  IF(mod(slvdta(k)%PRECON, 7).EQ.0.OR.
2639  & mod(slvdta(k)%PRECON,11).EQ.0.OR.
2640  & mod(slvdta(k)%PRECON,13).EQ.0 ) THEN
2641  WRITE(lu,172)
2642  ENDIF
2643  ENDIF
2644  ENDDO
2645  ENDIF
2646  IF(slvdke%PRECON.NE.0) THEN
2647  IF(mod(slvdke%PRECON, 7).EQ.0.OR.
2648  & mod(slvdke%PRECON,11).EQ.0.OR.
2649  & mod(slvdke%PRECON,13).EQ.0 ) THEN
2650  WRITE(lu,172)
2651  ENDIF
2652  ENDIF
2653  ENDIF
2654 !
2655 !-----------------------------------------------------------------------
2656 !
2657  IF(listin) THEN
2658  WRITE(lu,201) titcas
2659  201 FORMAT(/1x,'EXITING LECDON. NAME OF THE STUDY:',/,1x,a72,/)
2660  ENDIF
2661 !
2662 !-----------------------------------------------------------------------
2663 !
2664 ! EDGE-BASED STORAGE MANDATORY FOR DELWAQ
2665 !
2666  IF(inclus(coupling,'DELWAQ').AND.optass.NE.3) THEN
2667  WRITE(lu,2025)
2668 2025 FORMAT(1x,'WITH COUPLING WITH DELWAQ, EDGE-BASED STORAGE',/,1x,
2669  & 'IS MANDATORY',///)
2670  CALL plante(1)
2671  stop
2672  ENDIF
2673 !
2674 !-----------------------------------------------------------------------
2675 !
2676 ! SUPG GIVES NON-SYMMETRIC MATRICES, HENCE NOT ALL SOLVERS POSSIBLE
2677 !
2678  IF(schcvi.EQ.adv_sup.AND.(slvdvi%SLV.EQ.1.OR.
2679  & slvdvi%SLV.EQ.2 ) ) THEN
2680  WRITE(lu,2027)
2681 2027 FORMAT(1x,'CONJUGATE GRADIENT AND CONJUGATE RESIDUAL',/,1x,
2682  & 'ONLY FOR SYMMETRIC MATRICES',/,1x,
2683  & 'WITH SUPG, THE DIFFUSION MATRIX',/,1x,
2684  & 'FOR VELOCITIES IS NOT SYMMETRIC',/,1x,
2685  & 'CHOOSE SOLVER GMRES FOR EXAMPLE : 7')
2686  CALL plante(1)
2687  stop
2688  ENDIF
2689 !
2690  IF(schcke.EQ.adv_sup.AND.(slvdke%SLV.EQ.1.OR.
2691  & slvdke%SLV.EQ.2 ) ) THEN
2692  WRITE(lu,2029)
2693 2029 FORMAT(1x,'CONJUGATE GRADIENT AND CONJUGATE RESIDUAL',/,1x,
2694  & 'ONLY FOR SYMMETRIC MATRICES',/,1x,
2695  & 'WITH SUPG, THE DIFFUSION MATRIX',/,1x,
2696  & 'FOR K AND EPSILON IS NOT SYMMETRIC',/,1x,
2697  & 'CHOOSE SOLVER GMRES FOR EXAMPLE : 7')
2698  CALL plante(1)
2699  stop
2700  ENDIF
2701 !
2702  IF(ntrac.GT.0) THEN
2703  DO k=1,ntrac
2704  IF(schcta(k).EQ.adv_sup.AND.(slvdta(k)%SLV.EQ.1.OR.
2705  & slvdta(k)%SLV.EQ.2 ) ) THEN
2706  WRITE(lu,2031)
2707 2031 FORMAT(1x,'CONJUGATE GRADIENT AND CONJUGATE RESIDUAL',/,1x,
2708  & 'ONLY FOR SYMMETRIC MATRICES',/,1x,
2709  & 'WITH SUPG, THE DIFFUSION MATRIX OF TRACERS',/,1x,
2710  & 'IS NOT SYMMETRIC.',/,1x,
2711  & 'CHOOSE SOLVER GMRES FOR EXAMPLE : 7')
2712  CALL plante(1)
2713  stop
2714  ENDIF
2715  ENDDO
2716  ENDIF
2717 !
2718 !-----------------------------------------------------------------------
2719 !
2720 ! CHOICE FOR TIDAL DATA BASE TO DO BY THE USER
2721 !
2722  IF(tidaltype.NE.0.AND.tidaldb.EQ.-1) THEN
2723  WRITE(lu,*) 'CHOOSE THE TIDAL DATA BASE'
2724  WRITE(lu,*) 'AMONG THE POSSIBLE CHOICES:'
2725  WRITE(lu,*) ' -1: JMJ,'
2726  WRITE(lu,*) ' -2: TPXO,'
2727  WRITE(lu,*) ' -3: LEGOS-NEA.'
2728  CALL plante(1)
2729  stop
2730  ENDIF
2731 !
2732 !-----------------------------------------------------------------------
2733 !
2734 ! CHECKS THE EXISTENCE OF TIDAL DATA BASE FILES WHEN USING TPXO
2735 !
2736  IF(tidaltype.NE.0.AND.tidaldb.EQ.2
2737  & .AND.t3d_files(t3dbb1)%NAME(1:1).EQ.' ') THEN
2738  WRITE(lu,*) 'TO USE TPXO TIDAL DATA BASE'
2739  WRITE(lu,*) 'PLEASE GIVE A BINARY DATABASE 1 FOR TIDE FILE'
2740  CALL plante(1)
2741  stop
2742  ELSEIF(tidaltype.NE.0.AND.tidaldb.EQ.2
2743  & .AND.t3d_files(t3dbb2)%NAME(1:1).EQ.' ') THEN
2744  WRITE(lu,*) 'TO USE TPXO TIDAL DATA BASE'
2745  WRITE(lu,*) 'PLEASE GIVE A BINARY DATABASE 2 FOR TIDE FILE'
2746  CALL plante(1)
2747  stop
2748  ENDIF
2749 !
2750 !-----------------------------------------------------------------------
2751 !
2752 ! CHECKS THE EXISTENCE OF LAMBERT 93 CONVERSION FILE WHEN USING LAMBERT
2753 ! WHEN USING LAMBERT 93 PROJECTION AND TPXO
2754 !
2755  IF(tidaltype.NE.0.AND.tidaldb.EQ.2.AND.geosyst.EQ.4
2756  & .AND.numzone.EQ.93.AND.t3d_files(t3dl93)%NAME(1:1).EQ.' ') THEN
2757  WRITE(lu,*) 'TO USE TPXO TIDAL DATA BASE'
2758  WRITE(lu,*) 'AND LAMBERT 93 PROJECTION'
2759  WRITE(lu,*) 'PLEASE GIVE THE LAMBERT 93 CONVERSION FILE'
2760  CALL plante(1)
2761  stop
2762  ENDIF
2763 !
2764 !-----------------------------------------------------------------------
2765 !
2766 ! POSITIVE COEFFICIENT TO CALIBRATE TIDAL RANGE EXPECTED
2767 !
2768  IF(ctide.LT.0) THEN
2769  WRITE(lu,*) 'COEFFICIENT TO CALIBRATE TIDAL RANGE'
2770  WRITE(lu,*) 'HAVE TO BE GREATER OR EQUAL 0'
2771  CALL plante(1)
2772  stop
2773  ENDIF
2774 !
2775 !-----------------------------------------------------------------------
2776 !
2777 ! POSITIVE COEFFICIENT TO CALIBRATE TIDAL VELOCITIES EXPECTED
2778 !
2779  IF(ctidev.LT.0) THEN
2780  WRITE(lu,*) 'COEFFICIENT TO CALIBRATE TIDAL VELOCITIES'
2781  WRITE(lu,*) 'HAVE TO BE GREATER OR EQUAL 0'
2782  CALL plante(1)
2783  stop
2784  ENDIF
2785 !
2786 !-----------------------------------------------------------------------
2787 !
2788 ! SPATIAL PROJECTION TYPE CHECKED IF SPHERICAL COORDINATES ASKED
2789 !
2790  IF(spheri) THEN
2791  IF(protyp.NE.2.AND.protyp.NE.3) THEN
2792  WRITE(lu,*) 'SPATIAL PROJECTION TYPE: ',protyp
2793  WRITE(lu,*) 'IMPOSSIBLE WITH SPHERICAL COORDINATES'
2794  CALL plante(1)
2795  stop
2796  ENDIF
2797  ENDIF
2798 !
2799 !-----------------------------------------------------------------------
2800 !
2801 ! IF SPHERICAL COORDINATES ASKED AND MODELLING TIDE,
2802 ! GEOSYST IS AUTOMATICALLY SET TO 5 IF NOT YET
2803 !
2804  IF(spheri) THEN
2805  IF(tidaltype.NE.0.AND.geosyst.NE.5) THEN
2806  geosyst = 5
2807  WRITE(lu,*) 'GEOGRAPHIC SYSTEM AUTOMATICALLY SET TO 5'
2808  WRITE(lu,*) 'WHEN MODELLING TIDE WITH SPHERICAL COORDINATES'
2809  ENDIF
2810  ENDIF
2811 !
2812 !-----------------------------------------------------------------------
2813 !
2814 ! CHECKING COHERENCE FOR 2D COMPUTATION CONTINUED
2815 !
2816  IF(suit2) THEN
2817  IF(t3d_files(t3ds2d)%NAME(1:1).EQ.' ') THEN
2818  WRITE(lu,*) '2D CONTINUATION:'
2819  WRITE(lu,*) 'GIVE A: FILE FOR 2D CONTINUATION'
2820  CALL plante(1)
2821  stop
2822  ENDIF
2823 ! BOTH TYPES OF CONTINUATIONS ARE FORBIDDEN
2824  IF(.NOT.debu) THEN
2825  WRITE(lu,*) '2D CONTINUATION & CONTINUATION CONTINUED:'
2826  WRITE(lu,*) 'CANNOT BE BOTH SET TO TRUE'
2827  CALL plante(1)
2828  stop
2829  ENDIF
2830  ENDIF
2831 !
2832 !-----------------------------------------------------------------------
2833 !
2834 ! REACTS IF A PREVIOUS COMPUTATION FILE IS REQUIRED, BUT NOT PROVIDED
2835 !
2836  IF(.NOT.debu.AND.t3d_files(t3dpre)%NAME(1:1).EQ.' ') THEN
2837  IF(listin) THEN
2838  WRITE(lu,152)
2839  ENDIF
2840 152 FORMAT(1x,'LECDON : A CONTINUED COMPUTATION REQUIRED, ',/,
2841  & 1x,' A PREVIOUS COMPUTATION FILE IS NECESSARY',/)
2842  CALL plante(1)
2843  stop
2844  ENDIF
2845 !
2846 !-----------------------------------------------------------------------
2847 !
2848 ! ATMOSPHERE-WATER EXCHANGE MODEL AND WIND COMPATIBILITY
2849  IF( inclus(coupling,'WAQTEL').AND..NOT.vent.AND.
2850  & (11*int(waqprocess/11).EQ.waqprocess.OR.
2851  & 13*int(waqprocess/13).EQ.waqprocess) ) THEN
2852 !
2853  WRITE(lu,182)
2854  182 FORMAT(///,1x,'BEWARE! ATMOSPHERE-WATER EXCHANGE',/,1x,
2855  & 'MODEL ACTIVATED, BUT NOT THE WIND.',/,1x,
2856  & 'THE HORIZONTAL COMPONENTS OF WIND',/,1x,
2857  & 'ARE NOT TAKEN INTO ACCOUNT',/,1x,
2858  & 'OUTSIDE THIS MODULE',///)
2859  ENDIF
2860 !
2861 !-----------------------------------------------------------------------
2862 !
2863 ! ATMOSPHERE-WATER EXCHANGE MODEL AND ATMOSPHERIC PRESSURE COMPATIBILITY
2864  IF( inclus(coupling,'WAQTEL').AND..NOT.atmos.AND.
2865  & (11*int(waqprocess/11).EQ.waqprocess.OR.
2866  & 13*int(waqprocess/13).EQ.waqprocess) ) THEN
2867 !
2868  WRITE(lu,184)
2869  184 FORMAT(///,1x,'BEWARE! ATMOSPHERE-WATER EXCHANGE',/,1x,
2870  & 'MODEL ACTIVATED, BUT NOT THE PRESSURE,',/,1x,
2871  & 'WHICH IS NOT TAKEN INTO ACCOUNT',/,1x,
2872  & 'OUTSIDE THIS MODULE',///)
2873  ENDIF
2874 !
2875 !-----------------------------------------------------------------------
2876 !
2877 ! CONSISTENCY OF KEYWORDS ON WAVE DRIVEN CURRENTS
2878 !
2879  IF(courou.AND..NOT.inclus(coupling,'TOMAWAC').AND.
2880  & t3d_files(t3dbi1)%NAME.EQ.' ') THEN
2881  WRITE(lu,186)
2882 186 FORMAT(1x,'LECDON: WAVE DRIVEN CURRENTS ARE REQUESTED, ',/,8x,
2883  & ' EITHER IN A FILE OR BY COUPLING WITH TOMAWAC',/)
2884  CALL plante(1)
2885  stop
2886  ENDIF
2887 !
2888 !-----------------------------------------------------------------------
2889 !
2890 ! ATMOSPHERE-WATER EXCHANGE MODEL AND TEMPERATURE COMPATIBILITY
2891  IF( inclus(coupling,'WAQTEL').AND.ind_t.EQ.0.AND.
2892  & (11*int(waqprocess/11).EQ.waqprocess.OR.
2893  & 13*int(waqprocess/13).EQ.waqprocess) ) THEN
2894 !
2895  WRITE(lu,188)
2896  188 FORMAT(///,1x,'WARNING! ATMOSPHERE-WATER EXCHANGE',/,1x,
2897  & 'MODEL ACTIVATED, BUT THERE IS NO',/,1x,
2898  & 'TEMPERATURE IN THE FLOW',///)
2899  CALL plante(1)
2900  ENDIF
2901 !-----------------------------------------------------------------------
2902 !
2903 ! 3D COUPLING WITH TOMAWAC NOT IMPLEMENTED IN SPHERICAL COORDINATES
2904  IF(inclus(coupling,'TOMAWACT3D').AND.spheri)THEN
2905 !
2906  WRITE(lu,189)
2907  189 FORMAT(///,1x,'3D COUPLING WITH TOMAWAC NOT IMPLEMENTED'
2908  & ,'IN SPHERICAL COORDINATES',/,1x,///)
2909  CALL plante(1)
2910  ENDIF
2911 !-----------------------------------------------------------------------
2912 !
2913 ! FOR 3D COUPLING WITH TOMAWAC, HYDROSTATIC HYPOTHESIS IS NECESSARY
2914  IF(inclus(coupling,'TOMAWACT3D').AND.nonhyd)THEN
2915 !
2916  WRITE(lu,190)
2917  WRITE(lu,191)
2918  190 FORMAT(///,1x,'3D COUPLING WITH TOMAWAC IS BASED ON'
2919  & , ' HYDROSTATIC HYPOTHESIS',/,1x,///)
2920  191 FORMAT(///,1x,'YOU ARE USING NON HYDROSTATIC HYPOTHESIS'
2921  & ,/,1x,///)
2922  ENDIF
2923 !
2924 !-----------------------------------------------------------------------
2925 !
2926 ! COMPATIBILITY BETWEEN VARIABLES FOR GAIA AND S3D_SEDI
2927  IF(inclus(coupling,'GAIA ')) THEN
2928  s3d_setdep=-1
2929  ENDIF
2930 !
2931 !-----------------------------------------------------------------------
2932 !
2933 ! COMPATIBILITY BETWEEN OPTWIND AND WAQTEL FOR WIND VELOCITIES
2934 ! IF AN ASCII ATMOSPHERIC DATA FILE IS GIVEN
2935  IF((optwind.EQ.2.OR.optwind.EQ.3).AND.inclus(coupling,'WAQTEL')
2936  & .AND.t3d_files(t3atma)%NAME(1:1).NE.' ') THEN
2937  WRITE(lu,*) 'WARNING: WIND DATA ARE EXPECTED TO BE COMPATIBLE '
2938  & // 'WITH WAQTEL I.E. WIND VELOCITIES + OTHER METEO '
2939  & // 'DATA. YOU CANNOT RUN WITH ONLY WIND VELOCITIES '
2940  & // 'IN THE ASCII ATMOSPHERIC DATA FILE'
2941  ENDIF
2942 !
2943 !-----------------------------------------------------------------------
2944 194 FORMAT(/,80('+'),/,'FOLLOWING ERROR DETECTED: ',/)
2945 195 FORMAT(/,80('+'))
2946 
2947 !-----------------------------------------------------------------------
2948 !
2949  RETURN
2950  END
2951 
character(len=32), dimension(:), allocatable nametrac
subroutine, public init_aed2_models(NAMLST, DNAME, NWQ_VAR, NBEN_VAR, NDIAG_VAR)
Definition: t3d_aed2.F90:134
subroutine check_sortgai(CHAINE, NBRE, CHAINEHYD, IND_SED, YES2D, GRAP_PRINT2D)
Definition: check_sortgai.f:7
type(bief_file), dimension(maxlu_t3d), target t3d_files
double precision, target rho0
integer, parameter adv_nsc_tf
integer, dimension(:), allocatable profvel
integer, dimension(:), allocatable frtype
logical, dimension(:), allocatable okvit3
integer, parameter adv_psi
double precision, dimension(s3d_nlaymax) s3d_es_layer
double precision, dimension(s3d_nlaymax) s3d_toce_layer
double precision, dimension(:), allocatable, target cotimp
integer, parameter adv_lpo
type(slvcfg), dimension(:), allocatable slvdta
double precision, dimension(:), allocatable, target ysce
integer, parameter adv_sup
integer, parameter lng_en
double precision, public cst_ray3
double precision, public cst_windy
double precision, dimension(:), allocatable, target trac0
subroutine read_submit(FILES, NFILES, SUBMIT, NMOT)
Definition: read_submit.f:7
double precision, dimension(:), allocatable, target t0ac
logical, dimension(:), allocatable okq3
logical, dimension(:), allocatable calcrain
logical, dimension(maxvar) sorg2d
integer, dimension(:), allocatable verprotra
double precision, dimension(s3d_nlaymax) s3d_conc_layer
double precision, dimension(:), allocatable dnutav
double precision, dimension(:), allocatable, target betac
integer, parameter maxkeyword
logical, dimension(0:2) dif
integer, dimension(:), allocatable verprovel
integer, dimension(100, 0:15) list_adv
double precision, dimension(:), allocatable, target wsce
double precision, dimension(:), allocatable train
logical, dimension(maxva3) sorg3d
integer, parameter adv_nsc
integer, parameter lng_fr
Y. AUDOUIN & J-M HERVOUET (EDF LAB, LNHE) 09/05/2014 V7P0 First version.
double precision, dimension(:), pointer vitimp
double precision, public cst_tair
Definition: meteo_telemac.f:45
character(len=32), dimension(maxva3) text3
integer, dimension(:), allocatable sta_dis_curves
double precision, target prandtl
integer, dimension(:), allocatable, target bnd_tide
double precision, public cst_patmos
integer, dimension(:), allocatable nom_adv
logical, dimension(maxva3) sorest
double precision, public cst_windx
integer, parameter adv_psi_tf
integer, dimension(:), allocatable dirflu
integer, dimension(:), allocatable, target isce
subroutine lecdon_telemac3d_gaia(MOTCAR, FILE_DESC, PATH, NCAR, CAS_FILE, DICO_FILE, LOCAL_NSUSP_TEL)
double precision, target duree
integer, dimension(3) martim
logical, dimension(:,:), allocatable oktr3
double precision, dimension(:), allocatable, target zsce
double precision, dimension(:), allocatable, target flux_boundaries
logical, dimension(maxva3) soris3
double precision, dimension(:), allocatable, target debimp
subroutine nomvar_2d_in_3d(TEXTE, TEXTPR, MNEMO, NTRAC, MAXTRA, NAMETRAC, N_NAMES_PRIV2D, NAMES_PRIVE2D)
subroutine nomvar_telemac3d(TEXT3, TEXTP3, MNEMO, NTRAC, MAXTRA, NAMETRAC)
integer, dimension(:), allocatable pts_curves
logical function inclus(C1, C2)
Definition: inclus.f:7
double precision, public cst_cldc
Definition: meteo_telemac.f:87
integer, dimension(0:15) n_adv
double precision, dimension(:), allocatable, target qsce
integer, dimension(:), allocatable, target ksce
subroutine sortie(CHAINE, MNEMO, NBRE, SORLEO)
Definition: sortie.f:7
integer, dimension(4) optsup
integer, parameter adv_lpo_tf
integer, dimension(:), allocatable s_adv
integer, dimension(:), allocatable schadvsed
Scheme for advection of suspended sediments.
subroutine damocle(ADRESS, DIMENS, NMAX, DOC, LLNG, LLU, MOTINT, MOTREA, MOTLOG, MOTCAR, MOTCLE, TROUVE, NFICMO, NFICDA, GESTD, MOTATT)
Definition: damocle.f:9
logical, dimension(:,:), allocatable oktrsce
character(len=32), dimension(maxvar) texte
double precision, dimension(:), allocatable dnutah
double precision tel_offset
double precision, dimension(:), pointer x
double precision, target dt
logical, dimension(maxvar) sorimp
double precision, dimension(30) s3d_trest
integer, dimension(:), allocatable optadv_tr
logical, dimension(:), allocatable oksl3
integer, parameter adv_car
double precision function date_mjd2sec(DATE, TIME)
Definition: date_mjd2sec.f:7
subroutine lecdon_telemac3d(MOTCAR, FILE_DESC, PATH, NCAR, CAS_FILE, DICO_FILE, GAIA_CAS_FILE, GAIA_DICO_FILE)
logical, dimension(:), allocatable calcflu
double precision, dimension(:), allocatable, target vsce
integer, dimension(3) mardat
double precision, public cst_rainfall
double precision, dimension(:), allocatable bedqarea
logical, dimension(:), allocatable okdebsce
double precision, public cst_hrel
double precision, dimension(:), allocatable bedflo
integer schdsed
Scheme for diffusion of suspended sediments in 3D.
double precision, dimension(:), allocatable qsce2
integer, dimension(:), allocatable schcta
integer, parameter path_len
double precision, dimension(:), allocatable, target tracer
double precision, dimension(:,:), allocatable, target tasce
character(len=32), dimension(maxva3) textp3
character(len=32), dimension(maxvar) textpr
double precision, dimension(:), allocatable, target usce
type(slvcfg), dimension(:), allocatable slvsed
Solver for the diffusion of sediment.
double precision, target msl
subroutine majus(CHAINE)
Definition: majus.f:7
double precision, target ctidev
character(len=32), dimension(4) names_prive2d
double precision, target ctide
subroutine nametrac_waqtel(NAMETRAC, NTRAC, PROCESS)
character(len=path_len), target coupling
double precision, dimension(:), allocatable, target xsce
integer, dimension(:), allocatable optadv_sed
Advection scheme options for suspended sediments.
Definition: bief.f:3