@@ -55,12 +55,15 @@ SUBROUTINE iom_enable_multio()
5555
5656 SUBROUTINE multio_custom_error_handler (context , err , info )
5757 USE mpi
58+ USE , intrinsic :: iso_fortran_env, ONLY: int64
59+ USE :: multio_api_constants_mod, ONLY: multio_failure_info
5860
5961 IMPLICIT NONE
60- INTEGER (8 ), INTENT (INOUT ) :: context ! Use mpi communicator as context
61- INTEGER , INTENT (IN ) :: err
62- CLASS(multio_failure_info), INTENT (in ) :: info
63- INTEGER :: mpierr
62+
63+ INTEGER (int64), INTENT (INOUT ) :: context ! Use mpi communicator as context
64+ INTEGER , INTENT (IN ) :: err
65+ TYPE (multio_failure_info), INTENT (in ) :: info
66+ INTEGER :: mpierr
6467
6568 IF (err /= MULTIO_SUCCESS) THEN
6669 CALL ctl_stop( ' MULTIO ERROR: ' , multio_error_string(err, info))
@@ -73,15 +76,19 @@ SUBROUTINE multio_custom_error_handler(context, err, info)
7376
7477 SUBROUTINE iom_initialize (client_id , local_comm , return_comm , global_comm )
7578 USE mpi
79+ USE :: multio_api, ONLY: failure_handler_t
7680
7781 IMPLICIT NONE
78- CHARACTER (LEN=* ), INTENT (IN ) :: client_id
79- INTEGER ,INTENT (IN ), OPTIONAL :: local_comm
80- INTEGER ,INTENT (OUT ), OPTIONAL :: return_comm
81- INTEGER ,INTENT (IN ), OPTIONAL :: global_comm
82- TYPE (multio_configuration) :: conf_ctx
83- INTEGER :: err
84- CHARACTER (len= 16 ) :: err_str
82+
83+ CHARACTER (LEN=* ), INTENT (IN ) :: client_id
84+ INTEGER , INTENT (IN ), OPTIONAL :: local_comm
85+ INTEGER , INTENT (OUT ), OPTIONAL :: return_comm
86+ INTEGER , INTENT (IN ), OPTIONAL :: global_comm
87+
88+ TYPE (multio_configuration) :: conf_ctx
89+ INTEGER :: err
90+ CHARACTER (len= 16 ) :: err_str
91+ PROCEDURE (failure_handler_t), POINTER :: pf
8592
8693 IF (lnomultio) RETURN
8794
@@ -120,7 +127,8 @@ SUBROUTINE iom_initialize(client_id, local_comm, return_comm, global_comm )
120127 END IF
121128
122129 ! Setting a failure handler that reacts on interface problems or exceptions that are not handled within the interface
123- err = conf_ctx% set_failure_handler(multio_custom_error_handler, mio_parent_comm)
130+ pf = > multio_custom_error_handler
131+ err = conf_ctx% set_failure_handler(pf, mio_parent_comm)
124132 if (err /= MULTIO_SUCCESS) then
125133 CALL ctl_stop( ' setting multio failure handler failed: ' , multio_error_string(err))
126134 end if
@@ -176,11 +184,16 @@ SUBROUTINE iom_finalize()
176184 END SUBROUTINE iom_finalize
177185
178186 SUBROUTINE iom_init_server (server_comm )
187+ USE :: multio_api, ONLY: failure_handler_t
188+
179189 IMPLICIT NONE
180- INTEGER , INTENT (IN ) :: server_comm
181- type (multio_configuration) :: conf_ctx
182- INTEGER :: err
183- CHARACTER (len= 16 ) :: err_str
190+
191+ INTEGER , INTENT (IN ) :: server_comm
192+
193+ TYPE (multio_configuration) :: conf_ctx
194+ INTEGER :: err
195+ CHARACTER (len= 16 ) :: err_str
196+ PROCEDURE (failure_handler_t), POINTER :: pf
184197
185198 IF (lnomultio) RETURN
186199
@@ -216,7 +229,8 @@ SUBROUTINE iom_init_server(server_comm)
216229
217230 ! Setting a failure handler that reacts on interface problems or exceptions that are not handled within the interface
218231 ! Set handler before invoking blocking start server call
219- err = conf_ctx% set_failure_handler(multio_custom_error_handler, mio_parent_comm)
232+ pf = > multio_custom_error_handler
233+ err = conf_ctx% set_failure_handler(pf, mio_parent_comm)
220234 IF (err /= MULTIO_SUCCESS) THEN
221235 CALL ctl_stop(' setting multio failure handler failed: ' , multio_error_string(err))
222236 END IF
@@ -268,27 +282,27 @@ SUBROUTINE iom_send_fesom_domains(partit, mesh)
268282 CALL ctl_stop(' send_fesom_domains: ngrid, md%new() failed: ' , multio_error_string(cerr))
269283 END IF
270284
271- cerr = md% set_string (" name" , " N grid" )
285+ cerr = md% set (" name" , " N grid" )
272286 IF (cerr /= MULTIO_SUCCESS) THEN
273287 CALL ctl_stop(' send_fesom_domains: ngrid, md%set_string(name) failed: ' , multio_error_string(cerr))
274288 END IF
275289
276- cerr = md% set_string (" category" , " fesom-domain-nodemap" )
290+ cerr = md% set (" category" , " fesom-domain-nodemap" )
277291 IF (cerr /= MULTIO_SUCCESS) THEN
278292 CALL ctl_stop(' send_fesom_domains: ngrid, md%set_string(category) failed: ' , multio_error_string(cerr))
279293 END IF
280294
281- cerr = md% set_string (" representation" , " unstructured" )
295+ cerr = md% set (" representation" , " unstructured" )
282296 IF (cerr /= MULTIO_SUCCESS) THEN
283297 CALL ctl_stop(' send_fesom_domains: ngrid, md%set_string(representation) failed: ' , multio_error_string(cerr))
284298 END IF
285299
286- cerr = md% set_int (" globalSize" , mesh% nod2D)
300+ cerr = md% set (" globalSize" , mesh% nod2D)
287301 IF (cerr /= MULTIO_SUCCESS) THEN
288302 CALL ctl_stop(' send_fesom_domains: ngrid, md%set_int(globalSize) failed: ' , multio_error_string(cerr))
289303 END IF
290304
291- cerr = md% set_bool (" toAllServers" , .TRUE. _1)
305+ cerr = md% set (" toAllServers" , .TRUE. _1)
292306 IF (cerr /= MULTIO_SUCCESS) THEN
293307 CALL ctl_stop(' send_fesom_domains: ngrid, md%set_bool(toAllServers) failed: ' , multio_error_string(cerr))
294308 END IF
@@ -310,27 +324,27 @@ SUBROUTINE iom_send_fesom_domains(partit, mesh)
310324 CALL ctl_stop(' send_fesom_domains: egrid, md%new() failed: ' , multio_error_string(cerr))
311325 END IF
312326
313- cerr = md% set_string (" name" , " C grid" )
327+ cerr = md% set (" name" , " C grid" )
314328 IF (cerr /= MULTIO_SUCCESS) THEN
315329 CALL ctl_stop(' send_fesom_domains: egrid, md%set_string(name) failed: ' , multio_error_string(cerr))
316330 END IF
317331
318- cerr = md% set_string (" category" , " fesom-domain-elemmap" )
332+ cerr = md% set (" category" , " fesom-domain-elemmap" )
319333 IF (cerr /= MULTIO_SUCCESS) THEN
320334 CALL ctl_stop(' send_fesom_domains: egrid, md%set_string(category) failed: ' , multio_error_string(cerr))
321335 END IF
322336
323- cerr = md% set_string (" representation" , " unstructured" )
337+ cerr = md% set (" representation" , " unstructured" )
324338 IF (cerr /= MULTIO_SUCCESS) THEN
325339 CALL ctl_stop(' send_fesom_domains: egrid, md%set_string(representation) failed: ' , multio_error_string(cerr))
326340 END IF
327341
328- cerr = md% set_int (" globalSize" , mesh% elem2D)
342+ cerr = md% set (" globalSize" , mesh% elem2D)
329343 IF (cerr /= MULTIO_SUCCESS) THEN
330344 CALL ctl_stop(' send_fesom_domains: egrid, md%set_int(globalSize) failed: ' , multio_error_string(cerr))
331345 END IF
332346
333- cerr = md% set_bool (" toAllServers" , .TRUE. _1)
347+ cerr = md% set (" toAllServers" , .TRUE. _1)
334348 IF (cerr /= MULTIO_SUCCESS) THEN
335349 CALL ctl_stop(' send_fesom_domains: egrid, md%set_bool(toAllServers) failed: ' , multio_error_string(cerr))
336350 END IF
@@ -362,69 +376,69 @@ SUBROUTINE iom_send_fesom_data(data)
362376 CALL ctl_stop(' send_fesom_data: md%new() failed: ' , multio_error_string(cerr))
363377 END IF
364378
365- cerr = md% set_string (" category" , data % category)
379+ cerr = md% set (" category" , data % category)
366380 IF (cerr /= MULTIO_SUCCESS) THEN
367381 CALL ctl_stop(' send_fesom_data: md%set_string(category) failed: ' , multio_error_string(cerr))
368382 END IF
369383
370- cerr = md% set_int (" globalSize" , data % globalSize)
384+ cerr = md% set (" globalSize" , data % globalSize)
371385 IF (cerr /= MULTIO_SUCCESS) THEN
372386 CALL ctl_stop(' send_fesom_data: md%set_int(globalSize) failed: ' , multio_error_string(cerr))
373387 END IF
374388
375- cerr = md% set_int (" level" , data % level)
389+ cerr = md% set (" level" , data % level)
376390 IF (cerr /= MULTIO_SUCCESS) THEN
377391 CALL ctl_stop(' send_fesom_data: md%set_int(level) failed: ' , multio_error_string(cerr))
378392 END IF
379393
380- cerr = md% set_bool (" toAllServers" , .FALSE. _1)
394+ cerr = md% set (" toAllServers" , .FALSE. _1)
381395 IF (cerr /= MULTIO_SUCCESS) THEN
382396 CALL ctl_stop(' send_fesom_data: md%set_bool(toAllServers) failed: ' , multio_error_string(cerr))
383397 END IF
384398
385- cerr = md% set_string (" name" , trim (data % name))
399+ cerr = md% set (" name" , trim (data % name))
386400 IF (cerr /= MULTIO_SUCCESS) THEN
387401 CALL ctl_stop(' send_fesom_data: md%set_string(name) failed: ' , multio_error_string(cerr))
388402 END IF
389403
390- cerr = md% set_string (" gridType" , " unstructured_grid" )
404+ cerr = md% set (" gridType" , " unstructured_grid" )
391405 IF (cerr /= MULTIO_SUCCESS) THEN
392406 CALL ctl_stop(' send_fesom_data: md%set_string(gridType) failed: ' , multio_error_string(cerr))
393407 END IF
394408
395- cerr = md% set_string (" unstructuredGridType" , MeshId)
409+ cerr = md% set (" unstructuredGridType" , MeshId)
396410 IF (cerr /= MULTIO_SUCCESS) THEN
397411 CALL ctl_stop(' send_fesom_data: md%set_string(unstructuredGridType) failed: ' , multio_error_string(cerr))
398412 END IF
399413
400- cerr = md% set_string (" unstructuredGridSubtype" , data % gridType(1 :1 ))
414+ cerr = md% set (" unstructuredGridSubtype" , data % gridType(1 :1 ))
401415 IF (cerr /= MULTIO_SUCCESS) THEN
402416 CALL ctl_stop(' send_fesom_data: md%set_string(unstructuredGridSubtype) failed: ' , multio_error_string(cerr))
403417 END IF
404418
405- cerr = md% set_string (" operation" , " average" )
419+ cerr = md% set (" operation" , " average" )
406420 IF (cerr /= MULTIO_SUCCESS) THEN
407421 CALL ctl_stop(' send_fesom_data: md%set_string(operation) failed: ' , multio_error_string(cerr))
408422 END IF
409423
410- cerr = md% set_string (" domain" , data % gridType)
424+ cerr = md% set (" domain" , data % gridType)
411425 IF (cerr /= MULTIO_SUCCESS) THEN
412426 CALL ctl_stop(' send_fesom_data: md%set_string(domain) failed: ' , multio_error_string(cerr))
413427 END IF
414428
415- cerr = md% set_int (" currentDate" , data % currentDate)
416- cerr = md% set_int (" currentTime" , data % currentTime)
417- cerr = md% set_int (" previousDate" , data % previousDate)
418- cerr = md% set_int (" previousTime" , data % previousTime)
419- cerr = md% set_int (" startDate" , data % startDate)
420- cerr = md% set_int (" startTime" , data % startTime)
421- cerr = md% set_int (" sampleInterval" , data % sampleInterval)
429+ cerr = md% set (" currentDate" , data % currentDate)
430+ cerr = md% set (" currentTime" , data % currentTime)
431+ cerr = md% set (" previousDate" , data % previousDate)
432+ cerr = md% set (" previousTime" , data % previousTime)
433+ cerr = md% set (" startDate" , data % startDate)
434+ cerr = md% set (" startTime" , data % startTime)
435+ cerr = md% set (" sampleInterval" , data % sampleInterval)
422436! cerr = md%set_int("sampleIntervalInSeconds", data%sampleInterval)
423- cerr = md% set_string (" sampleIntervalUnit" , ' S' )
424- cerr = md% set_int (" sampleIntervalInSeconds" , data % sampleInterval)
425- cerr = md% set_int (" timeStep" , data % sampleInterval) ! we do not distinguish between the timestep & sampling interval legacy code for MULTIO
426- cerr = md% set_int (" step-frequency" , data % lastcounter)
427- cerr = md% set_int (" step" , data % step)
437+ cerr = md% set (" sampleIntervalUnit" , ' S' )
438+ cerr = md% set (" sampleIntervalInSeconds" , data % sampleInterval)
439+ cerr = md% set (" timeStep" , data % sampleInterval) ! we do not distinguish between the timestep & sampling interval legacy code for MULTIO
440+ cerr = md% set (" step-frequency" , data % lastcounter)
441+ cerr = md% set (" step" , data % step)
428442 IF (cerr /= MULTIO_SUCCESS) THEN
429443 CALL ctl_stop(' send_fesom_data: md%set_int(date) failed: ' , multio_error_string(cerr))
430444 END IF
0 commit comments