The TELEMAC-MASCARET system  trunk
fremoy.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE fremoy
3 ! *****************
4 !
5  &(fmoy, f, nf, ndire, npoin2)
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 15/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE MEAN SPECTRAL FREQUENCY FMOY FOR ALL
12 !+ THE NODES IN THE 2D MESH. (THIS MEAN FREQUENCY IS
13 !+ IDENTICAL TO THAT COMPUTED IN FEMEAN - WAM CYCLE 4).
14 !code
15 !+ SOMME( F(FREQ,TETA) DFREQ DTETA )
16 !+ FMOY = ----------------------------------------
17 !+ SOMME( F(FREQ,TETA)/FREQ DFREQ DTETA )
18 !
19 !note THE HIGH-FREQUENCY PART OF THE SPECTRUM IS ONLY CONSIDERED
20 !+ IF THE TAIL FACTOR (TAILF) IS STRICTLY GREATER THAN 2.
21 !
22 !history P. THELLIER; M. BENOIT
23 !+ 09/02/95
24 !+ V1P0
25 !+ CREATED
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 !+ 15/06/2011
41 !+ V6P1
42 !+ Translation of French names of the variables in argument
43 !
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !| AUX1 |<->| WORK TABLE
46 !| AUX2 |<->| WORK TABLE
47 !| DFREQ |-->| FREQUENCY STEPS BETWEEN DISCRETIZED FREQUENCIES
48 !| F |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
49 !| FMOY |<--| MEAN FREQUENCIES F-10
50 !| FREQ |-->| DISCRETIZED FREQUENCIES
51 !| NF |-->| NUMBER OF FREQUENCIES
52 !| NDIRE |-->| NUMBER OF DIRECTIONS
53 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
54 !| TAILF |-->| SPECTRUM QUEUE FACTOR
55 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 !
58 !
59  USE interface_tomawac, ex_fremoy => fremoy
60  IMPLICIT NONE
61 !
62 !.....VARIABLES IN ARGUMENT
63 ! """"""""""""""""""""
64  INTEGER, INTENT(IN) :: NF , NDIRE , NPOIN2
65  DOUBLE PRECISION,INTENT(IN) :: F(npoin2,ndire,nf)
66  DOUBLE PRECISION,INTENT(INOUT) :: FMOY(npoin2)
67 !
68 !.....LOCAL VARIABLES
69 ! """""""""""""""""
70  INTEGER JP , JF , IP
71  DOUBLE PRECISION SEUIL , DTETAR, AUX3 , AUX4, A1, A2
72 !
73 !
74  seuil = 1.d-20
75  dtetar= deupi/dble(ndire)
76  DO ip = 1,npoin2
77  a1=0.d0
78  a2=0.d0
79 !
80 ! -------------------------------------------------------C
81 ! SUMS UP THE CONTRIBUTIONS FOR THE DISCRETISED PART OF THE SPECTRUM C
82 ! -------------------------------------------------------C
83  DO jf = 1,nf-1
84  aux3=dtetar*dfreq(jf)
85  aux4=aux3/freq(jf)
86  DO jp = 1,ndire
87  a1 = a1 + f(ip,jp,jf)*aux3
88  a2 = a2 + f(ip,jp,jf)*aux4
89  ENDDO ! JP
90  ENDDO ! JF
91 !
92 ! -------------------------------------------------------------C
93 ! (OPTIONALLY) TAKES INTO ACCOUNT THE HIGH-FREQUENCY PART C
94 ! -------------------------------------------------------------C
95  IF (tailf.GT.1.d0) THEN
96  aux3=dtetar*(dfreq(nf)+freq(nf)/(tailf-1.d0))
97  aux4=dtetar*(dfreq(nf)/freq(nf)+1.d0/tailf)
98  ELSE
99  aux3=dtetar*dfreq(nf)
100  aux4=aux3/freq(nf)
101  ENDIF
102  DO jp = 1, ndire
103  a1 = a1 + f(ip,jp,nf)*aux3
104  a2 = a2 + f(ip,jp,nf)*aux4
105  ENDDO ! JP
106 !
107 ! -------------------------------------------------------------C
108 ! COMPUTES THE MEAN FREQUENCY C
109 ! -------------------------------------------------------------C
110  IF (a2.LT.seuil) THEN
111  fmoy(ip) = seuil
112  ELSE
113  fmoy(ip) = a1/a2
114  ENDIF
115  ENDDO ! IP
116 !
117  RETURN
118  END
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer dfreq
subroutine fremoy(FMOY, F, NF, NDIRE, NPOIN2)
Definition: fremoy.f:7