Skip to content

Commit b8e8d6f

Browse files
Razvan Aguridansebastianbeyer
authored andcommitted
Update multio API to latest version
1 parent 1ed23d4 commit b8e8d6f

1 file changed

Lines changed: 63 additions & 49 deletions

File tree

src/ifs_interface/iom.F90

Lines changed: 63 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)