Index: XIOS/branchs/xios-1.0/src/config/domain_attribute.conf
===================================================================
--- XIOS/branchs/xios-1.0/src/config/domain_attribute.conf	(revision 610)
+++ XIOS/branchs/xios-1.0/src/config/domain_attribute.conf	(revision 611)
@@ -60,4 +60,5 @@
 DECLARE_ARRAY(double, 2, bounds_lon)
 DECLARE_ARRAY(double, 2, bounds_lat)
+DECLARE_ARRAY(double, 2, area)
 
 DECLARE_ENUM3(type,regular,curvilinear,unstructured)
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icdomain_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icdomain_attr.cpp	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icdomain_attr.cpp	(revision 611)
@@ -17,4 +17,31 @@
   typedef xios::CDomain*  domain_Ptr;
   
+  void cxios_set_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ;
+    domain_hdl->area.reference(tmp.copy());
+    domain_hdl->sendAttributToServer(domain_hdl->area);
+     CTimer::get("XIOS").suspend();
+  }
+  
+  void cxios_get_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ;
+    tmp=domain_hdl->area.getInheritedValue() ;
+     CTimer::get("XIOS").suspend();
+  }
+  
+  bool cxios_is_defined_domain_area(domain_Ptr domain_hdl )
+  {
+    CTimer::get("XIOS").resume();
+    bool isDefined = domain_hdl->area.hasInheritedValue();
+    CTimer::get("XIOS").suspend();
+    return isDefined;
+  }
+  
+  
+  
   void cxios_set_domain_bounds_lat(domain_Ptr domain_hdl, double* bounds_lat, int extent1, int extent2)
   {
Index: XIOS/branchs/xios-1.0/src/interface/c_attr/icdomaingroup_attr.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 611)
@@ -17,4 +17,31 @@
   typedef xios::CDomainGroup*  domaingroup_Ptr;
   
+  void cxios_set_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ;
+    domaingroup_hdl->area.reference(tmp.copy());
+    domaingroup_hdl->sendAttributToServer(domaingroup_hdl->area);
+     CTimer::get("XIOS").suspend();
+  }
+  
+  void cxios_get_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ;
+    tmp=domaingroup_hdl->area.getInheritedValue() ;
+     CTimer::get("XIOS").suspend();
+  }
+  
+  bool cxios_is_defined_domaingroup_area(domaingroup_Ptr domaingroup_hdl )
+  {
+    CTimer::get("XIOS").resume();
+    bool isDefined = domaingroup_hdl->area.hasInheritedValue();
+    CTimer::get("XIOS").suspend();
+    return isDefined;
+  }
+  
+  
+  
   void cxios_set_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl, double* bounds_lat, int extent1, int extent2)
   {
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/domain_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/domain_interface_attr.f90	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/domain_interface_attr.f90	(revision 611)
@@ -9,4 +9,27 @@
     
     
+    SUBROUTINE cxios_set_domain_area(domain_hdl, area, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_domain_area
+    
+    SUBROUTINE cxios_get_domain_area(domain_hdl, area, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domain_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_domain_area
+    
+    FUNCTION cxios_is_defined_domain_area(domain_hdl ) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_area
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_area
+    
+    
     SUBROUTINE cxios_set_domain_bounds_lat(domain_hdl, bounds_lat, extent1, extent2) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/domaingroup_interface_attr.f90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/domaingroup_interface_attr.f90	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/domaingroup_interface_attr.f90	(revision 611)
@@ -9,4 +9,27 @@
     
     
+    SUBROUTINE cxios_set_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_set_domaingroup_area
+    
+    SUBROUTINE cxios_get_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: domaingroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: area
+      INTEGER (kind = C_INT), VALUE  :: extent1
+      INTEGER (kind = C_INT), VALUE  :: extent2
+    END SUBROUTINE cxios_get_domaingroup_area
+    
+    FUNCTION cxios_is_defined_domaingroup_area(domaingroup_hdl ) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_area
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_area
+    
+    
     SUBROUTINE cxios_set_domaingroup_bounds_lat(domaingroup_hdl, bounds_lat, extent1, extent2) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomain_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomain_attr.F90	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomain_attr.F90	(revision 611)
@@ -12,7 +12,7 @@
   
   SUBROUTINE xios(set_domain_attr)  &
-    ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -21,4 +21,5 @@
       TYPE(txios(domain))  :: domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domain_id
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:)
@@ -62,7 +63,7 @@
       CALL xios(get_domain_handle)(domain_id,domain_hdl)
       CALL xios(set_domain_attr_hdl_)   &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -71,7 +72,7 @@
   
   SUBROUTINE xios(set_domain_attr_hdl)  &
-    ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -79,4 +80,5 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:)
@@ -119,7 +121,7 @@
       
       CALL xios(set_domain_attr_hdl_)  &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -128,5 +130,5 @@
   
   SUBROUTINE xios(set_domain_attr_hdl_)   &
-    ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_  &
     , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  &
@@ -136,4 +138,5 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:)
@@ -175,4 +178,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
       
