My Project
 All Classes Files Functions Variables Macros
enercin_loc.F
Go to the documentation of this file.
1  SUBROUTINE enercin_loc ( vcov, ucov, vcont, ucont, ecin )
2  USE parallel
3  IMPLICIT NONE
4 
5 c=======================================================================
6 c
7 c Auteur: P. Le Van
8 c -------
9 c
10 c Objet:
11 c ------
12 c
13 c *********************************************************************
14 c .. calcul de l'energie cinetique aux niveaux s ......
15 c *********************************************************************
16 c vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg .
17 c ecin est un argument de sortie pour le s-pg
18 c
19 c=======================================================================
20 
21 #include "dimensions.h"
22 #include "paramet.h"
23 #include "comgeom.h"
24 
25  REAL vcov( ijb_v:ije_v,llm ),vcont( ijb_v:ije_v,llm )
26  REAL ucov( ijb_u:ije_u,llm ),ucont( ijb_u:ije_u,llm )
27  REAL ecin( ijb_u:ije_u,llm )
28 
29  REAL ecinni( iip1 ),ecinsi( iip1 )
30 
31  REAL ecinpn, ecinps
32  INTEGER l,ij,i,ijb,ije
33 
34  EXTERNAL ssum
35  REAL ssum
36 
37 
38 
39 c . V
40 c i,j-1
41 
42 c alpha4 . . alpha1
43 
44 
45 c U . . P . U
46 c i-1,j i,j i,j
47 
48 c alpha3 . . alpha2
49 
50 
51 c . V
52 c i,j
53 
54 c
55 c L'energie cinetique au point scalaire P(i,j) ,autre que les poles, est :
56 c Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 ) +
57 c 0.5 * U(i ,j)**2 *( alpha1 + alpha2 ) +
58 c 0.5 * V(i,j-1)**2 *( alpha1 + alpha4 ) +
59 c 0.5 * V(i, j)**2 *( alpha2 + alpha3 )
60 
61 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
62  DO 5 l = 1,llm
63 
64  ijb=ij_begin
65  ije=ij_end+iip1
66 
67  IF (pole_nord) ijb=ij_begin+iip1
68  IF (pole_sud) ije=ij_end-iip1
69 
70  DO 1 ij = ijb, ije -1
71  ecin( ij+1, l ) = 0.5 *
72  * ( ucov( ij ,l ) * ucont( ij ,l ) * alpha3p4( ij +1 ) +
73  * ucov( ij+1 ,l ) * ucont( ij+1 ,l ) * alpha1p2( ij +1 ) +
74  * vcov(ij-iim,l ) * vcont(ij-iim,l ) * alpha1p4( ij +1 ) +
75  * vcov( ij+ 1,l ) * vcont( ij+ 1,l ) * alpha2p3( ij +1 ) )
76  1 CONTINUE
77 
78 c ... correction pour ecin(1,j,l) ....
79 c ... ecin(1,j,l)= ecin(iip1,j,l) ...
80 
81 CDIR$ IVDEP
82  DO 2 ij = ijb, ije, iip1
83  ecin( ij,l ) = ecin( ij + iim, l )
84  2 CONTINUE
85 
86 c calcul aux poles .......
87 
88  IF (pole_nord) THEN
89 
90  DO i = 1, iim
91  ecinni(i) = vcov( i , l) *
92  * vcont( i ,l) * aire( i )
93  ENDDO
94 
95  ecinpn = 0.5 * ssum( iim,ecinni,1 ) / apoln
96 
97  DO ij = 1,iip1
98  ecin( ij , l ) = ecinpn
99  ENDDO
100 
101  ENDIF
102 
103  IF (pole_sud) THEN
104 
105  DO i = 1, iim
106  ecinsi(i) = vcov(i+ip1jmi1,l)*
107  * vcont(i+ip1jmi1,l) * aire(i+ip1jm)
108  ENDDO
109 
110  ecinps = 0.5 * ssum( iim,ecinsi,1 ) / apols
111 
112  DO ij = 1,iip1
113  ecin( ij+ ip1jm, l ) = ecinps
114  ENDDO
115 
116  ENDIF
117 
118 
119  5 CONTINUE
120 c$OMP END DO NOWAIT
121  RETURN
122  END