Index: /trunk/LMDZ.TITAN/deftank/callphys.def
===================================================================
--- /trunk/LMDZ.TITAN/deftank/callphys.def	(revision 4170)
+++ /trunk/LMDZ.TITAN/deftank/callphys.def	(revision 4171)
@@ -104,4 +104,8 @@
 # If yes, number of ices ? (must be compatible with traceur.def AND microphysical model)
 nices      = 4
+# Activate latent heat retroaction ?
+latent_heat = .false.
+# Constrain minimal methane concentration in the atmosphere?
+free_ch4 = .false.
 # Use new optics for clouds ?
 opt4clouds = .true.
Index: /trunk/LMDZ.TITAN/libf/muphytitan/mm_clouds.f90
===================================================================
--- /trunk/LMDZ.TITAN/libf/muphytitan/mm_clouds.f90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/muphytitan/mm_clouds.f90	(revision 4171)
@@ -71,5 +71,5 @@
   !============================================================================
 
-  SUBROUTINE mm_cloud_microphysics(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs)
+  SUBROUTINE mm_cloud_microphysics(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,dtlc)
     !! Get the evolution of moments tracers through clouds microphysics processes.
     !!
@@ -92,10 +92,14 @@
     REAL(kind=mm_wp), DIMENSION(:,:), INTENT(out) :: dgazs
     !! Tendencies of each condensible gaz species (\(mol.mol^{-1}\)).
+    REAL(kind=mm_wp), DIMENSION(:), INTENT(out) :: dtlc
+    !! Temperature tendencies due to condensation/evaporation (\(K.s^{-1}\)).
     REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE   :: zdm0n,zdm3n
     REAL(kind=mm_wp), DIMENSION(:,:), ALLOCATABLE :: zdm3i
+    REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE   :: lh ! Latent heat of condensation (?) (J.kg-1) 
     INTEGER                                    :: i
     dm0a = 0._mm_wp ; dm3a = 0._mm_wp
     dm0n = 0._mm_wp ; dm3n = 0._mm_wp
     dm3i = 0._mm_wp ; dgazs = 0._mm_wp
+    dtlc = 0._mm_wp
 
     IF (mm_w_cloud_nucond) THEN
@@ -103,4 +107,13 @@
       ! ADDED : Extraction of nucleation and growth rates
       call mm_cloud_nucond(dm0a,dm3a,dm0n,dm3n,dm3i,dgazs,mm_gazs_sat,mm_nrate,mm_grate)
+      ! Latent heat release
+      IF (mm_latent_heat) THEN
+        ALLOCATE(lh(mm_nla))
+        DO i = 1, mm_nesp
+          lh(:) = mm_lheatX(mm_temp(:),mm_xESPS(i))
+          dtlc(:) = dtlc(:) - (dgazs(:,i)*mm_xESPS(i)%fmol2fmas)*lh(:) ! We use the tendencies of the gaseous species, thus changing the sign of variation.
+        ENDDO
+        dtlc(:) = dtlc(:)/mm_cpp
+      ENDIF
     ENDIF
 
Index: /trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90
===================================================================
--- /trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90	(revision 4171)
@@ -94,4 +94,6 @@
   !! | mm_w_clouds_sed    | Enable/Disable clouds microphysics sedimentation
   !! | mm_w_clouds_nucond | Enable/Disable clouds microphysics nucleation/condensation
+  !! | mm_free_ch4        | Enable/Disable forcing minimum CH4 concentration
+  !! | mm_latent_heat     | Enable/Disable latent heat computation
   !! | mm_wsed_m0         | Force all aerosols moments to fall at M0 settling velocity
   !! | mm_wsed_m3         | Force all aerosols moments to fall at M3 settling velocity
@@ -135,4 +137,5 @@
   !! | mm_rpla     | Planet radius (m)
   !! | mm_g0       | Planet acceleration due to gravity constant (ground) (\(m.s^{-2}\))
+  !! | mm_cpp      | Specific heat capacity of the atmosphere (J.kg^{-1}.K^{-1})
   !! | mm_air_rad  | Air molecules mean radius (m)
   !! | mm_air_mmol | Air molecules molar mass (\(kg.mol^{-1}\))
