The TELEMAC-MASCARET system  trunk
suspension_computation.f
Go to the documentation of this file.
1 ! *********************************
2  SUBROUTINE suspension_computation
3 ! *********************************
4 !
5  &(slvtra, hn,hn_tel,uconv, vconv, mu,tob,fdm, fd90, ksp,ksr,ks,
6  & elay, ava, afbor, bfbor, limdif, clt, maskel, masktr,
7  & maskpt, ifamas, npoin, ielm, nptfr, itra, lt, nit, resol,
8  & optban, kent,kddl,kdir,ksort,klog,kneu,
9  & optadv, opdtra, debug,csf_sable,
10  & teta_susp, dt, mased0, zero, xwc, karman, xmve, xmvs, vce,grav,
11  & hmin, vitcd, partheniades, entets,
12  & bilma,msk,charr,imp_inflow_c,mesh,zf,cs,
13  & cst,ctild,cbor,disp,it1,it2,it3,it4,tb,t1,t2,t3,
14  & t4, t8, t9, t10, t11, t12, t14, te1, te2, te3, s,
15  & am1_s, am2_s, mbor,masten, mastou, masini, ac,
16  & zfcl_s, fludpt, fludp, fluer, hprop, disp_c, cstaeq, csratio,
17  & masfin, masdept, masdep, massou,qs_c,icq, zref,
18  & corr_conv,u2d,v2d,sedco,dift,dm1,zconv,uconv_tel,vconv_tel,
19  & solsys,flbor_tel,flbor_sis,flbortra,code,
20  & volu2d,v2dpar,unsv2d,numliq,nfrliq,licbor,mixte,avail,nsicla,
21  & es,es_sable,es_vase,nomblay,conc,toce_vase,toce_sable,
22  & fluer_vase,toce_mixte,ms_sable,ms_vase,dirflu,qsclxs,qsclys,
23  & maxadv)
24 !
25 !***********************************************************************
26 ! SISYPHE V7P1
27 !***********************************************************************
28 !
29 !brief MAIN SUBROUTINE FOR THE COMPUTATION OF THE
30 !+ CONCENTRATION AND THE ELEVATION SOLVING THE EQUATION :
31 !code
32 !+ D(ZF)
33 !+ ---- + DIV(QS) + (E-D)ZA = 0
34 !+ DT
35 !
36 !note IF COUPLING, DIV(QS) ALREADY COMPUTED
37 !+ ELSE, DIV(QS) = 0
38 !
39 !history F. HUVELIN
40 !+ 22/12/2004
41 !+
42 !+
43 !
44 !history JMH:
45 !+ 10/11/2010
46 !+
47 !+ ENTET CHANGED INTO ENTETS IN THE CALL TO CVDFTR
48 !
49 !history
50 !+ 05/05/2008
51 !+
52 !+ ADAPTED FOR FINITE VOLUME ADVECTION
53 !
54 !history
55 !+ 09/05/2008
56 !+
57 !+ FLUDP REMOVED FROM SUSPENSION_FLUX, SUSPENSION_NERBED DELETED
58 !
59 !history
60 !+ 28/05/2008
61 !+
62 !+ NEW SUSPENSION_BILAN WITH FLUXES THROUGH BOUNDARIES
63 !
64 !history
65 !+ 09/06/2008
66 !+
67 !+ NEW SUSPENSION_BILAN WITH FLBORTRA GIVEN BY CVDFTR
68 !
69 !history
70 !+ 12/06/2008
71 !+
72 !+ SECTIONS "TREATING SMALL DEPTHS" AND
73 !
74 !history
75 !+ 25/06/2008
76 !+
77 !+ CALLS DIFFIN (USED TO BE IN SUSPENSION_MAIN)
78 !
79 !history
80 !+ 31/07/2008
81 !+
82 !+ CALLS SUSPENSION_FLUX SPLIT IN 2 : DEPOSITION + EROSION
83 !
84 !history
85 !+ 16/09/2009
86 !+
87 !+ AVAIL(NPOIN,10,NSICLA)
88 !
89 !history
90 !+ 05/04/2010
91 !+ V6P0
92 !+ CSTAEQ TAKES INTO ACCOUNT THE % OF LAYER QQ OR THE SELECTED FORMULATION
93 !
94 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
95 !+ 13/07/2010
96 !+ V6P0
97 !+ Translation of French comments within the FORTRAN sources into
98 !+ English comments
99 !
100 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
101 !+ 21/08/2010
102 !+ V6P0
103 !+ Creation of DOXYGEN tags for automated documentation and
104 !+ cross-referencing of the FORTRAN sources
105 !
106 !history J.-M. HERVOUET (LNHE)
107 !+ 19/04/2011
108 !+ V6P1
109 !+ Adaptation to the new call of Sisyphe in Telemac-2D, and various
110 !+ modifications for mass-conservation.
111 !
112 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
113 !+ 19/07/2011
114 !+ V6P1
115 !+ Name of variables
116 !
117 !history MAK (HRW)
118 !+ 31/05/2012
119 !+ V6P2
120 !+ Include CSRATIO
121 !
122 !history PAT (P. TASSI) (EDF & LNHE)
123 !+ 18/06/2012
124 !+ V6P2
125 !+ updated version with HRW's development Soulsby-van Rijn's concentration
126 !
127 !history C. VILLARET (EDF & LNHE)
128 !+ 18/06/2012
129 !+ V6P2
130 !+ modification call to suspension_erosion_coh (simplified)
131 !+ arguments for M_VASE in double precision
132 !+ modification for limitation of FLUER with rigid lid
133 !+ calling to suspension_bilan_coh
134 !
135 !history J.-M. HERVOUET (LNHE)
136 !+ 15/04/2013
137 !+ V6P3
138 !+ YAFLULIM was not initialised in one case.
139 !
140 !history J.-M. HERVOUET (LNHE)
141 !+ 18/11/2013
142 !+ V6P3
143 !+ Pointers GLOSEG1 and GLOSEG2 added to avoid an unwanted copy of
144 !+ arrays in call to suspension_conv (after message by Intel compiler)
145 !
146 !history J.-M. HERVOUET (LNHE)
147 !+ 28/04/2014
148 !+ V7P0
149 !+ Call to diffin modified.
150 !+ OPTSUP replaced by OPTADV in the call to cvdftr.
151 !+ (see keyword SCHME OPTION FOR ADVECTION)
152 !
153 !history J.-M. HERVOUET (LNHE)
154 !+ 28/05/2015
155 !+ V7P1
156 !+ Call to cvdftr modified, 3 extra arguments
157 !+ (for implicit distributive schemes)
158 !
159 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160 !| AC |<->| CRITICAL SHIELDS PARAMETER
161 !| ACLADM |-->| MEAN DIAMETER OF SEDIMENT
162 !| AFBOR |-->| BOUNDARY CONDITION ON F: NU*DF/DN=AFBOR*F+BFBOR
163 !| AM1_S |<->| MATRIX OBJECT
164 !| AM2_S |<->| MATRIX OBJECT
165 !| AVAIL |<->| VOLUME PERCENT OF EACH CLASS
166 !| BFBOR |-->| BOUNDARY CONDITION ON F: NU*DF/DN=AFBOR*F+BFBOR
167 !| BILMA |-->| MASS BALANCE
168 !| CBOR |<->| IMPOSED SUSPENDED SAND CONCENTRATION AT THE BOUNDARY
169 !| CF |-->| QUADRATIC FRICTION COEFFICIENT
170 !| CHARR |-->| LOGICAL, BEDLOAD OR NOT
171 !| CLT |<->| BOUNDARY CONDITIONS FOR TRACER (MODIFIED LITBOR)
172 !| CODE |-->| HYDRODYNAMIC CODE IN CASE OF COUPLING
173 !| CONC_VASE |<->| MUD CONCENTRATION FOR EACH LAYER
174 !| CORR_CONV |-->| CORRECTION ON CONVECTION VELOCITY
175 !| CS |<->| CONCENTRATION AT TIME N
176 !| CSF_SABLE |-->| VOLUME CONCENTRATION OF THE SAND BED
177 !| CSRATIO |<->| EQUILIBRIUM CONCENTRATION FOR SOULSBY-VAN RIJN EQ.
178 !| CST |<->| CONCENTRATION AT TIME T(N+1)
179 !| CSTAEQ |<->| EQUILIBRIUM CONCENTRATION
180 !| CTILD |<->| CONCENTRATION AFTER ADVECTION
181 !| DEBUG |-->| FLAG FOR DEBUGGING
182 !| DIFT |-->| DIFFUSION OF SUSPENDED SEDIMENT CONCENTRATION
183 !| DISP |-->| VISCOSITY COEFFICIENTS ALONG X,Y AND Z .
184 !| | | IF P0 : PER ELEMENT
185 !| | | IF P1 : PERR POINT
186 !| DISP_S |<->| WORK ARRAY FOR SAVING DISPC
187 !| DM1 |-->| THE PIECE-WISE CONSTANT PART OF ADVECTION FIELD
188 !| | | IS DM1*GRAD(ZCONV)
189 !| DTS |-->| TIME STEP FOR SUSPENSION
190 !| ELAY |<->| THICKNESS OF EACH LAYER
191 !| ENTET |<->| LOGICAL, IF YES INFORMATION IS GIVEN ON MASS CONSERVATION
192 !| ENTETS |-->| LOGICAL, IF YES INFORMATION IS GIVEN ON MASS CONSERVATION FOR SUSPENSION
193 !| ES |<->| LAYER THICKNESSES AS DOUBLE PRECISION
194 !| FLBORTRA |<->| FLUXES AT BOUNDARIES TRACER
195 !| FLBOR_SIS |<->| FLUXES AT BOUNDARIES SISYPHE
196 !| FLBOR_TEL |-->| FLUXES AT BOUNDARIES TELEMAC
197 !| FLUDP |<->| DEPOSITION FLUX
198 !| FLUDPT |<->| DEPOSITION FLUX (IMPLICIT)
199 !| FLUER |<->| EROSION FLUX
200 !| FLUER_VASE |<->| FOR MIXED SEDIMENTS
201 !| GRAV |-->| ACCELERATION OF GRAVITY
202 !| HMIN |-->| MINIMUM VALUE OF WATER DEPTH
203 !| HN |-->| WATER DEPTH
204 !| HN_TEL |-->| WATER DEPTH AS SENT BY TELEMAC OR CALLING CODE
205 !| HPROP |<->| PROPAGATION DEPTH (DONE IN CVDFTR)
206 !| ICQ |-->| REFERENCE CONCENTRATION FORMULA
207 !| IELM |-->| TYPE OF ELEMENT
208 !| IFAMAS |-->| A MODIFIED IFABOR WHEN ELEMENTS ARE MASKED
209 !| IMP_INFLOW_C |-->| IMPOSED CONCENTRATION IN INFLOW
210 !| IT1 |<->| INTEGER WORK ARRAY IN A BIEF_OBJ STRUCTURE
211 !| IT2 |<->| INTEGER WORK ARRAY IN A BIEF_OBJ STRUCTURE
212 !| IT3 |<->| INTEGER WORK ARRAY IN A BIEF_OBJ STRUCTURE
213 !| IT4 |<->| INTEGER WORK ARRAY IN A BIEF_OBJ STRUCTURE
214 !| KARMAN |-->| VON KARMAN CONSTANT
215 !| KDDL |-->| CONVENTION FOR DEGREE OF FREEDOM
216 !| KDIR |-->| CONVENTION FOR DIRICHLET POINT
217 !| KENT |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
218 !| KINC |-->| CONVENTION FOR INCIDENT WAVE BOUNDARY CONDITION
219 !| KLOG |-->| CONVENTION FOR SOLID BOUNDARY
220 !| KNEU |-->| CONVENTION FOR NEUMANN CONDITION
221 !| KS |-->| TOTAL BED ROUGHNESS
222 !| KSORT |-->| CONVENTION FOR FREE OUTPUT
223 !| KSP |-->| SKIN BED ROUGHNESS
224 !| KSR |-->| RIPPLE BED ROUGHNESS
225 !| KX |<->| COEFFICIENTS OF THE DISPERSION TENSOR (DIM. NPOIN)
226 !| KY |<->| COEFFICIENTS OF THE DISPERSION TENSOR (DIM. NPOIN)
227 !| KZ |<->| COEFFICIENTS OF THE DISPERSION TENSOR (DIM. NPOIN)
228 !| LICBOR |-->| BOUNDARY CONDITIONS FOR SEDIMENT
229 !| LIMDIF |<->| BOUNDARY CONDITIONS FOR DIFFUSION
230 !| LT |-->| ITERATION
231 !| MASDEP |<--| TOTAL DEPOSITED MASS
232 !| MASDEPT |<--| DEPOSITED MASS DURING THE TIME STEP
233 !| MASED0 |<->| SUSPENDED MASS BALANCE
234 !| MASFIN |<--| MASS AT THE END
235 !| MASINI |<->| INITIAL MASS
236 !| MASKEL |-->| MASKING OF ELEMENTS
237 !| MASKPT |-->| MASKING PER POINT
238 !| MASKTR |<->| MASKING FOR TRACERS, PER POINT
239 !| MASSOU |<--| MASS OF TRACER ADDED BY SOURCE TERM
240 !| | | SEE DIFSOU
241 !| MASTCP |<--| ??? NE SERT A RIEN, A SUPPRIMER
242 !| MASTEN |<->| MASS ENTERED THROUGH LIQUID BOUNDARY
243 !| MASTOU |<->| MASS CREATED BY SOURCE TERM
244 !| MAXADV |<->| MAXIMUM NUMBER OF ITERATIONS OF ADVECTION SCHEMES
245 !| MBOR |<->| MATRIX OBJECT
246 !| MESH |<->| MESH STRUCTURE
247 !| MIXTE |-->| MIXTURE OF COHESIVE AND NON COHESIVE SEDIMENT
248 !| MSK |-->| IF YES, THERE IS MASKED ELEMENTS
249 !| MS_SABLE |<->| MASS OF SAND PER LAYER (KG/M2)
250 !| MS_VASE |<->| MASS OF MUD PER LAYER (KG/M2)
251 !| MU |-->| CORRECTION FACTOR FOR BED ROUGHNESS
252 !| NOMBLAY |-->| NUMBER OF LAYERS
253 !| NFRLIQ |-->| NUMBER OF LIQUID BOUNDARIES
254 !| NIT |-->| TOTAL NUMBER OF ITERATIONS
255 !| NPOIN |-->| NUMBER OF POINTS
256 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
257 !| NSICLA |-->| NUMBER OF SIZE CLASSES FOR BED MATERIALS
258 !| NUMLIQ |-->| LIQUID BOUNDARY NUMBER OF BOUNDARY POINTS
259 !| OPDTRA |-->| OPTION FOR THE DIFFUSION OF TRACERS
260 !| OPTBAN |-->| OPTION FOR THE TREATMENT OF TIDAL FLATS
261 !| OPTDIF |-->| OPTION FOR THE DISPERSION
262 !| OPTADV |-->| SCHEME OPTION FOR ADVECTION
263 !| PARTHENIADES |-->| CONSTANT OF THE KRONE AND PARTHENIADES EROSION LAW (M/S)
264 !| PASS |<->| IN FACT PASS_SUSP IN SISYPHE.F, ARRIVES AS .TRUE.
265 !| | | AT FIRST CALL AND IS CHANGED INTO .FALSE. BELOW
266 !| QSCLXS |<->| TRANSPORT RATE FOR EACH CLASS X-DIRECTION
267 !| QSCLYS |<->| TRANSPORT RATE FOR EACH CLASS Y-DIRECTION
268 !| QSCL_S |<->| SUSPENDED LOAD TRANSPORT RATE
269 !| QSXS |<->| SOLID DISCHARGE X (SUSPENSION)
270 !| QSYS |<->| SOLID DISCHARGE Y (SUSPENSION)
271 !| QS_C |-->| BEDLOAD TRANSPORT RATE
272 !| QS_S |<->| SUSPENDED TRANSPORT RATE
273 !| RESOL |-->| CHOICE OF ADVECTION SCHEME
274 !| S |<->| VOID STRUCTURE
275 !| SEDCO |-->| LOGICAL, SEDIMENT COHESIVE OR NOT
276 !| SLVTRA |<->| SLVCFG STRUCTURE
277 !| SOLSYS |-->| SLVCFG STRUCTURE
278 !| T1 |<->| WORK BIEF_OBJ STRUCTURE
279 !| T10 |<->| WORK BIEF_OBJ STRUCTURE
280 !| T11 |<->| WORK BIEF_OBJ STRUCTURE
281 !| T12 |<->| WORK BIEF_OBJ STRUCTURE
282 !| T2 |<->| WORK BIEF_OBJ STRUCTURE
283 !| T3 |<->| WORK BIEF_OBJ STRUCTURE
284 !| T4 |<->| WORK BIEF_OBJ STRUCTURE
285 !| T5 |<->| WORK BIEF_OBJ STRUCTURE
286 !| T6 |<->| WORK BIEF_OBJ STRUCTURE
287 !| T7 |<->| WORK BIEF_OBJ STRUCTURE
288 !| T8 |<->| WORK BIEF_OBJ STRUCTURE
289 !| T9 |<->| WORK BIEF_OBJ STRUCTURE
290 !| TASS |-->| CONSOLIDATION TAKEN INTO ACCOUNT
291 !| TB |-->| BLOCK OF WORKING ARRAYS
292 !| TE1 |<->| WORKING ARRAY FOR ELEMENTS
293 !| TE2 |<->| WORKING ARRAY FOR ELEMENTS
294 !| TE3 |<->| WORKING ARRAY FOR ELEMENTS
295 !| TETA_SUSP |<->| IMPLICITATION FACTOR FOR THE DEPOSITION FLUX AND DIFFUSION
296 !| TOB |-->| BED SHEAR STRESS (TOTAL FRICTION)
297 !| TOCE_SABLE |<->| CRITICAL BED SHEAR STRESS OF SAND
298 !| TOCE_MIXTE |<->| CRITICAL BED SHEAR STRESS OF THE MIXED SEDUIMENT PER LAYER
299 !| TOCE_VASE |<->| CRITICAL EROSION SHEAR STRESS OF THE MUD PER LAYER (N/M2)
300 !| U2D |-->| MEAN FLOW VELOCITY X-DIRECTION
301 !| UCONV |<->| X-COMPONENT ADVECTION FIELD (SISYPHE)
302 !| UCONV_TEL |-->| X-COMPONENT ADVECTION FIELD (TELEMAC)
303 !| UNSV2D |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
304 !| V2D |-->| MEAN FLOW VELOCITY Y-DIRECTION
305 !| V2DPAR |-->| INTEGRAL OF TEST FUNCTIONS, ASSEMBLED IN PARALLEL
306 !| VCE |-->| FLOW VISCOSITY
307 !| VCONV |<->| Y-COMPONENT ADVECTION FIELD (SISYPHE)
308 !| VCONV_TEL |-->| Y-COMPONENT ADVECTION FIELD (TELEMAC)
309 !| VISC_TEL |-->| VELOCITY DIFFUSIVITY (TELEMAC)
310 !| VITCD |-->| CRITICAL SHEAR VELOCITY FOR MUD DEPOSITION
311 !| VOLU2D |-->| INTEGRAL OF BASES
312 !| W1 |<->| WORKING ARRAY
313 !| XKX |-->| COEFFICIENT USED FOR COMPUTING THE DISPERSION
314 !| | | DEPENDS OF OPTIONS
315 !| XKY |-->| COEFFICIENT USED FOR COMPUTING THE DISPERSION
316 !| | | DEPENDS OF OPTIONS
317 !| XMVE |-->| FLUID DENSITY
318 !| XMVS |-->| SEDIMENT DENSITY
319 !| XWC |-->| SETTLING VELOCITIES
320 !| ZCONV |-->| THE PIECE-WISE CONSTANT PART OF ADVECTION FIELD
321 !| | | IS DM1*GRAD(ZCONV)
322 !| ZERO |-->| ZERO
323 !| ZF |-->| ELEVATION OF BOTTOM
324 !| ZFCL_S |<->| BED EVOLUTION PER CLASS, DUE TO SUSPENDED SEDIMENT
325 !| ZF_S |<->| ACCUMULATED BED EVOLUTION DUE TO SUSPENDED SEDIMENT
326 !| ZREF |<->| REFERENCE ELEVATION
327 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
328 !
329  USE interface_sisyphe,
330  & ex_suspension_computation => suspension_computation
331  USE bief
334  IMPLICIT NONE
335 !
336 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
337 !
338  type(slvcfg), INTENT(INOUT) :: slvtra
339  type(bief_obj), INTENT(IN) :: zf,volu2d,v2dpar,unsv2d
340  type(bief_obj), INTENT(IN), TARGET :: hn,hn_tel
341  type(bief_obj), INTENT(INOUT) :: uconv,vconv
342  type(bief_obj), INTENT(IN) :: mu,ksp,ksr,ks
343  type(bief_obj), INTENT(IN) :: tob,licbor
344  type(bief_obj), INTENT(INOUT) :: elay
345  type(bief_obj), INTENT(IN) :: afbor,bfbor
346  type(bief_obj), INTENT(IN) :: maskel,maskpt,ifamas
347  type(bief_obj), INTENT(INOUT) :: masktr,limdif,clt
348  INTEGER, INTENT(IN) :: NPOIN,IELM,NPTFR,ITRA,LT
349  INTEGER, INTENT(IN) :: NIT,RESOL,OPTBAN,KENT,KDDL
350  INTEGER, INTENT(IN) :: KDIR,OPTADV,OPDTRA,SOLSYS
351  INTEGER, INTENT(IN) :: KSORT,KLOG,KNEU
352  INTEGER, INTENT(IN) :: NFRLIQ,NSICLA,NOMBLAY
353  INTEGER, INTENT(IN) :: DEBUG,DIRFLU,MAXADV
354  INTEGER, INTENT(IN) :: NUMLIQ(*)
355  DOUBLE PRECISION, INTENT(IN) :: TETA_SUSP, DT, MASED0
356  DOUBLE PRECISION, INTENT(IN) :: XWC,FDM,FD90
357  DOUBLE PRECISION, INTENT(IN) :: CSF_SABLE,AVA(npoin)
358  DOUBLE PRECISION, INTENT(IN) :: KARMAN, XMVE, XMVS,VCE, GRAV
359  DOUBLE PRECISION, INTENT(IN) :: VITCD,PARTHENIADES,HMIN
360  LOGICAL, INTENT(IN) :: ENTETS,BILMA,MSK,SEDCO
361  LOGICAL, INTENT(IN) :: CHARR, IMP_INFLOW_C,CORR_CONV
362  LOGICAL, INTENT(IN) :: DIFT,MIXTE
363  type(bief_mesh), INTENT(INOUT) :: mesh
364  type(bief_obj), INTENT(INOUT) :: cs,cst,ctild,cbor,flbor_sis
365  type(bief_obj), INTENT(INOUT) :: disp,it1,it2,it3,it4,tb
366  type(bief_obj), INTENT(INOUT) :: t2, t3, t4, t8
367  type(bief_obj), INTENT(INOUT), TARGET :: t1
368  type(bief_obj), INTENT(INOUT) :: t9, t10, t11, t12, t14, te1
369  type(bief_obj), INTENT(INOUT) :: te2, te3, s, am1_s, am2_s
370  type(bief_obj), INTENT(INOUT) :: mbor,zref
371  DOUBLE PRECISION, INTENT(INOUT) :: MASTEN, MASTOU, MASINI, AC
372  type(bief_obj), INTENT(INOUT) :: zfcl_s
373  type(bief_obj), INTENT(IN) :: uconv_tel,vconv_tel
374  type(bief_obj), INTENT(INOUT) :: fludpt,fludp,fluer,flbortra
375  type(bief_obj), INTENT(INOUT) :: hprop, disp_c, cstaeq,csratio
376  type(bief_obj), INTENT(INOUT) :: fluer_vase,toce_mixte
377  type(bief_obj), INTENT(INOUT) :: qsclxs,qsclys
378  DOUBLE PRECISION, INTENT(INOUT) :: MS_SABLE(*)
379  DOUBLE PRECISION, INTENT(INOUT) :: MS_VASE(*)
380  DOUBLE PRECISION, INTENT(INOUT) :: ES_SABLE(*)
381  DOUBLE PRECISION, INTENT(INOUT) :: ES_VASE(*)
382  DOUBLE PRECISION, INTENT(INOUT) :: MASFIN,MASDEPT,MASDEP
383  DOUBLE PRECISION, INTENT(IN) :: ZERO
384  DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
385  DOUBLE PRECISION, INTENT(INOUT) :: AVAIL(npoin,nomblay,nsicla)
386  DOUBLE PRECISION, INTENT(INOUT) :: ES(npoin,nomblay),TOCE_SABLE
387  DOUBLE PRECISION, INTENT(INOUT) :: CONC(npoin,nomblay)
388  DOUBLE PRECISION, INTENT(INOUT) :: TOCE_VASE(nomblay)
389  type(bief_obj), INTENT(IN) :: qs_c,u2d,v2d,dm1,zconv
390  type(bief_obj), INTENT(IN) :: flbor_tel
391  INTEGER, INTENT(IN) :: ICQ
392  CHARACTER(LEN=24), INTENT(IN) :: CODE
393 !
394 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
395 !
396  INTEGER :: I,K,SOLSYS_SIS,OPTVF,BID(1),RESOL_MOD,IELMT
397  DOUBLE PRECISION :: TETAH,AGGLOT
398  LOGICAL :: YASMI2,YAFLULIM
399  type(bief_obj), POINTER :: hold
400  DOUBLE PRECISION, POINTER, DIMENSION(:) :: SAVE_UCONV,SAVE_VCONV
401  DOUBLE PRECISION :: MSTOT
402  DOUBLE PRECISION :: CONC_SABLE(npoin, nomblay)
403  INTEGER :: J
404 !
405  INTEGER, POINTER, DIMENSION(:) :: GLOSEG1,GLOSEG2
406 !
407 !-----------------------------------------------------------------------
408 !
409 ! IN CHARAC IELMT IS INTENT(INOUT)
410  ielmt=ielm
411 !
412 ! UCONV POINTER SAVED BEFORE PLAYING WITH IT
413 !
414  save_uconv=>uconv%R
415  save_vconv=>vconv%R
416  gloseg1=>mesh%GLOSEG%I(1:mesh%GLOSEG%DIM1)
417  gloseg2=>mesh%GLOSEG%I(mesh%GLOSEG%DIM1+1:2*mesh%GLOSEG%DIM1)
418 !
419 !======================================================================!
420 !======================================================================!
421 ! PROGRAM !
422 !======================================================================!
423 !======================================================================!
424 !
425 ! TAKES DETAILS OF THE CONTINUITY EQUATION INTO ACCOUNT
426 ! IN TELEMAC-2D OR 3D, WITH SOLSYS=2, DM1 AND ZCONV ARE USED.
427 !
428  IF(code(1:9).EQ.'TELEMAC2D') THEN
429  solsys_sis=solsys
430  ELSEIF(lt.GT.1.AND.code(1:9).EQ.'TELEMAC3D') THEN
431 ! CALL TO SISYPHE TO BE MOVED IN THE TELEMAC-3D TIME LOOP
432  solsys_sis=solsys
433  ELSE
434  solsys_sis=1
435  ENDIF
436 !
437 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
438 ! 1. COMPUTES THE REFERENCE ELEVATION --> ZREF
439 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
440 !
441 ! THREE OPTIONS : ICQ=1: FREDSOE REFERENCE CONC. ZREF = 2.D50
442 ! ICQ=2: BIJKER METHOD ZREF = MAX(KSP,KS)
443 ! ICQ=3: VAN RIJN ZREF= 0.5 KS
444 !
445  IF(icq.EQ.1) THEN
446  CALL os('X=Y ', x=zref, y=ksp)
447  ELSEIF(icq.EQ.2) THEN
448  CALL os('X=Y ', x=zref, y=ksr)
449  ELSEIF(icq.EQ.3) THEN
450  CALL os('X=CY ', x=zref, y=ks,c=0.5d0)
451  ELSEIF(icq.EQ.4) THEN
452  CALL os('X=CY ', x=zref, y=ks,c=0.5d0)
453  ELSE
454  WRITE(lu,201) icq
455 201 FORMAT(1x,'SUSPENSION_COMPUTATION:',/,1x,
456  & 'REFERENCE CONCENTRATION FORMULA',/,1x,
457  & 'UNEXPECTED VALUE:',1i6)
458  CALL plante(1)
459  stop
460  ENDIF
461 !
462 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
463 ! 2. ADVECTION VELOCITY --> UCONV, VCONV
464 ! TAKING INTO ACCOUNT THE VERTICAL PROFILE
465 ! OF CONCENTRATIONS AND VELOCITIES
466 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
467 !
468 ! OPTVF : TENS 0 : NORMAL
469 ! 1 : ADVECTION FIELD DOES NOT SATISFY
470 ! CONTINUITY
471 !
472 ! OPTVF : UNITS 0 : CONSTANT = 0
473 ! 1 : CHI-TUAN CONSTANT
474 ! 2 : LEO POSTMA CONSTANT
475 ! SEE CVTRVF IN BIEF AND
476 ! V5.7 RELEASE NOTES
477 !
478  yaflulim=.false.
479 !
480  IF(corr_conv.AND.(.NOT.sedco)) THEN
481 !
482  CALL cpstvc(u2d,t12)
483  CALL suspension_conv(tob,xmve, ksr,npoin,zref,u2d,v2d,hn,
484  & uconv,vconv,karman,zero,xwc,t12,resol,
485  & gloseg1,gloseg2,mesh%NSEG,flulim,
486  & yaflulim,solsys_sis,solsys,
487  & uconv_tel,vconv_tel)
488 !
489 ! ADVECTION FORM WHICH ACCEPTS AN ADVECTION FIELD
490 ! THAT DOES NOT SATISFY CONTINUITY + LEO-POSTMA CONSTANT
491 !
492 ! WITH 12: MASS CONSERVATION BUT NO MONOTONICITY
493 ! THE CORRECT THEORY
494  optvf=12
495 !
496 ! WITH 2: MONOTONICITY BUT NO MASS CONSERVATION
497 ! WRONG THEORY
498 ! OPTVF=2
499 !
500 ! OPTVF=2 IS POSSIBLE BUT WITH MASS CONSERVATION SPOILED
501 ! THE UNIT (HERE 2) IS REDONE IN CVDFTR ACCORDING TO THE
502 ! VALUE OF RESOL, SO IT IS NOT IMPORTANT HERE.
503 !
504  ELSE
505 !
506 ! POINTERS ARE USED TO AVOID COPY
507 !
508  IF(solsys_sis.EQ.1) THEN
509  uconv%R=>u2d%R
510  vconv%R=>v2d%R
511  ELSE
512 ! HERE UCONV_TEL IS PASSED ON
513  uconv%R=>uconv_tel%R
514  vconv%R=>vconv_tel%R
515  ENDIF
516 ! ADVECTION FORM THAT REQUIRES AN ADVECTION FIELD
517 ! THAT SATISFIES CONTINUITY + LEO-POSTMA CONSTANT
518  optvf=2
519 !
520  ENDIF
521 !
522 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
523 ! 3. EROSION FLUX : FLUER
524 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
525 !
526 !
527 ! SKIN FRICTION TAUP --> T4
528 !
529  CALL os('X=CYZ ', x= t4, y= tob, z= mu, c=1.d0)
530  CALL os('X=+(Y,C)', x=t4, y=t4, c=zero)
531 !
532 ! SAND ONLY
533 !
534  IF(.NOT.mixte) THEN
535  IF(.NOT.sedco) THEN
536  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_EROSION'
537  CALL suspension_erosion(t4,hn,fdm,fd90,ava,npoin,charr,xmve,
538  & xmvs,vce,grav,xwc,zero,
539  & zref,ac,fluer,cstaeq,qs_c,icq,u2d,v2d,
540  & csratio,debug)
541  IF (debug > 0) WRITE(lu,*) 'END_SUSPENSION_EROSION'
542 !
543 ! TODO: NOTE JMH : THIS SHOULD BE INCLUDED IN SUSPENSION_EROSION
544 !
545  DO i=1,npoin
546  fluer%R(i)=min(fluer%R(i),elay%R(i)*ava(i)/dt*csf_sable)
547  ENDDO
548 !
549 ! MUD ONLY
550 !
551  ELSE
552  CALL suspension_erosion_coh(t4,npoin,xmvs,
553  & partheniades,fluer,
554  & toce_vase,nomblay,dt,ms_vase)
555 !
556  IF(nomblay.EQ.1) THEN
557  DO i=1,npoin
558  fluer%R(i)=min(fluer%R(i),ms_vase(i)/dt/xmvs)
559  ENDDO
560  ELSE
561  DO i=1,npoin
562  mstot=0.d0
563  DO j=1,nomblay
564  mstot=mstot+ms_vase(i+(j-1)*npoin)
565  ENDDO
566  fluer%R(i)=min(fluer%R(i),mstot/dt/xmvs)
567  ENDDO
568  ENDIF
569  ENDIF
570 !
571 ! MIXED SEDIMENT
572 ! FIRST CLASS= SAND, SECOND CLASS = MUD
573 !
574  ELSE
575  IF(.NOT.sedco) THEN
576  IF(debug > 0) WRITE(lu,*) 'SUSPENSION_FLUX_MIXTE'
577  CALL suspension_flux_mixte(t4,fdm,npoin,charr,xmve,xmvs,
578  & vce,grav,xwc,zero,
579  & partheniades,fluer,fluer_vase,
580  & zref,ac,cstaeq,qs_c,icq,debug,
581  & avail,nsicla,es,toce_vase,
582  & toce_sable,nomblay,
583  & dt,toce_mixte%R,ms_sable,
584  & ms_vase)
585  IF (debug > 0) WRITE(lu,*) 'END_SUSPENSION_FLUX_MOY'
586  ENDIF
587  IF(sedco) CALL os('X=Y ',x=fluer, y=fluer_vase)
588  ENDIF
589 !
590 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
591 ! 4. DEPOSITION FLUX : FLUDPT =WC*T2
592 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
593 !
594 !---> FLUDPT: IMPLICIT TERM
595 ! TO ADD ? mak change ---> T2 : RATIO BETWEEN BOTTOM CONCENTRATION AND AVERAGE
596 !---> CSRATIO : RATIO BETWEEN BOTTOM CONCENTRATION AND AVERAGE
597 ! CONCENTRATION
598 !
599  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_DEPOT'
600  CALL suspension_depot(tob,hn,npoin,hmin,xwc,vitcd,zero,karman,
601  & fdm,fd90,xmve,t1,t2,zref,fludpt,debug,sedco)
602 ! TO ADD? mak & FDM,FD90,XMVE,T1,CSRATIO,T14,ZREF,FLUDPT,DEBUG,SEDCO,U2D,V2D,
603 ! TO ADD? mak & CSTAEQ,DT)
604 ! & XMVE,T1,T2,ZREF,FLUDPT,DEBUG,SEDCO)
605 !
606 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
607 ! 5. DIFFIN A SPECIFIC TREATMENT IS DONE IF THE ADVECTION METHOD
608 ! IS THE CHARACTERISTICS: FREE OUTPUTS ARE TREATED LIKE DIRICHLET.
609 ! THIS SPECIFIC TREATMENT IS CANCELLED HERE BY SENDING A MODIFIED
610 ! VALUE FOR RESOL : RESOL_MOD (IN DIFFIN THE ONLY TEST IS:
611 ! IF(RESOL.EQ.1) THEN .... ELSE .... ENDIF)
612 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
613 !
614  resol_mod=resol
615  IF(resol_mod.EQ.1) resol_mod=2
616  IF (debug > 0) WRITE(lu,*) 'DIFFIN'
617  CALL diffin(masktr,limdif%I,licbor%I,clt%I,u2d%R,v2d%R,
618  & mesh%XNEBOR%R,mesh%YNEBOR%R,
619  & mesh%NBOR%I,nptfr,
620  & kent,ksort,klog,kneu,kdir,kddl,resol_mod,
621  & mesh%NELBOR%I,npoin,
622 ! NFRLIQ
623  & msk,maskel%R,0,
624 ! THOMFR FRTYPE
625  & .false.,bid, cs,cbor,numliq,
626  & mesh%IKLBOR%I,mesh%NELEB,mesh%NELEBX)
627  IF (debug > 0) WRITE(lu,*) 'END DIFFIN'
628 !
629 !+++++++++++++++++++++++++++++++++++ELEVATION OF BOTTOM++++++++++++++++++++++++++++++++++++
630 ! 6. BOUNDARY CONDITIONS : CBORCONC_V
631 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
632 !
633 ! IMPOSES THE EQUILIBRIUM CONCENTRATION FOR THE INFLOW NODES !
634 ! HERE CBOR FROM BOUNDARY CONDITIONS FILE OR SUBROUTINE CONLIT
635 ! OVERWRITTEN
636 !
637 ! T2 = RATIO BETWEEN BOTTOM CONC.
638 ! AND AVERAGE CONC. MUST BE KEPT UNTIL THIS STAGE
639 !
640  IF (debug > 0) WRITE(lu,*) 'IMP_INFLOW_C'
641  IF(imp_inflow_c) THEN
642 !
643  DO k = 1, nptfr
644  IF(clt%I(k).EQ.kent) THEN
645  i = mesh%NBOR%I(k)
646  IF(.NOT.sedco) THEN
647  cbor%R(k) = cstaeq%R(i)/t2%R(i)
648  IF(mixte) cbor%R(k) = fluer%R(i)/t2%R(i)/xwc
649  ELSE
650  cbor%R(k) = fluer%R(i)/xwc
651  ENDIF
652 ! THIS IS THE CONDITION TO HAVE NO EVOLUTION
653 ! CS%R(I) MAY BE DIFFERENT FROM CBOR%R(K) IF UNSTEADY FLOW
654 ! OR IF DIRFLU.EQ.2 (CASE OF PRIORITY TO FLUXES)
655  fluer%R(i)=fludpt%R(i)*cs%R(i)
656  ENDIF
657  ENDDO
658 !
659  ENDIF
660  IF (debug > 0) WRITE(lu,*) 'FIN IMP_INFLOW_C'
661 !
662 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
663 ! 7. SOLVING TRANSPORT EQUATION IF METHOD OF CHARACTERISTICS
664 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
665 !
666  IF(resol == 1) THEN
667  IF (debug > 0) WRITE(lu,*) 'CHARAC'
668  CALL charac(cs,ctild,1,uconv,vconv,s,s,s,s,dt,ifamas,
669  & ielmt,npoin,1,1,1,
670  & msk,am1_s%X,am1_s%D,am1_s%D,
671  & tb,it1%I,it2%I,it2%I,it3%I,it4%I,it2%I,
672  & mesh,mesh%NELEM,mesh%NELMAX,mesh%IKLE,mesh%SURDET,
673  & am2_s,t14,slvtra,1.d0,entets,3,unsv2d,1)
674  IF (debug > 0) WRITE(lu,*) 'END_CHARAC'
675  ENDIF
676 !
677 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
678 ! 8. SOURCE AND SINKS
679 ! IMPLICIT SOURCE TERM FOR THE DEPOSITION : T9
680 ! EXPLICIT SOURCE TERM WITHOUT PUNCTUAL SOURCES : T11
681 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
682 !
683  IF(optban.EQ.2) THEN
684  CALL os('X=XY ',x=fluer ,y=maskpt)
685  ENDIF
686 !
687  CALL os('X=-Y ',x=t9,y=fludpt)
688  CALL os('X=Y ',x=t11,y=fluer)
689 !
690  DO i=1,npoin
691  IF(hn%R(i).GT.hmin) THEN
692  t11%R(i)=t11%R(i)/hn%R(i)
693  ELSE
694  t11%R(i)=0.d0
695 ! FLUER WILL BE USED AS T11*HN, SO IT MUST BE
696 ! CANCELLED ACCORDINGLY, OTHERWISE MASS BALANCE WRONG
697  fluer%R(i)=0.d0
698  ENDIF
699  ENDDO
700 !
701 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
702 ! 9. ADVECTION-DISPERSION STEP
703 ! CONFIGURATION OF ADVECTION
704 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
705 !
706  tetah = 1.d0 - teta_susp
707  massou = 0.d0
708  agglot=1.d0
709  yasmi2 = .true.
710 !
711 ! BOUNDARY FLUXES MUST BE SPECIFIED TO CVDFTR (FINITE VOLUMES CASE)
712 ! AND TO SUSPENSION_BILAN
713 ! SISYPHE ALONE : THEY MUST BE COMPUTED
714 ! WHEN COUPLING : THEY ARE GIVEN BY THE CALLING SUBROUTINE
715 ! EXCEPT AT THE 1ST ITERATION
716 !
717 ! IF(CODE(1:7).NE.'TELEMAC'.OR.LT.EQ.1) THEN
718  IF(code(1:7).NE.'TELEMAC'.OR.
719  & (code(1:9).EQ.'TELEMAC3D'.AND.lt.EQ.1)) THEN
720  IF (debug > 0) WRITE(lu,*) 'VECTOR'
721  CALL vector(flbor_sis,'=','FLUBDF ',ielbor(ielmt,1),
722 ! HPROP (HERE HPROP=HN, INVESTIGATE)
723  & 1.d0,hn ,hn,hn,uconv,vconv,vconv,
724  & mesh,.true.,masktr%ADR(5)%P)
725 ! 5: MASK OF LIQUID BOUNDARIES
726 ! SEE DIFFIN IN BIEF 6.1
727  IF (debug > 0) WRITE(lu,*) 'FIN VECTOR'
728  ELSE
729  CALL os('X=Y ',x=flbor_sis,y=flbor_tel)
730 ! MUST ALSO CHANGE BOUNDARY FLUXES IF THE ADVECTION
731 ! FIELD IS CORRECTED (T12 MUST HAVE BEEN KEPT SINCE
732 ! CALL TO SUSPENSION_CONV)
733  IF(corr_conv.AND..NOT.sedco) THEN
734  CALL osbd('X=CXY ',flbor_sis,t12,t12,1.d0,mesh)
735  ENDIF
736  ENDIF
737 !
738 ! FINITE VOLUMES ADVECTION USES THE TRUE H FROM THE PREVIOUS STEP
739  IF(code(1:7).EQ.'TELEMAC') THEN
740  IF(optban.NE.0) THEN
741  CALL cpstvc(cst,t1)
742 ! HN_TEL IS NOT CLIPPED
743  DO i=1,npoin
744  t1%R(i)=max(hn_tel%R(i),hmin)
745  ENDDO
746  hold=>t1
747  ELSE
748  hold=>hn_tel
749  ENDIF
750  ELSE
751 ! IN THIS CASE H AND HN ARE CONFUNDED
752  hold=>hn
753  ENDIF
754 !
755  IF(debug > 0) WRITE(lu,*) 'APPEL DE CVDFTR'
756 !
757  CALL cvdftr
758  & (cst, ctild, cs, t2,
759 ! H HTILD
760  & dift, resol, .true., hn, hold, hprop,
761  & uconv,vconv,dm1,zconv,solsys_sis,
762 ! TEXP SMH YASMH TIMP
763  & disp, disp_c, t11, t2, .false., t9, yasmi2,am1_s,am2_s,
764  & zf, cbor, afbor, bfbor, limdif, masktr, mesh,
765  & tb, t8, t12, t4, t10, te1, te2, te3,
766  & kdir,kddl,dt,entets,teta_susp,
767 ! BILAN
768  & agglot,entets,.false.,optadv,
769  & 1, opdtra, optban, msk, maskel, maskpt, mbor, s,
770 ! OPTSOU
771  & massou, 1, slvtra,flbor_sis,volu2d,v2dpar,unsv2d,
772  & optvf,flbortra,
773  & flulim,yaflulim,flulim,.false.,dirflu,.false.,t8 ,0.d0,
774 ! RAIN ,PLUIE ,TRAIN
775  & flulim ,.false.,maxadv,tb2,nco_dist,nsp_dist)
776 ! GIVEN_FLUX FLUX_GIVEN (NOW THE FLUX CAN BE GIVEN, THIS COULD
777 ! BE AN OPTIMISATION, AS HERE IT IS RECOMPUTED FOR EVERY CLASS...)
778 !
779  IF(debug > 0) WRITE(lu,*) 'END_CVDFTR'
780 !
781 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
782 ! 10. BED EVOLUTION DUE TO NET EROSION/DEPOSITUON FLUX
783 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
784 !
785  DO i=1,npoin
786  fludp%R(i)=fludpt%R(i)*cst%R(i)
787  ENDDO
788 !
789 ! COMPUTES EVOLUTION AND UPDATES DATA
790 ! TASS TO BE PASSED IN ARGUMENT
791 !
792 !
793  IF(.NOT.sedco) THEN
794  IF(.NOT.mixte) THEN
795  CALL os('X=Y-Z ', x=zfcl_s, y=fludp, z=fluer)
796  CALL os('X=CX ', x=zfcl_s, c=dt/csf_sable)
797  ELSE
798  DO i=1, npoin
799  DO j= 1, nomblay
800  conc_sable(i,j)=xmvs
801  ENDDO
802  ENDDO
803  CALL suspension_evol(zfcl_s,fludp,fluer,dt,
804  & npoin,xmvs,t3,ms_sable,es_sable,
805  & conc_sable,nomblay)
806  ENDIF
807  ELSE
808  CALL suspension_evol(zfcl_s,fludp,fluer,dt,
809  & npoin,xmvs,t3,ms_vase,es_vase,
810  & conc,nomblay)
811  ENDIF
812 !
813 ! WRITES OUT THE MIN/MAX VALUES TO THE LISTING
814 !
815  IF(entets) THEN
816  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_LISTING'
817  CALL suspension_listing(mesh,cst,zfcl_s,uconv,vconv,
818  & maskel,ielmt,dt,msk,t1)
819  IF(debug > 0) WRITE(lu,*) 'END_SUSPENSION_LISTING'
820  ENDIF
821 !
822 ! MASS-BALANCE FOR THE SUSPENSION
823 !
824  IF(bilma) THEN
825  IF(sedco) THEN
826  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_BILAN_COH'
828  & (mesh,cst,hn,maskel,ielmt,itra,lt,nit,dt,xmvs,
829  & ms_vase,nomblay,npoin,
830  & massou,mased0,msk,entets,masten,mastou,
831  & masini,t1,t2,t3,masfin,masdept,masdep,agglot,volu2d,
832  & numliq,nfrliq,nptfr,flbortra,sedco)
833  IF(debug > 0) WRITE(lu,*) 'END_SUSPENSION_BILAN_COH'
834  ELSE
835 !Modifs CVL
836  IF(mixte) THEN
837  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_BILAN_COH'
839  & (mesh,cst,hn,maskel,ielmt,itra,lt,nit,dt,xmvs,
840  & ms_sable,nomblay,npoin,
841  & massou,mased0,msk,entets,masten,mastou,
842  & masini,t1,t2,t3,masfin,masdept,masdep,agglot,volu2d,
843  & numliq,nfrliq,nptfr,flbortra,sedco)
844  IF(debug > 0) WRITE(lu,*) 'END_SUSPENSION_BILAN_COH'
845  ELSE
846 ! fin modifs CVL
847  IF (debug > 0) WRITE(lu,*) 'SUSPENSION_BILAN'
848  CALL suspension_bilan
849  & (mesh,cst,hn,zfcl_s,maskel,ielmt,itra,lt,nit,
850  & dt,csf_sable,massou,mased0,msk,entets,masten,mastou,
851  & masini,t2,t3,masfin,masdept,masdep,agglot,volu2d,
852  & numliq,nfrliq,nptfr,flbortra)
853  IF(debug > 0) WRITE(lu,*) 'END_SUSPENSION_BILAN'
854  ENDIF
855  ENDIF
856  ENDIF
857 !
858 !
859  CALL os('X=Y ', x=cs, y=cst)
860 !
861 ! NOTE: ARE QSCLXS AND QSCLYS USEFUL ????????
862 !
863  CALL os('X=YZ ', x=t1, y=uconv, z=hn)
864  CALL os('X=YZ ', x=t2, y=vconv, z=hn)
865  CALL os('X=YZ ', x=qsclxs, y=cs, z=t1)
866  CALL os('X=YZ ', x=qsclys, y=cs, z=t2)
867 !
868 ! RESTORING UCONV POINTERS
869 !
870  uconv%R=>save_uconv
871  vconv%R=>save_vconv
872 !
873 !======================================================================!
874 !======================================================================!
875 !
876  RETURN
877  END
subroutine suspension_bilan_coh(MESH, CST, HN, MASKEL, IELMT, ITRA, LT, NIT, DT, XMVS, MS_VASE, NOMBLAY, NPOIN, MASSOU, MASED0, MSK, ENTET, MASTEN, MASTOU, MASINI, T1, T2, T3, MASFIN, MASDEPT, MASDEP, AGGLOT, VOLU2D, NUMLIQ, NFRLIQ, NPTFR, FLBORTRA, SEDCO)
subroutine suspension_conv(TOB, XMVE, KSR, NPOIN, ZREF, U2D, V2D, HN, UCONV, VCONV, KARMAN, ZERO, XWC, ALPHA, RESOL, GLOSEG1, GLOSEG2, NSEG, FLULIM, YAFLULIM, SOLSYS_SIS, SOLSYS, UCONV_TEL, VCONV_TEL)
type(bief_obj), target tb2
subroutine suspension_computation(SLVTRA, HN, HN_TEL, UCONV, VCONV, MU, TOB, FDM, FD90, KSP, KSR, KS, ELAY, AVA, AFBOR, BFBOR, LIMDIF, CLT, MASKEL, MASKTR, MASKPT, IFAMAS, NPOIN, IELM, NPTFR, ITRA, LT, NIT, RESOL, OPTBAN, KENT, KDDL, KDIR, KSORT, KLOG, KNEU, OPTADV, OPDTRA, DEBUG, CSF_SABLE, TETA_SUSP, DT, MASED0, ZERO, XWC, KARMAN, XMVE, XMVS, VCE, GRAV, HMIN, VITCD, PARTHENIADES, ENTETS, BILMA, MSK, CHARR, IMP_INFLOW_C, MESH, ZF, CS, CST, CTILD, CBOR, DISP, IT1, IT2, IT3, IT4, TB, T1, T2, T3, T4, T8, T9, T10, T11, T12, T14, TE1, TE2, TE3, S, AM1_S, AM2_S, MBOR, MASTEN, MASTOU, MASINI, AC, ZFCL_S, FLUDPT, FLUDP, FLUER, HPROP, DISP_C, CSTAEQ, CSRATIO, MASFIN, MASDEPT, MASDEP, MASSOU, QS_C, ICQ, ZREF, CORR_CONV, U2D, V2D, SEDCO, DIFT, DM1, ZCONV, UCONV_TEL, VCONV_TEL, SOLSYS, FLBOR_TEL, FLBOR_SIS, FLBORTRA, CODE, VOLU2D, V2DPAR, UNSV2D, NUMLIQ, NFRLIQ, LICBOR, MIXTE, AVAIL, NSICLA, ES, ES_SABLE, ES_VASE, NOMBLAY, CONC, TOCE_VASE, TOCE_SABLE, FLUER_VASE, TOCE_MIXTE, MS_SABLE, MS_VASE, DIRFLU, QSCLXS, QSCLYS, MAXADV)
subroutine suspension_listing
subroutine diffin(MASKTR, LIMTRA, LITBOR, CLT, U, V, XNEBOR, YNEBOR, NBOR, NPTFR, KENT, KSORT, KLOG, KNEU, KDIR, KDDL, ICONV, NELBOR, NPOIN, MSK, MASKEL, NFRLIQ, THOMFR, FRTYPE, TN, TBOR, NUMLIQ, IKLBOR, NELEB, NELEBX)
Definition: diffin.f:10
subroutine suspension_bilan(MESH, CST, HN, ZFCL_S, MASKEL, IELMT, ITRA, LT, NIT, DT, CSF, MASSOU, MASED0, MSK, ENTET, MASTEN, MASTOU, MASINI, T2, T3, MASFIN, MASDEPT, MASDEP, AGGLOT, VOLU2D, NUMLIQ, NFRLIQ, NPTFR, FLBORTRA)
integer function ielbor(IELM, I)
Definition: ielbor.f:7
subroutine osbd(OP, X, Y, Z, C, MESH)
Definition: osbd.f:7
subroutine cvdftr(F, FTILD, FN, FSCEXP, DIFT, ICONVF, CONV, H, HN, HPROP, UCONV, VCONV, DM1, ZCONV, SOLSYS, VISC, VISC_S, SM, SMH, YASMH, SMI, YASMI, AM1, AM2, ZF, FBOR, AFBOR, BFBOR, LIMTRA, MASKTR, MESH, TB, T1, T2, T4, T10, TE1, TE2, TE3, KDIR, KDDL, DT, ENTET, TETAT, AGGLOT, INFOGT, BILAN, OPTADV, ISOUSI, OPDTRA, OPTBAN, MSK, MASKEL, MASKPT, MBOR, S, MASSOU, OPTSOU, SLVTRA, FLBOR, VOLU2D, V2DPAR, UNSV2D, OPTVF, FLBORTRA,
Definition: cvdftr.F:14
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
Definition: vector.f:7
subroutine suspension_erosion(TAUP, HN, FDM, FD90, AVA, NPOIN, CHARR, XMVE, XMVS, VCE, GRAV, XWC, ZERO, ZREF, AC, FLUER, CSTAEQ, QSC, ICQ, U2D, V2D, CSRATIO, DEBUG)
subroutine suspension_depot(TOB, HN, NPOIN, HMIN, XWC, VITCD, ZERO, KARMAN, FDM, FD90, XMVE, T1, T2, ZREF, FLUDPT, DEBUG, SEDCO)
subroutine suspension_erosion_coh(TAUP, NPOIN, XMVS, PARTHENIADES, FLUER, TOCE_VASE, NOMBLAY, DT, MS_VASE)
subroutine suspension_evol(ZFCL_S, FLUDP, FLUER, DT, NPOIN, XMVS, QFLUX, MS_VASE, ES_VASE, CONC, NOMBLAY)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target flulim
subroutine charac(FN, FTILD, NOMB, UCONV, VCONV, WCONV, FRCONV, ZSTAR, FREQ, DT, IFAMAS, IELM, NPOIN2, NPLAN, JF, NF, MSK, SHP, SHZ, SHF, TB, ELT, ETA, FRE, IT3, ISUB, FREBUF, MESH, NELEM2, NELMAX2, IKLE2, SURDET2, AM1, RHS, SLV, AGGLO, LISTIN, NGAUSS, UNSV, OPTCHA, POST, PERIO, YA4D, SIGMA, STOCHA, VISC)
Definition: charac.f:14
subroutine suspension_flux_mixte(TAUP, FDM, NPOIN, CHARR, XMVE, XMVS, VCE, GRAV, XWC, ZERO, PARTHENIADES, FLUER_SABLE, FLUER_VASE, ZREF, AC, CSTAEQ, QSC, ICQ, DEBUG, AVAIL, NSICLA, ES, TOCE_VASE, TOCE_SABLE, NOMBLAY, DT, TOCE_MIXTE, MS_SABLE, MS_VASE)
Definition: bief.f:3