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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 207 - (hide annotations)
Thu Sep 1 10:30:53 2016 UTC (7 years, 8 months ago) by guez
File size: 2441 byte(s)
New philosophy on compiler options.

Removed source code for thermcep = f. (Not used in LMDZ either.)

1 guez 207 module enercin_m
2 guez 3
3 guez 81 IMPLICIT NONE
4 guez 3
5 guez 207 contains
6 guez 3
7 guez 207 SUBROUTINE enercin(vcov, ucov, vcont, ucont, ecin)
8 guez 3
9 guez 207 ! From LMDZ4/libf/dyn3d/enercin.F, version 1.1.1.1 2004/05/19 12:53:06
10 guez 3
11 guez 207 USE dimens_m
12     USE paramet_m
13     USE comgeom
14 guez 3
15 guez 207 ! =======================================================================
16 guez 3
17 guez 207 ! Auteur: P. Le Van
18     ! -------
19 guez 3
20 guez 207 ! Objet:
21     ! ------
22 guez 3
23 guez 207 ! *********************************************************************
24     ! .. calcul de l'energie cinetique aux niveaux s ......
25     ! *********************************************************************
26     ! vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg .
27     ! ecin est un argument de sortie pour le s-pg
28 guez 3
29 guez 207 ! =======================================================================
30 guez 3
31    
32 guez 207 REAL, INTENT (IN) :: vcov(ip1jm, llm), ucov(ip1jmp1, llm)
33     REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm), ecin(ip1jmp1, llm)
34 guez 3
35 guez 207 REAL ecinni(iip1), ecinsi(iip1)
36 guez 3
37 guez 207 REAL ecinpn, ecinps
38     INTEGER l, ij, i
39 guez 3
40 guez 207 REAL ssum
41 guez 3
42    
43    
44 guez 207 ! . V
45     ! i,j-1
46 guez 3
47 guez 207 ! alpha4 . . alpha1
48 guez 3
49    
50 guez 207 ! U . . P . U
51     ! i-1,j i,j i,j
52 guez 3
53 guez 207 ! alpha3 . . alpha2
54 guez 3
55    
56 guez 207 ! . V
57     ! i,j
58 guez 3
59    
60 guez 207 ! L'energie cinetique au point scalaire P(i,j) ,autre que les poles, est :
61     ! Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 ) +
62     ! 0.5 * U(i ,j)**2 *( alpha1 + alpha2 ) +
63     ! 0.5 * V(i,j-1)**2 *( alpha1 + alpha4 ) +
64     ! 0.5 * V(i, j)**2 *( alpha2 + alpha3 )
65 guez 81
66    
67 guez 207 DO l = 1, llm
68 guez 81
69 guez 207 DO ij = iip2, ip1jm - 1
70     ecin(ij+1, l) = 0.5*(ucov(ij,l)*ucont(ij,l)*alpha3p4(ij+1)+ucov(ij+1,l) &
71     *ucont(ij+1,l)*alpha1p2(ij+1)+vcov(ij-iim,l)*vcont(ij-iim,l)*alpha1p4 &
72     (ij+1)+vcov(ij+1,l)*vcont(ij+1,l)*alpha2p3(ij+1))
73     END DO
74 guez 81
75 guez 207 ! ... correction pour ecin(1,j,l) ....
76     ! ... ecin(1,j,l)= ecin(iip1,j,l) ...
77 guez 81
78 guez 207 ! DIR$ IVDEP
79     DO ij = iip2, ip1jm, iip1
80     ecin(ij, l) = ecin(ij+iim, l)
81     END DO
82 guez 81
83 guez 207 ! calcul aux poles .......
84    
85    
86     DO i = 1, iim
87     ecinni(i) = vcov(i, l)*vcont(i, l)*aire(i)
88     ecinsi(i) = vcov(i+ip1jmi1, l)*vcont(i+ip1jmi1, l)*aire(i+ip1jm)
89     END DO
90    
91     ecinpn = 0.5*ssum(iim, ecinni, 1)/apoln
92     ecinps = 0.5*ssum(iim, ecinsi, 1)/apols
93    
94     DO ij = 1, iip1
95     ecin(ij, l) = ecinpn
96     ecin(ij+ip1jm, l) = ecinps
97     END DO
98    
99 guez 81 END DO
100    
101 guez 207 END SUBROUTINE enercin
102    
103     end module enercin_m

  ViewVC Help
Powered by ViewVC 1.1.21