Changeset 449
- Timestamp:
- 09/19/13 17:05:07 (11 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 1 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/attribute_array_decl.cpp
r415 r449 6 6 { 7 7 template class CAttributeArray<double,1> ; 8 template class CAttributeArray<double,2> ; 8 9 template class CAttributeArray<int,1> ; 9 10 template class CAttributeArray<bool,2> ; -
XIOS/trunk/src/config/domain_attribute.conf
r369 r449 53 53 DECLARE_ARRAY(double, 1, lonvalue) 54 54 DECLARE_ARRAY(double, 1, latvalue) 55 DECLARE_ATTRIBUTE(int, nvertex) 56 DECLARE_ARRAY(double, 2, bounds_lon) 57 DECLARE_ARRAY(double, 2, bounds_lat) 55 58 59 DECLARE_ENUM3(type,regular,curvilinear,unstructured) 60 -
XIOS/trunk/src/functor.hpp
r369 r449 16 16 /// Définition de type /// 17 17 typedef CObject SuperClass; 18 19 18 public : 19 enum ETimeType { once, instant, centered } ; 20 20 21 21 /// Accesseurs /// … … 23 23 /// Opérateur /// 24 24 CArray<double,1> operator ()(const CArray<double,1>& dinput); 25 virtual ETimeType timeType(void) = 0 ; 25 26 26 27 /// Destructeur /// … … 44 45 CFunctor(const CFunctor & functor); // Not implemented. 45 46 CFunctor(const CFunctor * const functor); // Not implemented. 46 47 47 protected : 48 48 /// Propriétés privées /// -
XIOS/trunk/src/functor/accumulate.hpp
r443 r449 28 28 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 29 29 virtual void final(void) ; 30 virtual ETimeType timeType(void) { return centered ; } 30 31 31 32 /// Destructeur /// -
XIOS/trunk/src/functor/average.hpp
r369 r449 28 28 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 29 29 virtual void final(void) ; 30 30 virtual ETimeType timeType(void) { return centered ; } 31 31 32 /// Destructeur /// 32 33 virtual ~CAverage(void); -
XIOS/trunk/src/functor/instant.hpp
r369 r449 27 27 /// Traitement /// 28 28 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 29 virtual ETimeType timeType(void) { return instant ; } 29 30 30 31 /// Destructeur /// -
XIOS/trunk/src/functor/maximum.hpp
r369 r449 27 27 /// Traitement /// 28 28 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 29 virtual ETimeType timeType(void) { return centered ; } 29 30 30 31 /// Destructeur /// -
XIOS/trunk/src/functor/minimum.hpp
r369 r449 27 27 /// Traitement /// 28 28 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 29 virtual ETimeType timeType(void) { return centered ; } 29 30 30 31 /// Destructeur /// -
XIOS/trunk/src/functor/once.hpp
r369 r449 26 26 /// Traitement /// 27 27 virtual void apply(const CArray<double,1>& dinput, CArray<double,1>& doutput); 28 virtual ETimeType timeType(void) { return once ; } 28 29 29 30 /// Destructeur /// -
XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp
r445 r449 17 17 typedef xios::CDomain* domain_Ptr; 18 18 19 void cxios_set_domain_bounds_lat(domain_Ptr domain_hdl, double* bounds_lat, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(bounds_lat,shape(extent1,extent2),neverDeleteData) ; 23 domain_hdl->bounds_lat.reference(tmp.copy()); 24 domain_hdl->sendAttributToServer(domain_hdl->bounds_lat); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_domain_bounds_lat(domain_Ptr domain_hdl, double* bounds_lat, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(bounds_lat,shape(extent1,extent2),neverDeleteData) ; 32 tmp=domain_hdl->bounds_lat.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_domain_bounds_lat(domain_Ptr domain_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 return domain_hdl->bounds_lat.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 } 42 43 44 45 void cxios_set_domain_bounds_lon(domain_Ptr domain_hdl, double* bounds_lon, int extent1, int extent2) 46 { 47 CTimer::get("XIOS").resume(); 48 CArray<double,2> tmp(bounds_lon,shape(extent1,extent2),neverDeleteData) ; 49 domain_hdl->bounds_lon.reference(tmp.copy()); 50 domain_hdl->sendAttributToServer(domain_hdl->bounds_lon); 51 CTimer::get("XIOS").suspend(); 52 } 53 54 void cxios_get_domain_bounds_lon(domain_Ptr domain_hdl, double* bounds_lon, int extent1, int extent2) 55 { 56 CTimer::get("XIOS").resume(); 57 CArray<double,2> tmp(bounds_lon,shape(extent1,extent2),neverDeleteData) ; 58 tmp=domain_hdl->bounds_lon.getInheritedValue() ; 59 CTimer::get("XIOS").suspend(); 60 } 61 62 bool cxios_is_defined_domain_bounds_lon(domain_Ptr domain_hdl ) 63 { 64 CTimer::get("XIOS").resume(); 65 return domain_hdl->bounds_lon.hasInheritedValue(); 66 CTimer::get("XIOS").suspend(); 67 } 68 69 70 19 71 void cxios_set_domain_data_dim(domain_Ptr domain_hdl, int data_dim) 20 72 { … … 536 588 537 589 590 void cxios_set_domain_nvertex(domain_Ptr domain_hdl, int nvertex) 591 { 592 CTimer::get("XIOS").resume(); 593 domain_hdl->nvertex.setValue(nvertex); 594 domain_hdl->sendAttributToServer(domain_hdl->nvertex); 595 CTimer::get("XIOS").suspend(); 596 } 597 598 void cxios_get_domain_nvertex(domain_Ptr domain_hdl, int* nvertex) 599 { 600 *nvertex = domain_hdl->nvertex.getInheritedValue(); 601 } 602 603 bool cxios_is_defined_domain_nvertex(domain_Ptr domain_hdl ) 604 { 605 CTimer::get("XIOS").resume(); 606 return domain_hdl->nvertex.hasInheritedValue(); 607 CTimer::get("XIOS").suspend(); 608 } 609 610 611 538 612 void cxios_set_domain_standard_name(domain_Ptr domain_hdl, const char * standard_name, int standard_name_size) 539 613 { … … 563 637 564 638 639 void cxios_set_domain_type(domain_Ptr domain_hdl, const char * type, int type_size) 640 { 641 std::string type_str; 642 if(!cstr2string(type, type_size, type_str)) return; 643 CTimer::get("XIOS").resume(); 644 domain_hdl->type.fromString(type_str); 645 domain_hdl->sendAttributToServer(domain_hdl->type); 646 CTimer::get("XIOS").suspend(); 647 } 648 649 void cxios_get_domain_type(domain_Ptr domain_hdl, char * type, int type_size) 650 { 651 CTimer::get("XIOS").resume(); 652 if(!string_copy(domain_hdl->type.getInheritedStringValue(),type , type_size)) 653 ERROR("void cxios_get_domain_type(domain_Ptr domain_hdl, char * type, int type_size)", <<"Input string is to short"); 654 CTimer::get("XIOS").suspend(); 655 } 656 657 bool cxios_is_defined_domain_type(domain_Ptr domain_hdl ) 658 { 659 CTimer::get("XIOS").resume(); 660 return domain_hdl->type.hasInheritedValue(); 661 CTimer::get("XIOS").suspend(); 662 } 663 664 665 565 666 void cxios_set_domain_zoom_ibegin(domain_Ptr domain_hdl, int zoom_ibegin) 566 667 { -
XIOS/trunk/src/interface/c_attr/icdomaingroup_attr.cpp
r445 r449 17 17 typedef xios::CDomainGroup* domaingroup_Ptr; 18 18 19 void cxios_set_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl, double* bounds_lat, int extent1, int extent2) 20 { 21 CTimer::get("XIOS").resume(); 22 CArray<double,2> tmp(bounds_lat,shape(extent1,extent2),neverDeleteData) ; 23 domaingroup_hdl->bounds_lat.reference(tmp.copy()); 24 domaingroup_hdl->sendAttributToServer(domaingroup_hdl->bounds_lat); 25 CTimer::get("XIOS").suspend(); 26 } 27 28 void cxios_get_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl, double* bounds_lat, int extent1, int extent2) 29 { 30 CTimer::get("XIOS").resume(); 31 CArray<double,2> tmp(bounds_lat,shape(extent1,extent2),neverDeleteData) ; 32 tmp=domaingroup_hdl->bounds_lat.getInheritedValue() ; 33 CTimer::get("XIOS").suspend(); 34 } 35 36 bool cxios_is_defined_domaingroup_bounds_lat(domaingroup_Ptr domaingroup_hdl ) 37 { 38 CTimer::get("XIOS").resume(); 39 return domaingroup_hdl->bounds_lat.hasInheritedValue(); 40 CTimer::get("XIOS").suspend(); 41 } 42 43 44 45 void cxios_set_domaingroup_bounds_lon(domaingroup_Ptr domaingroup_hdl, double* bounds_lon, int extent1, int extent2) 46 { 47 CTimer::get("XIOS").resume(); 48 CArray<double,2> tmp(bounds_lon,shape(extent1,extent2),neverDeleteData) ; 49 domaingroup_hdl->bounds_lon.reference(tmp.copy()); 50 domaingroup_hdl->sendAttributToServer(domaingroup_hdl->bounds_lon); 51 CTimer::get("XIOS").suspend(); 52 } 53 54 void cxios_get_domaingroup_bounds_lon(domaingroup_Ptr domaingroup_hdl, double* bounds_lon, int extent1, int extent2) 55 { 56 CTimer::get("XIOS").resume(); 57 CArray<double,2> tmp(bounds_lon,shape(extent1,extent2),neverDeleteData) ; 58 tmp=domaingroup_hdl->bounds_lon.getInheritedValue() ; 59 CTimer::get("XIOS").suspend(); 60 } 61 62 bool cxios_is_defined_domaingroup_bounds_lon(domaingroup_Ptr domaingroup_hdl ) 63 { 64 CTimer::get("XIOS").resume(); 65 return domaingroup_hdl->bounds_lon.hasInheritedValue(); 66 CTimer::get("XIOS").suspend(); 67 } 68 69 70 19 71 void cxios_set_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int data_dim) 20 72 { … … 563 615 564 616 617 void cxios_set_domaingroup_nvertex(domaingroup_Ptr domaingroup_hdl, int nvertex) 618 { 619 CTimer::get("XIOS").resume(); 620 domaingroup_hdl->nvertex.setValue(nvertex); 621 domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nvertex); 622 CTimer::get("XIOS").suspend(); 623 } 624 625 void cxios_get_domaingroup_nvertex(domaingroup_Ptr domaingroup_hdl, int* nvertex) 626 { 627 *nvertex = domaingroup_hdl->nvertex.getInheritedValue(); 628 } 629 630 bool cxios_is_defined_domaingroup_nvertex(domaingroup_Ptr domaingroup_hdl ) 631 { 632 CTimer::get("XIOS").resume(); 633 return domaingroup_hdl->nvertex.hasInheritedValue(); 634 CTimer::get("XIOS").suspend(); 635 } 636 637 638 565 639 void cxios_set_domaingroup_standard_name(domaingroup_Ptr domaingroup_hdl, const char * standard_name, int standard_name_size) 566 640 { … … 590 664 591 665 666 void cxios_set_domaingroup_type(domaingroup_Ptr domaingroup_hdl, const char * type, int type_size) 667 { 668 std::string type_str; 669 if(!cstr2string(type, type_size, type_str)) return; 670 CTimer::get("XIOS").resume(); 671 domaingroup_hdl->type.fromString(type_str); 672 domaingroup_hdl->sendAttributToServer(domaingroup_hdl->type); 673 CTimer::get("XIOS").suspend(); 674 } 675 676 void cxios_get_domaingroup_type(domaingroup_Ptr domaingroup_hdl, char * type, int type_size) 677 { 678 CTimer::get("XIOS").resume(); 679 if(!string_copy(domaingroup_hdl->type.getInheritedStringValue(),type , type_size)) 680 ERROR("void cxios_get_domaingroup_type(domaingroup_Ptr domaingroup_hdl, char * type, int type_size)", <<"Input string is to short"); 681 CTimer::get("XIOS").suspend(); 682 } 683 684 bool cxios_is_defined_domaingroup_type(domaingroup_Ptr domaingroup_hdl ) 685 { 686 CTimer::get("XIOS").resume(); 687 return domaingroup_hdl->type.hasInheritedValue(); 688 CTimer::get("XIOS").suspend(); 689 } 690 691 692 592 693 void cxios_set_domaingroup_zoom_ibegin(domaingroup_Ptr domaingroup_hdl, int zoom_ibegin) 593 694 { -
XIOS/trunk/src/interface/fortran_attr/domain_interface_attr.f90
r432 r449 9 9 10 10 11 SUBROUTINE cxios_set_domain_bounds_lat(domain_hdl, bounds_lat, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lat 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_domain_bounds_lat 18 19 SUBROUTINE cxios_get_domain_bounds_lat(domain_hdl, bounds_lat, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lat 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_domain_bounds_lat 26 27 FUNCTION cxios_is_defined_domain_bounds_lat(domain_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_bounds_lat 30 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 31 END FUNCTION cxios_is_defined_domain_bounds_lat 32 33 34 SUBROUTINE cxios_set_domain_bounds_lon(domain_hdl, bounds_lon, extent1, extent2) BIND(C) 35 USE ISO_C_BINDING 36 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 37 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lon 38 INTEGER (kind = C_INT), VALUE :: extent1 39 INTEGER (kind = C_INT), VALUE :: extent2 40 END SUBROUTINE cxios_set_domain_bounds_lon 41 42 SUBROUTINE cxios_get_domain_bounds_lon(domain_hdl, bounds_lon, extent1, extent2) BIND(C) 43 USE ISO_C_BINDING 44 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 45 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lon 46 INTEGER (kind = C_INT), VALUE :: extent1 47 INTEGER (kind = C_INT), VALUE :: extent2 48 END SUBROUTINE cxios_get_domain_bounds_lon 49 50 FUNCTION cxios_is_defined_domain_bounds_lon(domain_hdl ) BIND(C) 51 USE ISO_C_BINDING 52 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_bounds_lon 53 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 54 END FUNCTION cxios_is_defined_domain_bounds_lon 55 56 11 57 SUBROUTINE cxios_set_domain_data_dim(domain_hdl, data_dim) BIND(C) 12 58 USE ISO_C_BINDING … … 445 491 446 492 493 SUBROUTINE cxios_set_domain_nvertex(domain_hdl, nvertex) BIND(C) 494 USE ISO_C_BINDING 495 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 496 INTEGER (KIND=C_INT) , VALUE :: nvertex 497 END SUBROUTINE cxios_set_domain_nvertex 498 499 SUBROUTINE cxios_get_domain_nvertex(domain_hdl, nvertex) BIND(C) 500 USE ISO_C_BINDING 501 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 502 INTEGER (KIND=C_INT) :: nvertex 503 END SUBROUTINE cxios_get_domain_nvertex 504 505 FUNCTION cxios_is_defined_domain_nvertex(domain_hdl ) BIND(C) 506 USE ISO_C_BINDING 507 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_nvertex 508 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 509 END FUNCTION cxios_is_defined_domain_nvertex 510 511 447 512 SUBROUTINE cxios_set_domain_standard_name(domain_hdl, standard_name, standard_name_size) BIND(C) 448 513 USE ISO_C_BINDING … … 466 531 467 532 533 SUBROUTINE cxios_set_domain_type(domain_hdl, type, type_size) BIND(C) 534 USE ISO_C_BINDING 535 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 536 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: type 537 INTEGER (kind = C_INT) , VALUE :: type_size 538 END SUBROUTINE cxios_set_domain_type 539 540 SUBROUTINE cxios_get_domain_type(domain_hdl, type, type_size) BIND(C) 541 USE ISO_C_BINDING 542 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 543 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: type 544 INTEGER (kind = C_INT) , VALUE :: type_size 545 END SUBROUTINE cxios_get_domain_type 546 547 FUNCTION cxios_is_defined_domain_type(domain_hdl ) BIND(C) 548 USE ISO_C_BINDING 549 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_type 550 INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl 551 END FUNCTION cxios_is_defined_domain_type 552 553 468 554 SUBROUTINE cxios_set_domain_zoom_ibegin(domain_hdl, zoom_ibegin) BIND(C) 469 555 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/domaingroup_interface_attr.f90
r432 r449 9 9 10 10 11 SUBROUTINE cxios_set_domaingroup_bounds_lat(domaingroup_hdl, bounds_lat, extent1, extent2) BIND(C) 12 USE ISO_C_BINDING 13 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 14 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lat 15 INTEGER (kind = C_INT), VALUE :: extent1 16 INTEGER (kind = C_INT), VALUE :: extent2 17 END SUBROUTINE cxios_set_domaingroup_bounds_lat 18 19 SUBROUTINE cxios_get_domaingroup_bounds_lat(domaingroup_hdl, bounds_lat, extent1, extent2) BIND(C) 20 USE ISO_C_BINDING 21 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 22 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lat 23 INTEGER (kind = C_INT), VALUE :: extent1 24 INTEGER (kind = C_INT), VALUE :: extent2 25 END SUBROUTINE cxios_get_domaingroup_bounds_lat 26 27 FUNCTION cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl ) BIND(C) 28 USE ISO_C_BINDING 29 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_bounds_lat 30 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 31 END FUNCTION cxios_is_defined_domaingroup_bounds_lat 32 33 34 SUBROUTINE cxios_set_domaingroup_bounds_lon(domaingroup_hdl, bounds_lon, extent1, extent2) BIND(C) 35 USE ISO_C_BINDING 36 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 37 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lon 38 INTEGER (kind = C_INT), VALUE :: extent1 39 INTEGER (kind = C_INT), VALUE :: extent2 40 END SUBROUTINE cxios_set_domaingroup_bounds_lon 41 42 SUBROUTINE cxios_get_domaingroup_bounds_lon(domaingroup_hdl, bounds_lon, extent1, extent2) BIND(C) 43 USE ISO_C_BINDING 44 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 45 REAL (KIND=C_DOUBLE) , DIMENSION(*) :: bounds_lon 46 INTEGER (kind = C_INT), VALUE :: extent1 47 INTEGER (kind = C_INT), VALUE :: extent2 48 END SUBROUTINE cxios_get_domaingroup_bounds_lon 49 50 FUNCTION cxios_is_defined_domaingroup_bounds_lon(domaingroup_hdl ) BIND(C) 51 USE ISO_C_BINDING 52 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_bounds_lon 53 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 54 END FUNCTION cxios_is_defined_domaingroup_bounds_lon 55 56 11 57 SUBROUTINE cxios_set_domaingroup_data_dim(domaingroup_hdl, data_dim) BIND(C) 12 58 USE ISO_C_BINDING … … 466 512 467 513 514 SUBROUTINE cxios_set_domaingroup_nvertex(domaingroup_hdl, nvertex) BIND(C) 515 USE ISO_C_BINDING 516 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 517 INTEGER (KIND=C_INT) , VALUE :: nvertex 518 END SUBROUTINE cxios_set_domaingroup_nvertex 519 520 SUBROUTINE cxios_get_domaingroup_nvertex(domaingroup_hdl, nvertex) BIND(C) 521 USE ISO_C_BINDING 522 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 523 INTEGER (KIND=C_INT) :: nvertex 524 END SUBROUTINE cxios_get_domaingroup_nvertex 525 526 FUNCTION cxios_is_defined_domaingroup_nvertex(domaingroup_hdl ) BIND(C) 527 USE ISO_C_BINDING 528 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_nvertex 529 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 530 END FUNCTION cxios_is_defined_domaingroup_nvertex 531 532 468 533 SUBROUTINE cxios_set_domaingroup_standard_name(domaingroup_hdl, standard_name, standard_name_size) BIND(C) 469 534 USE ISO_C_BINDING … … 487 552 488 553 554 SUBROUTINE cxios_set_domaingroup_type(domaingroup_hdl, type, type_size) BIND(C) 555 USE ISO_C_BINDING 556 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 557 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: type 558 INTEGER (kind = C_INT) , VALUE :: type_size 559 END SUBROUTINE cxios_set_domaingroup_type 560 561 SUBROUTINE cxios_get_domaingroup_type(domaingroup_hdl, type, type_size) BIND(C) 562 USE ISO_C_BINDING 563 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 564 CHARACTER(kind = C_CHAR) , DIMENSION(*) :: type 565 INTEGER (kind = C_INT) , VALUE :: type_size 566 END SUBROUTINE cxios_get_domaingroup_type 567 568 FUNCTION cxios_is_defined_domaingroup_type(domaingroup_hdl ) BIND(C) 569 USE ISO_C_BINDING 570 LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_type 571 INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl 572 END FUNCTION cxios_is_defined_domaingroup_type 573 574 489 575 SUBROUTINE cxios_set_domaingroup_zoom_ibegin(domaingroup_hdl, zoom_ibegin) BIND(C) 490 576 USE ISO_C_BINDING -
XIOS/trunk/src/interface/fortran_attr/idomain_attr.F90
r432 r449 12 12 13 13 SUBROUTINE xios(set_domain_attr) & 14 ( domain_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&15 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&16 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &17 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )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, ibegin, iend, jbegin, jend, latvalue, long_name & 16 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 17 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 18 18 19 19 IMPLICIT NONE 20 20 TYPE(txios(domain)) :: domain_hdl 21 21 CHARACTER(LEN=*), INTENT(IN) ::domain_id 22 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 23 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 22 24 INTEGER , OPTIONAL, INTENT(IN) :: data_dim 23 25 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index(:) … … 43 45 INTEGER , OPTIONAL, INTENT(IN) :: nj 44 46 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo 47 INTEGER , OPTIONAL, INTENT(IN) :: nvertex 45 48 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 49 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 46 50 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin 47 51 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc … … 55 59 CALL xios(get_domain_handle)(domain_id,domain_hdl) 56 60 CALL xios(set_domain_attr_hdl_) & 57 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&58 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&59 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &60 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )61 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 62 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 63 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 64 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 61 65 62 66 END SUBROUTINE xios(set_domain_attr) 63 67 64 68 SUBROUTINE xios(set_domain_attr_hdl) & 65 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&66 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&67 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &68 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )69 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 70 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 71 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 72 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 69 73 70 74 IMPLICIT NONE 71 75 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 76 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 77 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 72 78 INTEGER , OPTIONAL, INTENT(IN) :: data_dim 73 79 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index(:) … … 93 99 INTEGER , OPTIONAL, INTENT(IN) :: nj 94 100 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo 101 INTEGER , OPTIONAL, INTENT(IN) :: nvertex 95 102 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 103 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 96 104 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin 97 105 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc … … 104 112 105 113 CALL xios(set_domain_attr_hdl_) & 106 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&107 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&108 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &109 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )114 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 115 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 116 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 117 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 110 118 111 119 END SUBROUTINE xios(set_domain_attr_hdl) 112 120 113 121 SUBROUTINE xios(set_domain_attr_hdl_) & 114 ( domain_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ & 115 , data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_, long_name_ & 116 , lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_, zoom_ibegin_loc_ & 117 , zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 122 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 123 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_ & 124 , jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_ & 125 , standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_ & 126 , zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 118 127 119 128 IMPLICIT NONE 120 129 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 130 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 131 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) 121 132 INTEGER , OPTIONAL, INTENT(IN) :: data_dim_ 122 133 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index_(:) … … 142 153 INTEGER , OPTIONAL, INTENT(IN) :: nj_ 143 154 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo_ 155 INTEGER , OPTIONAL, INTENT(IN) :: nvertex_ 144 156 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 157 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 145 158 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_ 146 159 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_ … … 152 165 INTEGER , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 153 166 167 IF (PRESENT(bounds_lat_)) THEN 168 CALL cxios_set_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 169 ENDIF 170 171 IF (PRESENT(bounds_lon_)) THEN 172 CALL cxios_set_domain_bounds_lon(domain_hdl%daddr, bounds_lon_,size(bounds_lon_,1),size(bounds_lon_,2)) 173 ENDIF 174 154 175 IF (PRESENT(data_dim_)) THEN 155 176 CALL cxios_set_domain_data_dim(domain_hdl%daddr, data_dim_) … … 242 263 ENDIF 243 264 265 IF (PRESENT(nvertex_)) THEN 266 CALL cxios_set_domain_nvertex(domain_hdl%daddr, nvertex_) 267 ENDIF 268 244 269 IF (PRESENT(standard_name_)) THEN 245 270 CALL cxios_set_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_)) 271 ENDIF 272 273 IF (PRESENT(type_)) THEN 274 CALL cxios_set_domain_type(domain_hdl%daddr, type_, len(type_)) 246 275 ENDIF 247 276 … … 283 312 284 313 SUBROUTINE xios(get_domain_attr) & 285 ( domain_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&286 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&287 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &288 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )314 ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 315 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 316 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 317 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 289 318 290 319 IMPLICIT NONE 291 320 TYPE(txios(domain)) :: domain_hdl 292 321 CHARACTER(LEN=*), INTENT(IN) ::domain_id 322 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 323 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 293 324 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim 294 325 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index(:) … … 314 345 INTEGER , OPTIONAL, INTENT(OUT) :: nj 315 346 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo 347 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex 316 348 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 349 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 317 350 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin 318 351 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc … … 326 359 CALL xios(get_domain_handle)(domain_id,domain_hdl) 327 360 CALL xios(get_domain_attr_hdl_) & 328 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&329 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&330 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &331 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )361 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 362 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 363 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 364 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 332 365 333 366 END SUBROUTINE xios(get_domain_attr) 334 367 335 368 SUBROUTINE xios(get_domain_attr_hdl) & 336 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&337 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&338 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &339 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )369 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 370 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 371 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 372 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 340 373 341 374 IMPLICIT NONE 342 375 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 376 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 377 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 343 378 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim 344 379 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index(:) … … 364 399 INTEGER , OPTIONAL, INTENT(OUT) :: nj 365 400 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo 401 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex 366 402 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 403 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 367 404 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin 368 405 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc … … 375 412 376 413 CALL xios(get_domain_attr_hdl_) & 377 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&378 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&379 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &380 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )414 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 415 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 416 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 417 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 381 418 382 419 END SUBROUTINE xios(get_domain_attr_hdl) 383 420 384 421 SUBROUTINE xios(get_domain_attr_hdl_) & 385 ( domain_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ & 386 , data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_, long_name_ & 387 , lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_, zoom_ibegin_loc_ & 388 , zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 422 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 423 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_ & 424 , jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_ & 425 , standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_ & 426 , zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 389 427 390 428 IMPLICIT NONE 391 429 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 430 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 431 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 392 432 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim_ 393 433 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index_(:) … … 413 453 INTEGER , OPTIONAL, INTENT(OUT) :: nj_ 414 454 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo_ 455 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex_ 415 456 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 457 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 416 458 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_ 417 459 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc_ … … 423 465 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 424 466 467 IF (PRESENT(bounds_lat_)) THEN 468 CALL cxios_get_domain_bounds_lat(domain_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 469 ENDIF 470 471 IF (PRESENT(bounds_lon_)) THEN 472 CALL cxios_get_domain_bounds_lon(domain_hdl%daddr, bounds_lon_,size(bounds_lon_,1),size(bounds_lon_,2)) 473 ENDIF 474 425 475 IF (PRESENT(data_dim_)) THEN 426 476 CALL cxios_get_domain_data_dim(domain_hdl%daddr, data_dim_) … … 513 563 ENDIF 514 564 565 IF (PRESENT(nvertex_)) THEN 566 CALL cxios_get_domain_nvertex(domain_hdl%daddr, nvertex_) 567 ENDIF 568 515 569 IF (PRESENT(standard_name_)) THEN 516 570 CALL cxios_get_domain_standard_name(domain_hdl%daddr, standard_name_, len(standard_name_)) 571 ENDIF 572 573 IF (PRESENT(type_)) THEN 574 CALL cxios_get_domain_type(domain_hdl%daddr, type_, len(type_)) 517 575 ENDIF 518 576 … … 554 612 555 613 SUBROUTINE xios(is_defined_domain_attr) & 556 ( domain_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&557 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&558 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &559 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )614 ( domain_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 615 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 616 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 617 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 560 618 561 619 IMPLICIT NONE 562 620 TYPE(txios(domain)) :: domain_hdl 563 621 CHARACTER(LEN=*), INTENT(IN) ::domain_id 622 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 623 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 624 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon 625 LOGICAL(KIND=C_BOOL) :: bounds_lon_tmp 564 626 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim 565 627 LOGICAL(KIND=C_BOOL) :: data_dim_tmp … … 606 668 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 607 669 LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 670 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 671 LOGICAL(KIND=C_BOOL) :: nvertex_tmp 608 672 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 609 673 LOGICAL(KIND=C_BOOL) :: standard_name_tmp 674 LOGICAL, OPTIONAL, INTENT(OUT) :: type 675 LOGICAL(KIND=C_BOOL) :: type_tmp 610 676 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin 611 677 LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp … … 627 693 CALL xios(get_domain_handle)(domain_id,domain_hdl) 628 694 CALL xios(is_defined_domain_attr_hdl_) & 629 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&630 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&631 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &632 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )695 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 696 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 697 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 698 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 633 699 634 700 END SUBROUTINE xios(is_defined_domain_attr) 635 701 636 702 SUBROUTINE xios(is_defined_domain_attr_hdl) & 637 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&638 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&639 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &640 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )703 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 704 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 705 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 706 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 641 707 642 708 IMPLICIT NONE 643 709 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 710 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 711 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 712 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon 713 LOGICAL(KIND=C_BOOL) :: bounds_lon_tmp 644 714 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim 645 715 LOGICAL(KIND=C_BOOL) :: data_dim_tmp … … 686 756 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 687 757 LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 758 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 759 LOGICAL(KIND=C_BOOL) :: nvertex_tmp 688 760 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 689 761 LOGICAL(KIND=C_BOOL) :: standard_name_tmp 762 LOGICAL, OPTIONAL, INTENT(OUT) :: type 763 LOGICAL(KIND=C_BOOL) :: type_tmp 690 764 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin 691 765 LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp … … 706 780 707 781 CALL xios(is_defined_domain_attr_hdl_) & 708 ( domain_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index, data_ni&709 , data_n j, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name, lonvalue, mask&710 , name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc &711 , zoom_ ni, zoom_ni_loc, zoom_nj, zoom_nj_loc )782 ( domain_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin & 783 , data_n_index, data_ni, data_nj, domain_group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 784 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name, type, zoom_ibegin, zoom_ibegin_loc & 785 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 712 786 713 787 END SUBROUTINE xios(is_defined_domain_attr_hdl) 714 788 715 789 SUBROUTINE xios(is_defined_domain_attr_hdl_) & 716 ( domain_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ & 717 , data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_, long_name_ & 718 , lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_, zoom_ibegin_loc_ & 719 , zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 790 ( domain_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 791 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, ibegin_, iend_, jbegin_ & 792 , jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_ & 793 , standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_ & 794 , zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 720 795 721 796 IMPLICIT NONE 722 797 TYPE(txios(domain)) , INTENT(IN) :: domain_hdl 798 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 799 LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 800 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_ 801 LOGICAL(KIND=C_BOOL) :: bounds_lon__tmp 723 802 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim_ 724 803 LOGICAL(KIND=C_BOOL) :: data_dim__tmp … … 765 844 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo_ 766 845 LOGICAL(KIND=C_BOOL) :: nj_glo__tmp 846 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex_ 847 LOGICAL(KIND=C_BOOL) :: nvertex__tmp 767 848 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name_ 768 849 LOGICAL(KIND=C_BOOL) :: standard_name__tmp 850 LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 851 LOGICAL(KIND=C_BOOL) :: type__tmp 769 852 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin_ 770 853 LOGICAL(KIND=C_BOOL) :: zoom_ibegin__tmp … … 784 867 LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 785 868 869 IF (PRESENT(bounds_lat_)) THEN 870 bounds_lat__tmp=cxios_is_defined_domain_bounds_lat(domain_hdl%daddr) 871 bounds_lat_=bounds_lat__tmp 872 ENDIF 873 874 IF (PRESENT(bounds_lon_)) THEN 875 bounds_lon__tmp=cxios_is_defined_domain_bounds_lon(domain_hdl%daddr) 876 bounds_lon_=bounds_lon__tmp 877 ENDIF 878 786 879 IF (PRESENT(data_dim_)) THEN 787 880 data_dim__tmp=cxios_is_defined_domain_data_dim(domain_hdl%daddr) … … 894 987 ENDIF 895 988 989 IF (PRESENT(nvertex_)) THEN 990 nvertex__tmp=cxios_is_defined_domain_nvertex(domain_hdl%daddr) 991 nvertex_=nvertex__tmp 992 ENDIF 993 896 994 IF (PRESENT(standard_name_)) THEN 897 995 standard_name__tmp=cxios_is_defined_domain_standard_name(domain_hdl%daddr) … … 899 997 ENDIF 900 998 999 IF (PRESENT(type_)) THEN 1000 type__tmp=cxios_is_defined_domain_type(domain_hdl%daddr) 1001 type_=type__tmp 1002 ENDIF 1003 901 1004 IF (PRESENT(zoom_ibegin_)) THEN 902 1005 zoom_ibegin__tmp=cxios_is_defined_domain_zoom_ibegin(domain_hdl%daddr) -
XIOS/trunk/src/interface/fortran_attr/idomaingroup_attr.F90
r432 r449 12 12 13 13 SUBROUTINE xios(set_domaingroup_attr) & 14 ( domaingroup_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 15 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 16 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 17 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 14 ( domaingroup_id, 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, group_ref, ibegin, iend, jbegin & 16 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 17 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 18 , zoom_nj_loc ) 18 19 19 20 IMPLICIT NONE 20 21 TYPE(txios(domaingroup)) :: domaingroup_hdl 21 22 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 23 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 24 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 22 25 INTEGER , OPTIONAL, INTENT(IN) :: data_dim 23 26 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index(:) … … 44 47 INTEGER , OPTIONAL, INTENT(IN) :: nj 45 48 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo 49 INTEGER , OPTIONAL, INTENT(IN) :: nvertex 46 50 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 51 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 47 52 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin 48 53 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc … … 56 61 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 57 62 CALL xios(set_domaingroup_attr_hdl_) & 58 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 59 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 60 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 61 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 63 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 64 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 65 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 66 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 67 , zoom_nj_loc ) 62 68 63 69 END SUBROUTINE xios(set_domaingroup_attr) 64 70 65 71 SUBROUTINE xios(set_domaingroup_attr_hdl) & 66 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 67 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 68 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 69 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 72 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 73 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 74 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 75 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 76 , zoom_nj_loc ) 70 77 71 78 IMPLICIT NONE 72 79 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 80 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat(:,:) 81 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon(:,:) 73 82 INTEGER , OPTIONAL, INTENT(IN) :: data_dim 74 83 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index(:) … … 95 104 INTEGER , OPTIONAL, INTENT(IN) :: nj 96 105 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo 106 INTEGER , OPTIONAL, INTENT(IN) :: nvertex 97 107 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name 108 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 98 109 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin 99 110 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc … … 106 117 107 118 CALL xios(set_domaingroup_attr_hdl_) & 108 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 109 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 110 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 111 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 119 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 120 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 121 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 122 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 123 , zoom_nj_loc ) 112 124 113 125 END SUBROUTINE xios(set_domaingroup_attr_hdl) 114 126 115 127 SUBROUTINE xios(set_domaingroup_attr_hdl_) & 116 ( domaingroup_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ &117 , data_ ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_ &118 , long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_ &119 , zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ &120 )128 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 129 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_ & 130 , jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_ & 131 , nvertex_, standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_ & 132 , zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 121 133 122 134 IMPLICIT NONE 123 135 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 136 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_(:,:) 137 REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_(:,:) 124 138 INTEGER , OPTIONAL, INTENT(IN) :: data_dim_ 125 139 INTEGER , OPTIONAL, INTENT(IN) :: data_i_index_(:) … … 146 160 INTEGER , OPTIONAL, INTENT(IN) :: nj_ 147 161 INTEGER , OPTIONAL, INTENT(IN) :: nj_glo_ 162 INTEGER , OPTIONAL, INTENT(IN) :: nvertex_ 148 163 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: standard_name_ 164 CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 149 165 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_ 150 166 INTEGER , OPTIONAL, INTENT(IN) :: zoom_ibegin_loc_ … … 156 172 INTEGER , OPTIONAL, INTENT(IN) :: zoom_nj_loc_ 157 173 174 IF (PRESENT(bounds_lat_)) THEN 175 CALL cxios_set_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 176 ENDIF 177 178 IF (PRESENT(bounds_lon_)) THEN 179 CALL cxios_set_domaingroup_bounds_lon(domaingroup_hdl%daddr, bounds_lon_,size(bounds_lon_,1),size(bounds_lon_,2)) 180 ENDIF 181 158 182 IF (PRESENT(data_dim_)) THEN 159 183 CALL cxios_set_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_) … … 250 274 ENDIF 251 275 276 IF (PRESENT(nvertex_)) THEN 277 CALL cxios_set_domaingroup_nvertex(domaingroup_hdl%daddr, nvertex_) 278 ENDIF 279 252 280 IF (PRESENT(standard_name_)) THEN 253 281 CALL cxios_set_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_)) 282 ENDIF 283 284 IF (PRESENT(type_)) THEN 285 CALL cxios_set_domaingroup_type(domaingroup_hdl%daddr, type_, len(type_)) 254 286 ENDIF 255 287 … … 291 323 292 324 SUBROUTINE xios(get_domaingroup_attr) & 293 ( domaingroup_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 294 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 295 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 296 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 325 ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 326 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 327 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 328 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 329 , zoom_nj_loc ) 297 330 298 331 IMPLICIT NONE 299 332 TYPE(txios(domaingroup)) :: domaingroup_hdl 300 333 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 334 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 335 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 301 336 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim 302 337 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index(:) … … 323 358 INTEGER , OPTIONAL, INTENT(OUT) :: nj 324 359 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo 360 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex 325 361 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 362 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 326 363 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin 327 364 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc … … 335 372 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 336 373 CALL xios(get_domaingroup_attr_hdl_) & 337 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 338 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 339 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 340 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 374 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 375 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 376 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 377 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 378 , zoom_nj_loc ) 341 379 342 380 END SUBROUTINE xios(get_domaingroup_attr) 343 381 344 382 SUBROUTINE xios(get_domaingroup_attr_hdl) & 345 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 346 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 347 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 348 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 383 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 384 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 385 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 386 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 387 , zoom_nj_loc ) 349 388 350 389 IMPLICIT NONE 351 390 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 391 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat(:,:) 392 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon(:,:) 352 393 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim 353 394 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index(:) … … 374 415 INTEGER , OPTIONAL, INTENT(OUT) :: nj 375 416 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo 417 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex 376 418 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name 419 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 377 420 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin 378 421 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc … … 385 428 386 429 CALL xios(get_domaingroup_attr_hdl_) & 387 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 388 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 389 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 390 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 430 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 431 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 432 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 433 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 434 , zoom_nj_loc ) 391 435 392 436 END SUBROUTINE xios(get_domaingroup_attr_hdl) 393 437 394 438 SUBROUTINE xios(get_domaingroup_attr_hdl_) & 395 ( domaingroup_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ &396 , data_ ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_ &397 , long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_ &398 , zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ &399 )439 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 440 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_ & 441 , jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_ & 442 , nvertex_, standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_ & 443 , zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 400 444 401 445 IMPLICIT NONE 402 446 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 447 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_(:,:) 448 REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_(:,:) 403 449 INTEGER , OPTIONAL, INTENT(OUT) :: data_dim_ 404 450 INTEGER , OPTIONAL, INTENT(OUT) :: data_i_index_(:) … … 425 471 INTEGER , OPTIONAL, INTENT(OUT) :: nj_ 426 472 INTEGER , OPTIONAL, INTENT(OUT) :: nj_glo_ 473 INTEGER , OPTIONAL, INTENT(OUT) :: nvertex_ 427 474 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: standard_name_ 475 CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 428 476 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_ 429 477 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_ibegin_loc_ … … 435 483 INTEGER , OPTIONAL, INTENT(OUT) :: zoom_nj_loc_ 436 484 485 IF (PRESENT(bounds_lat_)) THEN 486 CALL cxios_get_domaingroup_bounds_lat(domaingroup_hdl%daddr, bounds_lat_,size(bounds_lat_,1),size(bounds_lat_,2)) 487 ENDIF 488 489 IF (PRESENT(bounds_lon_)) THEN 490 CALL cxios_get_domaingroup_bounds_lon(domaingroup_hdl%daddr, bounds_lon_,size(bounds_lon_,1),size(bounds_lon_,2)) 491 ENDIF 492 437 493 IF (PRESENT(data_dim_)) THEN 438 494 CALL cxios_get_domaingroup_data_dim(domaingroup_hdl%daddr, data_dim_) … … 529 585 ENDIF 530 586 587 IF (PRESENT(nvertex_)) THEN 588 CALL cxios_get_domaingroup_nvertex(domaingroup_hdl%daddr, nvertex_) 589 ENDIF 590 531 591 IF (PRESENT(standard_name_)) THEN 532 592 CALL cxios_get_domaingroup_standard_name(domaingroup_hdl%daddr, standard_name_, len(standard_name_)) 593 ENDIF 594 595 IF (PRESENT(type_)) THEN 596 CALL cxios_get_domaingroup_type(domaingroup_hdl%daddr, type_, len(type_)) 533 597 ENDIF 534 598 … … 570 634 571 635 SUBROUTINE xios(is_defined_domaingroup_attr) & 572 ( domaingroup_id, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 573 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 574 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 575 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 636 ( domaingroup_id, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 637 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 638 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 639 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 640 , zoom_nj_loc ) 576 641 577 642 IMPLICIT NONE 578 643 TYPE(txios(domaingroup)) :: domaingroup_hdl 579 644 CHARACTER(LEN=*), INTENT(IN) ::domaingroup_id 645 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 646 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 647 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon 648 LOGICAL(KIND=C_BOOL) :: bounds_lon_tmp 580 649 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim 581 650 LOGICAL(KIND=C_BOOL) :: data_dim_tmp … … 624 693 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 625 694 LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 695 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 696 LOGICAL(KIND=C_BOOL) :: nvertex_tmp 626 697 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 627 698 LOGICAL(KIND=C_BOOL) :: standard_name_tmp 699 LOGICAL, OPTIONAL, INTENT(OUT) :: type 700 LOGICAL(KIND=C_BOOL) :: type_tmp 628 701 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin 629 702 LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp … … 645 718 CALL xios(get_domaingroup_handle)(domaingroup_id,domaingroup_hdl) 646 719 CALL xios(is_defined_domaingroup_attr_hdl_) & 647 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 648 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 649 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 650 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 720 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 721 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 722 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 723 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 724 , zoom_nj_loc ) 651 725 652 726 END SUBROUTINE xios(is_defined_domaingroup_attr) 653 727 654 728 SUBROUTINE xios(is_defined_domaingroup_attr_hdl) & 655 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 656 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 657 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 658 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 729 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 730 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 731 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 732 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 733 , zoom_nj_loc ) 659 734 660 735 IMPLICIT NONE 661 736 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 737 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat 738 LOGICAL(KIND=C_BOOL) :: bounds_lat_tmp 739 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon 740 LOGICAL(KIND=C_BOOL) :: bounds_lon_tmp 662 741 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim 663 742 LOGICAL(KIND=C_BOOL) :: data_dim_tmp … … 706 785 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo 707 786 LOGICAL(KIND=C_BOOL) :: nj_glo_tmp 787 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex 788 LOGICAL(KIND=C_BOOL) :: nvertex_tmp 708 789 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name 709 790 LOGICAL(KIND=C_BOOL) :: standard_name_tmp 791 LOGICAL, OPTIONAL, INTENT(OUT) :: type 792 LOGICAL(KIND=C_BOOL) :: type_tmp 710 793 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin 711 794 LOGICAL(KIND=C_BOOL) :: zoom_ibegin_tmp … … 726 809 727 810 CALL xios(is_defined_domaingroup_attr_hdl_) & 728 ( domaingroup_hdl, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_n_index & 729 , data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin, jend, latvalue, long_name & 730 , lonvalue, mask, name, ni, ni_glo, nj, nj_glo, standard_name, zoom_ibegin, zoom_ibegin_loc & 731 , zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj, zoom_nj_loc ) 811 ( domaingroup_hdl, bounds_lat, bounds_lon, data_dim, data_i_index, data_ibegin, data_j_index & 812 , data_jbegin, data_n_index, data_ni, data_nj, domain_group_ref, group_ref, ibegin, iend, jbegin & 813 , jend, latvalue, long_name, lonvalue, mask, name, ni, ni_glo, nj, nj_glo, nvertex, standard_name & 814 , type, zoom_ibegin, zoom_ibegin_loc, zoom_jbegin, zoom_jbegin_loc, zoom_ni, zoom_ni_loc, zoom_nj & 815 , zoom_nj_loc ) 732 816 733 817 END SUBROUTINE xios(is_defined_domaingroup_attr_hdl) 734 818 735 819 SUBROUTINE xios(is_defined_domaingroup_attr_hdl_) & 736 ( domaingroup_hdl, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_n_index_ &737 , data_ ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_, jbegin_, jend_, latvalue_ &738 , long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_, standard_name_, zoom_ibegin_ &739 , zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_, zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ &740 )820 ( domaingroup_hdl, bounds_lat_, bounds_lon_, data_dim_, data_i_index_, data_ibegin_, data_j_index_ & 821 , data_jbegin_, data_n_index_, data_ni_, data_nj_, domain_group_ref_, group_ref_, ibegin_, iend_ & 822 , jbegin_, jend_, latvalue_, long_name_, lonvalue_, mask_, name_, ni_, ni_glo_, nj_, nj_glo_ & 823 , nvertex_, standard_name_, type_, zoom_ibegin_, zoom_ibegin_loc_, zoom_jbegin_, zoom_jbegin_loc_ & 824 , zoom_ni_, zoom_ni_loc_, zoom_nj_, zoom_nj_loc_ ) 741 825 742 826 IMPLICIT NONE 743 827 TYPE(txios(domaingroup)) , INTENT(IN) :: domaingroup_hdl 828 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_ 829 LOGICAL(KIND=C_BOOL) :: bounds_lat__tmp 830 LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_ 831 LOGICAL(KIND=C_BOOL) :: bounds_lon__tmp 744 832 LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim_ 745 833 LOGICAL(KIND=C_BOOL) :: data_dim__tmp … … 788 876 LOGICAL, OPTIONAL, INTENT(OUT) :: nj_glo_ 789 877 LOGICAL(KIND=C_BOOL) :: nj_glo__tmp 878 LOGICAL, OPTIONAL, INTENT(OUT) :: nvertex_ 879 LOGICAL(KIND=C_BOOL) :: nvertex__tmp 790 880 LOGICAL, OPTIONAL, INTENT(OUT) :: standard_name_ 791 881 LOGICAL(KIND=C_BOOL) :: standard_name__tmp 882 LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 883 LOGICAL(KIND=C_BOOL) :: type__tmp 792 884 LOGICAL, OPTIONAL, INTENT(OUT) :: zoom_ibegin_ 793 885 LOGICAL(KIND=C_BOOL) :: zoom_ibegin__tmp … … 807 899 LOGICAL(KIND=C_BOOL) :: zoom_nj_loc__tmp 808 900 901 IF (PRESENT(bounds_lat_)) THEN 902 bounds_lat__tmp=cxios_is_defined_domaingroup_bounds_lat(domaingroup_hdl%daddr) 903 bounds_lat_=bounds_lat__tmp 904 ENDIF 905 906 IF (PRESENT(bounds_lon_)) THEN 907 bounds_lon__tmp=cxios_is_defined_domaingroup_bounds_lon(domaingroup_hdl%daddr) 908 bounds_lon_=bounds_lon__tmp 909 ENDIF 910 809 911 IF (PRESENT(data_dim_)) THEN 810 912 data_dim__tmp=cxios_is_defined_domaingroup_data_dim(domaingroup_hdl%daddr) … … 922 1024 ENDIF 923 1025 1026 IF (PRESENT(nvertex_)) THEN 1027 nvertex__tmp=cxios_is_defined_domaingroup_nvertex(domaingroup_hdl%daddr) 1028 nvertex_=nvertex__tmp 1029 ENDIF 1030 924 1031 IF (PRESENT(standard_name_)) THEN 925 1032 standard_name__tmp=cxios_is_defined_domaingroup_standard_name(domaingroup_hdl%daddr) … … 927 1034 ENDIF 928 1035 1036 IF (PRESENT(type_)) THEN 1037 type__tmp=cxios_is_defined_domaingroup_type(domaingroup_hdl%daddr) 1038 type_=type__tmp 1039 ENDIF 1040 929 1041 IF (PRESENT(zoom_ibegin_)) THEN 930 1042 zoom_ibegin__tmp=cxios_is_defined_domaingroup_zoom_ibegin(domaingroup_hdl%daddr) -
XIOS/trunk/src/node/domain.cpp
r435 r449 22 22 : CObjectTemplate<CDomain>(), CDomainAttributes() 23 23 , isChecked(false), relFiles() 24 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub()25 , ibegin_zoom_sub(), jbegin_zoom_sub(), ni_zoom_sub(), nj_zoom_sub()26 , lonvalue_sub(), latvalue_sub()27 24 { /* Ne rien faire de plus */ } 28 25 … … 30 27 : CObjectTemplate<CDomain>(id), CDomainAttributes() 31 28 , isChecked(false), relFiles() 32 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub() 33 , ibegin_zoom_sub(), jbegin_zoom_sub(),ni_zoom_sub(), nj_zoom_sub() 34 , lonvalue_sub(), latvalue_sub() 35 { /* Ne rien faire de plus */ } 29 { /* Ne rien faire de plus */ } 36 30 37 31 CDomain::~CDomain(void) 38 32 { 39 vector<CArray<double,1>* >::iterator it;40 for(it=lonvalue_sub.begin();it<lonvalue_sub.end();it++) delete *it;41 for(it=latvalue_sub.begin();it<latvalue_sub.end();it++) delete *it;42 33 } 43 34 … … 46 37 const std::set<StdString> & CDomain::getRelFiles(void) const 47 38 { 48 return (this->relFiles); 39 return (this->relFiles); 49 40 } 50 41 … … 79 70 } 80 71 81 //----------------------------------------------------------------82 /*83 void CDomain::fromBinary(StdIStream & is)84 {85 SuperClass::fromBinary(is);86 87 if ( !this->ibegin.isEmpty() &&88 !this->jbegin.isEmpty() &&89 !this->iend.isEmpty() &&90 !this->jend.isEmpty() &&91 !this->latvalue.isEmpty() &&92 !this->lonvalue.isEmpty())93 {94 95 this->ibegin_sub.push_back(this->ibegin.getValue());96 this->jbegin_sub.push_back(this->jbegin.getValue());97 this->iend_sub.push_back(this->iend.getValue());98 this->jend_sub.push_back(this->jend.getValue());99 100 this->ibegin_zoom_sub.push_back(this->zoom_ibegin_loc.getValue());101 this->jbegin_zoom_sub.push_back(this->zoom_jbegin_loc.getValue());102 this->ni_zoom_sub.push_back(this->zoom_ni_loc.getValue());103 this->nj_zoom_sub.push_back(this->zoom_nj_loc.getValue());104 105 this->latvalue_sub.push_back(this->latvalue.getValue());106 this->lonvalue_sub.push_back(this->lonvalue.getValue());107 }108 109 #define CLEAR_ATT(name_)\110 SuperClassAttribute::operator[](#name_)->reset()111 112 CLEAR_ATT(mask);113 CLEAR_ATT(data_n_index);114 CLEAR_ATT(data_i_index);115 CLEAR_ATT(data_j_index);116 117 CLEAR_ATT(data_ni);118 CLEAR_ATT(data_nj);119 CLEAR_ATT(data_ibegin);120 CLEAR_ATT(data_jbegin);121 122 CLEAR_ATT(ni);123 CLEAR_ATT(nj);124 125 #undef CLEAR_ATT126 127 if ( !this->ibegin.isEmpty() &&128 !this->jbegin.isEmpty() &&129 !this->iend.isEmpty() &&130 !this->jend.isEmpty() &&131 !this->latvalue.isEmpty() &&132 !this->lonvalue.isEmpty())133 {134 135 this->ibegin.setValue(*std::min_element(this->ibegin_sub.begin(),this->ibegin_sub.end()));136 this->jbegin.setValue(*std::min_element(this->jbegin_sub.begin(),this->jbegin_sub.end()));137 this->iend.setValue(*std::max_element(this->iend_sub.begin(),this->iend_sub.end()));138 this->jend.setValue(*std::max_element(this->jend_sub.begin(),this->jend_sub.end()));139 }140 }141 */142 72 //---------------------------------------------------------------- 143 73 … … 150 80 void CDomain::checkGlobalDomain(void) 151 81 { 152 if ((ni_glo.isEmpty() || ni_glo.getValue() <= 0 ) || 82 if (!type.isEmpty() && type==type_attr::unstructured) 83 { 84 if (ni_glo.isEmpty() || ni_glo <= 0 ) 85 { 86 ERROR("CDomain::checkAttributes(void)", 87 << "[ Id = " << this->getId() << " ] " 88 << "The global domain is badly defined," 89 << " check the \'ni_glo\' value !") 90 } 91 nj_glo=ni_glo ; 92 ni_glo=1 ; 93 if (!ni.isEmpty()) nj=ni ; 94 if (!ibegin.isEmpty()) jbegin=ibegin ; 95 if (!iend.isEmpty()) jend=iend ; 96 ni=1 ; 97 ibegin=1 ; 98 iend=1 ; 99 } 100 else if ((ni_glo.isEmpty() || ni_glo.getValue() <= 0 ) || 153 101 (nj_glo.isEmpty() || nj_glo.getValue() <= 0 )) 154 102 { … … 173 121 ni.setValue(iend.getValue() - ibegin.getValue() + 1) ; 174 122 175 else if (!ibegin.isEmpty() && !iend.isEmpty() && 176 !ni.isEmpty() && (iend.getValue() != ibegin.getValue() + ni.getValue() - 1))177 {178 ERROR("CDomain::checkAttributes(void)",179 << "The domain si wrong defined,"180 << " iend is different of (ibegin + ni - 1) !") ;123 else if (!ibegin.isEmpty() && !iend.isEmpty() && !ni.isEmpty() ) 124 { 125 if (iend.getValue() != ibegin.getValue() + ni.getValue() - 1) 126 ERROR("CDomain::checkAttributes(void)", 127 << "The domain si wrong defined," 128 << " iend is different of (ibegin + ni - 1) !") ; 181 129 } 182 130 else … … 190 138 if (ni.getValue() < 0 || ibegin.getValue() > iend.getValue() || 191 139 ibegin.getValue() < 1 || iend.getValue() > ni_glo.getValue()) 140 { 141 cout<<ni_glo<<" "<<ni<<" "<<ibegin<<" "<<iend<<endl; 142 192 143 ERROR("CDomain::checkAttributes(void)", 193 144 << "[ Id = " << this->getId() << " ] " 194 145 << "Local domain is wrong defined," 195 146 << " Check the value : ni, ni_glo, ibegin, iend") ; 196 147 } 197 148 } 198 149 … … 210 161 nj.setValue(jend.getValue() - jbegin.getValue() + 1) ; 211 162 212 else if (!jbegin.isEmpty() && !jend.isEmpty() && !nj.isEmpty() &&213 (jend.getValue() != jbegin.getValue() + nj.getValue() - 1))214 {215 ERROR("CDomain::checkAttributes(void)",216 << "The domain is wrong defined,"217 << " iend is different of (jbegin + nj - 1) !") ;163 else if (!jbegin.isEmpty() && !jend.isEmpty() && !nj.isEmpty() ) 164 { 165 if (jend.getValue() != jbegin.getValue() + nj.getValue() - 1) 166 ERROR("CDomain::checkAttributes(void)", 167 << "The domain is wrong defined," 168 << " iend is different of (jbegin + nj - 1) !") ; 218 169 } 219 170 else … … 229 180 << "Domain is wrong defined," 230 181 << " Check the values : nj, nj_glo, jbegin, jend") ; 182 183 ibegin_client=ibegin ; iend_client=iend ; ni_client=ni ; 184 jbegin_client=jbegin ; jend_client=jend ; nj_client=nj ; 231 185 } 232 186 … … 416 370 CArray<double,1> lonvalue_temp(ni*nj) ; 417 371 CArray<double,1> latvalue_temp(ni*nj) ; 418 419 if ( lonvalue.numElements() == ni*nj && latvalue.numElements() == ni*nj ) isCurvilinear=true ; 420 else if ( lonvalue.numElements() == ni && latvalue.numElements() == nj ) isCurvilinear=false ; 421 else ERROR("void CDomain::completeLonLatClient(void)",<<"the grid is nor curvilinear, nor cartesian, because the size of longitude and latitude array is not coherent with the domain size"<<endl 422 <<"lonvalue size = " << lonvalue.numElements() << "different of ni or ni*nj"<<endl 423 <<"latvalue size = " << latvalue.numElements() << "different of nj or ni*nj" ) ; 424 if (isCurvilinear) 372 CArray<double,2> bounds_lon_temp(nvertex,ni*nj) ; 373 CArray<double,2> bounds_lat_temp(nvertex,ni*nj) ; 374 375 if (type.isEmpty()) 376 { 377 if ( lonvalue.numElements() == ni*nj && latvalue.numElements() == ni*nj ) 378 { 379 type.setValue(type_attr::curvilinear) ; 380 isCurvilinear=true ; 381 } 382 else if ( lonvalue.numElements() == ni && latvalue.numElements() == nj ) 383 { 384 type.setValue(type_attr::regular) ; 385 isCurvilinear=false ; 386 } 387 else ERROR("void CDomain::completeLonLatClient(void)",<<"the grid is nor curvilinear, nor cartesian, because the size of longitude and latitude array is not coherent with the domain size"<<endl 388 <<"lonvalue size = " << lonvalue.numElements() << "different of ni or ni*nj"<<endl 389 <<"latvalue size = " << latvalue.numElements() << "different of nj or ni*nj" ) ; 390 } 391 if (type==type_attr::curvilinear || type==type_attr::unstructured) 425 392 { 426 393 lonvalue_temp=lonvalue ; 427 394 latvalue_temp=latvalue ; 395 if (hasBounds) bounds_lon_temp=bounds_lon ; 396 if (hasBounds) bounds_lat_temp=bounds_lat ; 428 397 } 429 398 else … … 435 404 lonvalue_temp(k)=lonvalue(i) ; 436 405 latvalue_temp(k)=latvalue(j) ; 406 if (hasBounds) 407 { 408 for(int n=0;n<nvertex;n++) 409 { 410 bounds_lon_temp(n,k)=bounds_lon(n,i) ; 411 bounds_lat_temp(n,k)=bounds_lat(n,j) ; 412 } 413 } 437 414 } 438 415 } 439 416 440 441 const int zoom_ibegin_client = zoom_ibegin_loc.getValue(),442 zoom_jbegin_client = zoom_jbegin_loc.getValue(),443 zoom_ni_client = zoom_ni_loc.getValue(),444 zoom_nj_client = zoom_nj_loc.getValue();445 446 417 StdSize dm = zoom_ni_client * zoom_nj_client; 447 418 … … 453 424 for (int j = 0; j < zoom_nj_client; j++) 454 425 { 455 lonvalue(i + j * zoom_ni_client) = lonvalue_temp( (i + zoom_ibegin_client -1) + (j + zoom_jbegin_client -1)*ni.getValue() ); 456 latvalue(i + j * zoom_ni_client) = latvalue_temp( (i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni.getValue() ); 426 // lonvalue(i + j * zoom_ni_client) = lonvalue_temp( (i + zoom_ibegin_client -1) + (j + zoom_jbegin_client -1)*ni ); 427 // latvalue(i + j * zoom_ni_client) = latvalue_temp( (i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni ); 428 lonvalue(i + j * zoom_ni_client) = lonvalue_temp( (i + zoom_ibegin_client-ibegin) + (j + zoom_jbegin_client -jbegin)*ni ); 429 latvalue(i + j * zoom_ni_client) = latvalue_temp( (i + zoom_ibegin_client - ibegin)+(j + zoom_jbegin_client - jbegin)*ni ); 430 if (hasBounds) 431 { 432 for(int n=0;n<nvertex;n++) 433 { 434 // bounds_lon(n,i + j * zoom_ni_client) = bounds_lon_temp( n, (i + zoom_ibegin_client -1) + (j + zoom_jbegin_client -1)*ni ); 435 // bounds_lat(n,i + j * zoom_ni_client) = bounds_lat_temp( n, (i + zoom_ibegin_client -1)+(j + zoom_jbegin_client -1)*ni ); 436 bounds_lon(n,i + j * zoom_ni_client) = bounds_lon_temp( n, (i + zoom_ibegin_client - ibegin) + (j + zoom_jbegin_client -jbegin)*ni ); 437 bounds_lat(n,i + j * zoom_ni_client) = bounds_lat_temp( n, (i + zoom_ibegin_client - ibegin)+(j + zoom_jbegin_client -jbegin)*ni ); 438 } 439 } 457 440 } 458 441 } 459 }442 } 460 443 461 //----------------------------------------------------------------462 463 void CDomain::completeLonLatServer(void)464 {465 CArray<double,1> lonvalue_temp ;466 CArray<double,1> latvalue_temp ;467 468 const int ibegin_serv = ibegin.getValue(),469 jbegin_serv = jbegin.getValue(),470 zoom_ni_serv = zoom_ni_loc.getValue(),471 zoom_nj_serv = zoom_nj_loc.getValue(),472 ibegin_zoom_srv = zoom_ibegin_loc.getValue(),473 jbegin_zoom_srv = zoom_jbegin_loc.getValue();474 475 476 if (this->data_dim.getValue() == 2)477 {478 StdSize dm = zoom_ni_serv * zoom_nj_serv;479 480 lonvalue_temp.resize(dm);481 latvalue_temp.resize(dm);482 483 for (StdSize k = 0; k < lonvalue_sub.size(); k++)484 {485 CArray<double,1> lonvalue_loc(*(lonvalue_sub[k])) ;486 CArray<double,1> latvalue_loc (*(latvalue_sub[k]));487 488 const int zoom_ibegin_cl = ibegin_zoom_sub[k], zoom_ni_cl = ni_zoom_sub[k],489 zoom_jbegin_cl = jbegin_zoom_sub[k], zoom_nj_cl = nj_zoom_sub[k],490 ibegin_cl = ibegin_sub[k] ,491 jbegin_cl = jbegin_sub[k] ,492 ni_cl = iend_sub[k] - ibegin_sub[k] + 1;493 494 for (int i = 0; i < zoom_ni_cl; i++)495 {496 for (int j = 0; j < zoom_nj_cl; j++)497 {498 int ii = i + (ibegin_cl-1) - (ibegin_serv - 1) + (zoom_ibegin_cl - 1) - (ibegin_zoom_srv - 1);499 int jj = j + (jbegin_cl-1) - (jbegin_serv - 1) + (zoom_jbegin_cl - 1) - (jbegin_zoom_srv - 1);500 lonvalue_temp(ii + jj * zoom_ni_serv) = lonvalue_loc(i + j * zoom_ni_cl);501 latvalue_temp(ii + jj * zoom_ni_serv) = latvalue_loc(i + j * zoom_ni_cl);502 }503 }504 }505 506 lonvalue.reference(lonvalue_temp.copy()) ;507 latvalue.reference(latvalue_temp.copy()) ;508 }509 else510 {511 lonvalue_temp.resize(zoom_ni_serv);512 latvalue_temp.resize(zoom_nj_serv);513 514 for (StdSize k = 0; k < lonvalue_sub.size(); k++)515 {516 CArray<double,1> lonvalue_loc(*(lonvalue_sub[k]));517 CArray<double,1> latvalue_loc(*(latvalue_sub[k]));518 519 const int zoom_ibegin_cl = ibegin_zoom_sub[k], zoom_ni_cl = ni_zoom_sub[k],520 zoom_jbegin_cl = jbegin_zoom_sub[k], zoom_nj_cl = nj_zoom_sub[k];521 522 for (int i = 0; i < zoom_ni_cl; i++)523 lonvalue_temp(i /*- (ibegin_serv - 1)*/ + (zoom_ibegin_cl - 1) - (ibegin_zoom_srv - 1)) = lonvalue_loc(i);524 525 for (int j = 0; j < zoom_nj_cl; j++)526 latvalue_temp(j /*- (jbegin_serv - 1)*/ + (zoom_jbegin_cl - 1) - (jbegin_zoom_srv - 1)) = latvalue_loc(j);527 }528 lonvalue.reference(lonvalue_temp.copy()) ;529 latvalue.reference(latvalue_temp.copy()) ;530 }531 }532 444 533 445 //---------------------------------------------------------------- … … 547 459 else 548 460 { 549 int zoom_iend = zoom_ibegin .getValue() + zoom_ni.getValue()- 1;550 int zoom_jend = zoom_jbegin .getValue() + zoom_nj.getValue()- 1;461 int zoom_iend = zoom_ibegin + zoom_ni - 1; 462 int zoom_jend = zoom_jbegin + zoom_nj - 1; 551 463 552 if (zoom_ibegin.getValue() < 1 || zoom_jbegin.getValue() < 1 || 553 zoom_iend > ni_glo.getValue() || zoom_jend > nj_glo.getValue()) 464 if (zoom_ibegin < 1 || zoom_jbegin < 1 || zoom_iend > ni_glo || zoom_jend > nj_glo) 554 465 ERROR("CDomain::checkZoom(void)", 555 466 << "Zoom is wrong defined," … … 559 470 else 560 471 { 561 this->zoom_ni.setValue(this->ni_glo.getValue()); 562 this->zoom_nj.setValue(this->nj_glo.getValue()); 563 this->zoom_ibegin.setValue(1); 564 this->zoom_jbegin.setValue(1); 565 } 566 // Résolution des données locales de zoom. 567 { 568 int zoom_iend = zoom_ibegin.getValue() + zoom_ni.getValue() - 1; 569 int zoom_jend = zoom_jbegin.getValue() + zoom_nj.getValue() - 1; 472 zoom_ni = ni_glo; 473 zoom_nj = nj_glo; 474 zoom_ibegin = 1; 475 zoom_jbegin = 1; 476 } 477 478 // compute client zoom indices 479 480 int zoom_iend=zoom_ibegin+zoom_ni-1 ; 481 zoom_ibegin_client = ibegin_client > zoom_ibegin ? ibegin_client : zoom_ibegin ; 482 zoom_iend_client = iend_client < zoom_iend ? iend_client : zoom_iend ; 483 zoom_ni_client=zoom_iend_client-zoom_ibegin_client+1 ; 484 if (zoom_ni_client<0) zoom_ni_client=0 ; 485 486 487 int zoom_jend=zoom_jbegin+zoom_nj-1 ; 488 zoom_jbegin_client = jbegin_client > zoom_jbegin ? jbegin_client : zoom_jbegin ; 489 zoom_jend_client = jend_client < zoom_jend ? jend_client : zoom_jend ; 490 zoom_nj_client=zoom_jend_client-zoom_jbegin_client+1 ; 491 if (zoom_nj_client<0) zoom_nj_client=0 ; 492 493 cout << zoom_ibegin<<" "<<zoom_ni <<" "<< zoom_jbegin<<" "<<zoom_nj<<endl ; 494 cout << zoom_ibegin_client<<" "<<zoom_ni_client <<" "<< zoom_jbegin_client<<" "<<zoom_nj_client<<endl ; 495 cout << ibegin_client<<" "<<iend_client <<" "<< jbegin_client<<" "<<jend_client<<endl ; 496 /* 497 { 498 int zoom_iend = zoom_ibegin + zoom_ni - 1; 499 int zoom_jend = zoom_jbegin + zoom_nj - 1; 570 500 571 if ((zoom_ibegin.getValue() > iend.getValue()) || 572 (zoom_iend < ibegin.getValue())) 573 { 574 zoom_ni_loc.setValue(0); 575 zoom_ibegin_loc.setValue(zoom_ibegin.getValue()); 501 if ( zoom_ibegin > iend || zoom_iend < ibegin ) 502 { 503 zoom_ni_loc = 0 ; 504 zoom_ibegin_loc = zoom_ibegin ; 576 505 } 577 506 else 578 507 { 579 int zoom_ibegin_loc_ = (zoom_ibegin.getValue() > ibegin.getValue()) 580 ? zoom_ibegin.getValue() 581 : ibegin.getValue(); 582 int zoom_iend_loc_ = (zoom_iend < iend.getValue()) 583 ? zoom_iend 584 : iend.getValue(); 508 int zoom_ibegin_loc_ = (zoom_ibegin > ibegin) ? zoom_ibegin : ibegin ; 509 int zoom_iend_loc_ = (zoom_iend < iend) ? zoom_iend : iend ; 585 510 int zoom_ni_loc_ = zoom_iend_loc_ - zoom_ibegin_loc_ + 1; 586 511 587 zoom_ni_loc .setValue(zoom_ni_loc_);588 zoom_ibegin_loc .setValue(zoom_ibegin_loc_-ibegin.getValue()+1);512 zoom_ni_loc = zoom_ni_loc_; 513 zoom_ibegin_loc = zoom_ibegin_loc_-ibegin.getValue()+1; 589 514 } 590 515 591 if ((zoom_jbegin.getValue() > jend.getValue()) || 592 (zoom_jend < jbegin.getValue())) 593 { 594 zoom_nj_loc.setValue(0); 595 zoom_jbegin_loc.setValue(zoom_jbegin.getValue()); 516 if ( zoom_jbegin > jend || zoom_jend < jbegin ) 517 { 518 zoom_nj_loc = 0 ; 519 zoom_jbegin_loc = zoom_jbegin ; 596 520 } 597 521 else 598 522 { 599 int zoom_jbegin_loc_ = (zoom_jbegin.getValue() > jbegin.getValue()) 600 ? zoom_jbegin.getValue() 601 : jbegin.getValue(); 602 int zoom_jend_loc_ = (zoom_jend < jend.getValue()) 603 ? zoom_jend 604 : jend.getValue(); 523 int zoom_jbegin_loc_ = ( zoom_jbegin > jbegin ) ? zoom_jbegin : jbegin ; 524 int zoom_jend_loc_ = (zoom_jend < jend) ? zoom_jend : jend ; 605 525 int zoom_nj_loc_ = zoom_jend_loc_ - zoom_jbegin_loc_ + 1; 606 526 607 zoom_nj_loc.setValue(zoom_nj_loc_); 608 zoom_jbegin_loc.setValue(zoom_jbegin_loc_-jbegin.getValue()+1); 609 } 610 } 611 } 612 527 zoom_nj_loc = zoom_nj_loc_; 528 zoom_jbegin_loc = zoom_jbegin_loc_-jbegin.getValue()+1; 529 } 530 } 531 */ 532 } 533 534 void CDomain::checkBounds(void) 535 { 536 if (!nvertex.isEmpty() && !bounds_lon.isEmpty() && !bounds_lat.isEmpty()) 537 { 538 hasBounds=true ; 539 540 } 541 else 542 { 543 hasBounds=false; 544 nvertex=0 ; 545 } 546 } 547 613 548 //---------------------------------------------------------------- 614 549 … … 623 558 624 559 this->checkZoom(); 560 this->checkBounds(); 625 561 626 562 if (context->hasClient) … … 629 565 this->checkDomainData(); 630 566 this->checkCompression(); 631 632 this->ibegin_sub.push_back(this->ibegin.getValue()); 633 this->jbegin_sub.push_back(this->jbegin.getValue()); 634 this->iend_sub.push_back(this->iend.getValue()); 635 this->jend_sub.push_back(this->jend.getValue()); 636 637 this->ibegin_zoom_sub.push_back(this->zoom_ibegin_loc.getValue()); 638 this->jbegin_zoom_sub.push_back(this->zoom_jbegin_loc.getValue()); 639 this->ni_zoom_sub.push_back(this->zoom_ni_loc.getValue()); 640 this->nj_zoom_sub.push_back(this->zoom_nj_loc.getValue()); 641 642 this->latvalue_sub.push_back(new CArray<double,1>(latvalue.copy())); 643 this->lonvalue_sub.push_back(new CArray<double,1>(lonvalue.copy())); 644 645 646 // if (!this->isEmpty()) 647 // { 648 this->completeLonLatClient(); 649 // } 650 this->completeMask(); 651 567 this->completeLonLatClient(); 652 568 } 653 569 else … … 722 638 CContextClient* client=context->client ; 723 639 int nbServer=client->serverSize ; 724 640 641 /* 725 642 // compute client zoom indices 726 643 int zoom_iend=zoom_ibegin.getValue()+zoom_ni.getValue()-1 ; … … 735 652 zoom_nj_client=zoom_jend_client-zoom_jbegin_client+1 ; 736 653 if (zoom_nj_client<0) zoom_nj_client=0 ; 737 654 */ 738 655 // find how much client are connected to a server 656 int zoom_iend=zoom_ibegin+zoom_ni-1 ; 657 int zoom_jend=zoom_jbegin+zoom_nj-1 ; 658 739 659 jend_srv=0 ; 740 660 for(int ns=0;ns<nbServer;ns++) … … 747 667 ib = ibegin_client>ibegin_srv ? ibegin_client : ibegin_srv ; 748 668 ie= iend_client< iend_srv? iend_client : iend_srv ; 749 in=ie-ib+1 ; 669 in=ie-ib+1 ; 750 670 if (in<0) in=0 ; 751 671 … … 837 757 838 758 list<shared_ptr<CMessage> > list_msg ; 839 list<CArray<double,1>* > list_indi,list_indj,list_lon,list_lat ; 759 list< CArray<int,1>* > list_indi,list_indj ; 760 list< CArray<double,1>* >list_lon,list_lat ; 761 list< CArray<double,2>* >list_boundslon,list_boundslat ; 840 762 841 763 for(int ns=0;ns<connectedServer.size();ns++) … … 844 766 jb=jb_srv[ns] ; je=je_srv[ns] ; jn=jn_srv[ns] ; 845 767 846 CArray< double,1> indi(in*jn) ;847 CArray< double,1> indj(in*jn) ;768 CArray<int,1> indi(in*jn) ; 769 CArray<int,1> indj(in*jn) ; 848 770 CArray<double,1> lon(in*jn) ; 849 771 CArray<double,1> lat(in*jn) ; 772 CArray<double,2> boundslon(nvertex,in*jn) ; 773 CArray<double,2> boundslat(nvertex,in*jn) ; 850 774 851 775 … … 859 783 lon(ind_loc)=lonvalue(ind_client) ; 860 784 lat(ind_loc)=latvalue(ind_client) ; 785 if (hasBounds) 786 { 787 for(int n=0;n<nvertex;n++) 788 { 789 boundslon(n,ind_loc)=bounds_lon(n,ind_client); 790 boundslat(n,ind_loc)=bounds_lat(n,ind_client); 791 } 792 } 861 793 indi(ind_loc)=i ; 862 794 indj(ind_loc)=j ; 863 795 } 864 796 865 list_indi.push_back(new CArray< double,1>(indi.copy())) ;866 list_indj.push_back(new CArray< double,1>(indj.copy())) ;797 list_indi.push_back(new CArray<int,1>(indi.copy())) ; 798 list_indj.push_back(new CArray<int,1>(indj.copy())) ; 867 799 list_lon.push_back(new CArray<double,1>(lon.copy())) ; 868 800 list_lat.push_back(new CArray<double,1>(lat.copy())) ; 801 if (hasBounds) list_boundslon.push_back(new CArray<double,2>(boundslon.copy())) ; 802 if (hasBounds) list_boundslat.push_back(new CArray<double,2>(boundslat.copy())) ; 869 803 870 804 list_msg.push_back(shared_ptr<CMessage>(new CMessage)) ; 871 805 872 *list_msg.back()<<this->getId()<<isCurvilinear ; 806 *list_msg.back()<<this->getId()<<(int)type ; // enum ne fonctionne pour les message => ToFix 807 *list_msg.back()<<isCurvilinear ; 873 808 *list_msg.back()<<*list_indi.back()<<*list_indj.back()<<*list_lon.back()<<*list_lat.back() ; 809 if (hasBounds) *list_msg.back()<<*list_boundslon.back()<<*list_boundslat.back(); 874 810 event.push(connectedServer[ns],nbSenders[ns],*list_msg.back()) ; 875 811 } … … 877 813 client->sendEvent(event) ; 878 814 879 list<CArray<double,1>* >::iterator it; 880 for(it=list_indi.begin();it!=list_indi.end();it++) delete *it; 881 for(it=list_indj.begin();it!=list_indj.end();it++) delete *it; 882 for(it=list_lon.begin();it!=list_lon.end();it++) delete *it; 883 for(it=list_lat.begin();it!=list_lat.end();it++) delete *it; 815 816 for(list<CArray<int,1>* >::iterator it=list_indi.begin();it!=list_indi.end();it++) delete *it; 817 for(list<CArray<int,1>* >::iterator it=list_indj.begin();it!=list_indj.end();it++) delete *it; 818 for(list<CArray<double,1>* >::iterator it=list_lon.begin();it!=list_lon.end();it++) delete *it; 819 for(list<CArray<double,1>* >::iterator it=list_lat.begin();it!=list_lat.end();it++) delete *it; 820 if (hasBounds) for(list<CArray<double,2>* >::iterator it=list_boundslon.begin();it!=list_boundslon.end();it++) delete *it; 821 if (hasBounds) for(list<CArray<double,2>* >::iterator it=list_boundslat.begin();it!=list_boundslat.end();it++) delete *it; 884 822 885 823 } … … 940 878 lonvalue_srv.resize(zoom_ni_srv*zoom_nj_srv) ; 941 879 latvalue_srv.resize(zoom_ni_srv*zoom_nj_srv) ; 880 if (hasBounds) bounds_lon_srv.resize(nvertex,zoom_ni_srv*zoom_nj_srv) ; 881 if (hasBounds) bounds_lat_srv.resize(nvertex,zoom_ni_srv*zoom_nj_srv) ; 942 882 } 943 883 … … 956 896 void CDomain::recvLonLat(CBufferIn& buffer) 957 897 { 958 CArray< double,1> indi ;959 CArray< double,1> indj ;898 CArray<int,1> indi ; 899 CArray<int,1> indj ; 960 900 CArray<double,1> lon ; 961 901 CArray<double,1> lat ; 962 963 buffer>>isCurvilinear>>indi>>indj>>lon>>lat ; 902 CArray<double,2> boundslon ; 903 CArray<double,2> boundslat ; 904 905 int type_int ; 906 buffer>>type_int>>isCurvilinear>>indi>>indj>>lon>>lat ; 907 if (hasBounds) buffer>>boundslon>>boundslat ; 908 type.setValue((type_attr::t_enum)type_int) ; // probleme des type enum avec les buffers : ToFix 964 909 965 910 int i,j,ind_srv ; … … 971 916 lonvalue_srv(ind_srv)=lon(ind) ; 972 917 latvalue_srv(ind_srv)=lat(ind) ; 918 if (hasBounds) 919 { 920 for(int n=0;n<nvertex;n++) 921 { 922 bounds_lon_srv(n,ind_srv)=boundslon(n,ind) ; 923 bounds_lat_srv(n,ind_srv)=boundslat(n,ind) ; 924 } 925 } 973 926 } 974 927 } 975 928 //---------------------------------------------------------------- 976 929 977 void CDomain::completeMask(void) 978 { 979 this->local_mask.resize(zoom_ni_loc,zoom_nj_loc); 980 } 981 982 //---------------------------------------------------------------- 983 984 CArray<int,2> CDomain::getLocalMask(void) const 985 { 986 return (this->local_mask); 987 } 988 989 //---------------------------------------------------------------- 990 991 const std::vector<int> & CDomain::getIBeginSub(void) const 992 { 993 return (this->ibegin_sub); 994 } 995 996 //---------------------------------------------------------------- 997 998 const std::vector<int> & CDomain::getIBeginZoomSub(void) const 999 { 1000 return (this->ibegin_zoom_sub); 1001 } 1002 1003 const std::vector<int> & CDomain::getNiZoomSub(void) const 1004 { 1005 return (this->ni_zoom_sub); 1006 } 1007 1008 //---------------------------------------------------------------- 1009 1010 const std::vector<int> & CDomain::getIEndSub(void) const 1011 { 1012 return (this->iend_sub); 1013 } 1014 1015 //---------------------------------------------------------------- 1016 1017 const std::vector<int> & CDomain::getJBeginSub(void) const 1018 { 1019 return (this->jbegin_sub); 1020 } 1021 1022 //---------------------------------------------------------------- 1023 1024 const std::vector<int> & CDomain::getJBeginZoomSub(void) const 1025 { 1026 return (this->jbegin_zoom_sub); 1027 } 1028 1029 const std::vector<int> & CDomain::getNjZoomSub(void) const 1030 { 1031 return (this->nj_zoom_sub); 1032 } 1033 1034 1035 //---------------------------------------------------------------- 1036 1037 const std::vector<int> & CDomain::getJEndSub(void) const 1038 { 1039 return (this->jend_sub); 1040 } 1041 1042 //---------------------------------------------------------------- 1043 1044 const std::vector<CArray<double, 1>* > & CDomain::getLonValueSub(void) const 1045 { 1046 return (this->lonvalue_sub); 1047 } 1048 1049 //---------------------------------------------------------------- 1050 1051 const std::vector<CArray<double,1>*> & CDomain::getLatValueSub(void) const 1052 { 1053 return (this->latvalue_sub); 1054 } 930 1055 931 1056 932 ///--------------------------------------------------------------- -
XIOS/trunk/src/node/domain.hpp
r384 r449 12 12 #include "array_new.hpp" 13 13 #include "attribute_array.hpp" 14 #include "attribute_enum.hpp" 14 15 15 16 namespace xios { … … 69 70 70 71 void checkZoom(void); 72 void checkBounds(void); 71 73 72 void completeMask(void);73 74 74 75 public : 75 76 76 77 /// Autres /// 77 // virtual void fromBinary(StdIStream & is);78 78 79 /// Accesseurs ///80 CArray<int, 2> getLocalMask(void) const;81 82 79 const std::set<StdString> & getRelFiles(void) const; 83 80 84 const std::vector<int> & getIBeginSub(void) const;85 const std::vector<int> & getIEndSub(void) const;86 const std::vector<int> & getJBeginSub(void) const;87 const std::vector<int> & getJEndSub(void) const;88 89 const std::vector<int> & getIBeginZoomSub(void) const;90 const std::vector<int> & getJBeginZoomSub(void) const;91 const std::vector<int> & getNiZoomSub(void) const;92 const std::vector<int> & getNjZoomSub(void) const;93 94 const std::vector<CArray<double,1>* > & getLonValueSub(void) const;95 const std::vector<CArray<double,1>* > & getLatValueSub(void) const;96 81 97 82 /// Test /// … … 114 99 115 100 CArray<double, 1> lonvalue_srv, latvalue_srv ; 101 CArray<double, 2> bounds_lon_srv, bounds_lat_srv ; 116 102 117 103 … … 124 110 /// Mutateur /// 125 111 void addRelFile(const StdString & filename); 126 void completeLonLatServer(void);127 112 void completeLonLatClient(void); 128 113 void sendServerAttribut(void) ; … … 146 131 CArray<int, 2> local_mask; 147 132 bool isCurvilinear ; 133 bool hasBounds ; 148 134 private : 149 135 … … 151 137 bool isChecked; 152 138 std::set<StdString> relFiles; 153 154 std::vector<int> ibegin_sub, iend_sub, jbegin_sub, jend_sub;155 std::vector<int> ibegin_zoom_sub, jbegin_zoom_sub, ni_zoom_sub, nj_zoom_sub;156 std::vector<CArray<double,1>* > lonvalue_sub, latvalue_sub;157 158 139 159 140 }; // class CDomain -
XIOS/trunk/src/node/field.cpp
r445 r449 402 402 } 403 403 404 if (context->hasClient)405 {404 // if (context->hasClient) 405 // { 406 406 this->freq_operation = CDuration::FromString(freq_op.getValue()); 407 407 this->freq_write = CDuration::FromString(this->file->output_freq.getValue()); … … 432 432 << "[ operation = " << operation.getValue() << "]" 433 433 << "The operation is not defined !"); 434 }434 // } 435 435 436 436 -
XIOS/trunk/src/output/nc4_data_output.cpp
r448 r449 57 57 void CNc4DataOutput::writeDomain_(CDomain* domain) 58 58 { 59 if (domain->type == CDomain::type_attr::unstructured) 60 { 61 writeUnstructuredDomain(domain) ; 62 return ; 63 } 64 59 65 CContext* context = CContext::getCurrent() ; 60 66 CContextServer* server=context->server ; … … 70 76 ? domain->name.getValue() : domain->getId(); 71 77 StdString appendDomid = (singleDomain) ? "" : "_"+domid ; 72 73 bool isCurvilinear = domain->isCurvilinear ; 78 79 74 80 StdString dimXid, dimYid ; 75 if (isCurvilinear) 76 { 77 dimXid = StdString("x").append(appendDomid); 78 dimYid = StdString("y").append(appendDomid); 79 } 80 else 81 { 82 dimXid = StdString("lon").append(appendDomid); 83 dimYid = StdString("lat").append(appendDomid); 81 82 switch (domain->type) 83 { 84 case CDomain::type_attr::curvilinear : 85 dimXid = StdString("x").append(appendDomid); 86 dimYid = StdString("y").append(appendDomid); 87 break ; 88 case CDomain::type_attr::regular : 89 dimXid = StdString("lon").append(appendDomid); 90 dimYid = StdString("lat").append(appendDomid); 91 break; 92 case CDomain::type_attr::unstructured : 93 dimXid = StdString("cell").append(appendDomid); 94 break; 84 95 } 85 96 86 string lonid,latid ;97 string lonid,latid,bounds_lonid,bounds_latid ; 87 98 /* 88 99 StdString lonid_loc = (server->intraCommSize > 1) … … 106 117 } 107 118 108 if (isCurvilinear) 109 { 110 dim0.push_back(dimYid); dim0.push_back(dimXid); 111 lonid = StdString("nav_lon").append(appendDomid); 112 latid = StdString("nav_lat").append(appendDomid); 119 switch (domain->type) 120 { 121 case CDomain::type_attr::curvilinear : 122 dim0.push_back(dimYid); dim0.push_back(dimXid); 123 lonid = StdString("nav_lon").append(appendDomid); 124 latid = StdString("nav_lat").append(appendDomid); 125 break ; 126 case CDomain::type_attr::regular : 127 lonid = StdString("lon").append(appendDomid); 128 latid = StdString("lat").append(appendDomid); 129 dim0.push_back(dimYid); 130 dim1.push_back(dimXid); 131 break; 132 case CDomain::type_attr::unstructured : 133 lonid = StdString("lon").append(appendDomid); 134 latid = StdString("lat").append(appendDomid); 135 bounds_lonid=string("bounds_lon").append(appendDomid); 136 bounds_latid=string("bounds_lat").append(appendDomid); 137 dim0.push_back(dimXid); 138 break; 139 } 140 141 if (domain->type == CDomain::type_attr::unstructured) 142 { 143 SuperClassWriter::addDimension(dimXid, domain->nj_glo); 113 144 } 114 145 else 115 146 { 116 lonid = StdString("lon").append(appendDomid); 117 latid = StdString("lat").append(appendDomid); 118 dim0.push_back(dimYid); 119 dim1.push_back(dimXid); 120 } 121 122 SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv); 123 SuperClassWriter::addDimension(dimYid, domain->zoom_nj_srv); 147 SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv); 148 SuperClassWriter::addDimension(dimYid, domain->zoom_nj_srv); 149 } 150 124 151 if (server->intraCommSize > 1) 125 152 { 126 this->writeLocalAttributes(domain->zoom_ibegin_srv, 127 domain->zoom_ni_srv, 128 domain->zoom_jbegin_srv, 129 domain->zoom_nj_srv, 130 appendDomid); 153 if (domain->type != CDomain::type_attr::unstructured) 154 { 155 this->writeLocalAttributes(domain->zoom_ibegin_srv, 156 domain->zoom_ni_srv, 157 domain->zoom_jbegin_srv, 158 domain->zoom_nj_srv, 159 appendDomid); 131 160 132 if (singleDomain) this->writeLocalAttributes_IOIPSL(domain->zoom_ibegin_srv, 133 domain->zoom_ni_srv, 134 domain->zoom_jbegin_srv, 135 domain->zoom_nj_srv, 136 domain->ni_glo,domain->nj_glo, 137 server->intraCommRank,server->intraCommSize); 138 } 139 140 if (isCurvilinear) 141 { 142 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 143 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 144 } 145 else 146 { 147 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 148 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); 149 } 150 this->writeAxisAttributes 151 (lonid, "X", "longitude", "Longitude", "degrees_east", domid); 152 this->writeAxisAttributes 153 (latid, "Y", "latitude", "Latitude", "degrees_north", domid); 161 if (singleDomain) this->writeLocalAttributes_IOIPSL(domain->zoom_ibegin_srv, 162 domain->zoom_ni_srv, 163 domain->zoom_jbegin_srv, 164 domain->zoom_nj_srv, 165 domain->ni_glo,domain->nj_glo, 166 server->intraCommRank,server->intraCommSize); 167 } 168 } 169 170 switch (domain->type) 171 { 172 case CDomain::type_attr::curvilinear : 173 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 174 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 175 break ; 176 case CDomain::type_attr::regular : 177 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 178 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); 179 break ; 180 case CDomain::type_attr::unstructured : 181 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 182 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 183 } 184 185 this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 186 this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 154 187 155 188 dim0.clear(); 156 dim0.push_back(dimYid);189 if (domain->type != CDomain::type_attr::unstructured) dim0.push_back(dimYid); 157 190 dim0.push_back(dimXid); 158 191 … … 173 206 174 207 SuperClassWriter::definition_end(); 175 if (isCurvilinear) 176 {177 178 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0);179 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0);180 // supress mask if (server->intraCommSize > 1) SuperClassWriter::writeData(mask, maskid);181 }182 else183 {184 CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv));185 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0);186 CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1));187 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0);208 209 switch (domain->type) 210 { 211 case CDomain::type_attr::curvilinear : 212 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0); 213 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0); 214 break; 215 case CDomain::type_attr::regular : 216 CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ; 217 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 218 CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ; 219 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 220 break; 188 221 } 189 222 SuperClassWriter::definition_start(); … … 197 230 198 231 199 if (isCurvilinear) 200 { 201 dim0.push_back(dimYid); dim0.push_back(dimXid); 202 lonid = StdString("nav_lon").append(appendDomid); 203 latid = StdString("nav_lat").append(appendDomid); 204 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 205 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 206 } 207 else 208 { 209 dim0.push_back(dimYid); 210 dim1.push_back(dimXid); 211 lonid = StdString("lon").append(appendDomid); 212 latid = StdString("lat").append(appendDomid); 213 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 214 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); 232 switch (domain->type) 233 { 234 case CDomain::type_attr::curvilinear : 235 dim0.push_back(dimYid); dim0.push_back(dimXid); 236 lonid = StdString("nav_lon").append(appendDomid); 237 latid = StdString("nav_lat").append(appendDomid); 238 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 239 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 240 break; 241 242 case CDomain::type_attr::regular : 243 dim0.push_back(dimYid); 244 dim1.push_back(dimXid); 245 lonid = StdString("lon").append(appendDomid); 246 latid = StdString("lat").append(appendDomid); 247 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 248 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); 249 break; 215 250 } 216 251 this->writeAxisAttributes … … 221 256 222 257 SuperClassWriter::definition_end(); 223 if (isCurvilinear) 224 { 225 std::vector<StdSize> start(2) ; 226 std::vector<StdSize> count(2) ; 227 if (domain->isEmpty()) 258 switch (domain->type) 259 { 260 case CDomain::type_attr::curvilinear : 228 261 { 229 start[0]=0 ; start [1]=0 ; 230 count[0]=0 ; count[1]=0 ; 262 std::vector<StdSize> start(2) ; 263 std::vector<StdSize> count(2) ; 264 if (domain->isEmpty()) 265 { 266 start[0]=0 ; start [1]=0 ; 267 count[0]=0 ; count[1]=0 ; 268 } 269 else 270 { 271 start[1]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; start [0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ; 272 count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ; 273 } 274 275 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 276 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); 277 break; 231 278 } 232 else279 case CDomain::type_attr::regular : 233 280 { 234 start[1]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; start [0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ; 235 count[1]=domain->zoom_ni_srv ; count[0]=domain->zoom_nj_srv ; 236 } 237 238 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 239 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); 240 } 241 else 242 { 243 std::vector<StdSize> start(1) ; 244 std::vector<StdSize> count(1) ; 245 if (domain->isEmpty()) 246 { 247 start[0]=0 ; 248 count[0]=0 ; 249 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 250 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); } 251 else 252 { 253 start[0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ; 254 count[0]=domain->zoom_nj_srv ; 255 CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ; 256 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 257 258 start[0]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; 259 count[0]=domain->zoom_ni_srv ; 260 CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ; 261 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 281 std::vector<StdSize> start(1) ; 282 std::vector<StdSize> count(1) ; 283 if (domain->isEmpty()) 284 { 285 start[0]=0 ; 286 count[0]=0 ; 287 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 288 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); } 289 else 290 { 291 start[0]=domain->zoom_jbegin_srv-domain->zoom_jbegin.getValue() ; 292 count[0]=domain->zoom_nj_srv ; 293 CArray<double,1> lat = domain->latvalue_srv(Range(fromStart,toEnd,domain->zoom_ni_srv)) ; 294 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 295 296 start[0]=domain->zoom_ibegin_srv-domain->zoom_ibegin.getValue() ; 297 count[0]=domain->zoom_ni_srv ; 298 CArray<double,1> lon=domain->lonvalue_srv(Range(0,domain->zoom_ni_srv-1)) ; 299 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 300 } 301 break; 262 302 } 263 303 } … … 273 313 } 274 314 315 void CNc4DataOutput::writeUnstructuredDomain(CDomain* domain) 316 { 317 CContext* context = CContext::getCurrent() ; 318 CContextServer* server=context->server ; 319 320 if (domain->IsWritten(this->filename)) return; 321 domain->checkAttributes(); 322 323 if (domain->isEmpty()) 324 if (SuperClass::type==MULTI_FILE) return ; 325 326 std::vector<StdString> dim0, dim1; 327 StdString domid = (!domain->name.isEmpty()) 328 ? domain->name.getValue() : domain->getId(); 329 StdString appendDomid = (singleDomain) ? "" : "_"+domid ; 330 331 332 StdString dimXid = StdString("cell").append(appendDomid); 333 StdString dimVertId = StdString("nvertex").append(appendDomid); 334 335 string lonid,latid,bounds_lonid,bounds_latid ; 336 337 switch (SuperClass::type) 338 { 339 case (MULTI_FILE) : 340 { 341 lonid = StdString("lon").append(appendDomid); 342 latid = StdString("lat").append(appendDomid); 343 dim0.push_back(dimXid); 344 345 SuperClassWriter::addDimension(dimXid, domain->zoom_nj_srv); 346 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 347 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 348 349 bounds_lonid = StdString("bounds_lon").append(appendDomid); 350 bounds_latid = StdString("bounds_lat").append(appendDomid); 351 352 353 this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 354 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_lonid, &lonid); 355 this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 356 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_latid, &latid); 357 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, domain->nvertex); 358 dim0.clear(); 359 if (domain->hasBounds) 360 { 361 dim0.push_back(dimXid); 362 dim0.push_back(dimVertId); 363 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0); 364 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0); 365 } 366 367 dim0.clear(); 368 dim0.push_back(dimXid); 369 370 SuperClassWriter::definition_end(); 371 372 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0); 373 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0); 374 375 if (domain->hasBounds) 376 { 377 SuperClassWriter::writeData(domain->bounds_lon_srv, bounds_lonid, isCollective, 0); 378 SuperClassWriter::writeData(domain->bounds_lat_srv, bounds_latid, isCollective, 0); 379 } 380 SuperClassWriter::definition_start(); 381 break ; 382 } 383 384 case (ONE_FILE) : 385 { 386 lonid = StdString("lon").append(appendDomid); 387 latid = StdString("lat").append(appendDomid); 388 bounds_lonid = StdString("bounds_lon").append(appendDomid); 389 bounds_latid = StdString("bounds_lat").append(appendDomid); 390 dim0.push_back(dimXid); 391 SuperClassWriter::addDimension(dimXid, domain->nj_glo); 392 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 393 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 394 this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 395 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_lonid, &lonid); 396 this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 397 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_latid, &latid); 398 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, domain->nvertex); 399 dim0.clear(); 400 401 if (domain->hasBounds) 402 { 403 dim0.push_back(dimXid); 404 dim0.push_back(dimVertId); 405 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0); 406 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0); 407 } 408 409 SuperClassWriter::definition_end(); 410 411 std::vector<StdSize> start(1), startBounds(2) ; 412 std::vector<StdSize> count(1), countBounds(2) ; 413 if (domain->isEmpty()) 414 { 415 start[0]=0 ; 416 count[0]=0 ; 417 startBounds[0]=0 ; 418 countBounds[0]=domain->nvertex ; 419 startBounds[1]=0 ; 420 countBounds[1]=0 ; 421 } 422 else 423 { 424 start[0]=domain->zoom_jbegin_srv-domain->zoom_jbegin ; 425 count[0]=domain->zoom_nj_srv ; 426 startBounds[0]=0 ; 427 countBounds[0]=domain->nvertex ; 428 startBounds[1]=domain->zoom_jbegin_srv-domain->zoom_jbegin ; 429 countBounds[1]=domain->zoom_nj_srv ; 430 } 431 SuperClassWriter::writeData(domain->latvalue_srv, latid, isCollective, 0,&start,&count); 432 SuperClassWriter::writeData(domain->lonvalue_srv, lonid, isCollective, 0,&start,&count); 433 if (domain->hasBounds) 434 { 435 SuperClassWriter::writeData(domain->bounds_lon_srv, bounds_lonid, isCollective, 0,&start,&count); 436 SuperClassWriter::writeData(domain->bounds_lat_srv, bounds_latid, isCollective, 0,&startBounds,&countBounds); 437 } 438 439 440 SuperClassWriter::definition_start(); 441 442 break; 443 } 444 default : 445 ERROR("CNc4DataOutput::writeDomain(domain)", 446 << "[ type = " << SuperClass::type << "]" 447 << " not implemented yet !"); 448 } 449 domain->addRelFile(this->filename); 450 } 275 451 //-------------------------------------------------------------- 276 452 … … 334 510 void CNc4DataOutput::writeTimeDimension_(void) 335 511 { 336 SuperClassWriter::addDimension( string("time_counter"));512 SuperClassWriter::addDimension("time_counter"); 337 513 } 338 514 //-------------------------------------------------------------- … … 355 531 StdString appendDomid = (singleDomain) ? "" : "_"+domid ; 356 532 357 bool isCurvilinear = domain->isCurvilinear ; 533 // bool isCurvilinear = domain->isCurvilinear ; 534 // bool isCurvilinear = (domain->type == CDomain::type_attr::curvilinear) ; 358 535 359 536 StdString dimXid,dimYid ; 360 537 361 if (isCurvilinear) 362 { 363 dimXid = StdString("x").append(appendDomid); 364 dimYid = StdString("y").append(appendDomid); 365 } 366 else 367 { 368 dimXid = StdString("lon").append(appendDomid); 369 dimYid = StdString("lat").append(appendDomid); 370 } 538 switch (domain->type) 539 { 540 case CDomain::type_attr::curvilinear : 541 dimXid = StdString("x").append(appendDomid); 542 dimYid = StdString("y").append(appendDomid); 543 break ; 544 case CDomain::type_attr::regular : 545 dimXid = StdString("lon").append(appendDomid); 546 dimYid = StdString("lat").append(appendDomid); 547 break ; 548 case CDomain::type_attr::unstructured : 549 dimXid = StdString("cell").append(appendDomid); 550 break ; 551 } 371 552 372 553 /* … … 388 569 ( field->prec.getValue() == 4)) 389 570 ? NC_FLOAT : NC_DOUBLE; 390 bool wtime = !(!field->operation.isEmpty() && 391 ( field->operation.getValue().compare("once") == 0)); 571 bool wtime = !(!field->operation.isEmpty() && field->foperation->timeType() == func::CFunctor::once); 392 572 393 573 if (wtime) 394 574 { 395 StdOStringStream oss; 396 oss << "time_" << field->operation.getValue() 397 << "_" << field->getRelFile()->output_freq.getValue(); 398 399 coodinates.push_back(oss.str()); 575 576 //StdOStringStream oss; 577 // oss << "time_" << field->operation.getValue() 578 // << "_" << field->getRelFile()->output_freq.getValue(); 579 //oss 580 if (field->foperation->timeType() == func::CFunctor::instant) coodinates.push_back(string("time_instant")); 581 else if (field->foperation->timeType() == func::CFunctor::centered) coodinates.push_back(string("time_centered")); 400 582 dims.push_back(timeid); 401 583 } … … 409 591 } 410 592 411 if (isCurvilinear) 412 { 413 coodinates.push_back(StdString("nav_lat").append(appendDomid)); 414 coodinates.push_back(StdString("nav_lon").append(appendDomid)); 415 } 416 else 417 { 593 switch (domain->type) 594 { 595 case CDomain::type_attr::curvilinear : 596 coodinates.push_back(StdString("nav_lon").append(appendDomid)); 597 coodinates.push_back(StdString("nav_lat").append(appendDomid)); 598 break; 599 case CDomain::type_attr::regular : 600 case CDomain::type_attr::unstructured : 601 coodinates.push_back(StdString("lon").append(appendDomid)); 418 602 coodinates.push_back(StdString("lat").append(appendDomid)); 419 coodinates.push_back(StdString("lon").append(appendDomid)); 420 } 421 422 switch (SuperClass::type) 423 { 424 case (MULTI_FILE) : 425 { 426 dims.push_back(dimYid); 427 dims.push_back(dimXid); 428 break ; 429 } 430 case (ONE_FILE) : 431 { 432 dims.push_back(dimYid); 433 dims.push_back(dimXid); 434 break; 435 } 436 default : 437 ERROR("CNc4DataOutput::writeDomain(domain)", 438 << "[ type = " << SuperClass::type << "]" 439 << " not implemented yet !"); 440 } 603 break; 604 } 605 606 if ( domain->type == CDomain::type_attr::curvilinear || type == CDomain::type_attr::regular)dims.push_back(dimYid); 607 dims.push_back(dimXid); 441 608 442 609 SuperClassWriter::addVariable(fieldid, type, dims); … … 567 734 568 735 StdOStringStream oss; 569 oss << "time_" << field->operation.getValue() 570 << "_" << field->getRelFile()->output_freq.getValue(); 736 string timeAxisId ; 737 if (field->foperation->timeType() == func::CFunctor::instant) timeAxisId="time_instant" ; 738 else if (field->foperation->timeType() == func::CFunctor::centered) timeAxisId="time_centered" ; 739 571 740 572 741 CArray<double,1> time_data(1) ; 573 574 bool wtime = !(!field->operation.isEmpty() &&575 ( field->operation.getValue().compare("once") == 0));742 CArray<double,1> time_counter(1) ; 743 744 bool wtime = !(!field->operation.isEmpty() && (field->foperation->timeType() == func::CFunctor::once)); 576 745 577 746 if (wtime) 578 747 { 579 if (field->operation.getValue()=="instant") time_data(0) = Time(*field->last_Write_srv) 580 -Time(context->calendar->getTimeOrigin()); 581 else time_data(0) = (Time(*field->last_Write_srv)+Time(*field->lastlast_Write_srv))/2 582 -Time(context->calendar->getTimeOrigin()); 748 time_counter(0)= (Time(*field->last_Write_srv)+Time(*field->lastlast_Write_srv))/2 -Time(context->calendar->getTimeOrigin()); 749 if (field->foperation->timeType() == func::CFunctor::instant) 750 time_data(0) = Time(*field->last_Write_srv)-Time(context->calendar->getTimeOrigin()); 751 else if (field->foperation->timeType() == func::CFunctor::centered) time_data(0) = time_counter(0); 752 583 753 } 584 754 … … 599 769 { 600 770 SuperClassWriter::writeData(field_data3D, fieldid, isCollective, field->getNStep()-1); 601 if (wtime) SuperClassWriter::writeData(time_data, oss.str(), isCollective, field->getNStep()-1); 771 if (wtime) 772 { 773 SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep()-1); 774 SuperClassWriter::writeData(time_counter, string("time_counter"), isCollective, field->getNStep()-1); 775 } 602 776 break ; 603 777 } … … 618 792 } 619 793 SuperClassWriter::writeData(field_data3D, fieldid, isCollective, field->getNStep()-1,&start,&count ); 620 if (wtime) SuperClassWriter::writeTimeAxisData(time_data, oss.str(), isCollective, field->getNStep()-1,isRoot ); 794 if (wtime) 795 { 796 SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep()-1,isRoot ); 797 SuperClassWriter::writeTimeAxisData(time_counter, string("time_counter"), isCollective, field->getNStep()-1,isRoot ); 798 } 621 799 break; 622 800 } … … 634 812 { 635 813 SuperClassWriter::writeData(field_data2D, fieldid, isCollective, field->getNStep()-1); 636 if (wtime) SuperClassWriter::writeData(time_data, oss.str(), isCollective, field->getNStep()-1); 814 if (wtime) 815 { 816 SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep()-1); 817 SuperClassWriter::writeData(time_counter, string("time_counter"), isCollective, field->getNStep()-1); 818 } 637 819 break; 638 820 } … … 653 835 654 836 SuperClassWriter::writeData(field_data2D, fieldid, isCollective, field->getNStep()-1,&start,&count); 655 if (wtime) SuperClassWriter::writeTimeAxisData(time_data, oss.str(), isCollective, field->getNStep()-1,isRoot); 837 if (wtime) 838 { 839 SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep()-1,isRoot); 840 SuperClassWriter::writeTimeAxisData(time_counter, string("time_counter"), isCollective, field->getNStep()-1,isRoot); 841 } 656 842 break; 657 843 … … 669 855 StdOStringStream oss; 670 856 671 if (field->operation.getValue().compare("once") == 0) return ; 672 673 oss << "time_" << field->operation.getValue() 674 << "_" << field->getRelFile()->output_freq.getValue(); 675 857 // if (field->operation.getValue().compare("once") == 0) return ; 858 if (field->foperation->timeType() == func::CFunctor::once) return ; 859 860 // oss << "time_" << field->operation.getValue() 861 // << "_" << field->getRelFile()->output_freq.getValue(); 862 863 string axisid ; 864 if (field->foperation->timeType() == func::CFunctor::centered) axisid="time_centered" ; 865 else if (field->foperation->timeType() == func::CFunctor::instant) axisid="time_instant" ; 866 676 867 std::vector<StdString> dims; 677 StdString axisid = oss.str();868 // StdString axisid = oss.str(); 678 869 StdString timeid = StdString("time_counter"); 679 870 … … 682 873 { 683 874 SuperClassWriter::addVariable(axisid, NC_DOUBLE, dims); 875 684 876 CDate timeOrigin=cal->getTimeOrigin() ; 685 877 // StdOStringStream oss2; … … 693 885 strTimeOrigin); 694 886 } 887 888 dims.clear() ; 889 axisid = "time_counter" ; 890 timeid = "time_counter" ; 891 892 dims.push_back(timeid); 893 if (!SuperClassWriter::varExist(axisid)) 894 { 895 SuperClassWriter::addVariable(axisid, NC_DOUBLE, dims); 896 SuperClassWriter::addAttribute("axis", string("T"), &axisid); 897 CDate timeOrigin=cal->getTimeOrigin() ; 898 StdString strTimeOrigin=timeOrigin.toString() ; 899 this->writeTimeAxisAttributes 900 (axisid, cal->getType(), 901 StdString("seconds since ").append(strTimeOrigin), 902 strTimeOrigin); 903 } 904 695 905 696 906 } -
XIOS/trunk/src/output/nc4_data_output.hpp
r391 r449 52 52 53 53 protected : 54 54 void writeUnstructuredDomain (CDomain* domain); 55 55 void writeLocalAttributes(int ibegin, int ni, int jbegin, int nj, StdString domid); 56 56 void writeLocalAttributes_IOIPSL(int ibegin, int ni, int jbegin, int nj, int ni_glo, int nj_glo, int rank, int size) ;
Note: See TracChangeset
for help on using the changeset viewer.