4 SUBROUTINE yamada(ngrid, dt, g, rconst, plev, temp, zlev, zlay, u, v, teta, &
5 cd, q2, km, kn, ustar, l_mix)
32 REAL ustar(
klon), snstable
56 REAL ri, zrif, zalpha, zsm
65 REAL ric, rifc, b1, kap
66 SAVE ric, rifc, b1, kap
67 DATA ric, rifc, b1, kap/0.195, 0.191, 16.6, 0.3/
70 REAL frif, falpha, fsm
72 frif(ri) = 0.6588*(ri+0.1776-sqrt(ri*ri-0.3221*ri+0.03156))
73 falpha(ri) = 1.318*(0.2231-ri)/(0.2341-ri)
74 fsm(ri) = 1.96*(0.1912-ri)*(0.2341-ri)/((1.-ri)*(0.2231-ri))
79 IF (0==1 .AND. first)
THEN
94 print *, ri, rif, zalpha, zsm
103 dz(ig, k) = zlay(ig, k) - zlay(ig, k-1)
104 m2(ig, k) = ((u(ig,k)-u(ig,k-1))**2+(v(ig,k)-v(ig, &
105 k-1))**2)/(dz(ig,k)*dz(ig,k))
106 n2(ig, k) = g*2.*(teta(ig,k)-teta(ig,k-1))/(teta(ig,k-1)+teta(ig,k))/ &
108 ri = n2(ig, k)/max(m2(ig,k), 1.e-10)
110 rif(ig, k) = frif(ri)
114 IF (rif(ig,k)<0.16)
THEN
115 alpha(ig, k) = falpha(rif(ig,k))
116 sm(ig, k) = fsm(rif(ig,k))
121 zz(ig, k) = b1*m2(ig, k)*(1.-rif(ig,k))*sm(ig, k)
132 l(ig, k) = l0(ig)*kap*zlev(ig, k)/(kap*zlev(ig,k)+l0(ig))
143 q2(ig, k) = l(ig, k)**2*zz(ig, k)
144 l(ig, k) = min(l0(ig)*kap*zlev(ig,k)/(kap*zlev(ig, &
145 k)+l0(ig)), 0.5*sqrt(q2(ig,k))/sqrt(max(n2(ig,k),1.e-10)))
147 sqz(ig) = sqz(ig) + zq*zlev(ig, k)*(zlay(ig,k)-zlay(ig,k-1))
148 sq(ig) = sq(ig) + zq*(zlay(ig,k)-zlay(ig,k-1))
152 l0(ig) = 0.2*sqz(ig)/sq(ig)
160 l(ig, k) = min(l0(ig)*kap*zlev(ig,k)/(kap*zlev(ig, &
161 k)+l0(ig)), 0.5*sqrt(q2(ig,k))/sqrt(max(n2(ig,k),1.e-10)))
162 q2(ig, k) = l(ig, k)**2*zz(ig, k)
163 km(ig, k) = l(ig, k)*sqrt(q2(ig,k))*sm(ig, k)
164 kn(ig, k) = km(ig, k)*alpha(ig, k)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
subroutine yamada(ngrid, dt, g, rconst, plev, temp, zlev, zlay, u, v, teta, cd, q2, km, kn, ustar, l_mix)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true