Index: LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90	(revision 3420)
+++ LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90	(revision 3421)
@@ -74,4 +74,8 @@
   REAL, DIMENSION(:), ALLOCATABLE :: fco2_lu_day     ! Emission from land use change for 1 day (cumulated) [gC/m2/d]
 !$OMP THREADPRIVATE(fco2_lu_day)
+  REAL, DIMENSION(:), ALLOCATABLE, PUBLIC :: fco2_ff ! Emission from fossil fuel [kgCO2/m2/s]
+!$OMP THREADPRIVATE(fco2_ff)
+  REAL, DIMENSION(:), ALLOCATABLE, PUBLIC :: fco2_bb ! Emission from biomass burning [kgCO2/m2/s]
+!$OMP THREADPRIVATE(fco2_bb)
 
   REAL, DIMENSION(:,:), ALLOCATABLE :: dtr_add       ! Tracer concentration to be injected 
Index: LMDZ6/trunk/libf/phylmd/phyetat0.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 3420)
+++ LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 3421)
@@ -435,5 +435,8 @@
      END DO
      CALL traclmdz_from_restart(trs)
-
+  ENDIF
+
+!--OB now this is for co2i
+  IF (type_trac == 'co2i') THEN
      IF (carbon_cycle_cpl) THEN
         ALLOCATE(co2_send(klon), stat=ierr)
Index: LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90	(revision 3420)
+++ LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90	(revision 3421)
@@ -12,4 +12,5 @@
     USE infotrac
     USE geometry_mod, ONLY : cell_area
+    USE carbon_cycle_mod, ONLY : nbcf_in, fields_in, cfname_in, fco2_ocn_day, fco2_ff, fco2_bb
     USE mod_grid_phy_lmdz
     USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
@@ -44,10 +45,9 @@
 !----------------
 
-    INTEGER, PARAMETER :: id_CO2=1                           !--temporaire OB=> PC to be changed 
-    REAL, PARAMETER    :: MCO2=44.011   !--g/mol
-    INTEGER                                 :: it, k, i
-    REAL, DIMENSION(klon,klev)              :: m_air          ! mass of air in every grid box [kg]
-    REAL, DIMENSION(klon)                   :: co2ff          ! surface fossil-fuel CO2 emissions [kg CO2/m2/s]
-    REAL, DIMENSION(klon)                   :: co2bb          ! surface biomass burning CO2 emissions [kg CO2/m2/s]
+    INTEGER, PARAMETER :: id_CO2=1              !--temporaire OB -- to be changed 
+    INTEGER                        :: it, k, i, nb
+    REAL, DIMENSION(klon,klev)     :: m_air     ! mass of air in every grid box [kg]
+    REAL, DIMENSION(klon)          :: co2land   ! surface land CO2 emissions [kg CO2/m2/s]
+    REAL, DIMENSION(klon)          :: co2ocean  ! surface ocean CO2 emissions [kg CO2/m2/s]
     REAL, DIMENSION(klon_glo,klev) :: co2_glo   ! variable temporaire sur la grille global
     REAL, DIMENSION(klon_glo,klev) :: m_air_glo ! variable temporaire sur la grille global
@@ -68,9 +68,9 @@
     IF (debutphy) THEN
       IF (MAXVAL(tr_seri(:,:,id_CO2)).LT.1.e-15) THEN 
-        tr_seri(:,:,id_CO2)=280.e-6/RMD*MCO2
+        tr_seri(:,:,id_CO2)=280.e-6/RMD*RMCO2
       ENDIF 
     ENDIF
 
-!--calculate mass of air in every grid box in kg 
+!--calculate mass of air in every grid box in kg air
     DO i=1, klon
     DO k=1, klev
@@ -81,19 +81,32 @@
 !--call CO2 emission routine 
 !--co2bb is zero for now