@@ -157,5 +160,5 @@
   PROTECTED :: mm_ini,mm_ini_col,mm_ini_aer,mm_ini_cld
   ! model parameters (mm_global_init)
-  PROTECTED :: mm_dt,mm_rhoaer,mm_df,mm_rm,mm_p_prod,mm_rc_prod,mm_tx_prod,mm_rpla,mm_g0,mm_rb2ra
+  PROTECTED :: mm_dt,mm_rhoaer,mm_df,mm_rm,mm_p_prod,mm_rc_prod,mm_tx_prod,mm_rpla,mm_g0,mm_rb2ra,mm_cpp
   ! atmospheric vertical structure (mm_column_init)
   PROTECTED :: mm_nla,mm_nle,mm_zlay,mm_zlev,mm_play,mm_plev,mm_temp,mm_rhoair,mm_btemp,mm_dzlev,mm_dzlay
@@ -210,4 +213,6 @@
   LOGICAL, SAVE :: mm_w_cloud_sed = .true.    !! Enable/Disable cloud sedimentation.
   LOGICAL, SAVE :: mm_w_cloud_nucond = .true. !! Activate cloud nucleation/condensation.
+  LOGICAL, SAVE :: mm_free_ch4 = .false.      !! Enable/Disable forcing minimum CH4 concentration
+  LOGICAL, SAVE :: mm_latent_heat = .false.   !! Enable/Disable latent heat computation
 
   INTEGER, PARAMETER :: mm_coag_no = 0 !! no mode interaction for coagulation (i.e. no coagulation at all).
@@ -333,4 +338,6 @@
   !> Planet acceleration due to gravity constant (ground) (\(m.s^{-2}\)).
   REAL(kind=mm_wp), SAVE                        :: mm_g0       = 1.35_mm_wp
+  !> Specific heat capacity of the atmosphere (J.kg^{-1}.K^{-1})
+  REAL(kind=mm_wp), SAVE                        :: mm_cpp      = 1038.73_mm_wp
   !> Air molecules mean radius (m).
   REAL(kind=mm_wp), SAVE                        :: mm_air_rad  = 1.75e-10_mm_wp
@@ -606,6 +613,6 @@
 CONTAINS
 
-  FUNCTION mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, &
-    air_rad,air_mmol,coag_interactions,clouds,spcfile,  &
+  FUNCTION mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0,cpp, &
+    air_rad,air_mmol,coag_interactions,clouds,free_ch4,latent_heat,spcfile,  &
     w_haze_prod,w_haze_sed,w_haze_coag,w_cloud_nucond,  &
     w_cloud_sed,force_wsed_to_m0,force_wsed_to_m3,      &
@@ -645,4 +652,6 @@
     REAL(kind=mm_wp), INTENT(in)           :: g0
     !! Planet gravity acceleration at ground level in \(m.s^{-2}\).
+    REAL(kind=mm_wp), INTENT(in)           :: cpp
+    !! Specific heat capacity of the atmosphere (J.kg^{-1}.K^{-1})
     REAL(kind=mm_wp), INTENT(in)           :: air_rad
     !! Air molecules mean radius in meter.
@@ -653,4 +662,8 @@
     LOGICAL, INTENT(in)                    :: clouds
     !! Clouds microphysics control flag.
+    LOGICAL, INTENT(in)                    :: free_ch4
+    !! Methane concentration control flag.
+    LOGICAL, INTENT(in)                    :: latent_heat
+    !! Latent heat control flag
     CHARACTER(len=*), INTENT(in)           :: spcfile
     !! Clouds microphysics condensible species properties file.
@@ -715,7 +728,8 @@
     mm_rpla        = rplanet
     mm_g0          = g0
+    mm_cpp         = cpp
     mm_dt          = dt
     mm_air_rad     = air_rad
-    mm_air_mmol    = air_mmol
+    mm_air_mmol    = air_mmol 
     mm_coag_choice = coag_interactions
     ! check coagulation interactions choice
@@ -729,4 +743,6 @@
 
     mm_w_clouds = clouds
