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)
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
88 TYPE(bief_obj),
INTENT(INOUT) :: T2, T3
89 TYPE(bief_obj),
INTENT(INOUT) :: UCW, UCN
90 TYPE(bief_obj),
INTENT(INOUT) :: UW1, UW2, TW1
91 TYPE(bief_obj),
INTENT(INOUT) :: TW2, THETAC
92 TYPE(bief_obj),
INTENT(INOUT) :: FCW, QSC
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
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)
131 & (ucmoy,tobw,tob,alphaw,fw,cf,uw,npoin,xmve,fcw)
136 ucw2 = ucmoy%R(i)**2 + 0.5d0 * uw%R(i)**2
137 shields = fcw%R(i)*ucw2/dens/grav/dm
140 IF (shields <= 0.2d0)
THEN 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
147 omegacr = 0.7236d0 * sqrt(shields) - 0.3162d0
151 IF(tw1%R(i) > zero)
THEN 152 omega1 = uw1%R(i)**2 / (2.d0*dens*grav*xwc*tw1%R(i))
157 IF(tw2%R(i) > zero)
THEN 158 omega2 = uw2%R(i)**2 / (2.d0*dens*grav*xwc*tw2%R(i))
167 IF (omega1 <= omegacr)
THEN 168 w1 = 2.d0 * omega1 * xwc * tw1%R(i) / dm
171 w1 = 2.d0 * omegacr * xwc * tw1%R(i) / dm
172 wp1 = 2.d0 * (omega1-omegacr) * xwc * tw1%R(i) / dm
176 IF (omega2 <= omegacr)
THEN 177 w2 = 2.d0 * omega2 * xwc * tw2%R(i) / dm
180 w2 = 2.d0 * omegacr * xwc * tw2%R(i) / dm
181 wp2 = 2.d0 * (omega2-omegacr) * xwc * tw2%R(i) / dm
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))
190 gammaw = (2.d0 * ucw%R(i)**2 / dens / grav / dm)**3
192 gamman = (2.d0 * ucn%R(i)**2 / dens / grav / dm)**3
193 gamma = max(sqrt(gammaw**2 + gamman**2),1.d-10)
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)
subroutine bedload_calcdw
subroutine bedload_direction
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine bedload_interact(UCMOY, TOBW, TOB, ALPHAW, FW, CF, UW, NPOIN, XMVE, FCW)
subroutine bedload_dibwat