4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE vdif_kcay(ngrid, dt, g, rconst, plev, temp, zlev, zlay, & |
SUBROUTINE vdif_kcay(ngrid, dt, g, plev, zlev, zlay, u, v, teta, cd, q2, & |
8 |
u, v, teta, cd, q2, q2diag, km, kn, ustar, l_mix) |
q2diag, km, kn, ustar, l_mix) |
9 |
|
|
10 |
! From LMDZ4/libf/phylmd/vdif_kcay.F, version 1.1 2004/06/22 11:45:36 |
! From LMDZ4/libf/phylmd/vdif_kcay.F, version 1.1 2004/06/22 11:45:36 |
11 |
|
|
12 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev, klon |
13 |
|
use yamada_m, only: yamada |
14 |
|
|
15 |
|
INTEGER ngrid |
16 |
! dt : pas de temps |
! dt : pas de temps |
17 |
! g : g |
! g : g |
18 |
! zlev : altitude a chaque niveau (interface inferieure de la couche |
! zlev : altitude a chaque niveau (interface inferieure de la couche |
33 |
|
|
34 |
REAL, intent(in):: dt |
REAL, intent(in):: dt |
35 |
real, intent(in):: g |
real, intent(in):: g |
36 |
real rconst |
real plev(klon, klev+1) |
|
real plev(klon, klev+1), temp(klon, klev) |
|
37 |
real ustar(klon), snstable |
real ustar(klon), snstable |
38 |
REAL zlev(klon, klev+1) |
REAL zlev(klon, klev+1) |
39 |
REAL zlay(klon, klev) |
REAL zlay(klon, klev) |
41 |
REAL v(klon, klev) |
REAL v(klon, klev) |
42 |
REAL teta(klon, klev) |
REAL teta(klon, klev) |
43 |
REAL, intent(in):: cd (:) ! (ngrid) cdrag, valeur au debut du pas de temps |
REAL, intent(in):: cd (:) ! (ngrid) cdrag, valeur au debut du pas de temps |
44 |
REAL q2(klon, klev+1), q2s(klon, klev+1) |
REAL q2(klon, klev+1) |
45 |
REAL q2diag(klon, klev+1) |
REAL q2diag(klon, klev+1) |
46 |
REAL km(klon, klev+1) |
REAL km(klon, klev+1) |
47 |
REAL kn(klon, klev+1) |
REAL kn(klon, klev+1) |
48 |
real sq(klon), sqz(klon), zz(klon, klev+1), zq, long0(klon) |
real sq(klon), sqz(klon), zq, long0(klon) |
49 |
|
|
50 |
integer l_mix, iii |
integer l_mix |
51 |
|
|
52 |
! nlay : nombre de couches |
! nlay : nombre de couches |
53 |
! nlev : nombre de niveaux |
! nlev : nombre de niveaux |
58 |
! q : echelle de vitesse au bas de chaque couche |
! q : echelle de vitesse au bas de chaque couche |
59 |
! (valeur a la fin du pas de temps) |
! (valeur a la fin du pas de temps) |
60 |
|
|
61 |
INTEGER nlay, nlev, ngrid |
INTEGER nlay, nlev |
62 |
REAL unsdz(klon, klev) |
REAL unsdz(klon, klev) |
63 |
REAL unsdzdec(klon, klev+1) |
REAL unsdzdec(klon, klev+1) |
64 |
REAL q(klon, klev+1) |
REAL q(klon, klev+1) |
107 |
! gnmax : borne superieure de gn (0.0233) |
! gnmax : borne superieure de gn (0.0233) |
108 |
! gninf : vrai si gn est en dessous de sa borne inferieure |
! gninf : vrai si gn est en dessous de sa borne inferieure |
109 |
! gnsup : vrai si gn est en dessus de sa borne superieure |
! gnsup : vrai si gn est en dessus de sa borne superieure |
|
! gm : drole d'objet bien utile |
|
110 |
! ri : nombre de Richardson |
! ri : nombre de Richardson |
111 |
! sn : coefficient de stabilite pour n |
! sn : coefficient de stabilite pour n |
112 |
! snq2 : premier terme du developement limite de sn en q2 |
! snq2 : premier terme du developement limite de sn en q2 |
118 |
REAL gnmax |
REAL gnmax |
119 |
LOGICAL gninf |
LOGICAL gninf |
120 |
LOGICAL gnsup |
LOGICAL gnsup |
|
REAL gm |
|
|
! REAL ri(klon, klev+1) |
|
121 |
REAL sn(klon, klev+1) |
REAL sn(klon, klev+1) |
122 |
REAL snq2(klon, klev+1) |
REAL snq2(klon, klev+1) |
123 |
REAL sm(klon, klev+1) |
REAL sm(klon, klev+1) |
194 |
|
|
195 |
! Initialisation de q2 |
! Initialisation de q2 |
196 |
|
|
197 |
call yamada(ngrid, g, rconst, plev, temp, zlev, zlay, u, v, teta, & |
call yamada(ngrid, g, zlev, zlay, u, v, teta, q2diag, km, kn) |
|
q2diag, km, kn, ustar, l_mix) |
|
198 |
if (first.and.1.eq.1) then |
if (first.and.1.eq.1) then |
199 |
first=.false. |
first=.false. |
200 |
q2=q2diag |
q2=q2diag |
323 |
|
|
324 |
gn=-long(igrid, ilev)**2 / q2(igrid, ilev) & |
gn=-long(igrid, ilev)**2 / q2(igrid, ilev) & |
325 |
* n2(igrid, ilev) |
* n2(igrid, ilev) |
|
gm=long(igrid, ilev)**2 / q2(igrid, ilev) & |
|
|
* m2(igrid, ilev) |
|
|
|
|
326 |
gninf=.false. |
gninf=.false. |
327 |
gnsup=.false. |
gnsup=.false. |
328 |
long(igrid, ilev)=long(igrid, ilev) |
long(igrid, ilev)=long(igrid, ilev) |