4 SUBROUTINE cva_driver(len, nd, ndp1, ntra, nloc, k_upper, &
7 delt, comp_threshold, &
8 t1, q1, qs1, t1_wake, q1_wake, qs1_wake, s1_wake, &
12 sig1feed1, sig2feed1, wght1, &
13 iflag1, ft1, fq1, fu1, fv1, ftra1, &
14 precip1, kbas1, ktop1, &
15 cbmf1, plcl1, plfc1, wbeff1, &
18 ma1, mip1, vprecip1, vprecipi1, upwd1, dnwd1, dnwd01, &
22 plim11, plim21, asupmax1, supmax01, asupmaxmin1, &
26 da1, phi1, mp1, phi21, d1a1, dam1, sigij1, wghti1, &
27 clw1, elij1, evap1, ep1, epmlmmm1, eplamm1, &
28 wdtraina1, wdtrainm1, qtc1, sigt1,
tau_cld_cv, &
164 INTEGER,
INTENT (IN) :: len
165 INTEGER,
INTENT (IN) :: nd
166 INTEGER,
INTENT (IN) :: ndp1
167 INTEGER,
INTENT (IN) :: ntra
168 INTEGER,
INTENT(IN) :: nloc
169 INTEGER,
INTENT (IN) :: k_upper
170 INTEGER,
INTENT (IN) :: iflag_con
171 INTEGER,
INTENT (IN) :: iflag_mix
172 INTEGER,
INTENT (IN) :: iflag_ice_thermo
173 INTEGER,
INTENT (IN) :: iflag_clos
174 LOGICAL,
INTENT (IN) :: ok_conserv_q
175 REAL,
INTENT (IN) :: tau_cld_cv
176 REAL,
INTENT (IN) :: coefw_cld_cv
177 REAL,
INTENT (IN) :: delt
178 REAL,
INTENT (IN) :: comp_threshold
179 REAL,
DIMENSION (len, nd),
INTENT (IN) :: t1
180 REAL,
DIMENSION (len, nd),
INTENT (IN) :: q1
181 REAL,
DIMENSION (len, nd),
INTENT (IN) :: qs1
182 REAL,
DIMENSION (len, nd),
INTENT (IN) :: t1_wake
183 REAL,
DIMENSION (len, nd),
INTENT (IN) :: q1_wake
184 REAL,
DIMENSION (len, nd),
INTENT (IN) :: qs1_wake
185 REAL,
DIMENSION (len),
INTENT (IN) :: s1_wake
186 REAL,
DIMENSION (len, nd),
INTENT (IN) :: u1
187 REAL,
DIMENSION (len, nd),
INTENT (IN) :: v1
188 REAL,
DIMENSION (len, nd, ntra),
INTENT (IN) :: tra1
189 REAL,
DIMENSION (len, nd),
INTENT (IN) :: p1
190 REAL,
DIMENSION (len, ndp1),
INTENT (IN) :: ph1
191 REAL,
DIMENSION (len),
INTENT (IN) :: Ale1
192 REAL,
DIMENSION (len),
INTENT (IN) :: Alp1
193 REAL,
DIMENSION (len, nd),
INTENT (IN) :: omega1
194 REAL,
INTENT (IN) :: sig1feed1
195 REAL,
INTENT (IN) :: sig2feed1
196 REAL,
DIMENSION (nd),
INTENT (IN) :: wght1
197 INTEGER,
DIMENSION (len),
INTENT (IN) :: lalim_conv1
200 REAL,
DIMENSION (len, nd),
INTENT (INOUT) :: sig1
201 REAL,
DIMENSION (len, nd),
INTENT (INOUT) :: w01
204 INTEGER,
DIMENSION (len),
INTENT (OUT) :: iflag1
205 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: ft1
206 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: fq1
207 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: fu1
208 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: fv1
209 REAL,
DIMENSION (len, nd, ntra),
INTENT (OUT) :: ftra1
210 REAL,
DIMENSION (len),
INTENT (OUT) :: precip1
211 INTEGER,
DIMENSION (len),
INTENT (OUT) :: kbas1
212 INTEGER,
DIMENSION (len),
INTENT (OUT) :: ktop1
213 REAL,
DIMENSION (len),
INTENT (OUT) :: cbmf1
214 REAL,
DIMENSION (len),
INTENT (OUT) :: plcl1
215 REAL,
DIMENSION (len),
INTENT (OUT) :: plfc1
216 REAL,
DIMENSION (len),
INTENT (OUT) :: wbeff1
217 REAL,
DIMENSION (len),
INTENT (OUT) :: ptop21
218 REAL,
DIMENSION (len),
INTENT (OUT) :: sigd1
219 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: ma1
220 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: mip1
222 REAL,
DIMENSION (len, ndp1),
INTENT (OUT) :: vprecip1
223 REAL,
DIMENSION (len, ndp1),
INTENT (OUT) :: vprecipi1
224 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: upwd1
225 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: dnwd1
226 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: dnwd01
227 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: qcondc1
228 REAL,
DIMENSION (len),
INTENT (OUT) :: wd1
229 REAL,
DIMENSION (len),
INTENT (OUT) :: cape1
230 REAL,
DIMENSION (len),
INTENT (OUT) :: cin1
231 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: tvp1
237 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: ftd1
238 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: fqd1
239 REAL,
DIMENSION (len),
INTENT (OUT) :: Plim11
240 REAL,
DIMENSION (len),
INTENT (OUT) :: Plim21
241 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: asupmax1
242 REAL,
DIMENSION (len),
INTENT (OUT) :: supmax01
243 REAL,
DIMENSION (len),
INTENT (OUT) :: asupmaxmin1
244 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: qtc1
245 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: sigt1
248 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: wdtrainA1, wdtrainM1
249 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: da1, mp1
250 REAL,
DIMENSION (len, nd, nd),
INTENT (OUT) :: phi1
251 REAL,
DIMENSION (len, nd, nd),
INTENT (OUT) :: epmlmMm1
252 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: eplaMm1
253 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: evap1, ep1
254 REAL,
DIMENSION (len, nd, nd),
INTENT (OUT) :: sigij1, elij1
256 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: wghti1
258 REAL,
DIMENSION (len, nd, nd),
INTENT (OUT) :: phi21
259 REAL,
DIMENSION (len, nd),
INTENT (OUT) :: d1a1, dam1
391 INTEGER i, k, n, il, j
392 INTEGER nword1, nword2, nword3, nword4
399 LOGICAL,
SAVE :: debut = .
true.
402 REAL coef_convective(len)
446 INTEGER iflag(nloc), nk(nloc), icb(nloc)
447 INTEGER nent(nloc,
klev)
449 INTEGER inb(nloc), inbis(nloc)
451 REAL cbmf(nloc), plcl(nloc), plfc(nloc), wbeff(nloc)
453 REAL t_wake(nloc,
klev), q_wake(nloc,
klev), qs_wake(nloc,
klev)
457 REAL h_wake(nloc,
klev), hm_wake(nloc,
klev)
459 REAL lv_wake(nloc,
klev), lf_wake(nloc,
klev), cpn_wake(nloc,
klev)
461 REAL tv_wake(nloc,
klev)
464 REAL pbase(nloc), buoybase(nloc), th(nloc,
klev)
465 REAL th_wake(nloc,
klev)
467 REAL sig(nloc,
klev), w0(nloc,
klev), ptop2(nloc)
469 REAL buoy(nloc,
klev)
479 REAL supmax(nloc,
klev)
480 REAL Ale(nloc), Alp(nloc), coef_clos(nloc)
481 REAL omega(nloc,
klev)
487 REAL,
SAVE,
ALLOCATABLE :: mp(:, :), qp(:, :), up(:, :), vp(:, :)
488 REAL,
SAVE,
ALLOCATABLE :: wt(:, :), water(:, :), evap(:, :)
489 REAL,
SAVE,
ALLOCATABLE :: ice(:, :), fondue(:, :), b(:, :)
490 REAL,
SAVE,
ALLOCATABLE :: frac(:, :), faci(:, :)
493 REAL ftd(nloc,
klev), fqd(nloc,
klev)
495 REAL upwd(nloc,
klev), dnwd(nloc,
klev), dnwd0(nloc,
klev)
496 REAL ma(nloc,
klev), mip(nloc,
klev)
498 REAL qprime(nloc), tprime(nloc)
501 REAL vprecip(nloc,
klev+1)
502 REAL vprecipi(nloc,
klev+1)
503 REAL tra(nloc,
klev, ntra), trap(nloc,
klev, ntra)
504 REAL ftra(nloc,
klev, ntra), traent(nloc,
klev,
klev, ntra)
505 REAL qcondc(nloc,
klev)
507 REAL Plim1(nloc), plim2(nloc)
508 REAL asupmax(nloc,
klev)
510 REAL asupmaxmin(nloc)
512 REAL tnk(nloc), qnk(nloc), gznk(nloc)
514 REAL hnk(nloc), unk(nloc), vnk(nloc)
517 REAL sigt(nloc,
klev)
520 REAL wdtrainA(nloc,
klev), wdtrainM(nloc,
klev)
521 REAL da(len, nd), phi(len, nd, nd)
523 REAL phi2(len, nd, nd)
524 REAL d1a(len, nd), dam(len, nd)
527 LOGICAL,
SAVE :: first = .
true.
529 CHARACTER (LEN=20) :: modname =
'cva_driver'
530 CHARACTER (LEN=80) :: abort_message
532 INTEGER,
SAVE :: igout=1
545 ALLOCATE (vp(nloc,
klev), wt(nloc,
klev), water(nloc,
klev))
546 ALLOCATE (ice(nloc,
klev), fondue(nloc,
klev))
547 ALLOCATE (evap(nloc,
klev), b(nloc,
klev))
548 ALLOCATE (frac(nloc,
klev), faci(nloc,
klev))
567 IF (iflag_con==3)
THEN
572 IF (iflag_con==4)
THEN
624 IF (iflag_con==3)
THEN
626 sig1(il, nd) = sig1(il, nd) + 1.
627 sig1(il, nd) = amin1(sig1(il,nd), 12.1)
638 epmlmmm1(:, :, :) = 0.
662 IF (iflag_con==3)
THEN
665 print *,
'Emanuel version 3 nouvelle'
668 CALL cv3_prelim(len, nd, ndp1, t1, q1, p1, ph1, &
669 lv1, lf1, cpn1, tv1, gz1, h1, hm1, th1)
672 CALL cv3_prelim(len, nd, ndp1, t1_wake, q1_wake, p1, ph1, &
673 lv1_wake, lf1_wake, cpn1_wake, tv1_wake, gz1_wake, &
674 h1_wake, bid, th1_wake)
678 IF (iflag_con==4)
THEN
679 print *,
'Emanuel version 4 '
680 CALL cv_prelim(len, nd, ndp1, t1, q1, p1, ph1, &
681 lv1, cpn1, tv1, gz1, h1, hm1)
693 IF (sig1feed1==sig2feed1)
THEN
694 WRITE (
lunout, *)
'impossible de choisir sig1feed=sig2feed'
695 WRITE (
lunout, *)
'changer la valeur de sig2feed dans physiq.def'
701 p1feed1(i) = sig1feed1*ph1(i, 1)
702 p2feed1(i) = sig2feed1*ph1(i, 1)
712 IF (iflag_con==3)
THEN
717 IF (iflag_con==3)
THEN
723 CALL cv3_feed(len, nd, ok_conserv_q, &
724 t1, q1, u1, v1, p1, ph1, hm1, gz1, &
725 p1feed1, p2feed1, wght1, &
726 wghti1, tnk1, thnk1, qnk1, qsnk1, unk1, vnk1, &
727 cpnk1, hnk1, nk1, icb1, icbmax, iflag1, gznk1, plcl1)
734 IF (iflag_con==4)
THEN
735 CALL cv_feed(len, nd, t1, q1, qs1, p1, hm1, gz1, &
736 nk1, icb1, icbmax, iflag1, tnk1, qnk1, gznk1, plcl1)
748 IF (iflag_con==3)
THEN
750 CALL cv3_undilute1(len, nd, t1, qs1, gz1, plcl1, p1, icb1, tnk1, qnk1, &
751 gznk1, tp1, tvp1, clw1, icbs1)
755 IF (iflag_con==4)
THEN
756 CALL cv_undilute1(len, nd, t1, q1, qs1, gz1, p1, nk1, icb1, icbmax, &
766 IF (iflag_con==3)
THEN
768 CALL cv3_trigger(len, nd, icb1, plcl1, p1, th1, tv1, tvp1, thnk1, &
769 pbase1, buoybase1, iflag1, sig1, w01)
779 IF (iflag_con==4)
THEN
780 CALL cv_trigger(len, nd, icb1, cbmf1, tv1, tvp1, iflag1)
792 coef_convective(:) = 0.
794 IF (iflag1(i)==0)
THEN
795 coef_convective(i) = 1.
810 IF (iflag_con==3)
THEN
817 compress = ncum .lt. len*comp_threshold
819 IF (.not. compress)
THEN
827 iflag1, nk1, icb1, icbs1, &
828 plcl1, tnk1, qnk1, gznk1, hnk1, unk1, vnk1, &
829 wghti1, pbase1, buoybase1, &
830 t1, q1, qs1, t1_wake, q1_wake, qs1_wake, s1_wake, &
831 u1, v1, gz1, th1, th1_wake, &
833 h1, lv1, lf1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &
834 h1_wake, lv1_wake, lf1_wake, cpn1_wake, tv1_wake, &
836 ale1, alp1, omega1, &
837 iflag, nk, icb, icbs, &
838 plcl, tnk, qnk, gznk, hnk, unk, vnk, &
839 wghti, pbase, buoybase, &
840 t, q, qs, t_wake, q_wake, qs_wake, s_wake, &
841 u, v, gz, th, th_wake, &
843 h, lv, lf, cpn, p, ph, tv, tp, tvp, clw, &
844 h_wake, lv_wake, lf_wake, cpn_wake, tv_wake, &
853 IF (iflag_con==4)
THEN
856 cbmf1, plcl1, tnk1, qnk1, gznk1, &
857 t1, q1, qs1, u1, v1, gz1, &
858 h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &
860 cbmf, plcl, tnk, qnk, gznk, &
861 t, q, qs, u, v, gz, h, lv, cpn, p, ph, tv, tp, tvp, clw, &
875 IF (iflag_con==3)
THEN
877 tnk, qnk, gznk, hnk, t, q, qs, gz, &
878 p, h, tv, lv, lf, pbase, buoybase, plcl, &
879 inb, tp, tvp, clw, hp, ep, sigp, buoy, &
883 IF (iflag_con==4)
THEN
885 tnk, qnk, gznk, t, q, qs, gz, &
887 inb, inbis, tp, tvp, clw, hp, ep, sigp, frac)
893 IF (iflag_con==3)
THEN
894 IF ((iflag_ice_thermo==1) .AND. (iflag_mix/=0))
THEN
895 WRITE (*, *)
' iflag_ice_thermo==1 requires iflag_mix==0',
' but iflag_mix=', iflag_mix, &
896 '. Might as well stop here.'
899 IF (iflag_mix>=1)
THEN
901 CALL cv3p_mixing(nloc, ncum, nd, nd, ntra, icb, nk, inb, &
902 ph, t, q, qs, u, v, tra, h, lv, qnk, &
903 unk, vnk, hp, tv, tvp, ep, clw, sig, &
904 ment, qent, hent, uent, vent, nent, &
905 sigij, elij, supmax, ments, qents, traent)
917 IF (iflag_con==3)
THEN
918 IF (iflag_clos==0)
THEN
920 pbase, p, ph, tv, buoy, &
921 sig, w0, cape, m, iflag)
924 ok_inhib = iflag_mix == 2
926 IF (iflag_clos==1)
THEN
927 print *,
' pas d appel cv3p_closure'
934 IF (iflag_clos==2)
THEN
936 pbase, plcl, p, ph, tv, tvp, buoy, &
937 supmax, ok_inhib, ale, alp, omega, &
938 sig, w0, ptop2, cape, cin, m, iflag, coef_clos, &
939 plim1, plim2, asupmax, supmax0, &
940 asupmaxmin, cbmf, plfc, wbeff)
942 print *,
'cv3p1_closure-> plfc,wbeff ', plfc(1), wbeff(1)
945 IF (iflag_clos==3)
THEN
947 pbase, plcl, p, ph, tv, tvp, buoy, &
948 supmax, ok_inhib, ale, alp, omega, &
949 sig, w0, ptop2, cape, cin, m, iflag, coef_clos, &
950 plim1, plim2, asupmax, supmax0, &
951 asupmaxmin, cbmf, plfc, wbeff)
953 print *,
'cv3p2_closure-> plfc,wbeff ', plfc(1), wbeff(1)
957 IF (iflag_con==4)
THEN
959 tv, tvp, p, ph, dph, plcl, cpn, &
969 IF (iflag_con==3)
THEN
970 IF (iflag_mix==0)
THEN
971 CALL cv3_mixing(nloc, ncum, nd, nd, ntra, icb, nk, inb, &
972 ph, t, q, qs, u, v, tra, h, lv, lf, frac, qnk, &
973 unk, vnk, hp, tv, tvp, ep, clw, m, sig, &
974 ment, qent, uent, vent, nent, sigij, elij, ments, qents, traent)
979 print *,
' cv3_mixscale-> '
984 IF (iflag_con==4)
THEN
985 CALL cv_mixing(nloc, ncum, nd, icb, nk, inb, inbis, &
986 ph, t, q, qs, u, v, h, lv, qnk, &
987 hp, tv, tvp, ep, clw, cbmf, &
988 m, ment, qent, uent, vent, nent, sigij, elij)
992 print *,
' cv_mixing ->'
1001 IF (iflag_con==3)
THEN
1003 print *,
' cva_driver -> cv3_unsat '
1006 CALL cv3_unsat(nloc, ncum, nd, nd, ntra, icb, inb, iflag, &
1007 t_wake, q_wake, qs_wake, gz, u, v, tra, p, ph, &
1008 th_wake, tv_wake, lv_wake, lf_wake, cpn_wake, &
1010 m, ment, elij, delt, plcl, coef_clos, &
1011 mp, qp, up, vp, trap, wt, water, evap, fondue, ice, &
1016 print *,
'cva_driver after cv3_unsat:mp , water, ice, evap, fondue '
1018 write (6,
'(i4,5(1x,e13.6))'), &
1019 k, mp(idcum(igout),k), water(idcum(igout),k), ice(idcum(igout),k), &
1020 evap(idcum(igout),k), fondue(idcum(igout),k)
1022 print *,
'cva_driver after cv3_unsat: wdtrainA, wdtrainM '
1024 write (6,
'(i4,2(1x,e13.6))'), &
1025 k, wdtraina(idcum(igout),k), wdtrainm(idcum(igout),k)
1031 IF (iflag_con==4)
THEN
1032 CALL cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, &
1033 h, lv, ep, sigp, clw, m, ment, elij, &
1034 iflag, mp, qp, up, vp, wt, water, evap)
1038 print *,
'cv_unsat-> '
1049 IF (iflag_con==3)
THEN
1051 CALL cv3_yield(nloc, ncum, nd, nd, ntra, ok_conserv_q, &
1053 t, q, t_wake, q_wake, s_wake, u, v, tra, &
1054 gz, p, ph, h, hp, lv, lf, cpn, th, th_wake, &
1055 ep, clw, m, tp, mp, qp, up, vp, trap, &
1056 wt, water, ice, evap, fondue, faci, b, sigd, &
1057 ment, qent, hent, iflag_mix, uent, vent, &
1058 nent, elij, traent, sig, &
1060 iflag, precip, vprecip, vprecipi, ft, fq, fu, fv, ftra, &
1061 cbmf, upwd, dnwd, dnwd0, ma, mip, &
1064 ftd, fqd, qnk, qtc, sigt, tau_cld_cv, coefw_cld_cv)
1067 print *,
' cv3_yield -> fqd(1) = ', fqd(idcum(igout), 1)
1071 print *,
'cva_driver after cv3_yield:ft(1) , ftd(1) ', &
1072 ft(idcum(igout),1), ftd(idcum(igout),1)
1073 print *,
'cva_driver after cv3_yield:fq(1) , fqd(1) ', &
1074 fq(idcum(igout),1), fqd(idcum(igout),1)
1079 IF (iflag_con==4)
THEN
1080 CALL cv_yield(nloc, ncum, nd, nk, icb, inb, delt, &
1082 gz, p, ph, h, hp, lv, cpn, &
1083 ep, clw, frac, m, mp, qp, up, vp, &
1085 ment, qent, uent, vent, nent, elij, &
1087 iflag, wd, qprime, tprime, &
1088 precip, cbmf, ft, fq, fu, fv, ma, qcondc)
1096 IF (iflag_con==3)
THEN
1099 ment, sigij, da, phi, phi2, d1a, dam, &
1100 ep, vprecip, elij, clw, epmlmmm, eplamm, &
1112 IF (iflag_con==3)
THEN
1115 precip, cbmf, plcl, plfc, wbeff, sig, w0, ptop2, &
1116 ft, fq, fu, fv, ftra, &
1117 sigd, ma, mip, vprecip, vprecipi, upwd, dnwd, dnwd0, &
1118 qcondc, wd, cape, cin, &
1121 plim1, plim2, asupmax, supmax0, &
1123 da, phi, mp, phi2, d1a, dam, sigij, &
1124 clw, elij, evap, ep, epmlmmm, eplamm, &
1125 wdtraina, wdtrainm, &
1127 iflag1, kbas1, ktop1, &
1128 precip1, cbmf1, plcl1, plfc1, wbeff1, sig1, w01, ptop21, &
1129 ft1, fq1, fu1, fv1, ftra1, &
1130 sigd1, ma1, mip1, vprecip1, vprecipi1, upwd1, dnwd1, dnwd01, &
1131 qcondc1, wd1, cape1, cin1, &
1134 plim11, plim21, asupmax1, supmax01, &
1136 da1, phi1, mp1, phi21, d1a1, dam1, sigij1, &
1137 clw1, elij1, evap1, ep1, epmlmmm1, eplamm1, &
1138 wdtraina1, wdtrainm1, &
1142 IF (iflag_con==4)
THEN
1150 ft1, fq1, fu1, fv1, &
1160 sig1(:, k) = sig1(:, k)*coef_convective(:)
1161 w01(:, k) = w01(:, k)*coef_convective(:)
1165 print *,
' cv_uncompress -> '
subroutine cv3p1_closure(nloc, ncum, nd, icb, inb, pbase, plcl, p, ph, tv, tvp, buoy, supmax, ok_inhib, ale, alp, omega, sig, w0, ptop2, cape, cin, m, iflag, coef, plim1, plim2, asupmax, supmax0, asupmaxmin, cbmf, plfc, wbeff)
subroutine cv3_mixscale(nloc, ncum, na, ment, m)
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_con
subroutine cva_driver(len, nd, ndp1, ntra, nloc, k_upper,iflag_con, iflag_mix, iflag_ice_thermo, iflag_clos, ok_conserv_q,
subroutine cv_closure(nloc, ncum, nd, nk, icb, tv, tvp, p, ph, dph, plcl, cpn, iflag, cbmf)
subroutine cv3_prelim(len, nd, ndp1, t, q, p, ph, lv, lf, cpn, tv, gz, h, hm, th)
subroutine cv_mixing(nloc, ncum, nd, icb, nk, inb, inb1, ph, t, q, qs, u, v, h, lv, qnk, hp, tv, tvp, ep, clw, cbmf, m, ment, qent, uent, vent, nent, sij, elij)
subroutine cv3_feed(len, nd, ok_conserv_q, t, q, u, v, p, ph, hm, gz, p1feed, p2feed, wght, wghti, tnk, thnk, qnk, qsnk, unk, vnk, cpnk, hnk, nk, icb, icbmax, iflag, gznk, plcl)
subroutine cv_compress(len, nloc, ncum, nd, iflag1, nk1, icb1, cbmf1, plcl1, tnk1, qnk1, gznk1, t1, q1, qs1, u1, v1, gz1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, iflag, nk, icb, cbmf, plcl, tnk, qnk, gznk, t, q, qs, u, v, gz, h, lv, cpn, p, ph, tv, tp, tvp, clw, dph)
subroutine cv3_unsat(nloc, ncum, nd, na, ntra, icb, inb, iflag, t, rr, rs, gz, u, v, tra, p, ph, th, tv, lv, lf, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, coef_clos, mp, rp, up, vp, trap, wt, water, evap, fondue, ice, faci, b, sigd, wdtrainA, wdtrainM)
subroutine cv3_undilute1(len, nd, t, qs, gz, plcl, p, icb, tnk, qnk, gznk, tp, tvp, clw, icbs)
subroutine cv_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm)
!$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 cv3_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, u, v, tra, h, lv, lf, frac, qnk, unk, vnk, hp, tv, tvp, ep, clw, m, sig, ment, qent, uent, vent, nent, sij, elij, ments, qents, traent)
subroutine cv_trigger(len, nd, icb, cbmf, tv, tvp, iflag)
subroutine cv_undilute2(nloc, ncum, nd, icb, nk, tnk, qnk, gznk, t, q, qs, gz, p, dph, h, tv, lv, inb, inb1, tp, tvp, clw, hp, ep, sigp, frac)
subroutine cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, h, lv, ep, sigp, clw, m, ment, elij, iflag, mp, qp, up, vp, wt, water, evap)
subroutine cv3_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, sig, w0, cape, m, iflag)
INTEGER iflag_mix REAL scut REAL Supcrit2 REAL coef_clos_ls!COMMON YOMCST2 iflag_mix
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
subroutine cv3_tracer(nloc, len, ncum, nd, na, ment, sigij, da, phi, phi2, d1a, dam, ep, Vprecip, elij, clw, epmlmMm, eplaMm, icb, inb)
subroutine cv3a_compress(len, nloc, ncum, nd, ntra, compress, iflag1, nk1, icb1, icbs1, plcl1, tnk1, qnk1, gznk1, hnk1, unk1, vnk1, wghti1, pbase1, buoybase1, t1, q1, qs1, t1_wake, q1_wake, qs1_wake, s1_wake, u1, v1, gz1, th1, th1_wake, tra1, h1, lv1, lf1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, h1_wake, lv1_wake, lf1_wake, cpn1_wake, tv1_wake, sig1, w01, ptop21, Ale1, Alp1, omega1, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, hnk, unk, vnk, wghti, pbase, buoybase, t, q, qs, t_wake, q_wake, qs_wake, s_wake, u, v, gz, th, th_wake, tra, h, lv, lf, cpn, p, ph, tv, tp, tvp, clw, h_wake, lv_wake, lf_wake, cpn_wake, tv_wake, sig, w0, ptop2, Ale, Alp, omega)
subroutine cv3_trigger(len, nd, icb, plcl, p, th, tv, tvp, thnk, pbase, buoybase, iflag, sig, w0)
subroutine cv3p_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, u, v, tra, h, lv, qnk, unk, vnk, hp, tv, tvp, ep, clw, sig, Ment, Qent, hent, uent, vent, nent, Sigij, elij, supmax, Ments, Qents, traent)
!$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 t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom coefw_cld_cv
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL tau_cld_cv
subroutine cv_undilute1(len, nd, t, q, qs, gz, p, nk, icb, icbmax, tp, tvp, clw)
subroutine cv3_undilute2(nloc, ncum, nd, icb, icbs, nk, tnk, qnk, gznk, hnk, t, q, qs, gz, p, h, tv, lv, lf, pbase, buoybase, plcl, inb, tp, tvp, clw, hp, ep, sigp, buoy, frac)
subroutine cv3_yield(nloc, ncum, nd, na, ntra, ok_conserv_q,icb, inb, delt,t, rr, t_wake, rr_wake, s_wake, u, v, tra,gz, p, ph, h, hp, lv, lf, cpn, th, th_wake,ep, clw, m, tp, mp, rp, up, vp, trap,wt, water, ice, evap, fondue, faci, b, sigd,ment, qent, hent, iflag_mix, uent, vent,nent, elij, traent, sig,tv, tvp, wghti,iflag, precip, Vprecip, Vprecipi,ft, fr, fu, fv, ftra,cbmf, upwd, dnwd, dnwd0, ma, mip,
subroutine cv_thermo(iflag_con)
subroutine cv_yield(nloc, ncum, nd, nk, icb, inb, delt, t, q, u, v, gz, p, ph, h, hp, lv, cpn, ep, clw, frac, m, mp, qp, up, vp, wt, water, evap, ment, qent, uent, vent, nent, elij, tv, tvp, iflag, wd, qprime, tprime, precip, cbmf, ft, fq, fu, fv, ma, qcondc)
subroutine cv_flag(iflag_ice_thermo)
subroutine cv_uncompress(nloc, len, ncum, nd, idcum, iflag, precip, cbmf, ft, fq, fu, fv, ma, qcondc, iflag1, precip1, cbmf1, ft1, fq1, fu1, fv1, ma1, qcondc1)
subroutine cv3p2_closure(nloc, ncum, nd, icb, inb, pbase, plcl, p, ph, tv, tvp, buoy, supmax, ok_inhib, ale, alp, omega, sig, w0, ptop2, cape, cin, m, iflag, coef, plim1, plim2, asupmax, supmax0, asupmaxmin, cbmflast, plfc, wbeff)
subroutine cv_feed(len, nd, t, q, qs, p, hm, gz, nk, icb, icbmax, iflag, tnk, qnk, gznk, plcl)
subroutine abort_physic(modname, message, ierr)
subroutine cv3a_uncompress(nloc, len, ncum, nd, ntra, idcum, compress,iflag, kbas, ktop,precip, cbmf, plcl, plfc, wbeff, sig, w0, ptop2,ft, fq, fu, fv, ftra,sigd, ma, mip, vprecip, vprecipi, upwd, dnwd, dnwd0,qcondc, wd, cape, cin,tvp,ftd, fqd,plim1, plim2, asupmax, supmax0,asupmaxmin,da, phi, mp, phi2, d1a, dam, sigij,clw, elij, evap, ep, epmlmMm, eplaMm,wdtrainA, wdtrainM,qtc, sigt,
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
subroutine cv3_param(nd, k_upper, delt)
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_clos