The TELEMAC-MASCARET system  trunk
tetmoy.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE tetmoy
3 ! *****************
4 !
5  &( tetam , f , ndire , nf , npoin2)
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 28/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE MEAN DIRECTION OF A DIRECTIONAL SPECTRUM
12 !+ (BY COMPUTING THE ARC TANGENT OF THE MEAN SINE AND
13 !+ COSINE). THE RESULT IS IN RADIANS.
14 !
15 !history P. THELIIER; M. BENOIT
16 !+ 01/02/95
17 !+ V1P0
18 !+
19 !
20 !history M. BENOIT
21 !+ 05/07/96
22 !+ V1P2
23 !+
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 13/07/2010
27 !+ V6P0
28 !+ Translation of French comments within the FORTRAN sources into
29 !+ English comments
30 !
31 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
32 !+ 21/08/2010
33 !+ V6P0
34 !+ Creation of DOXYGEN tags for automated documentation and
35 !+ cross-referencing of the FORTRAN sources
36 !
37 !history G.MATTAROLO (EDF - LNHE)
38 !+ 28/06/2011
39 !+ V6P1
40 !+ Translation of French names of the variables in argument
41 !
42 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43 !| COSMOY |<->| WORK TABLE
44 !| COSTET |-->| COSINE OF TETA ANGLE
45 !| DFREQ |-->| FREQUENCY STEPS BETWEEN DISCRETIZED FREQUENCIES
46 !| F |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
47 !| FREQ |-->| DISCRETIZED FREQUENCIES
48 !| NF |-->| NUMBER OF FREQUENCIES
49 !| NDIRE |-->| NUMBER OF DIRECTIONS
50 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
51 !| SINMOY |<->| WORK TABLE
52 !| SINTET |-->| SINE OF TETA ANGLE
53 !| TAILF |-->| FACTEUR DE QUEUE DU SPECTRE
54 !| TAUXC |<->| WORK TABLE
55 !| TAUXS |<->| WORK TABLE
56 !| TETAM |<--| DIRECTIONAL SPECTRUM MEAN DIRECTION
57 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58 !
59  USE declarations_tomawac, ONLY : deupi, freq, dfreq, tailf,
60  & costet, sintet
61 !
62  USE interface_tomawac, ex_tetmoy => tetmoy
63  IMPLICIT NONE
64 !
65 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
66 !
67  INTEGER, INTENT(IN) :: NF , NDIRE , NPOIN2
68  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf)
69  DOUBLE PRECISION, INTENT(INOUT) :: TETAM(npoin2)
70 !
71 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
72 !
73  INTEGER IP , JP , JF
74  DOUBLE PRECISION AUXC , AUXS ,SEUIL , COEFT, DFDTET
75  DOUBLE PRECISION DTETAR, COSMOY,SINMOY, TAUXC, TAUXS
76 !
77 !-----------------------------------------------------------------------
78 !
79  dtetar=deupi/dble(ndire)
80  seuil =1.d-10
81 !
82  DO ip=1,npoin2
83  cosmoy=0.d0
84  sinmoy=0.d0
85 !
86 !-----C-------------------------------------------------------C
87 !-----C SUMS UP THE DISCRETISED PART OF THE SPECTRUM C
88 !-----C-------------------------------------------------------C
89 !
90  DO jf=1,nf
91 !
92  dfdtet=dfreq(jf)*dtetar
93 !
94  tauxc=0.d0
95  tauxs=0.d0
96 !
97  DO jp=1,ndire
98  auxc=costet(jp)*dfdtet
99  auxs=sintet(jp)*dfdtet
100  tauxc=tauxc+f(ip,jp,jf)*auxc
101  tauxs=tauxs+f(ip,jp,jf)*auxs
102  ENDDO
103 !
104  cosmoy=cosmoy+tauxc
105  sinmoy=sinmoy+tauxs
106 !
107  ENDDO ! JF
108 !
109 !-----C-------------------------------------------------------------C
110 !-----C TAKES THE HIGH FREQUENCY PART INTO ACCOUNT (OPTIONAL) C
111 !-----C-------------------------------------------------------------C
112 !
113  IF(tailf.GT.1.d0) THEN
114  coeft=freq(nf)/((tailf-1.d0)*dfreq(nf))
115  cosmoy=cosmoy+tauxc*coeft
116  sinmoy=sinmoy+tauxs*coeft
117  ENDIF
118 !
119 !-----C-------------------------------------------------------------C
120 !-----C COMPUTES THE MEAN DIRECTION C
121 !-----C (IN RADIANS BETWEEN 0 AND 2.PI) C
122 !-----C-------------------------------------------------------------C
123 !
124  IF(abs(sinmoy).LT.seuil.AND.
125  & abs(cosmoy).LT.seuil) THEN
126  tetam(ip) = 0.d0
127  ELSE
128  tetam(ip)=atan2(sinmoy,cosmoy)
129  IF(tetam(ip).LT.0.d0) tetam(ip)=tetam(ip)+deupi
130  ENDIF
131  ENDDO
132 !
133 !-----------------------------------------------------------------------
134 !
135  RETURN
136  END
double precision, dimension(:), pointer freq
subroutine tetmoy(TETAM, F, NDIRE, NF, NPOIN2)
Definition: tetmoy.f:7
double precision, dimension(:), pointer dfreq