MODULE mod_event_client USE mod_pack, ONLY : pack, pack_field USE mod_mpi_buffer_client, ONLY : create_request, finalize_request,is_last_request USE mod_event_parameters USE mod_ioserver_namelist CONTAINS SUBROUTINE event__swap_context(id) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: id IF (using_server) THEN CALL create_request(event_id_swap_context) CALL pack(LEN(TRIM(id))) CALL pack(TRIM(id)) CALL Finalize_request ELSE CALL iom__swap_context(TRIM(id)) ENDIF END SUBROUTINE event__swap_context SUBROUTINE event__parse_xml_file(filename) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: filename IF (using_server) THEN CALL create_request(event_id_parse_xml_file) CALL pack(LEN(TRIM(filename))) CALL pack(TRIM(filename)) CALL Finalize_request ELSE CALL iom__parse_xml_file(filename) ENDIF END SUBROUTINE event__parse_xml_file SUBROUTINE event__set_vert_axis(vert_name,vert_value) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: vert_name REAL,INTENT(IN) :: vert_value(:) IF (using_server) THEN CALL create_request(event_id_set_vert_axis) CALL pack(LEN(TRIM(vert_name))) CALL pack(TRIM(vert_name)) CALL pack(SIZE(vert_value)) CALL pack(vert_value) CALL Finalize_request ELSE CALL iom__set_vert_axis(vert_name,vert_value) ENDIF END SUBROUTINE event__set_vert_axis SUBROUTINE event__set_grid_dimension(name,ni_glo,nj_glo) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: name INTEGER,INTENT(IN) :: ni_glo INTEGER,INTENT(IN) :: nj_glo IF (using_server) THEN CALL create_request(event_id_set_grid_dimension) CALL pack(LEN(TRIM(name))) CALL pack(TRIM(name)) CALL pack(ni_glo) CALL pack(nj_glo) CALL Finalize_request ELSE CALL iom__set_grid_dimension(name,ni_glo,nj_glo) ENDIF END SUBROUTINE event__set_grid_dimension SUBROUTINE event__set_grid_domain(name,ni,nj,ibegin,jbegin,lon,lat) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: name INTEGER,INTENT(IN) :: ni INTEGER,INTENT(IN) :: nj INTEGER,INTENT(IN) :: ibegin INTEGER,INTENT(IN) :: jbegin REAL,INTENT(IN) :: lon(ni,nj) REAL,INTENT(IN) :: lat(ni,nj) IF (using_server) THEN CALL create_request(event_id_set_grid_domain) CALL pack(LEN(TRIM(name))) CALL pack(TRIM(name)) CALL pack(ni) CALL pack(nj) CALL pack(ibegin) CALL pack(jbegin) CALL pack(lon) CALL pack(lat) CALL Finalize_request ELSE CALL iom__set_grid_domain(name,ni,nj,ibegin,jbegin,lon,lat) ENDIF END SUBROUTINE event__set_grid_domain SUBROUTINE event__set_grid_type_nemo(name) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: name IF (using_server) THEN CALL create_request(event_id_set_grid_type_nemo) CALL pack(LEN(TRIM(name))) CALL pack(TRIM(name)) CALL Finalize_request ELSE CALL iom__set_grid_type_nemo(name) ENDIF END SUBROUTINE event__set_grid_type_nemo SUBROUTINE event__set_grid_type_lmdz(name,nbp,offset) USE iomanager IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: name INTEGER,INTENT(IN) :: nbp INTEGER,INTENT(IN) :: offset IF (using_server) THEN CALL create_request(event_id_set_grid_type_lmdz) CALL pack(LEN(TRIM(name))) CALL pack(TRIM(name)) CALL pack(nbp) CALL pack(offset) CALL Finalize_request ELSE CALL iom__set_grid_type_lmdz(name,nbp,offset) ENDIF END SUBROUTINE event__set_grid_type_lmdz SUBROUTINE event__set_time_parameters(itau0,zjulian,zdt) USE iomanager IMPLICIT NONE INTEGER,INTENT(IN) :: itau0 REAL, INTENT(IN) :: zjulian REAL, INTENT(IN) :: zdt IF (using_server) THEN CALL create_request(event_id_set_time_parameters) CALL pack(itau0) CALL pack(zjulian) CALL pack(zdt) CALL Finalize_request ELSE CALL iom__set_time_parameters(itau0,zjulian,zdt) ENDIF END SUBROUTINE event__set_time_parameters SUBROUTINE event__enable_field(varname) USE iomanager IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: varname IF (using_server) THEN CALL create_request(event_id_enable_field) CALL pack(len(varname)) CALL pack(varname) CALL Finalize_request ELSE CALL iom__enable_field(varname) ENDIF END SUBROUTINE event__enable_field SUBROUTINE event__disable_field(varname) USE iomanager IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: varname IF (using_server) THEN CALL create_request(event_id_disable_field) CALL pack(len(varname)) CALL pack(varname) CALL Finalize_request ELSE CALL iom__disable_field(varname) ENDIF END SUBROUTINE event__disable_field SUBROUTINE event__write_field1d(varname,var) USE iomanager IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: varname REAL, DIMENSION(:),INTENT(IN) :: var IF (using_server) THEN CALL create_request(event_id_write_field1d) CALL pack(len(varname)) CALL pack(size(var,1)) CALL pack(varname) CALL pack_field(var) CALL Finalize_request ELSE CALL iom__write_field1d(varname,var) ENDIF END SUBROUTINE event__write_field1d SUBROUTINE event__write_field2d(varname,var) USE iomanager IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: varname REAL, DIMENSION(:,:),INTENT(IN) :: var IF (using_server) THEN CALL create_request(event_id_write_field2d) CALL pack(len(varname)) CALL pack(size(var,1)) CALL pack(size(var,2)) CALL pack(varname) CALL pack_field(var) CALL Finalize_request ELSE CALL iom__write_field2d(varname,var) ENDIF END SUBROUTINE event__write_field2d SUBROUTINE event__write_field3d(varname,var) USE iomanager IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: varname REAL, DIMENSION(:,:,:),INTENT(IN) :: var IF (using_server) THEN CALL create_request(event_id_write_field3d) CALL pack(len(varname)) CALL pack(size(var,1)) CALL pack(size(var,2)) CALL pack(size(var,3)) CALL pack(varname) CALL pack_field(var) CALL Finalize_request ELSE CALL iom__write_field3d(varname,var) ENDIF END SUBROUTINE event__write_field3d SUBROUTINE event__set_timestep(timestep) USE iomanager IMPLICIT NONE INTEGER,INTENT(IN) :: timestep IF (using_server) THEN CALL create_request(event_id_set_timestep) CALL pack(timestep) CALL Finalize_request ELSE CALL iom__set_timestep(timestep) ENDIF END SUBROUTINE event__set_timestep SUBROUTINE event__close_io_definition USE iomanager IMPLICIT NONE IF (using_server) THEN CALL create_request(event_id_close_io_definition) CALL Finalize_request ELSE CALL iom__close_io_definition ENDIF END SUBROUTINE event__close_io_definition SUBROUTINE event__set_attribut(id,attrib) USE iomanager USE mod_attribut IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: id TYPE(attribut),INTENT(IN) :: attrib IF (using_server) THEN CALL create_request(event_id_set_attribut) CALL pack(len(id)) CALL pack(id) CALL pack(attrib) CALL Finalize_request ELSE CALL iom__set_attribut(id,attrib) ENDIF END SUBROUTINE event__set_attribut SUBROUTINE event__stop_ioserver USE iomanager IMPLICIT NONE IF (using_server) THEN CALL create_request(event_id_stop_ioserver) is_last_request=.TRUE. CALL Finalize_request ELSE CALL iom__finalize ENDIF END SUBROUTINE event__stop_ioserver END MODULE mod_event_client