-    CALL co2_emissions(debutphy,co2ff,co2bb)
+!--unit kg CO2 m-2 s-1 
+    CALL co2_emissions(debutphy)
+
+!--retrieving land and ocean CO2 flux
+!--fCO2_nep comes in unit of g CO2 m-2 dt_stomate-1 
+!--this needs to be changed in ORCHIDEE
+    co2land(:)=0.0
+    co2ocean(:)=0.0
+    DO nb=1, nbcf_in
+      IF (cfname_in(nb) == "fCO2_nep" )   co2land(:)=fields_in(:,nb)*RMCO2/RMC/86400./1000.
+      !!IF (cfname_in(nb) == "fCO2_fgco2" ) co2ocean(:)=fco2_ocn_day(:) !--for now
+    ENDDO
 
 !--preparing the net anthropogenic flux at the surface for mixing layer 
 !--unit kg CO2 / m2 / s
-    source(:,id_CO2)=co2ff(:)+co2bb(:)
+    source(:,id_CO2)=fco2_ff(:)+fco2_bb(:)+co2land(:)+co2ocean(:)
 
 !--computing global mean CO2 for radiation
+!--every timestep for now but enough every month
 !    IF (debutphy.OR.mth_cur.NE.mth_pre) THEN
       CALL gather(tr_seri(:,:,id_CO2),co2_glo)
       CALL gather(m_air,m_air_glo)
 !$OMP MASTER
+!--conversion from kg CO2/kg air into ppm
        IF (is_mpi_root) THEN
-         RCO2_glo=SUM(co2_glo*m_air_glo)/SUM(m_air_glo)*1.e6*RMD/MCO2
+         RCO2_glo=SUM(co2_glo*m_air_glo)/SUM(m_air_glo)*1.e6*RMD/RMCO2
        ENDIF
-       PRINT *,'in tracco2i: global CO2 in ppm =', RCO2_glo
+       PRINT *,'toto in tracco2i: global CO2 in ppm =', RCO2_glo
 !$OMP END MASTER
        CALL bcast(RCO2_glo)
@@ -103,5 +116,5 @@
   END SUBROUTINE tracco2i
 
-  SUBROUTINE co2_emissions(debutphy,co2ff,co2bb)
+  SUBROUTINE co2_emissions(debutphy)
 
     USE dimphy
@@ -116,10 +129,10 @@
     USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite
 
+    USE carbon_cycle_mod, ONLY : fco2_ff, fco2_bb
+
     IMPLICIT NONE
 
     INCLUDE "YOMCST.h"
     LOGICAL,INTENT(IN) :: debutphy
-    REAL,DIMENSION(klon),INTENT(out) :: co2ff            !  fossil-fuel CO2 emissions
-    REAL,DIMENSION(klon),INTENT(out) :: co2bb            !  biomass burning CO2 emissions
 
 ! For NetCDF:
@@ -130,8 +143,8 @@
     REAL, POINTER:: vector(:), time(:)
     REAL,ALLOCATABLE       :: flx_co2ff_glo(:,:) !  fossil-fuel CO2 
+    REAL,ALLOCATABLE       :: flx_co2bb_glo(:,:) !  biomass-burning CO2 
     REAL,ALLOCATABLE, SAVE :: flx_co2ff(:,:)     !  fossil-fuel CO2 
-    REAL,ALLOCATABLE       :: flx_co2bb_glo(:,:) !  biomass-burning CO2 
     REAL,ALLOCATABLE, SAVE :: flx_co2bb(:,:)     !  biomass-burning CO2 
-!$OMP THREADPRIVATE(flx_co2ff, flx_co2bb)
+!$OMP THREADPRIVATE(flx_co2ff,flx_co2bb)
 
 !! may be controlled via the .def later on
@@ -234,6 +247,8 @@
     PRINT *,'probleme avec le mois dans co2_ini =', mth_cur
   ENDIF
-  co2ff(:) = flx_co2ff(:,mth_cur)
-  co2bb(:) = flx_co2bb(:,mth_cur)
+  IF (.NOT.ALLOCATED(fco2_ff)) ALLOCATE(fco2_ff(klon))
+  IF (.NOT.ALLOCATED(fco2_bb)) ALLOCATE(fco2_bb(klon))
+  fco2_ff(:) = flx_co2ff(:,mth_cur)
+  fco2_bb(:) = flx_co2bb(:,mth_cur)
 
   END SUBROUTINE co2_emissions
