The TELEMAC-MASCARET system  trunk
ride_vr_gaia.f
Go to the documentation of this file.
1 ! ***********************
2  SUBROUTINE ride_vr_gaia
3 ! ***********************
4 !
5  & (ksr,ks,unorm,hn,grav,xmve,xmvs,npoin,acladm)
6 !
7 !***********************************************************************
8 ! GAIA
9 !***********************************************************************
10 !
13 !
14 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 !
26  IMPLICIT NONE
27 !
28  INTEGER I,NPOIN
29 !
30  DOUBLE PRECISION, INTENT(INOUT) :: KSR(npoin),KS(npoin)
31  DOUBLE PRECISION, INTENT(IN) :: GRAV,XMVE,XMVS
32  DOUBLE PRECISION, INTENT(IN) :: HN(npoin)
33  DOUBLE PRECISION, INTENT(IN) :: ACLADM(npoin),UNORM(npoin)
34 !
35 ! LOCAL VARIABLES
36 !
37  DOUBLE PRECISION AI,ZERO,KSCR,KSCD,KSCMR,MOB,FES,FFS
38  DOUBLE PRECISION DSAND,DGRAVEL,DSILT
39 !
40 !---------------------------------------------------------------------
41 !
42  zero=1.d-6
43  dsilt=0.000032d0
44  dgravel=0.002d0
45  dsand=0.000062d0
46 !
47 ! COMPUTES CURRENT-DOMINATED ROUGHNESS USING VAN RIJN (2007)
48 !
49  DO i=1,npoin
50 !
51 ! MOBILITY NUMBER FOR CURRENT ONLY
52 !
53  ai = acladm(i)*grav*(xmvs-xmve)/xmve
54  mob = unorm(i)**2/ai
55 !
56 ! RIPPLE ROUGHNESS
57 !
58  IF(acladm(i).LE.0.25d0*dgravel)THEN
59  fes=1.d0
60  ELSE
61  fes=(0.25d0*dgravel/acladm(i))**1.5d0
62  ENDIF
63 !
64  IF(acladm(i).LT.dsilt)THEN
65  kscr=20.d0*dsilt
66  ELSE
67  ai= tanh(0.015d0*(mob-150.d0))
68  kscr=fes*acladm(i)*(85.d0-65.d0*ai)
69  ENDIF
70 !
71 ! MEGARIPPLE ROUGHNESS
72 !
73  IF(acladm(i).GE.(1.5d0*dsand))THEN
74  ffs=1.d0
75  ELSE
76  ffs=acladm(i)/1.5d0/dsand
77  ENDIF
78  IF(acladm(i).LE.dsilt)THEN
79  kscmr=0.d0
80  ELSE
81  kscmr=0.00002d0*ffs*hn(i)*(1.d0-exp(-0.05d0*mob))
82  IF(mob.GT.550.d0.AND.acladm(i).GE.1.5d0*dsand)THEN
83  kscmr=0.02d0
84  ELSEIF(mob.GT.550d0.AND.acladm(i).LT.1.5d0*dsand)THEN
85  kscmr=200.d0*acladm(i)
86  ENDIF
87  ENDIF
88 !
89 ! DUNE ROUGHNESS
90 !
91  IF(acladm(i).LT.dsilt) THEN
92  kscd=0.d0
93  ELSE
94  ai=(1.d0-exp(-0.02d0*mob))*(600.d0-mob)
95  kscd=0.00008d0*ffs*hn(i)* ai
96  ENDIF
97  IF(mob.GT.600.d0) kscd=0.d0
98  IF(kscd.GT.1.d0) kscd=1.d0
99 !
100 ! ***RIPPLE BED ROUGHNESS FOR SEDIMENT COMPUTATIONS IN GAIA ***
101 !
102  ksr(i)=kscr
103 !
104 ! *** TOTAL ROUGHNESS FOR COMPUTATIONS IN TELEMAC2D **
105 !
106  ks(i)=sqrt(kscr**2+kscmr**2+kscd**2)
107 !
108  ENDDO
109 !
110 !AGD****************************************************
111 !
112 !---------------------------------------------------------------------
113 !
114  RETURN
115  END
subroutine ride_vr_gaia(KSR, KS, UNORM, HN, GRAV, XMVE, XMVS, NPOIN, ACLADM)
Definition: ride_vr_gaia.f:7