1 |
! |
2 |
! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/enercin.F,v 1.1.1.1 2004/05/19 12:53:06 lmdzadmin Exp $ |
3 |
! |
4 |
SUBROUTINE enercin ( vcov, ucov, vcont, ucont, ecin ) |
5 |
use dimens_m |
6 |
use paramet_m |
7 |
use comgeom |
8 |
IMPLICIT NONE |
9 |
|
10 |
c======================================================================= |
11 |
c |
12 |
c Auteur: P. Le Van |
13 |
c ------- |
14 |
c |
15 |
c Objet: |
16 |
c ------ |
17 |
c |
18 |
c ********************************************************************* |
19 |
c .. calcul de l'energie cinetique aux niveaux s ...... |
20 |
c ********************************************************************* |
21 |
c vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg . |
22 |
c ecin est un argument de sortie pour le s-pg |
23 |
c |
24 |
c======================================================================= |
25 |
|
26 |
|
27 |
REAL, intent(in):: vcov( ip1jm,llm ), ucov( ip1jmp1,llm ) |
28 |
real vcont( ip1jm,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 |