The TELEMAC-MASCARET system  trunk
bedload_formula.f
Go to the documentation of this file.
1 ! **************************
2  SUBROUTINE bedload_formula
3 ! **************************
4 !
5  &(u2d,v2d,ucmoy,hn,cf,mu,tob,tobw,uw,tw,thetaw,fw,
6  & acladm, unladm,ksp,ksr,ava,npoin,icf,hidfac,xmvs,xmve,
7  & dm,grav,vce,hmin,xwc,d90,karman,zero,
8  & pi,susp, ac, hiding, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10,
9  & t11,tetap, qsc, qss,ielmt,seccurrent,slopeff,
10  & coefpn,calfa,salfa,bijk,houle, sanfra)
11 !
12 !***********************************************************************
13 ! SISYPHE V8P0 12/09/2018
14 !***********************************************************************
15 !
16 !brief COMPUTES THE BED-LOAD TRANSPORT.
17 !
18 !history BUI MINH DUC
19 !+ **/01/2002
20 !+ V5P2
21 !+
22 !
23 !history C. VILLARET
24 !+ **/10/2003
25 !+ V5P4
26 !+
27 !
28 !history F. HUVELIN
29 !+ 12/01/2005
30 !+ V5P6
31 !+
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 13/07/2010
35 !+ V6P0
36 !+ Translation of French comments within the FORTRAN sources into
37 !+ English comments
38 !
39 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
40 !+ 21/08/2010
41 !+ V6P0
42 !+ Creation of DOXYGEN tags for automated documentation and
43 !+ cross-referencing of the FORTRAN sources
44 !
45 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
46 !+ 19/07/2011
47 !+ V6P1
48 !+ Name of variables
49 !+
50 !history J-M HERVOUET (EDF-LNHE)
51 !+ 27/02/2012
52 !+ V6P2
53 !+ ALPHA suppressed, was no longer used
54 !
55 !history R KOPMANN (BAW)
56 !+ 10/05/2016
57 !+ V7P2
58 !+ CALFA,SALFA dependent of grain classes
59 !
60 !history F.CORDIER & P.TASSI (EDF-LNHE)
61 !+ 12/09/2018
62 !+ V8P0
63 !+ PARSING of SANFRA for the formula of WILCOCK and CROWE (2003)
64 !
65 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 !| AC |<->| SHIELDS PARAMETER
67 !| ACLADM |-->| MEAN DIAMETER
68 !| AVA |-->| PERCENT AVAILABLE
69 !| BIJK |-->| EMPIRICAL COEFFICIENT
70 !| CF |-->| QUADRATIC FRICTION COEFFICIENT
71 !| COEFPN |-->| COEFFICIENT FOR SLOPING BED EFFECTS
72 !| D90 |-->| D90
73 !| DM |-->| DIAMETER OF THE CLASS
74 !| FW |-->| WAVE FRICTION COEFFICIENT
75 !| GRAV |-->| GRAVITY
76 !| HIDFAC |-->| HIDING FACTOR FORMULA
77 !| HIDING |<->| HIDING FACTOR
78 !| HMIN |-->| MININMUM WATER DEPTH
79 !| HN |-->| WATER DEPTH
80 !| HOULE |-->| EFFECT OF WAVE
81 !| ICF |-->| CHOICE OF FORMULA
82 !| IELMT |-->| NUMBER OF ELEMENTS
83 !| KARMAN |-->| VON KARMAN COEFFICIENT
84 !| KSP |-->| SKIN BED ROUGHNESS (M)
85 !| KSR |-->| RIPPLE BED ROUGHNESS (M)
86 !| MU |-->| CORRECTION FOR SKIN FRICTION
87 !| NPOIN |-->| NUMBER OF POINTS
88 !| PI |-->| PI
89 !| QSC |<->| BED LOAD TRANSPORT RATE (m2/S)
90 !| QSS |<->| SUSPENDED LOAD TRANSPORT RATE (M2/S)
91 !| SANFRA |-->| SAND FRACTION (WILCOCK AND CROWE, 2003)
92 !| SECCURRENT |-->| EFFECT OF SECUNDARY CURRENTS
93 !| SLOPEFF |-->| FORMULA FOR SLOPING BED EFFECTS
94 !| SUSP |-->| SUSPENSION TREATMENT
95 !| T1 |<->| WORKING ARRAYS
96 !| T10 |<->| --
97 !| T11 |<->| --
98 !| T2 |<->| --
99 !| T3 |<->| --
100 !| T4 |<->| --
101 !| T5 |<->| --
102 !| T6 |<->| --
103 !| T7 |<->| --
104 !| T8 |<->| --
105 !| T9 |<->| --
106 !| TETAP |<->| ADIMENSIONAL SKIN FRICTION
107 !| THETAW |-->| WAVE/CURRENT ANGLE
108 !| TOB |-->| TOTAL BED SHEAR STRESS (N/M2)
109 !| TOBW |-->| WAVE INDUCED BED SHEAR STRESS (N/M2)
110 !| TW |-->| WAVE PERIOD (S)
111 !| U2D |-->| LONGITUDINAL VELOCITY (m/S)
112 !| UCMOY |-->| CURRENT INTENSITY (M/S)
113 !| UNLADM |-->| DIAMETER OF LAYER 2 (M)
114 !| UW |-->| WAVE ORBITAL VELOCITY (M/S)
115 !| V2D |-->| TRANSVERSAL VELOCITY (M/S)
116 !| VCE |-->| FLUID KINEMATIC VISCOSITY (M2/S)
117 !| XMVE |-->| FLUID DENSITY (KG/M3)
118 !| XMVS |-->| SEDIMENT DENSITY (KG/M3)
119 !| XWC |-->| SETTLING VELOCITY (M/S)
120 !| ZERO |-->| ZERO
121 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122 !
123  USE interface_sisyphe,ex_bedload_formula => bedload_formula
124  USE bief
126  IMPLICIT NONE
127 !
128 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
129 !
130  TYPE(bief_obj), INTENT(IN) :: U2D, V2D, UCMOY,HN, CF, TOB
131  TYPE(bief_obj), INTENT(IN) :: MU,TOBW, UW, TW, THETAW, FW
132  TYPE(bief_obj), INTENT(IN) :: ACLADM,UNLADM,KSR,KSP
133  INTEGER, INTENT(IN) :: NPOIN, ICF, HIDFAC,IELMT
134  DOUBLE PRECISION, INTENT(IN) :: XMVS, XMVE, DM, GRAV, VCE
135  DOUBLE PRECISION, INTENT(IN) :: HMIN, XWC, D90
136  DOUBLE PRECISION, INTENT(IN) :: KARMAN, ZERO, PI
137  LOGICAL, INTENT(IN) :: SUSP,SECCURRENT,HOULE
138  DOUBLE PRECISION, INTENT(INOUT) :: AC
139  TYPE(bief_obj), INTENT(INOUT) :: HIDING
140  TYPE(bief_obj), INTENT(INOUT) :: T1, T2, T3, T4, T5, T6, T7
141  TYPE(bief_obj), INTENT(INOUT) :: T8, T9, T10,T11
142  TYPE(bief_obj), INTENT(INOUT) :: TETAP ! WORK ARRAY T12
143  TYPE(bief_obj), INTENT(INOUT) :: QSC, QSS
144  TYPE(bief_obj), INTENT(INOUT) :: COEFPN, CALFA, SALFA
145  INTEGER, INTENT(IN) :: SLOPEFF
146 !
147  DOUBLE PRECISION, INTENT (IN) :: BIJK,AVA(npoin)
148  DOUBLE PRECISION, INTENT (IN) :: SANFRA(npoin)
149 !
150 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
151 !
152  INTEGER :: I
153  DOUBLE PRECISION :: DENS,DSTAR
154  DOUBLE PRECISION, PARAMETER :: ZERO_LOCAL = 1.d-6
155  DOUBLE PRECISION :: C1
156 
157 !======================================================================!
158 !======================================================================!
159 ! PROGRAM !
160 !======================================================================!
161 !======================================================================!
162 !
163  ! *************************** !
164  ! I - ADIMENSIONAL PARAMETERS !
165  ! *************************** !
166  dens = (xmvs - xmve )/ xmve
167  dstar = dm*(grav*dens/vce**2)**(1.d0/3.d0)
168  ! ************************ !
169  ! II - SKIN FRICTION !
170  ! ************************ !
171 !
172  c1 = 1.d0/(dens*xmve*grav*dm)
173  CALL os('X=CYZ ', x=tetap, y=tob,z=mu, c=c1)
174  CALL os('X=+(Y,C)', x= tetap,y=tetap, c=zero_local)
175 !
176  IF(seccurrent) CALL bedload_seccurrent(ielmt,calfa,salfa)
177  ! ****************************************** !
178  ! IV - COMPUTES 2 TRANSPORT TERMS !
179  ! QSS : SUSPENSION !
180  ! QSC : BEDLOAD !
181  ! ****************************************** !
182  ! ===================================== !
183  ! IV(1) - MEYER-PETER-MULLER FORMULATION!
184  ! FOR BEDLOAD ONLY !
185  ! ===================================== !
186  IF(icf == 1) THEN
187 !
188  CALL bedload_meyer(tetap,hiding,hidfac,dens,grav,dm,ac,
189  & t1,qsc,slopeff,coefpn)
190  DO i=1,npoin
191  qsc%R(i)=qsc%R(i)*ava(i)
192  ENDDO
193 !
194  ! =========================== !
195  ! IV(2) - EINSTEIN FORMULATION!
196  ! FOR BEDLOAD ONLY !
197  ! =========================== !
198  ELSEIF(icf == 2) THEN
199  CALL bedload_einst(tetap,npoin,dens,grav,dm,dstar,qsc)
200  DO i=1,npoin
201  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
202  ENDDO
203 !
204  ! =================================== !
205  ! IV(30) - ENGELUND-HANSEN FORMULATION!
206  ! FOR TOTAL TRANSPORT !
207  ! =================================== !
208  ELSEIF(icf == 30) THEN
209 ! V6P0 MU IS USED INSTEAD OF CF
210 ! BEWARE: DIFFERENCES
211 ! CALL BEDLOAD_ENGEL(TETAP,DENS,GRAV,DM,QSC)
212 ! BACK TO EARLIER VERSION OF BEDLOAD_ENGEL
213  CALL bedload_engel(tob,cf,dens,grav,dm,xmve,qsc)
214 ! ARBITRARY DISTRIBUTION
215  DO i=1,npoin
216  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
217  ENDDO
218 !
219  ! ======================================== !
220  ! IV(3) - ENGELUND-HANSEN FORMULATION !
221  ! MODIFIED: CHOLLET ET CUNGE !
222  ! FOR TOTAL TRANSPORT !
223  ! ======================================== !
224  ELSEIF(icf == 3) THEN
225 ! KSP IS USED INSTEAD OF CFP
226  CALL bedload_engel_cc
227  & (tetap,cf,npoin,grav,dm,dens,t1,qsc)
228 ! ARBITRARY DISTRIBUTION
229  DO i=1,npoin
230  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
231  ENDDO
232 !
233  ! ============================== !
234  ! IV(4) - BIJKER FORMULATION !
235  ! FOR BEDLOAD + SUSPENSION !
236  ! ============================== !
237  ELSEIF (icf == 4) THEN
238  CALL bedload_bijker
239  & (tobw,tob,mu,ksp,ksr,hn,npoin,dm,dens,xmve,grav,
240  & xwc,karman,zero,t4,t7,t8,t9,qsc,qss,bijk,houle)
241  DO i=1,npoin
242  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
243  qss%R(i)=qss%R(i)*ava(i)*hiding%R(i)
244  ENDDO
245 !
246  ! ============================== !
247  ! IV(5) - SOULSBY FORMULATION !
248  ! FOR BEDLOAD + SUSPENSION !
249  ! ============================== !
250  ELSEIF (icf == 5) THEN
251  CALL bedload_soulsby
252  & (ucmoy,hn,uw,npoin,dens,grav,dm,dstar,
253  & d90,qsc,qss)
254  DO i=1,npoin
255  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
256  qss%R(i)=qss%R(i)*ava(i)*hiding%R(i)
257  ENDDO
258 !
259  ! ================================================== !
260  ! IV(6) - HUNZIKER / MEYER-PETER & MULLER FORMULATION!
261  ! FOR BEDLOAD ONLY !
262  ! ================================================== !
263  ELSEIF (icf == 6) THEN
264  CALL bedload_hunz_meyer
265  & (tob, mu, acladm, unladm, npoin, dens, xmve, grav,
266  & dm, ac, t1, t2, t3, hiding, qsc)
267  DO i=1,npoin
268  qsc%R(i)=qsc%R(i)*ava(i)
269  ENDDO
270 !
271  ! =========================== !
272  ! IV(7) - VAN RIJN FORMULATION!
273  ! FOR BEDLOAD ONLY !
274  ! =========================== !
275  ELSEIF (icf == 7) THEN
276 !
277  CALL bedload_vanrijn
278  & (tetap,npoin,dm,dens,grav,dstar,ac,qsc)
279  DO i=1,npoin
280  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
281  ENDDO
282 !
283  ! ============================== !
284  ! IV(8) - BAILARD FORMULATION !
285  ! FOR BEDLOAD + SUSPENSION !
286  ! ============================== !
287  ELSEIF (icf == 8) THEN
288 !
289  CALL bedload_bailard
290  & (u2d,v2d,ucmoy,tob,tobw,thetaw,uw,fw,cf,npoin,
291  & pi,xmve,grav,dens,xwc,t1,t2,t3,t4,t5,t6,t7,
292  & t8,t9,t10,t11,qsc,qss,houle)
293  DO i=1,npoin
294  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
295  qss%R(i)=qss%R(i)*ava(i)*hiding%R(i)
296  ENDDO
297 !
298  ! ======================================= !
299  ! IV(9) - DIBAJNIA AND WATANABE FORMULATION!
300  ! FOR TOTAL TRANSPORT !
301  ! ======================================= !
302  ELSEIF(icf == 9) THEN
303 !
304  CALL bedload_dibwat
305  & (u2d,v2d,ucmoy, cf, tob, tobw, uw, tw, fw, thetaw,
306  & npoin, xmve, dens, grav, dm, xwc, pi, t1, t2, t3, t4,
307  & t5, t6, t7, t8, t9, t10, t11, qsc)
308 ! ARBITRARY DISTRIBUTION
309  DO i=1,npoin
310  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
311  ENDDO
312 !
313  ! ======================================= !
314  ! IV(10) - WILCOCK AND CROWE 2003 FORMULATION!
315  ! NON-UNIFORM TRANSPORT !
316  ! ======================================= !
317  ELSEIF(icf == 10) THEN
318 !
320  & (tob, mu, acladm, dm, ava, grav, xmve, xmvs, sanfra, qsc, ac, t1,
321  & slopeff, coefpn)
322 !
323  ! ============================================ !
324  ! IV(0) - USER-DEFINED FORMULATION !
325  ! ============================================ !
326  ELSEIF (icf == 0) THEN
327  CALL qsform
328  & (u2d, v2d, tob, hn, xmve, tetap, mu, npoin, dm,
329  & dens, grav, dstar, ac, qsc, qss)
330  DO i=1,npoin
331  qsc%R(i)=qsc%R(i)*ava(i)*hiding%R(i)
332  qss%R(i)=qss%R(i)*ava(i)*hiding%R(i)
333  ENDDO
334  ! ================= !
335  ! IV(ELSE) - ERROR !
336  ! ================= !
337  ELSE
338  WRITE(lu,201) icf
339 201 FORMAT(1x,'TRANSP : TRANSPORT FORMULA UNKNOWN:',1i6)
340  CALL plante(1)
341  stop
342  ENDIF
343 !
344 !-----------------------------------------------------------------------
345 !
346 ! WHEN SUSPENSION IS NOT ASKED SPECIFICALLY, SOME BEDLOAD TRANSPORT
347 ! FORMULAS GIVE A VALUE
348 !
349  IF(.NOT.susp) THEN
350  IF(icf.EQ.4.OR.icf.EQ.5.OR.icf.EQ.8.OR.icf.EQ.0) THEN
351  DO i = 1,npoin
352  qsc%R(i) = qsc%R(i) + qss%R(i)
353  ENDDO
354  ELSE
355 ! TODO: NOTE JMH: IS THIS REALLY USEFUL ???
356  DO i = 1,npoin
357  qss%R(i) = 0.d0
358  ENDDO
359  ENDIF
360  ENDIF
361 !
362 !=======================================================================
363 !=======================================================================
364 !
365  RETURN
366  END
subroutine bedload_hunz_meyer(TOB, MU, ACLADM, UNLADM, NPOIN, DENS, XMVE, GRAV, DM, AC, TETAP, AHUNZI, ACP, HIDING, QSC)
subroutine bedload_formula(U2D, V2D, UCMOY, HN, CF, MU, TOB, TOBW, UW, TW, THETAW, FW, ACLADM, UNLADM, KSP, KSR, AVA, NPOIN, ICF, HIDFAC, XMVS, XMVE, DM, GRAV, VCE, HMIN, XWC, D90, KARMAN, ZERO, PI, SUSP, AC, HIDING, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TETAP, QSC, QSS, IELMT, SECCURRENT, SLOPEFF, COEFPN, CALFA, SALFA, BIJK, HOULE, SANFRA)
subroutine bedload_wilcock_crowe(TOB, MU, ACLADM, DM, AVA, GRAV, XMVE, XMVS, SANFRA, QSC, AC, ACP, SLOPEFF, COEFPN)
subroutine bedload_engel_cc(TETAP, CF, NPOIN, GRAV, DM, DENS, TETA, QSC)
subroutine bedload_vanrijn(TETAP, NPOIN, DM, DENS, GRAV, DSTAR, AC, QSC)
subroutine bedload_meyer(TETAP, HIDING, HIDFAC, DENS, GRAV, DM, AC, ACP, QSC, SLOPEFF, COEFPN)
Definition: bedload_meyer.f:7
subroutine bedload_bijker(TOBW, TOB, MU, KSP, KSR, HN, NPOIN, DM, DENS, XMVE, GRAV, XWC, KARMAN, ZERO, T4, T7, T8, T9, QSC, QSS, BIJK, HOULE)
Definition: bedload_bijker.f:8
subroutine bedload_einst(TETAP, NPOIN, DENS, GRAV, DM, DSTAR, QSC)
Definition: bedload_einst.f:7
subroutine bedload_engel(TOB, CF, DENS, GRAV, DM, XMVE, QSC)
Definition: bedload_engel.f:7
subroutine bedload_soulsby(UCMOY, HN, UW, NPOIN, DENS, GRAV, DM, DSTAR, D90, QSC, QSS)
subroutine bedload_bailard
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine bedload_seccurrent(IELMU, CALFA, SALFA)
subroutine qsform(U2D, V2D, TOB, HN, XMVE, TETAP, MU, NPOIN, DM, DENS, GRAV, DSTAR, AC, QSC, QSS)
Definition: qsform.f:8
subroutine bedload_dibwat
Definition: bedload_dibwat.f:4
Definition: bief.f:3