The TELEMAC-MASCARET system  trunk
bedload_calcdw_gaia.f
Go to the documentation of this file.
1 ! ******************************
2  SUBROUTINE bedload_calcdw_gaia
3 ! ******************************
4 !
5  & (ucw, uw, tw, npoin, pi, uw1, uw2, tw1, tw2)
6 !
7 !***********************************************************************
8 ! GAIA
9 !***********************************************************************
10 !
13 !
14 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 !
26  USE interface_gaia,ex_bedload_calcdw => bedload_calcdw_gaia
27  USE bief
29  IMPLICIT NONE
30 !
31 ! 2/ GLOBAL VARIABLES
32 !
33  TYPE(bief_obj), INTENT(IN) :: UCW, UW, TW
34  INTEGER, INTENT(IN) :: NPOIN
35  DOUBLE PRECISION, INTENT(IN) :: PI
36  TYPE(bief_obj), INTENT(INOUT) :: UW1, UW2, TW1, TW2
37 !
38 ! 3/ LOCAL VARIABLES
39 !
40  INTEGER :: I
41  DOUBLE PRECISION :: UCMOY, RAP
42  DOUBLE PRECISION :: ACOSMRAP, ACOSPRAP, SQRTRAP
43  DOUBLE PRECISION, PARAMETER :: ZERO = 1.d-06
44 !
45 !======================================================================!
46 !======================================================================!
47 ! PROGRAM !
48 !======================================================================!
49 !======================================================================!
50 !
51  DO i = 1,npoin
52  ucmoy = abs(ucw%R(i))
53  ! ****************** !
54  ! I - WAVES ONLY ! (_IMP_)
55  ! ****************** !
56  IF (ucmoy <= zero) THEN
57  uw1%R(i) = uw%R(i)
58  uw2%R(i) = uw%R(i)
59  tw1%R(i) = tw%R(i) / 2.d0
60  tw2%R(i) = tw%R(i) / 2.d0
61  ELSE
62  rap = uw%R(i) / ucmoy
63  ! ******************** !
64  ! II - WAVES ARE PREDOMINANT ! (_IMP_)
65  ! ******************** !
66  IF (rap > 1.d0) THEN
67  acosmrap = acos(-1.d0/rap)
68  acosprap = acos( 1.d0/rap)
69  sqrtrap = sqrt(1.d0-1.d0/rap**2)
70  tw1%R(i) = tw%R(i)*acosmrap / pi
71  tw2%R(i) = tw%R(i)*acosprap / pi
72  uw1%R(i) = 2.d0*ucmoy**2 + uw%R(i)**2
73  & + 3.d0*ucmoy*uw%R(i)*sqrtrap/acosmrap
74  uw1%R(i) = sqrt(uw1%R(i))
75  uw2%R(i) = 2.d0*ucmoy**2 + uw%R(i)**2
76  & - 3.d0*ucmoy*uw%R(i)*sqrtrap/acosprap
77  uw2%R(i) = sqrt(uw2%R(i))
78  ! ********************** !
79  ! III - CURRENTS ARE PREDOMINANT ! (_IMP_)
80  ! ********************** !
81  ELSE
82  uw1%R(i) = ucw%R(i)*sqrt(2.d0 + rap**2)
83  uw2%R(i) = zero
84  tw1%R(i) = tw%R(i)
85  tw2%R(i) = zero
86  ENDIF
87  ENDIF
88  ENDDO
89 !
90 !======================================================================!
91 !======================================================================!
92 !
93  RETURN
94  END SUBROUTINE bedload_calcdw_gaia
subroutine bedload_calcdw_gaia(UCW, UW, TW, NPOIN, PI, UW1, UW2, TW1, TW2)
Definition: bief.f:3