The TELEMAC-MASCARET system  trunk
bedload_bailard.f
Go to the documentation of this file.
1 ! ****************************
2  SUBROUTINE bedload_bailard !
3 ! ****************************
4 !
5  &(u2d,v2d,ucmoy,tob,tobw,thetaw,uw,fw,cf,npoin,pi,
6  & xmve,grav,dens,xwc,alphaw,qscx,qscy,qssx,qssy,
7  & uc3x,uc3y,us4x,us4y,thetac,fcw,qsc,qss,houle)
8 !
9 !***********************************************************************
10 ! SISYPHE V6P1 21/07/2011
11 !***********************************************************************
12 !
13 !brief BAILARD FORMULATION.
14 !
15 !history C. VILLARET (LNHE)
16 !+ 01/10/2003
17 !+
18 !+
19 !
20 !history JMH
21 !+ 21/12/2006
22 !+ V6P0
23 !+ BEDLOAD_CALCBAIL DELETED; 'HOULE' ARGUMENT ADDED
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 OF WAVES WITH OX
45 !| CF |-->| QUADRATIC FRICTION COEFFICIENT
46 !| DENS |-->| RELATIVE SENSITY OF SEDIMENT
47 !| FCW |---| WAVE-CURRENT FRICTION ANGLE
48 !| FW |-->| WAVE FRICTION FACTOR
49 !| GRAV |-->| ACCELERATION OF GRAVITY
50 !| HOULE |-->| LOGICAL, FOR WAVE EFFECTS
51 !| NPOIN |-->| NUMBER OF POINTS
52 !| PI |-->| PI
53 !| QSC |<->| BEDLOAD TRANSPORT RATE
54 !| QSCX |<->| BEDLOAD TRANSPORT RATE IN THE X-DIRECTION
55 !| QSCY |<->| BEDLOAD TRANSPORT RATE IN THE Y-DIRECTION
56 !| QSS |<->| SUSPENDED LOAD TRANSPORT RATE
57 !| QSSX |<->| SUSPENDED LOAD TRANSPORT RATE IN THE X-DIRECTION
58 !| QSSY |<->| SUSPENDED LOAD TRANSPORT RATE IN THE Y-DIRECTION
59 !| THETAC |<->| CURRENT ANGLE TO THE X DIRECTION
60 !| THETAW |-->| ANGLE BETWEEN WAVE AND CURRENT
61 !| TOB |<->| BED SHEAR STRESS (TOTAL FRICTION)
62 !| TOBW |-->| WAVE INDUCED SHEAR STRESS
63 !| U2D |<->| MEAN FLOW VELOCITY X-DIRECTION
64 !| UC3X |<->| WORK ARRAY
65 !| UC3Y |<->| WORK ARRAY
66 !| UCMOY |-->| MEAN CURRENT
67 !| US4X |<->| WORK ARRAY
68 !| US4Y |<->| WORK ARRAY
69 !| UW |-->| ORBITAL WAVE VELOCITY
70 !| V2D |<->| MEAN FLOW VELOCITY Y-DIRECTION
71 !| XMVE |-->| FLUID DENSITY
72 !| XWC |-->| SETTLING VELOCITY
73 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74 !
75  USE interface_sisyphe,ex_bedload_bailard => bedload_bailard
76  USE bief
78  IMPLICIT NONE
79 !
80 ! 2/ GLOBAL VARIABLES
81 !
82  TYPE(bief_obj), INTENT(IN) :: U2D,V2D,UCMOY, TOB
83  TYPE(bief_obj), INTENT(IN) :: TOBW, THETAW, UW, FW, CF
84  INTEGER, INTENT(IN) :: NPOIN
85  LOGICAL, INTENT(IN) :: HOULE
86  DOUBLE PRECISION, INTENT(IN) :: PI, XMVE, GRAV, DENS, XWC
87  TYPE(bief_obj), INTENT(INOUT) :: ALPHAW ! WORK ARRAY T1
88  TYPE(bief_obj), INTENT(INOUT) :: QSCX, QSCY ! WORK ARRAY T2 AND T3
89  TYPE(bief_obj), INTENT(INOUT) :: QSSX, QSSY ! WORK ARRAY T4 AND T5
90  TYPE(bief_obj), INTENT(INOUT) :: UC3X, UC3Y ! WORK ARRAY T6 AND T7
91  TYPE(bief_obj), INTENT(INOUT) :: US4X, US4Y ! WORK ARRAY T8 AND T9
92  TYPE(bief_obj), INTENT(INOUT) :: THETAC, FCW ! WORK ARRAY T10 AND T11
93  TYPE(bief_obj), INTENT(INOUT) :: QSC, QSS
94 !
95 ! 3/ LOCAL VARIABLES
96 !
97  INTEGER :: I
98  DOUBLE PRECISION :: C3, C4, PHI
99  DOUBLE PRECISION, PARAMETER :: EPSC = 0.21d0 ! BEDLOAD
100  DOUBLE PRECISION, PARAMETER :: EPSS = 0.025d0 ! SUSPENSION
101  DOUBLE PRECISION :: U3X, U3Y, NUM
102 !
103 !======================================================================!
104 !======================================================================!
105 ! PROGRAM !
106 !======================================================================!
107 !======================================================================!
108 !
109 ! CASE WITH WAVES
110 !
111  IF(houle) THEN
112 !
113 ! ANGLE OF VELOCITY WITH OX (IN RADIANS)
114 !
115  CALL bedload_direction(u2d,v2d,npoin,pi,thetac)
116 !
117 ! ANGLE OF WAVES WITH OX (IN RADIANS)
118 !
119  CALL os('X=CY ', x=alphaw, y=thetaw, c=-pi/180.d0)
120  CALL os('X=X+C ', x=alphaw, c=0.5d0*pi)
121  CALL os('X=Y-Z ', x=alphaw, y=alphaw, z=thetac)
122 !
123 ! PARAMETERS ,
124 !
125 !
126 ! US4X AND US4Y ARE WORK ARRAYS, THEIR STRUCTURE IS GIVEN HERE
127 ! THE STRUCTURE OF THETAC (CATHERINE DON'T REMOVE THIS PLEASE)
128  CALL cpstvc(thetac,us4x)
129  CALL cpstvc(thetac,us4y)
130 !
131  DO i = 1, npoin
132  ! ********************* !
133  ! I - CURRENT REFERENCE SYSTEM !
134  ! ********************* !
135  u3x = ucmoy%R(i)**3
136  & + ucmoy%R(i)*uw%R(i)**2 * (1 + cos(2.d0*alphaw%R(i))/ 2.d0)
137  u3y = ucmoy%R(i)*uw%R(i)**2 * sin(2.d0*alphaw%R(i)) / 2.d0
138  ! ********************************************** !
139  ! II - 3RD ORDER MOMENTUM (LINEAR WAVE THEORY) !
140  ! ********************************************** !
141  uc3x%R(i) = u3x * cos(thetac%R(i)) - u3y * sin(thetac%R(i))
142  uc3y%R(i) = u3x * sin(thetac%R(i)) + u3y * cos(thetac%R(i))
143  ! ************************************************************ !
144  ! III - 4TH ORDER MOMENTUM (COLINEAR WAVES AND CURRENTS) !
145  ! ************************************************************ !
146  num = ( 8.d0*ucmoy%R(i)**4 + 3.d0*uw%R(i)**4
147  & + 24.d0*(ucmoy%R(i)**2)*(uw%R(i)**2) )*0.125d0
148  us4x%R(i) = num * cos(thetac%R(i))
149  us4y%R(i) = num * sin(thetac%R(i))
150  ENDDO
151  ! *********************************************** !
152  ! IV - FRICTION COEFFICIENT WAVE + CURRENT !
153  ! *********************************************** !
154  CALL bedload_interact
155  & (ucmoy,tobw,tob,alphaw,fw,cf,uw,npoin,xmve,fcw)
156  ! ******************************** !
157  ! V - TRANSPORT RATES !
158  ! ******************************** !
159  phi = pi / 6.d0 ! FRICTION ANGLE
160  c3 = epsc / (grav*dens*tan(phi))
161  c4 = epss / (grav*dens*xwc)
162  CALL os('X=CYZ ', x=qscx, y=fcw, z=uc3x, c=c3)
163  CALL os('X=CYZ ', x=qscy, y=fcw, z=uc3y, c=c3)
164  CALL os('X=CYZ ', x=qssx, y=fcw, z=us4x, c=c4)
165  CALL os('X=CYZ ', x=qssy, y=fcw, z=us4y, c=c4)
166 !
167 ! CASE WITHOUT WAVES
168 !
169  ELSE
170 !
171  WRITE(lu,*) 'BAILARD WITHOUT WAVES NOT PROGRAMMED'
172  CALL plante(1)
173  stop
174 !
175  ENDIF
176 !
177 ! NORMS
178 !
179  CALL os('X=N(Y,Z)', x=qsc, y=qscx, z=qscy)
180  CALL os('X=N(Y,Z)', x=qss, y=qssx, z=qssy)
181 !======================================================================!
182 !======================================================================!
183  RETURN
184  END
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
subroutine bedload_direction
subroutine bedload_bailard
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)
Definition: bief.f:3