The TELEMAC-MASCARET system  trunk
bedload_direction.f
Go to the documentation of this file.
1 ! **************************************
2  SUBROUTINE bedload_direction ! (_IMP_)
3 ! **************************************
4 !
5  & (qu, qv, npoin, pi, thetac)
6 !
7 !***********************************************************************
8 ! SISYPHE V6P1 21/07/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE THETAC ANGLE (FLOW DIRECTION).
12 !
13 !history C. VILLARET
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 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
31 !+ 19/07/2011
32 !+ V6P1
33 !+ Name of variables
34 !+
35 !
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !| NPOIN |-->| NUMBER OF POINTS
38 !| PI |-->| PI
39 !| QU |-->| DISCHARGE X
40 !| QV |-->| DISCHARGE Y
41 !| THETAC |<->| CURRENT ANGLE TO THE X AXIS
42 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43 !
45  & ex_bedload_direction => bedload_direction
46  USE bief
48  IMPLICIT NONE
49 !
50  ! 2/ GLOBAL VARIABLES
51  ! -------------------
52  TYPE(bief_obj), INTENT(IN) :: QU, QV
53  INTEGER, INTENT(IN) :: NPOIN
54  DOUBLE PRECISION, INTENT(IN) :: PI
55  TYPE(bief_obj), INTENT(INOUT) :: THETAC
56 !
57  ! 3/ LOCAL VARIABLES
58  ! ------------------
59  INTEGER :: I
60  DOUBLE PRECISION, PARAMETER :: LOCAL_ZERO = 1.d-6
61 !
62 !======================================================================!
63 !======================================================================!
64 ! DECLARES TYPES AND DIMENSIONS !
65 !======================================================================!
66 !======================================================================!
67  DO i = 1, npoin
68  IF (abs(qu%R(i)) <= local_zero) THEN
69  IF (qv%R(i) < = local_zero) THEN
70  thetac%R(i) = -pi*0.5d0
71  ELSE
72  thetac%R(i) = pi*0.5d0
73  ENDIF
74  ELSE
75  thetac%R(i) = atan(qv%R(i) / qu%R(i))
76  IF (qu%R(i) < 0.d0) THEN
77  thetac%R(i) = pi + thetac%R(i)
78  ENDIF
79  ENDIF
80  END DO
81 !======================================================================!
82 !======================================================================!
83  RETURN
84  END SUBROUTINE bedload_direction
subroutine bedload_direction
Definition: bief.f:3