Changeset 609 for XIOS/trunk
- Timestamp:
- 06/05/15 16:42:18 (9 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
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.