Index: XIOS/trunk/src/interface/c_attr/icfield_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 991)
+++ XIOS/trunk/src/interface/c_attr/icfield_attr.cpp	(revision 1005)
@@ -237,4 +237,30 @@
 
 
+  void cxios_set_field_expr(field_Ptr field_hdl, const char * expr, int expr_size)
+  {
+    std::string expr_str;
+    if (!cstr2string(expr, expr_size, expr_str)) return;
+    CTimer::get("XIOS").resume();
+    field_hdl->expr.setValue(expr_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_field_expr(field_Ptr field_hdl, char * expr, int expr_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(field_hdl->expr.getInheritedValue(), expr, expr_size))
+      ERROR("void cxios_get_field_expr(field_Ptr field_hdl, char * expr, int expr_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_field_expr(field_Ptr field_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = field_hdl->expr.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_field_field_ref(field_Ptr field_hdl, const char * field_ref, int field_ref_size)
   {
Index: XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 991)
+++ XIOS/trunk/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 1005)
@@ -237,4 +237,30 @@
 
 
+  void cxios_set_fieldgroup_expr(fieldgroup_Ptr fieldgroup_hdl, const char * expr, int expr_size)
+  {
+    std::string expr_str;
+    if (!cstr2string(expr, expr_size, expr_str)) return;
+    CTimer::get("XIOS").resume();
+    fieldgroup_hdl->expr.setValue(expr_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_fieldgroup_expr(fieldgroup_Ptr fieldgroup_hdl, char * expr, int expr_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(fieldgroup_hdl->expr.getInheritedValue(), expr, expr_size))
+      ERROR("void cxios_get_fieldgroup_expr(fieldgroup_Ptr fieldgroup_hdl, char * expr, int expr_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_fieldgroup_expr(fieldgroup_Ptr fieldgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = fieldgroup_hdl->expr.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_fieldgroup_field_ref(fieldgroup_Ptr fieldgroup_hdl, const char * field_ref, int field_ref_size)
   {
Index: XIOS/trunk/src/interface/c_attr/icinterpolate_domain_attr.cpp
===================================================================
--- XIOS/trunk/src/interface/c_attr/icinterpolate_domain_attr.cpp	(revision 991)
+++ XIOS/trunk/src/interface/c_attr/icinterpolate_domain_attr.cpp	(revision 1005)
@@ -114,3 +114,52 @@
      return isDefined;
   }
+
+
+  void cxios_set_interpolate_domain_weight_filename(interpolate_domain_Ptr interpolate_domain_hdl, const char * weight_filename, int weight_filename_size)
+  {
+    std::string weight_filename_str;
+    if (!cstr2string(weight_filename, weight_filename_size, weight_filename_str)) return;
+    CTimer::get("XIOS").resume();
+    interpolate_domain_hdl->weight_filename.setValue(weight_filename_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_interpolate_domain_weight_filename(interpolate_domain_Ptr interpolate_domain_hdl, char * weight_filename, int weight_filename_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(interpolate_domain_hdl->weight_filename.getInheritedValue(), weight_filename, weight_filename_size))
+      ERROR("void cxios_get_interpolate_domain_weight_filename(interpolate_domain_Ptr interpolate_domain_hdl, char * weight_filename, int weight_filename_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_interpolate_domain_weight_filename(interpolate_domain_Ptr interpolate_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = interpolate_domain_hdl->weight_filename.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_interpolate_domain_write_weight(interpolate_domain_Ptr interpolate_domain_hdl, bool write_weight)
+  {
+    CTimer::get("XIOS").resume();
+    interpolate_domain_hdl->write_weight.setValue(write_weight);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_interpolate_domain_write_weight(interpolate_domain_Ptr interpolate_domain_hdl, bool* write_weight)
+  {
+    CTimer::get("XIOS").resume();
+    *write_weight = interpolate_domain_hdl->write_weight.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_interpolate_domain_write_weight(interpolate_domain_Ptr interpolate_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = interpolate_domain_hdl->write_weight.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
 }
Index: XIOS/trunk/src/interface/fortran_attr/field_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/field_interface_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/field_interface_attr.F90	(revision 1005)
@@ -189,4 +189,25 @@
 
 
+    SUBROUTINE cxios_set_field_expr(field_hdl, expr, expr_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: expr
+      INTEGER  (kind = C_INT)     , VALUE        :: expr_size
+    END SUBROUTINE cxios_set_field_expr
+
+    SUBROUTINE cxios_get_field_expr(field_hdl, expr, expr_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: expr
+      INTEGER  (kind = C_INT)     , VALUE        :: expr_size
+    END SUBROUTINE cxios_get_field_expr
+
+    FUNCTION cxios_is_defined_field_expr(field_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_field_expr
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+    END FUNCTION cxios_is_defined_field_expr
+
+
     SUBROUTINE cxios_set_field_field_ref(field_hdl, field_ref, field_ref_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/fieldgroup_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/fieldgroup_interface_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/fieldgroup_interface_attr.F90	(revision 1005)
@@ -189,4 +189,25 @@
 
 
+    SUBROUTINE cxios_set_fieldgroup_expr(fieldgroup_hdl, expr, expr_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: expr
+      INTEGER  (kind = C_INT)     , VALUE        :: expr_size
+    END SUBROUTINE cxios_set_fieldgroup_expr
+
+    SUBROUTINE cxios_get_fieldgroup_expr(fieldgroup_hdl, expr, expr_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: expr
+      INTEGER  (kind = C_INT)     , VALUE        :: expr_size
+    END SUBROUTINE cxios_get_fieldgroup_expr
+
+    FUNCTION cxios_is_defined_fieldgroup_expr(fieldgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_fieldgroup_expr
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+    END FUNCTION cxios_is_defined_fieldgroup_expr
+
+
     SUBROUTINE cxios_set_fieldgroup_field_ref(fieldgroup_hdl, field_ref, field_ref_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/trunk/src/interface/fortran_attr/ifield_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/ifield_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/ifield_attr.F90	(revision 1005)
@@ -13,7 +13,7 @@
   SUBROUTINE xios(set_field_attr)  &
     ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -31,4 +31,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset
@@ -59,7 +60,7 @@
       CALL xios(set_field_attr_hdl_)   &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(set_field_attr)
@@ -67,7 +68,7 @@
   SUBROUTINE xios(set_field_attr_hdl)  &
     ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -84,4 +85,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset
@@ -110,7 +112,7 @@
       CALL xios(set_field_attr_hdl_)  &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(set_field_attr_hdl)
@@ -118,5 +120,5 @@
   SUBROUTINE xios(set_field_attr_hdl_)   &
     ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_, default_value_  &
-    , detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_path_  &
+    , detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_, freq_op_, grid_path_  &
     , grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_  &
     , scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_  &
@@ -136,4 +138,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
       LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset_
@@ -207,4 +210,9 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        CALL cxios_set_field_expr &
+      (field_hdl%daddr, expr_, len(expr_))
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         CALL cxios_set_field_field_ref &
@@ -314,7 +322,7 @@
   SUBROUTINE xios(get_field_attr)  &
     ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -332,4 +340,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset
@@ -360,7 +369,7 @@
       CALL xios(get_field_attr_hdl_)   &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(get_field_attr)
@@ -368,7 +377,7 @@
   SUBROUTINE xios(get_field_attr_hdl)  &
     ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -385,4 +394,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset
@@ -411,7 +421,7 @@
       CALL xios(get_field_attr_hdl_)  &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(get_field_attr_hdl)
@@ -419,5 +429,5 @@
   SUBROUTINE xios(get_field_attr_hdl_)   &
     ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_, default_value_  &
-    , detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_path_  &
+    , detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_, freq_op_, grid_path_  &
     , grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_  &
     , scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_  &
@@ -437,4 +447,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
       LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset_
@@ -508,4 +519,9 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        CALL cxios_get_field_expr &
+      (field_hdl%daddr, expr_, len(expr_))
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         CALL cxios_get_field_field_ref &
@@ -615,7 +631,7 @@
   SUBROUTINE xios(is_defined_field_attr)  &
     ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -640,4 +656,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL(KIND=C_BOOL) :: enabled_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr
+      LOGICAL(KIND=C_BOOL) :: expr_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref
       LOGICAL(KIND=C_BOOL) :: field_ref_tmp
@@ -685,7 +703,7 @@
       CALL xios(is_defined_field_attr_hdl_)   &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_field_attr)
@@ -693,7 +711,7 @@
   SUBROUTINE xios(is_defined_field_attr_hdl)  &
     ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-    , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -717,4 +735,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL(KIND=C_BOOL) :: enabled_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr
+      LOGICAL(KIND=C_BOOL) :: expr_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref
       LOGICAL(KIND=C_BOOL) :: field_ref_tmp
@@ -760,7 +780,7 @@
       CALL xios(is_defined_field_attr_hdl_)  &
       ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref, scale_factor  &
-      , standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
+      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_field_attr_hdl)
@@ -768,5 +788,5 @@
   SUBROUTINE xios(is_defined_field_attr_hdl_)   &
     ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_, default_value_  &
-    , detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_, grid_path_  &
+    , detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_, freq_op_, grid_path_  &
     , grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_  &
     , scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_  &
@@ -793,4 +813,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled_
       LOGICAL(KIND=C_BOOL) :: enabled__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr_
+      LOGICAL(KIND=C_BOOL) :: expr__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref_
       LOGICAL(KIND=C_BOOL) :: field_ref__tmp
@@ -888,4 +910,10 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        expr__tmp = cxios_is_defined_field_expr &
+      (field_hdl%daddr)
+        expr_ = expr__tmp
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         field_ref__tmp = cxios_is_defined_field_field_ref &
Index: XIOS/trunk/src/interface/fortran_attr/ifieldgroup_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/ifieldgroup_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/ifieldgroup_attr.F90	(revision 1005)
@@ -13,7 +13,8 @@
   SUBROUTINE xios(set_fieldgroup_attr)  &
     ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -31,4 +32,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset
@@ -60,7 +62,8 @@
       CALL xios(set_fieldgroup_attr_hdl_)   &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(set_fieldgroup_attr)
@@ -68,7 +71,8 @@
   SUBROUTINE xios(set_fieldgroup_attr_hdl)  &
     ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -85,4 +89,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset
@@ -112,7 +117,8 @@
       CALL xios(set_fieldgroup_attr_hdl_)  &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(set_fieldgroup_attr_hdl)
@@ -120,6 +126,6 @@
   SUBROUTINE xios(set_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_  &
-    , grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
+    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
+    , freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
     , prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
     , unit_, valid_max_, valid_min_ )
@@ -138,4 +144,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: enabled_
       LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: expr_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: field_ref_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: freq_offset_
@@ -210,4 +217,9 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        CALL cxios_set_fieldgroup_expr &
+      (fieldgroup_hdl%daddr, expr_, len(expr_))
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         CALL cxios_set_fieldgroup_field_ref &
@@ -322,7 +334,8 @@
   SUBROUTINE xios(get_fieldgroup_attr)  &
     ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -340,4 +353,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset
@@ -369,7 +383,8 @@
       CALL xios(get_fieldgroup_attr_hdl_)   &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(get_fieldgroup_attr)
@@ -377,7 +392,8 @@
   SUBROUTINE xios(get_fieldgroup_attr_hdl)  &
     ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -394,4 +410,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL (KIND=C_BOOL) :: enabled_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset
@@ -421,7 +438,8 @@
       CALL xios(get_fieldgroup_attr_hdl_)  &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(get_fieldgroup_attr_hdl)
@@ -429,6 +447,6 @@
   SUBROUTINE xios(get_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_  &
-    , grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
+    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
+    , freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
     , prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
     , unit_, valid_max_, valid_min_ )
@@ -447,4 +465,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: enabled_
       LOGICAL (KIND=C_BOOL) :: enabled__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: expr_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: field_ref_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: freq_offset_
@@ -519,4 +538,9 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        CALL cxios_get_fieldgroup_expr &
+      (fieldgroup_hdl%daddr, expr_, len(expr_))
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         CALL cxios_get_fieldgroup_field_ref &
@@ -631,7 +655,8 @@
   SUBROUTINE xios(is_defined_fieldgroup_attr)  &
     ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -656,4 +681,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL(KIND=C_BOOL) :: enabled_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr
+      LOGICAL(KIND=C_BOOL) :: expr_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref
       LOGICAL(KIND=C_BOOL) :: field_ref_tmp
@@ -703,7 +730,8 @@
       CALL xios(is_defined_fieldgroup_attr_hdl_)   &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(is_defined_fieldgroup_attr)
@@ -711,7 +739,8 @@
   SUBROUTINE xios(is_defined_fieldgroup_attr_hdl)  &
     ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-    , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-    , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-    , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+    , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+    , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+     )
 
     IMPLICIT NONE
@@ -735,4 +764,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled
       LOGICAL(KIND=C_BOOL) :: enabled_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr
+      LOGICAL(KIND=C_BOOL) :: expr_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref
       LOGICAL(KIND=C_BOOL) :: field_ref_tmp
@@ -780,7 +811,8 @@
       CALL xios(is_defined_fieldgroup_attr_hdl_)  &
       ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, compression_level, default_value  &
-      , detect_missing_value, domain_ref, enabled, field_ref, freq_offset, freq_op, grid_path, grid_ref  &
-      , group_ref, indexed_output, level, long_name, name, operation, prec, read_access, scalar_ref  &
-      , scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min )
+      , detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op, grid_path  &
+      , grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
+      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
+       )
 
   END SUBROUTINE xios(is_defined_fieldgroup_attr_hdl)
@@ -788,6 +820,6 @@
   SUBROUTINE xios(is_defined_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, field_ref_, freq_offset_, freq_op_  &
-    , grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
+    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
+    , freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_, name_, operation_  &
     , prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
     , unit_, valid_max_, valid_min_ )
@@ -813,4 +845,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: enabled_
       LOGICAL(KIND=C_BOOL) :: enabled__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: expr_
+      LOGICAL(KIND=C_BOOL) :: expr__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: field_ref_
       LOGICAL(KIND=C_BOOL) :: field_ref__tmp
@@ -910,4 +944,10 @@
       ENDIF
 
+      IF (PRESENT(expr_)) THEN
+        expr__tmp = cxios_is_defined_fieldgroup_expr &
+      (fieldgroup_hdl%daddr)
+        expr_ = expr__tmp
+      ENDIF
+
       IF (PRESENT(field_ref_)) THEN
         field_ref__tmp = cxios_is_defined_fieldgroup_field_ref &
Index: XIOS/trunk/src/interface/fortran_attr/iinterpolate_domain_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/iinterpolate_domain_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/iinterpolate_domain_attr.F90	(revision 1005)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_interpolate_domain_attr)  &
-    ( interpolate_domain_id, file, mode, order, renormalize )
+    ( interpolate_domain_id, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -22,14 +22,17 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: weight_filename
+      LOGICAL  , OPTIONAL, INTENT(IN) :: write_weight
+      LOGICAL (KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(get_interpolate_domain_handle) &
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(set_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(set_interpolate_domain_attr)
 
   SUBROUTINE xios(set_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, file, mode, order, renormalize )
+    ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -40,12 +43,16 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: weight_filename
+      LOGICAL  , OPTIONAL, INTENT(IN) :: write_weight
+      LOGICAL (KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(set_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(set_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(set_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_ )
+    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_, weight_filename_, write_weight_  &
+     )
 
     IMPLICIT NONE
@@ -56,4 +63,7 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize_
       LOGICAL (KIND=C_BOOL) :: renormalize__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: weight_filename_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: write_weight_
+      LOGICAL (KIND=C_BOOL) :: write_weight__tmp
 
       IF (PRESENT(file_)) THEN
@@ -78,8 +88,19 @@
       ENDIF
 
+      IF (PRESENT(weight_filename_)) THEN
+        CALL cxios_set_interpolate_domain_weight_filename &
+      (interpolate_domain_hdl%daddr, weight_filename_, len(weight_filename_))
+      ENDIF
+
+      IF (PRESENT(write_weight_)) THEN
+        write_weight__tmp = write_weight_
+        CALL cxios_set_interpolate_domain_write_weight &
+      (interpolate_domain_hdl%daddr, write_weight__tmp)
+      ENDIF
+
   END SUBROUTINE xios(set_interpolate_domain_attr_hdl_)
 
   SUBROUTINE xios(get_interpolate_domain_attr)  &
-    ( interpolate_domain_id, file, mode, order, renormalize )
+    ( interpolate_domain_id, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -91,14 +112,17 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: weight_filename
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: write_weight
+      LOGICAL (KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(get_interpolate_domain_handle) &
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(get_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(get_interpolate_domain_attr)
 
   SUBROUTINE xios(get_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, file, mode, order, renormalize )
+    ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -109,12 +133,16 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: weight_filename
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: write_weight
+      LOGICAL (KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(get_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(get_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(get_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_ )
+    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_, weight_filename_, write_weight_  &
+     )
 
     IMPLICIT NONE
@@ -125,4 +153,7 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize_
       LOGICAL (KIND=C_BOOL) :: renormalize__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: weight_filename_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: write_weight_
+      LOGICAL (KIND=C_BOOL) :: write_weight__tmp
 
       IF (PRESENT(file_)) THEN
@@ -147,8 +178,19 @@
       ENDIF
 
+      IF (PRESENT(weight_filename_)) THEN
+        CALL cxios_get_interpolate_domain_weight_filename &
+      (interpolate_domain_hdl%daddr, weight_filename_, len(weight_filename_))
+      ENDIF
+
+      IF (PRESENT(write_weight_)) THEN
+        CALL cxios_get_interpolate_domain_write_weight &
+      (interpolate_domain_hdl%daddr, write_weight__tmp)
+        write_weight_ = write_weight__tmp
+      ENDIF
+
   END SUBROUTINE xios(get_interpolate_domain_attr_hdl_)
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr)  &
-    ( interpolate_domain_id, file, mode, order, renormalize )
+    ( interpolate_domain_id, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -163,14 +205,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL(KIND=C_BOOL) :: renormalize_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: weight_filename
+      LOGICAL(KIND=C_BOOL) :: weight_filename_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: write_weight
+      LOGICAL(KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(get_interpolate_domain_handle) &
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(is_defined_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(is_defined_interpolate_domain_attr)
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, file, mode, order, renormalize )
+    ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
@@ -184,12 +230,17 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL(KIND=C_BOOL) :: renormalize_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: weight_filename
+      LOGICAL(KIND=C_BOOL) :: weight_filename_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: write_weight
+      LOGICAL(KIND=C_BOOL) :: write_weight_tmp
 
       CALL xios(is_defined_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, file, mode, order, renormalize )
+      ( interpolate_domain_hdl, file, mode, order, renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_ )
+    ( interpolate_domain_hdl, file_, mode_, order_, renormalize_, weight_filename_, write_weight_  &
+     )
 
     IMPLICIT NONE
@@ -203,4 +254,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize_
       LOGICAL(KIND=C_BOOL) :: renormalize__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: weight_filename_
+      LOGICAL(KIND=C_BOOL) :: weight_filename__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: write_weight_
+      LOGICAL(KIND=C_BOOL) :: write_weight__tmp
 
       IF (PRESENT(file_)) THEN
@@ -228,4 +283,16 @@
       ENDIF
 
+      IF (PRESENT(weight_filename_)) THEN
+        weight_filename__tmp = cxios_is_defined_interpolate_domain_weight_filename &
+      (interpolate_domain_hdl%daddr)
+        weight_filename_ = weight_filename__tmp
+      ENDIF
+
+      IF (PRESENT(write_weight_)) THEN
+        write_weight__tmp = cxios_is_defined_interpolate_domain_write_weight &
+      (interpolate_domain_hdl%daddr)
+        write_weight_ = write_weight__tmp
+      ENDIF
+
   END SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl_)
 
Index: XIOS/trunk/src/interface/fortran_attr/interpolate_domain_interface_attr.F90
===================================================================
--- XIOS/trunk/src/interface/fortran_attr/interpolate_domain_interface_attr.F90	(revision 991)
+++ XIOS/trunk/src/interface/fortran_attr/interpolate_domain_interface_attr.F90	(revision 1005)
@@ -89,4 +89,44 @@
     END FUNCTION cxios_is_defined_interpolate_domain_renormalize
 
+
+    SUBROUTINE cxios_set_interpolate_domain_weight_filename(interpolate_domain_hdl, weight_filename, weight_filename_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: weight_filename
+      INTEGER  (kind = C_INT)     , VALUE        :: weight_filename_size
+    END SUBROUTINE cxios_set_interpolate_domain_weight_filename
+
+    SUBROUTINE cxios_get_interpolate_domain_weight_filename(interpolate_domain_hdl, weight_filename, weight_filename_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: weight_filename
+      INTEGER  (kind = C_INT)     , VALUE        :: weight_filename_size
+    END SUBROUTINE cxios_get_interpolate_domain_weight_filename
+
+    FUNCTION cxios_is_defined_interpolate_domain_weight_filename(interpolate_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_interpolate_domain_weight_filename
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+    END FUNCTION cxios_is_defined_interpolate_domain_weight_filename
+
+
+    SUBROUTINE cxios_set_interpolate_domain_write_weight(interpolate_domain_hdl, write_weight) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: write_weight
+    END SUBROUTINE cxios_set_interpolate_domain_write_weight
+
+    SUBROUTINE cxios_get_interpolate_domain_write_weight(interpolate_domain_hdl, write_weight) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      LOGICAL (KIND=C_BOOL)             :: write_weight
+    END SUBROUTINE cxios_get_interpolate_domain_write_weight
+
+    FUNCTION cxios_is_defined_interpolate_domain_write_weight(interpolate_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_interpolate_domain_write_weight
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+    END FUNCTION cxios_is_defined_interpolate_domain_write_weight
+
   END INTERFACE
 