+      IF (PRESENT(area_)) THEN
+        CALL cxios_set_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2))
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         CALL cxios_set_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2))
@@ -330,7 +337,7 @@
   
   SUBROUTINE xios(get_domain_attr)  &
-    ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -339,4 +346,5 @@
       TYPE(txios(domain))  :: domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domain_id
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:)
@@ -380,7 +388,7 @@
       CALL xios(get_domain_handle)(domain_id,domain_hdl)
       CALL xios(get_domain_attr_hdl_)   &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -389,7 +397,7 @@
   
   SUBROUTINE xios(get_domain_attr_hdl)  &
-    ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -397,4 +405,5 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:)
@@ -437,7 +446,7 @@
       
       CALL xios(get_domain_attr_hdl_)  &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -446,5 +455,5 @@
   
   SUBROUTINE xios(get_domain_attr_hdl_)   &
-    ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_  &
     , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  &
@@ -454,4 +463,5 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:)
@@ -493,4 +503,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_
       
+      IF (PRESENT(area_)) THEN
+        CALL cxios_get_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2))
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         CALL cxios_get_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2))
@@ -648,7 +662,7 @@
   
   SUBROUTINE xios(is_defined_domain_attr)  &
-    ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -657,4 +671,6 @@
       TYPE(txios(domain))  :: domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domain_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area
+      LOGICAL(KIND=C_BOOL) :: area_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat
       LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp
@@ -734,7 +750,7 @@
       CALL xios(get_domain_handle)(domain_id,domain_hdl)
       CALL xios(is_defined_domain_attr_hdl_)   &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -743,7 +759,7 @@
   
   SUBROUTINE xios(is_defined_domain_attr_hdl)  &
-    ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-    , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-    , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+    ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+    , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
     , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
     , zoom_nj_loc )
@@ -751,4 +767,6 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area
+      LOGICAL(KIND=C_BOOL) :: area_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat
       LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp
@@ -827,7 +845,7 @@
       
       CALL xios(is_defined_domain_attr_hdl_)  &
-      ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin  &
-      , data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend  &
-      , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
+      ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index  &
+      , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name  &
       , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj  &
       , zoom_nj_loc )
@@ -836,5 +854,5 @@
   
   SUBROUTINE xios(is_defined_domain_attr_hdl_)   &
-    ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_  &
     , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_  &
@@ -844,4 +862,6 @@
     IMPLICIT NONE
       TYPE(txios(domain)) , INTENT(IN) :: domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area_
+      LOGICAL(KIND=C_BOOL) :: area__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_
       LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp
@@ -919,4 +939,9 @@
       LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp
       
+      IF (PRESENT(area_)) THEN
+        area__tmp=cxios_is_defined_domain_area(domain_hdl%daddr)
+        area_=area__tmp
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         bounds_lat__tmp=cxios_is_defined_domain_bounds_lat(domain_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomaingroup_attr.F90
===================================================================
--- XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomaingroup_attr.F90	(revision 610)
+++ XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomaingroup_attr.F90	(revision 611)
@@ -12,5 +12,5 @@
   
   SUBROUTINE xios(set_domaingroup_attr)  &
-    ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -21,4 +21,5 @@
       TYPE(txios(domaingroup))  :: domaingroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:)
@@ -63,5 +64,5 @@
       CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
       CALL xios(set_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -72,5 +73,5 @@
   
   SUBROUTINE xios(set_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -80,4 +81,5 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:)
@@ -121,5 +123,5 @@
       
       CALL xios(set_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -130,5 +132,5 @@
   
   SUBROUTINE xios(set_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  &
     , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  &
@@ -138,4 +140,5 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:)
@@ -178,4 +181,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: zoom_nj_loc_
       
+      IF (PRESENT(area_)) THEN
+        CALL cxios_set_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2))
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         CALL cxios_set_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2))
@@ -337,5 +344,5 @@
   
   SUBROUTINE xios(get_domaingroup_attr)  &
-    ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -346,4 +353,5 @@
       TYPE(txios(domaingroup))  :: domaingroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:)