+    mm_free_ch4 = free_ch4
+    mm_latent_heat = latent_heat
 
     ! Check clouds microphysics species file
@@ -937,4 +953,6 @@
     IF (err/=0) RETURN
     err = mm_check_opt(cfg_get_value(cfg,"g0",mm_g0),mm_g0,wlog=mm_log)
+    IF (err/=0) RETURN
+    err = mm_check_opt(cfg_get_value(cfg,"cpp",mm_cpp),mm_cpp,wlog=mm_log)
     IF (err/=0) RETURN
     err = mm_check_opt(cfg_get_value(cfg,"timestep",mm_dt),mm_dt,wlog=mm_log)
@@ -1331,4 +1349,5 @@
     WRITE(*,'(a,ES14.7)')  "mm_rpla                : ", mm_rpla
     WRITE(*,'(a,ES14.7)')  "mm_g0                  : ", mm_g0
+    WRITE(*,'(a,ES14.7)')  "mm_cpp                 : ", mm_cpp
     WRITE(*,'(a)')         "======================================="
   END SUBROUTINE mm_dump_parameters
Index: /trunk/LMDZ.TITAN/libf/muphytitan/mm_methods.f90
===================================================================
--- /trunk/LMDZ.TITAN/libf/muphytitan/mm_methods.f90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/muphytitan/mm_methods.f90	(revision 4171)
@@ -363,31 +363,33 @@
 
     IF(xESP%name == "C2H2") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.340e1 - 2.536e3/temp)
     
     ELSE IF(xESP%name == "C2H6") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.511e1 - 2.207e3/temp - 2.411e4/temp**2 + 7.744e5/temp**3 - 1.161e7/temp**4 + 6.763e7/temp**5)
     
     ELSE IF(xESP%name == "AC6H6") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.735e1 - 5.663e3/temp)
 
     ELSE IF(xESP%name == "HCN") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.393e1 - 3.624e3/temp - 1.325e5/temp**2 + 6.314e6/temp**3 - 1.128e8/temp**4)
     
     ELSE IF(xESP%name == "HC3N") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.301e1 - 4.426e3/temp)
     
     ELSE IF (xESP%name == "CH4") THEN
-      ! Fray and Schmidt (2009)
+      ! Fray and Schmitt (2009)
       res = (1.0e5 / pres) * exp(1.051e1 - 1.110e3/temp - 4.341e3/temp**2 + 1.035e5/temp**3 - 7.910e5/temp**4)
-      ! Peculiar case of CH4 : x0.80 (dissolution in N2)
+      ! Peculiar case of CH4 : x0.80 (dissolution in N2) 
       res = res * 0.80_mm_wp
-      ! Forcing CH4 to 1.4% minimum 
-      IF (res < 0.014) THEN
-        res = 0.014
+      IF (.NOT.mm_free_ch4) THEN
+        ! Forcing CH4 to 1.4% minimum 
+        IF (res < 0.014) THEN
+          res = 0.014
+        ENDIF
       ENDIF
     ENDIF
@@ -405,4 +407,5 @@
     TYPE(mm_esp), INTENT(in)                   :: xESP !! Specie properties.
     REAL(kind=mm_wp), DIMENSION(SIZE(temp))    :: res  !! Molar mixing ratios of the specie.
+    INTEGER      :: i
 
     IF(xESP%name == "C2H2") THEN
@@ -426,11 +429,13 @@
       res = (1.0e5 / pres) * exp(1.301e1 - 4.426e3/temp)
     
-    ! Peculiar case : CH4 : x0.85 (dissolution in N2)
+    ! Peculiar case : CH4 : x0.85 (dissolution in N2) 
     ELSE IF (xESP%name == "CH4") THEN
       res = (1.0e5 / pres) * exp(1.051e1 - 1.110e3/temp - 4.341e3/temp**2 + 1.035e5/temp**3 - 7.910e5/temp**4)
       ! Peculiar case of CH4 : x0.80 (dissolution in N2)
