Changeset 611 for XIOS/branchs
- Timestamp:
- 06/10/15 10:39:11 (8 years ago)
- Location:
- XIOS/branchs/xios-1.0/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/branchs/xios-1.0/src/config/domain_attribute.conf
r501 r611 60 60 DECLARE_ARRAY(double, 2, bounds_lon) 61 61 DECLARE_ARRAY(double, 2, bounds_lat) 62 DECLARE_ARRAY(double, 2, area) 62 63 63 64 DECLARE_ENUM3(type,regular,curvilinear,unstructured) -
XIOS/branchs/xios-1.0/src/interface/c_attr/icdomain_attr.cpp
r581 r611 17 17 typedef xios::CDomain* domain_Ptr; 18 18 19 void cxios_set_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ; 23 domain_hdl->area.reference(tmp.copy()); 24 domain_hdl->sendAttributToServer(domain_hdl->area); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_domain_area(domain_Ptr domain_hdl, double* area, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ; 32 tmp=domain_hdl->area.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_domain_area(domain_Ptr domain_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 bool isDefined = domain_hdl->area.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 return isDefined; 42 } 43 44 45 19 46 void cxios_set_domain_bounds_lat(domain_Ptr domain_hdl, double* bounds_lat, int extent1, int extent2) 20 47 { -
XIOS/branchs/xios-1.0/src/interface/c_attr/icdomaingroup_attr.cpp
r581 r611 17 17 typedef xios::CDomainGroup* domaingroup_Ptr; 18 18 19 void cxios_set_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ; 23 domaingroup_hdl->area.reference(tmp.copy()); 24 domaingroup_hdl->sendAttributToServer(domaingroup_hdl->area); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_domaingroup_area(domaingroup_Ptr domaingroup_hdl, double* area, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(area,shape(extent1,extent2),neverDeleteData) ; 32 tmp=domaingroup_hdl->area.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_domaingroup_area(domaingroup_Ptr domaingroup_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 bool isDefined = domaingroup_hdl->area.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 return isDefined; 42 } 43 44 45 19 46 void cxios_set_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl, double* bounds_lat, int extent1, int extent2) 20 47 { -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/domain_interface_attr.f90
r501 r611 9 9 10 10 11 SUBROUTINE cxios_set_domain_area(domain_hdl, area, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: area 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_domain_area 18 19 SUBROUTINE cxios_get_domain_area(domain_hdl, area, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: area 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_domain_area 26 27 FUNCTION cxios_is_defined_domain_area(domain_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_area 30 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 31 END FUNCTION cxios_is_defined_domain_area 32 33 11 34 SUBROUTINE cxios_set_domain_bounds_lat(domain_hdl, bounds_lat, extent1, extent2) BIND(C) 12 35 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/domaingroup_interface_attr.f90
r501 r611 9 9 10 10 11 SUBROUTINE cxios_set_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: area 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_domaingroup_area 18 19 SUBROUTINE cxios_get_domaingroup_area(domaingroup_hdl, area, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: area 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_domaingroup_area 26 27 FUNCTION cxios_is_defined_domaingroup_area(domaingroup_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_area 30 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 31 END FUNCTION cxios_is_defined_domaingroup_area 32 33 11 34 SUBROUTINE cxios_set_domaingroup_bounds_lat(domaingroup_hdl, bounds_lat, extent1, extent2) BIND(C) 12 35 USE ISO_C_BINDING -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomain_attr.F90
r501 r611 12 12 13 13 SUBROUTINE xios(set_domain_attr) & 14 ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&15 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&16 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &14 ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 15 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 16 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 17 17 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 18 18 , zoom_nj_loc ) … … 21 21 TYPE(txios(domain)) :: domain_hdl 22 22 CHARACTER(LEN=*), INTENT(IN) ::domain_id 23 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 23 24 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 24 25 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) … … 62 63 CALL xios(get_domain_handle)(domain_id,domain_hdl) 63 64 CALL xios(set_domain_attr_hdl_) & 64 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&65 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&66 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &65 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 66 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 67 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 67 68 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 68 69 , zoom_nj_loc ) … … 71 72 72 73 SUBROUTINE xios(set_domain_attr_hdl) & 73 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&74 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&75 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &74 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 75 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 76 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 76 77 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 77 78 , zoom_nj_loc ) … … 79 80 IMPLICIT NONE 80 81 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 82 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 81 83 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 82 84 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) … … 119 121 120 122 CALL xios(set_domain_attr_hdl_) & 121 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&122 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&123 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &123 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 124 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 125 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 124 126 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 125 127 , zoom_nj_loc ) … … 128 130 129 131 SUBROUTINE xios(set_domain_attr_hdl_) & 130 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &132 ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 131 133 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_ & 132 134 , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_ & … … 136 138 IMPLICIT NONE 137 139 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 140 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:) 138 141 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 139 142 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) … … 175 178 INTEGER , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 176 179 180 IF (PRESENT(area_)) THEN 181 CALL cxios_set_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2)) 182 ENDIF 183 177 184 IF (PRESENT(bounds_lat_)) THEN 178 185 CALL cxios_set_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) … … 330 337 331 338 SUBROUTINE xios(get_domain_attr) & 332 ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&333 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&334 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &339 ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 340 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 341 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 335 342 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 336 343 , zoom_nj_loc ) … … 339 346 TYPE(txios(domain)) :: domain_hdl 340 347 CHARACTER(LEN=*), INTENT(IN) ::domain_id 348 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 341 349 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 342 350 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) … … 380 388 CALL xios(get_domain_handle)(domain_id,domain_hdl) 381 389 CALL xios(get_domain_attr_hdl_) & 382 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&383 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&384 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &390 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 391 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 392 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 385 393 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 386 394 , zoom_nj_loc ) … … 389 397 390 398 SUBROUTINE xios(get_domain_attr_hdl) & 391 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&392 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&393 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &399 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 400 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 401 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 394 402 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 395 403 , zoom_nj_loc ) … … 397 405 IMPLICIT NONE 398 406 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 407 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 399 408 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 400 409 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) … … 437 446 438 447 CALL xios(get_domain_attr_hdl_) & 439 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&440 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&441 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &448 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 449 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 450 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 442 451 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 443 452 , zoom_nj_loc ) … … 446 455 447 456 SUBROUTINE xios(get_domain_attr_hdl_) & 448 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &457 ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 449 458 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_ & 450 459 , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_ & … … 454 463 IMPLICIT NONE 455 464 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 465 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 456 466 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 457 467 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) … … 493 503 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 494 504 505 IF (PRESENT(area_)) THEN 506 CALL cxios_get_domain_area(domain_hdl%daddr, area_,size(area_,1),size(area_,2)) 507 ENDIF 508 495 509 IF (PRESENT(bounds_lat_)) THEN 496 510 CALL cxios_get_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) … … 648 662 649 663 SUBROUTINE xios(is_defined_domain_attr) & 650 ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&651 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&652 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &664 ( domain_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 665 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 666 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 653 667 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 654 668 , zoom_nj_loc ) … … 657 671 TYPE(txios(domain)) :: domain_hdl 658 672 CHARACTER(LEN=*), INTENT(IN) ::domain_id 673 LOGICAL, OPTIONAL, INTENT(OUT) :: area 674 LOGICAL(KIND=C_BOOL) :: area_tmp 659 675 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 660 676 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp … … 734 750 CALL xios(get_domain_handle)(domain_id,domain_hdl) 735 751 CALL xios(is_defined_domain_attr_hdl_) & 736 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&737 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&738 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &752 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 753 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 754 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 739 755 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 740 756 , zoom_nj_loc ) … … 743 759 744 760 SUBROUTINE xios(is_defined_domain_attr_hdl) & 745 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&746 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&747 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &761 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 762 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 763 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 748 764 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 749 765 , zoom_nj_loc ) … … 751 767 IMPLICIT NONE 752 768 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 769 LOGICAL, OPTIONAL, INTENT(OUT) :: area 770 LOGICAL(KIND=C_BOOL) :: area_tmp 753 771 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 754 772 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp … … 827 845 828 846 CALL xios(is_defined_domain_attr_hdl_) & 829 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin&830 , data_ n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index, jbegin, jend&831 , latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name &847 ( domain_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 848 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, i_index, ibegin, iend, j_index & 849 , jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 832 850 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 833 851 , zoom_nj_loc ) … … 836 854 837 855 SUBROUTINE xios(is_defined_domain_attr_hdl_) & 838 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &856 ( domain_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 839 857 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, i_index_, ibegin_, iend_ & 840 858 , j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_ & … … 844 862 IMPLICIT NONE 845 863 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 864 LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 865 LOGICAL(KIND=C_BOOL) :: area__tmp 846 866 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 847 867 LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp … … 919 939 LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 920 940 941 IF (PRESENT(area_)) THEN 942 area__tmp=cxios_is_defined_domain_area(domain_hdl%daddr) 943 area_=area__tmp 944 ENDIF 945 921 946 IF (PRESENT(bounds_lat_)) THEN 922 947 bounds_lat__tmp=cxios_is_defined_domain_bounds_lat(domain_hdl%daddr) -
XIOS/branchs/xios-1.0/src/interface/fortran_attr/idomaingroup_attr.F90
r501 r611 12 12 13 13 SUBROUTINE xios(set_domaingroup_attr) & 14 ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &14 ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 15 15 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 16 16 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 21 21 TYPE(txios(domaingroup)) :: domaingroup_hdl 22 22 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 23 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 23 24 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 24 25 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) … … 63 64 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 64 65 CALL xios(set_domaingroup_attr_hdl_) & 65 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &66 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 66 67 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 67 68 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 72 73 73 74 SUBROUTINE xios(set_domaingroup_attr_hdl) & 74 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &75 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 75 76 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 76 77 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 80 81 IMPLICIT NONE 81 82 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 83 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area(:,:) 82 84 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 83 85 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) … … 121 123 122 124 CALL xios(set_domaingroup_attr_hdl_) & 123 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &125 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 124 126 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 125 127 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 130 132 131 133 SUBROUTINE xios(set_domaingroup_attr_hdl_) & 132 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &134 ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 133 135 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_ & 134 136 , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_ & … … 138 140 IMPLICIT NONE 139 141 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 142 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: area_(:,:) 140 143 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 141 144 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) … … 178 181 INTEGER , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 179 182 183 IF (PRESENT(area_)) THEN 184 CALL cxios_set_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2)) 185 ENDIF 186 180 187 IF (PRESENT(bounds_lat_)) THEN 181 188 CALL cxios_set_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) … … 337 344 338 345 SUBROUTINE xios(get_domaingroup_attr) & 339 ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &346 ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 340 347 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 341 348 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 346 353 TYPE(txios(domaingroup)) :: domaingroup_hdl 347 354 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 355 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 348 356 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 349 357 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) … … 388 396 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 389 397 CALL xios(get_domaingroup_attr_hdl_) & 390 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &398 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 391 399 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 392 400 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 397 405 398 406 SUBROUTINE xios(get_domaingroup_attr_hdl) & 399 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &407 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 400 408 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 401 409 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 405 413 IMPLICIT NONE 406 414 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 415 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area(:,:) 407 416 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 408 417 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) … … 446 455 447 456 CALL xios(get_domaingroup_attr_hdl_) & 448 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &457 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 449 458 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 450 459 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 455 464 456 465 SUBROUTINE xios(get_domaingroup_attr_hdl_) & 457 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &466 ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 458 467 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_ & 459 468 , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_ & … … 463 472 IMPLICIT NONE 464 473 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 474 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: area_(:,:) 465 475 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 466 476 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) … … 503 513 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 504 514 515 IF (PRESENT(area_)) THEN 516 CALL cxios_get_domaingroup_area(domaingroup_hdl%daddr, area_,size(area_,1),size(area_,2)) 517 ENDIF 518 505 519 IF (PRESENT(bounds_lat_)) THEN 506 520 CALL cxios_get_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) … … 662 676 663 677 SUBROUTINE xios(is_defined_domaingroup_attr) & 664 ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &678 ( domaingroup_id, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 665 679 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 666 680 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 671 685 TYPE(txios(domaingroup)) :: domaingroup_hdl 672 686 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 687 LOGICAL, OPTIONAL, INTENT(OUT) :: area 688 LOGICAL(KIND=C_BOOL) :: area_tmp 673 689 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 674 690 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp … … 750 766 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 751 767 CALL xios(is_defined_domaingroup_attr_hdl_) & 752 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &768 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 753 769 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 754 770 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 759 775 760 776 SUBROUTINE xios(is_defined_domaingroup_attr_hdl) & 761 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &777 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 762 778 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 763 779 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 767 783 IMPLICIT NONE 768 784 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 785 LOGICAL, OPTIONAL, INTENT(OUT) :: area 786 LOGICAL(KIND=C_BOOL) :: area_tmp 769 787 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 770 788 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp … … 845 863 846 864 CALL xios(is_defined_domaingroup_attr_hdl_) & 847 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index &865 ( domaingroup_hdl, area, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 848 866 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, i_index, ibegin & 849 867 , iend, j_index, jbegin, jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo & … … 854 872 855 873 SUBROUTINE xios(is_defined_domaingroup_attr_hdl_) & 856 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ &874 ( domaingroup_hdl, area_, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 857 875 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, i_index_, ibegin_ & 858 876 , iend_, j_index_, jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_ & … … 862 880 IMPLICIT NONE 863 881 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 882 LOGICAL, OPTIONAL, INTENT(OUT) :: area_ 883 LOGICAL(KIND=C_BOOL) :: area__tmp 864 884 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 865 885 LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp … … 939 959 LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 940 960 961 IF (PRESENT(area_)) THEN 962 area__tmp=cxios_is_defined_domaingroup_area(domaingroup_hdl%daddr) 963 area_=area__tmp 964 ENDIF 965 941 966 IF (PRESENT(bounds_lat_)) THEN 942 967 bounds_lat__tmp=cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl%daddr) -
XIOS/branchs/xios-1.0/src/node/domain.cpp
r610 r611 21 21 CDomain::CDomain(void) 22 22 : CObjectTemplate<CDomain>(), CDomainAttributes() 23 , isChecked(false), relFiles()23 , isChecked(false), hasBounds(false), hasArea(false), relFiles() 24 24 { /* Ne rien faire de plus */ } 25 25 26 26 CDomain::CDomain(const StdString & id) 27 27 : CObjectTemplate<CDomain>(id), CDomainAttributes() 28 , isChecked(false), relFiles()28 , isChecked(false), hasBounds(false), hasArea(false), relFiles() 29 29 { /* Ne rien faire de plus */ } 30 30 … … 108 108 for(int j=0;j<nj;j++) mask(0,j)=mask_tmp(j,0) ; 109 109 } 110 111 if (!area.isEmpty()) 112 area.transposeSelf(1, 0); 113 110 114 ni=1 ; 111 115 ibegin=1 ; … … 533 537 } 534 538 539 void CDomain::checkArea(void) 540 { 541 hasArea = !area.isEmpty(); 542 if (hasArea) 543 { 544 if (area.extent(0) != ni || area.extent(1) != nj) 545 { 546 ERROR("void CDomain::checkArea(void)", 547 "The area attribute must be of size ni x nj."); 548 } 549 } 550 } 551 535 552 //---------------------------------------------------------------- 536 553 … … 543 560 this->checkZoom(); 544 561 this->checkBounds(); 562 this->checkArea(); 545 563 546 564 if (context->hasClient) … … 561 579 computeConnectedServer() ; 562 580 sendServerAttribut() ; 563 sendLonLat ();581 sendLonLatArea(); 564 582 } 565 583 … … 701 719 702 720 703 void CDomain::sendLonLat (void)721 void CDomain::sendLonLatArea(void) 704 722 { 705 723 int ns,n,i,j,ind,nv; … … 709 727 // send lon lat for each connected server 710 728 CEventClient event(getType(), EVENT_ID_LON_LAT); 729 CEventClient eventArea(getType(), EVENT_ID_AREA); 711 730 712 731 list<CMessage> list_msg; 732 list<CMessage> list_msgArea; 713 733 list<CArray<int,1> > list_indi,list_indj; 714 734 list<CArray<double,1> >list_lon,list_lat; 715 735 list<CArray<double,2> >list_boundslon,list_boundslat; 736 list<CArray<double,1> > list_area; 716 737 717 738 for (int ns = 0; ns < connectedServer.size(); ns++) … … 729 750 list_boundslat.push_back(CArray<double,2>(nvertex, nbData)); 730 751 } 752 if (hasArea) 753 list_area.push_back(CArray<double,1>(nbData)); 731 754 732 755 CArray<int,1>& indi = list_indi.back(); … … 758 781 indi(n) = ibegin + i_index(i - ibegin + 1, j - jbegin + 1) - 1; 759 782 indj(n) = jbegin + j_index(i - ibegin + 1, j - jbegin + 1) - 1; 783 784 if (hasArea) 785 list_area.back()(n) = area(i - ibegin + 1, j - jbegin + 1); 760 786 } 761 787 … … 768 794 769 795 event.push(connectedServer[ns], nbSenders[ns], list_msg.back()); 796 797 if (hasArea) 798 { 799 list_msgArea.push_back(CMessage()); 800 list_msgArea.back() << this->getId() << list_area.back(); 801 eventArea.push(connectedServer[ns], nbSenders[ns], list_msgArea.back()); 802 } 770 803 } 771 804 772 805 client->sendEvent(event); 806 if (hasArea) 807 client->sendEvent(eventArea); 773 808 } 774 809 … … 787 822 case EVENT_ID_LON_LAT: 788 823 recvLonLat(event); 824 return true; 825 break; 826 case EVENT_ID_AREA: 827 recvArea(event); 789 828 return true; 790 829 break; … … 837 876 bounds_lat_srv = 0. ; 838 877 } 878 879 if (hasArea) 880 area_srv.resize(zoom_ni_srv * zoom_nj_srv); 839 881 } 840 882 … … 882 924 } 883 925 } 884 //---------------------------------------------------------------- 885 886 887 888 ///--------------------------------------------------------------- 889 926 927 void CDomain::recvArea(CEventServer& event) 928 { 929 list<CEventServer::SSubEvent>::iterator it; 930 for (it = event.subEvents.begin(); it != event.subEvents.end(); ++it) 931 { 932 CBufferIn* buffer = it->buffer; 933 string domainId; 934 *buffer >> domainId; 935 get(domainId)->recvArea(it->rank, *buffer); 936 } 937 } 938 939 void CDomain::recvArea(int rank, CBufferIn& buffer) 940 { 941 CArray<int,1> &indi = indiSrv[rank], &indj = indjSrv[rank]; 942 CArray<double,1> clientArea; 943 944 buffer >> clientArea; 945 946 int i, j, ind_srv; 947 for (int ind = 0; ind < indi.numElements(); ind++) 948 { 949 i = indi(ind); j = indj(ind); 950 ind_srv = (i - (zoom_ibegin_srv - 1)) + (j - (zoom_jbegin_srv - 1)) * zoom_ni_srv; 951 area_srv(ind_srv) = clientArea(ind); 952 } 953 } 890 954 } // namespace xios -
XIOS/branchs/xios-1.0/src/node/domain.hpp
r610 r611 37 37 enum EEventId 38 38 { 39 EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT 39 EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT, EVENT_ID_AREA 40 40 } ; 41 41 … … 71 71 void checkZoom(void); 72 72 void checkBounds(void); 73 void checkArea(void); 73 74 74 75 … … 100 101 CArray<double, 1> lonvalue_srv, latvalue_srv ; 101 102 CArray<double, 2> bounds_lon_srv, bounds_lat_srv ; 103 CArray<double, 1> area_srv; 102 104 103 105 … … 119 121 void completeLonLatClient(void); 120 122 void sendServerAttribut(void); 121 void sendLonLat (void);123 void sendLonLatArea(void); 122 124 void computeConnectedServer(void); 125 123 126 static bool dispatchEvent(CEventServer& event); 124 127 static void recvServerAttribut(CEventServer& event); 125 128 static void recvLonLat(CEventServer& event); 129 static void recvArea(CEventServer& event); 126 130 void recvServerAttribut(CBufferIn& buffer); 127 131 void recvLonLat(int rank, CBufferIn& buffer); 132 void recvArea(int rank, CBufferIn& buffer); 128 133 129 134 /// Destructeur /// … … 139 144 bool isCurvilinear ; 140 145 bool hasBounds ; 146 bool hasArea; 147 141 148 private : 142 143 149 /// Proriétés protégées /// 144 150 bool isChecked; -
XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp
r609 r611 98 98 99 99 string lonid,latid,bounds_lonid,bounds_latid ; 100 string areaId = "area" + appendDomid; 100 101 /* 101 102 StdString lonid_loc = (server->intraCommSize > 1) … … 209 210 //SuperClassWriter::setDefaultValue(maskid, &dvm); 210 211 212 if (domain->hasArea) 213 { 214 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0); 215 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); 216 } 217 211 218 SuperClassWriter::definition_end(); 212 219 … … 224 231 break; 225 232 } 233 234 if (domain->hasArea) 235 SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0); 236 226 237 SuperClassWriter::definition_start(); 227 238 … … 232 243 SuperClassWriter::addDimension(dimXid, domain->zoom_ni.getValue()); 233 244 SuperClassWriter::addDimension(dimYid, domain->zoom_nj.getValue()); 234 235 245 236 246 switch (domain->type) … … 253 263 break; 254 264 } 265 266 if (domain->hasArea) 267 { 268 dim0.clear(); 269 dim0.push_back(dimYid); dim0.push_back(dimXid); 270 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0); 271 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); 272 dim0.clear(); 273 } 274 255 275 this->writeAxisAttributes 256 276 (lonid, "X", "longitude", "Longitude", "degrees_east", domid); … … 258 278 (latid, "Y", "latitude", "Latitude", "degrees_north", domid); 259 279 260 261 280 SuperClassWriter::definition_end(); 281 262 282 switch (domain->type) 263 283 { … … 268 288 if (domain->isEmpty()) 269 289 { 270 start[0]=0 ; start 290 start[0]=0 ; start[1]=0 ; 271 291 count[0]=0 ; count[1]=0 ; 272 292 } … … 306 326 } 307 327 } 328 329 if (domain->hasArea) 330 { 331 std::vector<StdSize> start(2); 332 std::vector<StdSize> count(2); 333 334 if (domain->isEmpty()) 335 { 336 start[0] = 0; start[1] = 0; 337 count[0] = 0; count[1] = 0; 338 } 339 else 340 { 341 start[1] = domain->zoom_ibegin_srv - domain->zoom_ibegin.getValue(); 342 start[0] = domain->zoom_jbegin_srv - domain->zoom_jbegin.getValue(); 343 count[1] = domain->zoom_ni_srv; 344 count[0] = domain->zoom_nj_srv; 345 } 346 347 SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0, &start, &count); 348 } 349 308 350 SuperClassWriter::definition_start(); 351 309 352 break; 310 353 } … … 349 392 350 393 string lonid,latid,bounds_lonid,bounds_latid ; 394 string areaId = "area" + appendDomid; 351 395 352 396 try … … 385 429 dim0.push_back(dimXid); 386 430 431 if (domain->hasArea) 432 { 433 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0); 434 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); 435 } 436 387 437 SuperClassWriter::definition_end(); 388 438 … … 395 445 SuperClassWriter::writeData(domain->bounds_lat_srv, bounds_latid, isCollective, 0); 396 446 } 447 448 if (domain->hasArea) 449 SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0); 450 397 451 SuperClassWriter::definition_start(); 398 452 break ; … … 424 478 } 425 479 480 if (domain->hasArea) 481 { 482 dim0.clear(); 483 dim0.push_back(dimXid); 484 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0); 485 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); 486 } 487 426 488 SuperClassWriter::definition_end(); 427 489 … … 454 516 } 455 517 518 if (domain->hasArea) 519 SuperClassWriter::writeData(domain->area_srv, areaId, isCollective, 0, &start, &count); 456 520 457 521 SuperClassWriter::definition_start(); … … 740 804 SuperClassWriter::addAttribute("interval_write", duration.toString(), &fieldid); 741 805 } 806 807 if (domain->hasArea) 808 SuperClassWriter::addAttribute("cell_measures", "area: area" + appendDomid, &fieldid); 742 809 743 810 if (!field->default_value.isEmpty())
Note: See TracChangeset
for help on using the changeset viewer.