Changeset 310


Ignore:
Timestamp:
02/14/12 13:52:39 (9 years ago)
Author:
ymipsl
Message:

Add xios_field_is_active functionnality

YM

Location:
XIOS/trunk/src
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/fortran/field_interface.f90

    r286 r310  
    112112      END SUBROUTINE cxios_field_valid_id 
    113113 
     114      SUBROUTINE cxios_field_is_active(field_hdl, ret) BIND(C) 
     115         USE ISO_C_BINDING 
     116         INTEGER  (kind = C_INTPTR_T), VALUE        :: field_hdl 
     117         LOGICAL  (kind = C_BOOL)                   :: ret 
     118      END SUBROUTINE cxios_field_is_active 
     119 
    114120   END INTERFACE 
    115121    
  • XIOS/trunk/src/fortran/icfield.cpp

    r300 r310  
    293293   } 
    294294    
     295   void cxios_field_is_active (XFieldPtr field_hdl, bool* ret) 
     296   { 
     297      *ret = field_hdl->isActive(); 
     298   } 
     299    
    295300} // extern "C" 
  • XIOS/trunk/src/fortran/ifield.F90

    r286 r310  
    3131   END INTERFACE   
    3232   !---------------------------------------------------------------------------- 
     33    
    3334    
    3435   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
     
    318319   END FUNCTION  xios(is_valid_fieldgroup) 
    319320    
    320     
     321  LOGICAL FUNCTION xios(field_is_active_id(field_id)) 
     322      IMPLICIT NONE 
     323      CHARACTER(len  = *)    , INTENT(IN) :: field_id 
     324      LOGICAL  (kind = 1)                 :: val 
     325      TYPE(txios(field))                 :: field_hdl 
     326       
     327      CALL xios(get_field_handle)(field_id,field_hdl) 
     328      xios(field_is_active_id)=xios(field_is_active_hdl(field_hdl)) 
     329 
     330   END FUNCTION  xios(field_is_active_id) 
     331    
     332    
     333   LOGICAL FUNCTION xios(field_is_active_hdl(field_hdl)) 
     334      IMPLICIT NONE 
     335      TYPE(txios(field)),INTENT(IN)       :: field_hdl 
     336      LOGICAL  (kind = 1)                 :: ret 
     337       
     338      CALL cxios_field_is_active(field_hdl%daddr, ret); 
     339      xios(field_is_active_hdl) = ret 
     340       
     341   END FUNCTION  xios(field_is_active_hdl)  
    321342  
    322343    
     
    544565      field_valid_id = val 
    545566   END FUNCTION  field_valid_id 
     567  
    546568 
    547569   LOGICAL FUNCTION fieldgroup_valid_id(idt) 
  • XIOS/trunk/src/fortran/ixios.F90

    r300 r310  
    2424                   xios(set_fieldgroup_attr_hdl),xios(set_field_attr),xios(set_field_attr_hdl),      & 
    2525                   xios(get_field_handle), xios(get_fieldgroup_handle), xios(is_valid_field),        & 
    26                    xios(is_valid_fieldgroup)   
     26                   xios(is_valid_fieldgroup),xios(field_is_active_id),xios(field_is_active_hdl)   
    2727                    
    2828USE ifile, ONLY : txios(file), txios(filegroup), xios(set_file_attr),xios(set_file_attr_hdl), & 
     
    7272END INTERFACE xios(send_field) 
    7373 
     74INTERFACE xios(field_is_active) 
     75  MODULE PROCEDURE xios(field_is_active_id),xios(field_is_active_hdl) 
     76END INTERFACE 
    7477   
    7578 PUBLIC :: txios(domain), txios(domaingroup),txios(field), txios(fieldgroup),txios(file), txios(filegroup), & 
     
    9194 PUBLIC :: xios(set_timestep),xios(update_calendar) 
    9295 PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),                       & 
    93            xios(close_context_definition), xios(context_finalize), xios(send_field) 
     96           xios(close_context_definition), xios(context_finalize), xios(send_field),xios(field_is_active) 
    9497 
    9598END MODULE XIOS 
  • XIOS/trunk/src/node/field.cpp

    r300 r310  
    285285   bool CField::hasDirectFieldReference(void) const 
    286286   {  
    287       return (!this->field_ref.isEmpty());  
    288    } 
    289     
     287     return (!this->field_ref.isEmpty());  
     288   } 
     289    
     290   bool CField::isActive(void) const 
     291   {  
     292      return (!this->refObject.empty());  
     293   } 
    290294   //---------------------------------------------------------------- 
    291295    
  • XIOS/trunk/src/node/field.hpp

    r300 r310  
    9999         /// Test /// 
    100100         bool hasDirectFieldReference(void) const; 
     101         bool isActive(void) const; 
    101102 
    102103         /// Traitements /// 
  • XIOS/trunk/src/test/test_cs.f90

    r300 r310  
    9898 
    9999    CALL xios_close_context_definition() 
     100     
     101    PRINT*,"field field_A is active ? ",xios_field_is_active("field_A") 
    100102    DO ts=1,96 
    101103      CALL xios_update_calendar(ts) 
Note: See TracChangeset for help on using the changeset viewer.