The TELEMAC-MASCARET system  trunk
frem01.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE frem01
3 ! *****************
4 !
5  &( fm01 , f , nf , ndire , npoin2)
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 15/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE MEAN SPECTRAL FREQUENCY FM01 FOR ALL
12 !+ THE NODES IN THE 2D MESH. THIS FREQUENCY IS DEFINED
13 !+ FROM THE M0 AND M1 SPECTRAL MOMENTUM.
14 !code
15 !+ SOMME( F(FREQ,TETA)*FREQ DFREQ DTETA )
16 !+ FM01 = ----------------------------------------
17 !+ SOMME( F(FREQ,TETA) 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 M. BENOIT
28 !+ 05/07/96
29 !+ V1P2
30 !+ MODIFIED
31 !
32 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
33 !+ 13/07/2010
34 !+ V6P0
35 !+ Translation of French comments within the FORTRAN sources into
36 !+ English comments
37 !
38 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
39 !+ 21/08/2010
40 !+ V6P0
41 !+ Creation of DOXYGEN tags for automated documentation and
42 !+ cross-referencing of the FORTRAN sources
43 !
44 !history G.MATTAROLO (EDF - LNHE)
45 !+ 15/06/2011
46 !+ V6P1
47 !+ Translation of French names of the variables in argument
48 !
49 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 !| AUX1 |<->| WORK TABLE
51 !| AUX2 |<->| WORK TABLE
52 !| DFREQ |-->| FREQUENCY STEPS BETWEEN DISCRETIZED FREQUENCIES
53 !| F |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
54 !| FM01 |<--| MEAN FREQUENCIES F01
55 !| FREQ |-->| DISCRETIZED FREQUENCIES
56 !| NF |-->| NUMBER OF FREQUENCIES
57 !| NDIRE |-->| NUMBER OF DIRECTIONS
58 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
59 !| TAILF |-->| SPECTRUM QUEUE FACTOR
60 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61 !
63 !
64  USE interface_tomawac, ex_frem01 => frem01
65  IMPLICIT NONE
66 !
67 !.....VARIABLES IN ARGUMENT
68 ! """"""""""""""""""""
69  INTEGER, INTENT(IN) :: NF , NDIRE , NPOIN2
70  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf)
71  DOUBLE PRECISION, INTENT(INOUT) :: FM01(npoin2)
72 !
73 !.....LOCAL VARIABLES
74 ! """""""""""""""""
75  INTEGER JP , JF , IP
76  DOUBLE PRECISION SEUIL , DTETAR, AUX3 , AUX4, AUX1, AUX2
77 !
78 !
79  seuil = 1.d-20
80  dtetar= deupi/dble(ndire)
81  DO ip = 1,npoin2
82  aux1 = 0.d0
83  aux2 = 0.d0
84 !
85 !-----C-------------------------------------------------------C
86 !-----C SUMS UP THE CONTRIBUTIONS FOR THE DISCRETISED PART OF THE SPECTRUM C
87 !-----C-------------------------------------------------------C
88  DO jf = 1,nf-1
89  aux3=dtetar*dfreq(jf)
90  aux4=aux3*freq(jf)
91  DO jp = 1,ndire
92  aux1 = aux1 + f(ip,jp,jf)*aux4
93  aux2 = aux2 + f(ip,jp,jf)*aux3
94  ENDDO ! JP
95  ENDDO ! JF
96 !
97 !-----C-------------------------------------------------------------C
98 !-----C (OPTIONALLY) TAKES INTO ACCOUNT THE HIGH-FREQUENCY PART C
99 !-----C-------------------------------------------------------------C
100  IF (tailf.GT.2.d0) THEN
101  aux3=dtetar*(dfreq(nf)+freq(nf)/(tailf-1.d0))
102  aux4=dtetar*(dfreq(nf)+freq(nf)/(tailf-2.d0))*freq(nf)
103  ELSE
104  aux3=dtetar*dfreq(nf)
105  aux4=aux3*freq(nf)
106  ENDIF
107  DO jp = 1,ndire
108  aux1 = aux1 + f(ip,jp,nf)*aux4
109  aux2 = aux2 + f(ip,jp,nf)*aux3
110  ENDDO ! JP
111 !
112 !-----C-------------------------------------------------------------C
113 !-----C COMPUTES THE MEAN FREQUENCY C
114 !-----C-------------------------------------------------------------C
115  IF (aux2.LT.seuil) THEN
116  fm01(ip) = seuil
117  ELSE
118  fm01(ip) = aux1/aux2
119  ENDIF
120  ENDDO ! IP
121 !
122  RETURN
123  END
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer dfreq
subroutine frem01(FM01, F, NF, NDIRE, NPOIN2)
Definition: frem01.f:7