The TELEMAC-MASCARET system  trunk
coefro_sisyphe.f
Go to the documentation of this file.
1 ! *************************
2  SUBROUTINE coefro_sisyphe
3 ! *************************
4 !
5  &(cf,h,kfrot,chestr,grav,npoin,hmin,karman)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P1 21/07/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE QUADRATIC FRICTION COEFFICIENT CF.
12 !
13 !history C. VILLARET (LNHE)
14 !+ 01/10/2003
15 !+ V5P4
16 !+
17 !
18 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
19 !+ 13/07/2010
20 !+ V6P0
21 !+ Translation of French comments within the FORTRAN sources into
22 !+ English comments
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 21/08/2010
26 !+ V6P0
27 !+ Creation of DOXYGEN tags for automated documentation and
28 !+ cross-referencing of the FORTRAN sources
29 !
30 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 !| CF |<->| FRICTION COEFFICIENT
32 !| CHESTR |-->| FRICTION COEFFICIENTS (BED)
33 !| GRAV |-->| ACCELERATION OF GRAVITY
34 !| HMIN |-->| MINIMUM VALUE OF WATER DEPTH
35 !| HN |-->| WATER DEPTH
36 !| KARMAN |-->| VON KARMAN CONSTANT
37 !| KFROT |-->| FRICTION LAW (BED)
38 !| NPOIN |-->| NUMBER OF POINTS
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !
41  USE bief
42 !
44  IMPLICIT NONE
45 !
46 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47 !
48  INTEGER, INTENT(IN):: NPOIN,KFROT
49  DOUBLE PRECISION,INTENT(IN):: GRAV,KARMAN,HMIN
50 !
51  TYPE(bief_obj), INTENT(INOUT) :: CF
52  TYPE(bief_obj),INTENT(IN) :: CHESTR,H
53 !
54 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
55 !
56  INTEGER N
57  DOUBLE PRECISION HC, AUX, TIERS,ZERO
58  INTRINSIC max,log
59 !
60 !-----------------------------------------------------------------------
61 !
62  tiers = 1.d0/3.d0
63  zero = 1.d-6
64 !
65 ! CONSTRUCTION OF THE FRICTION COEFFICIENT
66 !
67 ! FRICTION LAWS:
68 !
69 ! KFROT = 0 : FLAT BOTTOM (KS=3D50)
70 ! KFROT = 1 : EQUILIBRIUM SAND RIPPLES (WAVES ONLY) KS=(MAX 3D50,ETA)
71 ! KFROT = 2 : CHEZY
72 ! KFROT = 3 : STRICKLER
73 ! KFROT = 4 : MANNING
74 ! KFROT = 5 : NIKURADSE
75 !
76  DO n=1,npoin
77  IF(chestr%R(n).LE.0.d0) THEN
78  WRITE(lu,*) 'FROTTEMENT NON DEFINI DANS COEFRO AU POINT ',n
79  CALL plante(1)
80  stop
81  ENDIF
82  ENDDO
83 !
84 ! ***********************
85  IF(kfrot.EQ.5) THEN
86 ! ***********************
87 ! AUX=30.D0/EXP(1.D0) =11.036D0
88  DO n=1,npoin
89  aux = max(1.001d0,h%R(n)*11.036d0/chestr%R(n))
90  cf%R(n) = 2.d0 / (log( aux)/karman )**2
91  ENDDO
92 ! ***********************
93  ELSEIF(kfrot.EQ.2) THEN
94 ! ***********************
95 !
96  DO n=1,npoin
97  cf%R(n) = 2.d0 * grav / chestr%R(n)**2
98  ENDDO
99 !
100 ! ***********************
101  ELSEIF(kfrot.EQ.3) THEN
102 ! ***********************
103 !
104  DO n=1,npoin
105  hc = max(h%R(n),hmin)
106  cf%R(n) = 2.d0 * grav / chestr%R(n)**2 / hc**tiers
107  ENDDO
108 !
109 ! ***********************
110  ELSEIF(kfrot.EQ.4) THEN
111 ! ***********************
112 !
113  DO n=1,npoin
114  hc = max(h%R(n),hmin)
115  cf%R(n) = 2.d0 * chestr%R(n)**2 * grav / hc**tiers
116  ENDDO
117 !
118 ! ****
119  ELSE
120 ! ****
121 !
122  WRITE(lu,301) kfrot
123 301 FORMAT(1x,'COEFRO: UNKNOWN LAW OF BOTTOM FRICTION: ',1i6)
124  CALL plante(1)
125  stop
126 !
127 ! *****
128  ENDIF
129 ! *****
130 !
131 !-----------------------------------------------------------------------
132 !
133  RETURN
134  END
subroutine coefro_sisyphe(CF, H, KFROT, CHESTR, GRAV, NPOIN, HMIN, KARMAN)
Definition: coefro_sisyphe.f:7
Definition: bief.f:3