The TELEMAC-MASCARET system  trunk
friction_khione.f
Go to the documentation of this file.
1 ! **************************
2  SUBROUTINE friction_khione
3 ! **************************
4 !
5  &( npoin, kfrot, grav,karman, chestr, cf, h,u,v )
6 !
7 !***********************************************************************
8 ! TELEMAC2D V7P3
9 !***********************************************************************
10 !
11 !brief Sets the friction coefficient under the ice cover.
12 !
13 !code
14 !+ FRICTION LAWS PROGRAMMED :
15 !+
16 !+ KFROT = 0 : NO FRICTION
17 !+ KFROT = 1 : LAW OF HAALAND
18 !+ KFROT = 2 : LAW OF CHEZY
19 !+ KFROT = 3 : LAW OF STRICKLER
20 !+ KFROT = 4 : LAW OF MANNING
21 !+ KFROT = 5 : LAW OF NIKURADSE
22 !
23 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 !| CF |<--| ADIMENSIONAL FRICTION COEFFICIENT
25 !| CHESTR |-->| FRICTION PARAMETER
26 !| GRAV |-->| GRAVITY ACCELERATION
27 !| H |-->| WATER DEPTH
28 !| KARMAN |-->| VON KARMAN'S CONSTANT
29 !| KFROT |-->| LAW USED FOR THE CALCULATION
30 !| NPOIN |-->| NUMBER OF NODES
31 !| U |-->| X COMPONENT OF THE VELOCITY
32 !| V |-->| Y COMPONENT OF THE VELOCITY
33 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34 !
35  USE bief
36 !
38  IMPLICIT NONE
39 !
40 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41 !
42  INTEGER, INTENT(IN) :: NPOIN, KFROT
43  DOUBLE PRECISION, INTENT(IN) :: GRAV, KARMAN
44  TYPE(bief_obj), INTENT(IN) :: CHESTR,H,U,V
45  TYPE(bief_obj), INTENT(INOUT) :: CF
46 !
47 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48 !
49  INTEGER :: I
50  DOUBLE PRECISION, PARAMETER :: TIERS = 1.d0/3.d0
51  DOUBLE PRECISION, PARAMETER :: SUR30 = 1.d0/30.d0
52  DOUBLE PRECISION :: UNORM, INLOG, AUX
53  DOUBLE PRECISION, PARAMETER :: EPS=1.d-3
54 !
55 !=======================================================================!
56 !=======================================================================!
57 ! PROGRAMME !
58 !=======================================================================!
59 !=======================================================================!
60 !
61  SELECT CASE (kfrot)
62 !
63 ! NO FRICTION
64 ! -----------
65 !
66  CASE(0)
67 !
68  DO i = 1,npoin
69  cf%R(i) = 0.d0
70  ENDDO
71 !
72 ! LAW OF HAALAND
73 ! --------------
74 !
75  CASE(1)
76 !
77  DO i = 1,npoin
78  unorm = max(sqrt( u%R(i)**2 + v%R(i)**2 ),1.d-6)
79 ! 1.D-6: LAMINAR VISCOSITY OF WATER
80  inlog = (6.9d0*1.d-6/4.d0 /max(h%R(i),eps)/unorm)**3
81  & + (chestr%R(i)/14.8d0/max(h%R(i),eps))**3.33d0
82  inlog = min(1.d0-1.d-6,inlog)
83  aux = -0.6d0*log(inlog)/log(10.d0)
84  cf%R(i) = 0.25d0 / aux**2
85  ENDDO
86 !
87 ! LAW OF CHEZY
88 ! ------------
89 !
90  CASE(2)
91 !
92  DO i = 1,npoin
93  cf%R(i) = 2.d0*grav/(chestr%R(i)**2)
94  ENDDO
95 !
96 ! LAW OF STRICKLER
97 ! ----------------
98 !
99  CASE(3)
100 !
101  DO i = 1,npoin
102  cf%R(i) = 2.d0*grav/chestr%R(i)**2/max(h%R(i),eps)**tiers
103  ENDDO
104 !
105 ! LAW OF MANNING
106 ! --------------
107 !
108  CASE(4)
109 !
110  DO i = 1,npoin
111  cf%R(i) = 2.d0*grav*(chestr%R(i)**2)/max(h%R(i),eps)**tiers
112  ENDDO
113 !
114 ! LAW OF NIKURADSE
115 ! ----------------
116 !
117  CASE(5)
118 !
119 ! NOTE: 11.036 IS 30.D0/EXP(1.D0)
120  DO i = 1,npoin
121  aux=max(1.001d0,max(h%R(i),eps)*11.036d0/chestr%R(i))
122  cf%R(i) = 2.d0 / (log(aux)/karman)**2
123  ENDDO
124 !
125 ! OTHER CASES
126 ! -----------
127 !
128  CASE DEFAULT
129 !
130  WRITE(lu,2) kfrot
131 2 FORMAT(i5,' : UNKNOWN UNDER ICE COVER FRICTION LAW')
132  CALL plante(1)
133  stop
134 !
135  END SELECT
136 !
137 !=======================================================================!
138 !=======================================================================!
139 !
140  RETURN
141  END SUBROUTINE friction_khione
subroutine friction_khione(NPOIN, KFROT, GRAV, KARMAN, CHESTR, CF, H, U, V)
Definition: bief.f:3