1 |
|
2305 |
SUBROUTINE enercin ( vcov, ucov, vcont, ucont, ecin ) |
2 |
|
|
! |
3 |
|
|
!------------------------------------------------------------------------------- |
4 |
|
|
! Authors: P. Le Van. |
5 |
|
|
!------------------------------------------------------------------------------- |
6 |
|
|
! Purpose: Compute kinetic energy at sigma levels. |
7 |
|
|
IMPLICIT NONE |
8 |
|
|
include "dimensions.h" |
9 |
|
|
include "paramet.h" |
10 |
|
|
include "comgeom.h" |
11 |
|
|
!=============================================================================== |
12 |
|
|
! Arguments: |
13 |
|
|
REAL, INTENT(IN) :: vcov (ip1jm, llm) |
14 |
|
|
REAL, INTENT(IN) :: ucov (ip1jmp1,llm) |
15 |
|
|
REAL, INTENT(IN) :: vcont (ip1jm, llm) |
16 |
|
|
REAL, INTENT(IN) :: ucont (ip1jmp1,llm) |
17 |
|
|
REAL, INTENT(OUT) :: ecin (ip1jmp1,llm) |
18 |
|
|
!=============================================================================== |
19 |
|
|
! Notes: |
20 |
|
|
! . V |
21 |
|
|
! i,j-1 |
22 |
|
|
! |
23 |
|
|
! alpha4 . . alpha1 |
24 |
|
|
! |
25 |
|
|
! |
26 |
|
|
! U . . P . U |
27 |
|
|
! i-1,j i,j i,j |
28 |
|
|
! |
29 |
|
|
! alpha3 . . alpha2 |
30 |
|
|
! |
31 |
|
|
! |
32 |
|
|
! . V |
33 |
|
|
! i,j |
34 |
|
|
! |
35 |
|
|
! Kinetic energy at scalar point P(i,j) (excluding poles) is: |
36 |
|
|
! Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 ) + |
37 |
|
|
! 0.5 * U(i ,j)**2 *( alpha1 + alpha2 ) + |
38 |
|
|
! 0.5 * V(i,j-1)**2 *( alpha1 + alpha4 ) + |
39 |
|
|
! 0.5 * V(i, j)**2 *( alpha2 + alpha3 ) |
40 |
|
|
!=============================================================================== |
41 |
|
|
! Local variables: |
42 |
|
|
INTEGER :: l, ij, i |
43 |
|
|
REAL :: ecinni(iip1), ecinsi(iip1), ecinpn, ecinps |
44 |
|
|
!=============================================================================== |
45 |
✓✓ |
92200 |
DO l=1,llm |
46 |
✓✓ |
91962585 |
DO ij = iip2, ip1jm -1 |
47 |
|
|
ecin(ij+1,l)=0.5*(ucov(ij ,l)*ucont(ij ,l)*alpha3p4(ij +1) & |
48 |
|
|
+ ucov(ij+1 ,l)*ucont(ij+1 ,l)*alpha1p2(ij +1) & |
49 |
|
|
+ vcov(ij-iim,l)*vcont(ij-iim,l)*alpha1p4(ij +1) & |
50 |
|
91962585 |
+ vcov(ij+1 ,l)*vcont(ij+1 ,l)*alpha2p3(ij +1) ) |
51 |
|
|
END DO |
52 |
|
|
!--- Correction: ecin(1,j,l)= ecin(iip1,j,l) |
53 |
✓✓ |
2786745 |
DO ij=iip2,ip1jm,iip1; ecin(ij,l) = ecin(ij+iim,l); END DO |
54 |
|
|
|
55 |
|
|
!--- North pole |
56 |
✓✓ |
2966535 |
DO i=1,iim |
57 |
|
2966535 |
ecinni(i) = vcov(i,l)*vcont(i,l)*aire(i) |
58 |
|
|
END DO |
59 |
✓✓ |
2966535 |
ecinpn = 0.5*SUM(ecinni(1:iim))/apoln |
60 |
✓✓ |
3056430 |
DO ij=1,iip1; ecin(ij,l)=ecinpn; END DO |
61 |
|
|
|
62 |
|
|
!--- South pole |
63 |
✓✓ |
2966535 |
DO i=1,iim |
64 |
|
2966535 |
ecinsi(i) = vcov(i+ip1jmi1,l)*vcont(i+ip1jmi1,l)*aire(i+ip1jm) |
65 |
|
|
END DO |
66 |
✓✓ |
2966535 |
ecinps = 0.5*SUM(ecinsi(1:iim))/apols |
67 |
✓✓ |
3058735 |
DO ij=1,iip1; ecin(ij+ip1jm,l)=ecinps; END DO |
68 |
|
|
END DO |
69 |
|
|
|
70 |
|
2305 |
END SUBROUTINE enercin |
71 |
|
|
|