4 SUBROUTINE cv_driver(len, nd, ndp1, ntra, iflag_con, t1, q1, qs1, u1, v1, &
5 tra1, p1, ph1, iflag1, ft1, fq1, fu1, fv1, ftra1, precip1, vprecip1, &
6 cbmf1, sig1, w01, icb1, inb1, delt, ma1, upwd1, dnwd1, dnwd01, qcondc1, &
7 wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, clw1, elij1, &
9 evap1, ep1, epmlmmm1, eplamm1, &
110 REAL tra1(len, nd, ntra)
120 REAL ftra1(len, nd, ntra)
125 REAL vprecip1(len, nd+1)
133 REAL qcondc1(len, nd)
138 REAL wdtraina1(len, nd), wdtrainm1(len, nd)
139 REAL sij1(len, nd, nd), elij1(len, nd, nd)
140 REAL da1(len, nd), phi1(len, nd, nd), mp1(len, nd)
142 REAL phi21(len, nd, nd)
143 REAL d1a1(len, nd), dam1(len, nd)
144 REAL epmlmmm1(len, nd, nd), eplamm1(len, nd)
264 INTEGER i, k, n, il, j
299 INTEGER iflag(nloc), nk(nloc), icb(nloc)
300 INTEGER nent(nloc,
klev)
302 INTEGER inb(nloc), inbis(nloc)
304 REAL cbmf(nloc), plcl(nloc), tnk(nloc), qnk(nloc), gznk(nloc)
311 REAL pbase(nloc), buoybase(nloc), th(nloc,
klev)
313 REAL sig(nloc,
klev), w0(nloc,
klev)
315 REAL frac(nloc), buoy(nloc,
klev)
322 REAL wt(nloc,
klev), water(nloc,
klev), evap(nloc,
klev)
325 REAL upwd(nloc,
klev), dnwd(nloc,
klev), dnwd0(nloc,
klev)
327 REAL tps(nloc,
klev), qprime(nloc), tprime(nloc)
329 REAL vprecip(nloc,
klev+1)
330 REAL tra(nloc,
klev, ntra), trap(nloc,
klev, ntra)
331 REAL ftra(nloc,
klev, ntra), traent(nloc,
klev,
klev, ntra)
332 REAL qcondc(nloc,
klev)
339 REAL d1a(nloc,
klev), dam(nloc,
klev)
340 REAL wdtraina(nloc,
klev), wdtrainm(nloc,
klev)
366 IF (iflag_con==30)
THEN
370 IF (iflag_con==4)
THEN
405 IF (iflag_con==30)
THEN
407 sig1(il, nd) = sig1(il, nd) + 1.
408 sig1(il, nd) = amin1(sig1(il,nd), 12.1)
417 epmlmmm1(:, :, :) = 0.
433 IF (iflag_con==30)
THEN
437 , lv1, cpn1, tv1, gz1, h1, hm1, th1)
440 IF (iflag_con==4)
THEN
441 CALL cv_prelim(len, nd, ndp1, t1, q1, p1, ph1, lv1, cpn1, tv1, gz1, h1, &
449 IF (iflag_con==30)
THEN
450 CALL cv30_feed(len, nd, t1, q1, qs1, p1, ph1, hm1, gz1 &
452 , nk1, icb1, icbmax, iflag1, tnk1, qnk1, gznk1, plcl1)
455 IF (iflag_con==4)
THEN
456 CALL cv_feed(len, nd, t1, q1, qs1, p1, hm1, gz1, nk1, icb1, icbmax, &
457 iflag1, tnk1, qnk1, gznk1, plcl1)
467 IF (iflag_con==30)
THEN
468 CALL cv30_undilute1(len, nd, t1, q1, qs1, gz1, plcl1, p1, nk1, icb1 &
469 , tp1, tvp1, clw1, icbs1)
472 IF (iflag_con==4)
THEN
473 CALL cv_undilute1(len, nd, t1, q1, qs1, gz1, p1, nk1, icb1, icbmax, tp1, &
481 IF (iflag_con==30)
THEN
482 CALL cv30_trigger(len, nd, icb1, plcl1, p1, th1, tv1, tvp1 &
484 , pbase1, buoybase1, iflag1, sig1, w01)
487 IF (iflag_con==4)
THEN
488 CALL cv_trigger(len, nd, icb1, cbmf1, tv1, tvp1, iflag1)
497 IF (iflag1(i)==0)
THEN
512 IF (iflag_con==30)
THEN
513 CALL cv30_compress(len, nloc, ncum, nd, ntra, iflag1, nk1, icb1, icbs1, &
514 plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, &
515 gz1, th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, &
516 w01, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, &
517 q, qs, u, v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, &
521 IF (iflag_con==4)
THEN
522 CALL cv_compress(len, nloc, ncum, nd, iflag1, nk1, icb1, cbmf1, plcl1, &
523 tnk1, qnk1, gznk1, t1, q1, qs1, u1, v1, gz1, h1, lv1, cpn1, p1, ph1, &
524 tv1, tp1, tvp1, clw1, iflag, nk, icb, cbmf, plcl, tnk, qnk, gznk, t, &
525 q, qs, u, v, gz, h, lv, cpn, p, ph, tv, tp, tvp, clw, dph)
538 IF (iflag_con==30)
THEN
540 , tnk, qnk, gznk, t, q, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, &
541 inb, tp, tvp, clw, hp, ep, sigp, buoy)
544 IF (iflag_con==4)
THEN
545 CALL cv_undilute2(nloc, ncum, nd, icb, nk, tnk, qnk, gznk, t, q, qs, &
546 gz, p, dph, h, tv, lv, inb, inbis, tp, tvp, clw, hp, ep, sigp, frac)
553 IF (iflag_con==30)
THEN
555 , pbase, p, ph, tv, buoy, sig, w0, cape, m)
558 IF (iflag_con==4)
THEN
559 CALL cv_closure(nloc, ncum, nd, nk, icb, tv, tvp, p, ph, dph, plcl, &
567 IF (iflag_con==30)
THEN
568 CALL cv30_mixing(nloc, ncum, nd, nd, ntra, icb, nk, inb &
570 , ph, t, q, qs, u, v, tra, h, lv, qnk, hp, tv, tvp, ep, clw, m, sig, &
571 ment, qent, uent, vent, sij, elij, ments, qents, traent)
574 IF (iflag_con==4)
THEN
575 CALL cv_mixing(nloc, ncum, nd, icb, nk, inb, inbis, ph, t, q, qs, u, v, &
576 h, lv, qnk, hp, tv, tvp, ep, clw, cbmf, m, ment, qent, uent, vent, &
584 IF (iflag_con==30)
THEN
586 CALL cv30_unsat(nloc, ncum, nd, nd, ntra, icb, inb &
587 , t, q, qs, gz, u, v, tra, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, &
588 ment, elij, delt, plcl, mp, qp, up, vp, trap, wt, water, evap, b, &
593 IF (iflag_con==4)
THEN
594 CALL cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, h, lv, &
595 ep, sigp, clw, m, ment, elij, iflag, mp, qp, up, vp, wt, water, evap)
604 IF (iflag_con==30)
THEN
606 , icb, inb, delt, t, q, u, v, tra, gz, p, ph, h, hp, lv, cpn, th, ep, &
607 clw, m, tp, mp, qp, up, vp, trap, wt, water, evap, b, ment, qent, &
608 uent, vent, nent, elij, traent, sig, tv, tvp, iflag, precip, vprecip, &
609 ft, fq, fu, fv, ftra, upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc, &
613 IF (iflag_con==4)
THEN
614 CALL cv_yield(nloc, ncum, nd, nk, icb, inb, delt, t, q, u, v, gz, p, &
615 ph, h, hp, lv, cpn, ep, clw, frac, m, mp, qp, up, vp, wt, water, &
616 evap, ment, qent, uent, vent, nent, elij, tv, tvp, iflag, wd, qprime, &
617 tprime, precip, cbmf, ft, fq, fu, fv, ma, qcondc)
624 IF (iflag_con==30)
THEN
626 CALL cv30_tracer(nloc, len, ncum, nd, nd, ment, sij, da, phi, phi2, &
627 d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb)
639 IF (iflag_con==30)
THEN
640 CALL cv30_uncompress(nloc, len, ncum, nd, ntra, idcum, iflag, precip, &
641 vprecip, evap, ep, sig, w0 &
642 , ft, fq, fu, fv, ftra, inb, ma, upwd, dnwd, dnwd0, qcondc, wd, cape, &
643 da, phi, mp, phi2, d1a, dam, sij &
644 , elij, clw, epmlmmm, eplamm &
645 , wdtraina, wdtrainm &
646 , iflag1, precip1, vprecip1, evap1, ep1, sig1, w01 &
647 , ft1, fq1, fu1, fv1, ftra1, inb1, ma1, upwd1, dnwd1, dnwd01, &
648 qcondc1, wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1 &
649 , elij1, clw1, epmlmmm1, eplamm1 &
650 , wdtraina1, wdtrainm1)
653 IF (iflag_con==4)
THEN
654 CALL cv_uncompress(nloc, len, ncum, nd, idcum, iflag, precip, cbmf, ft, &
655 fq, fu, fv, ma, qcondc, iflag1, precip1, cbmf1, ft1, fq1, fu1, fv1, &
666 SUBROUTINE cv_flag(iflag_ice_thermo)
671 INTEGER iflag_ice_thermo
678 cvflag_ice = iflag_ice_thermo >= 1
698 IF (iflag_con==4)
THEN
!$Id!Thermodynamical constants for t0 real clmcpv
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl t0
!$Id!Thermodynamical constants for cpv
!$Id!logical cvflag_grav logical cvflag_ice COMMON cvflag cvflag_grav
subroutine cv30_undilute1(len, nd, t, q, qs, gz, plcl, p, nk, icb, tp, tvp, clw, icbs)
!$Id mode_top_bound COMMON comconstr g
!$Id!Thermodynamical constants for t0 real cpvmcl
subroutine cv_closure(nloc, ncum, nd, nk, icb, tv, tvp, p, ph, dph, plcl, cpn, iflag, cbmf)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl hrd
subroutine cv30_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, u, v, tra, h, lv, qnk, hp, tv, tvp, ep, clw, m, sig, ment, qent, uent, vent, sij, elij, ments, qents, traent)
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)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl clmci
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real ginv
!$Id!Thermodynamical constants for ci
!$Id!Thermodynamical constants for t0 real clmci real eps
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 cv_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm)
!$Id!Thermodynamical constants for rrd
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)
!$Id!Thermodynamical constants for cl
!$Id!Thermodynamical constants for t0 real clmcpd
subroutine cv_driver(len, nd, ndp1, ntra, iflag_con, t1, q1, qs1, u1, v1,tra1, p1, ph1, iflag1, ft1, fq1, fu1, fv1, ftra1, precip1, vprecip1,cbmf1, sig1, w01, icb1, inb1, delt, ma1, upwd1, dnwd1, dnwd01, qcondc1,wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, clw1, elij1,
subroutine cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, sig, w0, cape, m)
subroutine cv30_undilute2(nloc, ncum, nd, icb, icbs, nk, tnk, qnk, gznk, t, q, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, tvp, clw, hp, ep, sigp, buoy)
!$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
subroutine cv30_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm, th)
subroutine cv30_feed(len, nd, t, q, qs, p, ph, hm, gz, nk, icb, icbmax, iflag, tnk, qnk, gznk, plcl)
subroutine cv30_unsat(nloc, ncum, nd, na, ntra, icb, inb, t, rr, rs, gz, u, v, tra, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, mp, rp, up, vp, trap, wt, water, evap, b, wdtraina, wdtrainm)
subroutine cv_undilute1(len, nd, t, q, qs, gz, p, nk, icb, icbmax, tp, tvp, clw)
subroutine cv30_uncompress(nloc, len, ncum, nd, ntra, idcum, iflag, precip, vprecip, evap, ep, sig, w0, ft, fq, fu, fv, ftra, inb, ma, upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp, phi2, d1a, dam, sij, elij, clw, epmlmmm, eplamm, wdtraina, wdtrainm, iflag1, precip1, vprecip1, evap1, ep1, sig1, w01, ft1, fq1, fu1, fv1, ftra1, inb1, ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, elij1, clw1, epmlmmm1, eplamm1, wdtraina1, wdtrainm1)
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 cv30_param(nd, delt)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl epsim1
subroutine cv30_compress(len, nloc, ncum, nd, ntra, iflag1, nk1, icb1, icbs1, plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0)
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 cv_feed(len, nd, t, q, qs, p, hm, gz, nk, icb, icbmax, iflag, tnk, qnk, gznk, plcl)
!$Id!Thermodynamical constants for t0 real cpvmcpd
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo cpd
!$Id!Thermodynamical constants for rrv
!$Id!Thermodynamical constants for t0 real cpdmcp
!$Id!Thermodynamical constants for lv0
subroutine cv30_trigger(len, nd, icb, plcl, p, th, tv, tvp, pbase, buoybase, iflag, sig, w0)
!$Id!Thermodynamical constants for rowl
!$Id!Thermodynamical constants for t0 real clmci real epsi
subroutine cv30_yield(nloc, ncum, nd, na, ntra, icb, inb, delt, t, rr, u, v, tra, gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, rp, up, vp, trap, wt, water, evap, b, ment, qent, uent, vent, nent, elij, traent, sig, tv, tvp, iflag, precip, vprecip, ft, fr, fu, fv, ftra, upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc, wd)
subroutine cv30_tracer(nloc, len, ncum, nd, na, ment, sij, da, phi, phi2, d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb)
!$Id!Thermodynamical constants for lf0