@@ -388,5 +396,5 @@
       CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
       CALL xios(get_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -397,5 +405,5 @@
   
   SUBROUTINE xios(get_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -405,4 +413,5 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:)
@@ -446,5 +455,5 @@
       
       CALL xios(get_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -455,5 +464,5 @@
   
   SUBROUTINE xios(get_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  &
     , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  &
@@ -463,4 +472,5 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:)
@@ -503,4 +513,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_
       
+      IF (PRESENT(area_)) THEN
+        CALL cxios_get_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2))
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         CALL cxios_get_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2))
@@ -662,5 +676,5 @@
   
   SUBROUTINE xios(is_defined_domaingroup_attr)  &
-    ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -671,4 +685,6 @@
       TYPE(txios(domaingroup))  :: domaingroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area
+      LOGICAL(KIND=C_BOOL) :: area_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat
       LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp
@@ -750,5 +766,5 @@
       CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl)
       CALL xios(is_defined_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -759,5 +775,5 @@
   
   SUBROUTINE xios(is_defined_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+    ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
     , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
     , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -767,4 +783,6 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area
+      LOGICAL(KIND=C_BOOL) :: area_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat
       LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp
@@ -845,5 +863,5 @@
       
       CALL xios(is_defined_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
+      ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index  &
       , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin  &
       , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo  &
@@ -854,5 +872,5 @@
   
   SUBROUTINE xios(is_defined_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
+    ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_  &
     , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_  &
     , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_  &
@@ -862,4 +880,6 @@
     IMPLICIT NONE
       TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: area_
+      LOGICAL(KIND=C_BOOL) :: area__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_
       LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp
@@ -939,4 +959,9 @@
       LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp
       
+      IF (PRESENT(area_)) THEN
+        area__tmp=cxios_is_defined_domaingroup_area(domaingroup_hdl%daddr)
+        area_=area__tmp
+      ENDIF
+      
       IF (PRESENT(bounds_lat_)) THEN
         bounds_lat__tmp=cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl%daddr)
Index: XIOS/branchs/xios-1.0/src/node/domain.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/domain.cpp	(revision 610)
+++ XIOS/branchs/xios-1.0/src/node/domain.cpp	(revision 611)
@@ -21,10 +21,10 @@
    CDomain::CDomain(void)
       : CObjectTemplate<CDomain>(), CDomainAttributes()
-      , isChecked(false),  relFiles()
+      , isChecked(false), hasBounds(false), hasArea(false), relFiles()
    { /* Ne rien faire de plus */ }
 
    CDomain::CDomain(const StdString & id)
       : CObjectTemplate<CDomain>(id), CDomainAttributes()
-      , isChecked(false), relFiles()
+      , isChecked(false), hasBounds(false), hasArea(false), relFiles()
          { /* Ne rien faire de plus */ }
 
@@ -108,4 +108,8 @@
           for(int j=0;j<nj;j++) mask(0,j)=mask_tmp(j,0) ;
          }
+
+         if (!area.isEmpty())
+           area.transposeSelf(1, 0);
+
          ni=1 ;
          ibegin=1 ;
@@ -533,4 +537,17 @@
    }
 
+   void CDomain::checkArea(void)
+   {
+     hasArea = !area.isEmpty();
+     if (hasArea)
+     {
+       if (area.extent(0) != ni || area.extent(1) != nj)
+       {
+         ERROR("void CDomain::checkArea(void)",
+               "The area attribute must be of size ni x nj.");
+       }
+     }
+   }
+
    //----------------------------------------------------------------
 
@@ -543,4 +560,5 @@
       this->checkZoom();
       this->checkBounds();
+      this->checkArea();
 
       if (context->hasClient)
@@ -561,5 +579,5 @@
         computeConnectedServer() ;
         sendServerAttribut() ;
-        sendLonLat() ;
+        sendLonLatArea();
       }
 
@@ -701,5 +719,5 @@
 
 
-  void CDomain::sendLonLat(void)
+  void CDomain::sendLonLatArea(void)
   {
     int ns,n,i,j,ind,nv;
@@ -709,9 +727,12 @@
     // send lon lat for each connected server
     CEventClient event(getType(), EVENT_ID_LON_LAT);
+    CEventClient eventArea(getType(), EVENT_ID_AREA);
 
     list<CMessage> list_msg;
+    list<CMessage> list_msgArea;
     list<CArray<int,1> > list_indi,list_indj;
     list<CArray<double,1> >list_lon,list_lat;
     list<CArray<double,2> >list_boundslon,list_boundslat;
+    list<CArray<double,1> > list_area;
 
     for (int ns = 0; ns < connectedServer.size(); ns++)
@@ -729,4 +750,6 @@
         list_boundslat.push_back(CArray<double,2>(nvertex, nbData));
       }
