Changeset 609
- Timestamp:
- 06/05/15 16:42:18 (9 years ago)
- Location:
- XIOS
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/branchs/xios-1.0/src/config/axis_attribute.conf
r501 r609 10 10 DECLARE_ATTRIBUTE(int, zoom_size) 11 11 DECLARE_ENUM2(positive, up, down) 12 12 13 DECLARE_ARRAY(double, 1, value) 13 14 14 DECLARE_ARRAY(double, 2 , bounds) -
XIOS/branchs/xios-1.0/src/interface/c_attr/icaxis_attr.cpp
r581 r609 17 17 typedef xios::CAxis* axis_Ptr; 18 18 19 void cxios_set_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(bounds,shape(extent1,extent2),neverDeleteData) ; 23 axis_hdl->bounds.reference(tmp.copy()); 24 axis_hdl->sendAttributToServer(axis_hdl->bounds); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(bounds,shape(extent1,extent2),neverDeleteData) ; 32 tmp=axis_hdl->bounds.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_axis_bounds(axis_Ptr axis_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 bool isDefined = axis_hdl->bounds.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 return isDefined; 42 } 43 44 45 19 46 void cxios_set_axis_long_name(axis_Ptr axis_hdl, const char * long_name, int long_name_size) 20 47 { -
XIOS/branchs/xios-1.0/src/interface/c_attr/icaxisgroup_attr.cpp
r581 r609 17 17 typedef xios::CAxisGroup* axisgroup_Ptr; 18 18 19 void cxios_set_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(bounds,shape(extent1,extent2),neverDeleteData) ; 23 axisgroup_hdl->bounds.reference(tmp.copy()); 24 axisgroup_hdl->sendAttributToServer(axisgroup_hdl->bounds); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(bounds,shape(extent1,extent2),neverDeleteData) ; 32 tmp=axisgroup_hdl->bounds.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 bool isDefined = axisgroup_hdl->bounds.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 return isDefined; 42 } 43 44 45 19 46 void cxios_set_axisgroup_group_ref(axisgroup_Ptr axisgroup_hdl, const char * group_ref, int group_ref_size) 20 47 { -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/axis_interface_attr.f90
r501 r609 9 9 10 10 11 SUBROUTINE cxios_set_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_axis_bounds 18 19 SUBROUTINE cxios_get_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_axis_bounds 26 27 FUNCTION cxios_is_defined_axis_bounds(axis_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_bounds 30 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 31 END FUNCTION cxios_is_defined_axis_bounds 32 33 11 34 SUBROUTINE cxios_set_axis_long_name(axis_hdl, long_name, long_name_size) BIND(C) 12 35 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/axisgroup_interface_attr.f90
r501 r609 9 9 10 10 11 SUBROUTINE cxios_set_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_axisgroup_bounds 18 19 SUBROUTINE cxios_get_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_axisgroup_bounds 26 27 FUNCTION cxios_is_defined_axisgroup_bounds(axisgroup_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_bounds 30 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 31 END FUNCTION cxios_is_defined_axisgroup_bounds 32 33 11 34 SUBROUTINE cxios_set_axisgroup_group_ref(axisgroup_hdl, group_ref, group_ref_size) BIND(C) 12 35 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxis_attr.F90
r501 r609 12 12 13 13 SUBROUTINE xios(set_axis_attr) & 14 ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end &14 ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 15 15 , zoom_size ) 16 16 … … 18 18 TYPE(txios(axis)) :: axis_hdl 19 19 CHARACTER(LEN=*), INTENT(IN) ::axis_id 20 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 20 21 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name 21 22 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name … … 31 32 CALL xios(get_axis_handle)(axis_id,axis_hdl) 32 33 CALL xios(set_axis_attr_hdl_) & 33 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&34 , zoom_ size )34 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 35 , zoom_end, zoom_size ) 35 36 36 37 END SUBROUTINE xios(set_axis_attr) 37 38 38 39 SUBROUTINE xios(set_axis_attr_hdl) & 39 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 40 , zoom_size ) 41 42 IMPLICIT NONE 43 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 40 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 41 , zoom_end, zoom_size ) 42 43 IMPLICIT NONE 44 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 45 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 44 46 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name 45 47 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name … … 54 56 55 57 CALL xios(set_axis_attr_hdl_) & 56 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&57 , zoom_ size )58 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 59 , zoom_end, zoom_size ) 58 60 59 61 END SUBROUTINE xios(set_axis_attr_hdl) 60 62 61 63 SUBROUTINE xios(set_axis_attr_hdl_) & 62 ( axis_hdl, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ &64 ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 63 65 , zoom_end_, zoom_size_ ) 64 66 65 67 IMPLICIT NONE 66 68 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 69 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 67 70 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_ 68 71 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ … … 76 79 INTEGER , OPTIONAL, INTENT(IN) :: zoom_size_ 77 80 81 IF (PRESENT(bounds_)) THEN 82 CALL cxios_set_axis_bounds(axis_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 83 ENDIF 84 78 85 IF (PRESENT(long_name_)) THEN 79 86 CALL cxios_set_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_)) … … 121 128 122 129 SUBROUTINE xios(get_axis_attr) & 123 ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end &130 ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 124 131 , zoom_size ) 125 132 … … 127 134 TYPE(txios(axis)) :: axis_hdl 128 135 CHARACTER(LEN=*), INTENT(IN) ::axis_id 136 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 129 137 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name 130 138 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name … … 140 148 CALL xios(get_axis_handle)(axis_id,axis_hdl) 141 149 CALL xios(get_axis_attr_hdl_) & 142 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&143 , zoom_ size )150 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 151 , zoom_end, zoom_size ) 144 152 145 153 END SUBROUTINE xios(get_axis_attr) 146 154 147 155 SUBROUTINE xios(get_axis_attr_hdl) & 148 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 149 , zoom_size ) 150 151 IMPLICIT NONE 152 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 156 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 157 , zoom_end, zoom_size ) 158 159 IMPLICIT NONE 160 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 161 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 153 162 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name 154 163 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name … … 163 172 164 173 CALL xios(get_axis_attr_hdl_) & 165 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&166 , zoom_ size )174 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 175 , zoom_end, zoom_size ) 167 176 168 177 END SUBROUTINE xios(get_axis_attr_hdl) 169 178 170 179 SUBROUTINE xios(get_axis_attr_hdl_) & 171 ( axis_hdl, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ &180 ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 172 181 , zoom_end_, zoom_size_ ) 173 182 174 183 IMPLICIT NONE 175 184 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 185 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 176 186 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_ 177 187 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ … … 185 195 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_size_ 186 196 197 IF (PRESENT(bounds_)) THEN 198 CALL cxios_get_axis_bounds(axis_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 199 ENDIF 200 187 201 IF (PRESENT(long_name_)) THEN 188 202 CALL cxios_get_axis_long_name(axis_hdl%daddr, long_name_, len(long_name_)) … … 230 244 231 245 SUBROUTINE xios(is_defined_axis_attr) & 232 ( axis_id, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end &246 ( axis_id, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 233 247 , zoom_size ) 234 248 … … 236 250 TYPE(txios(axis)) :: axis_hdl 237 251 CHARACTER(LEN=*), INTENT(IN) ::axis_id 252 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 253 LOGICAL(KIND=C_BOOL) :: bounds_tmp 238 254 LOGICAL, OPTIONAL, INTENT(OUT) :: long_name 239 255 LOGICAL(KIND=C_BOOL) :: long_name_tmp … … 259 275 CALL xios(get_axis_handle)(axis_id,axis_hdl) 260 276 CALL xios(is_defined_axis_attr_hdl_) & 261 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&262 , zoom_ size )277 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 278 , zoom_end, zoom_size ) 263 279 264 280 END SUBROUTINE xios(is_defined_axis_attr) 265 281 266 282 SUBROUTINE xios(is_defined_axis_attr_hdl) & 267 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end & 268 , zoom_size ) 269 270 IMPLICIT NONE 271 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 283 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 284 , zoom_end, zoom_size ) 285 286 IMPLICIT NONE 287 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 288 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 289 LOGICAL(KIND=C_BOOL) :: bounds_tmp 272 290 LOGICAL, OPTIONAL, INTENT(OUT) :: long_name 273 291 LOGICAL(KIND=C_BOOL) :: long_name_tmp … … 292 310 293 311 CALL xios(is_defined_axis_attr_hdl_) & 294 ( axis_hdl, long_name, name, positive, size, standard_name, unit, value, zoom_begin, zoom_end&295 , zoom_ size )312 ( axis_hdl, bounds, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 313 , zoom_end, zoom_size ) 296 314 297 315 END SUBROUTINE xios(is_defined_axis_attr_hdl) 298 316 299 317 SUBROUTINE xios(is_defined_axis_attr_hdl_) & 300 ( axis_hdl, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ &318 ( axis_hdl, bounds_, long_name_, name_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 301 319 , zoom_end_, zoom_size_ ) 302 320 303 321 IMPLICIT NONE 304 322 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 323 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 324 LOGICAL(KIND=C_BOOL) :: bounds__tmp 305 325 LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_ 306 326 LOGICAL(KIND=C_BOOL) :: long_name__tmp … … 324 344 LOGICAL(KIND=C_BOOL) :: zoom_size__tmp 325 345 346 IF (PRESENT(bounds_)) THEN 347 bounds__tmp=cxios_is_defined_axis_bounds(axis_hdl%daddr) 348 bounds_=bounds__tmp 349 ENDIF 350 326 351 IF (PRESENT(long_name_)) THEN 327 352 long_name__tmp=cxios_is_defined_axis_long_name(axis_hdl%daddr) -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/iaxisgroup_attr.F90
r501 r609 12 12 13 13 SUBROUTINE xios(set_axisgroup_attr) & 14 ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&15 , zoom_ end, zoom_size )14 ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 15 , zoom_begin, zoom_end, zoom_size ) 16 16 17 17 IMPLICIT NONE 18 18 TYPE(txios(axisgroup)) :: axisgroup_hdl 19 19 CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 20 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 20 21 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 21 22 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name … … 32 33 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 33 34 CALL xios(set_axisgroup_attr_hdl_) & 34 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&35 , zoom_ end, zoom_size )35 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 36 , zoom_begin, zoom_end, zoom_size ) 36 37 37 38 END SUBROUTINE xios(set_axisgroup_attr) 38 39 39 40 SUBROUTINE xios(set_axisgroup_attr_hdl) & 40 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 41 , zoom_end, zoom_size ) 42 43 IMPLICIT NONE 44 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 41 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 42 , zoom_begin, zoom_end, zoom_size ) 43 44 IMPLICIT NONE 45 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 46 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 45 47 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref 46 48 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name … … 56 58 57 59 CALL xios(set_axisgroup_attr_hdl_) & 58 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&59 , zoom_ end, zoom_size )60 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 61 , zoom_begin, zoom_end, zoom_size ) 60 62 61 63 END SUBROUTINE xios(set_axisgroup_attr_hdl) 62 64 63 65 SUBROUTINE xios(set_axisgroup_attr_hdl_) & 64 ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_ & 65 , zoom_begin_, zoom_end_, zoom_size_ ) 66 67 IMPLICIT NONE 68 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 66 ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_ & 67 , value_, zoom_begin_, zoom_end_, zoom_size_ ) 68 69 IMPLICIT NONE 70 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 71 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 69 72 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_ 70 73 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_ … … 79 82 INTEGER , OPTIONAL, INTENT(IN) :: zoom_size_ 80 83 84 IF (PRESENT(bounds_)) THEN 85 CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 86 ENDIF 87 81 88 IF (PRESENT(group_ref_)) THEN 82 89 CALL cxios_set_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_)) … … 128 135 129 136 SUBROUTINE xios(get_axisgroup_attr) & 130 ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&131 , zoom_ end, zoom_size )137 ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 138 , zoom_begin, zoom_end, zoom_size ) 132 139 133 140 IMPLICIT NONE 134 141 TYPE(txios(axisgroup)) :: axisgroup_hdl 135 142 CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 143 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 136 144 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 137 145 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name … … 148 156 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 149 157 CALL xios(get_axisgroup_attr_hdl_) & 150 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&151 , zoom_ end, zoom_size )158 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 159 , zoom_begin, zoom_end, zoom_size ) 152 160 153 161 END SUBROUTINE xios(get_axisgroup_attr) 154 162 155 163 SUBROUTINE xios(get_axisgroup_attr_hdl) & 156 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 157 , zoom_end, zoom_size ) 158 159 IMPLICIT NONE 160 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 164 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 165 , zoom_begin, zoom_end, zoom_size ) 166 167 IMPLICIT NONE 168 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 169 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 161 170 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref 162 171 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name … … 172 181 173 182 CALL xios(get_axisgroup_attr_hdl_) & 174 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&175 , zoom_ end, zoom_size )183 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 184 , zoom_begin, zoom_end, zoom_size ) 176 185 177 186 END SUBROUTINE xios(get_axisgroup_attr_hdl) 178 187 179 188 SUBROUTINE xios(get_axisgroup_attr_hdl_) & 180 ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_ & 181 , zoom_begin_, zoom_end_, zoom_size_ ) 182 183 IMPLICIT NONE 184 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 189 ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_ & 190 , value_, zoom_begin_, zoom_end_, zoom_size_ ) 191 192 IMPLICIT NONE 193 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 194 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 185 195 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_ 186 196 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_ … … 195 205 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_size_ 196 206 207 IF (PRESENT(bounds_)) THEN 208 CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_,size(bounds_,1),size(bounds_,2)) 209 ENDIF 210 197 211 IF (PRESENT(group_ref_)) THEN 198 212 CALL cxios_get_axisgroup_group_ref(axisgroup_hdl%daddr, group_ref_, len(group_ref_)) … … 244 258 245 259 SUBROUTINE xios(is_defined_axisgroup_attr) & 246 ( axisgroup_id, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&247 , zoom_ end, zoom_size )260 ( axisgroup_id, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 261 , zoom_begin, zoom_end, zoom_size ) 248 262 249 263 IMPLICIT NONE 250 264 TYPE(txios(axisgroup)) :: axisgroup_hdl 251 265 CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 266 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 267 LOGICAL(KIND=C_BOOL) :: bounds_tmp 252 268 LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 253 269 LOGICAL(KIND=C_BOOL) :: group_ref_tmp … … 275 291 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 276 292 CALL xios(is_defined_axisgroup_attr_hdl_) & 277 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&278 , zoom_ end, zoom_size )293 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 294 , zoom_begin, zoom_end, zoom_size ) 279 295 280 296 END SUBROUTINE xios(is_defined_axisgroup_attr) 281 297 282 298 SUBROUTINE xios(is_defined_axisgroup_attr_hdl) & 283 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin & 284 , zoom_end, zoom_size ) 285 286 IMPLICIT NONE 287 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 299 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 300 , zoom_begin, zoom_end, zoom_size ) 301 302 IMPLICIT NONE 303 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 304 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 305 LOGICAL(KIND=C_BOOL) :: bounds_tmp 288 306 LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref 289 307 LOGICAL(KIND=C_BOOL) :: group_ref_tmp … … 310 328 311 329 CALL xios(is_defined_axisgroup_attr_hdl_) & 312 ( axisgroup_hdl, group_ref, long_name, name, positive, size, standard_name, unit, value, zoom_begin&313 , zoom_ end, zoom_size )330 ( axisgroup_hdl, bounds, group_ref, long_name, name, positive, size, standard_name, unit, value & 331 , zoom_begin, zoom_end, zoom_size ) 314 332 315 333 END SUBROUTINE xios(is_defined_axisgroup_attr_hdl) 316 334 317 335 SUBROUTINE xios(is_defined_axisgroup_attr_hdl_) & 318 ( axisgroup_hdl, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_, value_ & 319 , zoom_begin_, zoom_end_, zoom_size_ ) 320 321 IMPLICIT NONE 322 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 336 ( axisgroup_hdl, bounds_, group_ref_, long_name_, name_, positive_, size_, standard_name_, unit_ & 337 , value_, zoom_begin_, zoom_end_, zoom_size_ ) 338 339 IMPLICIT NONE 340 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 341 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 342 LOGICAL(KIND=C_BOOL) :: bounds__tmp 323 343 LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_ 324 344 LOGICAL(KIND=C_BOOL) :: group_ref__tmp … … 344 364 LOGICAL(KIND=C_BOOL) :: zoom_size__tmp 345 365 366 IF (PRESENT(bounds_)) THEN 367 bounds__tmp=cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr) 368 bounds_=bounds__tmp 369 ENDIF 370 346 371 IF (PRESENT(group_ref_)) THEN 347 372 group_ref__tmp=cxios_is_defined_axisgroup_group_ref(axisgroup_hdl%daddr) -
XIOS/branchs/xios-1.0/src/node/axis.cpp
r566 r609 80 80 << "The array \'value\' of axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] has a different size that the one defined by the \'size\' attribute"); 81 81 82 if (!bounds.isEmpty()) 83 { 84 if (bounds.extent(0) != size || bounds.extent(1) != 2) 85 ERROR("CAxis::checkAttributes(void)", 86 << "The bounds array of the axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] must be of dimension axis size x 2" << endl 87 << "Axis size is " << size << endl 88 << "Bounds size is "<< bounds.extent(0) << " x " << bounds.extent(1)); 89 } 90 82 91 this->isChecked = true; 83 92 } -
XIOS/branchs/xios-1.0/src/node/file.cpp
r589 r609 183 183 184 184 allDomainEmpty=true ; 185 set<CDomain*> setDomain ; 185 set<CAxis*> setAxis; 186 set<CDomain*> setDomains; 186 187 187 188 std::vector<CField*>::iterator it, end = this->enabledFields.end(); 188 for (it = this->enabledFields.begin() ;it != end; it++)189 for (it = this->enabledFields.begin(); it != end; it++) 189 190 { 190 191 CField* field = *it; 191 allDomainEmpty&=field->grid->domain->isEmpty() ; 192 setDomain.insert(field->grid->domain) ; 193 } 194 nbDomain=setDomain.size() ; 192 allDomainEmpty&=field->grid->domain->isEmpty(); 193 setAxis.insert(field->grid->axis); 194 setDomains.insert(field->grid->domain); 195 } 196 nbAxis = setAxis.size(); 197 nbDomains = setDomains.size(); 195 198 196 199 // create sub communicator for file -
XIOS/branchs/xios-1.0/src/node/file.hpp
r501 r609 130 130 CDuration splitFreq ; 131 131 CDuration outputFreq ; 132 int nb Domain;132 int nbAxis, nbDomains; 133 133 bool isOpen ; 134 134 MPI_Comm fileComm ; -
XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
r607 r609 482 482 if (axis->IsWritten(this->filename)) return; 483 483 axis->checkAttributes(); 484 StdSize zoom_size=axis->zoom_size.getValue();485 StdSize zoom_begin=axis->zoom_begin.getValue()-1;484 int zoom_size = axis->zoom_size.getValue(); 485 int zoom_begin = axis->zoom_begin.getValue() - 1; 486 486 487 487 … … 516 516 ("units", axis->unit.getValue(), &axisid); 517 517 518 if (!axis->positive.isEmpty()) 519 if (axis->positive==CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid); 520 else SuperClassWriter::addAttribute("positive", string("down"), &axisid); 518 if (!axis->positive.isEmpty()) 519 if (axis->positive==CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid); 520 else SuperClassWriter::addAttribute("positive", string("down"), &axisid); 521 522 StdString axisBoundsId = axisid + "_bounds"; 523 if (!axis->bounds.isEmpty()) 524 { 525 dims.push_back("axis_nbounds"); 526 SuperClassWriter::addVariable(axisBoundsId, NC_FLOAT, dims); 527 SuperClassWriter::addAttribute("bounds", axisBoundsId, &axisid); 528 } 521 529 522 530 SuperClassWriter::definition_end(); 523 531 524 CArray<double,1> axis_value(zoom_size) 525 for( StdSize i = 0 ; i < zoom_size ; i++) axis_value(i)=axis->value(i+zoom_begin);532 CArray<double,1> axis_value(zoom_size); 533 for(int i = 0 ; i < zoom_size; i++) axis_value(i) = axis->value(i+zoom_begin); 526 534 SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 535 536 if (!axis->bounds.isEmpty()) 537 { 538 CArray<double,2> axisBounds(zoom_size, 2); 539 for (int i = 0; i < zoom_size; i++) 540 { 541 axisBounds(i, 0) = axis->bounds(i + zoom_begin, 0); 542 axisBounds(i, 1) = axis->bounds(i + zoom_begin, 1); 543 } 544 SuperClassWriter::writeData(axisBounds, axisBoundsId, isCollective, 0); 545 } 527 546 528 547 SuperClassWriter::definition_start(); … … 779 798 ? file->description.getValue() 780 799 : StdString("Created by xios"); 800 801 singleDomain = (file->nbDomains == 1); 802 781 803 try 782 804 { 783 805 this->writeFileAttributes(filename, description, 784 StdString 806 StdString("CF-1.1"), 785 807 StdString("An IPSL model"), 786 808 this->getTimeStamp()); 809 810 if (file->nbAxis >= 1) 811 SuperClassWriter::addDimension("axis_nbounds", 2); 787 812 } 788 813 catch (CNetCdfException& e) … … 796 821 ERROR("CNc4DataOutput::writeFile_ (CFile* file)", << msg); 797 822 } 798 if (file->nbDomain==1) singleDomain=true ;799 else singleDomain=false ;800 823 } 801 824 -
XIOS/trunk/src/config/axis_attribute.conf
r551 r609 25 25 /* LOCAL */ 26 26 DECLARE_ARRAY(bool, 1 , mask) 27 DECLARE_ARRAY(double, 2 , bounds) -
XIOS/trunk/src/interface/c_attr/icaxis_attr.cpp
r591 r609 44 44 45 45 46 void cxios_set_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 47 { 48 CTimer::get("XIOS").resume(); 49 CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 50 axis_hdl->bounds.reference(tmp.copy()); 51 CTimer::get("XIOS").suspend(); 52 } 53 54 void cxios_get_axis_bounds(axis_Ptr axis_hdl, double* bounds, int extent1, int extent2) 55 { 56 CTimer::get("XIOS").resume(); 57 CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 58 tmp=axis_hdl->bounds.getInheritedValue(); 59 CTimer::get("XIOS").suspend(); 60 } 61 62 bool cxios_is_defined_axis_bounds(axis_Ptr axis_hdl) 63 { 64 CTimer::get("XIOS").resume(); 65 bool isDefined = axis_hdl->bounds.hasInheritedValue(); 66 CTimer::get("XIOS").suspend(); 67 return isDefined; 68 } 69 70 46 71 void cxios_set_axis_data_begin(axis_Ptr axis_hdl, int data_begin) 47 72 { -
XIOS/trunk/src/interface/c_attr/icaxisgroup_attr.cpp
r591 r609 44 44 45 45 46 void cxios_set_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 47 { 48 CTimer::get("XIOS").resume(); 49 CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 50 axisgroup_hdl->bounds.reference(tmp.copy()); 51 CTimer::get("XIOS").suspend(); 52 } 53 54 void cxios_get_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl, double* bounds, int extent1, int extent2) 55 { 56 CTimer::get("XIOS").resume(); 57 CArray<double,2> tmp(bounds, shape(extent1, extent2), neverDeleteData); 58 tmp=axisgroup_hdl->bounds.getInheritedValue(); 59 CTimer::get("XIOS").suspend(); 60 } 61 62 bool cxios_is_defined_axisgroup_bounds(axisgroup_Ptr axisgroup_hdl) 63 { 64 CTimer::get("XIOS").resume(); 65 bool isDefined = axisgroup_hdl->bounds.hasInheritedValue(); 66 CTimer::get("XIOS").suspend(); 67 return isDefined; 68 } 69 70 46 71 void cxios_set_axisgroup_data_begin(axisgroup_Ptr axisgroup_hdl, int data_begin) 47 72 { -
XIOS/trunk/src/interface/fortran_attr/axis_interface_attr.F90
r581 r609 31 31 32 32 33 SUBROUTINE cxios_set_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 34 USE ISO_C_BINDING 35 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 36 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 37 INTEGER (kind = C_INT), VALUE :: extent1 38 INTEGER (kind = C_INT), VALUE :: extent2 39 END SUBROUTINE cxios_set_axis_bounds 40 41 SUBROUTINE cxios_get_axis_bounds(axis_hdl, bounds, extent1, extent2) BIND(C) 42 USE ISO_C_BINDING 43 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 44 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 45 INTEGER (kind = C_INT), VALUE :: extent1 46 INTEGER (kind = C_INT), VALUE :: extent2 47 END SUBROUTINE cxios_get_axis_bounds 48 49 FUNCTION cxios_is_defined_axis_bounds(axis_hdl) BIND(C) 50 USE ISO_C_BINDING 51 LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_bounds 52 INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl 53 END FUNCTION cxios_is_defined_axis_bounds 54 55 33 56 SUBROUTINE cxios_set_axis_data_begin(axis_hdl, data_begin) BIND(C) 34 57 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/axisgroup_interface_attr.F90
r581 r609 31 31 32 32 33 SUBROUTINE cxios_set_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 34 USE ISO_C_BINDING 35 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 36 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 37 INTEGER (kind = C_INT), VALUE :: extent1 38 INTEGER (kind = C_INT), VALUE :: extent2 39 END SUBROUTINE cxios_set_axisgroup_bounds 40 41 SUBROUTINE cxios_get_axisgroup_bounds(axisgroup_hdl, bounds, extent1, extent2) BIND(C) 42 USE ISO_C_BINDING 43 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 44 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds 45 INTEGER (kind = C_INT), VALUE :: extent1 46 INTEGER (kind = C_INT), VALUE :: extent2 47 END SUBROUTINE cxios_get_axisgroup_bounds 48 49 FUNCTION cxios_is_defined_axisgroup_bounds(axisgroup_hdl) BIND(C) 50 USE ISO_C_BINDING 51 LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_bounds 52 INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl 53 END FUNCTION cxios_is_defined_axisgroup_bounds 54 55 33 56 SUBROUTINE cxios_set_axisgroup_data_begin(axisgroup_hdl, data_begin) BIND(C) 34 57 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/iaxis_attr.F90
r581 r609 12 12 13 13 SUBROUTINE xios(set_axis_attr) & 14 ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive&15 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )14 ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni & 15 , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 16 16 17 17 IMPLICIT NONE … … 19 19 CHARACTER(LEN=*), INTENT(IN) ::axis_id 20 20 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 21 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 21 22 INTEGER , OPTIONAL, INTENT(IN) :: data_begin 22 23 INTEGER , OPTIONAL, INTENT(IN) :: data_index(:) … … 39 40 CALL xios(get_axis_handle)(axis_id,axis_hdl) 40 41 CALL xios(set_axis_attr_hdl_) & 41 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &42 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )42 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 43 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 43 44 44 45 END SUBROUTINE xios(set_axis_attr) 45 46 46 47 SUBROUTINE xios(set_axis_attr_hdl) & 47 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &48 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )48 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 49 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 49 50 50 51 IMPLICIT NONE 51 52 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 52 53 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 54 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 53 55 INTEGER , OPTIONAL, INTENT(IN) :: data_begin 54 56 INTEGER , OPTIONAL, INTENT(IN) :: data_index(:) … … 70 72 71 73 CALL xios(set_axis_attr_hdl_) & 72 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &73 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )74 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 75 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 74 76 75 77 END SUBROUTINE xios(set_axis_attr_hdl) 76 78 77 79 SUBROUTINE xios(set_axis_attr_hdl_) & 78 ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_ & 79 , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 80 ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_ & 81 , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ & 82 ) 80 83 81 84 IMPLICIT NONE 82 85 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 83 86 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 87 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 84 88 INTEGER , OPTIONAL, INTENT(IN) :: data_begin_ 85 89 INTEGER , OPTIONAL, INTENT(IN) :: data_index_(:) … … 104 108 ENDIF 105 109 110 IF (PRESENT(bounds_)) THEN 111 CALL cxios_set_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 112 ENDIF 113 106 114 IF (PRESENT(data_begin_)) THEN 107 115 CALL cxios_set_axis_data_begin(axis_hdl%daddr, data_begin_) … … 173 181 174 182 SUBROUTINE xios(get_axis_attr) & 175 ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive&176 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )183 ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni & 184 , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 177 185 178 186 IMPLICIT NONE … … 180 188 CHARACTER(LEN=*), INTENT(IN) ::axis_id 181 189 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 190 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 182 191 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin 183 192 INTEGER , OPTIONAL, INTENT(OUT) :: data_index(:) … … 200 209 CALL xios(get_axis_handle)(axis_id,axis_hdl) 201 210 CALL xios(get_axis_attr_hdl_) & 202 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &203 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )211 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 212 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 204 213 205 214 END SUBROUTINE xios(get_axis_attr) 206 215 207 216 SUBROUTINE xios(get_axis_attr_hdl) & 208 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &209 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )217 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 218 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 210 219 211 220 IMPLICIT NONE 212 221 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 213 222 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 223 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 214 224 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin 215 225 INTEGER , OPTIONAL, INTENT(OUT) :: data_index(:) … … 231 241 232 242 CALL xios(get_axis_attr_hdl_) & 233 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &234 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )243 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 244 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 235 245 236 246 END SUBROUTINE xios(get_axis_attr_hdl) 237 247 238 248 SUBROUTINE xios(get_axis_attr_hdl_) & 239 ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_ & 240 , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 249 ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_ & 250 , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ & 251 ) 241 252 242 253 IMPLICIT NONE 243 254 TYPE(txios(axis)) , INTENT(IN) :: axis_hdl 244 255 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_ 256 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 245 257 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin_ 246 258 INTEGER , OPTIONAL, INTENT(OUT) :: data_index_(:) … … 265 277 ENDIF 266 278 279 IF (PRESENT(bounds_)) THEN 280 CALL cxios_get_axis_bounds(axis_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 281 ENDIF 282 267 283 IF (PRESENT(data_begin_)) THEN 268 284 CALL cxios_get_axis_data_begin(axis_hdl%daddr, data_begin_) … … 334 350 335 351 SUBROUTINE xios(is_defined_axis_attr) & 336 ( axis_id, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive&337 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )352 ( axis_id, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni & 353 , positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 338 354 339 355 IMPLICIT NONE … … 342 358 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 343 359 LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 360 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 361 LOGICAL(KIND=C_BOOL) :: bounds_tmp 344 362 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 345 363 LOGICAL(KIND=C_BOOL) :: data_begin_tmp … … 377 395 CALL xios(get_axis_handle)(axis_id,axis_hdl) 378 396 CALL xios(is_defined_axis_attr_hdl_) & 379 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &380 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )397 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 398 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 381 399 382 400 END SUBROUTINE xios(is_defined_axis_attr) 383 401 384 402 SUBROUTINE xios(is_defined_axis_attr_hdl) & 385 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &386 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )403 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 404 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 387 405 388 406 IMPLICIT NONE … … 390 408 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 391 409 LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 410 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 411 LOGICAL(KIND=C_BOOL) :: bounds_tmp 392 412 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 393 413 LOGICAL(KIND=C_BOOL) :: data_begin_tmp … … 424 444 425 445 CALL xios(is_defined_axis_attr_hdl_) & 426 ( axis_hdl, axis_ref, data_begin, data_index, data_n, ibegin, long_name, mask, name, ni, positive &427 , size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size )446 ( axis_hdl, axis_ref, bounds, data_begin, data_index, data_n, ibegin, long_name, mask, name & 447 , ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 428 448 429 449 END SUBROUTINE xios(is_defined_axis_attr_hdl) 430 450 431 451 SUBROUTINE xios(is_defined_axis_attr_hdl_) & 432 ( axis_hdl, axis_ref_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_, name_ & 433 , ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ ) 452 ( axis_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, ibegin_, long_name_, mask_ & 453 , name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_, zoom_size_ & 454 ) 434 455 435 456 IMPLICIT NONE … … 437 458 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_ 438 459 LOGICAL(KIND=C_BOOL) :: axis_ref__tmp 460 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 461 LOGICAL(KIND=C_BOOL) :: bounds__tmp 439 462 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_ 440 463 LOGICAL(KIND=C_BOOL) :: data_begin__tmp … … 475 498 ENDIF 476 499 500 IF (PRESENT(bounds_)) THEN 501 bounds__tmp = cxios_is_defined_axis_bounds(axis_hdl%daddr) 502 bounds_ = bounds__tmp 503 ENDIF 504 477 505 IF (PRESENT(data_begin_)) THEN 478 506 data_begin__tmp = cxios_is_defined_axis_data_begin(axis_hdl%daddr) -
XIOS/trunk/src/interface/fortran_attr/iaxisgroup_attr.F90
r581 r609 12 12 13 13 SUBROUTINE xios(set_axisgroup_attr) & 14 ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 15 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 14 ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 15 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 16 ) 16 17 17 18 IMPLICIT NONE … … 19 20 CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 20 21 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 22 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 21 23 INTEGER , OPTIONAL, INTENT(IN) :: data_begin 22 24 INTEGER , OPTIONAL, INTENT(IN) :: data_index(:) … … 40 42 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 41 43 CALL xios(set_axisgroup_attr_hdl_) & 42 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 43 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 44 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 45 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 46 ) 44 47 45 48 END SUBROUTINE xios(set_axisgroup_attr) 46 49 47 50 SUBROUTINE xios(set_axisgroup_attr_hdl) & 48 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 49 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 51 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 52 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 53 ) 50 54 51 55 IMPLICIT NONE 52 56 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 53 57 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref 58 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:) 54 59 INTEGER , OPTIONAL, INTENT(IN) :: data_begin 55 60 INTEGER , OPTIONAL, INTENT(IN) :: data_index(:) … … 72 77 73 78 CALL xios(set_axisgroup_attr_hdl_) & 74 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 75 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 79 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 80 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 81 ) 76 82 77 83 END SUBROUTINE xios(set_axisgroup_attr_hdl) 78 84 79 85 SUBROUTINE xios(set_axisgroup_attr_hdl_) & 80 ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_ &81 , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_ &82 , zoom_ size_ )86 ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_ & 87 , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 88 , zoom_end_, zoom_size_ ) 83 89 84 90 IMPLICIT NONE 85 91 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 86 92 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_ 93 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:) 87 94 INTEGER , OPTIONAL, INTENT(IN) :: data_begin_ 88 95 INTEGER , OPTIONAL, INTENT(IN) :: data_index_(:) … … 108 115 ENDIF 109 116 117 IF (PRESENT(bounds_)) THEN 118 CALL cxios_set_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 119 ENDIF 120 110 121 IF (PRESENT(data_begin_)) THEN 111 122 CALL cxios_set_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_) … … 181 192 182 193 SUBROUTINE xios(get_axisgroup_attr) & 183 ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 184 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 194 ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 195 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 196 ) 185 197 186 198 IMPLICIT NONE … … 188 200 CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id 189 201 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 202 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 190 203 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin 191 204 INTEGER , OPTIONAL, INTENT(OUT) :: data_index(:) … … 209 222 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 210 223 CALL xios(get_axisgroup_attr_hdl_) & 211 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 212 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 224 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 225 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 226 ) 213 227 214 228 END SUBROUTINE xios(get_axisgroup_attr) 215 229 216 230 SUBROUTINE xios(get_axisgroup_attr_hdl) & 217 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 218 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 231 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 232 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 233 ) 219 234 220 235 IMPLICIT NONE 221 236 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 222 237 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref 238 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:) 223 239 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin 224 240 INTEGER , OPTIONAL, INTENT(OUT) :: data_index(:) … … 241 257 242 258 CALL xios(get_axisgroup_attr_hdl_) & 243 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 244 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 259 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 260 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 261 ) 245 262 246 263 END SUBROUTINE xios(get_axisgroup_attr_hdl) 247 264 248 265 SUBROUTINE xios(get_axisgroup_attr_hdl_) & 249 ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_ &250 , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_ &251 , zoom_ size_ )266 ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_ & 267 , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 268 , zoom_end_, zoom_size_ ) 252 269 253 270 IMPLICIT NONE 254 271 TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl 255 272 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_ 273 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:) 256 274 INTEGER , OPTIONAL, INTENT(OUT) :: data_begin_ 257 275 INTEGER , OPTIONAL, INTENT(OUT) :: data_index_(:) … … 277 295 ENDIF 278 296 297 IF (PRESENT(bounds_)) THEN 298 CALL cxios_get_axisgroup_bounds(axisgroup_hdl%daddr, bounds_, size(bounds_,1), size(bounds_,2)) 299 ENDIF 300 279 301 IF (PRESENT(data_begin_)) THEN 280 302 CALL cxios_get_axisgroup_data_begin(axisgroup_hdl%daddr, data_begin_) … … 350 372 351 373 SUBROUTINE xios(is_defined_axisgroup_attr) & 352 ( axisgroup_id, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 353 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 374 ( axisgroup_id, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 375 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 376 ) 354 377 355 378 IMPLICIT NONE … … 358 381 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 359 382 LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 383 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 384 LOGICAL(KIND=C_BOOL) :: bounds_tmp 360 385 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 361 386 LOGICAL(KIND=C_BOOL) :: data_begin_tmp … … 395 420 CALL xios(get_axisgroup_handle)(axisgroup_id,axisgroup_hdl) 396 421 CALL xios(is_defined_axisgroup_attr_hdl_) & 397 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 398 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 422 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 423 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 424 ) 399 425 400 426 END SUBROUTINE xios(is_defined_axisgroup_attr) 401 427 402 428 SUBROUTINE xios(is_defined_axisgroup_attr_hdl) & 403 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 404 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 429 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 430 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 431 ) 405 432 406 433 IMPLICIT NONE … … 408 435 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref 409 436 LOGICAL(KIND=C_BOOL) :: axis_ref_tmp 437 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds 438 LOGICAL(KIND=C_BOOL) :: bounds_tmp 410 439 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin 411 440 LOGICAL(KIND=C_BOOL) :: data_begin_tmp … … 444 473 445 474 CALL xios(is_defined_axisgroup_attr_hdl_) & 446 ( axisgroup_hdl, axis_ref, data_begin, data_index, data_n, group_ref, ibegin, long_name, mask & 447 , name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size ) 475 ( axisgroup_hdl, axis_ref, bounds, data_begin, data_index, data_n, group_ref, ibegin, long_name & 476 , mask, name, ni, positive, size, standard_name, unit, value, zoom_begin, zoom_end, zoom_size & 477 ) 448 478 449 479 END SUBROUTINE xios(is_defined_axisgroup_attr_hdl) 450 480 451 481 SUBROUTINE xios(is_defined_axisgroup_attr_hdl_) & 452 ( axisgroup_hdl, axis_ref_, data_begin_, data_index_, data_n_, group_ref_, ibegin_, long_name_ &453 , mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_, zoom_end_ &454 , zoom_ size_ )482 ( axisgroup_hdl, axis_ref_, bounds_, data_begin_, data_index_, data_n_, group_ref_, ibegin_ & 483 , long_name_, mask_, name_, ni_, positive_, size_, standard_name_, unit_, value_, zoom_begin_ & 484 , zoom_end_, zoom_size_ ) 455 485 456 486 IMPLICIT NONE … … 458 488 LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_ 459 489 LOGICAL(KIND=C_BOOL) :: axis_ref__tmp 490 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_ 491 LOGICAL(KIND=C_BOOL) :: bounds__tmp 460 492 LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_ 461 493 LOGICAL(KIND=C_BOOL) :: data_begin__tmp … … 498 530 ENDIF 499 531 532 IF (PRESENT(bounds_)) THEN 533 bounds__tmp = cxios_is_defined_axisgroup_bounds(axisgroup_hdl%daddr) 534 bounds_ = bounds__tmp 535 ENDIF 536 500 537 IF (PRESENT(data_begin_)) THEN 501 538 data_begin__tmp = cxios_is_defined_axisgroup_data_begin(axisgroup_hdl%daddr) -
XIOS/trunk/src/node/axis.cpp
r595 r609 94 94 this->checkMask(); 95 95 this->checkZoom(); 96 97 if (!bounds.isEmpty()) 98 { 99 if (bounds.extent(0) != size || bounds.extent(1) != 2) 100 ERROR("CAxis::checkAttributes(void)", 101 << "The bounds array of the axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] must be of dimension axis size x 2" << endl 102 << "Axis size is " << size << endl 103 << "Bounds size is "<< bounds.extent(0) << " x " << bounds.extent(1)); 104 } 96 105 } 97 106 -
XIOS/trunk/src/node/file.cpp
r599 r609 224 224 allDomainEmpty=true ; 225 225 226 set<CDomain*> setDomain ; 226 set<CAxis*> setAxis; 227 set<CDomain*> setDomains; 227 228 228 229 std::vector<CField*>::iterator it, end = this->enabledFields.end(); 229 for (it = this->enabledFields.begin() ;it != end; it++)230 for (it = this->enabledFields.begin(); it != end; it++) 230 231 { 231 232 CField* field = *it; 232 // allDomainEmpty&=field->grid->domain->isEmpty() ; 233 allDomainEmpty&=(!field->grid->doGridHaveDataToWrite()); 234 std::vector<CDomain*> vecDomain = field->grid->getDomains(); 235 for (int i = 0; i < vecDomain.size(); ++i) 236 setDomain.insert(vecDomain[i]); 237 // setDomain.insert(field->grid->domain) ; 238 } 239 nbDomain=setDomain.size() ; 233 allDomainEmpty &= !field->grid->doGridHaveDataToWrite(); 234 std::vector<CAxis*> vecAxis = field->grid->getAxis(); 235 for (size_t i = 0; i < vecAxis.size(); ++i) 236 setAxis.insert(vecAxis[i]); 237 std::vector<CDomain*> vecDomains = field->grid->getDomains(); 238 for (size_t i = 0; i < vecDomains.size(); ++i) 239 setDomains.insert(vecDomains[i]); 240 } 241 nbAxis = setAxis.size(); 242 nbDomains = setDomains.size(); 240 243 241 244 // create sub communicator for file -
XIOS/trunk/src/node/file.hpp
r599 r609 155 155 CDate* lastSync ; 156 156 CDate* lastSplit ; 157 int nb Domain;157 int nbAxis, nbDomains; 158 158 bool isOpen ; 159 159 bool allDomainEmpty ; -
XIOS/trunk/src/output/nc4_data_output.cpp
r607 r609 482 482 void CNc4DataOutput::writeAxis_(CAxis* axis) 483 483 { 484 if (axis->IsWritten(this->filename)) return; 485 axis->checkAttributes(); 486 StdSize zoom_size_srv=axis->zoom_size_srv; 487 StdSize zoom_begin_srv=axis->zoom_begin_srv; 488 StdSize zoom_size = (MULTI_FILE == SuperClass::type) ? zoom_size_srv 489 : axis->zoom_size; 490 StdSize zoom_begin = (MULTI_FILE == SuperClass::type) ? zoom_begin_srv 491 : axis->zoom_begin; 492 493 494 std::vector<StdString> dims; 495 StdString axisid = (!axis->name.isEmpty()) 496 ? axis->name.getValue() : axis->getId(); 497 try 498 { 499 SuperClassWriter::addDimension(axisid, zoom_size); 500 dims.push_back(axisid); 501 502 switch (SuperClass::type) 503 { 504 case (MULTI_FILE ) : 505 {} 506 case (ONE_FILE) : 484 if (axis->IsWritten(this->filename)) return; 485 axis->checkAttributes(); 486 int zoom_size_srv = axis->zoom_size_srv; 487 int zoom_begin_srv = axis->zoom_begin_srv; 488 int zoom_size = (MULTI_FILE == SuperClass::type) ? zoom_size_srv : axis->zoom_size; 489 int zoom_begin = (MULTI_FILE == SuperClass::type) ? zoom_begin_srv : axis->zoom_begin; 490 491 492 std::vector<StdString> dims; 493 StdString axisid = !axis->name.isEmpty() ? axis->name.getValue() : axis->getId(); 494 try 495 { 496 SuperClassWriter::addDimension(axisid, zoom_size); 497 dims.push_back(axisid); 498 499 switch (SuperClass::type) 500 { 501 case MULTI_FILE: 502 case ONE_FILE: 503 { 504 SuperClassWriter::addVariable(axisid, NC_FLOAT, dims); 505 506 SuperClassWriter::addAttribute("axis", StdString("Z"), &axisid); 507 508 if (!axis->name.isEmpty()) 509 SuperClassWriter::addAttribute("name", axis->name.getValue(), &axisid); 510 511 if (!axis->standard_name.isEmpty()) 512 SuperClassWriter::addAttribute("standard_name", axis->standard_name.getValue(), &axisid); 513 514 if (!axis->long_name.isEmpty()) 515 SuperClassWriter::addAttribute("long_name", axis->long_name.getValue(), &axisid); 516 517 if (!axis->unit.isEmpty()) 518 SuperClassWriter::addAttribute("units", axis->unit.getValue(), &axisid); 519 520 if (!axis->positive.isEmpty()) 521 if (axis->positive == CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid); 522 else SuperClassWriter::addAttribute("positive", string("down"), &axisid); 523 524 StdString axisBoundsId = axisid + "_bounds"; 525 if (!axis->bounds.isEmpty()) 507 526 { 508 SuperClassWriter::addVariable(axisid, NC_FLOAT, dims); 509 510 SuperClassWriter::addAttribute("axis", StdString("Z"), &axisid); 511 512 if (!axis->name.isEmpty()) 513 SuperClassWriter::addAttribute 514 ("name", axis->name.getValue(), &axisid); 515 516 if (!axis->standard_name.isEmpty()) 517 SuperClassWriter::addAttribute 518 ("standard_name", axis->standard_name.getValue(), &axisid); 519 520 if (!axis->long_name.isEmpty()) 521 SuperClassWriter::addAttribute 522 ("long_name", axis->long_name.getValue(), &axisid); 523 524 if (!axis->unit.isEmpty()) 525 SuperClassWriter::addAttribute 526 ("units", axis->unit.getValue(), &axisid); 527 528 if (!axis->positive.isEmpty()) 529 if (axis->positive==CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid); 530 else SuperClassWriter::addAttribute("positive", string("down"), &axisid); 531 532 SuperClassWriter::definition_end(); 533 534 CArray<double,1> axis_value(zoom_size) ; 535 for(StdSize i = 0 ; i < zoom_size_srv ; i++) axis_value(i)=axis->value(i+zoom_begin_srv) ; 536 SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 537 538 SuperClassWriter::definition_start(); 539 540 break; 527 dims.push_back("axis_nbounds"); 528 SuperClassWriter::addVariable(axisBoundsId, NC_FLOAT, dims); 529 SuperClassWriter::addAttribute("bounds", axisBoundsId, &axisid); 541 530 } 542 default : 543 ERROR("CNc4DataOutput::writeDomain(domain)", 544 << "[ type = " << SuperClass::type << "]" 545 << " not implemented yet !"); 546 } 547 } 548 catch (CNetCdfException& e) 549 { 550 StdString msg("On writing the axis : "); 551 msg.append(axisid); msg.append("\n"); 552 msg.append("In the context : "); 553 CContext* context = CContext::getCurrent() ; 554 msg.append(context->getId()); msg.append("\n"); 555 msg.append(e.what()); 556 ERROR("CNc4DataOutput::writeAxis_(CAxis* axis)", << msg); 557 } 558 axis->addRelFile(this->filename); 531 532 SuperClassWriter::definition_end(); 533 534 CArray<double,1> axis_value(zoom_size); 535 for (int i = 0; i < zoom_size_srv; i++) axis_value(i) = axis->value(i + zoom_begin_srv); 536 SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 537 538 if (!axis->bounds.isEmpty()) 539 { 540 CArray<double,2> axisBounds(zoom_size, 2); 541 for (int i = 0; i < zoom_size_srv; i++) 542 { 543 axisBounds(i, 0) = axis->bounds(i + zoom_begin_srv, 0); 544 axisBounds(i, 1) = axis->bounds(i + zoom_begin_srv, 1); 545 } 546 SuperClassWriter::writeData(axisBounds, axisBoundsId, isCollective, 0); 547 } 548 549 SuperClassWriter::definition_start(); 550 551 break; 552 } 553 default : 554 ERROR("CNc4DataOutput::writeDomain(domain)", 555 << "[ type = " << SuperClass::type << "]" 556 << " not implemented yet !"); 557 } 558 } 559 catch (CNetCdfException& e) 560 { 561 StdString msg("On writing the axis : "); 562 msg.append(axisid); msg.append("\n"); 563 msg.append("In the context : "); 564 CContext* context = CContext::getCurrent() ; 565 msg.append(context->getId()); msg.append("\n"); 566 msg.append(e.what()); 567 ERROR("CNc4DataOutput::writeAxis_(CAxis* axis)", << msg); 568 } 569 axis->addRelFile(this->filename); 559 570 } 560 571 … … 999 1010 ? file->description.getValue() 1000 1011 : StdString("Created by xios"); 1012 1013 singleDomain = (file->nbDomains == 1); 1014 1001 1015 try 1002 1016 { 1003 1017 this->writeFileAttributes(filename, description, 1004 StdString 1018 StdString("CF-1.1"), 1005 1019 StdString("An IPSL model"), 1006 1020 this->getTimeStamp()); 1021 1022 if (file->nbAxis >= 1) 1023 SuperClassWriter::addDimension("axis_nbounds", 2); 1007 1024 } 1008 1025 catch (CNetCdfException& e) … … 1016 1033 ERROR("CNc4DataOutput::writeFile_ (CFile* file)", << msg); 1017 1034 } 1018 if (file->nbDomain==1) singleDomain=true ;1019 else singleDomain=false ;1020 1035 } 1021 1036
Note: See TracChangeset
for help on using the changeset viewer.