4 SUBROUTINE wake(p, ph, pi, dtime, sigd_con, &
6 dtdwn, dqdwn, amdwn, amup, dta, dqa, &
7 wdtpbl, wdqpbl, udtpbl, udqpbl, &
8 deltatw, deltaqw, dth,
hw, sigmaw, wape, fip, gfl, &
9 dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, qu, &
10 dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, &
11 d_deltat_gw, d_deltatw2, d_deltaqw2)
122 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: p, pi
123 REAL,
DIMENSION (klon, klev+1),
INTENT(IN) :: ph, omgb
124 REAL,
INTENT(IN) :: dtime
125 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: te0, qe0
126 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: dtdwn, dqdwn
127 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: wdtpbl, wdqpbl, udtpbl, udqpbl
128 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: amdwn, amup
129 REAL,
DIMENSION (klon, klev),
INTENT(IN) :: dta, dqa
130 REAL,
DIMENSION (klon),
INTENT(IN) :: sigd_con
134 REAL,
DIMENSION (klon, klev),
INTENT(INOUT) :: deltatw, deltaqw
135 REAL,
DIMENSION (klon),
INTENT(INOUT) :: sigmaw
140 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: dth
141 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: tu, qu
142 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: dtls, dqls
143 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: dtke, dqke
144 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: dtpbl, dqpbl
145 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: spread
146 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: d_deltatw2, d_deltaqw2
147 REAL,
DIMENSION (klon, klev+1),
INTENT(OUT) :: omgbdth, omg
148 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: dp_omgb, dp_deltomg
149 REAL,
DIMENSION (klon, klev),
INTENT(OUT) :: d_deltat_gw
150 REAL,
DIMENSION (klon),
INTENT(OUT) :: hw, wape, fip, gfl, cstar
151 REAL,
DIMENSION (klon),
INTENT(OUT) :: wdens
152 INTEGER,
DIMENSION (klon),
INTENT(OUT) :: ktopw
159 LOGICAL,
SAVE :: first = .
true.
161 REAL,
SAVE :: stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol
166 REAL sigmad, hwmin, wapecut
171 LOGICAL,
DIMENSION (klon) :: gwake
174 REAL,
DIMENSION (klon, klev) :: deltatw0
175 REAL,
DIMENSION (klon, klev) :: deltaqw0
176 REAL,
DIMENSION (klon, klev) :: te, qe
177 REAL,
DIMENSION (klon) :: sigmaw0, sigmaw1
180 REAL,
DIMENSION (klon) :: ll
181 REAL,
DIMENSION (klon, klev) :: n2
182 REAL,
DIMENSION (klon, klev) :: cgw
183 REAL,
DIMENSION (klon, klev) :: tgw
186 REAL,
DIMENSION (klon) :: ptop_provis, ptop, ptop_new
187 REAL,
DIMENSION (klon) :: sum_dth
188 REAL,
DIMENSION (klon) :: dthmin
189 REAL,
DIMENSION (klon) :: z, dz, hw0
190 INTEGER,
DIMENSION (klon) :: ktop, kupper
197 LOGICAL wk_adv(
klon), ok_qx_qw(
klon)
202 INTEGER isubstep, k, i
204 REAL,
DIMENSION (klon) :: sum_thu, sum_tu, sum_qu, sum_thvu
205 REAL,
DIMENSION (klon) :: sum_dq, sum_rho
206 REAL,
DIMENSION (klon) :: sum_dtdwn, sum_dqdwn
207 REAL,
DIMENSION (klon) :: av_thu, av_tu, av_qu, av_thvu
208 REAL,
DIMENSION (klon) :: av_dth, av_dq, av_rho
209 REAL,
DIMENSION (klon) :: av_dtdwn, av_dqdwn
211 REAL,
DIMENSION (klon, klev) :: rho, rhow
212 REAL,
DIMENSION (klon, klev+1) :: rhoh
213 REAL,
DIMENSION (klon, klev) :: rhow_moyen
214 REAL,
DIMENSION (klon, klev) :: zh
215 REAL,
DIMENSION (klon, klev+1) :: zhh
216 REAL,
DIMENSION (klon, klev) :: epaisseur1, epaisseur2
218 REAL,
DIMENSION (klon, klev) :: the, thu
222 REAL,
DIMENSION (klon, klev+1) :: omgbw
223 REAL,
DIMENSION (klon) :: pupper
224 REAL,
DIMENSION (klon) :: omgtop
225 REAL,
DIMENSION (klon, klev) :: dp_omgbw
226 REAL,
DIMENSION (klon) :: ztop, dztop
227 REAL,
DIMENSION (klon, klev) :: alpha_up
229 REAL,
DIMENSION (klon) :: rre1, rre2
231 REAL,
DIMENSION (klon, klev) :: th1, th2, q1, q2
232 REAL,
DIMENSION (klon, klev) :: d_th1, d_th2, d_dth
233 REAL,
DIMENSION (klon, klev) :: d_q1, d_q2, d_dq
234 REAL,
DIMENSION (klon, klev) :: omgbdq
236 REAL,
DIMENSION (klon) :: ff, gg
237 REAL,
DIMENSION (klon) :: wape2, cstar2, heff
239 REAL,
DIMENSION (klon, klev) :: crep
241 REAL,
DIMENSION (klon, klev) :: ppi
244 REAL,
DIMENSION (klon) :: death_rate, nat_rate
245 REAL,
DIMENSION (klon, klev) :: entr
246 REAL,
DIMENSION (klon, klev) :: detr
257 DATA wapecut, sigmad, hwmin/5., .02, 10./
297 OPEN (99, file=
'wake_param.data', status=
'old', form=
'formatted',
err=9999)
298 READ (99, *, end=9998) stark
299 READ (99, *, end=9998) alpk
300 READ (99, *, end=9998) wdens_ref
301 READ (99, *, end=9998) coefgw
308 CALL bcast(wdens_ref)
335 deltatw0(i, k) = deltatw(i, k)
336 deltaqw0(i, k) = deltaqw(i, k)
341 d_deltat_gw(i, k) = 0.
347 d_deltatw2(i, k) = 0.
348 d_deltaqw2(i, k) = 0.
358 sigmaw(i) = amax1(sigmaw(i), sigmad)
359 sigmaw(i) = amin1(sigmaw(i), 0.99)
360 sigmaw0(i) = sigmaw(i)
402 ll(i) = (1-sqrt(sigmaw(i)))/sqrt(wdens(i))
409 rho(i, k) = p(i, k)/(rd*te(i,k))
413 rhoh(i, k) = ph(i, k)/(rd*te(i,k))
418 rhoh(i, k) = ph(i, k)*2./(rd*(te(i,k)+te(i,k-1)))
420 zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*
rg) + zhh(i, k-1)
423 the(i, k) = te(i, k)/ppi(i, k)
424 thu(i, k) = (te(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
425 tu(i, k) = te(i, k) - deltatw(i, k)*sigmaw(i)
426 qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
428 rhow(i, k) = p(i, k)/(rd*(te(i,k)+deltatw(i,k)))
429 dth(i, k) = deltatw(i, k)/ppi(i, k)
438 n2(i, k) = amax1(0., -
rg**2/the(i,k)*rho(i,k)*(the(i,k+1)-the(i, &
439 k-1))/(p(i,k+1)-p(i,k-1)))
441 zh(i, k) = (zhh(i,k)+zhh(i,k+1))/2
443 cgw(i, k) = sqrt(n2(i,k))*zh(i, k)
444 tgw(i, k) = coefgw*cgw(i, k)/ll(i)
460 epaisseur1(i, k) = 0.
461 epaisseur2(i, k) = 0.
466 epaisseur1(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*
rg) + 1.
467 epaisseur2(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*
rg) + 1.
468 rhow_moyen(i, 1) = rhow(i, 1)
473 epaisseur1(i, k) = -(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg) + 1.
474 epaisseur2(i, k) = epaisseur2(i, k-1) + epaisseur1(i, k)
475 rhow_moyen(i, k) = (rhow_moyen(i,k-1)*epaisseur2(i,k-1)+rhow(i,k)* &
476 epaisseur1(i,k))/epaisseur2(i, k)
488 pupper(i) = 0.6*ph(i, 1)
489 pupper(i) = max(pupper(i), 45000.)
500 ptop_provis(i) = ph(i, 1)
507 IF (dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min .AND. &
508 ptop_provis(i)==ph(i,1))
THEN
509 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
510 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
519 dthmin(i) = -delta_t_min
525 dz(i) = -(amax1(ph(i,k+1),ptop_provis(i))-ph(i,k))/(rho(i,k)*
rg)
528 sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
529 dthmin(i) = amin1(dthmin(i), dth(i,k))
537 hw0(i) = 2.*sum_dth(i)/amin1(dthmin(i), -0.5)
538 hw0(i) = amax1(hwmin, hw0(i))
550 dz(i) = amin1(-(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg), hw0(i)-z(i))
553 ptop(i) = ph(i, k) - rho(i, k)*
rg*dz(i)
563 IF (ph(i,k+1)<ptop(i)) ktop(i) = k
564 IF (ph(i,k+1)<pupper(i)) kupper(i) = k
570 kupper(i) = max(kupper(i), 2)
571 kupper(i) = min(kupper(i),
klev-1)
578 ptop_new(i) = ptop(i)
582 IF (k<=ktop(i) .AND. ptop_new(i)==ptop(i) .AND. &
583 dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min)
THEN
584 ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
585 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
591 ptop(i) = ptop_new(i)
596 IF (ph(i,k+1)<ptop(i)) ktop(i) = k
604 IF (k>=kupper(i))
THEN
616 IF (k<=kupper(i))
THEN
617 dp_omgb(i, k) = (omgb(i,k+1)-omgb(i,k))/(ph(i,k+1)-ph(i,k))
630 sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
636 dz(i) = -(amax1(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
639 sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
640 sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
641 sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
642 sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
643 sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
644 sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
645 sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
646 sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
647 sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
665 av_thu(i) = sum_thu(i)/hw0(i)
666 av_tu(i) = sum_tu(i)/hw0(i)
667 av_qu(i) = sum_qu(i)/hw0(i)
668 av_thvu(i) = sum_thvu(i)/hw0(i)
670 av_dth(i) = sum_dth(i)/hw0(i)
671 av_dq(i) = sum_dq(i)/hw0(i)
672 av_rho(i) = sum_rho(i)/hw0(i)
673 av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
674 av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
676 wape(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)*av_qu(i &
677 )+av_dth(i)*av_dq(i)))/av_thvu(i)
700 sigmaw(i) = amax1(sigmad, sigd_con(i))
704 cstar(i) = stark*sqrt(2.*wape(i))
713 q0_min(i) = min((qe(i,1)-sigmaw(i)*deltaqw(i,1)), (qe(i, &
714 1)+(1.-sigmaw(i))*deltaqw(i,1)))
718 q1_min(i) = min((qe(i,k)-sigmaw(i)*deltaqw(i,k)), (qe(i, &
719 k)+(1.-sigmaw(i))*deltaqw(i,k)))
720 IF (q1_min(i)<=q0_min(i))
THEN
721 q0_min(i) = q1_min(i)
727 ok_qx_qw(i) = q0_min(i) >= 0.
736 dtimesub = dtime/nsub
739 DO isubstep = 1, nsub
745 wk_adv(i) = ok_qx_qw(i) .AND. alpha(i) >= 1.
755 IF (wk_adv(i) .AND. cstar(i)>0.01)
THEN
756 omg(i, kupper(i)+1) = -
rg*amdwn(i, kupper(i)+1)/sigmaw(i) + &
757 rg*amup(i, kupper(i)+1)/(1.-sigmaw(i))
758 wdens0 = (sigmaw(i)/(4.*3.14))*((1.-sigmaw(i))*omg(i,kupper(i)+1)/(( &
759 ph(i,1)-pupper(i))*cstar(i)))**(2)
760 IF (wdens(i)<=wdens0*1.1)
THEN
774 gfl(i) = 2.*sqrt(3.14*wdens(i)*sigmaw(i))
775 sigmaw(i) = amin1(sigmaw(i), sigmaw_max)
783 IF (sigmaw(i)>=sigmaw_max)
THEN
784 death_rate(i) = gfl(i)*cstar(i)/sigmaw(i)
788 d_sigmaw(i) = gfl(i)*cstar(i)*dtimesub - death_rate(i)*sigmaw(i)* &
813 dp_deltomg(i, k) = 0.
829 dp_deltomg(i, 1) = -(gfl(i)*cstar(i))/(sigmaw(i)*(1-sigmaw(i)))
835 IF (wk_adv(i) .AND. k<=ktop(i))
THEN
836 dz(i) = -(ph(i,k)-ph(i,k-1))/(rho(i,k-1)*
rg)
838 dp_deltomg(i, k) = dp_deltomg(i, 1)
839 omg(i, k) = dp_deltomg(i, 1)*z(i)
846 dztop(i) = -(ptop(i)-ph(i,ktop(i)))/(rho(i,ktop(i))*
rg)
847 ztop(i) = z(i) + dztop(i)
848 omgtop(i) = dp_deltomg(i, 1)*ztop(i)
858 omgtop(i) = -rho(i, ktop(i))*
rg*omgtop(i)
859 dp_deltomg(i, 1) = omgtop(i)/(ptop(i)-ph(i,1))
865 IF (wk_adv(i) .AND. k<=ktop(i))
THEN
866 omg(i, k) = -rho(i, k)*
rg*omg(i, k)
867 dp_deltomg(i, k) = dp_deltomg(i, 1)
875 IF (wk_adv(i) .AND. kupper(i)>ktop(i))
THEN
876 omg(i, kupper(i)+1) = -
rg*amdwn(i, kupper(i)+1)/sigmaw(i) + &
877 rg*amup(i, kupper(i)+1)/(1.-sigmaw(i))
878 dp_deltomg(i, kupper(i)) = (omgtop(i)-omg(i,kupper(i)+1))/ &
892 IF (wk_adv(i) .AND. k>ktop(i) .AND. k<=kupper(i))
THEN
893 dp_deltomg(i, k) = dp_deltomg(i, kupper(i))
894 omg(i, k) = omgtop(i) + (ph(i,k)-ptop(i))*dp_deltomg(i, kupper(i))
911 omgbw(i, k) = omgb(i, k) + (1.-sigmaw(i))*omg(i, k)
920 dp_omgbw(i, k) = (omgbw(i,k+1)-omgbw(i,k))/(ph(i,k+1)-ph(i,k))
932 IF (omgb(i,k)>0.) alpha_up(i, k) = 1.
941 rre1(i) = 1. - sigmaw(i)
952 IF (wk_adv(i) .AND. k<=kupper(i)+1)
THEN
953 dth(i, k) = deltatw(i, k)/ppi(i, k)
954 th1(i, k) = the(i, k) - sigmaw(i)*dth(i, k)
955 th2(i, k) = the(i, k) + (1.-sigmaw(i))*dth(i, k)
956 q1(i, k) = qe(i, k) - sigmaw(i)*deltaqw(i, k)
957 q2(i, k) = qe(i, k) + (1.-sigmaw(i))*deltaqw(i, k)
975 IF (wk_adv(i) .AND. k<=kupper(i)+1)
THEN
976 d_th1(i, k) = th1(i, k-1) - th1(i, k)
977 d_th2(i, k) = th2(i, k-1) - th2(i, k)
978 d_dth(i, k) = dth(i, k-1) - dth(i, k)
979 d_q1(i, k) = q1(i, k-1) - q1(i, k)
980 d_q2(i, k) = q2(i, k-1) - q2(i, k)
981 d_dq(i, k) = deltaqw(i, k-1) - deltaqw(i, k)
995 IF (wk_adv(i) .AND. k<=kupper(i)+1)
THEN
996 omgbdth(i, k) = omgb(i, k)*(dth(i,k-1)-dth(i,k))
997 omgbdq(i, k) = omgb(i, k)*(deltaqw(i,k-1)-deltaqw(i,k))
1005 IF (wk_adv(i) .AND. k<=kupper(i)-1)
THEN
1010 d_deltatw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* &
1011 (rrd1*omg(i,k)*sigmaw(i)*d_th1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( &
1012 i))*d_th2(i,k+1)-(1.-alpha_up(i,k))*omgbdth(i,k)-alpha_up(i,k+1)* &
1013 omgbdth(i,k+1))*ppi(i, k)
1016 d_deltaqw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* &
1017 (rrd1*omg(i,k)*sigmaw(i)*d_q1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( &
1018 i))*d_q2(i,k+1)-(1.-alpha_up(i,k))*omgbdq(i,k)-alpha_up(i,k+1)* &
1029 d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, &
1030 k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/(ph(i,k)-ph(i, &
1033 -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*(omg(i,k)-omg(i,k+1))/(ph(i, &
1037 d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, &
1038 k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/(ph(i,k)-ph(i, &
1041 -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*(omg(i,k)-omg(i, &
1042 k+1))/(ph(i,k)-ph(i,k+1)) &
1045 ELSE IF (wk_adv(i) .AND. k==kupper(i))
THEN
1046 d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, &
1047 k)/(ph(i,k)-ph(i,k+1))))*ppi(i, k)
1049 d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, &
1050 k)/(ph(i,k)-ph(i,k+1))))
1063 IF (wk_adv(i) .AND. k<=kupper(i))
THEN
1070 crep(i, k) = crep_sol*(ph(i,kupper(i))-ph(i,k))/ &
1071 (ph(i,kupper(i))-ph(i,1))
1072 crep(i, k) = crep(i, k) + crep_upper*(ph(i,1)-ph(i,k))/(p(i,1)-ph(i &
1092 dtke(i, k) = (dtdwn(i,k)/sigmaw(i)-dta(i,k)/(1.-sigmaw(i)))
1093 dqke(i, k) = (dqdwn(i,k)/sigmaw(i)-dqa(i,k)/(1.-sigmaw(i)))
1119 entr(i, k) = detr(i, k) + gfl(i)*cstar(i) + &
1120 sigmaw(i)*(1.-sigmaw(i))*dp_deltomg(i, k)
1122 spread(i, k) = (entr(i,k)-detr(i,k))/sigmaw(i)
1133 d_deltat_gw(i, k) = d_deltat_gw(i, k) - tgw(i, k)*deltatw(i, k)* &
1136 ff(i) = d_deltatw(i, k)/dtimesub
1149 IF (dtimesub*tgw(i,k)<1.e-10)
THEN
1150 d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k)+dtpbl(i,k) &
1153 -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( &
1154 i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) &
1155 -tgw(i,k)*deltatw(i,k))
1157 d_deltatw(i, k) = 1/tgw(i, k)*(1-exp(-dtimesub*tgw(i, &
1158 k)))*(ff(i)+dtke(i,k)+dtpbl(i,k) &
1160 -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( &
1161 i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) &
1162 -tgw(i,k)*deltatw(i,k))
1165 dth(i, k) = deltatw(i, k)/ppi(i, k)
1167 gg(i) = d_deltaqw(i, k)/dtimesub
1169 d_deltaqw(i, k) = dtimesub*(gg(i)+dqke(i,k)+dqpbl(i,k) &
1171 -entr(i,k)*deltaqw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw(i)+detr( &
1172 i,k))*deltaqw(i,k)/(1.-sigmaw(i)))
1187 d_deltaqw, sigmaw, d_sigmaw, alpha)
1197 IF (wk_adv(i) .AND. k<=kupper(i))
THEN
1198 d_te(i, k) = alpha(i)*d_te(i, k)
1199 d_qe(i, k) = alpha(i)*d_qe(i, k)
1200 d_deltatw(i, k) = alpha(i)*d_deltatw(i, k)
1201 d_deltaqw(i, k) = alpha(i)*d_deltaqw(i, k)
1202 d_deltat_gw(i, k) = alpha(i)*d_deltat_gw(i, k)
1208 d_sigmaw(i) = alpha(i)*d_sigmaw(i)
1217 IF (wk_adv(i) .AND. k<=kupper(i))
THEN
1218 dtls(i, k) = dtls(i, k) + d_te(i, k)
1219 dqls(i, k) = dqls(i, k) + d_qe(i, k)
1221 d_deltatw2(i, k) = d_deltatw2(i, k) + d_deltatw(i, k)
1222 d_deltaqw2(i, k) = d_deltaqw2(i, k) + d_deltaqw(i, k)
1229 IF (wk_adv(i) .AND. k<=kupper(i))
THEN
1230 te(i, k) = te0(i, k) + dtls(i, k)
1231 qe(i, k) = qe0(i, k) + dqls(i, k)
1232 the(i, k) = te(i, k)/ppi(i, k)
1233 deltatw(i, k) = deltatw(i, k) + d_deltatw(i, k)
1234 deltaqw(i, k) = deltaqw(i, k) + d_deltaqw(i, k)
1235 dth(i, k) = deltatw(i, k)/ppi(i, k)
1243 sigmaw(i) = sigmaw(i) + d_sigmaw(i)
1255 ptop_provis(i) = ph(i, 1)
1261 IF (wk_adv(i) .AND. ptop_provis(i)==ph(i,1) .AND. &
1262 dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min)
THEN
1263 ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
1264 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
1274 dthmin(i) = -delta_t_min
1282 dz(i) = -(amax1(ph(i,k+1),ptop_provis(i))-ph(i,k))/(rho(i,k)*
rg)
1285 sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
1286 dthmin(i) = amin1(dthmin(i), dth(i,k))
1296 hw(i) = 2.*sum_dth(i)/amin1(dthmin(i), -0.5)
1297 hw(i) = amax1(hwmin, hw(i))
1313 dz(i) = amin1(-(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg), hw(i)-z(i))
1316 ptop(i) = ph(i, k) - rho(i, k)*
rg*dz(i)
1327 ptop_new(i) = ptop(i)
1334 IF (wk_adv(i) .AND. k<=ktop(i) .AND. ptop_new(i)==ptop(i) .AND. &
1335 dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min)
THEN
1336 ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
1337 k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
1345 ptop(i) = ptop_new(i)
1352 IF (ph(i,k+1)<ptop(i)) ktop(i) = k
1361 IF (wk_adv(i) .AND. k>=kupper(i))
THEN
1403 sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
1411 dz(i) = -(max(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
1414 sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
1415 sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
1416 sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
1417 sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
1418 sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
1419 sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
1420 sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
1421 sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
1422 sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
1444 av_thu(i) = sum_thu(i)/hw0(i)
1445 av_tu(i) = sum_tu(i)/hw0(i)
1446 av_qu(i) = sum_qu(i)/hw0(i)
1447 av_thvu(i) = sum_thvu(i)/hw0(i)
1448 av_dth(i) = sum_dth(i)/hw0(i)
1449 av_dq(i) = sum_dq(i)/hw0(i)
1450 av_rho(i) = sum_rho(i)/hw0(i)
1451 av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
1452 av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
1454 wape(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)* &
1455 av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
1464 IF (wape(i)<0.)
THEN
1475 IF (wape(i)<0.)
THEN
1479 sigmaw(i) = max(sigmad, sigd_con(i))
1483 cstar(i) = stark*sqrt(2.*wape(i))
1498 IF (ok_qx_qw(i) .AND. k<=kupper(i))
THEN
1500 dtls(i, k) = dtls(i, k)/dtime
1501 dqls(i, k) = dqls(i, k)/dtime
1502 d_deltatw2(i, k) = d_deltatw2(i, k)/dtime
1503 d_deltaqw2(i, k) = d_deltaqw2(i, k)/dtime
1504 d_deltat_gw(i, k) = d_deltat_gw(i, k)/dtime
1522 IF (ok_qx_qw(i))
THEN
1552 IF (ok_qx_qw(i))
THEN
1554 rho(i, k) = p(i, k)/(rd*te(i,k))
1556 rhoh(i, k) = ph(i, k)/(rd*te(i,k))
1559 rhoh(i, k) = ph(i, k)*2./(rd*(te(i,k)+te(i,k-1)))
1560 zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*
rg) + zhh(i, k-1)
1562 the(i, k) = te(i, k)/ppi(i, k)
1563 thu(i, k) = (te(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
1564 tu(i, k) = te(i, k) - deltatw(i, k)*sigmaw(i)
1565 qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
1566 rhow(i, k) = p(i, k)/(rd*(te(i,k)+deltatw(i,k)))
1567 dth(i, k) = deltatw(i, k)/ppi(i, k)
1579 IF (ok_qx_qw(i))
THEN
1583 sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
1591 IF (ok_qx_qw(i))
THEN
1593 dz(i) = -(amax1(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
1596 sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
1597 sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
1598 sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
1599 sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
1600 sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
1601 sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
1602 sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
1603 sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
1604 sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
1612 IF (ok_qx_qw(i))
THEN
1625 IF (ok_qx_qw(i))
THEN
1627 av_thu(i) = sum_thu(i)/hw0(i)
1628 av_tu(i) = sum_tu(i)/hw0(i)
1629 av_qu(i) = sum_qu(i)/hw0(i)
1630 av_thvu(i) = sum_thvu(i)/hw0(i)
1631 av_dth(i) = sum_dth(i)/hw0(i)
1632 av_dq(i) = sum_dq(i)/hw0(i)
1633 av_rho(i) = sum_rho(i)/hw0(i)
1634 av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
1635 av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
1637 wape2(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)* &
1638 av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
1650 IF (ok_qx_qw(i) .AND. wape2(i)<0.)
THEN
1662 IF (ok_qx_qw(i))
THEN
1664 IF (wape2(i)<0.)
THEN
1668 sigmaw(i) = amax1(sigmad, sigd_con(i))
1673 cstar2(i) = stark*sqrt(2.*wape2(i))
1681 IF (ok_qx_qw(i))
THEN
1689 IF (ok_qx_qw(i))
THEN
1691 IF (ktopw(i)>0 .AND. gwake(i))
THEN
1699 fip(i) = 0.5*rho(i, ktopw(i))*cstar2(i)**3*heff(i)*2* &
1700 sqrt(sigmaw(i)*wdens(i)*3.14)
1701 fip(i) = alpk*fip(i)
1724 IF (((wape(i)>=wape2(i)) .AND. (wape2(i)<=1.0)) .OR. (ktopw(i)<=2) .OR. &
1725 .NOT. ok_qx_qw(i))
THEN
1737 IF (((wape(i)>=wape2(i)) .AND. (wape2(i)<=1.0)) .OR. (ktopw(i)<=2) .OR. &
1738 .NOT. ok_qx_qw(i))
THEN
1749 cstar(i) = cstar2(i)
1760 d_deltaqw, sigmaw, d_sigmaw,
alpha)
1769 REAL qe(nlon,
nl), d_qe(nlon,
nl)
1770 REAL deltaqw(nlon,
nl), d_deltaqw(nlon,
nl)
1771 REAL sigmaw(nlon), d_sigmaw(nlon)
1772 LOGICAL wk_adv(nlon)
1779 REAL x, a, b, c, discrim
1787 IF ((deltaqw(i,k)+d_deltaqw(i,k))>=0.)
THEN
1796 x = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + d_qe(i, k) + &
1797 (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - d_sigmaw(i)*(deltaqw(i,k)+ &
1799 a = -d_sigmaw(i)*d_deltaqw(i, k)
1800 b = d_qe(i, k) + (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - &
1801 deltaqw(i, k)*d_sigmaw(i)
1802 c = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + epsilon
1803 discrim = b*b - 4.*a*c
1812 alpha1(i) = 0.9*min((2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim &
1814 ELSE IF (a==0.)
THEN
1815 alpha1(i) = 0.9*(-c/b)
1818 alpha1(i) = 0.9*max((2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim &
1823 alpha(i) = min(alpha(i), alpha1(i))
!IM Implemente en modes sequentiel et parallele CALL rlon_glo CALL bcast(rlon_glo)!$OMP MASTER if(is_mpi_root) then!zstophy
!$Id!Thermodynamical constants for t0 real clmci real eps
subroutine err(ierr, typ, nam)
!$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 wake_vec_modulation(nlon, nl, wk_adv, epsilon, qe, d_qe, deltaqw, d_deltaqw, sigmaw, d_sigmaw, alpha)
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
!$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
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param nlm spfac &!IM cf ptcrit omtrain dttrig alpha
subroutine wake(p, ph, pi, dtime, sigd_con, te0, qe0, omgb, dtdwn, dqdwn, amdwn, amup, dta, dqa, wdtpbl, wdqpbl, udtpbl, udqpbl, deltatw, deltaqw, dth, hw, sigmaw, wape, fip, gfl, dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, qu, dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, d_deltat_gw, d_deltatw2, d_deltaqw2)