Index: LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.F90	(revision 4664)
+++ LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.F90	(revision 4812)
@@ -38,7 +38,7 @@
 
 !========================================================================
-! L. d'Alençon, 25/02/2021
+! L. d'Alen??on, 25/02/2021
 ! Cette subroutine calcule une valeur de ratqsbas interactive  
-! Elle est appelée par la subroutine ratqs lorsque iflag_ratqs = 11. 
+! Elle est appel??e par la subroutine ratqs lorsque iflag_ratqs = 11. 
 !========================================================================
 
@@ -68,8 +68,7 @@
 real, dimension(klon,klev) :: wake_dq
 
-
 real, dimension(klon) :: max_sigd, max_dqconv,max_sigt
 real, dimension(klon,klev) :: zoa,zocarrea,pdocarreadj,pocarre,po,pdoadj,varq_therm
-
+real, dimension(klon,klev) :: var_moy, var_var, var_desc_th,var_det_conv,var_desc_prec,var_desc_conv,sigma_therm
 
 lev_out=0.
@@ -85,5 +84,5 @@
       enddo
 !-------------------------------------------------------------------------
-!  Caclul du terme de détrainement de la variance pour les thermiques
+!  Caclul du terme de d??trainement de la variance pour les thermiques
 !-------------------------------------------------------------------------
 
@@ -103,5 +102,5 @@
       detr0(:,:) = detr_therm(:,:) 
 
-! calcul du carré de l'humidité spécifique
+! calcul du carr?? de l'humidit?? sp??cifique et circulation dans les thermiques
       po(:,:) = q_seri(:,:)
       call thermcell_dq(klon,klev,dqimpl,pdtphys,fm0,entr0,zmasse,  &
@@ -115,5 +114,6 @@
       &                   pocarre,pdocarreadj,zocarrea,lev_out) 
 
-      
+
+! variance de l'humidit?? sp??cifique totale dans les thermiques     
       do k=1,klev
          do i=1,klon      
@@ -122,4 +122,27 @@
       enddo
 
+! calcul des termes sources de la variance avec thermiques et convection profonde (voir Klein 2005 par exemple)
+      do k=1,klev
+         do i=1,klon      
+            var_moy(i,k) = detr0(i,k)*((zoa(i,k)-po(i,k))**2)/zmasse(i,k)
+            var_var(i,k) = detr0(i,k)*(varq_therm(i,k)-povariance(i,k))/zmasse(i,k)
+            var_det_conv(i,k) =  a_ratqs_cv*(detrain_cv(i,k)/zmasse(i,k))
+            if (sigd(i).ne.0) then
+               var_desc_prec(i,k) = sigd(i)*(1-sigd(i))*(fqd(i,k)*tau_cumul/sigd(i))**2/tau_cumul
+            else
+               var_desc_prec(i,k) = 0
+            endif
+         enddo
+      enddo
+
+      do k=1,klev-1
+         do i=1,klon      
+            var_desc_th(i,k) = fm0(i,k+1)*povariance(i,k+1)/zmasse(i,k) -  &
+               fm0(i,k)*povariance(i,k)/zmasse(i,k)
+            var_desc_conv(i,k) = ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k)))
+         enddo
+      enddo
+      var_desc_th(:,klev) = var_desc_th(:,klev-1)
+      var_desc_conv(:,klev) = var_desc_conv(:,klev-1)
       
       if (klein) then
@@ -134,8 +157,7 @@
          do k=1,klev-1
             do i=1,klon      
-               povariance(i,k)= (detr0(i,k)*((zoa(i,k)-po(i,k))**2 + (varq_therm(i,k)-povariance(i,k)))/zmasse(i,k) + fm0(i,k+1)*povariance(i,k+1)/zmasse(i,k) -  &
-               fm0(i,k)*povariance(i,k)/zmasse(i,k) +  &
-               a_ratqs_cv*(detrain_cv(i,k)/zmasse(i,k)) +  sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul  &   
-                + ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k))))*pdtphys + povariance(i,k)
+               povariance(i,k)= (var_moy(i,k) + var_var(i,k) + var_desc_th(i,k) +  &
+               var_det_conv(i,k) +  var_desc_prec(i,k)  &   
+                + var_desc_conv(i,k))*pdtphys + povariance(i,k)
                povariance(i,k)= povariance(i,k)*exp(-pdtphys/tau_diss(i,k))
             enddo
@@ -148,5 +170,5 @@
          do k=1,klev-1
             do i=1,klon
-               if (sigd(i).ne.0) then
+               if (sigd(i).ne.0) then    ! termes de variance par accumulation
                  qd0(i,k) = fqd(i,k)*tau_cumul/sigd(i) 
                endif
