4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE advect(ucov, vcov, teta, w, massebx, masseby, du, dv, dteta) |
SUBROUTINE advect(ang_3d, vcov, teta, w, massebx, masseby, du, dv, dteta) |
8 |
|
|
9 |
! From dyn3d/advect.F, version 1.1.1.1, 2004/05/19 12:53:06 |
! From dyn3d/advect.F, version 1.1.1.1, 2004/05/19 12:53:06 |
10 |
! Authors: P. Le Van , F. Hourdin |
! Authors: P. Le Van , F. Hourdin |
11 |
! Objet : calcul des termes d'advection verticale pour u, v, teta. |
! Objet : calcul des termes d'advection verticale pour u, v, teta. |
12 |
! Ces termes sont ajoutés à du, dv, dteta. |
! Ces termes sont ajout\'es \`a du, dv, dteta. |
13 |
|
|
14 |
USE dimensions, ONLY : iim, llm |
USE dimensions, ONLY: iim, llm |
15 |
USE paramet_m, ONLY : iip1, iip2, ip1jm, ip1jmp1 |
USE paramet_m, ONLY: iip1, iip2, ip1jm, ip1jmp1 |
16 |
|
|
17 |
REAL, intent(in):: ucov(ip1jmp1, llm), vcov(ip1jm, llm) |
REAL, intent(in):: ang_3d(ip1jmp1, llm), vcov(ip1jm, llm) |
18 |
real, intent(in):: teta(ip1jmp1, llm) |
real, intent(in):: teta(ip1jmp1, llm) |
19 |
real, INTENT (IN):: w(ip1jmp1, llm) |
real, INTENT (IN):: w(ip1jmp1, llm) |
20 |
REAL, intent(in):: massebx(ip1jmp1, llm), masseby(ip1jm, llm) |
REAL, intent(in):: massebx(ip1jmp1, llm), masseby(ip1jm, llm) |
27 |
|
|
28 |
!----------------------------------------------------------------------- |
!----------------------------------------------------------------------- |
29 |
|
|
30 |
! 2. Calculs preliminaires : |
! Calculs preliminaires : |
31 |
|
|
32 |
! Calcul de \bar{u}^{yy} |
! Calcul de \bar{u}^{yy} |
33 |
DO l = 1, llm |
DO l = 1, llm |
34 |
DO ij = iip2, ip1jmp1 |
DO ij = iip2, ip1jmp1 |
35 |
uav(ij, l) = 0.25*(ucov(ij, l)+ucov(ij-iip1, l)) |
uav(ij, l) = 0.25*(ang_3d(ij, l)+ang_3d(ij-iip1, l)) |
36 |
END DO |
END DO |
37 |
DO ij = iip2, ip1jm |
DO ij = iip2, ip1jm |
38 |
uav(ij, l) = uav(ij, l) + uav(ij+iip1, l) |
uav(ij, l) = uav(ij, l) + uav(ij+iip1, l) |
68 |
! calcul pour "du" |
! calcul pour "du" |
69 |
DO ij = iip2, ip1jm - 1 |
DO ij = iip2, ip1jm - 1 |
70 |
ww = wsur2(ij) + wsur2(ij+1) |
ww = wsur2(ij) + wsur2(ij+1) |
71 |
uu = 0.5*(ucov(ij, l)+ucov(ij, l+1)) |
uu = 0.5*(ang_3d(ij, l)+ang_3d(ij, l+1)) |
72 |
du(ij, l) = du(ij, l) - ww*(uu-uav(ij, l))/massebx(ij, l) |
du(ij, l) = du(ij, l) - ww*(uu-uav(ij, l))/massebx(ij, l) |
73 |
du(ij, l+1) = du(ij, l+1) + ww*(uu-uav(ij, l+1))/massebx(ij, l+1) |
du(ij, l+1) = du(ij, l+1) + ww*(uu-uav(ij, l+1))/massebx(ij, l+1) |
74 |
END DO |
END DO |