The TELEMAC-MASCARET system  trunk
kmoye2.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE kmoye2
3 ! *****************
4 !
5  &( xkmoy , xk , f , nf , ndire ,
6  & npoin2, aux1 , aux2 , aux3 )
7 !
8 !**********************************************************************
9 ! TOMAWAC - V1.0 P. THELLIER & M. BENOIT (EDF/DER/LNH) - 04/04/95
10 !**********************************************************************
11 !
12 ! FONCTION : CALCUL DU NOMBRE D'ONDE MOYEN EN TOUS LES POINTS DU
13 ! ******** MAILLAGE SPATIAL 2D.
14 !
15 ! ARGUMENTS :
16 ! ***********
17 ! +-------------+----+--------------------------------------------+
18 ! ! NOM !MODE! SIGNIFICATION - OBSERVATIONS !
19 ! +-------------+----+--------------------------------------------+
20 ! ! XKMOY(-) !<-- ! TABLEAU DES NOMBRES D'ONDE MOYEN !
21 ! ! XK(-,-) ! -->! TABLEAU DES NOMBRES D'ONDE !
22 ! ! F(-,-,-) ! -->! SPECTRE DIRECTIONNEL !
23 ! ! FREQ(-) ! -->! TABLEAU DES FREQUENCES DE DISCRETISATION !
24 ! ! DFREQ(-) ! -->! TABLEAU DES PAS DE FREQUENCE !
25 ! ! TAILF ! -->! FACTEUR DE QUEUE (TAILF = 4 OU 5) !
26 ! ! NF ! -->! NOMBRE DE FREQUENCES DE DISCRETISATION !
27 ! ! NDIRE ! -->! NOMBRE DE DIRECTIONS DE DISCRETISATION !
28 ! ! NPOIN2 ! -->! NOMBRE DE POINTS DU MAILLAGE SPATIAL !
29 ! ! AUX1(-) !<-->! TABLEAU DE TRAVAIL (DIMENSION NPOIN2) !
30 ! ! AUX2(-) !<-->! TABLEAU DE TRAVAIL (DIMENSION NPOIN2) !
31 ! ! AUX3(-) !<-->! TABLEAU DE TRAVAIL (DIMENSION NPOIN2) !
32 ! +-------------+----+--------------------------------------------+
33 ! ! MODE (-> : NON-MODIFIE) (<-> : MODIFIE) (<- : INITIALISE) !
34 ! +---------------------------------------------------------------+
35 !
36 ! APPELS : - PROGRAMME(S) APPELANT : SEMIMP, PRE2D
37 ! ******** - PROGRAMME(S) APPELE(S) : -
38 !
39 ! REMARQUES :
40 ! ***********
41 ! - LA PARTIE HAUTES-FREQUENCES DU SPECTRE N'EST PRISE EN COMPTE QUE
42 ! SI LE FACTEUR DE QUEUE (TAILF) EST STRICTEMENT SUPERIEUR A 1.
43 !
44 !**********************************************************************
45 !
46  USE declarations_tomawac, ONLY : freq, dfreq, tailf
47  USE interface_tomawac, ex_kmoye2 => kmoye2
48  IMPLICIT NONE
49 !
50 !.....VARIABLES TRANSMISES
51 ! """"""""""""""""""""
52  INTEGER, INTENT(IN) :: NF, NDIRE, NPOIN2
53  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf)
54  DOUBLE PRECISION, INTENT(IN) :: XK(npoin2,nf)
55  DOUBLE PRECISION, INTENT(INOUT) :: AUX1(npoin2) , AUX2(npoin2)
56  DOUBLE PRECISION, INTENT(INOUT) :: AUX3(npoin2)
57  DOUBLE PRECISION, INTENT(INOUT) :: XKMOY(npoin2)
58 !
59 !.....VARIABLES LOCALES
60 ! """""""""""""""""
61  INTEGER IDIRE , JF , IP
62  DOUBLE PRECISION COEFF , PI , SEUIL , CTE1 , CTE2 , AUX4
63 !
64 !
65  pi = 4.d0 * atan( 1.d0 )
66  seuil = 1.d-20
67  coeff = sqrt(9.806d0)/(2.d0*pi)
68  DO ip = 1,npoin2
69  aux1(ip) = 0.d0
70  aux2(ip) = 0.d0
71  END DO
72 !
73 !.....SOMMATIONS SUR LA PARTIE DISCRETISEE DU SPECTRE.
74 ! """"""""""""""""""""""""""""""""""""""""""""""""
75  DO 20 jf = 1,nf
76  aux4=dfreq(jf)
77 !
78  DO 15 ip=1,npoin2
79  aux3(ip) = 0.d0
80  15 CONTINUE
81  DO 10 idire = 1, ndire
82  DO 5 ip=1,npoin2
83  aux3(ip) = aux3(ip) + f(ip,idire,jf)
84  5 CONTINUE
85  10 CONTINUE
86 !
87  DO 25 ip = 1,npoin2
88  aux1(ip)=aux1(ip)+aux3(ip)*sqrt(xk(ip,jf))*aux4
89  aux2(ip)=aux2(ip)+aux3(ip)*aux4
90  25 CONTINUE
91 !
92  20 CONTINUE
93 !
94 !.....PRISE EN COMPTE EVENTUELLE DE LA PARTIE HAUTES FREQUENCES.
95 ! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""
96  IF (tailf.GT.1.d0) THEN
97  cte1=freq(nf)**2/(tailf-2.d0)/coeff
98  cte2=freq(nf)/(tailf-1.d0)
99  ELSE
100  cte1=0.d0
101  cte2=0.d0
102  ENDIF
103  DO 45 ip=1,npoin2
104  aux1(ip) = aux1(ip) + aux3(ip)*cte1
105  aux2(ip) = aux2(ip) + aux3(ip)*cte2
106  45 CONTINUE
107 !
108 !.....CALCUL DU NOMBRE D'ONDE MOYEN.
109 ! """"""""""""""""""""""""""""""
110  DO 50 ip=1,npoin2
111  IF (aux2(ip).LT.seuil) THEN
112  xkmoy(ip) = 1.d0
113  ELSE
114  xkmoy(ip) = (aux1(ip)/aux2(ip))**2
115  ENDIF
116  50 CONTINUE
117 !
118  RETURN
119  END
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer dfreq
subroutine kmoye2(XKMOY, XK, F, NF, NDIRE, NPOIN2, AUX1, AUX2, AUX3)
Definition: kmoye2.f:8