4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE vdif_kcay(ngrid, dt, g, rconst, plev, temp, zlev, zlay, u, v, & |
SUBROUTINE vdif_kcay(ngrid, dt, g, plev, zlev, zlay, u, v, teta, cd, q2, & |
8 |
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 |
|
|
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) |
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) |
147 |
REAL termq3m2 |
REAL termq3m2 |
148 |
|
|
149 |
! q2min : borne inferieure de q2 |
! q2min : borne inferieure de q2 |
|
! q2max : borne superieure de q2 |
|
|
|
|
150 |
REAL q2min |
REAL q2min |
|
REAL q2max |
|
151 |
|
|
152 |
! knmin : borne inferieure de kn |
! knmin : borne inferieure de kn |
153 |
! kmmin : borne inferieure de km |
! kmmin : borne inferieure de km |
171 |
PARAMETER (knmin=1.E-5) |
PARAMETER (knmin=1.E-5) |
172 |
PARAMETER (kmmin=1.E-5) |
PARAMETER (kmmin=1.E-5) |
173 |
PARAMETER (q2min=1.e-5) |
PARAMETER (q2min=1.e-5) |
|
PARAMETER (q2max=1.E+2) |
|
174 |
PARAMETER (nlay=klev) |
PARAMETER (nlay=klev) |
175 |
PARAMETER (nlev=klev+1) |
PARAMETER (nlev=klev+1) |
176 |
|
|
190 |
|
|
191 |
! Initialisation de q2 |
! Initialisation de q2 |
192 |
|
|
193 |
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) |
|
194 |
if (first.and.1.eq.1) then |
if (first.and.1.eq.1) then |
195 |
first=.false. |
first=.false. |
196 |
q2=q2diag |
q2=q2diag |
319 |
|
|
320 |
gn=-long(igrid, ilev)**2 / q2(igrid, ilev) & |
gn=-long(igrid, ilev)**2 / q2(igrid, ilev) & |
321 |
* n2(igrid, ilev) |
* n2(igrid, ilev) |
|
gm=long(igrid, ilev)**2 / q2(igrid, ilev) & |
|
|
* m2(igrid, ilev) |
|
|
|
|
322 |
gninf=.false. |
gninf=.false. |
323 |
gnsup=.false. |
gnsup=.false. |
324 |
long(igrid, ilev)=long(igrid, ilev) |
long(igrid, ilev)=long(igrid, ilev) |