-      res = res * 0.80_mm_wp
-      ! Forcing CH4 to 1.4% minimum 
-      WHERE (res(:) < 0.014) res(:) = 0.014
+      res(:) = res(:)*0.80_mm_wp
+      IF (.NOT.mm_free_ch4) THEN
+        ! Forcing CH4 to 1.4% minimum 
+        WHERE (res(:) < 0.014) res(:) = 0.014
+      ENDIF
     ENDIF
   END FUNCTION ysatX_ve
Index: /trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90
===================================================================
--- /trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90	(revision 4171)
@@ -63,5 +63,5 @@
 
 
-  FUNCTION muphys_all(dm0a_s,dm3a_s,dm0a_f,dm3a_f,dm0n,dm3n,dm3i,dgazs) RESULT(ret)
+  FUNCTION muphys_all(dm0a_s,dm3a_s,dm0a_f,dm3a_f,dm0n,dm3n,dm3i,dgazs,dtlc) RESULT(ret)
     !! Compute the evolution of moments tracers through haze and clouds microphysics processes.
     !!
@@ -98,4 +98,6 @@
     REAL(kind=mm_wp), INTENT(out), DIMENSION(:,:) :: dgazs
     !! Tendencies of each condensible gaz species (\(mol.mol^{-1}\)).
+    REAL(kind=mm_wp), INTENT(out), DIMENSION(:) :: dtlc
+    !! Temperature tendencies due to condensation/evaporation (\(K.s^{-1}\)).
     LOGICAL :: ret
     !! .true. on success (i.e. model has been initialized at least once previously), .false. otherwise.
@@ -109,5 +111,5 @@
     IF (mm_w_clouds) THEN
       ! Calls cloud microphysics (-> m-3)
-      call mm_cloud_microphysics(zdm0a_f,zdm3a_f,dm0n,dm3n,dm3i,dgazs)
+      call mm_cloud_microphysics(zdm0a_f,zdm3a_f,dm0n,dm3n,dm3i,dgazs,dtlc)
       ! add temporary aerosols tendencies (-> m-3)
       dm0a_f = dm0a_f + zdm0a_f  ; dm3a_f = dm3a_f + zdm3a_f
@@ -119,6 +121,7 @@
         dgazs(:,i) = dgazs(mm_nla:1:-1,i)
       ENDDO
+      dtlc   = dtlc(mm_nla:1:-1)
     ELSE
-      dm0n = 0._mm_wp ; dm3n = 0._mm_wp ; dm3i = 0._mm_wp ; dgazs = 0._mm_wp
+      dm0n = 0._mm_wp ; dm3n = 0._mm_wp ; dm3i = 0._mm_wp ; dgazs = 0._mm_wp ; dtlc = 0._mm_wp
     ENDIF
     ! multiply by altitude thickness and reverse vectors so they go from ground to top :)
@@ -155,5 +158,5 @@
     ! Calls haze microphysics
     call mm_haze_microphysics(dm0a_s,dm3a_s,dm0a_f,dm3a_f)
