Changeset 609 for XIOS/branchs
- Timestamp:
- 06/05/15 16:42:18 (9 years ago)
- Location:
- XIOS/branchs/xios-1.0/src
- Files:
-
- 11 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
Note: See TracChangeset
for help on using the changeset viewer.