The TELEMAC-MASCARET system  trunk
calcuw.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE calcuw
3 ! *****************
4 !
5  & ( uw, h, hw, tw, grav ,npoin)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P1 21/07/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE WAVE ORBITAL VELOCITY.
12 !
13 !history
14 !+ 20/05/96
15 !+ V5P1
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 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
31 !+ 19/07/2011
32 !+ V6P1
33 !+ Name of variables
34 !+
35 !
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !| GRAV |-->| ACCELERATION OF GRAVITY
38 !| H |-->| WATER DEPTH
39 !| HW |-->| WAVE DEPTH
40 !| NPOIN |-->| NUMBER OF POINTS
41 !| TW |-->| WAVE PERIOD
42 !| UW |<--| ORBITAL VELOCITY (WAVE)
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !
45  IMPLICIT NONE
46 !
47 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48 !
49  INTEGER, INTENT(IN) :: NPOIN
50  DOUBLE PRECISION, INTENT(INOUT) :: UW(npoin)
51  DOUBLE PRECISION, INTENT(IN) :: TW(npoin),H(npoin), HW(npoin)
52  DOUBLE PRECISION, INTENT(IN) :: GRAV
53 !
54 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
55 !
56  DOUBLE PRECISION PI,DPI2
57  DOUBLE PRECISION POL, Y ,X
58  INTEGER I
59  INTRINSIC sqrt, sinh, atan
60 !
61 !-----------------------------------------------------------------------
62 !
63  pi = 4.d0 * atan( 1.d0 )
64  dpi2 = 4.d0 * pi * pi
65 !
66 ! SOLVES Y=X*TH(X) WITH Y=(2*PI/TW)**2*H/G AND X=(2*PI/L)*H
67 ! USING A POLYNOMIAL FUNCTION (HUNT METHOD - 9TH ORDER)
68 !
69  DO i=1,npoin
70  IF ( (tw(i) .GT. 0.d0).AND.(hw(i).GT.0.d0) ) THEN
71  y = dpi2 / grav * h(i) / (tw(i) * tw(i))
72  pol = 1.d0 + y * ( 0.66667d0 +
73  & y * ( 0.35550d0 +
74  & y * ( 0.16084d0 +
75  & y * ( 0.06320d0 +
76  & y * ( 0.02174d0 +
77  & y * ( 0.00654d0 +
78  & y * ( 0.00171d0 +
79  & y * ( 0.00039d0 +
80  & y * ( 0.00011d0 ) ))))))))
81  x = sqrt( y*y + y / pol )
82 !
83  IF ( x .GT. 10.d0) THEN
84  uw(i) = 0.d0
85  ELSE
86  uw(i) = pi / tw(i) * hw(i) / (sinh(x))
87  ENDIF
88  ELSE
89  uw(i) = 0.d0
90  ENDIF
91  ENDDO
92  RETURN
93  END SUBROUTINE calcuw
subroutine calcuw(UW, H, HW, TW, GRAV, NPOIN)
Definition: calcuw.f:7