-    ! reverse vectors so they go from ground to top :)
+    ! reverse vectors so they go from ground to top :
     dm0a_s = dm0a_s(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
     dm3a_s = dm3a_s(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
Index: /trunk/LMDZ.TITAN/libf/muphytitan/mmp_gcm.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/muphytitan/mmp_gcm.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/muphytitan/mmp_gcm.F90	(revision 4171)
@@ -48,5 +48,5 @@
   CONTAINS
 
-  SUBROUTINE mmp_initialize(dt,p_prod,tx_prod,rc_prod,rplanet,g0, air_rad,air_mmol,clouds,cfgpath)
+  SUBROUTINE mmp_initialize(dt,p_prod,tx_prod,rc_prod,rplanet,g0,cpp,air_rad,air_mmol,clouds,free_ch4,latent_heat,cfgpath)
     !! Initialize global parameters of the model.
     !!
@@ -79,4 +79,6 @@
     REAL(kind=mm_wp), INTENT(in)           :: g0
       !! Planet gravity acceleration at ground level in \(m.s^{-2}\).
+    REAL(kind=mm_wp), INTENT(in)           :: cpp
+      !! Specific heat capacity of the atmosphere (J.kg^{-1}.K^{-1})
     REAL(kind=mm_wp), INTENT(in)           :: air_rad
       !! Air molecules mean radius in meter.
@@ -85,4 +87,8 @@
     LOGICAL, INTENT(in)                    :: clouds
       !! Clouds microphysics control flag.
+    LOGICAL, INTENT(in)                    :: free_ch4
+      !! Methane control flag
+    LOGICAL, INTENT(in)                    :: latent_heat
+      !! Latent heat control flag
     CHARACTER(len=*), INTENT(in), OPTIONAL :: cfgpath
       !! Internal microphysic configuration file.
@@ -173,6 +179,6 @@
     ! YAMMS initialization.
     ! NB: in MESOSCALE this is done in inifis EMoi
-    err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, &
-                           air_rad,air_mmol,coag_choice,clouds,spcpath,  &
+    err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0,cpp, &
+                           air_rad,air_mmol,coag_choice,clouds,free_ch4,latent_heat,spcpath,  &
                            w_h_prod,w_h_sed,w_h_coag,w_c_nucond,  &
                            w_c_sed,fwsed_m0,fwsed_m3, &
Index: /trunk/LMDZ.TITAN/libf/phytitan/callkeys_mod.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/callkeys_mod.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/callkeys_mod.F90	(revision 4171)
@@ -24,5 +24,6 @@
 !$OMP THREADPRIVATE(callchim,callmufi,callclouds)
       logical,save :: latent_heat
-!$OMP THREADPRIVATE(latent_heat)
+      logical,save :: free_ch4
+!$OMP THREADPRIVATE(latent_heat,free_ch4)
       logical,save :: global1d
 !$OMP THREADPRIVATE(global1d)
Index: /trunk/LMDZ.TITAN/libf/phytitan/calmufi.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/calmufi.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/calmufi.F90	(revision 4171)
@@ -1,5 +1,5 @@
 
 
-SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdq)
+SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdq, zdt)
 
   !! Interface subroutine to YAMMS model for Titan LMDZ GCM.
@@ -36,4 +36,5 @@
   REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: zdqfi !! Tendency from former processes for tracers (\(X.kg^{-1}}\)).
   REAL(kind=8), DIMENSION(:,:,:), INTENT(OUT) :: zdq   !! Microphysical tendency for tracers (X.kg_air-1.s-1)
+  REAL(kind=8), DIMENSION(:,:),   INTENT(OUT) :: zdt   !! Microphysical tendency for temperature (K.s^{-1}).
   
   REAL(kind=8), DIMENSION(:,:,:), ALLOCATABLE :: zq !! Local tracers updated from former processes (\(X.kg^{-1}}\)).
@@ -57,4 +58,5 @@
   REAL(kind=8), DIMENSION(:,:), ALLOCATABLE :: dm3i  !! Tendencies of the 3rd order moments of each ice components (\(m^{3}.m^{-2}\)). 
   REAL(kind=8), DIMENSION(:,:), ALLOCATABLE :: dgazs !! Tendencies of each condensible gaz species !(\(mol.mol^{-1}\)). 
+  REAL(kind=8), DIMENSION(:),   ALLOCATABLE :: dtlc  !! Temperature tendencies due to condensation/evaporation (\(K.s^{-1}\)). 
 
   REAL(kind=8), DIMENSION(:,:), ALLOCATABLE ::  int2ext !! (kg.m-2)
@@ -93,7 +95,11 @@
   ALLOCATE( dm3i(nlay,nices) )
   ALLOCATE( dgazs(nlay,nices) )
+  ALLOCATE( dtlc(nlay) )
 
   ! Initialization of zdq here since intent=out and no action performed on every tracers
   zdq(:,:,:) = 0.D0
+
+  ! Initialization of zdt
+  zdt(:,:) = 0.D0
 
   ! Initialize tracers updated with former processes from physics
@@ -158,5 +164,5 @@
     ! call microphysics
     IF (callclouds) THEN ! call clouds
-      IF(.NOT.mm_muphys(dm0as,dm3as,dm0af,dm3af,dm0n,dm3n,dm3i,dgazs)) &
+      IF(.NOT.mm_muphys(dm0as,dm3as,dm0af,dm3af,dm0n,dm3n,dm3i,dgazs,dtlc)) &
         call abort_program(error("mm_muphys aborted -> initialization not done !",-1))
     ELSE
