/[lmdze]/trunk/Sources/dyn3d/enercin.f
ViewVC logotype

Annotation of /trunk/Sources/dyn3d/enercin.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/enercin.f
File size: 2610 byte(s)
Initial import
1 guez 3 !
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

  ViewVC Help
Powered by ViewVC 1.1.21