+      if (hasArea)
+        list_area.push_back(CArray<double,1>(nbData));
 
       CArray<int,1>& indi = list_indi.back();
@@ -758,4 +781,7 @@
         indi(n) = ibegin + i_index(i - ibegin + 1, j - jbegin + 1) - 1;
         indj(n) = jbegin + j_index(i - ibegin + 1, j - jbegin + 1) - 1;
+
+        if (hasArea)
+          list_area.back()(n) = area(i - ibegin + 1, j - jbegin + 1);
       }
 
@@ -768,7 +794,16 @@
         
       event.push(connectedServer[ns], nbSenders[ns], list_msg.back());
+
+      if (hasArea)
+      {
+        list_msgArea.push_back(CMessage());
+        list_msgArea.back() << this->getId() << list_area.back();
+        eventArea.push(connectedServer[ns], nbSenders[ns], list_msgArea.back());
+      }
     }
 
     client->sendEvent(event);
+    if (hasArea)
+      client->sendEvent(eventArea);
   }
 
@@ -787,4 +822,8 @@
         case EVENT_ID_LON_LAT:
           recvLonLat(event);
+          return true;
+          break;
+        case EVENT_ID_AREA:
+          recvArea(event);
           return true;
           break;
@@ -837,4 +876,7 @@
       bounds_lat_srv = 0. ;
     }
+
+    if (hasArea)
+      area_srv.resize(zoom_ni_srv * zoom_nj_srv);
   }
 
@@ -882,9 +924,31 @@
     }
   }
-   //----------------------------------------------------------------
-
-
-
-   ///---------------------------------------------------------------
-
+
+  void CDomain::recvArea(CEventServer& event)
+  {
+    list<CEventServer::SSubEvent>::iterator it;
+    for (it = event.subEvents.begin(); it != event.subEvents.end(); ++it)
+    {
+      CBufferIn* buffer = it->buffer;
+      string domainId;
+      *buffer >> domainId;
+      get(domainId)->recvArea(it->rank, *buffer);
+    }
+  }
+
+  void CDomain::recvArea(int rank, CBufferIn& buffer)
+  {
+    CArray<int,1> &indi = indiSrv[rank], &indj = indjSrv[rank];
+    CArray<double,1> clientArea;
+
+    buffer >> clientArea;
+
+    int i, j, ind_srv;
+    for (int ind = 0; ind < indi.numElements(); ind++)
+    {
+      i = indi(ind); j = indj(ind);
+      ind_srv = (i - (zoom_ibegin_srv - 1)) + (j - (zoom_jbegin_srv - 1)) * zoom_ni_srv;
+      area_srv(ind_srv) = clientArea(ind);
+    }
+  }
 } // namespace xios
Index: XIOS/branchs/xios-1.0/src/node/domain.hpp
===================================================================
--- XIOS/branchs/xios-1.0/src/node/domain.hpp	(revision 610)
+++ XIOS/branchs/xios-1.0/src/node/domain.hpp	(revision 611)
@@ -37,5 +37,5 @@
          enum EEventId
          {
-           EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT
+           EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT, EVENT_ID_AREA
          } ;
 
@@ -71,4 +71,5 @@
          void checkZoom(void);
          void checkBounds(void);
+         void checkArea(void);
 
 
@@ -100,4 +101,5 @@
          CArray<double, 1> lonvalue_srv, latvalue_srv ;
          CArray<double, 2> bounds_lon_srv, bounds_lat_srv ;
+         CArray<double, 1> area_srv;
 
 
@@ -119,11 +121,14 @@
          void completeLonLatClient(void);
          void sendServerAttribut(void);
-         void sendLonLat(void);
+         void sendLonLatArea(void);
          void computeConnectedServer(void);
+
          static bool dispatchEvent(CEventServer& event);
          static void recvServerAttribut(CEventServer& event);
          static void recvLonLat(CEventServer& event);
+         static void recvArea(CEventServer& event);
          void recvServerAttribut(CBufferIn& buffer);
          void recvLonLat(int rank, CBufferIn& buffer);
+         void recvArea(int rank, CBufferIn& buffer);
 
          /// Destructeur ///
@@ -139,6 +144,7 @@
          bool isCurvilinear ;
          bool hasBounds ;
+         bool hasArea;
+
        private :