@@ -187,4 +193,5 @@
         ! We use the molar mass ratio from GCM in case there is discrepancy with the mm one
       enddo
+      zdt(ilon,:) = dtlc(:)
     endif
     
@@ -194,4 +201,5 @@
   ! we want to have routines spitting tendencies in s-1 -> let's divide !
   zdq(:,:,:) = zdq(:,:,:) / dt
+  zdt(:,:) = zdt(:,:) / dt
 
 END SUBROUTINE calmufi
Index: /trunk/LMDZ.TITAN/libf/phytitan/cond_muphy.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/cond_muphy.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/cond_muphy.F90	(revision 4171)
@@ -48,5 +48,5 @@
 !------------------
 integer :: iq
-real*8  :: Lc(ngrid,nlayer,size(ices_indx)) ! Condensation latente heat [J.kg-1]
+real*8  :: Lc(ngrid,nlayer,size(ices_indx)) ! Condensation latent heat [J.kg-1]
 
 
@@ -65,5 +65,4 @@
 call calc_condlh(ngrid,nlayer,pt,Lc)
 
-
 ! Sum of condensation latent heat [J.kg_air-1.s-1] :
 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -75,6 +74,6 @@
 ! Condensation heating rate :
 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-! If ice formation  : dqmuficond < 0 --> dtlc > 0
-! Else vaporisation : dqmuficond > 0 --> dtlc < 0
+! If ice formation  : dqmuficond > 0 --> dtlc > 0
+! Else vaporisation : dqmuficond < 0 --> dtlc < 0
 dtlc(:,:) = dtlc(:,:) / cpp ! [K.s-1]
 
Index: /trunk/LMDZ.TITAN/libf/phytitan/inifis_mod.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/inifis_mod.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/inifis_mod.F90	(revision 4171)
@@ -505,4 +505,9 @@
      write(*,*)" latent_heat = ",latent_heat
 
+     write(*,*) "Constrain minimal methane concentration in the atmosphere?"
+     free_ch4=.false. ! default value
+     call getin_p("free_ch4",free_ch4)
+     write(*,*)" free_ch4 = ",free_ch4
+
      write(*,*) "Disable the coupling of microphysics within rad. transf. ?"
      write(*,*) "If disabled we will assume a planetwide vert. profile of extinction ..."
Index: /trunk/LMDZ.TITAN/libf/phytitan/inimufi.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/inimufi.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/inimufi.F90	(revision 4171)
@@ -2,7 +2,7 @@
 
   use mmp_gcm
-  use callkeys_mod, only : callclouds, p_prod, tx_prod, rc_prod, air_rad, eff_gz
+  use callkeys_mod, only : callclouds, p_prod, tx_prod, rc_prod, air_rad, eff_gz, free_ch4, latent_heat
   use tracer_h
-  use comcstfi_mod, only : g, rad, mugaz
+  use comcstfi_mod, only : g, rad, mugaz, cpp
   use datafile_mod
 
@@ -51,5 +51,5 @@
   
   call mmp_initialize(ptimestep,p_prod,tx_prod,rc_prod, &
-        rad,g,air_rad,mugaz,callclouds,config_mufi)
+        rad,g,cpp,air_rad,mugaz,callclouds,free_ch4,latent_heat,config_mufi) 
 
    ! -------------------------
Index: /trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90
===================================================================
--- /trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90	(revision 4170)
+++ /trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90	(revision 4171)
@@ -249,5 +249,5 @@
       real zdtsw1(ngrid,nlayer), zdtlw1(ngrid,nlayer) ! Callcorrk routine.
       real zdtlc(ngrid,nlayer)                        ! Condensation heating rate.
-      real refCorr, time                              ! for hrcorr_mod routines.
+      real zdtlcfi(ngrid,nlayer)                      ! Condensation heating rate computed in the physics
                               
       ! For Surface Tracers : (kg/m2/s)
@@ -268,4 +268,5 @@
       real zdqfibar(ngrid,nlayer,nq)   ! For 2D chemistry
       real zdqmufibar(ngrid,nlayer,nq) ! For 2D chemistry
