Index: LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90	(revision 4298)
@@ -237,44 +237,34 @@
        IF (.NOT.ALLOCATED(fco2_land)) ALLOCATE(fco2_land(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land',1)
-       fco2_land(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_land_nbp)) ALLOCATE(fco2_land_nbp(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_nbp',1)
-       fco2_land_nbp(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_land_nep)) ALLOCATE(fco2_land_nep(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_nep',1)
-       fco2_land_nep(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_land_fLuc)) ALLOCATE(fco2_land_fLuc(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fLuc',1)
-       fco2_land_fLuc(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_land_fwoodharvest)) ALLOCATE(fco2_land_fwoodharvest(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fwoodharvest',1)
-       fco2_land_fwoodharvest(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_land_fHarvest)) ALLOCATE(fco2_land_fHarvest(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fHarvest',1)
-       fco2_land_fHarvest(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_ff)) ALLOCATE(fco2_ff(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ff',1)
-       fco2_ff(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_bb)) ALLOCATE(fco2_bb(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_bb',1)
-       fco2_bb(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_ocean)) ALLOCATE(fco2_ocean(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ocean',1)
-       fco2_ocean(1:klon) = 0.
 
        IF (.NOT.ALLOCATED(fco2_ocean_cor)) ALLOCATE(fco2_ocean_cor(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ocean_cor',1)
-       fco2_ocean_cor(1:klon) = 0.
+
        IF (.NOT.ALLOCATED(fco2_land_cor)) ALLOCATE(fco2_land_cor(klon), stat=ierr)
        IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_cor',1)
-       fco2_land_cor(1:klon) = 0.
 
     ENDIF
Index: LMDZ6/trunk/libf/phylmd/phyetat0.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 4298)
@@ -25,5 +25,5 @@
   USE infotrac_phy,     ONLY: nqtot, nbtr, type_trac, types_trac, tracers
   USE traclmdz_mod,     ONLY: traclmdz_from_restart
-  USE carbon_cycle_mod, ONLY: carbon_cycle_tr, carbon_cycle_cpl, co2_send
+  USE carbon_cycle_mod, ONLY: carbon_cycle_init, carbon_cycle_cpl, carbon_cycle_tr, carbon_cycle_rad, co2_send, RCO2_glo
   USE indice_sol_mod,   ONLY: nbsrf, is_ter, epsfra, is_lic, is_oce, is_sic
   USE ocean_slab_mod,   ONLY: nslay, tslab, seaice, tice, ocean_slab_init
@@ -113,14 +113,23 @@
 
   ! co2_ppm : value from the previous time step
+
+  ! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def)
+  co2_ppm0 = 284.32
+  ! when no initial value is available e.g., from a restart 
+  ! this variable must be set  in a .def file which will then be 
+  ! used by the conf_phys_m.F90 routine.
+  ! co2_ppm0 = 284.32 (illustrative example on how to set the variable in .def
+  ! file, for a pre-industrial CO2 concentration value)
+
   IF (carbon_cycle_tr .OR. carbon_cycle_cpl) THEN
      co2_ppm = tab_cntrl(3)
      RCO2    = co2_ppm * 1.0e-06 * RMCO2 / RMD
+     IF (tab_cntrl(17) > 0. .AND. carbon_cycle_rad) THEN
+           RCO2_glo = tab_cntrl(17)
+       ELSE
+           RCO2_glo    = co2_ppm0 * 1.0e-06 * RMCO2 / RMD
+     ENDIF
      ! ELSE : keep value from .def
   ENDIF
-
-! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def)
-! co2_ppm0   = tab_cntrl(16)
-! initial value for interactive CO2 run when there is no tracer field for CO2 in restart
-  co2_ppm0=284.32
 
   solaire_etat0      = tab_cntrl(4)
@@ -145,4 +154,5 @@
   clesphy0(7)=tab_cntrl( 11 )
   clesphy0(8)=tab_cntrl( 12 )
+  clesphy0(9)=tab_cntrl( 17 )
 
   ! set time iteration
@@ -454,5 +464,6 @@
         ALLOCATE(co2_send(klon), stat=ierr)
         IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1)
-        found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)
+        !found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)
+        found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm0)
      ENDIF
   ELSE IF (type_trac == 'lmdz') THEN
Index: LMDZ6/trunk/libf/phylmd/phyredem.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phyredem.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/phyredem.F90	(revision 4298)
@@ -36,5 +36,5 @@
   USE traclmdz_mod, ONLY : traclmdz_to_restart
   USE infotrac_phy, ONLY: type_trac, types_trac, nqtot, tracers, nbtr
-  USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
+  USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo
   USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra
   USE surface_data, ONLY: type_ocean, version_ocean
@@ -108,5 +108,10 @@
 
   ! co2_ppm0 : initial value of atmospheric CO2
-  tab_cntrl(16) = co2_ppm0
+  ! tab_cntrl(16) = co2_ppm0
+
+  !  PC -- initial value of RCO2 for the radiation scheme
+  !  tab_cntrl(17) = co2_ppm * 1.0e-06 * RMCO2 / RMD
+  IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo
+  !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo
 
   DO pass=1,2   ! pass=1 netcdf definition ; pass=2 netcdf write
@@ -140,5 +145,4 @@
 
     CALL put_field(pass,"FLIC", "fraction glace de terre", pctsrf(:, is_lic))
-
     ! 3. fraction ocean
 
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4298)
@@ -4320,7 +4320,5 @@
           ! 
           !--interactive CO2 in ppm from carbon cycle
-          IF (carbon_cycle_rad.AND..NOT.debut) THEN
-            RCO2=RCO2_glo
-          ENDIF
+          IF (carbon_cycle_rad) RCO2=RCO2_glo
           !
           IF (prt_level .GE.10) THEN
Index: LMDZ6/trunk/libf/phylmd/phytrac_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phytrac_mod.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/phytrac_mod.F90	(revision 4298)
@@ -81,4 +81,9 @@
     IF(ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) CALL tracco2i_init()
 
+       !   -- types_trac == 'co2i' ! PC 
+       !   -- CO2 interactif --
+       !   -- source is updated with FF and BB emissions 
+       !   -- and net fluxes from ocean and orchidee 
+       !   -- sign convention : positive into the atmosphere
 
   END SUBROUTINE phytrac_init
Index: LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90	(revision 4297)
+++ LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90	(revision 4298)
@@ -103,5 +103,5 @@
     IF (debutphy) THEN
 
-! Initialisation de tr_seri(id_CO2) si pas initialise
+! Initialization of tr_seri(id_CO2) If it is not initialized
       IF (MAXVAL(tr_seri(:,:,id_CO2)).LT.1.e-15) THEN 
         tr_seri(:,:,id_CO2)=co2_ppm0*1.e-6/RMD*RMCO2 !--initialised from co2_ppm0 in rdem
@@ -310,4 +310,8 @@
          RCO2_tot=SUM(co2_glo*m_air_glo)  !--unit kg CO2
          RCO2_glo=RCO2_tot/SUM(m_air_glo) !--unit kg CO2 / kg air
+         ! the following operation is only to maintain precision consistency
+         ! of RCO2_glo which differs whether it is directly computed or read from
+         ! a restart file (after having been computed)
+         RCO2_glo = FLOAT(INT(RCO2_glo * 1e8))/1e8
          PRINT *,'tracco2i: global CO2 in ppm =', RCO2_glo*1.e6*RMD/RMCO2
          PRINT *,'tracco2i: total CO2 in kg =', RCO2_tot
@@ -316,4 +320,5 @@
        CALL bcast(RCO2_glo)
        day_pre=day_cur
+
 !--if not carbon_cycle_tr, then we reinitialize the CO2 each day to its global mean value
        IF (.NOT.carbon_cycle_tr) THEN 
