The TELEMAC-MASCARET system  trunk
suspension_miles.f
Go to the documentation of this file.
1 ! ***************************
2  SUBROUTINE suspension_miles
3 ! ***************************
4 !
5  &(hn,npoin,hmin,fdm,fd90,xwc,csratio)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P3 16/05/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE BED EXCHANGE FACTOR BETA BASED ON MILES (1986)
12 ! FOUND IN HR WALLINGFORD REPORT: SR75.
13 !
14 !history D. M. KELLY (HRW)
15 !+ 29/06/2011
16 !+ V6P3
17 !+ Fisrt version added to Sisyphe library
18 !
19 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 !| HMIN |-->|
21 !| HN |-->|
22 !| NPOIN |-->|
23 !| CSRATIO |---| RATIO BETWEEN BOTTOM CONC. AND AVERAGE CONC.
24 !| XWC |-->| FALL VELOCITY W_S
25 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !
28  USE interface_sisyphe,ex_suspension_miles => suspension_miles
29  USE bief
31  IMPLICIT NONE
32 !
33 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
34 !
35  TYPE(bief_obj), INTENT(IN) :: HN
36  INTEGER, INTENT(IN) :: NPOIN
37  DOUBLE PRECISION, INTENT(IN) :: FDM,FD90,XWC,HMIN
38  TYPE(bief_obj), INTENT(INOUT) :: CSRATIO
39 !
40 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41 !
42  INTEGER :: I
43  DOUBLE PRECISION :: UB,USTARS,RB,BETAS
44  DOUBLE PRECISION :: SFBETA(npoin),AUX,RRTPI
45  DOUBLE PRECISION :: FVINV
46  DOUBLE PRECISION :: DZ,TAU,TAU_SQ,UCR
47 !
48  DOUBLE PRECISION BIEF_ERF
49  EXTERNAL bief_erf
50 !
51  INTRINSIC sqrt,exp
52 ! INTRINSIC ERF
53 !
54 !======================================================================!
55 !======================================================================!
56 ! PROGRAM !
57 !======================================================================!
58 !======================================================================!
59 !
60 ! COMPUTE CONSTANTS:
61 !
62  DOUBLE PRECISION PI
63  pi = 4.d0 * atan( 1.d0 )
64  rrtpi = 1.d0/sqrt(pi)
65  fvinv = 1.d0/xwc**2
66 !
67 ! DMK MOD 03/05/2011
68 !
69 ! MODIFYING SUSPENDED LOAD TO BE LIKE SANDFLOW AND ALSO TO TAKE
70 ! LAG INTO CONSIDERATION VIA A BETA COMPUTATION.
71 !
72  DO i=1,npoin
73 !
74  IF(fdm.LT.500.e-6) THEN
75 ! UCR = 0.19D0*(D50**0.1D0)*LOG10(4.D0*(HN%R(I)/FDM)) ! SANDFLOW
76  ucr = 0.19d0*(fdm**0.1d0)*log10(4.d0*hn%R(i)/fd90) ! CORRECT
77  ELSE
78 ! UCR = 8.5D0*(D50**0.6D0)*LOG10(4.D0*(HN%R(I)/D50)) ! SANDFLOW
79  ucr = 8.5d0*(fdm**0.6d0)*log10(4.d0*hn%R(i)/fd90) ! CORRECT
80  ENDIF
81 !
82  ub = sqrt(u2d%R(i)**2+v2d%R(i)**2)
83 !
84  IF(hn%R(i).GT.hmin.AND.ub.GT.ucr) THEN ! STOP PROBLEMS WITH LOW VELOCITIES
85  ustars = 1.3d0*ub*sqrt(sfon/8.d0)
86  rb = xwc*15.d0/ustars
87 ! THIS IS DIFFERENT BETWEEN MILES’ PAPERS DUE TO TYPO IN DEF OF R
88  betas = rb/(1.d0-exp(-rb))
89 ! ACTUAL EQUATION FROM MILES (1981) [1]
90  dz = (1.d0/6.d0)*0.4d0*hn%R(i)*ustars
91 ! USE WITH [1]
92  tau = xwc*sqrt(dt/(4.d0*dz))
93  tau_sq = tau**2
94 ! EQ. (27) NOTE THIS IS ALREADY INTEGRATED WITH RESPECT TO TIME (DTS)
95 !
96 ! IF COMPILER ALOWS...
97 ! AUX=ERF(TAU)
98 ! AND IF NOT...
99  aux=bief_erf(tau)
100 !
101  sfbeta(i)=
102  & dz*fvinv*betas*(4.d0*tau_sq*(1.d0+tau_sq)*(1.d0-aux)
103  & + aux - 2.d0*tau*(1.d0+2.d0*tau_sq)*exp(-tau_sq)*rrtpi)
104 !
105  IF(sfbeta(i)*xwc/hn%R(i).GT.1.d0) sfbeta(i)=1.d0/(xwc*hn%R(i))
106 ! DIVIDE BACK THROUGH BY DT AS WE WILL INTEGRATE UP WRTT LATER
107  csratio%R(i)=sfbeta(i)/dt ! FOR USE WITH EQ. (27)
108 ! NOTE WE RECORD BETA_S (PROFILE PARAMETER) I.E. THE RATIO OF REF LEVEL CONC
109 ! TO DEPTH AVERAGED CONC THIS WILL THEN BE USED IN SUSPENSION_SANDFLOW.F:
110 ! NB: STORED IN T14
111  ELSE
112  sfbeta(i) = 1.d0
113  csratio%R(i) = 1.d0
114  ENDIF
115 !
116  ENDDO
117 !
118 ! END BETA FACTOR COMPUTATION
119 !
120 !======================================================================!
121 !======================================================================!
122 !
123  RETURN
124  END
subroutine suspension_miles(HN, NPOIN, HMIN, FDM, FD90, XWC, CSRATIO)
double precision, target dt
type(bief_obj), target v2d
type(bief_obj), target u2d
Definition: bief.f:3