+      real zdtlcbar(ngrid,nlayer)      ! For 2D chemistry
                         
       ! For Winds : (m/s/s)
@@ -394,5 +395,5 @@
     !   Or one can put calmufi in MMP_GCM module (in muphytitan).
     INTERFACE
-      SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdq)
+      SUBROUTINE calmufi(dt, plev, zlev, play, zlay, g3d, temp, pq, zdqfi, zdq, zdt)
         REAL(kind=8), INTENT(IN)                 :: dt    !! Physics timestep (s).
         REAL(kind=8), DIMENSION(:,:), INTENT(IN) :: plev  !! Pressure levels (Pa).
@@ -405,4 +406,5 @@
         REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: zdqfi !! Tendency from former processes for tracers (\(X.kg^{-1}}\)).
         REAL(kind=8), DIMENSION(:,:,:), INTENT(OUT) :: zdq   !! Microphysical tendency for tracers (\(X.kg^{-1}}\)).
+        REAL(kind=8), DIMENSION(:,:),   INTENT(OUT) :: zdt   !! Temperature tendencies due to condensation/evaporation (\(K.s^{-1}\)). 
       END SUBROUTINE calmufi
     END INTERFACE
@@ -441,8 +443,9 @@
 !        ~~~~~~~~~~~~~~~~~~
          dtrad(:,:) = 0.D0
-         zdtlc(:,:) = 0.D0
          fluxrad(:) = 0.D0
          zdtsw(:,:) = 0.D0
          zdtlw(:,:) = 0.D0
+         zdtlc(:,:) = 0.D0
+         zdtlcfi(:,:) = 0.D0
          zpopthi(:,:,:,:) = 0.D0
          zpopthv(:,:,:,:) = 0.D0
@@ -1129,9 +1132,9 @@
 #ifdef USE_QTEST
             dtpq(:,:,:) = 0.D0 ! we want tpq to go only through mufi
-            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,tpq,dtpq,zdqmufi)
+            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,tpq,dtpq,zdqmufi,zdtlc)
             tpq(:,:,:) = tpq(:,:,:) + zdqmufi(:,:,:)*ptimestep ! only manipulation of tpq->*ptimestep here
 
 #else   
-            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,zdqmufi)
+            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,zdqmufi,zdtlc)
             pdq(:,:,:) = pdq(:,:,:) + zdqmufi(:,:,:)
 
@@ -1184,10 +1187,10 @@
                zdqfibar(:,:,:) = 0.D0 ! We work in zonal average -> forget processes other than condensation
                call calmufi(ptimestep,zplevbar,zzlevbar,zplaybar,zzlaybar, &
-                            gzlat,ztfibar,zqfibar,zdqfibar,zdqmufibar)
+                            gzlat,ztfibar,zqfibar,zdqfibar,zdqmufibar,zdtlcbar)
                ! TODO : Add a sanity check here !
             endif
          
             ! Condensation heating rate :
-            if (callclouds) then
+            if (callclouds .and. latent_heat) then
                ! Default value -> no condensation [kg/kg_air/s] :
                dmuficond(:,:,:) = 0.D0
@@ -1195,8 +1198,6 @@
                   dmuficond(:,:,iq) = zdqmufi(:,:,gazs_indx(iq))
                enddo
-               call cond_muphy(ngrid,nlayer,pt,dmuficond,zdtlc)
-               if (latent_heat) then
-                  pdt(:,:) = pdt(:,:) + zdtlc(:,:)
-               endif
+               call cond_muphy(ngrid,nlayer,pt,dmuficond,zdtlcfi)
+               pdt(:,:) = pdt(:,:) + zdtlc
             endif
          endif ! callmufi
@@ -1360,8 +1361,10 @@
                zdmassmr_col(ig)=SUM(zdmassmr(ig,:))
             enddo
