The TELEMAC-MASCARET system  trunk
bedload_dibwat.f
Go to the documentation of this file.
1 ! ***************************
2  SUBROUTINE bedload_dibwat !
3 ! ***************************
4 !
5  &(u2d,v2d,ucmoy, cf, tob, tobw, uw, tw, fw, thetaw, npoin,
6  & xmve, dens, grav, dm, xwc, pi, alphaw, t2, t3, ucw, ucn,
7  & uw1, uw2, tw1, tw2, thetac, fcw, qsc)
8 !
9 !***********************************************************************
10 ! SISYPHE V6P1 21/07/2011
11 !***********************************************************************
12 !
13 !brief DIBAJNIA & WATANABE FORMULATION (1992).
14 !
15 !history C. VILLARET (LNHE)
16 !+ 15/11/2003
17 !+
18 !+
19 !
20 !history JMH
21 !+ 09/05/2007
22 !+ V5P7
23 !+ CHECKS FOR GAMMA=0 DIVISION
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 13/07/2010
27 !+ V6P0
28 !+ Translation of French comments within the FORTRAN sources into
29 !+ English comments
30 !
31 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
32 !+ 21/08/2010
33 !+ V6P0
34 !+ Creation of DOXYGEN tags for automated documentation and
35 !+ cross-referencing of the FORTRAN sources
36 !
37 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
38 !+ 19/07/2011
39 !+ V6P1
40 !+ Name of variables
41 !+
42 !
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !| ALPHAW |<->| ANGLE BETWEEN WAVE AND CURRENT
45 !| CF |-->| QUADRATIC FRICTION COEFFICIENT
46 !| DENS |-->| RELATIVE DENSITY
47 !| DM |-->| SEDIMENT GRAIN DIAMETER
48 !| FCW |-->| WAVE-CURRENT FRICTION FACTOR
49 !| FW |-->| WAVE FRICTION FACTOR
50 !| GRAV |-->| ACCELERATION OF GRAVITY
51 !| NPOIN |-->| NUMBER OF POINTS
52 !| PI |-->| PI
53 !| QSC |<->| BED LOAD TRANSPORT
54 !| T2 |<->| WORK BIEF_OBJ STRUCTURE
55 !| T3 |<->| WORK BIEF_OBJ STRUCTURE
56 !| THETAC |<->| CURRENT ANGLE TO THE X AXIS
57 !| THETAW |-->| ANGLE BETWEEN WAVE AND CURRENT
58 !| TOB |-->| BED SHEAR STRESS (TOTAL FRICTION)
59 !| TOBW |-->| WAVE INDUCED SHEAR STRESS
60 !| TW |-->| WAVE PERIOD
61 !| TW1 |<->| MID PERIOD (U(T)>0)
62 !| TW2 |<->| MID PERIOD (U(T)<0)
63 !| U2D |<->| MEAN FLOW VELOCITY X-DIRECTION
64 !| UCMOY |-->| MEAN CURRENT
65 !| UCN |<->| MEAN CURRENT AT AN ANGLE TO THE WAVE
66 !| UCW |<->| MEAN CURRENT PROJECTED IN THE WAVE DIRECTION
67 !| UW |-->| ORBITAL WAVE VELOCITY
68 !| UW1 |<->| MEAN CURRENT IN THE WAVE DIRECTION
69 !| UW2 |<->| MEAN CURRENT IN THE OPPOSITE DIRECTION
70 !| V2D |<->| MEAN FLOW VELOCITY Y-DIRECTION
71 !| XMVE |-->| FLUID DENSITY
72 !| XWC |-->| SETTLING VELOCITY
73 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74 !
75  USE interface_sisyphe,ex_bedload_dibwat => bedload_dibwat
76  USE bief
78  IMPLICIT NONE
79 !
80  ! 2/ GLOBAL VARIABLES
81  ! -------------------
82  TYPE(bief_obj), INTENT(IN) :: U2D,V2D,UCMOY, CF, TOB, TOBW
83  TYPE(bief_obj), INTENT(IN) :: UW, TW, FW
84  TYPE(bief_obj), INTENT(IN) :: THETAW
85  INTEGER, INTENT(IN) :: NPOIN
86  DOUBLE PRECISION, INTENT(IN) :: XMVE, DENS, GRAV, DM, XWC, PI
87  TYPE(bief_obj), INTENT(INOUT) :: ALPHAW ! WORK ARRAY T1
88  TYPE(bief_obj), INTENT(INOUT) :: T2, T3 !
89  TYPE(bief_obj), INTENT(INOUT) :: UCW, UCN ! WORK ARRAY T4, T5, T6
90  TYPE(bief_obj), INTENT(INOUT) :: UW1, UW2, TW1 ! WORK ARRAY T7, T8, T9
91  TYPE(bief_obj), INTENT(INOUT) :: TW2, THETAC ! WORK ARRAY T10, T11
92  TYPE(bief_obj), INTENT(INOUT) :: FCW, QSC ! WORK ARRAY T12
93 !
94  ! 3/ LOCAL VARIABLES
95  ! ------------------
96  INTEGER :: I
97  DOUBLE PRECISION :: UCW2, SHIELDS, OMEGACR, OMEGA1
98  DOUBLE PRECISION :: OMEGA2, W1, WP1, W2, WP2, GAMMAW
99  DOUBLE PRECISION :: GAMMAN, GAMMA, QSW, QSN
100  DOUBLE PRECISION, PARAMETER :: ZERO = 1.d-6
101  DOUBLE PRECISION, PARAMETER :: ALPHA = 0.0001d0
102  DOUBLE PRECISION, PARAMETER :: BETA = 0.55d0
103 !
104 !======================================================================!
105 !======================================================================!
106 ! PROGRAM !
107 !======================================================================!
108 !======================================================================!
109 !
110 ! ANGLE OF VELOCITY WITH OX
111 !
112  CALL bedload_direction(u2d,v2d,npoin,pi,thetac)
113 !
114 ! PROJECTIONS OF UCMOY IN THE WAVE DIRECTION
115 !
116  CALL os('X=CY ', x=alphaw, y=thetaw, c=-pi/180.d0)
117  CALL os('X=X+C ', x=alphaw, c=0.5d0*pi)
118  CALL os('X=Y-Z ', x=alphaw, y=alphaw, z=thetac)
119  CALL os('X=COS(Y)', x=t2 , y=alphaw)
120  CALL os('X=SIN(Y)', x=t3 , y=alphaw)
121  CALL os('X=YZ ', x=ucw , y=ucmoy , z=t2)
122  CALL os('X=CYZ ', x=ucn , y=ucmoy , z=t3, c= -1.d0)
123 !
124 ! QUADRATIC VELOCITIES (UW1=U(T)> 0 AND UW2=U(T)
125 !
126  CALL bedload_calcdw(ucw,uw,tw,npoin,pi,uw1,uw2,tw1,tw2)
127 !
128 ! FRICTION COEFFICIENT
129 !
130  CALL bedload_interact
131  & (ucmoy,tobw,tob,alphaw,fw,cf,uw,npoin,xmve,fcw)
132 !
133  DO i = 1, npoin
134 !
135 ! SHIELDS PARAMETER
136  ucw2 = ucmoy%R(i)**2 + 0.5d0 * uw%R(i)**2
137  shields = fcw%R(i)*ucw2/dens/grav/dm
138 !
139 ! CRITICAL OMEGA (TEMPERVILLE AND GUIZA,2000) !
140  IF (shields <= 0.2d0) THEN
141  omegacr = 0.03d0
142  ELSEIF (shields <= 0.4d0) THEN
143  omegacr = 1.d0 - sqrt(1.d0-((shields-0.2d0)/0.58d0)**2)
144  ELSEIF (shields <= 1.5d0) THEN
145  omegacr = 0.8104d0 * sqrt(shields) - 0.4225d0
146  ELSE
147  omegacr = 0.7236d0 * sqrt(shields) - 0.3162d0
148  ENDIF
149 !
150 ! OMEGA1, OMEGA2 !
151  IF(tw1%R(i) > zero) THEN
152  omega1 = uw1%R(i)**2 / (2.d0*dens*grav*xwc*tw1%R(i))
153  ELSE
154  omega1 = zero
155  ENDIF
156 !
157  IF(tw2%R(i) > zero) THEN
158  omega2 = uw2%R(i)**2 / (2.d0*dens*grav*xwc*tw2%R(i))
159  ELSE
160  omega2 = zero
161  ENDIF
162 !
163 ! QUANTITIES OF SAND DEPOSITED AND
164 ! IN SUSPENSION AT EACH PHASE OF THE CYCLE
165 !
166 ! PHASE 1
167  IF (omega1 <= omegacr) THEN
168  w1 = 2.d0 * omega1 * xwc * tw1%R(i) / dm
169  wp1 = 0.d0
170  ELSE
171  w1 = 2.d0 * omegacr * xwc * tw1%R(i) / dm
172  wp1 = 2.d0 * (omega1-omegacr) * xwc * tw1%R(i) / dm
173  ENDIF
174 !
175 ! PHASE 2
176  IF (omega2 <= omegacr) THEN
177  w2 = 2.d0 * omega2 * xwc * tw2%R(i) / dm
178  wp2 = 0.d0
179  ELSE
180  w2 = 2.d0 * omegacr * xwc * tw2%R(i) / dm
181  wp2 = 2.d0 * (omega2-omegacr) * xwc * tw2%R(i) / dm
182  ENDIF
183 !
184 ! GAMMAW, GAMMAN,GAMMA
185  IF ((uw2%R(i)*tw2%R(i) + uw1%R(i)*tw1%R(i)) > 0.d0 ) THEN
186  gammaw = ( uw1%R(i) * tw1%R(i) * (w1**3+wp2**3)
187  & - uw2%R(i) * tw2%R(i) * (w2**3+wp1**3))
188  & / ( uw1%R(i)*tw1%R(i)+uw2%R(i)*tw2%R(i))
189  ELSE
190  gammaw = (2.d0 * ucw%R(i)**2 / dens / grav / dm)**3
191  ENDIF
192  gamman = (2.d0 * ucn%R(i)**2 / dens / grav / dm)**3
193  gamma = max(sqrt(gammaw**2 + gamman**2),1.d-10)
194 !
195 ! SOLID TRANSPORT IN THE WAVE DIRECTION : QSW
196 ! AND IN THE NORMAL DIRECTION : QSN
197 !
198  qsw = alpha * gammaw * xwc * dm / gamma**(1.d0-beta)
199  qsn = alpha * gamman * xwc * dm / gamma**(1.d0-beta)
200  qsc%R(i) = sqrt(qsw**2 + qsn**2)
201 !
202  ENDDO
203 !
204 !----------------------------------------------------------------------
205 !
206  RETURN
207  END
subroutine bedload_calcdw
Definition: bedload_calcdw.f:4
subroutine bedload_direction
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine bedload_interact(UCMOY, TOBW, TOB, ALPHAW, FW, CF, UW, NPOIN, XMVE, FCW)
subroutine bedload_dibwat
Definition: bedload_dibwat.f:4
Definition: bief.f:3