Index: LMDZ6/trunk/libf/phylmd/cv3_routines.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/cv3_routines.F90	(revision 3500)
+++ LMDZ6/trunk/libf/phylmd/cv3_routines.F90	(revision 3502)
@@ -136,4 +136,6 @@
      adiab_ascent_mass_flux_depends_on_ejectliq = .FALSE.
      CALL getin_p('adiab_ascent_mass_flux_depends_on_ejectliq',adiab_ascent_mass_flux_depends_on_ejectliq)
+     keepbug_ice_frac = .TRUE.
+     CALL getin_p('keepbug_ice_frac', keepbug_ice_frac)
 
     WRITE (*, *) 't_top_max=', t_top_max
@@ -155,4 +157,11 @@
     WRITE (*, *) 'elcrit=', elcrit
     WRITE (*, *) 'tlcrit=', tlcrit
+    WRITE (*, *) 'ejectliq=', ejectliq
+    WRITE (*, *) 'ejectice=', ejectice
+    WRITE (*, *) 'cvflag_prec_eject =', cvflag_prec_eject 
+    WRITE (*, *) 'qsat_depends_on_qt =', qsat_depends_on_qt 
+    WRITE (*, *) 'adiab_ascent_mass_flux_depends_on_ejectliq =', adiab_ascent_mass_flux_depends_on_ejectliq
+    WRITE (*, *) 'keepbug_ice_frac =', keepbug_ice_frac 
+
     first = .FALSE.
   END IF ! (first)
@@ -2973,10 +2982,18 @@
         DO il = 1, ncum                                                                                   !!jygprl
           IF (i<=inb(il) .AND. lwork(il)) THEN                                                            !!jygprl
-          frac(il, inb(il)) = 1. - (t(il,inb(il))-243.15)/(263.15-243.15)
-          frac(il, inb(il)) = min(max(frac(il,inb(il)),0.), 1.)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+            IF (keepbug_ice_frac) THEN
+              frac(il, i) = frac_s(il, i)
 !       Ice fraction computed again here as a function of the temperature seen by unsaturated downdraughts
 !       (i.e. the cold pool temperature) for compatibility with earlier versions.
-          fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
-          fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
+              fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
+              fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+            ELSE  ! (keepbug_ice_frac)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+              frac(il, i) = frac_s(il, i)
+              fraci(il, i) = frac(il, i)                                                                    !!jygprl
+            ENDIF  ! (keepbug_ice_frac)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
           END IF                                                                                          !!jygprl
         END DO                                                                                            !!jygprl
@@ -2984,4 +3001,5 @@
     END IF                                                                                              !!jygprl
 
+
     DO il = 1, ncum
       IF (i<=inb(il) .AND. lwork(il)) THEN
@@ -2989,22 +3007,9 @@
         wt(il, i) = 45.0
 
-
         IF (i<inb(il)) THEN
-
-          IF (cvflag_ice) THEN
-!CR:tmax_fonte_cv: T for which ice is totally melted (used to be 275.15)
-            thaw = (t(il,i)-273.15)/(tmax_fonte_cv-273.15)
-            thaw = min(max(thaw,0.0), 1.0)
-            frac(il, i) = frac(il, i)*(1.-thaw)
-          ELSE
-            CONTINUE
-          END IF
-
           rp(il, i) = rp(il, i+1) + &
                       (cpd*(t(il,i+1)-t(il,i))+gz(il,i+1)-gz(il,i))/lv(il, i)
           rp(il, i) = 0.5*(rp(il,i)+rr(il,i))
         END IF
-!!        fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
-!!        fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
         rp(il, i) = max(rp(il,i), 0.0)
         rp(il, i) = amin1(rp(il,i), rs(il,i))
@@ -3427,4 +3432,5 @@
 
   RETURN
+
 END SUBROUTINE cv3_unsat
 
