My Project
 All Classes Files Functions Variables Macros
enercin.F
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4  SUBROUTINE enercin ( vcov, ucov, vcont, ucont, ecin )
5  IMPLICIT NONE
6 
7 c=======================================================================
8 c
9 c Auteur: P. Le Van
10 c -------
11 c
12 c Objet:
13 c ------
14 c
15 c *********************************************************************
16 c .. calcul de l'energie cinetique aux niveaux s ......
17 c *********************************************************************
18 c vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg .
19 c ecin est un argument de sortie pour le s-pg
20 c
21 c=======================================================================
22 
23 #include "dimensions.h"
24 #include "paramet.h"
25 #include "comgeom.h"
26 
27  REAL vcov( ip1jm,llm ),vcont( ip1jm,llm ),
28  * ucov( ip1jmp1,llm ),ucont( ip1jmp1,llm ),ecin( ip1jmp1,llm )
29 
30  REAL ecinni( iip1 ),ecinsi( iip1 )
31 
32  REAL ecinpn, ecinps
33  INTEGER l,ij,i
34 
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 
62  DO 5 l = 1,llm
63 
64  DO 1 ij = iip2, ip1jm -1
65  ecin( ij+1, l ) = 0.5 *
66  * ( ucov( ij ,l ) * ucont( ij ,l ) * alpha3p4( ij +1 ) +
67  * ucov( ij+1 ,l ) * ucont( ij+1 ,l ) * alpha1p2( ij +1 ) +
68  * vcov(ij-iim,l ) * vcont(ij-iim,l ) * alpha1p4( ij +1 ) +
69  * vcov( ij+ 1,l ) * vcont( ij+ 1,l ) * alpha2p3( ij +1 ) )
70  1 CONTINUE
71 
72 c ... correction pour ecin(1,j,l) ....
73 c ... ecin(1,j,l)= ecin(iip1,j,l) ...
74 
75 CDIR$ IVDEP
76  DO 2 ij = iip2, ip1jm, iip1
77  ecin( ij,l ) = ecin( ij + iim, l )
78  2 CONTINUE
79 
80 c calcul aux poles .......
81 
82 
83  DO 3 i = 1, iim
84  ecinni(i) = vcov( i , l) * vcont( i ,l) * aire( i )
85  ecinsi(i) = vcov(i+ip1jmi1,l) * vcont(i+ip1jmi1,l) * aire(i+ip1jm)
86  3 CONTINUE
87 
88  ecinpn = 0.5 * ssum( iim,ecinni,1 ) / apoln
89  ecinps = 0.5 * ssum( iim,ecinsi,1 ) / apols
90 
91  DO 4 ij = 1,iip1
92  ecin( ij , l ) = ecinpn
93  ecin( ij+ ip1jm, l ) = ecinps
94  4 CONTINUE
95 
96  5 CONTINUE
97  RETURN
98  END