The TELEMAC-MASCARET system  trunk
sisyphe.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE sisyphe
3 ! ******************
4 !
5  &(part,loopcount,grafcount,listcount,telnit,
6  & u_tel,v_tel,h_tel,hn_tel,zf_tel,uetcar,cf_tel,ks_tel,
7  & constflow,nsis_cfd,sisyphe_cfd,code,pericou,
8  & u3d,v3d,t_tel,visc_tel,dt_tel,charr_tel,susp_tel,
9  & flbor_tel,solsys,dm1,uconv_tel,vconv_tel,zconv,
10  & thetaw_tel,hw_tel,tw_tel,uw_tel,yagout,api_iter,grcomp)
11 !
12 !***********************************************************************
13 ! SISYPHE V7P3
14 !***********************************************************************
15 !
16 !brief The real main program of Sisyphe, with the time loop.
17 !
18 !history R-S MOURADI (LNHE)
19 !+ 24/03/2016
20 !+ V7P1
21 !+ Adding 2 possible values for PART, to run SISYPHE from the API without coupling
22 !+ Adding an additional variable API_ITER, current iteration number for the API.
23 !
24 !history C. LENORMANT; J-M HERVOUET; C. MACHET; C. VILLARET; U. MERKEL; R. KOPMANN
25 !+ 20/03/2011
26 !+ V6P1
27 !+
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 13/07/2010
31 !+ V6P0
32 !+ Translation of French comments within the FORTRAN sources into
33 !+ English comments
34 !
35 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
36 !+ 21/08/2010
37 !+ V6P0
38 !+ Creation of DOXYGEN tags for automated documentation and
39 !+ cross-referencing of the FORTRAN sources
40 !
41 !history C. VILLARET (LNHE)
42 !+ 01/03/2012
43 !+ V6P2
44 !+ Second call to condim moved upwards out of test for calling BIEF_SUITE.
45 !
46 !history MAK (HRW)
47 !+ 31/05/2012
48 !+ V6P2
49 !+ modifications to include CSRATIO
50 !
51 !history JWI (HRW)
52 !+ 14/06/2012
53 !+ V6P2
54 !+ added (several) lines to use wave orbital velocities directly if found in hydro file
55 !
56 !history PAT (LNHE)
57 !+ 18/06/2012
58 !+ V6P2
59 !+ updated version with HRW's development (wave orbital velocities) + Soulsby-van Rijn's concentration
60 !
61 !history CV (LNHE)
62 !+ 12/06/2012
63 !+ V6P2
64 !+ added AT0 to CALL CONLIT(MESH%NBOR%I,AT0)
65 !
66 !history CV (LNHE)
67 !+ 02/07/2012
68 !+ V6P2
69 !+ DT changed to DTS in CALL FLUSEC_SISYPHE
70 !
71 !history CV (LNHE)
72 !+ 28/08/2012
73 !+ V6P2
74 !+ Modification call to init_sediment and suspension_main
75 !
76 !history J-M HERVOUET (EDF R&D, LNHE)
77 !+ 08/03/2013
78 !+ V6P3
79 !+ Adding multiclass treatment in slides.
80 !
81 !history J-M HERVOUET (EDF R&D, LNHE)
82 !+ 22/03/2013
83 !+ V6P3
84 !+ Adding arguments THETAW_TEL, HW_TEL, TW_TEL for variables
85 !+ transmitted from Tomawac to Sisyphe through Telemac-2D or 3D in the
86 !+ of triple coupling.
87 !
88 !history R. KOPMANN (EDF R&D, LNHE)
89 !+ 16/04/2013
90 !+ V6P3
91 !+ Adding the file format in the call to FONSTR.
92 !
93 !history J-M HERVOUET (EDF R&D, LNHE)
94 !+ 02/01/2014
95 !+ V7P0
96 !+ KNOGL removed from call to flusec_sisyphe.
97 !
98 !history J-M HERVOUET (EDF R&D, LNHE)
99 !+ 28/04/2014
100 !+ V7P0
101 !+ Use of KP1BOR removed, replaced by IKLBOR.
102 !+ TPREC replaced by (TPREC-AT0) in formulas giving NUMEN0.
103 !+ OPTSUP replaced by OPTADV in the call to suspension_main
104 !+ (see keyword SCHME OPTION FOR ADVECTION)
105 !
106 !history J-M HERVOUET (EDF R&D, LNHE)
107 !+ 02/05/2014
108 !+ V7P0
109 !+ ZF_SIS renamed ZF_TEL (it is ZF in the memory of Telemac-2D or 3D
110 !+ so clearer like this isn't it?
111 !+ When a new ZF is received from Telemac, ELAY updated consequently,
112 !+ this was a long time overlooked bug, that can be seen when coupling
113 !+ with Telemac-3D with non-erodable beds.
114 !
115 !history C VILLARET (HRW+EDF) & J-M HERVOUET (EDF - LNHE)
116 !+ 18/09/2014
117 !+ V7P0
118 !+ Adding the variable UW_TEL in argument (orbital velocity)
119 !+ for getting it back to the calling program.
120 !
121 !history Y AUDOUIN (LNHE)
122 !+ 25/05/2015
123 !+ V7P0
124 !+ Modification to comply with the hermes module
125 !
126 !history J-M HERVOUET (EDF LAB, LNHE)
127 !+ 08/02/2016
128 !+ V7P2
129 !+ Adding the variable HPROP.
130 !
131 !history R KOPMANN (BAW)
132 !+ 10/05/2016
133 !+ V7P2
134 !+ CALFA,SALFA dependent of grain classes
135 !
136 !history J-M HERVOUET (EDF LAB, LNHE)
137 !+ 21/06/2016
138 !+ V7P2
139 !+ Changing the formula for VALNIT when coupling. For some reason the
140 !+ old formula is no longer valid.
141 !
142 !history S.E.BOURBAN (HRW))
143 !+ 01/01/2017
144 !+ V7P2
145 !+ Adding differentiated variables
146 !
147 !history J,RIEHME (ADJOINTWARE)
148 !+ November 2016
149 !+ V7P2
150 !+ Replaced EXTERNAL statements to parallel functions / subroutines
151 !+ by the INTERFACE_PARALLEL
152 !
153 !
154 !history N. HUYBRECHTS & P. TASSI
155 !+ December 2017
156 !+ V7P3
157 !+ Correction of input argument for the subroutine TASSEMENT_2
158 !+ ES replaced by ES_VASE
159 !
160 !history B.GLANDER (BAW)
161 !+ 06/12/2018
162 !+ V7P2
163 !+ NEW VARIABLE: ZRL REFERENCE LEVEL FOR NESTOR
164 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165 !| CF_TEL |<->| QUADRATIC FRICTION COEFFICIENT FROM TELEMAC
166 !| CHARR_TEL |<->| LOGICAL, BED LOAD OR NOT: Sent to TELEMAC-2D
167 !| CODE |-->| NAME OF CALLING PROGRAMME (TELEMAC2D OR 3D)
168 !| CONSTFLOW |<->| LOGICAL, CONSTANT FLOW DISCHARGE OR NOT (A SUPPRIMER)
169 !| CSRATIO |<->| EQUILIBRIUM CONCENTRATION FOR SOULSBY-VAN RIJN EQ.
170 !| DM1 |-->| THE PIECE-WISE CONSTANT PART OF ADVECTION FIELD
171 !| | | IS DM1*GRAD(ZCONV)
172 !| DT_TEL |-->| TIME STEP FROM TELEMAC
173 !| FLBOR_TEL |-->| FLOW FLUXES AT BOUNDARIES
174 !| GRAFCOUNT |-->| PERIOD OF GRAPHICAL OUTPUTS
175 !| GRCOMP |-->| COUNTER FOR GRAPHICAL OUTPUTS
176 !| HN_TEL |-->| WATER DEPTH FROM TEL HN
177 !| H_TEL |-->| WATER DEPTH FROM TEL H (N+1)
178 !| H_PROP |-->| WATER DEPTH FROM DIVERGENCE TERM IN CONTINUITY.
179 !| KS_TEL |-->| BED ROUGHNESS SENT TO TELEMAC
180 !| LISTCOUNT |-->| PERIODE DE SORTIE LISTING
181 !| LOOPCOUNT |-->| NUMERO DE L'ITERATION
182 !| UW_TEL |-->| ORBITAL VELOCITY
183 !| NSIS_CFD |---| NUMBER OF ITERATIONS FOR TELEMAC (CONSTANT FLOW DISCHARGE OPTION-TO BE SUPRESSED)
184 !| PART |-->| IF -1, NOT COUPLING : ON PASSE TOUTE LA
185 !| | | SUBROUTINE. SINON, INDIQUE LA PARTIE DE LA
186 !| | | SUBROUTINE DANS LAQUELLE ON PASSE
187 !| PERICOU |-->| COUPLING PERIOD FOR BEDLOAD
188 !| SISYPHE_CFD |<->| LOGICAL, CONSTANT FLOW DISCHARGE OR NOT
189 !| SOLSYS |-->|1 OR 2. IF 2 ADVECTION FIELD IS UCONV + DM1*GRAD(ZCONV)
190 !| SUSP_TEL |<->|LOGICAL, SUSPENDED LOAD OR NOT: Sent to TELEMAC-2D
191 !| TELNIT |-->| NUMBER OF TELEMAC ITERATIONS
192 !| T_TEL |-->| CURRENT TIME IN CALLING PROGRAMME
193 !| U3D,V3D |-->| 3D VELOCITY SENT BY TELEMAC 3D
194 !| UCONV_TEL |-->| ADVECTION VELOCITY FROM TELEMAC2D (X-DIRECTION)
195 !| UETCAR |<->| SQUARE OF THE FRICTION VELOCITY (COUPLING WITH TEL 3D)
196 !| U_TEL |-->| U VELOCITY FROM TELEMAC
197 !| VCONV_TEL |-->| ADVECTION VELOCITY FROM TELEMAC2D (Y-DIRECTION)
198 !| VISC_TEL |-->| VELOCITY DIFFUSIVITY (TELEMAC-2D)
199 !| V_TEL |-->| V VELOCITY FROM TELEMAC
200 !| ZCONV |-->| THE PIECE-WISE CONSTANT PART OF ADVECTION FIELD
201 !| | | IS DM1*GRAD(ZCONV), SEE SOLSYS.
202 !| ZF_TEL |<->| BOTTOM ELEVATION OF THE CALLING TELEMAC
203 !| API_ITER |<->| OPTIONAL - CURRENT ITERATION NUMBER IN THE API_SISYPHE
204 !| YAGOUT |-->| LOGICAL: IF YES GRAPHIC OUTPUT (STEERED BY T2D)
205 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206 !
207  USE interface_sisyphe, ex_sisyphe => sisyphe
208  USE bief
211  USE interface_hermes
213 !
214  USE interface_parallel, ONLY : p_max,p_min,p_max
215  IMPLICIT NONE
216 !
217 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
218 !
219  INTEGER, INTENT(IN) :: PART,LOOPCOUNT,GRAFCOUNT
220  INTEGER, INTENT(IN) :: LISTCOUNT,TELNIT,PERICOU
221  CHARACTER(LEN=24), INTENT(IN) :: CODE
222  TYPE(bief_obj), INTENT(IN) :: U_TEL,V_TEL,H_TEL,HN_TEL
223  TYPE(bief_obj), INTENT(INOUT) :: ZF_TEL,UETCAR,KS_TEL
224  INTEGER, INTENT(INOUT) :: NSIS_CFD
225  LOGICAL, INTENT(INOUT) :: CONSTFLOW,SISYPHE_CFD
226  TYPE(bief_obj), INTENT(IN) :: U3D,V3D,VISC_TEL
227  TYPE(bief_obj), INTENT(INOUT) :: CF_TEL
228  DOUBLE PRECISION, INTENT(IN) :: T_TEL
229  LOGICAL, INTENT(INOUT) :: CHARR_TEL,SUSP_TEL
230  DOUBLE PRECISION, INTENT(IN) :: DT_TEL
231  INTEGER, INTENT(IN) :: SOLSYS
232  TYPE(bief_obj), INTENT(IN) :: FLBOR_TEL,DM1,ZCONV
233  TYPE(bief_obj), INTENT(IN) :: UCONV_TEL,VCONV_TEL
234  TYPE(bief_obj), INTENT(IN) :: THETAW_TEL,HW_TEL,TW_TEL
235  TYPE(bief_obj), INTENT(IN) :: UW_TEL
236  LOGICAL, INTENT(IN) :: YAGOUT
237  INTEGER, OPTIONAL, INTENT(IN) :: API_ITER,GRCOMP
238 !
239 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
240 !
241  INTEGER, PARAMETER :: NHIST = 0
242  INTEGER, PARAMETER :: NSOR = 100
243  INTEGER :: NLISS
244  INTEGER :: I,J,K,MN,MT,ISOUS,IMA,IMI,IELEB,KP1,IVAR
245  INTEGER :: IERR
246  INTEGER :: IMIN,IMAX,NUMENX,NUMDEB
247  INTEGER :: TROUVE(maxvar+10)
248  DOUBLE PRECISION :: DTS,BID,XMA,XMI
249  DOUBLE PRECISION :: XMIN,XMAX
250  DOUBLE PRECISION :: AT,AT2
251  LOGICAL :: ENTETS,YAZR
252 !
253  DOUBLE PRECISION, POINTER, DIMENSION(:) :: SAVEZF,SAVEQU,SAVEQV
254  DOUBLE PRECISION, POINTER, DIMENSION(:) :: SAVEZ
255  DOUBLE PRECISION, POINTER, DIMENSION(:) :: SAVEUW
256 !
257  INTEGER, ALLOCATABLE :: NULLT(:)
258  DOUBLE PRECISION, ALLOCATABLE :: NULLD(:)
259 !
260 ! SAVES LOCAL VARIABLES
261 ! NUMEN0 : 1ST RECORD TO READ
262  INTEGER :: NUMEN0
263  INTEGER :: DEBUT,FIN
264 !
265 ! VARIABLES TO READ IF COMPUTATION IS CONTINUED
266 ! --------------------------------
267 ! 0 : DISCARD
268 ! 1 : READ (SEE SUBROUTINE NOMVAR)
269 !
270 ! HYDRO + EVOLUTION
271  INTEGER :: ALIRE(maxvar) =
272  & (/ (1,i=1,9),(0,i=10,maxvar) /)
273 ! WAVES ONLY
274  INTEGER :: ALIRH(maxvar) =
275  & (/ (0,i=1,11),(1,i=12,14),(0,i=15,maxvar) /)
276 !
277 ! FOR VALIDATION, EACH VARIABLE IN THE FILE IS COMPARED
278 !
279  INTEGER :: ALIRV(maxvar) = (/ (1,i=1,maxvar) /)
280 !
281 !======================================================================!
282 !======================================================================!
283 ! PROGRAM !
284 !======================================================================!
285 !======================================================================!
286 !
287 #if defined COMPAD
288  CALL ad_sisyphe_begin
290 #endif
291 !
292 !------------------------------------------------------------------
293 ! PART 1 : INITIALISATION
294 !------------------------------------------------------------------
295 !
296  percou = pericou !UHM!!!!!!!
297 !
298  IF(part==0.OR.part==-1.OR.part==2) THEN
299  IF(debug.GT.0) WRITE(lu,*) 'INITIALIZATION'
300 !
301  WRITE(lu,*) 'PART 0 : INITIALISING SISYPHE'
302 !
303 ! INITIALISES THE CONSTANTS
304 !
306 !
307 ! READS THE WAVE DATA IN THE HYDRODYNAMIC FILE
308 !
309  IF(houle.AND.sis_files(siscou)%NAME(1:1).EQ.' ') THEN
310  alire(12)=1
311  alire(13)=1
312  alire(14)=1
313  alire(22)=1
314  ENDIF
315 !
316 ! READS THE SEDIMENTOLOGICAL DATA IN THE CONTINUATION FILE
317 !
318  IF(debu) THEN
319  alire(15)=1
320  alire(16)=1
321  alire(17)=1
322  alire(18)=1
323  alire(19)=1
324  alire(20)=1
325  alire(21)=1
326 ! TO READ REFERENCE LEVEL ZRL FOR NESTOR IN THE RESTART FILE
327  IF(nestor) alire(23)=1
328 ! READS AVAI FROM THE PREVIOUS COMPUTATION FILE
329  DO i=1,nsicla*nomblay
330  alire(23+i)=1
331  ENDDO
332 ! READS CS (CONCENTRATION) FROM THE PREVIOUS COMPUTATION FILE
333  IF(susp) THEN
334  DO i=1,nsicla
335  alire(23+(nomblay+1)*nsicla+i)=1
336  ENDDO
337  ENDIF
338 ! READS THE LAYER THICKNESSES
339  DO i=1,nomblay
340  alire(29+(nomblay+4)*nsicla+i)=1
341  ENDDO
342  ENDIF
343 ! V6P2 CV lecture concentration des couches
344  IF(tass) THEN
345  DO i=1,nomblay
346  alire(29+(nomblay+4)*nsicla+i+nomblay)=1
347  ENDDO
348  ENDIF
349 !
350 ! INITIALISING DEPOSITS ON THE BOTTOM
351 ! THEY MUST BE USED IN BILAN_SISYPHE EVEN IF SUSP=.FALSE.
352 !
353  DO i=1,nsicla
354  masdep(i)=0.d0
355  masdept(i)=0.d0
356  ENDDO
357 !
358 ! DIFFERENTIATED VARIABLES
359 ! FOR READING GRADIENTS IN SELAFIN FILES
360 !
361  k = 29+max(4,npriv)+nsicla*(nomblay+4)+2*nomblay+varcl%N
362  IF(nadvar.GT.0) THEN
363  DO ivar=1,nadvar
364 ! SEE NOMVAR_SISYPHE
365  alire(k+ivar) = 1
366  ENDDO
367  ENDIF
368 !
369 ! -------- INITIALISES (SETS TO 0) THE ARRAYS
370 !
371  CALL init_zero
372 !
373 ! -- INITIALISES THE REFERENCE LEVEL ZRL FOR NESTOR
374 ! IT MUST BE EXACLY 123456789.0D0
375  zrl%R(:) = 123456789.0d0
376 !
377 ! -------- END OF INITIALISATION
378 !
379 ! DISCRETISATION : LINEAR FOR THE TIME BEING
380 !
381 ! IELMT HARD-CODED IN LECDON
382 !
384  nelmax = nelem
385 !
386 !=======================================================================
387 !
388 ! : 1 READS, PREPARES AND CONTROLS THE DATA
389 !
390 !=======================================================================
391 !
392 ! READS THE BOUNDARY CONDITIONS AND INDICES FOR THE BOUNDARY NODES
393 ! EBOR IS READ HERE FOR THE FIRST CLASS ONLY
394 ! SEE CONLIT FOR OTHER CLASSES
395 !
396  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE LECLIM'
397  ALLOCATE(nullt(nptfr),stat=ierr)
398  CALL check_allocate(ierr,'NULLT')
399  ALLOCATE(nulld(nptfr*2),stat=ierr)
400  CALL check_allocate(ierr,'NULLD')
401  CALL leclim(lihbor%I,liqbor%I,nullt,liebor%I,q2bor%R,nulld,
402  & nulld,ebor%ADR(1)%P%R,nulld,afbor%R,bfbor%R,
403  & mesh%NPTFR,'SIS',.true.,
404  & sis_files(sisgeo)%FMT,sis_files(sisgeo)%LU,
405  & kent,kent,-1,-1,-1,-1,
407  DEALLOCATE(nullt)
408  DEALLOCATE(nulld)
409  IF(debug.GT.0) WRITE(lu,*) 'END_LECLIM'
410 !
411 !-----------------------------------------------------------------------
412 !
413 ! COMPLEMENTS THE DATA STRUCTURE FOR BIEF
414 !
415  IF(debug.GT.0) WRITE(lu,*) 'INBIEF'
416  CALL inbief(it1%I,klog,it2,it3,it4,lvmac,ielmx,
417  & 0.d0,spheri,mesh,t1,t2,optass,produc,equa)
418 !
419  IF(debug.GT.0) WRITE(lu,*) 'END_INBIEF'
420 !
421 !-----------------------------------------------------------------------
422 !
423 ! LOCATES THE BOUNDARIES
424 !
425  IF(ncsize.GT.1) THEN
426  nfrliq=0
427  DO i=1,nptfr
428  nfrliq=max(nfrliq,numliq%I(i))
429  ENDDO
431  WRITE(lu,*) ' '
432  WRITE(lu,*) 'LIQUID BOUNDARIES:',nfrliq
433 ! NFRLIQ CHECKED (NFRSOL NOT USED IN PARALLEL)
434  IF(nfrliq.GT.maxfro) THEN
435  WRITE(lu,*) 'INCREASE THE MAXIMUM NUMBER OF BOUNDARIES'
436  WRITE(lu,*) 'CURRENTLY AT ',maxfro
437  WRITE(lu,*) 'TO THE VALUE ',nfrliq
438  CALL plante(1)
439  stop
440  ENDIF
441  ELSE
442  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE FRONT2'
443  CALL front2(nfrliq,
444  & liebor%I,liebor%I,
445  & mesh%X%R,mesh%Y%R,mesh%NBOR%I,mesh%KP1BOR%I,
446  & it1%I,npoin,nptfr,klog,.true.,numliq%I,maxfro)
447  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE FRONT2'
448  ENDIF
449  IF(nfrliq.GT.maxfro) THEN
450  WRITE(lu,*) 'FRONT2: SIZE OF ARRAYS EXCEEDED'
451  WRITE(lu,*) ' INCREASE THE KEYWORD'
452  WRITE(lu,*) ' MAXIMUM NUMBER OF BOUNDARIES'
453  WRITE(lu,*) ' IN THE CALLING PROGRAM'
454  WRITE(lu,*) ' THE CURRENT VALUE IS ',maxfro
455  WRITE(lu,*) ' THE VALUE SHOULD BE ',nfrliq
456  CALL plante(1)
457  stop
458  ENDIF
459 !
460 !-----------------------------------------------------------------------
461 ! LOOKS FOR BOTTOM AND BOTTOM FRICTION IN THE GEOMETRY FILE :
462 !-----------------------------------------------------------------------
463 !
464  IF(debug.GT.0) WRITE(lu,*) 'FONSTR'
465  CALL fonstr(t1,zf,t2,chestr,sis_files(sisgeo)%LU,
466  & sis_files(sisgeo)%FMT,
467  & sis_files(sisfon)%LU,sis_files(sisfon)%NAME,
468  & mesh,sfon,.true.,
470  IF(debug.GT.0) WRITE(lu,*) 'END_FONSTR'
471 !
472 !
473 !-----------------------------------------------------------------------
474 ! LOOKS FOR RADSEC FOR SECONDARY CURRENTS IN THE GEOMETRY FILE :
475 !-----------------------------------------------------------------------
476 !
477 !
478 ! RADSEC IS LANGUAGE INDEPENDENT
479 ! CALL FIND_VARIABLE(RADSEC,'RADSEC ',SIS_FILES(SISGEO)%LU,
480 ! & SIS_FILES(SISGEO)%FMT,W,OKRADSEC,TIME=BID)
481 ! Initialising
482  radsec%R=0.d0
484  & 'RADSEC ', radsec%R,npoin,ierr)
485 !
486 !-----------------------------------------------------------------------
487 ! LOOKS FOR RFERENCE LEVEL FOR NESTOR IN THE GEOMETRY FILE :
488 !-----------------------------------------------------------------------
489 ! REFERENCE LEVEL IS LANGUAGE INDEPENDENT
490 ! Initialising
492  & 'REFERENCE LEVEL ', zrl%R,npoin,ierr)
493  IF( ierr == 0 ) THEN
494  WRITE(6,*)'-------------------------------------------'
495  WRITE(6,*)
496  & 'Found REFERENCE LEVEL (ZRL) for Nestor in Sis Geometry file'
497  WRITE(6,*)' max value of ZRL = ',maxval(zrl%R)
498  WRITE(6,*)' min value of ZRL = ',minval(zrl%R)
499  WRITE(6,*)'-------------------------------------------'
500  ENDIF
501 !
502 !-----------------------------------------------------------------------
503 
504 !-----------------------------------------------------------------------
505 !
506 ! PREPARES THE RESULTS FILE (OPTIONAL)
507 !
508 ! STANDARD SELAFIN FORMAT
509 !
510  IF(debug.GT.0) WRITE(lu,*) 'WRITE_HEADER'
511 ! CREATES DATA FILE USING A GIVEN FILE FORMAT : FORMAT_RES
512 ! THE DATA ARE CREATED IN THE FILE: SISRES, AND ARE
513 ! CHARACTERISED BY A TITLE AND NAME OF OUTPUT VARIABLES
514 ! CONTAINED IN THE FILE.
515  CALL write_header(sis_files(sisres)%FMT, ! RESULTS FILE FORMAT
516  & sis_files(sisres)%LU, ! LU FOR RESULTS FILE
517  & titca, ! TITLE
518  & maxvar, ! MAX NUMBER OF OUTPUT VARIABLES
519  & texte, ! NAMES OF OUTPUT VARIABLES
520  & sorleo) ! PRINT TO FILE OR NOT
521  IF(debug.GT.0) WRITE(lu,*) 'END_WRITE_HEADER'
522  IF(debug.GT.0) WRITE(lu,*) 'WRITE_MESH'
523 ! WRITES THE MESH IN THE OUTPUT FILE :
524 ! IN PARALLEL, REQUIRES NCSIZE AND NPTIR.
525 ! THE REST OF THE INFORMATION IS IN MESH.
526 ! ALSO WRITES : START DATE/TIME AND COORDINATES OF THE
527 ! ORIGIN.
528  CALL write_mesh(sis_files(sisres)%FMT, ! RESULTS FILE FORMAT
529  & sis_files(sisres)%LU, ! LU FOR RESULTS FILE
530  & mesh,
531  & 1, ! NUMBER OF PLANES /NA/
532  & mardat, ! START DATE
533  & martim, ! START TIME
534  & t1,t2,
535  & ncsize.GT.1, nptir,
536  & ngeo=sis_files(sisgeo)%LU,
537  & geoformat=sis_files(sisgeo)%FMT)
538  IF(debug.GT.0) WRITE(lu,*) 'END_WRITE_MESH'
539 !
540 ! --- FILLS IN MASKEL BY DEFAULT
541 !
542  IF(msk) CALL os ('X=C ', x=maskel, c=1.d0)
543 !
544 ! BUILDING THE MASK FOR LIQUID BOUNDARIES
545 ! A SEGMENT IS LIQUID IF BOTH ENDS ARE NOT SOLID
546 !
547  DO ieleb = 1, mesh%NELEB
548  k=mesh%IKLBOR%I(ieleb)
549  kp1=mesh%IKLBOR%I(ieleb+mesh%NELEBX)
550  IF(liebor%I(k).NE.2.AND.liebor%I(kp1).NE.2) THEN
551  mask%R(ieleb) = 1.d0
552  ELSE
553  mask%R(ieleb) = 0.d0
554  ENDIF
555  ENDDO
556 !
557 !=======================================================================
558 !
559 ! : 2 INITIALISES
560 !
561 !=======================================================================
562 !
563  pass = .true.
564 !
565  pass_susp = .true.
566  vcumu = 0.d0
567  mass_gf = 0.d0
568 !
569 !
570 !---- DETERMINES THE NUMBER OF EVENTS (1ST LOOP) : NCALCU
571 ! NUMBER OF TIMESTEPS (2ND LOOP) : NIDT
572 ! TOTAL NUMBER OF TIMESTEPS : NIT
573 ! INITIAL TIME : AT0
574 ! TIMESTEP : DT
575 !
576 !
577 ! INITIALIZING IN CASE OF COUPLING
578  IF(part.EQ.0.OR.(part.EQ.2.AND.code(1:7).EQ.'TELEMAC')) THEN
579  at0=t_tel
580  dt = dt_tel
581  ncalcu = 1
582  nidt = 1
583  nit=telnit
584  ELSE
585  at0=max(tprec,0.d0)
586  dt=delt
587  IF(perma) THEN
588  ncalcu=1
589  nidt=npas
590  nit=nidt
591  nsous=1
592  ELSE
593  ncalcu = nmaree
594 ! COMPUTES DT AFTER READING THE HYDRO FILE
595 ! NIDT = NINT ( PMAREE / DT + 0.1D0 )
596 ! NIT=NIDT*NCALCU
597 ! ELSE
598  nidt=npas
599  nit=nidt*ncalcu
600  ENDIF
601  ENDIF
602 !
603 ! UNSTEADY MODE : DT IS COMPUTED FROM THE HYDRO FILE
604 ! NUMEN: TOTAL NUMBER OF RECORDS
605  IF(sis_files(sishyd)%NAME(1:1).NE.' ') THEN
606 ! JUST TO GET NUMEN AND DT
607  ! GET THE RECORD NUMBER OF THE LAST TIMESTEP
608  ! AND THE TIME STEP BETWEEN TWO RECORDS
610  & sis_files(sishyd)%LU,numen,ierr)
611  CALL check_call(ierr,'SISYPHE:GET_DATA_NTIMESTEP')
612  IF(perma) THEN
613  dt = delt
614  ELSE
615  ! GET TIME FOR ONE BEFORE LAST RECORD
616  CALL get_data_time(sis_files(sishyd)%FMT,
617  & sis_files(sishyd)%LU,numen-2,at2,ierr)
618  CALL check_call(ierr,'SISYPHE:GET_DATA_TIME:AT2')
619  ! GET TIME FOR LAST RECORD
620  CALL get_data_time(sis_files(sishyd)%FMT,
621  & sis_files(sishyd)%LU,numen-1,at,ierr)
622  CALL check_call(ierr,'SISYPHE:GET_DATA_TIME:AT')
623  dt = at - at2
624  nidt = nint( pmaree / dt + 0.1d0 )
625  IF(abs(nidt*dt-pmaree) > 1.d-3) THEN
626  WRITE(lu,102) nidt*dt
627  ENDIF
628  nit = ncalcu * nidt
629  ENDIF
630  ENDIF
631 !
632 ! VALIDATES AGAINST THE LAST TIMESTEP
633 !
634  valnit = nit
635 !
636 102 FORMAT(/,
637  & 'CAUTION : THE PERIOD OF COMPUTATION IS NOT A MULTIPLE',
638  & /,'OF THE HYDRODYNAMIC FILE PRINTOUT PERIOD.',/,
639  & 'THE LENGTH OF COMPUTATION WILL THEREFORE BE',g16.7,/,
640  & 'SECONDS')
641 !
642 ! SISYPHE ONLY
643 ! -----------------------------------------------------------------------
644 !
645 ! NUMEN : NUMBER OF RECORDS IN THE HYDRODYNAMIC FILE
646 ! DT : TIMESTEP OF THE HYDRODYNAMIC RECORDS
647 ! NUMEN0: 1ST RECORD TO READ FROM HYDRODYNAMIC FILE
648 ! TPREC : START TIME
649 !
650  IF(part.EQ.-1.OR.(part.EQ.2.AND.code(1:7).NE.'TELEMAC')) THEN
651  IF(.NOT.perma) THEN
652  IF(tprec.GE.0.d0) THEN
653  numen0 = nint((tprec-at0)/dt)+1
654  ELSE
655  numen0 = numen-int(pmaree/dt+1.1d0)
656  ENDIF
657  ELSE
658  IF(tprec.GE.0.d0) THEN
659  numen0 = nint((tprec-at0)/dt)+1
660  ELSE
661  numen0 = numen
662  ENDIF
663  ENDIF
664 !
665  IF(sis_files(sishyd)%NAME(1:1).NE.' ') THEN
666  IF(debug.GT.0) WRITE(lu,*) 'READ_DATASET'
667  ! The time step are numbered from 0
668  numen0 = numen0 - 1
669  CALL read_dataset(sis_files(sishyd)%FMT,
670  & sis_files(sishyd)%LU,varsor,npoin,numen0,at,
671  & textpr,trouve,alire,.true.,perma,maxvar)
672 !
673 ! TRACES IF WAVE DATA HAVE BEEN FOUND
674 !
675  IF(houle) THEN
676 ! NOTE: BIEF_ALLVEC SETS %TYPR TO '?'
677  IF(trouve(12).EQ.1) hw%TYPR='Q'
678  IF(trouve(13).EQ.1) tw%TYPR='Q'
679  IF(trouve(14).EQ.1) thetaw%TYPR='Q'
680  IF(trouve(22).EQ.1) uw%TYPR='Q'
681  IF(uw%TYPR=='Q') THEN
682  WRITE(lu,*)
683  WRITE(lu,*) 'WAVE RESULTS IN :',sis_files(sishyd)%NAME
684  WRITE(lu,*)
685  WRITE(lu,*) 'BOTTOM ORBITAL VELOCITY FOUND'
686  WRITE(lu,*) 'THESE WILL BE USED DIRECTLY'
687  WRITE(lu,*)
688  ELSEIF(hw%TYPR=='Q'.AND.tw%TYPR=='Q') THEN
689  WRITE(lu,*)
690  WRITE(lu,*) 'WAVE RESULTS IN :',sis_files(sishyd)%NAME
691  WRITE(lu,*)
692  WRITE(lu,*) 'WAVE HEIGHT AND PERIOD FOUND'
693  WRITE(lu,*) 'BOTTOM VELOCITY WILL BE COMPUTED IN CALCUW'
694  WRITE(lu,*)
695  ENDIF
696  ENDIF
697  IF(debug.GT.0) WRITE(lu,*) 'END_READ_DATASET'
698  IF(debug.GT.0) WRITE(lu,*) 'RESCUE_SISYPHE'
699  CALL rescue_sisyphe(hn%R,z%R,zf%R,
700  & zr%R,es,hw%R,tw%R,thetaw%R,npoin,nomblay,
701  & nsicla,trouve,alire,pass,icf,.true.,
702  & maxvar)
703  IF(debug.GT.0) WRITE(lu,*) 'END_RESCUE_SISYPHE'
704 !
705 ! DIFFERENTIATED VARIABLES
706 !
707  IF( nadvar.GT.0 ) THEN
708  DO ivar = 1,nadvar
709  CALL ad_set_sisyphe(ivar,advar%ADR(ivar)%P)
710  ENDDO
711  ENDIF
712 !
713  ENDIF
714 !
715  ENDIF
716 !
717 !---- RESUMES SISYPHE COMPUTATION
718 !
719  yazr=.false.
720  IF(sis_files(sispre)%NAME(1:1).NE.' ') THEN
721 !
722 ! READS THE HYDRO AND SEDIMENTOLOGICAL VARIABLES
723 !
724  IF(debug.GT.0) WRITE(lu,*) 'READ_DATASET'
726  & varsor,npoin,numenx,at0,textpr,trouve,alire,
727  & .true.,.true.,maxvar)
728 !
729  IF( trouve(23) == 1 ) THEN ! found REFERENCE LEVEL for Nestor in sis previous comp. file
730  WRITE(6,*)'-------------------------------------------'
731  WRITE(6,*)
732  & 'Found REFERENCE LEVEL (ZRL) for Nestor in the '
733  WRITE(6,*)
734  & 'Sisyphe restart file.'
735  WRITE(6,*)' max value of ZRL = ',maxval(zrl%R)
736  WRITE(6,*)' min value of ZRL = ',minval(zrl%R)
737  WRITE(6,*)'-------------------------------------------'
738  ENDIF
739 !
740  IF(debug.GT.0) WRITE(lu,*) 'END_READ_DATASET'
741 !
742  IF(debug.GT.0) WRITE(lu,*) 'RESCUE_SISYPHE'
743  CALL rescue_sisyphe(hn%R,z%R,zf%R,
744  & zr%R,es,hw%R,tw%R,thetaw%R,npoin,nomblay,
745  & nsicla,trouve,alire,pass,icf,.true.,
746  & maxvar)
747  IF(trouve(9).EQ.1) yazr=.true.
748  IF(debug.GT.0) WRITE(lu,*) 'SORTIE DE RESCUE_SISYPHE'
749 !
750 ! CHANGES THE UNITS OF CONCENTRATIONS
751 !
752  IF(susp.AND.unit) THEN
753  DO i=1,nsicla
754  IF(trouve(23+(nomblay+1)*nsicla+i).EQ.1) THEN
755  CALL os('X=CX ',x=cs%ADR(i)%P,c=1.d0/xmvs)
756  ENDIF
757  ENDDO
758  ENDIF
759 !
760  ENDIF
761 !
762 !---- READS THE LAST RECORD : WAVE FILE
763 !
764 ! NOTE : SIS_FILES(SISCOU)%NAME SET TO ' ' IF HOULE=NO
765 !
766  IF(sis_files(siscou)%NAME(1:1).NE.' ') THEN
767 !
768  IF(debug.GT.0) WRITE(lu,*) 'SUITE_HOULE'
769  WRITE(lu,*) ' LECTURE HOULE :',sis_files(siscou)%NAME
771  & varsor,npoin,numenx,at,textpr,trouve,alirh,
772  & .true.,.true.,maxvar)
773  IF(debug.GT.0) WRITE(lu,*) 'END_SUITE_HOULE'
774 ! TRACES IF WAVE DATA HAVE BEEN FOUND
775  IF(trouve(12).EQ.1) hw%TYPR='Q'
776  IF(trouve(13).EQ.1) tw%TYPR='Q'
777  IF(trouve(14).EQ.1) thetaw%TYPR='Q'
778 !
779  ENDIF
780 !
781  IF(code(1:7) == 'TELEMAC'.AND.(part==0.OR.part==2)) THEN
782 !
783  at0=t_tel
784 !
785  WRITE(lu,*) 'INITIALISATION EN CAS DE COUPLAGE : PART=',part
786 ! INFORMATION ON SUSPENSION SENT BACK
787  charr_tel = charr
788  susp_tel = susp
789 !
790 ! OV INSTEAD OF OS IN ORDER TO AVOID PROBLEMS WITH QUASI-BUBBLE ELEMENTS
791 ! OPERATES ONLY ON THE (1:NPOIN) RANGE OF THE TELEMAC FIELDS
792 ! IT IS A HIDDEN DISCRETISATION CHANGE
793 !
794  CALL ov('X=Y ', x=u2d%R, y=u_tel%R, dim1=npoin)
795  CALL ov('X=Y ', x=v2d%R, y=v_tel%R, dim1=npoin)
796  CALL ov('X=Y ', x=hn%R, y=h_tel%R, dim1=npoin)
797 ! BOTTOM GIVEN BY CALLING PROGRAMME
798  CALL os('X=Y ', x=zf, y=zf_tel)
799 !
800 ! CLIPS NEGATIVE DEPTHS
801 !
802  IF(optban.GT.0) THEN
803  DO i = 1,npoin
804  IF(hn%R(i).LT.hmin) THEN
805  u2d%R(i)=0.d0
806  v2d%R(i)=0.d0
807  hn%R(i) = hmin
808  ENDIF
809  ENDDO
810  ENDIF
811 !
812 ! CASE OF TRIPLE COUPLING
813 !
814  IF(inclus(coupling,'TOMAWAC')) THEN
815 ! incident wave direction
816  CALL os('X=Y ',x=thetaw,y=thetaw_tel)
817 ! Wave period
818  CALL os( 'X=Y ', x=tw, y=tw_tel)
819 ! significant wave height
820  CALL os( 'X=Y ', x=hw , y=hw_tel)
821 ! Bottom orbital velocity
822  CALL os( 'X=Y ', x=uw , y=uw_tel)
823  hw%TYPR='Q'
824  tw%TYPR='Q'
825  thetaw%TYPR='Q'
826  uw%TYPR='Q'
827  ENDIF
828 !
829  ENDIF
830 !
831 ! ---- END COUPLING -------------
832 !
833  IF(debug.GT.0) WRITE(lu,*) 'CONDIM_SISYPHE'
834  IF(.NOT.debu) THEN
835  CALL condim_sisyphe
836  & (u2d%R,v2d%R,qu%R,qv%R,hn%R,zf%R,z%R,esomt%R,thetaw%R,
837  & q%R,hw%R,tw%R,mesh%X%R,mesh%Y%R,npoin,at0,pmaree)
838  ENDIF
839  IF(debug.GT.0) WRITE(lu,*) 'END_CONDIM_SISYPHE'
840 !
841 ! AT THIS LEVEL U2D,V2D,H AND ZF MUST HAVE BEEN DEFINED
842 ! EITHER BY READ_DATASET, CONDIM_SISYPHE OR CALLING PROGRAM
843 !
844 ! NOW COMPUTES FUNCTIONS OF U2D,V2D,HN AND ZF
845 !
846 ! FREE SURFACE
847  IF(debug.GT.0) WRITE(lu,*) 'FREE SURFACE'
848  CALL os('X=Y+Z ', x=z, y=zf, z=hn)
849  IF(debug.GT.0) WRITE(lu,*) 'END FREE SURFACE'
850 !
851  IF(code(1:7).NE.'TELEMAC') THEN
852 ! PRODUCT H*
853  CALL os('X=YZ ', x=qu, y=u2d, z=hn)
854 ! PRODUCT H*V
855  CALL os('X=YZ ', x=qv, y=v2d, z=hn)
856 ! DISCHARGE
857  CALL os('X=N(Y,Z)', x=q, y=qu, z=qv)
858  ENDIF
859 !
860 ! CHECKS THE WAVE DATA
861 !
862  IF(houle) THEN
863  IF(uw%TYPR.EQ.'Q') THEN
864 ! IF(HW%TYPR .NE.'Q'.OR.
865  ELSEIF(hw%TYPR .NE.'Q'.OR.
866  & tw%TYPR .NE.'Q'.OR.
867  & thetaw%TYPR.NE.'Q') THEN
868  WRITE(lu,*) ' '
869  WRITE(lu,*) ' '
870  WRITE(lu,*) 'MISSING WAVE DATA'
871  IF(lng.EQ.lng_fr) THEN
872  IF(hw%TYPR.NE.'Q') WRITE(lu,*) 'HAUTEUR HM0'
873  IF(tw%TYPR.NE.'Q') WRITE(lu,*) 'PERIODE PIC TPR5'
874  IF(thetaw%TYPR.NE.'Q') WRITE(lu,*) 'DIRECTION MOY'
875  ENDIF
876  IF(lng.EQ.lng_en) THEN
877  IF(hw%TYPR.NE.'Q') WRITE(lu,*) 'WAVE HEIGHT HM0'
878  IF(tw%TYPR.NE.'Q') WRITE(lu,*) 'PEAK PERIOD TPR5'
879  IF(thetaw%TYPR.NE.'Q') WRITE(lu,*) 'MEAN DIRECTION'
880  ENDIF
881  CALL plante(1)
882  stop
883  ENDIF
884  ENDIF
885 !
886 ! END OF HYDRODYNAMIC INITIALISATION
887 !
888 !
889 ! COMPUTES AREAS (WITHOUT MASKING)
890 !
891  IF(debug.GT.0) WRITE(lu,*) 'VECTOR FOR VOLU2D'
892  CALL vector(volu2d,'=','MASBAS ',
893  & ielmh_sis,1.d0,
894  & t1,t1,t1,t1,t1,t1,mesh,.false.,maskel)
895  IF(debug.GT.0) WRITE(lu,*) 'END VECTOR FOR VOLU2D'
896 ! V2DPAR : LIKE VOLU2D BUT IN PARALLEL VALUES COMPLETED AT
897 ! INTERFACES BETWEEN SUBDOMAINS
898  CALL os('X=Y ',x=v2dpar,y=volu2d)
899  IF(ncsize.GT.1) CALL parcom(v2dpar,2,mesh)
900 ! INVERSE OF VOLUMES (DONE WITHOUT MASKING)
901  CALL os('X=1/Y ',x=unsv2d,y=v2dpar,
902  & iopt=2,infini=0.d0,zero=1.d-12)
903 !
904 ! START OF MODIFICATIONS FOR MIXED SEDIMENTS
905 !
906 ! SETTING THE NON-ERODABLE BED (IT CAN BE SET BEFORE
907 ! IF COMPUTATION CONTINUED, I.E. DEBU)
908 !
909  IF(.NOT.debu.OR..NOT.yazr) THEN
910  IF(debug.GT.0) WRITE(lu,*) 'NOEROD'
911  CALL noerod(hn%R,zf%R,zr%R,z%R,mesh%X%R,
912  & mesh%Y%R,npoin,choix,nliss)
913  IF(debug.GT.0) WRITE(lu,*) 'END NOEROD'
914  ENDIF
915 !
916 ! INITIALISATION FOR SEDIMENT
917 !
918  IF(debug.GT.0) WRITE(lu,*) 'INIT_SEDIMENT'
925  & unladm,toce_sable,
926  & conc,debu,mixte)
927  IF(debug.GT.0) WRITE(lu,*) 'END INIT_SEDIMENT'
928 !
929 !
930 ! END OF MODIFICATIONS CV
931 !
932 !
933 ! MEAN VELOCITY
934 !======================================================================
935  CALL os('X=N(Y,Z)',x=unorm,y=u2d,z=v2d)
936 ! =====================================================================
937 ! WAVE ORBITAL VELOCITY
938 ! =====================================================================
939  IF(houle) THEN
940 ! JWI 31/05/2012 - added lines to use wave orbital velocities
941 ! directly if found in hydro file; otherwise compute with CALCUW
942  IF(uw%TYPR.NE.'Q') THEN
943  CALL calcuw(uw%R,hn%R,hw%R,tw%R,grav,npoin)
944  ENDIF
945  ENDIF
946 !
947 ! =====================================================================
948 !
949  IF(debug.GT.0) WRITE(lu,*) 'TOB_SISYPHE'
951  & chestr,uetcar,cf_tel,ks_tel,code ,
955  IF(debug.GT.0) WRITE(lu,*) 'END TOB_SISYPHE'
956 !
957 ! INITIALISATION FOR TRANSPORT
958 !
959  IF(debug.GT.0) WRITE(lu,*) 'INIT_TRANSPORT'
960  CALL init_transport(trouve,debu,hiding,nsicla,npoin,
961  & t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,
970  & u3d,v3d,code)
971  IF(debug.GT.0) WRITE(lu,*) 'END INIT_TRANSPORT'
972 !
973 ! ---------- DEBUT IMPRESSIION INITIALISATION =================
974 !
975  CALL entete_sisyphe(1,at0,0)
976 ! PREPARES RESULTS
977 !
978 ! CONCENTRATION OUTPUT IN G/L
979 !
980  IF(unit) CALL os('X=CX ',x=cs,c=xmvs)
981  CALL predes(0,at0,.true.,code)
982 !
983 ! PRINTS OUT THE RESULTS
984 !
985  IF(debug.GT.0) WRITE(lu,*) 'BIEF_DESIMP'
987  & npoin,sis_files(sisres)%LU,
989  & texte,ptinig,ptinil,
990  & ileo=yagout)
991  IF(debug.GT.0) WRITE(lu,*) 'END BIEF_DESIMP'
992 !
993  IF(unit) CALL os('X=CX ',x=cs,c=1.d0/xmvs)
994 !
995 !===============FIN IMPRESSION CONDITIONS INITIALES =================
996 !
997 ! COUPLING
998 !
999  IF(nestor) THEN
1000  leopr = grafcount
1001  CALL nestor_interface(1)
1002  WRITE(lu,*) 'SISYPHE COUPLED WITH NESTOR'
1003  ENDIF
1004 !
1005  IF(code(1:7).NE.'SISYPHE') THEN
1006  WRITE(lu,*) 'SISYPHE COUPLED WITH: ',code
1007  ENDIF
1008 !
1009 ! COUPLING WITH TELEMAC-2D OR 3D
1010 !
1011  IF(code(1:7).EQ.'TELEMAC') ncalcu = 1
1012 !
1013 !=======================================================================
1014 !
1015 ! INITIAL CONDITION FOR CONSTANT FLOW DISCHARGE
1016 !
1017  IF(lcondis) THEN
1018  sisyphe_cfd = lcondis
1019  nsis_cfd = ncondis
1020  constflow = .false.
1021  ELSE
1022  sisyphe_cfd = .false.
1023  nsis_cfd = 1
1024  constflow = .false.
1025  ENDIF
1026 !
1027 !------------------------------------------------------------------
1028 !
1029 #if defined COMPAD
1031 #endif
1032 !
1033 !=======================================================================
1034 !
1035 ! END OF INITIALISATIONS
1036  IF(debug.GT.0) WRITE(lu,*) 'END_INITIALIZATION'
1037  ENDIF ! IF (PART==0 OR PART = -1 OR PART=2)!
1038 !=======================================================================
1039 !
1040  IF(part==1.OR.part==-1.OR.part==3) THEN
1041 !
1042  IF(debug.GT.0) WRITE(lu,*) 'TIME_LOOP'
1043 !
1044 !=======================================================================
1045 !
1046 ! : 3 /* LOOP ON TIME */
1047 !
1048 !=======================================================================
1049 !
1050 !---- STOPS THE COMPUTATION WHEN THE REQUIRED NUMBER OF ITERATIONS IS 0
1051 !
1052  IF(nit == 0) THEN
1053  WRITE(lu,201)
1054 201 FORMAT(' STOP IN SISYPHE, NUMBER OF ITERATIONS EQ.0')
1055  CALL plante(1)
1056  stop
1057  ENDIF
1058 !
1059 !---------------------------------------------------------------------
1060 ! STARTS THE COMPUTATIONS
1061 !---------------------------------------------------------------------
1062 ! LOOP ON THE NUMBER OF EVENTS
1063 ! (IN STEADY STATE: LOOP ON THE TIMESTEPS)
1064 !---------------------------------------------------------------------
1065 !
1066  IF(code(1:7) == 'TELEMAC') THEN
1067 ! VALNIT WILL BE USED FOR CALLING VALIDA
1068  valnit = (telnit/pericou)*pericou
1069 ! TO AVOID 2 SUCCESSIVE CALLS TO VALIDA
1070 ! WHEN BEDLOAD AND SUSPENSION
1071  IF(grafcount.GT.telnit) valnit=nit+1
1072 ! CHARR, SUSP AND TIME STEP MONITORED BY CALLING PROGRAM
1073  charr = charr_tel
1074  susp= susp_tel
1075  at0=t_tel
1076  dt=mofac*dt
1077 !
1078  ENDIF
1079 !
1080  DO mn = 1, ncalcu
1081 !
1082  IF(part.EQ.3) THEN
1083  ! API_ITER optional argument is only present when ipart.eq.3
1084  IF(api_iter.GT.1) GOTO 111
1085  ENDIF
1086 !------------------------------------------------------------------
1087 !
1088 #if defined COMPAD
1090 #endif
1091 !
1092 !------------------------------------------------------------------
1093 !
1094  IF(.NOT.perma.AND.code(1:7).NE.'TELEMAC') THEN
1095 ! DETERMINES THE FIRST RECORD TO BE READ :
1096 ! NUMDEB IS THE FIRST RECORD TO BE READ FROM THE HYDRO
1097 ! FILE
1098  numdeb=numen0
1099  IF(numdeb+nidt > numen) THEN
1100  WRITE(lu,203)
1101 203 FORMAT(1x,'THE HYDRODYNAMIC FILE IS NOT LONG ENOUGH')
1102  CALL plante(1)
1103  ENDIF
1104  ENDIF
1105 !
1106 ! LOOP ON THE RECORDS (IF PERMA NIDT=1)
1107 ! ------------------------------
1108 111 IF(part.EQ.3.AND.code(1:7).NE.'TELEMAC') THEN
1109  debut=api_iter
1110  fin=min(api_iter,nidt) !LIMITED BY HYDRO FILE LAST ITERATION
1111  ELSE
1112  debut=1
1113  fin=nidt
1114  ENDIF
1115  DO mt = debut, fin
1116 ! DO MT = 1, NIDT
1117 !
1118 !------------------------------------------------------------------
1119 !
1120 ! ALGORITHMIC DIFFERENTIATION
1121 #if defined COMPAD
1123 #endif
1124 !
1125 !------------------------------------------------------------------
1126 !
1127 ! ---- DETERMINES THE TIMESTEP NUMBER :
1128 !
1129  IF(part.EQ.3.AND.code(1:7).NE.'TELEMAC') THEN
1130  lt = api_iter
1131  ELSE
1132  lt = (mn-1)*nidt + mt
1133  ENDIF
1134 !
1135  IF(code(1:7) == 'TELEMAC') THEN
1136  dt=dt_tel*mofac
1137  lt = loopcount
1138  leopr = grafcount
1139  lispr = listcount
1140  nsous=1
1141  ENDIF
1142 !
1143 ! ---- PRINTOUTS TO LISTING :
1144 !
1145  entets = .false.
1146  IF(lispr*(lt/lispr).EQ.lt) THEN
1147  entet = .true.
1148  ELSE
1149  entet = .false.
1150  ENDIF
1151 !
1152 ! ---- PRINTOUTS TO C-VSP !!! UHM
1153 !
1154  IF(cvsmpperiod.EQ.0) cvsmpperiod = leopr
1155  cvsm_out = .false.
1156  IF(cvsmpperiod*(lt/cvsmpperiod).EQ.lt) cvsm_out = .true.
1157 !
1158 !---- READS AND UPDATES H AND ZF
1159 !---- IF 1ST PASS OR UNSTEADY AND NO COUPLING
1160 !
1161  dts = dt / nsous
1162 !
1163  isous = 0
1164 !
1165  IF(.NOT.perma.OR.pass) THEN
1166 !
1167  IF(debug.GT.0) WRITE(lu,*) 'CONDIM_SISYPHE'
1168  CALL condim_sisyphe
1169  & (u2d%R,v2d%R,qu%R,qv%R,hn%R,zf%R,z%R,esomt%R,thetaw%R,
1170  & q%R,hw%R,tw%R,mesh%X%R,mesh%Y%R,npoin,at0,pmaree)
1171  IF(debug.GT.0) WRITE(lu,*) 'END_CONDIM_SISYPHE'
1172 !
1173 ! NOTE : NAME FOR SISHYD SET TO ' ' IF COUPLING
1174 !
1175  IF(sis_files(sishyd)%NAME(1:1).NE.' ') THEN
1176 !
1177 ! WORK ON ZF,QU,QV,Z WILL BE IN FACT DONE ON:
1178 ! T4,DEL_QU,DEL_QV AND DEL_Z
1179 ! BY PLAYING WITH POINTERS
1180 ! THEN THE INCREMENT IN ONE TIME STEP WILL BE COMPUTED
1181 ! AND THE INCREMENT FOR ONE SUB TIME-STEP DEDUCED
1182 ! THEN AT EVERY SUB TIME-STEP THIS INCREMENt WILL BE ADDED
1183 ! AND WILL PROGRESSIVELy UPDATE THE VARIABLES FROM TIME N
1184 ! TO TIME N+1
1185  savezf=>zf%R
1186  savequ=>qu%R
1187  saveqv=>qv%R
1188  savez =>z%R
1189  IF(houle.AND.uw%TYPR=='Q') saveuw=>uw%R
1190  zf%R =>t4%R
1191  qu%R =>del_qu%R
1192  qv%R =>del_qv%R
1193  z%R =>del_z%R
1194  IF(houle.AND.uw%TYPR=='Q') uw%R =>del_uw%R
1195 !
1196  numdeb=numdeb+1
1197 !
1198  IF(entet) WRITE(lu,*) 'DEFINITION INITIALE DES VITESSES'
1199 !
1200  CALL read_dataset(sis_files(sishyd)%FMT,
1201  & sis_files(sishyd)%LU,varsor,npoin,
1202  & numdeb,bid,textpr,trouve,alire,
1203  & entet,perma,maxvar)
1204 !
1205  IF(debug.GT.0) WRITE(lu,*) 'RESCUE_SISYPHE_NOTPERMA'
1207  & (qu%R,qv%R,q%R,u2d%R,v2d%R,hn%R,z%R,t4%R,
1208  & hw%R,tw%R,thetaw%R,npoin,trouve,alire,icf,entet,
1209  & maxvar)
1210  IF(debug.GT.0) WRITE(lu,*) 'END_RESCUE_SISYPHE_NOTPERMA'
1211 !
1212 ! BACK TO ORIGINAL ADDRESSES
1213  zf%R=>savezf
1214  qu%R=>savequ
1215  qv%R=>saveqv
1216  z%R=>savez
1217  IF(houle.AND.uw%TYPR=='Q') uw%R=>saveuw
1218 !
1219 ! INCREMENT OF QU, QV AND Z PER SUB-TIME-STEP
1220  DO i = 1,npoin
1221  del_qu%R(i) = (del_qu%R(i)-qu%R(i))/nsous
1222  del_qv%R(i) = (del_qv%R(i)-qv%R(i))/nsous
1223  del_z%R(i) = (del_z%R(i) -z%R(i)) /nsous
1224  IF(houle.AND.uw%TYPR=='Q') THEN
1225  del_uw%R(i) = (del_uw%R(i)-uw%R(i))/nsous
1226  ENDIF
1227  ENDDO
1228 !
1229 ! UPDATES UNSTEADY HYDRO
1230 ! (TO BE MOVED TO RESCUE_SISYPHE_NOTPERMA)
1231 ! -----------------------------------
1232 ! CLIPS NEGATIVE DEPTHS
1233 ! COMPUTES U2D AND V2D
1234 !
1235  CALL os('X=Y-Z ', x=hn, y=z, z=zf)
1236 !
1237  IF(optban.GT.0) THEN
1238  DO i = 1,npoin
1239  IF(hn%R(i).LT.hmin) THEN
1240  u2d%R(i)=0.d0
1241  v2d%R(i)=0.d0
1242  hn%R(i) = max(hn%R(i),hmin)
1243  ELSE
1244  u2d%R(i)=qu%R(i)/hn%R(i)
1245  v2d%R(i)=qv%R(i)/hn%R(i)
1246  ENDIF
1247  ENDDO
1248  ELSE
1249  CALL os('X=Y/Z ', x=u2d, y=qu, z=hn)
1250  CALL os('X=Y/Z ', x=v2d, y=qv, z=hn)
1251  ENDIF
1252 !
1253  ENDIF ! (SIS_FILES(SISHYD)%NAME(1:1) /=' ')
1254  ENDIF ! (NOT.PERMA.OR.PASS)
1255 !
1256  IF(pass) THEN
1257 ! IN STEADY STATE LOGICAL FOR READING SET TO FALSE
1258  IF (perma) pass = .false.
1259  ELSE
1260 ! COMPUTES THE WATER DEPTH
1261  CALL os('X=Y-Z ', x=hn, y=z, z=zf)
1262  ENDIF
1263 !
1264 ! COUPLING
1265 !
1266  IF(code(1:7).EQ.'TELEMAC') THEN
1267 !
1268 ! OV INSTEAD OF OS IN ORDER TO AVOID PROBLEMS WITH QUASI-BUBBLE ELEMENTS
1269 ! OPERATES ONLY ON THE (1:NPOIN) RANGE OF THE TELEMAC FIELDS
1270 ! IT IS A HIDDEN DISCRETISATION CHANGE
1271 !
1272  CALL ov('X=Y ', x=u2d%R, y=u_tel%R, dim1=npoin)
1273  CALL ov('X=Y ', x=v2d%R, y=v_tel%R, dim1=npoin)
1274  CALL ov('X=Y ', x=hn%R, y=h_tel%R, dim1=npoin)
1275 ! ZF MAY BE MODIFIED BY CALLING PROGRAM
1276  CALL os('X=Y ', x=zf, y=zf_tel)
1277 ! ELAY MUST BE UPDATED CONSEQUENTLY
1278 ! IF COUPLED WITH TELEMAC3D, NO BOTTOM CHANGE FROM TELEMAC2D
1279  IF(code(1:9).EQ.'TELEMAC3D') THEN
1280  CALL os('X=Y-Z ',x=elay,y=zf,z=zr)
1281  ENDIF
1282 ! CLIPS NEGATIVE DEPTHS
1283  IF(optban.GT.0) THEN
1284  DO i = 1,hn%DIM1
1285  IF(hn%R(i).LT.hmin) THEN
1286  u2d%R(i)=0.d0
1287  v2d%R(i)=0.d0
1288  hn%R(i)=hmin
1289  ENDIF
1290  ENDDO
1291  ENDIF
1292 ! FREE SURFACE
1293  CALL os('X=Y+Z ', x=z, y=zf, z=hn)
1294 !
1295 ! COPY OF TOMAWAC VARIABLES
1296 !
1297  IF(inclus(coupling,'TOMAWAC')) THEN
1298 ! INCIDENT WAVE DIRECTION
1299  CALL os( 'X=Y ', x=thetaw, y=thetaw_tel)
1300 ! Wave period
1301  CALL os( 'X=Y ', x=tw, y=tw_tel)
1302 ! SIGNIFICANT HEIGHT
1303  CALL os( 'X=Y ', x=hw, y=hw_tel)
1304 ! SIGNIFICANT HEIGHT
1305  CALL os( 'X=Y ', x=uw, y=uw_tel)
1306  hw%TYPR='Q'
1307  tw%TYPR='Q'
1308  thetaw%TYPR='Q'
1309  uw%TYPR='Q'
1310  ENDIF
1311 !
1312  ENDIF
1313 !
1314 ! END OF COUPLING
1315 ! =========================================================================
1316 ! TREATMENT OF TIDAL FLATS, DEFINITION OF THE MASKS
1317 ! =====================================================================!
1318 !
1319  IF(optban.EQ.2) THEN
1320 !
1321 ! ---- BUILDS MASKING BY ELEMENTS
1322 !
1323  CALL os ('X=Y ', x=msktmp, y=maskel)
1324  CALL os ('X=C ', x=maskel, c=1.d0)
1325  IF(code(1:7) == 'TELEMAC') THEN
1326 ! MASKS ARE DERIVED FROM THE NON-CLIPPED VALUES OF H
1327 ! PROVIDED BY TELEMAC
1328  CALL masktf(maskel%R,h_tel%R,hmin,mesh%IKLE%I,
1329  & nelem,npoin)
1330  ELSE
1331  CALL masktf(maskel%R,hn%R,hmin,mesh%IKLE%I,
1332  & nelem,npoin)
1333  ENDIF
1334 !
1335  ENDIF
1336 !
1337 ! ---- BUILDS THE MASK OF THE POINTS FROM THE MASK OF THE ELEMENTS
1338 ! ---- AND CHANGES IFAMAS (IFABOR WITH MASKING)
1339 !
1340  IF(msk) CALL maskto(maskel%R,maskpt,ifamas%I,
1341  & mesh%IKLE%I,
1342  & mesh%IFABOR%I,mesh%ELTSEG%I,mesh%NSEG,
1343  & nelem,ielmt,mesh)
1344 !
1345 ! ------------------------------------------------------------------
1346 ! START OF SUB-ITERATIONS IN UNSTEADY STATE
1347 !
1348 ! ------------------------------------------------------------------
1349 !
1350 702 CONTINUE
1351 !
1352  isous = isous + 1
1353 !
1354 !------------------------------------------------------------------
1355 !
1356 #if defined COMPAD
1358 #endif
1359 !
1360 !------------------------------------------------------------------
1361 !
1362  IF(code(1:7).NE.'TELEMAC') at0=at0+dts
1363  IF(entet.AND.isous.EQ.1) CALL entete_sisyphe(2,at0,lt)
1364  IF(entet.AND.isous.EQ.nsous) entets=.true.
1365 !
1366 !---------------------------------------------------------------------
1367 ! FRICTION COEFFICIENT VARIABLE IN TIME
1368 !---------------------------------------------------------------------
1369 !
1370  CALL corstr_sisyphe
1371 !
1372 ! ---- TREATS THE BOUNDARY CONDITIONS
1373 !
1374  IF(debug.GT.0) WRITE(lu,*) 'CONLIT'
1375  CALL conlit(mesh%NBOR%I,at0)
1376  IF(debug.GT.0) WRITE(lu,*) 'END CONLIT'
1377 !
1378 ! =======================================================================
1379 !
1380 ! IF 'VARIABLE TIME-STEP = YES' NSOUS WILL BE COMPUTED FURTHER DOWN
1381 ! THE CONPUTATION OF THE TIMESTEP SIS HAS BEEN MOVED BEFORE READING
1382 ! THE HYDRO CONDITIONS
1383 !
1384 ! --- MEAN DIAMETER FOR THE ACTIVE-LAYER AND UNDER-LAYER
1385 !
1386  IF(.NOT.mixte.AND.nsicla.GT.1) CALL mean_grain_size
1387 !
1388 ! --- MEAN VELOCITY UNORM
1389 !
1390  CALL os('X=N(Y,Z)',x=unorm,y=u2d,z=v2d)
1391 !
1392 ! --- WAVE ORBITAL VELOCITY --> UW
1393 !
1394  IF(houle) THEN
1395  IF(uw%TYPR.NE.'Q') THEN
1396  CALL calcuw(uw%R,hn%R,hw%R,tw%R,grav,npoin)
1397  ENDIF
1398  ENDIF
1399 !
1400  CALL tob_sisyphe
1401  & (tob,tobw, mu, ks, ksp,ksr,cf, fw,
1402  & chestr, uetcar, cf_tel,ks_tel, code ,
1403  & kfrot, icr, kspratio,houle,
1404  & grav,xmve, xmvs, vce, karman,zero,
1406 !
1407 ! END OF INITIALISATION
1408 !
1409  ! ******************** !
1410  ! BEDLOAD COMPUTATION !
1411  ! ******************** !
1412  IF(charr) THEN
1413  IF(debug.GT.0) WRITE(lu,*) 'BEDLOAD_MAIN'
1414  CALL bedload_main
1415  & (acladm,ksp,ksr,volu2d,unsv2d,
1418  & mu,tob,tobw,tw,zf,debug,hidfac,icf,
1420  & npoin,nptfr,nsicla,
1424  & mesh,
1426  & it1,t1,t2,t3,t4,t5,t6,t7,t8,t9,
1427  & t10,t11,t12,t13,unorm,ac,dts,
1430  & qsyc,salfa_cl,zf_c,zfcl_c,entets,
1432  & sedco,houle,u3d,v3d,code,flbcla,maxadv)
1433 !
1434  IF(debug.GT.0) WRITE(lu,*) 'END_BEDLOAD_MAIN'
1435 !
1436 ! UPDATES THE BOTTOM
1437 !
1438  IF(.NOT.stat_mode) THEN
1439  CALL os('X=X+Y ',x=zf,y=zf_c)
1440  ENDIF
1441 !
1442 ! UPDATES THE LAYERS --> ELAY
1443 !
1444  IF(.NOT.mixte.AND.nsicla.GT.1) THEN
1445  IF(debug.GT.0) WRITE(lu,*) 'LAYER AFTER BEDLOAD'
1446  IF(vsmtype.EQ.0) THEN
1449  & avail,const_alayer,t2%R,it1%I)
1450  ELSE
1452  ENDIF
1453  IF(debug.GT.0) WRITE(lu,*) 'END_LAYER'
1454  ELSE
1455  CALL os('X=Y-Z ',x=elay,y=zf,z=zr)
1456  ENDIF
1457 ! END OF BEDLOAD
1458  ENDIF
1459  ! ********************** !
1460  ! SUSPENSION COMPUTATION !
1461  ! ********************** !
1462  IF(susp) THEN
1463 !
1464  IF(debug.GT.0) WRITE(lu,*) 'SUSPENSION_MAIN'
1465  CALL suspension_main
1466  &(slvtra,hn,hn_tel,mu,tob,fdm,fd90,ksp,ksr,ks,
1471  & debug,dts,csf_sable,zero,grav,xkx,xky,
1477  & es,es_sable, es_vase,avail,entets,pass_susp,
1481  & zref,sedco,visc_tel,code,dift,dm1,uconv_tel,vconv_tel,
1482  & zconv,solsys,flbor_tel,flbor_sis,flbortra,numliq%I,nfrliq,
1485  IF(debug.GT.0) WRITE(lu,*) 'END_SUSPENSION_MAIN'
1486 !
1487 ! UPDATES THE BOTTOM
1488 !
1489 ! mak:
1490  IF(.NOT.stat_mode) THEN
1491  CALL os('X=X+Y ',x=zf,y=zf_s)
1492  ENDIF
1493 ! end mak
1494 ! CALL OS('X=X+Y ',X=ZF,Y=ZF_S)
1495 !
1496 ! UPDATES THE LAYERS
1497 ! REDEFINES THE LAYER OF ERODABLE SEDIMENT
1498 ! EXTENDED GRANULOMETRY (TO BE REPLACED WITH NOMBLAY>1
1499 !
1500  IF(.NOT.mixte.AND.nsicla.GT.1) THEN
1501  IF(debug.GT.0) WRITE(lu,*) 'LAYER AFTER SUSPENSION'
1502  IF(vsmtype.EQ.0) THEN
1505  & avail,const_alayer,t2%R,it1%I)
1506  ELSE
1508  ENDIF
1509  IF(debug.GT.0) WRITE(lu,*) 'END_LAYER'
1510  ELSE
1511  CALL os('X=Y-Z ',x=elay,y=zf,z=zr)
1512  ENDIF
1513 ! END OF SUSPENSION
1514  ENDIF
1515 !
1516 ! RECONSTITUTES THE BEDLOAD AND/OR SUSPENSION DATA
1517 ! -----------------------------------------------------
1518 !
1519  IF(debug.GT.0) WRITE(lu,*) 'QS_RESULT'
1520 !
1521  DO i = 1, nsicla
1522  CALL os('X=Y+Z ',x=t1,y=qsclxc%ADR(i)%P,z=qsclxs%ADR(i)%P)
1523  CALL os('X=Y+Z ',x=t2,y=qsclyc%ADR(i)%P,z=qsclys%ADR(i)%P)
1524  CALL os('X=N(Y,Z)', x=qscl%ADR(i)%P,y=t1,z=t2)
1525  IF(i.EQ.1) THEN
1526  CALL os('X=Y ', x=qsx, y=t1)
1527  CALL os('X=Y ', x=qsy, y=t2)
1528  ELSE
1529  CALL os('X=X+Y ', x=qsx, y=t1)
1530  CALL os('X=X+Y ', x=qsy, y=t2)
1531  ENDIF
1532  ENDDO
1533  CALL os('X=N(Y,Z)', x=qs, y=qsx, z=qsy)
1534  IF(debug.GT.0) WRITE(lu,*) 'END_QS_RESULT'
1535 !
1536 !=======================================================================
1537 !
1538 ! MAXIMUM BOTTOM SLOPE : EVOL IN T1
1539 !
1540  IF(slide) THEN
1541 !
1542  IF(entet) CALL entete_sisyphe(14,at0,lt)
1543 !
1544  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE MAXSLOPE'
1545  CALL maxslope(phised,zf%R,zr%R,mesh%XEL%R,mesh%YEL%R,
1546  & mesh%NELEM,
1547  & mesh%NELMAX,npoin,mesh%IKLE%I,t1,unsv2d,mesh,
1549  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE MAXSLOPE'
1550  CALL os('X=X+Y ',x=zf,y=t1)
1551 !
1552  IF(.NOT.mixte.AND.nsicla.GT.1) THEN
1553  IF(debug.GT.0) WRITE(lu,*) 'LAYER AFTER SLIDE'
1554  IF(vsmtype.EQ.0) THEN
1557  & avail,const_alayer,t2%R,it1%I)
1558  ELSE
1560  ENDIF
1561  IF(debug.GT.0) WRITE(lu,*) 'END_LAYER'
1562  ELSE
1563  CALL os('X=Y-Z ',x=elay,y=zf,z=zr)
1564  ENDIF
1565 !
1566  ENDIF
1567 !
1568 !========================================================================
1569 !
1570 ! SETTLING: EVOLUTION COMPUTED IN T3
1571 !
1572  IF(tass) THEN
1573 !
1574  IF(entet) THEN
1575  IF(.NOT.charr.AND..NOT.susp.AND..NOT.slide) THEN
1576  CALL entete_sisyphe(2,at0,lt)
1577  ENDIF
1578  CALL entete_sisyphe(15,at0,lt)
1579  ENDIF
1580 !
1581  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE TASSEMENT'
1582  IF(itass.EQ.1) THEN
1583  CALL tassement(npoin,dts,elay,t3,t2,avail,nsicla,
1585  & ms_sable%R,ms_vase%R)
1586  ELSEIF(itass.EQ.2.OR.itass.EQ.3) THEN
1587 !!!! ONLY FOR ONE CLASS
1588  CALL tassement_2(npoin,dts,elay,t3,t2,lt,xmvs,xmve,
1591 ! ELSEIF(ITASS.EQ.3) THEN
1592 !!!! ONLY FOR ONE CLASS
1593 ! CALL TASSEMENT_3(ZF,NPOIN,DTS,ELAY,
1594 ! & T3,T2,LT,XMVS,XMVE,GRAV,NOMBLAY,
1595 ! & ES,CONC_VASE,CONC,IVIDE,MS_VASE%R,XWC(1),
1596 ! & TRA01,TRA02,TRA03,CONC_GEL,COEF_N,CONC_MAX)
1597  ENDIF
1598  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE TASSEMENT'
1599 !
1600 ! UPDATES ZF (ELAY HAS BEEN UPDATED IN TASSEMENT)
1601 !
1602  IF(.NOT.stat_mode) THEN
1603  CALL os('X=X+Y ',x=zf,y=t3)
1604  ENDIF
1605 !
1606  ENDIF
1607 !
1608 !=======================================================================
1609 ! : 5 COMPUTES THE EVOLUTIONS FOR THIS CYCLE OF TIMESTEP
1610 ! AND UPDATES AFTER THIS COMPUTATION
1611 !=======================================================================
1612 !
1613 ! ---- COMPUTES THE EVOLUTIONS FOR THIS (SUB) TIMESTEP
1614 !
1615  IF(charr) THEN
1616  CALL os('X=Y ',x=e,y=zf_c)
1617  ELSE
1618  CALL os('X=0 ',x=e)
1619  ENDIF
1620  IF(susp) CALL os('X=X+Y ',x=e,y=zf_s)
1621  IF(slide) CALL os('X=X+Y ',x=e,y=t1)
1622  IF(tass) CALL os('X=X+Y ',x=e,y=t3)
1623 !
1624  CALL os('X=X+Y ', x=esomt, y=e)
1625 !
1626 ! UPDATES
1627 !
1628  IF(part.EQ.-1.OR.(part.EQ.3.AND.code(1:7).NE.'TELEMAC')) THEN
1629 !
1630 ! mak:
1631  IF(.NOT.stat_mode) THEN
1632  CALL os('X=X-Y ',x=hn,y=e)
1633  ENDIF
1634 ! end mak
1635 ! CALL OS('X=X-Y ',X=HN,Y=E)
1636  IF(optban.GT.0) THEN
1637  DO i = 1,hn%DIM1
1638  IF(hn%R(i).LT.hmin) THEN
1639  u2d%R(i)=0.d0
1640  v2d%R(i)=0.d0
1641  hn%R(i) =hmin
1642  ELSE
1643  u2d%R(i)= qu%R(i)/hn%R(i)
1644  v2d%R(i)= qv%R(i)/hn%R(i)
1645  ENDIF
1646  ENDDO
1647  ELSE
1648  CALL os('X=Y/Z ', x=u2d, y=qu, z=hn)
1649  CALL os('X=Y/Z ', x=v2d, y=qv, z=hn)
1650  ENDIF
1651 !
1652 !=======================================================================
1653 ! : 6 STOPS IF EVOLUTIONS GREATER THAN EMAX = RC*(INITIAL DEPTH)
1654 !=======================================================================
1655 !
1656 ! DETERMINES THE MAXIMUM EVOLUTION THRESHOLD
1657  DO i = 1, npoin
1658  emax%R(i) = rc*max(hn%R(i),hmin)
1659  ENDDO
1660 !
1661 ! ---- STOPS WHEN THE EVOLUTIONS ARE GREATER THAN A CERTAIN THRESHOLD
1662 ! THIS TEST IS ONLY CALLED IN 'SISYPHE ONLY' MODE
1663 !
1664  IF(debug.GT.0) WRITE(lu,*) 'ARRET'
1665  CALL sis_arret(esomt,emax,hn,varsor,npoin,mn,
1666  & sis_files(sisres)%LU,sis_files(sisres)%FMT,
1667  & maxvar,at0,rc,texte,
1668  & sorleo,sorimp,t1,t2)
1669  IF(debug.GT.0) WRITE(lu,*) 'END_ARRET'
1670  ENDIF
1671 !
1672 ! ---- CONSTANT FLOW DISCHARGE
1673 !
1674  IF(lcondis) THEN
1675  CALL condis_sisyphe(constflow)
1676  ELSE
1677  constflow =.false.
1678  ENDIF
1679 !
1680 !=======================================================================
1681 ! : 8 MASS BALANCE
1682 !=======================================================================
1683 ! COMPUTES THE COMPONENTS OF SAND TRANSPORT FOR THE MASS BALANCE,
1684 ! GRAPHIC OUTPUTS AND VALIDATION STAGE
1685 !
1686  IF(bilma) THEN
1687 ! CVL Bilan in volume
1688 ! not valid for cohesif or mixte
1689  IF(.NOT.mixte.AND.(.NOT.sedco(1))) THEN
1690  IF(debug.GT.0) WRITE(lu,*) 'BILAN_SISYPHE'
1691  CALL bilan_sisyphe(e,esomt,t1,
1692  & vcumu,dts,nptfr,entets,
1693  & zfcl_c,zfcl_s,zfcl_ms,
1694  & nsicla,voltot,
1695  & numliq%I,nfrliq,flbcla,lt,nit,
1697  & charr,susp,slide)
1698  ENDIF
1699  IF(debug.GT.0) WRITE(lu,*) 'END_BILAN_SISYPHE'
1700  ENDIF
1701 !
1702 ! CONTROL SECTIONS
1703 !
1704  IF(ncp.GT.0) THEN
1705  IF(debug.GT.0) WRITE(lu,*) 'FLUSEC_SISYPHE'
1706  CALL flusec_sisyphe(u2d,v2d,hn,
1708  & mesh%IKLE%I,
1709  & mesh%NELMAX,mesh%NELEM,
1710  & mesh%X%R,mesh%Y%R,
1711  & dts,ncp,ctrlsc,entets,at0)
1712  IF(debug.GT.0) WRITE(lu,*) 'END_FLUSEC_SISYPHE'
1713  ENDIF
1714 !
1715 !-----------------------------------------------------------------------
1716 !
1717  IF(.NOT.perma.AND.sis_files(sishyd)%NAME(1:1).NE.' ') THEN
1718 !
1719 ! UPDATES THE HYDRO
1720 !
1721 ! IF READING ON HYDRODYNAMIC FILE, INCREMENTS QU, QV AND Z
1722  IF(sis_files(sishyd)%NAME(1:1).NE.' ') THEN
1723  CALL os('X=X+Y ', x=qu, y=del_qu)
1724  CALL os('X=X+Y ', x=qv, y=del_qv)
1725  CALL os('X=X+Y ', x=z , y=del_z)
1726 ! JWI 31/05/2012 - added line to use wave orbital velocities directly if found in hydro file
1727  IF(houle.AND.uw%TYPR=='Q') CALL os('X=X+Y ',x=uw,y=del_uw)
1728 ! JWI END
1729  ENDIF
1730  CALL os('X=Y-Z ', x=hn, y=z, z=zf)
1731 ! CLIPS NEGATIVE DEPTHS
1732  IF(optban.GT.0) THEN
1733  DO i = 1, npoin
1734  IF(hn%R(i).LT.hmin) THEN
1735  u2d%R(i)=0.d0
1736  v2d%R(i)=0.d0
1737  hn%R(i) = max(hn%R(i),hmin)
1738  ELSE
1739  u2d%R(i)= qu%R(i)/hn%R(i)
1740  v2d%R(i)= qv%R(i)/hn%R(i)
1741  ENDIF
1742  ENDDO
1743  ELSE
1744  CALL os('X=Y/Z ', x=u2d, y=qu, z=hn)
1745  CALL os('X=Y/Z ', x=v2d, y=qv, z=hn)
1746  ENDIF
1747 !
1748  ENDIF
1749 !
1750 !------------------------------------------------------------------
1751 !
1752 #if defined COMPAD
1754 #endif
1755 !
1756 !------------------------------------------------------------------
1757 !
1758 ! END OF THE LOOP ON SUB-TIMESTEPS NSOUS
1759 !
1760  IF(isous.LT.nsous) GO TO 702
1761 !
1762 !=======================================================================
1763 ! : 9 PRINTS OUT EXTREME VALUES
1764 !=======================================================================
1765 !
1766  IF(entet.AND.charr) THEN
1767  WRITE(lu,*)
1768  CALL maxi(xmax,imax,e%R,npoin)
1769  IF(ncsize.GT.1) THEN
1770  xma=p_max(xmax)
1771  IF(xmax.EQ.xma) THEN
1772  ima=mesh%KNOLG%I(imax)
1773  ELSE
1774  ima=0
1775  ENDIF
1776  ima=p_max(ima)
1777  ELSE
1778  ima=imax
1779  xma=xmax
1780  ENDIF
1781  WRITE(lu,372) xma,ima
1782 372 FORMAT(' MAXIMAL EVOLUTION : ',g16.7,' NODE : ',i6)
1783  CALL mini(xmin,imin,e%R,npoin)
1784  IF(ncsize.GT.1) THEN
1785  xmi=p_min(xmin)
1786  IF(xmin.EQ.xmi) THEN
1787  imi=mesh%KNOLG%I(imin)
1788  ELSE
1789  imi=0
1790  ENDIF
1791  imi=p_max(imi)
1792  ELSE
1793  imi=imin
1794  xmi=xmin
1795  ENDIF
1796  WRITE(lu,374) xmi,imi
1797 374 FORMAT(' MINIMAL EVOLUTION : ',g16.7,' NODE : ',i6)
1798 !
1799  IF(const_alayer) THEN
1800  IF(nsicla.GT.1.AND.xmi.LT.-0.5d0*elay0) THEN
1801  WRITE(lu,886)
1802 886 FORMAT(' EROSION GREATER THAN ONE LAYER THICKNESS !')
1803  ENDIF
1804  IF(nsicla.GT.1.AND.xma.GT.elay0) THEN
1805  WRITE(lu,888)
1806 888 FORMAT(' DEPOSITION MORE THAN ONE LAYER THICKNESS !')
1807  ENDIF
1808  ELSE
1809  DO j=1,npoin
1810  elay0 = 3.d0*acladm%R(j)
1811  IF(nsicla.GT.1.AND.e%R(j).LT.-0.5d0*elay0) THEN
1812  WRITE(lu,886)
1813  ENDIF
1814  IF(nsicla.GT.1.AND.e%R(j).GT.elay0) THEN
1815  WRITE(lu,888)
1816  ENDIF
1817  ENDDO
1818  ENDIF
1819  ENDIF
1820  IF(entet) THEN
1821  CALL maxi(xmax,imax,esomt%R,npoin)
1822  IF(ncsize.GT.1) THEN
1823  xma=p_max(xmax)
1824  IF(xmax.EQ.xma) THEN
1825  ima=mesh%KNOLG%I(imax)
1826  ELSE
1827  ima=0
1828  ENDIF
1829  ima=p_max(ima)
1830  ELSE
1831  ima=imax
1832  xma=xmax
1833  ENDIF
1834  WRITE(lu,882) xma,ima
1835 882 FORMAT(' TOTAL MAXIMAL EVOLUTION : ',g16.7,' NODE : ',i6)
1836  CALL mini(xmin,imin,esomt%R,npoin)
1837  IF(ncsize.GT.1) THEN
1838  xmi=p_min(xmin)
1839  IF(xmin.EQ.xmi) THEN
1840  imi=mesh%KNOLG%I(imin)
1841  ELSE
1842  imi=0
1843  ENDIF
1844  imi=p_max(imi)
1845  ELSE
1846  imi=imin
1847  xmi=xmin
1848  ENDIF
1849  WRITE(lu,884) xmi,imi
1850 884 FORMAT(' TOTAL MINIMAL EVOLUTION : ',g16.7,' NODE : ',i6)
1851  ENDIF
1852 !
1853 !=======================================================================
1854 ! : 10 PRINTS OUT RESULTS AT THIS TIMESTEP
1855 ! AND COMPARES AGAINST A REFERENCE FILE
1856 !=======================================================================
1857 !
1858  IF(unit) CALL os('X=CX ', x=cs, c= xmvs)
1859 !
1860  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PREDES'
1861  CALL predes(lt,at0,yagout,code)
1862  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PREDES'
1863  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE BIEF_DESIMP'
1864  IF(PRESENT(grcomp))THEN
1865  CALL bief_desimp(sis_files(sisres)%FMT,varsor,
1866  & npoin,sis_files(sisres)%LU,
1867  & at0,lt,lispr,leopr,
1869  & ileo=yagout,compgraph=grcomp+1)
1870  ELSE
1871  CALL bief_desimp(sis_files(sisres)%FMT,varsor,
1872  & npoin,sis_files(sisres)%LU,
1873  & at0,lt,lispr,leopr,
1875  ENDIF
1876  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE BIEF_DESIMP'
1877 !
1878  IF(unit) CALL os('X=CX ', x=cs, c= 1.d0/xmvs)
1879 !
1880 ! SENDS THE NEW ZF TO TELEMAC-2D OR 3D
1881 !
1882  IF(code(1:7).EQ.'TELEMAC') THEN
1883  CALL ov ('X=Y ', x=zf_tel%R, y=zf%R, dim1=npoin)
1884  ENDIF
1885 !
1886 ! THE SUBROUTINE VALIDA FROM THE LIBRARY IS STANDARD
1887 ! IT CAN BE MODIFIED FOR EACH PARTICULAR CASE
1888 ! BUT ITS CALL MUST BE LEFT IN THE LOOP ON TIME
1889 !
1890 !------------------------------------------------------------------
1891 !
1892 #if defined COMPAD
1894 #endif
1895 !
1896 !------------------------------------------------------------------
1897 !
1898  IF(valid) THEN
1899  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE BIEF_VALIDA'
1901  & sis_files(sisref)%FMT,
1902  & varsor,texte,sis_files(sisres)%LU,
1903  & sis_files(sisres)%FMT,
1904  & maxvar,npoin,lt,valnit,alirv)
1905  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE BIEF_VALIDA'
1906  ENDIF
1907 !
1908 ! END OF THE LOOP ON THE RECORDS
1909  ENDDO !MT
1910 !
1911 !------------------------------------------------------------------
1912 !
1913 #if defined COMPAD
1915 #endif
1916 !
1917 !=======================================================================
1918 !
1919 ! END OF THE LOOP ON THE NUMBER OF EVENTS
1920 !
1921  ENDDO !MN
1922 !
1923 !-----------------------------------------------------------------------
1924 !
1925  IF(debug.GT.0) WRITE(lu,*) 'END_TIME_LOOP'
1926  ENDIF
1927 !
1928 !-----------------------------------------------------------------------
1929 !
1930 #if defined COMPAD
1931  CALL ad_sisyphe_end
1932 #endif
1933 !
1934 !-----------------------------------------------------------------------
1935 !
1936  RETURN
1937  END
type(bief_obj), target del_qu
type(bief_obj), target zf_s
type(bief_obj), target cstaeq
type(bief_obj), target thetaw
type(bief_obj), target maskpt
subroutine write_mesh(FFORMAT, NFILE, MESH, NPLAN, DATE, TIME, T1, T2, PARALL, NPTIR, NGEO, GEOFORMAT, LATLONG)
Definition: write_mesh.f:8
type(bief_obj), target msktmp
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
type(bief_obj), target numliq
type(bief_obj), target limdif
type(bief_obj), target ksp
double precision, target phised
subroutine corstr_sisyphe
Definition: corstr_sisyphe.f:4
double precision, dimension(nsiclm) mased0
subroutine noerod(H, ZF, ZR, Z, X, Y, NPOIN, CHOIX, NLISS)
Definition: noerod.f:7
integer, parameter maxvar
type(bief_obj), target am2_s
type(bief_obj), target del_uw
type(bief_obj), target unsv2d
type(bief_obj), target vconv
type(bief_obj), target del_qv
type(bief_obj), target e
double precision, dimension(nsiclm) hidi
type(bief_obj), target flbcla
type(bief_obj), target advar
type(bief_obj), target licbor
type(bief_obj), target q2bor
type(bief_obj), target tb
logical, dimension(maxvar) sorleo
type(bief_obj), target unladm
subroutine maxslope(SLOPE, ZF, ZR, XEL, YEL, NELEM, NELMAX, NPOIN, IKLE, EVOL, UNSV2D, MESH, ZFCL_MS, AVAIL, NOMBLAY, NSICLA)
Definition: maxslope.f:8
type(bief_obj), pointer t10
double precision, dimension(nsiclm) ava0
integer, parameter lng_en
subroutine entete_sisyphe(IETAPE, AT, LT)
Definition: entete_sisyphe.f:7
type(bief_obj), target ks
subroutine ad_sisyphe_looprecords_begin
subroutine sis_arret
Definition: sis_arret.f:4
double precision, target xkv
type(bief_obj), target zfcl_c
type(bief_obj), target zr
type(bief_obj), target limtec
type(bief_obj), target ctild
type(bief_obj), target qsy
type(bief_obj), target zf_c
subroutine layer(ZFCL_W, NLAYER, ZR, ZF, ESTRAT, ELAY, MASBAS, ACLADM, NSICLA, NPOIN, ELAY0, VOLTOT, ES, AVAIL, CONST_ALAYER, ESTRATNEW, NLAYNEW)
Definition: layer.f:8
type(bief_obj), target hprop
type(bief_obj), target te3
type(bief_obj), target ms_sable
type(bief_obj), target uconv
type(bief_obj), target esomt
type(bief_obj), target ebor
type(bief_obj), target qsxc
type(bief_obj), target flbortra
type(bief_obj), target varcl
subroutine conlit(NBOR, AT)
Definition: conlit.f:7
type(bief_obj), target qscl_s
type(bief_obj), target boundary_colour
double precision, dimension(nsiclm), target xwc
subroutine maskto(MASKEL, MASKPT, IFAMAS, IKLE, IFABOR, ELTSEG, NSEG, NELEM, IELM, MESH)
Definition: maskto.f:8
type(bief_obj), target nlayer
type(bief_obj), pointer t4
integer, dimension(3) mardat
type(bief_obj), target fw
type(bief_obj), target calfa_cl
integer, parameter kddl
type(bief_obj), target zf
subroutine flusec_sisyphe(U, V, H, QSXC, QSYC, CHARR, QSXS, QSYS, SUSP, IKLE, NELMAX, NELEM, X, Y, DT, NCP, CTRLSC, INFO, TPS)
Definition: flusec_sisyphe.f:8
subroutine ad_sisyphe_subiteration_end
type(bief_obj), pointer t5
type(bief_obj), target cbor
type(bief_obj), target ms_vase
subroutine cvsp_main(ZFCL_W, ZF, NSICLA, NPOIN)
Definition: cvsp_main.f:7
type(bief_obj), target coefpn
double precision, target tprec
type(bief_obj), target qsys
double precision, dimension(nsiclm) fracsed_gf
subroutine ad_sisyphe_initialisation_begin
type(bief_obj), target mask
subroutine ad_sisyphe_timestep_begin
type(bief_obj), target qsxs
type(bief_obj), target acladm
type(bief_obj), target it1
subroutine bedload_main(ACLADM, KSP, KSR, V2DPAR, UNSV2D, CF, EBOR, FW, HN, LIQBOR, MASK, MASKEL, MASKPT, QBOR, U2D, V2D, S, UNLADM, UW, THETAW, MU, TOB, TOBW, TW, ZF, DEBUG, HIDFAC, ICF, IELMT, KDDL, KDIR, KENT, KLOG, KNEU, KSORT, NPOIN, NPTFR, NSICLA, OPTBAN, BETA, FD90, FDM, GRAV, HIDI, HMIN, VCE, CSF_SABLE, XMVE, XMVS, XWC, PI, KARMAN, ZERO, KARIM_HOLLY_YANG, MSK, SUSP, VF, MESH, ELAY, LIEBOR, LIMTEC, MASKTR, IT1, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, UNORM, AC, DTS, AVAIL, BREACH, CALFA_CL, COEFPN, HIDING, QSCL_C, QSCL_S, QS_C, QSCLXC, QSXC, QSCLYC, QSYC, SALFA_CL, ZF_C, ZFCL_C, ENTETS, SECCURRENT, SLOPEFF, PHISED, DEVIA, BETA2, BIJK, SEDCO, HOULE, U3D, V3D, CODE, FLBCLA, MAXADV)
Definition: bedload_main.f:24
character(len=32), dimension(4) names_prive
type(bief_obj), pointer t13
type(bief_obj), target qsclxc
subroutine mini(XMIN, IMIN, X, NPOIN)
Definition: mini.f:7
double precision, dimension(nsiclm) masfin
type(bief_obj), pointer t9
type(bief_obj), target tobw
subroutine ad_sisyphe_subiteration_begin
type(bief_obj), target estrat
type(bief_obj), target qsclxs
type(bief_obj), target cs
integer, parameter kneu
double precision, dimension(nsiclm) masdept
subroutine condis_sisyphe(CONSTFLOW)
Definition: condis_sisyphe.f:7
type(bief_obj), target flbor_sis
type(bief_obj), pointer t8
integer, parameter lng_fr
Y. AUDOUIN & J-M HERVOUET (EDF LAB, LNHE) 09/05/2014 V7P0 First version.
integer, parameter kent
type(bief_obj), target it4
type(bief_obj), target salfa_cl
subroutine fonstr(H, ZF, Z, CHESTR, NGEO, FFORMAT, NFON, NOMFON, MESH, FFON, LISTIN, N_NAMES_PRIV, NAMES_PRIVE, PRIVE)
Definition: fonstr.f:8
double precision, target partheniades
subroutine ad_sisyphe_timestep_end
subroutine masktf(MASKEL, HN, HMIN, IKLE, NELEM, NPOIN)
Definition: masktf.f:7
type(bief_obj), target mu
type(bief_obj), target lihbor
integer, dimension(:), allocatable ctrlsc
double precision, dimension(:,:), allocatable, target conc
double precision, target dt
subroutine init_zero
Definition: init_zero.f:4
double precision, dimension(nlaymax) trans_mass
double precision, target delt
double precision, dimension(nsiclm) fd90
type(bief_obj), target qscl_c
double precision, dimension(nsiclm) mastou
logical, dimension(maxvar) sorimp
double precision, dimension(:), pointer x
type(bief_obj), pointer t11
type(bief_obj), target zfcl_ms
type(bief_obj), target liebor
type(bief_obj), target varsor
type(bief_obj), target it2
subroutine mean_grain_size
double precision karim_holly_yang
type(bief_obj), target tw
subroutine rescue_sisyphe(H, S, ZF, ZR, ES, HW, TW, THETAW, NPOIN, NOMBLAY, NSICLA, TROUVE, ALIRE, PASS, ICF, LISTI, MAXVAR)
Definition: rescue_sisyphe.f:8
type(bief_obj), pointer t14
double precision, dimension(nsiclm) voltot
type(bief_obj), target qs
subroutine ad_sisyphe_initialisation_end
type(bief_obj), target disp_c
type(bief_obj), pointer t1
type(bief_obj), target fluer_vase
type(bief_obj), target csratio
type(bief_obj), target cf
subroutine write_header(FFORMAT, NRES, TITLE, NVAR, NOMVAR, OUTVAR)
Definition: write_header.f:7
type(bief_obj), target fludpt
type(bief_obj), target qs_c
type(bief_obj), target fluer
subroutine rescue_sisyphe_notperma(QU, QV, Q, U, V, H, S, ZF, HW, TW, THETAW, NPOIN, TROUVE, ALIRE, ICF, ENTET, MAXVAR)
subroutine nestor_interface(OPTION)
type(bief_obj), target qsyc
type(bief_obj), target qsclyc
type(bief_obj), target maskel
subroutine tassement_2(NPOIN, DTS, ELAY, DZF_TASS, T2, LT, XMVS, XMVE, NOMBLAY, ES, CONC_VASE, MS_VASE, XWC, COEF_N, CONC_GEL, CONC_MAX)
Definition: tassement_2.f:8
type(bief_obj), target qs_s
type(bief_obj), target del_z
double precision, dimension(nsiclm), target fdm
logical function inclus(C1, C2)
Definition: inclus.f:7
type(bief_obj), target masktr
integer, parameter kdir
type(bief_obj), target v2d
type(bief_obj), target afbor
type(bief_obj), target hw
subroutine init_constant(KARIM_HOLLY_YANG, KARMAN, PI)
Definition: init_constant.F:7
double precision, dimension(nsiclm) masini
type(bief_obj), target qbor
type(bief_obj), target bfbor
logical, dimension(nsiclm) sedco
type(bief_obj), target q
subroutine bilan_sisyphe(E, ESOMT, T1, VCUMU, DT, NPTFR, INFO, ZFCL_C, ZFCL_S, ZFCL_MS, NSICLA, VOLTOT, NUMLIQ, NFRLIQ, FLBCLA, LT, NIT, NPOIN, VOLU2D, CSF_SABLE, MASDEP, MASDEPT, CHARR, SUSP, SLIDE)
Definition: bilan_sisyphe.f:11
type(bief_obj), target z
subroutine ad_sisyphe_begin
type(bief_obj), target te1
type(bief_obj), pointer t3
type(bief_obj), target disp
double precision, dimension(:), pointer y
type(bief_obj), target te2
subroutine ad_set_sisyphe(IVAR, ADOBJ)
Definition: ad_set_sisyphe.F:7
type(bief_obj), target cst
subroutine front2(NFRLIQ, LIHBOR, LIUBOR, X, Y, NBOR, KP1BOR, DEJAVU, NPOIN, NPTFR, KLOG, LISTIN, NUMLIQ, MAXFRO)
Definition: front2.f:8
subroutine ad_sisyphe_end
Definition: ad_sisyphe_end.f:3
type(bief_obj), target v2dpar
type(bief_obj), target am1_s
double precision, dimension(:,:), allocatable, target es_sable
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
Definition: vector.f:7
subroutine tassement(NPOIN, DTS, ELAY, DZF_TASS, T2, AVAIL, NSICLA, ES, XMVS, XKV, TRANS_MASS, CONC_VASE, NOMBLAY, MS_SABLE, MS_VASE)
Definition: tassement.f:8
type(bief_obj), target unorm
type(bief_obj), target qv
type(bief_obj), target liqbor
type(bief_obj), target qu
type(bief_obj), target ifamas
type(bief_obj), pointer t12
subroutine ad_sisyphe_looprecords_end
subroutine find_variable(FFORMAT, FID, VAR_NAME, RES, N, IERR, TIME, EPS_TIME, RECORD, TIME_RECORD, OFFSET)
Definition: find_variable.f:8
type(bief_obj), target ky
double precision, dimension(nlaymax) toce_vase
double precision, dimension(:,:,:), allocatable, target avail
type(bief_obj), target zrl
type(bief_obj), target chestr
type(bief_obj), target zref
type(bief_obj), pointer t7
type(bief_obj), target kx
subroutine suspension_main(SLVTRA, HN, HN_TEL, MU, TOB, FDM, FD90, KSP, KSR, KS, VOLU2D, V2DPAR, UNSV2D, AFBOR, BFBOR, ZF, LICBOR, IFAMAS, MASKEL, MASKPT, U2D, V2D, NSICLA, NPOIN, NPTFR, IELMT, OPTDIF, RESOL, LT, NIT, OPTBAN, OPTADV, OPDTRA, KENT, KSORT, KLOG, KNEU, KDIR, KDDL, DEBUG, DTS, CSF_SABLE, ZERO, GRAV, XKX, XKY, KARMAN, XMVE, XMVS, VCE, HMIN, XWC, VITCD, PARTHENIADES, BILMA, MSK, CHARR, IMP_INFLOW_C, MESH, ZF_S, CS, CST, CTILD, CBOR, DISP, IT1, IT2, IT3, IT4, TB, T1, T2, T3, T4, T8, T9, T10, T11, T12, T14, TE1, CLT, TE2, TE3, S, AM1_S, AM2_S, MBOR, ELAY, LIMDIF, MASKTR, TETA_SUSP, AC, MASED0, MASINI, MASTEN, MASTOU, ES, ES_SABLE, ES_VASE, AVAIL, ENTETS, PASS, ZFCL_S, HPROP, FLUDPT, FLUDP, FLUER, DISP_C, KX, KY, KZ, UCONV, VCONV, QSXS, QSYS, QSCLXS, QSCLYS, QSCL_S, QS_S, QS_C, CSTAEQ, CSRATIO, ICQ, MASTCP, MASFIN, MASDEPT, MASDEP, MASSOU, CORR_CONV, ZREF, SEDCO, VISC_TEL, CODE, DIFT, DM1, UCONV_TEL, VCONV_TEL, ZCONV, SOLSYS, FLBOR_TEL, FLBOR_SIS, FLBORTRA, NUMLIQ, NFRLIQ, MIXTE, NOMBLAY, CONC, TOCE_VASE, TOCE_SABLE, FLUER_VASE, TOCE_MIXTE, MS_SABLE, MS_VASE, DIRFLU, MAXADV)
type(bief_obj), target fludp
double precision, dimension(nlaymax) conc_vase
type(bief_obj), target qsclys
type(bief_obj), target s
type(bief_obj), target prive
double precision, target kspratio
type(bief_obj), target hn
type(bief_obj), target kz
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine tob_sisyphe(TOB, TOBW, MU, KS, KSP, KSR, CF, FW, CHESTR, UETCAR, CF_TEL, KS_TEL, CODE, KFROT, ICR, KSPRATIO, HOULE, GRAV, XMVE, XMVS, VCE, KARMAN, ZERO, HMIN, HN, ACLADM, UNORM, UW, TW, NPOIN, KSPRED, IKS)
Definition: tob_sisyphe.f:10
character(len=32), dimension(maxvar) textpr
double precision, dimension(nsiclm) masten
subroutine parcom(X, ICOM, MESH)
Definition: parcom.f:7
type(bief_obj), target it3
type(bief_obj), target radsec
type(bief_obj), target breach
subroutine bief_valida(VARREF, TEXTREF, UREF, REFFORMAT, VARRES, TEXTRES, URES, RESFORMAT, MAXTAB, NP, IT, MAXIT, ACOMPARER)
Definition: bief_valida.f:8
type(bief_obj), pointer t2
type(bief_obj), target mbor
double precision, dimension(nsiclm) cs0
type(bief_obj), target volu2d
type(bief_obj), target hiding
integer, dimension(3) martim
double precision, dimension(:,:), allocatable, target es_vase
subroutine read_dataset(FFORMAT, FID, VARSOR, NPOIN, RECORD, AT, VAR_LIST, TROUVE, ALIRE, LISTIN, LASTRECORD, MAXVAR)
Definition: read_dataset.f:8
subroutine inbief(LIHBOR, KLOG, IT1, IT2, IT3, LVMAC, IELMX, LAMBD0, SPHERI, MESH, T1, T2, OPTASS, PRODUC, EQUA, MESH2D)
Definition: inbief.f:8
type(bief_obj), target qscl
subroutine leclim(LIHBOR, LIUBOR, LIVBOR, LITBOR, HBOR, UBOR, VBOR, TBOR, CHBORD, ATBOR, BTBOR, NPTFR, CODE, TRAC, FFORMAT, NGEO, KENT, KENTU, KSORT, KADH, KLOG, KINC, NUMLIQ, MESH, BOUNDARY_COLOUR, NPTFR2)
Definition: leclim.f:10
type(bief_obj), target tob
double precision, dimension(nsiclm) masdep
type(bief_obj), target emax
type(bief_obj), target u2d
subroutine get_data_time(FFORMAT, FID, RECORD, TIME, IERR)
Definition: get_data_time.f:7
type(bief_mesh), target mesh
double precision, dimension(nsiclm) mastcp
subroutine calcuw(UW, H, HW, TW, GRAV, NPOIN)
Definition: calcuw.f:7
type(bief_obj), target zfcl_s
integer, parameter klog
subroutine init_transport(TROUVE, DEBU, HIDING, NSICLA, NPOIN, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, CHARR, QS_C, QSXC, QSYC, CALFA_CL, SALFA_CL, COEFPN, SLOPEFF, SUSP, QS_S, QS, QSCL, QSCL_C, QSCL_S, QSCLXS, QSCLYS, UNORM, U2D, V2D, HN, CF, MU, TOB, TOBW, UW, TW, THETAW, FW, HOULE, AVAIL, ACLADM, UNLADM, KSP, KSR, KS, ICF, HIDFAC, XMVS, XMVE, GRAV, VCE, HMIN, KARMAN, ZERO, PI, AC, IMP_INFLOW_C, ZREF, ICQ, CSTAEQ, CSRATIO, CMAX, CS, CS0, SECCURRENT, BIJK, IELMT, FDM, XWC, FD90, SEDCO, VITCE, PARTHENIADES, VITCD, U3D, V3D, CODE)
subroutine condim_sisyphe(U, V, QU, QV, H, ZF, Z, ESOMT, THETAWR, Q, HWR, TWR, X, Y, NPOIN, AT, PMAREE)
Definition: condim_sisyphe.f:9
type(bief_obj), target uw
subroutine get_data_ntimestep(FFORMAT, FID, NTIMESTEP, IERR)
type(bief_obj), target qsx
subroutine sisyphe(PART, LOOPCOUNT, GRAFCOUNT, LISTCOUNT, TELNIT, U_TEL, V_TEL, H_TEL, HN_TEL, ZF_TEL, UETCAR, CF_TEL, KS_TEL, CONSTFLOW, NSIS_CFD, SISYPHE_CFD, CODE, PERICOU, U3D, V3D, T_TEL, VISC_TEL, DT_TEL, CHARR_TEL, SUSP_TEL, FLBOR_TEL, SOLSYS, DM1, UCONV_TEL, VCONV_TEL, ZCONV, THETAW_TEL, HW_TEL, TW_TEL, UW_TEL, YAGOUT, API_ITER, GRCOMP)
Definition: sisyphe.F:12
character(len=32), dimension(maxvar) texte
double precision, target beta2
double precision, dimension(nsiclm), target ac
character(len=path_len), target coupling
type(bief_obj), target toce_mixte
subroutine bief_desimp(FORMAT_RES, VARSOR, N, NRES, AT, LT, LISPRD, LEOPRD, SORLEO, SORIMP, MAXVAR, TEXTE, PTINIG, PTINIL, MESH, IIMP, ILEO, COMPGRAPH)
Definition: bief_desimp.f:9
double precision, target csf_sable
type(bief_obj), pointer t6
type(bief_obj), target elay
type(bief_obj), target clt
integer, parameter ksort
subroutine maxi(XMAX, IMAX, X, NPOIN)
Definition: maxi.f:7
type(bief_file), dimension(maxlu_sis), target sis_files
type(bief_obj), target ksr
subroutine predes(LLT, AAT, YAGOUT, CODE)
Definition: predes.f:7
double precision, dimension(:,:), allocatable, target es
Definition: bief.f:3
subroutine init_sediment(NSICLA, ELAY, ZF, ZR, NPOIN, AVAIL, FRACSED_GF, AVA0, LGRAFED, CALWC, XMVS, XMVE, GRAV, VCE, XWC, FDM, CALAC, AC, SEDCO, ES, ES_SABLE, ES_VASE, NOMBLAY, CONC_VASE, MS_SABLE, MS_VASE, ACLADM, UNLADM, TOCE_SABLE, CONC, DEBU, MIXTE)
Definition: init_sediment.f:11