Ignore:
Timestamp:
01/20/13 23:14:35 (11 years ago)
Author:
ymipsl
Message:

Add grid mask attribute

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran_attr/igrid_attr.F90

    r326 r415  
    1212   
    1313  SUBROUTINE xios(set_grid_attr)  & 
    14     ( grid_id, axis_ref, description, domain_ref, name ) 
     14    ( grid_id, axis_ref, description, domain_ref, mask, name ) 
    1515     
    1616    IMPLICIT NONE 
     
    2020      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    2121      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref 
     22      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
     23      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
    2224      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    2325       
    2426      CALL xios(get_grid_handle)(grid_id,grid_hdl) 
    2527      CALL xios(set_grid_attr_hdl_)   & 
    26       ( grid_hdl, axis_ref, description, domain_ref, name ) 
     28      ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    2729     
    2830  END SUBROUTINE xios(set_grid_attr) 
    2931   
    3032  SUBROUTINE xios(set_grid_attr_hdl)  & 
    31     ( grid_hdl, axis_ref, description, domain_ref, name ) 
     33    ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    3234     
    3335    IMPLICIT NONE 
     
    3638      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description 
    3739      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref 
     40      LOGICAL  , OPTIONAL, INTENT(IN) :: mask(:,:,:) 
     41      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
    3842      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name 
    3943       
    4044      CALL xios(set_grid_attr_hdl_)  & 
    41       ( grid_hdl, axis_ref, description, domain_ref, name ) 
     45      ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    4246     
    4347  END SUBROUTINE xios(set_grid_attr_hdl) 
    4448   
    4549  SUBROUTINE xios(set_grid_attr_hdl_)   & 
    46     ( grid_hdl, axis_ref_, description_, domain_ref_, name_ ) 
     50    ( grid_hdl, axis_ref_, description_, domain_ref_, mask_, name_ ) 
    4751     
    4852    IMPLICIT NONE 
     
    5155      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_ 
    5256      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_ 
     57      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_(:,:,:) 
     58      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
    5359      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_ 
    5460       
     
    6571      ENDIF 
    6672       
     73      IF (PRESENT(mask_)) THEN 
     74        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
     75        mask__tmp=mask_ 
     76        CALL cxios_set_grid_mask(grid_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
     77      ENDIF 
     78       
    6779      IF (PRESENT(name_)) THEN 
    6880        CALL cxios_set_grid_name(grid_hdl%daddr, name_, len(name_)) 
     
    7486   
    7587  SUBROUTINE xios(get_grid_attr)  & 
    76     ( grid_id, axis_ref, description, domain_ref, name ) 
     88    ( grid_id, axis_ref, description, domain_ref, mask, name ) 
    7789     
    7890    IMPLICIT NONE 
     
    8294      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    8395      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref 
     96      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
     97      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
    8498      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    8599       
    86100      CALL xios(get_grid_handle)(grid_id,grid_hdl) 
    87101      CALL xios(get_grid_attr_hdl_)   & 
    88       ( grid_hdl, axis_ref, description, domain_ref, name ) 
     102      ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    89103     
    90104  END SUBROUTINE xios(get_grid_attr) 
    91105   
    92106  SUBROUTINE xios(get_grid_attr_hdl)  & 
    93     ( grid_hdl, axis_ref, description, domain_ref, name ) 
     107    ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    94108     
    95109    IMPLICIT NONE 
     
    98112      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description 
    99113      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref 
     114      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask(:,:,:) 
     115      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_tmp(:,:,:) 
    100116      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name 
    101117       
    102118      CALL xios(get_grid_attr_hdl_)  & 
    103       ( grid_hdl, axis_ref, description, domain_ref, name ) 
     119      ( grid_hdl, axis_ref, description, domain_ref, mask, name ) 
    104120     
    105121  END SUBROUTINE xios(get_grid_attr_hdl) 
    106122   
    107123  SUBROUTINE xios(get_grid_attr_hdl_)   & 
    108     ( grid_hdl, axis_ref_, description_, domain_ref_, name_ ) 
     124    ( grid_hdl, axis_ref_, description_, domain_ref_, mask_, name_ ) 
    109125     
    110126    IMPLICIT NONE 
     
    113129      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_ 
    114130      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_ 
     131      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_(:,:,:) 
     132      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask__tmp(:,:,:) 
    115133      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_ 
    116134       
     
    127145      ENDIF 
    128146       
     147      IF (PRESENT(mask_)) THEN 
     148        ALLOCATE(mask__tmp(size(mask_,1),size(mask_,2),size(mask_,3))) 
     149        CALL cxios_get_grid_mask(grid_hdl%daddr, mask__tmp,size(mask_,1),size(mask_,2),size(mask_,3)) 
     150        mask_=mask__tmp 
     151      ENDIF 
     152       
    129153      IF (PRESENT(name_)) THEN 
    130154        CALL cxios_get_grid_name(grid_hdl%daddr, name_, len(name_)) 
Note: See TracChangeset for help on using the changeset viewer.