The TELEMAC-MASCARET system  trunk
bedload_soulsby_gaia.f
Go to the documentation of this file.
1 ! *******************************
2  SUBROUTINE bedload_soulsby_gaia
3 ! *******************************
4 !
5  & (unorm,hn, uw, npoin, dens, grav, dcla, dstar, qsc,
6  & qss,xmvs)
7 !
8 !***********************************************************************
9 ! GAIA
10 !***********************************************************************
11 !
13 !
14 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27 !
28  USE interface_gaia,ex_bedload_soulsby => bedload_soulsby_gaia
29  USE bief
32  IMPLICIT NONE
33  ! 2/ GLOBAL VARIABLES
34  ! -------------------
35  TYPE(bief_obj), INTENT(IN) :: HN, UNORM, UW
36  INTEGER, INTENT(IN) :: NPOIN
37  DOUBLE PRECISION, INTENT(IN) :: DENS, GRAV, DCLA, DSTAR,XMVS
38  TYPE(bief_obj), INTENT(INOUT) :: QSC, QSS
39 !
40  ! 3/ LOCAL VARIABLES
41  ! ------------------
42  INTEGER :: I
43  DOUBLE PRECISION :: COEF, ASS, ASB, CD
44  DOUBLE PRECISION :: UCR, VTOT, TRA, URMS, FD90
45  DOUBLE PRECISION, PARAMETER :: Z0=0.006d0
46 !
47 !======================================================================!
48 !======================================================================!
49 ! PROGRAM !
50 !======================================================================!
51 !======================================================================!
52  ! ************************* !
53  ! I - SUSPENSION COEFFCIENT !
54  ! ************************* !
55  coef = (dens *grav*dcla)**1.2d0
56  ass = 0.012d0*dcla*(dstar**(-0.6d0))/coef
57 !---------------------------------------------------------
58 ! VALUE OF D90 OF SEDIMENT
59 ! WITH ONE SAND CLASS, IT IS USER SET
60 ! WITH MORE THAN ONE SAND CLASS, IT IS
61 ! CONSIDERED AS THE RATIO BETWEEN SKIN FRICTION AND MEAN
62 ! DIAMETER * D50
63  IF (nsand.EQ.1) THEN
64  fd90 = d90
65  ELSE
66  fd90 = dcla * kspratio
67  ENDIF
68 !
69 !
70 !! WRITE(LU,201)
71 !!201 FORMAT(1X,'BEDLOAD_SOULSBY_GAIA:',/,1X,
72 !! & 'DEFINED FD90 OF SEDIMENT')
73 !! CALL PLANTE(1)
74 !! STOP
75 !------------------------------------------------------------
76 !
77  DO i = 1, npoin
78 !
79  ! *************************** !
80  ! III - BEDLOAD COEFFICIENT !
81  ! *************************** !
82  asb = 0.005d0*hn%R(i)*(dcla/max(hn%R(i),dcla))**1.2d0 / coef
83 !
84  ! ********************************** !
85  ! IV - ROUGHNESS COEFFICIENT CD !
86  ! SOULSBY: Z0=0.006 --> KS=18CM !
87  ! ********************************** !
88  cd = (0.4d0 / (log(max(hn%R(i),z0)/z0)-1.d0))**2
89 !
90  ! ************************************************ !
91  ! V - CRTITICAL CURRENT SPEED UCR !
92  ! ************************************************ !
93  IF (dcla < 0.0005d0) THEN
94  ucr = 0.19d0*(dcla**0.1d0)*log10(4.d0*max(hn%R(i),fd90)/fd90)
95  ELSE
96  ucr = 8.50d0*(dcla**0.6d0)*log10(4.d0*max(hn%R(i),fd90)/fd90)
97  ENDIF
98 !
99  ! ************************************************* !
100  ! VI - SPEED INDUCED BY THE CURRENT AND WAVES !
101  ! ************************************************* !
102  urms = uw%R(i)/sqrt(2.d0)
103  vtot = sqrt(unorm%R(i)**2+(0.018d0/cd)*urms**2)
104  ! *********************************************** !
105  ! VII - SUSPENDED AND BEDLOAD TRANSPORT !
106  ! *********************************************** !
107  IF (vtot > ucr) THEN
108  tra = unorm%R(i) * (vtot - ucr )**2.4d0
109  qss%R(i)= ass * tra
110  qsc%R(i)= asb * tra
111  ELSE
112  qss%R(i) = 0.d0
113  qsc%R(i) = 0.d0
114  ENDIF
115  ENDDO
116 !======================================================================!
117 ! SOLID DISCHARGE IS TRANSFORMED IN [kg/(m*s)]
118 !
119  CALL os('X=CX ', x=qsc, c=xmvs)
120  CALL os('X=CX ', x=qss, c=xmvs)
121 !======================================================================!
122  RETURN
123  END SUBROUTINE bedload_soulsby_gaia
integer nsand
Total number of sand.
double precision, target d90
Sediment diameter D90, for sand when only.
double precision, target kspratio
Ratio between skin friction and mean diameter.
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine bedload_soulsby_gaia(UNORM, HN, UW, NPOIN, DENS, GRAV, DCLA, DSTAR, QSC, QSS, XMVS)
Definition: bief.f:3