--- trunk/Sources/phylmd/CV30_routines/cv30_mixing.f 2016/05/18 17:56:44 195 +++ trunk/phylmd/CV30_routines/cv30_mixing.f90 2019/06/13 14:40:06 328 @@ -4,8 +4,8 @@ contains - SUBROUTINE cv30_mixing(icb, nk, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, & - m, sig, ment, qent, uent, vent, nent, sij, elij, ments, qents) + SUBROUTINE cv30_mixing(icb, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, m, & + sig, ment, qent, uent, vent, nent, sij, elij, ments, qents) ! MIXING @@ -14,14 +14,16 @@ ! - vectorisation de la partie normalisation des flux (do 789) use cv30_param_m, only: minorig, nl - use cv_thermo_m, only: cpd, cpv, rrv USE dimphy, ONLY: klev, klon + use suphec_m, only: rcpd, rcpv, rv ! inputs: - integer, intent(in):: icb(:), nk(:), inb(:) ! (ncum) - real t(klon, klev), rr(klon, klev), rs(klon, klev) + integer, intent(in):: icb(:), inb(:) ! (ncum) + real, intent(in):: t(klon, klev), rr(klon, klev), rs(klon, klev) real u(klon, klev), v(klon, klev) - real h(klon, klev), lv(klon, klev), hp(klon, klev) + real, intent(in):: h(klon, klev) + real, intent(in):: lv(:, :) ! (klon, klev) + real, intent(in):: hp(klon, klev) real ep(klon, klev), clw(klon, klev) real m(klon, klev) ! input of convect3 real sig(klon, klev) @@ -84,11 +86,11 @@ (j >= (icb(il) - 1)).and.(j <= inb(il)))then rti = rr(il, 1) - ep(il, i) * clw(il, i) - bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rrv & - * t(il, j) * t(il, j) * cpd) - anum = h(il, j) - hp(il, i) + (cpv - cpd) * t(il, j) * (rti & + bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rv & + * t(il, j) * t(il, j) * rcpd) + anum = h(il, j) - hp(il, i) + (rcpv - rcpd) * t(il, j) * (rti & - rr(il, j)) - denom = h(il, i) - hp(il, i) + (cpd - cpv) * (rr(il, i) & + denom = h(il, i) - hp(il, i) + (rcpd - rcpv) * (rr(il, i) & - rti) * t(il, j) dei = denom if(abs(dei) < 0.01)dei = 0.01 @@ -113,9 +115,9 @@ qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. & - sij(il, i, j)) * rti uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. & - - sij(il, i, j)) * u(il, nk(il)) + - sij(il, i, j)) * u(il, minorig) vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. & - - sij(il, i, j)) * v(il, nk(il)) + - sij(il, i, j)) * v(il, minorig) elij(il, i, j) = altem elij(il, i, j) = amax1(0.0, elij(il, i, j)) ment(il, i, j) = m(il, i) / (1. - sij(il, i, j)) @@ -133,9 +135,9 @@ do il = 1, ncum if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then ment(il, i, i) = m(il, i) - qent(il, i, i) = rr(il, nk(il)) - ep(il, i) * clw(il, i) - uent(il, i, i) = u(il, nk(il)) - vent(il, i, i) = v(il, nk(il)) + qent(il, i, i) = rr(il, minorig) - ep(il, i) * clw(il, i) + uent(il, i, i) = u(il, minorig) + vent(il, i, i) = v(il, minorig) elij(il, i, i) = clw(il, i) sij(il, i, i) = 0.0 end if @@ -165,9 +167,9 @@ lwork(il) = (nent(il, i) /= 0) qp = rr(il, 1) - ep(il, i) * clw(il, i) anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) & - + (cpv - cpd) * t(il, i) * (qp - rr(il, i)) + + (rcpv - rcpd) * t(il, i) * (qp - rr(il, i)) denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) & - + (cpd - cpv) * t(il, i) * (rr(il, i) - qp) + + (rcpd - rcpv) * t(il, i) * (rr(il, i) - qp) if(abs(denom) < 0.01)denom = 0.01 scrit(il) = anum / denom alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp) @@ -280,8 +282,8 @@ nent(il, i) = 0 ment(il, i, i) = m(il, i) qent(il, i, i) = rr(il, 1) - ep(il, i) * clw(il, i) - uent(il, i, i) = u(il, nk(il)) - vent(il, i, i) = v(il, nk(il)) + uent(il, i, i) = u(il, minorig) + vent(il, i, i) = v(il, minorig) elij(il, i, i) = clw(il, i) sij(il, i, i) = 0.0 endif