The TELEMAC-MASCARET system  trunk
ride_vr.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE ride_vr
3 ! ******************
4 !
5  & (ksr,ks,unorm,hn,grav,xmve,xmvs,npoin,acladm)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P1 21/07/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE DIMENSIONS OF EQUILIBRIUM RIPPLES.
12 !+ VAN RIJN (2007) (CURRENT ONLY).
13 !
14 !history C. VILLARET (LNHE); AG DAVIES (UCW)
15 !+
16 !+ V6P0
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
32 !+ 19/07/2011
33 !+ V6P1
34 !+ Name of variables
35 !+
36 !
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !| ACLADM |-->| MEAN DIAMETER OF SEDIMENT
39 !| GRAV |-->| ACCELERATION OF GRAVITY
40 !| HN |-->| WATER DEPTH
41 !| KS |-->| TOTAL ROUGHNESS
42 !| KSP |-->| BED SKIN ROUGHNESS
43 !| NPOIN |-->| NUMBER OF POINTS
44 !| UNORM |-->| INTENSITE DU COURANT
45 !| XMVE |-->| FLUID DENSITY
46 !| XMVS |-->| SEDIMENT DENSITY
47 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48 !
49  IMPLICIT NONE
50 !
51  INTEGER I,NPOIN
52 !
53  DOUBLE PRECISION, INTENT(INOUT) :: KSR(npoin),KS(npoin)
54  DOUBLE PRECISION, INTENT(IN) :: GRAV,XMVE,XMVS
55  DOUBLE PRECISION, INTENT(IN) :: HN(npoin)
56  DOUBLE PRECISION, INTENT(IN) :: ACLADM(npoin),UNORM(npoin)
57 !
58 ! LOCAL VARIABLES
59 !
60  DOUBLE PRECISION AI,ZERO,KSCR,KSCD,KSCMR,MOB,FES,FFS
61  DOUBLE PRECISION DSAND,DGRAVEL,DSILT
62 !
63 !---------------------------------------------------------------------
64 !
65  zero=1.d-6
66  dsilt=0.000032d0
67  dgravel=0.002d0
68  dsand=0.000062d0
69 !
70 ! COMPUTES CURRENT-DOMINATED ROUGHNESS USING VAN RIJN (2007)
71 !
72  DO i=1,npoin
73 !
74 ! MOBILITY NUMBER FOR CURRENT ONLY
75 !
76  ai = acladm(i)*grav*(xmvs-xmve)/xmve
77  mob = unorm(i)**2/ai
78 !
79 ! RIPPLE ROUGHNESS
80 !
81  IF(acladm(i).LE.0.25d0*dgravel)THEN
82  fes=1.d0
83  ELSE
84  fes=(0.25d0*dgravel/acladm(i))**1.5d0
85  ENDIF
86 !
87  IF(acladm(i).LT.dsilt)THEN
88  kscr=20.d0*dsilt
89  ELSE
90  ai= tanh(0.015d0*(mob-150.d0))
91  kscr=fes*acladm(i)*(85.d0-65.d0*ai)
92  ENDIF
93 !
94 ! MEGARIPPLE ROUGHNESS
95 !
96  IF(acladm(i).GE.(1.5d0*dsand))THEN
97  ffs=1.d0
98  ELSE
99  ffs=acladm(i)/1.5d0/dsand
100  ENDIF
101  IF(acladm(i).LE.dsilt)THEN
102  kscmr=0.d0
103  ELSE
104  kscmr=0.00002d0*ffs*hn(i)*(1.d0-exp(-0.05d0*mob))
105  IF(mob.GT.550.d0.AND.acladm(i).GE.1.5d0*dsand)THEN
106  kscmr=0.02d0
107  ELSEIF(mob.GT.550d0.AND.acladm(i).LT.1.5d0*dsand)THEN
108  kscmr=200.d0*acladm(i)
109  ENDIF
110  ENDIF
111 !
112 ! DUNE ROUGHNESS
113 !
114  IF(acladm(i).LT.dsilt) THEN
115  kscd=0.d0
116  ELSE
117  ai=(1.d0-exp(-0.02d0*mob))*(600.d0-mob)
118  kscd=0.00008d0*ffs*hn(i)* ai
119  ENDIF
120  IF(mob.GT.600.d0) kscd=0.d0
121  IF(kscd.GT.1.d0) kscd=1.d0
122 !
123 ! ***RIPPLE BED ROUGHNESS FOR SEDIMENT COMPUTATIONS IN SISYPHE ***
124 !
125  ksr(i)=kscr
126 !
127 ! *** TOTAL ROUGHNESS FOR COMPUTATIONS IN TELEMAC2D **
128 !
129  ks(i)=sqrt(kscr**2+kscmr**2+kscd**2)
130 !
131  ENDDO
132 !
133 !AGD****************************************************
134 !
135 !---------------------------------------------------------------------
136 !
137  RETURN
138  END
subroutine ride_vr(KSR, KS, UNORM, HN, GRAV, XMVE, XMVS, NPOIN, ACLADM)
Definition: ride_vr.f:7