The TELEMAC-MASCARET system  trunk
qbbj78.f
Go to the documentation of this file.
1 ! ***************
2  FUNCTION qbbj78
3 ! ***************
4 !
5  &( b , iqbbj )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 23/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE FRACTION OF BREAKING WAVES: QB.
12 !+ QB IS USED IN BATTJES AND JANSSEN (1978).
13 !
14 !reference BATTJES AND JANSSEN (1978) :
15 !+ "ENERGY LOSS AND SET-UP DUE TO BREAKING
16 !+ OF RANDOM WAVES". ICCE'78.
17 !reference DINGEMANS (1983) :
18 !+ "VERIFICATION OF NUMERICAL WAVE PROPAGATION
19 !+ MODELS WITH FIELD MEASUREMENTS. CREDIZ
20 !+ VERIFICATION HARINGVLIET".
21 !
22 !history F.BECQ; M. BENOIT (EDF/DER/LNH)
23 !+ 14/02/96
24 !+ V1P1
25 !+
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !history G.MATTAROLO (EDF - LNHE)
40 !+ 23/06/2011
41 !+ V6P1
42 !+ Translation of French names of the variables in argument
43 !
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !| B |-->| (H_RMS/H_MAX)
46 !| IQBBJ |-->| INDEX OF THE SLECTED COMPUTATION METHOD
47 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48 !
49  USE interface_tomawac, ex_qbbj78 => qbbj78
50  IMPLICIT NONE
51 !
52 !.....VARIABLES IN ARGUMENT
53 ! """"""""""""""""""""
54  DOUBLE PRECISION, INTENT(IN) :: B
55  INTEGER, INTENT(IN) :: IQBBJ
56  DOUBLE PRECISION QBBJ78
57 !
58 !.....LOCAL VARIABLES
59 ! """""""""""""""""
60  DOUBLE PRECISION CB, Q0, B2, EXPO
61 !
62  IF (b.GE.1.d0) THEN
63  qbbj78 = 1.d0
64  RETURN
65  ENDIF
66 !
67 ! IF(IQBBJ.EQ.0) THEN
68 ! THIS OPTION (SOLVES BY DICHOTOMY) IS NEVER USED
69 ! AND DOES NOT ALWAYS CONVERGE, IT HAS BEEN DELETED.
70 !
71  IF(iqbbj.EQ.1) THEN
72 ! ======================================================
73 ! EXPLICIT FORMULATION 1 (INSPIRED FROM CREDIZ VERSION-1)
74 ! ======================================================
75  cb = 0.5d0
76  IF (b.GE.cb) THEN
77  qbbj78 = ((b-cb)/(1.d0-cb))**2
78  ELSE
79  qbbj78 = 0.d0
80  ENDIF
81 !
82  ELSEIF(iqbbj.EQ.2) THEN
83 ! ======================================================
84 ! EXPLICIT FORMULATION 2 (INSPIRED FROM CREDIZ VERSION-2)
85 ! ======================================================
86  cb = 0.3d0
87  IF (b.LT.cb) THEN
88  qbbj78 = 0.d0
89  ELSEIF (b.LT.0.5d0) THEN
90  b2 = b**2
91  expo = exp(-1.d0/b2)
92  qbbj78 = b2*expo/(b2-expo)
93  ELSEIF (b.LT.0.9d0) THEN
94  q0 = (2.d0*b-1.d0)**2
95  b2 = b**2
96  expo = exp((q0-1.d0)/b2)
97  qbbj78 = q0 - b2*(q0-expo)/(b2-expo)
98  ELSE
99  qbbj78 = (2.d0*b-1.d0)**2
100  ENDIF
101 !
102  ELSEIF(iqbbj.EQ.3) THEN
103 ! ======================================================
104 ! EXPLICIT FORMULATION 3 (INSPIRED FROM CREDIZ VERSION-3)
105 ! ======================================================
106  qbbj78 = 2.4d0*b**7
107 !
108  ENDIF
109 !
110  RETURN
111  END
double precision function qbbj78(B, IQBBJ)
Definition: qbbj78.f:7