@@ -159,6 +181,6 @@
             do i=1,klon      
                povariance(i,k)= (pdocarreadj(i,k)-2.*po(i,k)*pdoadj(i,k) +  &
-               a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/tau_cumul + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul) +  &
-               ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k))))*pdtphys + povariance(i,k)
+               a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/tau_cumul + var_desc_prec(i,k) +  &
+               var_desc_conv(i,k)))*pdtphys + povariance(i,k)
                povariance(i,k)=povariance(i,k)*exp(-pdtphys/tau_diss(i,k))
             enddo
@@ -167,60 +189,4 @@
 !         fqd(:,:)=sigt_cv(:,:)*(1-sigt_cv(:,:))*q0(:,:)**2/tau_cumul 
       endif
-      
-!-------------------------------------------------------------------------
-!  Caclul du terme de détrainement de la variance pour la convection (version fausse avec deux calculs de variance indépendants)
-!-------------------------------------------------------------------------
-
-!      if (klein_conv) then
-!        detrain_p(:,:) = 0.
-!        detraincv(:,:) = 0.
-!        dqp(:,:)    = 0. 
-      
-!        do k=1,klev-1
-!          do i=1,klon
-!           dqp(i,k) = q_seri(i,k) - qp(i,k)
-!           detraincv(i,k) = abs(detrain_cv(i,k))
-         
-!         if ((mp(i,k)-mp(i,k+1)).le.0) then
-!            detrain_p(i,k) = (mp(i,k+1)-mp(i,k))
-!         endif
-!          enddo
-!        enddo
-
-!        do k=1,klev-1
-!          do i=1,klon
-!            qd0(:,:) = 0.0
-!            if (sigd(i).ne.0) then
-!              qd0(i,k) = fqd(i,k)*tau_cumul/sigd(i) 
-!            endif
-!          enddo
-!        enddo
-
-!        do k=1,klev-1
-!          do i=1,klon            
-!            var_conv(i,k)= var_conv(i,k)*exp(-pdtphys/tau_conv) +  &
-!                (a_ratqs_cv*(detraincv(i,k)/zmasse(i,k)) +  sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul  &   
-!                + ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k))))* &
-!              ((dqp(i,k)**2)*(detrain_p(i,k)/zmasse(i,k))))* & ! les termes de descentes précipitantes qui seront traités autrement
-!              (((mp(i,k)-mp(i,k+1))/zmasse(i,k))*dqp(i,k)**2) + (2*mp(i,k)*dqp(i,k)*(qp(i,k+1)-qp(i,k))/zmasse(i,k)))* &
-!                (1.-exp(-pdtphys/tau_conv))/(1/tau_conv)      
-!          enddo
-!        enddo
-!        var_conv(:,klev) = var_conv(:,klev-1)
-!        fqd(:,:) = var_conv(:,:)
-!      else
-
-
-!        do k=1,klev-1
-!          do i=1,klon            
-!            var_conv(i,k)= var_conv(i,k)*exp(-pdtphys/tau_conv) +  &
-!                (a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/pdtphys + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul) +  &   ! somme des contributions des descentes précipitantes et des flux mélangés
-!                + ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k))))* & ! flux compensatoires dans l'environnement
-!                (1.-exp(-pdtphys/tau_conv))/(1/tau_conv) 
-!             ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k)))  
-!          enddo
-!        enddo
-!        var_conv(:,klev) = var_conv(:,klev-1) 
-!      endif
 
 !-------------------------------------------------------------------------
@@ -231,7 +197,9 @@
         do i=1,klon
            if(q_seri(i,k).ge.1E-7) then
-               ratqs_inter_(i,k) = abs(povariance(i,k))**0.5/q_seri(i,k) 
+               ratqs_inter_(i,k) = abs(povariance(i,k))**0.5/q_seri(i,k)    
+               sigma_therm(i,k) = abs(varq_therm(i,k))**0.5     ! sigma dans les thermiques
            else 
                ratqs_inter_(i,k) = 0.  
+               sigma_therm(i,k) = 0.
            endif
         enddo
@@ -403,9 +371,9 @@
 !
 ! Field, P.R., Hill, A., Furtado, K., Korolev, A., 2014b. Mixed-phase clouds in a turbulent environment. Part
-! 2: analytic treatment. Q. J. R. Meteorol. Soc. 21, 2651–2663. https://doi.org/10.1002/qj.2175.
+! 2: analytic treatment. Q. J. R. Meteorol. Soc. 21, 2651???2663. https://doi.org/10.1002/qj.2175.
 ! 
 ! Furtado, K., Field, P.R., Boutle, I.A., Morcrette, C.R., Wilkinson, J., 2016. A physically-based, subgrid
 ! parametrization for the production and maintenance of mixed-phase clouds in a general circulation
-! model. J. Atmos. Sci. 73, 279–291. https://doi.org/10.1175/JAS-D-15-0021.
+! model. J. Atmos. Sci. 73, 279???291. https://doi.org/10.1175/JAS-D-15-0021.
 
 USE lmdz_ratqs_ini, ONLY : RG,RV,RD,RCPD,RLSTT,RLVTT,RTT
