LMDZ
enercin_loc.F90
Go to the documentation of this file.
1 SUBROUTINE enercin_loc ( vcov, ucov, vcont, ucont, ecin )
2 !
3 !-------------------------------------------------------------------------------
4 ! Authors: P. Le Van.
5 !-------------------------------------------------------------------------------
6 ! Purpose: Compute kinetic energy at sigma levels.
7  USE parallel_lmdz
8  IMPLICIT NONE
9  include "dimensions.h"
10  include "paramet.h"
11  include "comgeom.h"
12 !===============================================================================
13 ! Arguments:
14  REAL, INTENT(IN) :: vcov (ijb_v:ije_v,llm)
15  REAL, INTENT(IN) :: ucov (ijb_u:ije_u,llm)
16  REAL, INTENT(IN) :: vcont (ijb_v:ije_v,llm)
17  REAL, INTENT(IN) :: ucont (ijb_u:ije_u,llm)
18  REAL, INTENT(OUT) :: ecin (ijb_u:ije_u,llm)
19 !===============================================================================
20 ! Notes:
21 ! . V
22 ! i,j-1
23 !
24 ! alpha4 . . alpha1
25 !
26 !
27 ! U . . P . U
28 ! i-1,j i,j i,j
29 !
30 ! alpha3 . . alpha2
31 !
32 !
33 ! . V
34 ! i,j
35 !
36 ! Kinetic energy at scalar point P(i,j) (excluding poles) is:
37 ! Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 ) +
38 ! 0.5 * U(i ,j)**2 *( alpha1 + alpha2 ) +
39 ! 0.5 * V(i,j-1)**2 *( alpha1 + alpha4 ) +
40 ! 0.5 * V(i, j)**2 *( alpha2 + alpha3 )
41 !===============================================================================
42 ! Local variables:
43  INTEGER :: l, ij, i, ijb, ije
44  REAL :: ecinni(iim), ecinsi(iim), ecinpn, ecinps
45 !===============================================================================
46 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
47  DO l=1,llm
48 
49  ijb=ij_begin
50  ije=ij_end+iip1
51 
52  IF(pole_nord) ijb=ij_begin+iip1
53  IF(pole_sud) ije=ij_end-iip1
54 
55  DO ij = ijb,ije-1
56  ecin(ij+1,l)=0.5*(ucov(ij ,l)*ucont(ij ,l)*alpha3p4(ij +1) &
57  + ucov(ij+1 ,l)*ucont(ij+1 ,l)*alpha1p2(ij +1) &
58  + vcov(ij-iim,l)*vcont(ij-iim,l)*alpha1p4(ij +1) &
59  + vcov(ij+1 ,l)*vcont(ij+1 ,l)*alpha2p3(ij +1) )
60  END DO
61 
62  !--- Correction: ecin(1,j,l)= ecin(iip1,j,l)
63  DO ij=ijb,ije,iip1; ecin(ij,l) = ecin(ij+iim,l); END DO
64 
65  !--- North pole
66  IF(pole_nord) THEN
67  ecinni(:) = vcov(1:iim,l)*vcont(1:iim,l)*aire(1:iim)
68  ecinpn = 0.5*sum(ecinni)/apoln
69  ecin(1:iip1,l)=ecinpn
70  END IF
71 
72  !--- South pole
73  IF(pole_sud) THEN
74  DO i=1,iim
75  ecinsi(i) = vcov(i+ip1jmi1,l)*vcont(i+ip1jmi1,l)*aire(i+ip1jm)
76  END DO
77  ecinps = 0.5*sum(ecinsi)/apols
78  ecin(1+ip1jm:ip1jmp1,l)=ecinps
79  END IF
80  END DO
81 !$OMP END DO NOWAIT
82 
83 END SUBROUTINE enercin_loc
84 
!$Header llmm1 INTEGER ip1jmi1
Definition: paramet.h:14
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
!$Header!CDK comgeom COMMON comgeom apols
Definition: comgeom.h:8
!$Header!CDK comgeom COMMON comgeom alpha1p2
Definition: comgeom.h:25
integer, save ij_end
logical, save pole_sud
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Header!CDK comgeom COMMON comgeom aire
Definition: comgeom.h:25
integer, save ijb_v
!$Header llmm1 INTEGER ip1jm
Definition: paramet.h:14
!$Header!CDK comgeom COMMON comgeom apoln
Definition: comgeom.h:8
!$Header!CDK comgeom COMMON comgeom alpha1p4
Definition: comgeom.h:25
logical, save pole_nord
!$Header!CDK comgeom COMMON comgeom alpha3p4
Definition: comgeom.h:25
integer, save ij_begin
integer, save ije_v
!$Header!CDK comgeom COMMON comgeom alpha2p3
Definition: comgeom.h:25
subroutine enercin_loc(vcov, ucov, vcont, ucont, ecin)
Definition: enercin_loc.F90:2
c c zjulian c cym CALL iim cym klev iim
Definition: ini_bilKP_ave.h:24
integer, save ije_u
integer, save ijb_u