-
          /// ProriÃ©tÃ©s protÃ©gÃ©es ///
          bool isChecked;
Index: XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
===================================================================
--- XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 610)
+++ XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp	(revision 611)
@@ -98,4 +98,5 @@
 
          string lonid,latid,bounds_lonid,bounds_latid ;
+         string areaId = "area" + appendDomid;
 /*
          StdString lonid_loc = (server->intraCommSize > 1)
@@ -209,4 +210,10 @@
                  //SuperClassWriter::setDefaultValue(maskid, &dvm);
 
+                 if (domain->hasArea)
+                 {
+                   SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);
+                   SuperClassWriter::addAttribute("units", StdString("m2"), &areaId);
+                 }
+
                  SuperClassWriter::definition_end();
 
@@ -224,4 +231,8 @@
                      break;
                  }
+
+                 if (domain->hasArea)
+                   SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0);
+
                  SuperClassWriter::definition_start();
 
@@ -232,5 +243,4 @@
                  SuperClassWriter::addDimension(dimXid, domain->zoom_ni.getValue());
                  SuperClassWriter::addDimension(dimYid, domain->zoom_nj.getValue());
-
 
                  switch (domain->type)
@@ -253,4 +263,14 @@
                      break;
                  }
+
+                 if (domain->hasArea)
+                 {
+                   dim0.clear();
+                   dim0.push_back(dimYid); dim0.push_back(dimXid);
+                   SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);
+                   SuperClassWriter::addAttribute("units", StdString("m2"), &areaId);
+                   dim0.clear();
+                 }
+
                  this->writeAxisAttributes
                     (lonid, "X", "longitude", "Longitude", "degrees_east", domid);
@@ -258,6 +278,6 @@
                     (latid, "Y", "latitude", "Latitude", "degrees_north", domid);
 
-
                  SuperClassWriter::definition_end();
+
                  switch (domain->type)
                  {
@@ -268,5 +288,5 @@
                      if (domain->isEmpty())
                      {
-                       start[0]=0 ; start [1]=0 ;
+                       start[0]=0 ; start[1]=0 ;
                        count[0]=0 ; count[1]=0 ;
                      }
@@ -306,5 +326,28 @@
                    }
                  }
+
+                 if (domain->hasArea)
+                 {
+                   std::vector<StdSize> start(2);
+                   std::vector<StdSize> count(2);
+
+                   if (domain->isEmpty())
+                   {
+                     start[0] = 0; start[1] = 0;
+                     count[0] = 0; count[1] = 0;
+                   }
+                   else
+                   {
+                     start[1] = domain->zoom_ibegin_srv - domain->zoom_ibegin.getValue();
+                     start[0] = domain->zoom_jbegin_srv - domain->zoom_jbegin.getValue();
+                     count[1] = domain->zoom_ni_srv;
+                     count[0] = domain->zoom_nj_srv;
+                   }
+
+                   SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0, &start, &count);
+                 }
+
                  SuperClassWriter::definition_start();
+
                  break;
               }
@@ -349,4 +392,5 @@
 
          string lonid,latid,bounds_lonid,bounds_latid ;
+         string areaId = "area" + appendDomid;
 
          try
@@ -385,4 +429,10 @@
                  dim0.push_back(dimXid);
 
+                 if (domain->hasArea)
+                 {
+                   SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);
+                   SuperClassWriter::addAttribute("units", StdString("m2"), &areaId);
+                 }
+
                  SuperClassWriter::definition_end();
 
@@ -395,4 +445,8 @@
                    SuperClassWriter::writeData(domain->bounds_lat_srv, bounds_latid, isCollective, 0);
                  }
+
+                 if (domain->hasArea)
+                   SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0);
+
                  SuperClassWriter::definition_start();
                  break ;
@@ -424,4 +478,12 @@
                  }
 
+                 if (domain->hasArea)
+                 {
+                   dim0.clear();
+                   dim0.push_back(dimXid);
+                   SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);
+                   SuperClassWriter::addAttribute("units", StdString("m2"), &areaId);
+                 }
+
                  SuperClassWriter::definition_end();
 
@@ -454,4 +516,6 @@
                  }
 
+                 if (domain->hasArea)
+                   SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0, &start, &count);
 
                  SuperClassWriter::definition_start();
@@ -740,4 +804,7 @@
               SuperClassWriter::addAttribute("interval_write", duration.toString(), &fieldid);
            }
+
+           if (domain->hasArea)
+             SuperClassWriter::addAttribute("cell_measures", "area: area" + appendDomid, &fieldid);
 
            if (!field->default_value.isEmpty())