-            
-            call writediagfi(ngrid,"mass_evap","mass gain"," ",3,zdmassmr)
-            call writediagfi(ngrid,"mass_evap_col","mass gain col"," ",2,zdmassmr_col)
-            call writediagfi(ngrid,"mass","mass","kg/m2",3,mass)
+
+            #ifndef CPP_XIOS
+               call writediagfi(ngrid,"mass_evap","mass gain"," ",3,zdmassmr)
+               call writediagfi(ngrid,"mass_evap_col","mass gain col"," ",2,zdmassmr_col)
+               call writediagfi(ngrid,"mass","mass","kg/m2",3,mass)
+            #endif
 
             call mass_redistribution(ngrid,nlayer,nq,ptimestep,                     &
@@ -1631,4 +1634,5 @@
 !-----------------------------------------------------------------------------------------------------
 
+#ifndef CPP_XIOS
 
       call writediagfi(ngrid,"Ls","solar longitude","deg",0,zls*180./pi)
@@ -1715,5 +1719,5 @@
            i2e(:,:) = ( pplev(:,1:nlayer)-pplev(:,2:nlayer+1) ) / gzlat(:,1:nlayer) /(zzlev(:,2:nlayer+1)-zzlev(:,1:nlayer))
 
-#ifdef USE_QTEST
+   #ifdef USE_QTEST
             ! Microphysical tracers passed through dyn+phys(except mufi)
             call writediagfi(ngrid,"mu_m0as_dp","Dynphys only spherical mode 0th order moment",'m-3',3,zq(:,:,micro_indx(1))*i2e)
@@ -1726,10 +1730,10 @@
             call writediagfi(ngrid,"mu_m0af_mo","Mufi only fractal mode 0th order moment",'m-3',3,tpq(:,:,micro_indx(3))*i2e)
             call writediagfi(ngrid,"mu_m3af_mo","Mufi only fractal mode 3rd order moment",'m3/m3',3,tpq(:,:,micro_indx(4))*i2e)
-#else
+   #else
             call writediagfi(ngrid,"mu_m0as","Spherical mode 0th order moment",'m-3',3,zq(:,:,micro_indx(1))*i2e)
             call writediagfi(ngrid,"mu_m3as","Spherical mode 3rd order moment",'m3/m3',3,zq(:,:,micro_indx(2))*i2e)
             call writediagfi(ngrid,"mu_m0af","Fractal mode 0th order moment",'m-3',3,zq(:,:,micro_indx(3))*i2e)
             call writediagfi(ngrid,"mu_m3af","Fractal mode 3rd order moment",'m3/m3',3,zq(:,:,micro_indx(4))*i2e)
-#endif
+   #endif ! USE_QTEST
             
             ! Microphysical diagnostics
@@ -1751,4 +1755,5 @@
 
        endif ! end of 'tracer'
+#endif ! not CPP_XIOS
 
 #ifdef CPP_XIOS
@@ -1821,6 +1826,7 @@
       CALL send_xios_field("dtdif",zdtdif)
       CALL send_xios_field("dtadj",zdtadj(:,:))
-      IF (callclouds) THEN
+      IF (callclouds .and. latent_heat) THEN
          CALL send_xios_field("dtlc",zdtlc)
+         CALL send_xios_field("dtlcfi",zdtlcfi)
       ENDIF
 
@@ -1952,4 +1958,7 @@
       !--------------------------------------------------------
       IF (callmufi) THEN
+         ! Microphysical tracers are expressed in unit/m3.
+         ! convert X.kg-1 --> X.m-3 (whereas for optics was -> X.m-2)
+         i2e(:,:) = ( pplev(:,1:nlayer)-pplev(:,2:nlayer+1) ) / gzlat(:,1:nlayer) /(zzlev(:,2:nlayer+1)-zzlev(:,1:nlayer))
          ! Atmosphere (3D) :
          ! Moments M0 and M3 :
@@ -2012,5 +2021,5 @@
 
          ! Condensation tendencies from microphysics (mol/mol/s) :
-         IF (callclouds) THEN
+         IF (callclouds .and. latent_heat) THEN
             DO iq = 1, size(ices_indx)
                CALL send_xios_field('dmuficond_'//trim(nameOfTracer(gazs_indx(iq))),dmuficond(:,:,iq)/rat_mmol(gazs_indx(iq))) ! kg/kg/s -> mol/mol/s
