root/ompi/mpi/fortran/use-mpi-f08/bindings/mpi-f-interfaces-bind.h

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. Copyright
  2. bar

   1 ! -*- f90 -*-
   2 !
   3 ! Copyright (c) 2009-2015 Cisco Systems, Inc.  All rights reserved.
   4 ! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
   5 !                         All rights reserved.
   6 ! Copyright (c) 2012      The University of Tennessee and The University
   7 !                         of Tennessee Research Foundation.  All rights
   8 !                         reserved.
   9 ! Copyright (c) 2012      Inria.  All rights reserved.
  10 ! Copyright (c) 2015-2019 Research Organization for Information Science
  11 !                         and Technology (RIST).  All rights reserved.
  12 ! $COPYRIGHT$
  13 !
  14 ! This file provides the interface specifications for the MPI Fortran
  15 ! API bindings.  It effectively maps between public names ("MPI_Init")
  16 ! and the back-end OMPI implementation subroutine name (e.g.,
  17 ! "ompi_init_f").
  18 !
  19 
  20 #include "ompi/mpi/fortran/configure-fortran-output.h"
  21 
  22 !
  23 ! Most of the "wrapper" subroutines in the mpi_f08 module (i.e., all
  24 ! the ones prototyped in this file) are simple routines that simply
  25 ! invoke a back-end ompi_*_f() subroutine, which is BIND(C)-bound to a
  26 ! back-end C function.  Easy-peasy.
  27 !
  28 ! However, a bunch of MPI Fortran subroutines use LOGICAL dummy
  29 ! parameters, and Fortran disallows passing LOGICAL parameters to
  30 ! BIND(C) routines (because the .TRUE. and .FALSE. values are not
  31 ! standardized (!)).  Hence, for these
  32 ! subroutines-with-LOGICAL-params, we have to be creative on how to
  33 ! invoke the back-end ompi_*_f() C function.  There are 2 cases:
  34 
  35 ! 1. If the Fortran interface has a LOGICAL parameter and no
  36 ! TYPE(MPI_Status) parameter, the individual wrapper implementation
  37 ! files (e.g., finalized_f08.F90) use the "mpi" module to get a
  38 ! interface for the subroutine and call the PMPI_* name of the
  39 ! function, which then invokes the corresponding function in the
  40 ! ompi/mpi/fortran/mpif-h directory.
  41 !
  42 ! This is a bit of a hack: the "mpi" module will provide the right
  43 ! Fortran interface so that the compiler can verify that we're passing
  44 ! the right types (e.g., convert MPI handles from comm to
  45 ! comm%MPI_VAL).  But here's the hack part: when we pass *unbounded
  46 ! arrays* of handles (e.g., the sendtypes and recvtypes arrays
  47 ! MPI_Alltoallw), we declare that the corresponding ompi_*_f()
  48 ! subroutine takes a *scalar*, and then we pass sendtypes(0)%MPI_VAL.
  49 !
  50 ! >>>THIS IS A LIE!<<< We're passing a scalar to something that
  51 ! expects an array.
  52 !
  53 ! However, remember that Fortran passes by reference.  So the compiler
  54 ! will pass a pointer to sendtypes(0)%MPI_VAL (i.e., the first integer
  55 ! in the array).  And since the mpi_f08 handles were cleverly designed
  56 ! to be exactly equivalent to a single INTEGER, an array of mpi_f08
  57 ! handles is exactly equivalent to an array of INTEGERS.  So passing
  58 ! an address to the first MPI_VAL is exactly the same as passing an
  59 ! array of INTEGERS.
  60 !
  61 ! Specifically: the back-end C function (in *.c files in
  62 ! ompi/mpi/fortran/mpif-h) gets an (MPI_Fint*), and it's all good.
  63 !
  64 ! The key here is that there is a disconnect between Fortran and C:
  65 ! we're telling the Fortran compiler what the C interface is, and
  66 ! we're lying.  But just a little bit.  No one gets hurt.
  67 !
  68 ! Yes, this is a total hack.  But Craig Rasumussen tells me that this
  69 ! is actually quite a common hack in the Fortran developer world, so
  70 ! we shouldn't feel bad about using it.  Shrug.
  71 !
  72 ! 2. If the Fortran interface has both LOGICAL and TYPE(MPI_Status)
  73 ! parameters, then we have to do even more tricks than we described
  74 ! above. :-(
  75 !
  76 ! The problem occurs because in the mpi_f08 module, an MPI_Status is
  77 ! TYPE(MPI_Status), but in the mpi module, it's INTEGER,
  78 ! DIMENSION(MPI_STATUS_SIZE).  Just like MPI handles, TYPE(MPI_Status)
  79 ! was cleverly designed so that it can be identical (in terms of a
  80 ! memory map) to INTEGER, DIMENSION(MPI_STATUS_SIZE).  So we just have
  81 ! to fool the compiler into accepting it (it's the same C<-->Fortran
  82 ! disconnect from #1).
  83 !
  84 ! So in this case, we actually don't "use mpi" at all -- we just add
  85 ! an "interface" block for the PMPI_* subroutine that we want to call.
  86 ! And we lie in that interface block, saying that the status argument
  87 ! is TYPE(MPI_Status) (rather than an INTEGER,
  88 ! DIMENSION(MPI_STATUS_SIZE), which is what it *really* is) -- i.e.,
  89 ! the same type that we already have.
  90 !
  91 ! For the C programmers reading this, this is very much analogous to
  92 ! something like this:
  93 !
  94 ! $ cat header.h
  95 ! void foo(int *param);
  96 ! $ cat source.c
  97 ! #include "header.h"
  98 ! // Pretend that we *know* somehow that param will point to exactly
  99 ! // sizeof(int) bytes.
 100 ! void bar(char *param) {
 101 !     foo(param); // <-- This generates a compiler warning
 102 ! }
 103 !
 104 ! To fix the compiler warning, instead of including "header.h", we
 105 ! just put a byte-equivalent prototype in source.c:
 106 !
 107 ! $ cat source.c
 108 ! void foo(char *param);
 109 ! void bar(char *param) {
 110 !     foo(param);
 111 ! }
 112 !
 113 ! And now it compiles without warning.
 114 !
 115 ! The main difference here is that in Fortran, it is an error -- not a
 116 ! warning.
 117 !
 118 ! Again, we're making the Fortran compiler happy, but we're lying
 119 ! because we know the back-end memory representation of the two types
 120 ! is the same.
 121 !
 122 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 123 !
 124 ! Wasn't that simple?  Here's the list of subroutines that are not
 125 ! prototyped in this file because they fall into case #1 or #2, above.
 126 !
 127 ! Case #1:
 128 ! MPI_Cart_create
 129 ! MPI_Cart_get
 130 ! MPI_Cart_map
 131 ! MPI_Cart_sub
 132 ! MPI_Comm_get_attr
 133 ! MPI_Comm_test_inter
 134 ! MPI_Dist_graph_create
 135 ! MPI_Dist_graph_create_adjacent
 136 ! MPI_Dist_graph_neighbors_count
 137 ! MPI_File_get_atomicity
 138 ! MPI_File_set_atomicity
 139 ! MPI_Finalized
 140 ! MPI_Graph_create
 141 ! MPI_Info_get
 142 ! MPI_Info_get_valuelen
 143 ! MPI_Initialized
 144 ! MPI_Intercomm_merge
 145 ! MPI_Is_thread_main
 146 ! MPI_Op_commutative
 147 ! MPI_Op_create
 148 ! MPI_Type_get_attr
 149 ! MPI_Win_get_attr
 150 ! MPI_Win_test
 151 !
 152 ! Case #2:
 153 ! MPI_Iprobe
 154 ! MPI_Improbe
 155 ! MPI_Request_get_status
 156 ! MPI_Status_set_cancelled
 157 ! MPI_Test
 158 ! MPI_Testall
 159 ! MPI_Testany
 160 ! MPI_Testsome
 161 ! MPI_Test_cancelled
 162 !
 163 
 164 interface
 165 
 166 subroutine ompi_bsend_f(buf,count,datatype,dest,tag,comm,ierror) &
 167    BIND(C, name="ompi_bsend_f")
 168    implicit none
 169    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 170    INTEGER, INTENT(IN) :: count, dest, tag
 171    INTEGER, INTENT(IN) :: datatype
 172    INTEGER, INTENT(IN) :: comm
 173    INTEGER, INTENT(OUT) :: ierror
 174 end subroutine ompi_bsend_f
 175 
 176 subroutine ompi_bsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 177    BIND(C, name="ompi_bsend_init_f")
 178    implicit none
 179    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 180    INTEGER, INTENT(IN) :: count, dest, tag
 181    INTEGER, INTENT(IN) :: datatype
 182    INTEGER, INTENT(IN) :: comm
 183    INTEGER, INTENT(OUT) :: request
 184    INTEGER, INTENT(OUT) :: ierror
 185 end subroutine ompi_bsend_init_f
 186 
 187 subroutine ompi_buffer_attach_f(buffer,size,ierror) &
 188    BIND(C, name="ompi_buffer_attach_f")
 189    implicit none
 190    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer
 191    INTEGER, INTENT(IN) :: size
 192    INTEGER, INTENT(OUT) :: ierror
 193 end subroutine ompi_buffer_attach_f
 194 
 195 ! Note that we have an F08-specific C implementation function for
 196 ! MPI_BUFFER_DETACH (i.e., it is different than the mpif.h / mpi
 197 ! module C implementation function).
 198 subroutine ompi_buffer_detach_f(buffer_addr,size,ierror) &
 199    BIND(C, name="ompi_buffer_detach_f08")
 200    USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
 201    implicit none
 202    TYPE(C_PTR), INTENT(OUT) ::  buffer_addr
 203    INTEGER, INTENT(OUT) :: size
 204    INTEGER, INTENT(OUT) :: ierror
 205 end subroutine ompi_buffer_detach_f
 206 
 207 subroutine ompi_cancel_f(request,ierror) &
 208    BIND(C, name="ompi_cancel_f")
 209    implicit none
 210    INTEGER, INTENT(IN) :: request
 211    INTEGER, INTENT(OUT) :: ierror
 212 end subroutine ompi_cancel_f
 213 
 214 subroutine ompi_get_count_f(status,datatype,count,ierror) &
 215    BIND(C, name="ompi_get_count_f")
 216    use :: mpi_f08_types, only : MPI_Status
 217    implicit none
 218    TYPE(MPI_Status), INTENT(IN) :: status
 219    INTEGER, INTENT(IN) :: datatype
 220    INTEGER, INTENT(OUT) :: count
 221    INTEGER, INTENT(OUT) :: ierror
 222 end subroutine ompi_get_count_f
 223 
 224 subroutine ompi_ibsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 225    BIND(C, name="ompi_ibsend_f")
 226    implicit none
 227    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 228    INTEGER, INTENT(IN) :: count, dest, tag
 229    INTEGER, INTENT(IN) :: datatype
 230    INTEGER, INTENT(IN) :: comm
 231    INTEGER, INTENT(OUT) :: request
 232    INTEGER, INTENT(OUT) :: ierror
 233 end subroutine ompi_ibsend_f
 234 
 235 subroutine ompi_irecv_f(buf,count,datatype,source,tag,comm,request,ierror) &
 236    BIND(C, name="ompi_irecv_f")
 237    implicit none
 238    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
 239    INTEGER, INTENT(IN) :: count, source, tag
 240    INTEGER, INTENT(IN) :: datatype
 241    INTEGER, INTENT(IN) :: comm
 242    INTEGER, INTENT(OUT) :: request
 243    INTEGER, INTENT(OUT) :: ierror
 244 end subroutine ompi_irecv_f
 245 
 246 subroutine ompi_irsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 247    BIND(C, name="ompi_irsend_f")
 248    implicit none
 249    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 250    INTEGER, INTENT(IN) :: count, dest, tag
 251    INTEGER, INTENT(IN) :: datatype
 252    INTEGER, INTENT(IN) :: comm
 253    INTEGER, INTENT(OUT) :: request
 254    INTEGER, INTENT(OUT) :: ierror
 255 end subroutine ompi_irsend_f
 256 
 257 subroutine ompi_isend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 258    BIND(C, name="ompi_isend_f")
 259    implicit none
 260    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 261    INTEGER, INTENT(IN) :: count, dest, tag
 262    INTEGER, INTENT(IN) :: datatype
 263    INTEGER, INTENT(IN) :: comm
 264    INTEGER, INTENT(OUT) :: request
 265    INTEGER, INTENT(OUT) :: ierror
 266 end subroutine ompi_isend_f
 267 
 268 subroutine ompi_issend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 269    BIND(C, name="ompi_issend_f")
 270    implicit none
 271    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 272    INTEGER, INTENT(IN) :: count, dest, tag
 273    INTEGER, INTENT(IN) :: datatype
 274    INTEGER, INTENT(IN) :: comm
 275    INTEGER, INTENT(OUT) :: request
 276    INTEGER, INTENT(OUT) :: ierror
 277 end subroutine ompi_issend_f
 278 
 279 subroutine ompi_probe_f(source,tag,comm,status,ierror) &
 280    BIND(C, name="ompi_probe_f")
 281    use :: mpi_f08_types, only : MPI_Status
 282    implicit none
 283    INTEGER, INTENT(IN) :: source, tag
 284    INTEGER, INTENT(IN) :: comm
 285    TYPE(MPI_Status), INTENT(OUT) :: status
 286    INTEGER, INTENT(OUT) :: ierror
 287 end subroutine ompi_probe_f
 288 
 289 subroutine ompi_recv_f(buf,count,datatype,source,tag,comm,status,ierror) &
 290    BIND(C, name="ompi_recv_f")
 291    use :: mpi_f08_types, only : MPI_Status
 292    implicit none
 293    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
 294    INTEGER, INTENT(IN) :: count, source, tag
 295    INTEGER, INTENT(IN) :: datatype
 296    INTEGER, INTENT(IN) :: comm
 297    TYPE(MPI_Status), INTENT(OUT) :: status
 298    INTEGER, INTENT(OUT) :: ierror
 299 end subroutine ompi_recv_f
 300 
 301 subroutine ompi_recv_init_f(buf,count,datatype,source,tag,comm,request,ierror) &
 302    BIND(C, name="ompi_recv_init_f")
 303    implicit none
 304    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
 305    INTEGER, INTENT(IN) :: count, source, tag
 306    INTEGER, INTENT(IN) :: datatype
 307    INTEGER, INTENT(IN) :: comm
 308    INTEGER, INTENT(OUT) :: request
 309    INTEGER, INTENT(OUT) :: ierror
 310 end subroutine ompi_recv_init_f
 311 
 312 subroutine ompi_request_free_f(request,ierror) &
 313    BIND(C, name="ompi_request_free_f")
 314    implicit none
 315    INTEGER, INTENT(INOUT) :: request
 316    INTEGER, INTENT(OUT) :: ierror
 317 end subroutine ompi_request_free_f
 318 
 319 subroutine ompi_rsend_f(buf,count,datatype,dest,tag,comm,ierror) &
 320    BIND(C, name="ompi_rsend_f")
 321    implicit none
 322    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 323    INTEGER, INTENT(IN) :: count, dest, tag
 324    INTEGER, INTENT(IN) :: datatype
 325    INTEGER, INTENT(IN) :: comm
 326    INTEGER, INTENT(OUT) :: ierror
 327 end subroutine ompi_rsend_f
 328 
 329 subroutine ompi_rsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 330    BIND(C, name="ompi_rsend_init_f")
 331    implicit none
 332    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
 333    INTEGER, INTENT(IN) :: count, dest, tag
 334    INTEGER, INTENT(IN) :: datatype
 335    INTEGER, INTENT(IN) :: comm
 336    INTEGER, INTENT(OUT) :: request
 337    INTEGER, INTENT(OUT) :: ierror
 338 end subroutine ompi_rsend_init_f
 339 
 340 subroutine ompi_send_f(buf,count,datatype,dest,tag,comm,ierror) &
 341    BIND(C, name="ompi_send_f")
 342    implicit none
 343    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 344    INTEGER, INTENT(IN) :: count, dest, tag
 345    INTEGER, INTENT(IN) :: datatype
 346    INTEGER, INTENT(IN) :: comm
 347    INTEGER, INTENT(OUT) :: ierror
 348 end subroutine ompi_send_f
 349 
 350 subroutine ompi_sendrecv_f(sendbuf,sendcount,sendtype,dest,sendtag,recvbuf, &
 351                            recvcount,recvtype,source,recvtag,comm,status,ierror) &
 352    BIND(C, name="ompi_sendrecv_f")
 353    use :: mpi_f08_types, only : MPI_Status
 354    implicit none
 355    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 356    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 357    INTEGER, INTENT(IN) :: sendcount, dest, sendtag, recvcount, source, recvtag
 358    INTEGER, INTENT(IN) :: sendtype
 359    INTEGER, INTENT(IN) :: recvtype
 360    INTEGER, INTENT(IN) :: comm
 361    TYPE(MPI_Status), INTENT(OUT) :: status
 362    INTEGER, INTENT(OUT) :: ierror
 363 end subroutine ompi_sendrecv_f
 364 
 365 subroutine ompi_sendrecv_replace_f(buf,count,datatype,dest,sendtag,source, &
 366                                    recvtag,comm,status,ierror) &
 367    BIND(C, name="ompi_sendrecv_replace_f")
 368    use :: mpi_f08_types, only : MPI_Status
 369    implicit none
 370    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
 371    INTEGER, INTENT(IN) :: count, dest, sendtag, source, recvtag
 372    INTEGER, INTENT(IN) :: datatype
 373    INTEGER, INTENT(IN) :: comm
 374    TYPE(MPI_Status), INTENT(OUT) :: status
 375    INTEGER, INTENT(OUT) :: ierror
 376 end subroutine ompi_sendrecv_replace_f
 377 
 378 subroutine ompi_send_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 379    BIND(C, name="ompi_send_init_f")
 380    implicit none
 381    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 382    INTEGER, INTENT(IN) :: count, dest, tag
 383    INTEGER, INTENT(IN) :: datatype
 384    INTEGER, INTENT(IN) :: comm
 385    INTEGER, INTENT(OUT) :: request
 386    INTEGER, INTENT(OUT) :: ierror
 387 end subroutine ompi_send_init_f
 388 
 389 subroutine ompi_ssend_f(buf,count,datatype,dest,tag,comm,ierror) &
 390    BIND(C, name="ompi_ssend_f")
 391    implicit none
 392    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 393    INTEGER, INTENT(IN) :: count, dest, tag
 394    INTEGER, INTENT(IN) :: datatype
 395    INTEGER, INTENT(IN) :: comm
 396    INTEGER, INTENT(OUT) :: ierror
 397 end subroutine ompi_ssend_f
 398 
 399 subroutine ompi_ssend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
 400    BIND(C, name="ompi_ssend_init_f")
 401    implicit none
 402    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
 403    INTEGER, INTENT(IN) :: count, dest, tag
 404    INTEGER, INTENT(IN) :: datatype
 405    INTEGER, INTENT(IN) :: comm
 406    INTEGER, INTENT(OUT) :: request
 407    INTEGER, INTENT(OUT) :: ierror
 408 end subroutine ompi_ssend_init_f
 409 
 410 subroutine ompi_start_f(request,ierror) &
 411    BIND(C, name="ompi_start_f")
 412    implicit none
 413    INTEGER, INTENT(INOUT) :: request
 414    INTEGER, INTENT(OUT) :: ierror
 415 end subroutine ompi_start_f
 416 
 417 subroutine ompi_startall_f(count,array_of_requests,ierror) &
 418    BIND(C, name="ompi_startall_f")
 419    implicit none
 420    INTEGER, INTENT(IN) :: count
 421    INTEGER, INTENT(INOUT) :: array_of_requests(count)
 422    INTEGER, INTENT(OUT) :: ierror
 423 end subroutine ompi_startall_f
 424 
 425 subroutine ompi_wait_f(request,status,ierror) &
 426    BIND(C, name="ompi_wait_f")
 427    use :: mpi_f08_types, only : MPI_Status
 428    implicit none
 429    INTEGER, INTENT(INOUT) :: request
 430    TYPE(MPI_Status), INTENT(OUT) :: status
 431    INTEGER, INTENT(OUT) :: ierror
 432 end subroutine ompi_wait_f
 433 
 434 subroutine ompi_waitall_f(count,array_of_requests,array_of_statuses,ierror) &
 435    BIND(C, name="ompi_waitall_f")
 436    use :: mpi_f08_types, only : MPI_Status
 437    implicit none
 438    INTEGER, INTENT(IN) :: count
 439    INTEGER, INTENT(INOUT) :: array_of_requests(count)
 440    TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
 441    INTEGER, INTENT(OUT) :: ierror
 442 end subroutine ompi_waitall_f
 443 
 444 subroutine ompi_waitany_f(count,array_of_requests,index,status,ierror) &
 445    BIND(C, name="ompi_waitany_f")
 446    use :: mpi_f08_types, only : MPI_Status
 447    implicit none
 448    INTEGER, INTENT(IN) :: count
 449    INTEGER, INTENT(INOUT) :: array_of_requests(count)
 450    INTEGER, INTENT(OUT) :: index
 451    TYPE(MPI_Status), INTENT(OUT) :: status
 452    INTEGER, INTENT(OUT) :: ierror
 453 end subroutine ompi_waitany_f
 454 
 455 subroutine ompi_waitsome_f(incount,array_of_requests,outcount, &
 456                            array_of_indices,array_of_statuses,ierror) &
 457    BIND(C, name="ompi_waitsome_f")
 458    use :: mpi_f08_types, only : MPI_Status
 459    implicit none
 460    INTEGER, INTENT(IN) :: incount
 461    INTEGER, INTENT(INOUT) :: array_of_requests(incount)
 462    INTEGER, INTENT(OUT) :: outcount
 463    INTEGER, INTENT(OUT) :: array_of_indices(*)
 464    TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
 465    INTEGER, INTENT(OUT) :: ierror
 466 end subroutine ompi_waitsome_f
 467 
 468 subroutine ompi_get_address_f(location,address,ierror) &
 469    BIND(C, name="ompi_get_address_f")
 470    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 471    implicit none
 472    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: location
 473    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: address
 474    INTEGER, INTENT(OUT) :: ierror
 475 end subroutine ompi_get_address_f
 476 
 477 subroutine ompi_get_elements_f(status,datatype,count,ierror) &
 478    BIND(C, name="ompi_get_elements_f")
 479    use :: mpi_f08_types, only : MPI_Status
 480    implicit none
 481    TYPE(MPI_Status), INTENT(IN) :: status
 482    INTEGER, INTENT(IN) :: datatype
 483    INTEGER, INTENT(OUT) :: count
 484    INTEGER, INTENT(OUT) :: ierror
 485 end subroutine ompi_get_elements_f
 486 
 487 subroutine ompi_get_elements_x_f(status,datatype,count,ierror) &
 488    BIND(C, name="ompi_get_elements_x_f")
 489    use :: mpi_f08_types, only : MPI_Status, MPI_COUNT_KIND
 490    implicit none
 491    TYPE(MPI_Status), INTENT(IN) :: status
 492    INTEGER, INTENT(IN) :: datatype
 493    INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: count
 494    INTEGER, INTENT(OUT) :: ierror
 495 end subroutine ompi_get_elements_x_f
 496 
 497 subroutine ompi_pack_f(inbuf,incount,datatype,outbuf,outsize, &
 498                        position,comm,ierror) &
 499    BIND(C, name="ompi_pack_f")
 500    implicit none
 501    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
 502    OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
 503    INTEGER, INTENT(IN) :: incount, outsize
 504    INTEGER, INTENT(IN) :: datatype
 505    INTEGER, INTENT(INOUT) :: position
 506    INTEGER, INTENT(IN) :: comm
 507    INTEGER, INTENT(OUT) :: ierror
 508 end subroutine ompi_pack_f
 509 
 510 subroutine ompi_pack_external_f(datarep,inbuf,incount,datatype, &
 511                                 outbuf,outsize,position,ierror,datarep_len) &
 512    BIND(C, name="ompi_pack_external_f")
 513    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
 514    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 515    implicit none
 516    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
 517    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
 518    OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
 519    INTEGER, INTENT(IN) :: incount
 520    INTEGER, INTENT(IN) :: datatype
 521    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: outsize
 522    INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
 523    INTEGER, INTENT(OUT) :: ierror
 524    INTEGER, VALUE, INTENT(IN) :: datarep_len
 525 end subroutine ompi_pack_external_f
 526 
 527 subroutine ompi_pack_external_size_f(datarep,incount,datatype,size,ierror,datarep_len) &
 528    BIND(C, name="ompi_pack_external_size_f")
 529    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
 530    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 531    implicit none
 532    INTEGER, INTENT(IN) :: datatype
 533    INTEGER, INTENT(IN) :: incount
 534    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
 535    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: size
 536    INTEGER, INTENT(OUT) :: ierror
 537    INTEGER, VALUE, INTENT(IN) :: datarep_len
 538 end subroutine ompi_pack_external_size_f
 539 
 540 subroutine ompi_pack_size_f(incount,datatype,comm,size,ierror) &
 541    BIND(C, name="ompi_pack_size_f")
 542    implicit none
 543    INTEGER, INTENT(IN) :: incount
 544    INTEGER, INTENT(IN) :: datatype
 545    INTEGER, INTENT(IN) :: comm
 546    INTEGER, INTENT(OUT) :: size
 547    INTEGER, INTENT(OUT) :: ierror
 548 end subroutine ompi_pack_size_f
 549 
 550 subroutine ompi_type_commit_f(datatype,ierror) &
 551    BIND(C, name="ompi_type_commit_f")
 552    implicit none
 553    INTEGER, INTENT(INOUT) :: datatype
 554    INTEGER, INTENT(OUT) :: ierror
 555 end subroutine ompi_type_commit_f
 556 
 557 subroutine ompi_type_contiguous_f(count,oldtype,newtype,ierror) &
 558    BIND(C, name="ompi_type_contiguous_f")
 559    implicit none
 560    INTEGER, INTENT(IN) :: count
 561    INTEGER, INTENT(IN) :: oldtype
 562    INTEGER, INTENT(OUT) :: newtype
 563    INTEGER, INTENT(OUT) :: ierror
 564 end subroutine ompi_type_contiguous_f
 565 
 566 subroutine ompi_type_create_darray_f(size,rank,ndims,&
 567                     array_of_gsizes,array_of_distribs,array_of_dargs,array_of_psizes,&
 568                     order,oldtype,newtype,ierror) &
 569    BIND(C, name="ompi_type_create_darray_f")
 570    implicit none
 571    INTEGER, INTENT(IN) :: size, rank, ndims, order
 572    INTEGER, INTENT(IN) :: array_of_gsizes(ndims), array_of_distribs(ndims)
 573    INTEGER, INTENT(IN) :: array_of_dargs(ndims), array_of_psizes(ndims)
 574    INTEGER, INTENT(IN) :: oldtype
 575    INTEGER, INTENT(OUT) :: newtype
 576    INTEGER, INTENT(OUT) :: ierror
 577 end subroutine ompi_type_create_darray_f
 578 
 579 subroutine ompi_type_create_hindexed_f(count,array_of_blocklengths, &
 580                                        array_of_displacements,oldtype,newtype,ierror) &
 581    BIND(C, name="ompi_type_create_hindexed_f")
 582    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 583    implicit none
 584    INTEGER, INTENT(IN) :: count
 585    INTEGER, INTENT(IN) :: array_of_blocklengths(count)
 586    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
 587    INTEGER, INTENT(IN) :: oldtype
 588    INTEGER, INTENT(OUT) :: newtype
 589    INTEGER, INTENT(OUT) :: ierror
 590 end subroutine ompi_type_create_hindexed_f
 591 
 592 subroutine ompi_type_create_hvector_f(count,blocklength,stride,oldtype,newtype,ierror) &
 593    BIND(C, name="ompi_type_create_hvector_f")
 594    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 595    implicit none
 596    INTEGER, INTENT(IN) :: count, blocklength
 597    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: stride
 598    INTEGER, INTENT(IN) :: oldtype
 599    INTEGER, INTENT(OUT) :: newtype
 600    INTEGER, INTENT(OUT) :: ierror
 601 end subroutine ompi_type_create_hvector_f
 602 
 603 subroutine ompi_type_create_indexed_block_f(count,blocklength, &
 604                             array_of_displacements,oldtype,newtype,ierror) &
 605    BIND(C, name="ompi_type_create_indexed_block_f")
 606    implicit none
 607    INTEGER, INTENT(IN) :: count, blocklength
 608    INTEGER, INTENT(IN) :: array_of_displacements(count)
 609    INTEGER, INTENT(IN) :: oldtype
 610    INTEGER, INTENT(OUT) :: newtype
 611    INTEGER, INTENT(OUT) :: ierror
 612 end subroutine ompi_type_create_indexed_block_f
 613 
 614 subroutine ompi_type_create_hindexed_block_f(count,blocklength, &
 615                             array_of_displacements,oldtype,newtype,ierror) &
 616    BIND(C, name="ompi_type_create_hindexed_block_f")
 617    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 618    implicit none
 619    INTEGER, INTENT(IN) :: count, blocklength
 620    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
 621    INTEGER, INTENT(IN) :: oldtype
 622    INTEGER, INTENT(OUT) :: newtype
 623    INTEGER, INTENT(OUT) :: ierror
 624 end subroutine ompi_type_create_hindexed_block_f
 625 
 626 subroutine ompi_type_create_resized_f(oldtype,lb,extent,newtype,ierror) &
 627    BIND(C, name="ompi_type_create_resized_f")
 628    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 629    implicit none
 630    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: lb, extent
 631    INTEGER, INTENT(IN) :: oldtype
 632    INTEGER, INTENT(OUT) :: newtype
 633    INTEGER, INTENT(OUT) :: ierror
 634 end subroutine ompi_type_create_resized_f
 635 
 636 subroutine ompi_type_create_struct_f(count,array_of_blocklengths, &
 637                            array_of_displacements,array_of_types,newtype,ierror) &
 638    BIND(C, name="ompi_type_create_struct_f")
 639    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 640    implicit none
 641    INTEGER, INTENT(IN) :: count
 642    INTEGER, INTENT(IN) :: array_of_blocklengths(count)
 643    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
 644    INTEGER, INTENT(IN) :: array_of_types(count)
 645    INTEGER, INTENT(OUT) :: newtype
 646    INTEGER, INTENT(OUT) :: ierror
 647 end subroutine ompi_type_create_struct_f
 648 
 649 subroutine ompi_type_create_subarray_f(ndims,array_of_sizes, &
 650                     array_of_subsizes,array_of_starts,order,oldtype,newtype,ierror) &
 651    BIND(C, name="ompi_type_create_subarray_f")
 652    implicit none
 653    INTEGER, INTENT(IN) :: ndims, order
 654    INTEGER, INTENT(IN) :: array_of_sizes(*), array_of_subsizes(*), array_of_starts(*)
 655    INTEGER, INTENT(IN) :: oldtype
 656    INTEGER, INTENT(OUT) :: newtype
 657    INTEGER, INTENT(OUT) :: ierror
 658 end subroutine ompi_type_create_subarray_f
 659 
 660 subroutine ompi_type_dup_f(oldtype,newtype,ierror) &
 661    BIND(C, name="ompi_type_dup_f")
 662    implicit none
 663    INTEGER, INTENT(IN) :: oldtype
 664    INTEGER, INTENT(OUT) :: newtype
 665    INTEGER, INTENT(OUT) :: ierror
 666 end subroutine ompi_type_dup_f
 667 
 668 subroutine ompi_type_free_f(datatype,ierror) &
 669    BIND(C, name="ompi_type_free_f")
 670    implicit none
 671    INTEGER, INTENT(INOUT) :: datatype
 672    INTEGER, INTENT(OUT) :: ierror
 673 end subroutine ompi_type_free_f
 674 
 675 subroutine ompi_type_get_contents_f(datatype,max_integers,max_addresses, &
 676                     max_datatypes,array_of_integers,array_of_addresses, &
 677                     array_of_datatypes,ierror) &
 678    BIND(C, name="ompi_type_get_contents_f")
 679    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 680    implicit none
 681    INTEGER, INTENT(IN) :: datatype
 682    INTEGER, INTENT(IN) :: max_integers, max_addresses, max_datatypes
 683    INTEGER, INTENT(OUT) :: array_of_integers(max_integers)
 684    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: array_of_addresses(max_addresses)
 685    INTEGER, INTENT(OUT) :: array_of_datatypes(max_datatypes)
 686    INTEGER, INTENT(OUT) :: ierror
 687 end subroutine ompi_type_get_contents_f
 688 
 689 subroutine ompi_type_get_envelope_f(datatype,num_integers, &
 690                                     num_addresses,num_datatypes,combiner,ierror) &
 691    BIND(C, name="ompi_type_get_envelope_f")
 692    implicit none
 693    INTEGER, INTENT(IN) :: datatype
 694    INTEGER, INTENT(OUT) :: num_integers, num_addresses, num_datatypes, combiner
 695    INTEGER, INTENT(OUT) :: ierror
 696 end subroutine ompi_type_get_envelope_f
 697 
 698 subroutine ompi_type_get_extent_f(datatype,lb,extent,ierror) &
 699    BIND(C, name="ompi_type_get_extent_f")
 700    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 701    implicit none
 702    INTEGER, INTENT(IN) :: datatype
 703    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: lb, extent
 704    INTEGER, INTENT(OUT) :: ierror
 705 end subroutine ompi_type_get_extent_f
 706 
 707 subroutine ompi_type_get_extent_x_f(datatype,lb,extent,ierror) &
 708    BIND(C, name="ompi_type_get_extent_x_f")
 709    use :: mpi_f08_types, only : MPI_COUNT_KIND
 710    implicit none
 711    INTEGER, INTENT(IN) :: datatype
 712    INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: lb, extent
 713    INTEGER, INTENT(OUT) :: ierror
 714 end subroutine ompi_type_get_extent_x_f
 715 
 716 subroutine ompi_type_get_true_extent_f(datatype,true_lb,true_extent,ierror) &
 717    BIND(C, name="ompi_type_get_true_extent_f")
 718    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 719    implicit none
 720    INTEGER, INTENT(IN) :: datatype
 721    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: true_lb, true_extent
 722    INTEGER, INTENT(OUT) :: ierror
 723 end subroutine ompi_type_get_true_extent_f
 724 
 725 subroutine ompi_type_get_true_extent_x_f(datatype,true_lb,true_extent,ierror) &
 726    BIND(C, name="ompi_type_get_true_extent_x_f")
 727    use :: mpi_f08_types, only : MPI_COUNT_KIND
 728    implicit none
 729    INTEGER, INTENT(IN) :: datatype
 730    INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: true_lb, true_extent
 731    INTEGER, INTENT(OUT) :: ierror
 732 end subroutine ompi_type_get_true_extent_x_f
 733 
 734 subroutine ompi_type_indexed_f(count,array_of_blocklengths, &
 735                                array_of_displacements,oldtype,newtype,ierror) &
 736    BIND(C, name="ompi_type_indexed_f")
 737    implicit none
 738    INTEGER, INTENT(IN) :: count
 739    INTEGER, INTENT(IN) :: array_of_blocklengths(count), array_of_displacements(count)
 740    INTEGER, INTENT(IN) :: oldtype
 741    INTEGER, INTENT(OUT) :: newtype
 742    INTEGER, INTENT(OUT) :: ierror
 743 end subroutine ompi_type_indexed_f
 744 
 745 subroutine ompi_type_size_f(datatype,size,ierror) &
 746    BIND(C, name="ompi_type_size_f")
 747    implicit none
 748    INTEGER, INTENT(IN) :: datatype
 749    INTEGER, INTENT(OUT) :: size
 750    INTEGER, INTENT(OUT) :: ierror
 751 end subroutine ompi_type_size_f
 752 
 753 subroutine ompi_type_size_x_f(datatype,size,ierror) &
 754    BIND(C, name="ompi_type_size_x_f")
 755    use :: mpi_f08_types, only : MPI_COUNT_KIND
 756    implicit none
 757    INTEGER, INTENT(IN) :: datatype
 758    INTEGER(MPI_COUNT_KIND), INTENT(OUT) :: size
 759    INTEGER, INTENT(OUT) :: ierror
 760 end subroutine ompi_type_size_x_f
 761 
 762 subroutine ompi_type_vector_f(count,blocklength,stride,oldtype,newtype,ierror) &
 763    BIND(C, name="ompi_type_vector_f")
 764    implicit none
 765    INTEGER, INTENT(IN) :: count, blocklength, stride
 766    INTEGER, INTENT(IN) :: oldtype
 767    INTEGER, INTENT(OUT) :: newtype
 768    INTEGER, INTENT(OUT) :: ierror
 769 end subroutine ompi_type_vector_f
 770 
 771 subroutine ompi_unpack_f(inbuf,insize,position,outbuf,outcount, &
 772                          datatype,comm,ierror) &
 773    BIND(C, name="ompi_unpack_f")
 774    implicit none
 775    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
 776    OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
 777    INTEGER, INTENT(IN) :: insize, outcount
 778    INTEGER, INTENT(INOUT) :: position
 779    INTEGER, INTENT(IN) :: datatype
 780    INTEGER, INTENT(IN) :: comm
 781    INTEGER, INTENT(OUT) :: ierror
 782 end subroutine ompi_unpack_f
 783 
 784 subroutine ompi_unpack_external_f(datarep,inbuf,insize,position, &
 785                                   outbuf,outcount,datatype,ierror,datarep_len) &
 786    BIND(C, name="ompi_unpack_external_f")
 787    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
 788    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
 789    implicit none
 790    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
 791    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
 792    OMPI_FORTRAN_IGNORE_TKR_TYPE :: outbuf
 793    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: insize
 794    INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
 795    INTEGER, INTENT(IN) :: outcount
 796    INTEGER, INTENT(IN) :: datatype
 797    INTEGER, INTENT(OUT) :: ierror
 798    INTEGER, VALUE, INTENT(IN) :: datarep_len
 799 end subroutine ompi_unpack_external_f
 800 
 801 subroutine ompi_allgather_f(sendbuf,sendcount,sendtype,recvbuf, &
 802                             recvcount,recvtype,comm,ierror) &
 803    BIND(C, name="ompi_allgather_f")
 804    implicit none
 805    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 806    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 807    INTEGER, INTENT(IN) :: sendcount, recvcount
 808    INTEGER, INTENT(IN) :: sendtype
 809    INTEGER, INTENT(IN) :: recvtype
 810    INTEGER, INTENT(IN) :: comm
 811    INTEGER, INTENT(OUT) :: ierror
 812 end subroutine ompi_allgather_f
 813 
 814 subroutine ompi_iallgather_f(sendbuf,sendcount,sendtype,recvbuf, &
 815                             recvcount,recvtype,comm,request,ierror) &
 816    BIND(C, name="ompi_iallgather_f")
 817    implicit none
 818    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 819    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 820    INTEGER, INTENT(IN) :: sendcount, recvcount
 821    INTEGER, INTENT(IN) :: sendtype
 822    INTEGER, INTENT(IN) :: recvtype
 823    INTEGER, INTENT(IN) :: comm
 824    INTEGER, INTENT(OUT) :: request
 825    INTEGER, INTENT(OUT) :: ierror
 826 end subroutine ompi_iallgather_f
 827 
 828 subroutine ompi_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
 829                              recvcounts,displs,recvtype,comm,ierror) &
 830    BIND(C, name="ompi_allgatherv_f")
 831    implicit none
 832    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 833    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 834    INTEGER, INTENT(IN) :: sendcount
 835    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
 836    INTEGER, INTENT(IN) :: sendtype
 837    INTEGER, INTENT(IN) :: recvtype
 838    INTEGER, INTENT(IN) :: comm
 839    INTEGER, INTENT(OUT) :: ierror
 840 end subroutine ompi_allgatherv_f
 841 
 842 subroutine ompi_iallgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
 843                              recvcounts,displs,recvtype,comm,request,ierror) &
 844    BIND(C, name="ompi_iallgatherv_f")
 845    implicit none
 846    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 847    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 848    INTEGER, INTENT(IN) :: sendcount
 849    INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*)
 850    INTEGER, INTENT(IN) :: sendtype
 851    INTEGER, INTENT(IN) :: recvtype
 852    INTEGER, INTENT(IN) :: comm
 853    INTEGER, INTENT(OUT) :: request
 854    INTEGER, INTENT(OUT) :: ierror
 855 end subroutine ompi_iallgatherv_f
 856 
 857 subroutine ompi_allreduce_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
 858    BIND(C, name="ompi_allreduce_f")
 859    implicit none
 860    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 861    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 862    INTEGER, INTENT(IN) :: count
 863    INTEGER, INTENT(IN) :: datatype
 864    INTEGER, INTENT(IN) :: op
 865    INTEGER, INTENT(IN) :: comm
 866    INTEGER, INTENT(OUT) :: ierror
 867 end subroutine ompi_allreduce_f
 868 
 869 subroutine ompi_iallreduce_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
 870    BIND(C, name="ompi_iallreduce_f")
 871    implicit none
 872    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 873    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 874    INTEGER, INTENT(IN) :: count
 875    INTEGER, INTENT(IN) :: datatype
 876    INTEGER, INTENT(IN) :: op
 877    INTEGER, INTENT(IN) :: comm
 878    INTEGER, INTENT(OUT) :: request
 879    INTEGER, INTENT(OUT) :: ierror
 880 end subroutine ompi_iallreduce_f
 881 
 882 subroutine ompi_alltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
 883                            recvcount,recvtype,comm,ierror) &
 884    BIND(C, name="ompi_alltoall_f")
 885    implicit none
 886    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 887    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 888    INTEGER, INTENT(IN) :: sendcount, recvcount
 889    INTEGER, INTENT(IN) :: sendtype
 890    INTEGER, INTENT(IN) :: recvtype
 891    INTEGER, INTENT(IN) :: comm
 892    INTEGER, INTENT(OUT) :: ierror
 893 end subroutine ompi_alltoall_f
 894 
 895 subroutine ompi_ialltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
 896                            recvcount,recvtype,comm,request,ierror) &
 897    BIND(C, name="ompi_ialltoall_f")
 898    implicit none
 899    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 900    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 901    INTEGER, INTENT(IN) :: sendcount, recvcount
 902    INTEGER, INTENT(IN) :: sendtype
 903    INTEGER, INTENT(IN) :: recvtype
 904    INTEGER, INTENT(IN) :: comm
 905    INTEGER, INTENT(OUT) :: request
 906    INTEGER, INTENT(OUT) :: ierror
 907 end subroutine ompi_ialltoall_f
 908 
 909 subroutine ompi_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
 910                             recvbuf,recvcounts,rdispls,recvtype,comm,ierror) &
 911    BIND(C, name="ompi_alltoallv_f")
 912    implicit none
 913    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 914    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 915    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
 916    INTEGER, INTENT(IN) :: sendtype
 917    INTEGER, INTENT(IN) :: recvtype
 918    INTEGER, INTENT(IN) :: comm
 919    INTEGER, INTENT(OUT) :: ierror
 920 end subroutine ompi_alltoallv_f
 921 
 922 subroutine ompi_ialltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
 923                             recvbuf,recvcounts,rdispls,recvtype,comm,request,ierror) &
 924    BIND(C, name="ompi_ialltoallv_f")
 925    implicit none
 926    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 927    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 928    INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
 929    INTEGER, INTENT(IN) :: sendtype
 930    INTEGER, INTENT(IN) :: recvtype
 931    INTEGER, INTENT(IN) :: comm
 932    INTEGER, INTENT(OUT) :: request
 933    INTEGER, INTENT(OUT) :: ierror
 934 end subroutine ompi_ialltoallv_f
 935 
 936 subroutine ompi_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
 937                             recvbuf,recvcounts,rdispls,recvtypes,comm,ierror) &
 938    BIND(C, name="ompi_alltoallw_f")
 939    implicit none
 940    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
 941    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
 942    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
 943    INTEGER, INTENT(IN) :: sendtypes
 944    INTEGER, INTENT(IN) :: recvtypes
 945    INTEGER, INTENT(IN) :: comm
 946    INTEGER, INTENT(OUT) :: ierror
 947 end subroutine ompi_alltoallw_f
 948 
 949 subroutine ompi_ialltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
 950                             recvbuf,recvcounts,rdispls,recvtypes,comm,request,ierror) &
 951    BIND(C, name="ompi_ialltoallw_f")
 952    implicit none
 953    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
 954    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
 955    INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
 956    INTEGER, INTENT(IN), ASYNCHRONOUS :: sendtypes
 957    INTEGER, INTENT(IN), ASYNCHRONOUS :: recvtypes
 958    INTEGER, INTENT(IN) :: comm
 959    INTEGER, INTENT(OUT) :: request
 960    INTEGER, INTENT(OUT) :: ierror
 961 end subroutine ompi_ialltoallw_f
 962 
 963 subroutine ompi_barrier_f(comm,ierror) &
 964    BIND(C, name="ompi_barrier_f")
 965    implicit none
 966    INTEGER, INTENT(IN) :: comm
 967    INTEGER, INTENT(OUT) :: ierror
 968 end subroutine ompi_barrier_f
 969 
 970 subroutine ompi_ibarrier_f(comm,request,ierror) &
 971    BIND(C, name="ompi_ibarrier_f")
 972    implicit none
 973    INTEGER, INTENT(IN) :: comm
 974    INTEGER, INTENT(OUT) :: request
 975    INTEGER, INTENT(OUT) :: ierror
 976 end subroutine ompi_ibarrier_f
 977 
 978 subroutine ompi_bcast_f(buffer,count,datatype,root,comm,ierror) &
 979    BIND(C, name="ompi_bcast_f")
 980    implicit none
 981    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buffer
 982    INTEGER, INTENT(IN) :: count, root
 983    INTEGER, INTENT(IN) :: datatype
 984    INTEGER, INTENT(IN) :: comm
 985    INTEGER, INTENT(OUT) :: ierror
 986 end subroutine ompi_bcast_f
 987 
 988 subroutine ompi_ibcast_f(buffer,count,datatype,root,comm,request,ierror) &
 989    BIND(C, name="ompi_ibcast_f")
 990    implicit none
 991    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: buffer
 992    INTEGER, INTENT(IN) :: count, root
 993    INTEGER, INTENT(IN) :: datatype
 994    INTEGER, INTENT(IN) :: comm
 995    INTEGER, INTENT(OUT) :: request
 996    INTEGER, INTENT(OUT) :: ierror
 997 end subroutine ompi_ibcast_f
 998 
 999 subroutine ompi_exscan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
1000    BIND(C, name="ompi_exscan_f")
1001    implicit none
1002    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1003    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1004    INTEGER, INTENT(IN) :: count
1005    INTEGER, INTENT(IN) :: datatype
1006    INTEGER, INTENT(IN) :: op
1007    INTEGER, INTENT(IN) :: comm
1008    INTEGER, INTENT(OUT) :: ierror
1009 end subroutine ompi_exscan_f
1010 
1011 subroutine ompi_iexscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
1012    BIND(C, name="ompi_iexscan_f")
1013    implicit none
1014    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1015    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1016    INTEGER, INTENT(IN) :: count
1017    INTEGER, INTENT(IN) :: datatype
1018    INTEGER, INTENT(IN) :: op
1019    INTEGER, INTENT(IN) :: comm
1020    INTEGER, INTENT(OUT) :: request
1021    INTEGER, INTENT(OUT) :: ierror
1022 end subroutine ompi_iexscan_f
1023 
1024 subroutine ompi_gather_f(sendbuf,sendcount,sendtype,recvbuf, &
1025                          recvcount,recvtype,root,comm,ierror) &
1026    BIND(C, name="ompi_gather_f")
1027    implicit none
1028    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1029    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1030    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1031    INTEGER, INTENT(IN) :: sendtype
1032    INTEGER, INTENT(IN) :: recvtype
1033    INTEGER, INTENT(IN) :: comm
1034    INTEGER, INTENT(OUT) :: ierror
1035 end subroutine ompi_gather_f
1036 
1037 subroutine ompi_igather_f(sendbuf,sendcount,sendtype,recvbuf, &
1038                          recvcount,recvtype,root,comm,request,ierror) &
1039    BIND(C, name="ompi_igather_f")
1040    implicit none
1041    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1042    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1043    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1044    INTEGER, INTENT(IN) :: sendtype
1045    INTEGER, INTENT(IN) :: recvtype
1046    INTEGER, INTENT(IN) :: comm
1047    INTEGER, INTENT(OUT) :: request
1048    INTEGER, INTENT(OUT) :: ierror
1049 end subroutine ompi_igather_f
1050 
1051 subroutine ompi_gatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
1052                           recvcounts,displs,recvtype,root,comm,ierror) &
1053    BIND(C, name="ompi_gatherv_f")
1054    implicit none
1055    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1056    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1057    INTEGER, INTENT(IN) :: sendcount, root
1058    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
1059    INTEGER, INTENT(IN) :: sendtype
1060    INTEGER, INTENT(IN) :: recvtype
1061    INTEGER, INTENT(IN) :: comm
1062    INTEGER, INTENT(OUT) :: ierror
1063 end subroutine ompi_gatherv_f
1064 
1065 subroutine ompi_igatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
1066                           recvcounts,displs,recvtype,root,comm,request,ierror) &
1067    BIND(C, name="ompi_igatherv_f")
1068    implicit none
1069    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1070    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1071    INTEGER, INTENT(IN) :: sendcount, root
1072    INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*), displs(*)
1073    INTEGER, INTENT(IN) :: sendtype
1074    INTEGER, INTENT(IN) :: recvtype
1075    INTEGER, INTENT(IN) :: comm
1076    INTEGER, INTENT(OUT) :: request
1077    INTEGER, INTENT(OUT) :: ierror
1078 end subroutine ompi_igatherv_f
1079 
1080 subroutine ompi_op_free_f(op,ierror) &
1081    BIND(C, name="ompi_op_free_f")
1082    implicit none
1083    INTEGER, INTENT(INOUT) :: op
1084    INTEGER, INTENT(OUT) :: ierror
1085 end subroutine ompi_op_free_f
1086 
1087 subroutine ompi_reduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,ierror) &
1088    BIND(C, name="ompi_reduce_f")
1089    implicit none
1090    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1091    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1092    INTEGER, INTENT(IN) :: count, root
1093    INTEGER, INTENT(IN) :: datatype
1094    INTEGER, INTENT(IN) :: op
1095    INTEGER, INTENT(IN) :: comm
1096    INTEGER, INTENT(OUT) :: ierror
1097 end subroutine ompi_reduce_f
1098 
1099 subroutine ompi_ireduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,request,ierror) &
1100    BIND(C, name="ompi_ireduce_f")
1101    implicit none
1102    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1103    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1104    INTEGER, INTENT(IN) :: count, root
1105    INTEGER, INTENT(IN) :: datatype
1106    INTEGER, INTENT(IN) :: op
1107    INTEGER, INTENT(IN) :: comm
1108    INTEGER, INTENT(OUT) :: request
1109    INTEGER, INTENT(OUT) :: ierror
1110 end subroutine ompi_ireduce_f
1111 
1112 subroutine ompi_reduce_local_f(inbuf,inoutbuf,count,datatype,op,ierror) &
1113    BIND(C, name="ompi_reduce_local_f")
1114    implicit none
1115    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf
1116    OMPI_FORTRAN_IGNORE_TKR_TYPE :: inoutbuf
1117    INTEGER, INTENT(IN) :: count
1118    INTEGER, INTENT(IN) :: datatype
1119    INTEGER, INTENT(IN) :: op
1120    INTEGER, INTENT(OUT) :: ierror
1121 end subroutine ompi_reduce_local_f
1122 
1123 subroutine ompi_reduce_scatter_f(sendbuf,recvbuf,recvcounts, &
1124                                  datatype,op,comm,ierror) &
1125    BIND(C, name="ompi_reduce_scatter_f")
1126    implicit none
1127    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1128    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1129    INTEGER, INTENT(IN) :: recvcounts(*)
1130    INTEGER, INTENT(IN) :: datatype
1131    INTEGER, INTENT(IN) :: op
1132    INTEGER, INTENT(IN) :: comm
1133    INTEGER, INTENT(OUT) :: ierror
1134 end subroutine ompi_reduce_scatter_f
1135 
1136 subroutine ompi_ireduce_scatter_f(sendbuf,recvbuf,recvcounts, &
1137                                  datatype,op,comm,request,ierror) &
1138    BIND(C, name="ompi_ireduce_scatter_f")
1139    implicit none
1140    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1141    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1142    INTEGER, INTENT(IN), ASYNCHRONOUS :: recvcounts(*)
1143    INTEGER, INTENT(IN) :: datatype
1144    INTEGER, INTENT(IN) :: op
1145    INTEGER, INTENT(IN) :: comm
1146    INTEGER, INTENT(OUT) :: request
1147    INTEGER, INTENT(OUT) :: ierror
1148 end subroutine ompi_ireduce_scatter_f
1149 
1150 subroutine ompi_reduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1151                                        datatype,op,comm,ierror) &
1152    BIND(C, name="ompi_reduce_scatter_block_f")
1153    implicit none
1154    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1155    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1156    INTEGER, INTENT(IN) :: recvcount
1157    INTEGER, INTENT(IN) :: datatype
1158    INTEGER, INTENT(IN) :: op
1159    INTEGER, INTENT(IN) :: comm
1160    INTEGER, INTENT(OUT) :: ierror
1161 end subroutine ompi_reduce_scatter_block_f
1162 
1163 subroutine ompi_ireduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1164                                        datatype,op,comm,request,ierror) &
1165    BIND(C, name="ompi_ireduce_scatter_block_f")
1166    implicit none
1167    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1168    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1169    INTEGER, INTENT(IN) :: recvcount
1170    INTEGER, INTENT(IN) :: datatype
1171    INTEGER, INTENT(IN) :: op
1172    INTEGER, INTENT(IN) :: comm
1173    INTEGER, INTENT(OUT) :: request
1174    INTEGER, INTENT(OUT) :: ierror
1175 end subroutine ompi_ireduce_scatter_block_f
1176 
1177 subroutine ompi_scan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
1178    BIND(C, name="ompi_scan_f")
1179    implicit none
1180    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1181    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1182    INTEGER, INTENT(IN) :: count
1183    INTEGER, INTENT(IN) :: datatype
1184    INTEGER, INTENT(IN) :: op
1185    INTEGER, INTENT(IN) :: comm
1186    INTEGER, INTENT(OUT) :: ierror
1187 end subroutine ompi_scan_f
1188 
1189 subroutine ompi_iscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
1190    BIND(C, name="ompi_iscan_f")
1191    implicit none
1192    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1193    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1194    INTEGER, INTENT(IN) :: count
1195    INTEGER, INTENT(IN) :: datatype
1196    INTEGER, INTENT(IN) :: op
1197    INTEGER, INTENT(IN) :: comm
1198    INTEGER, INTENT(OUT) :: request
1199    INTEGER, INTENT(OUT) :: ierror
1200 end subroutine ompi_iscan_f
1201 
1202 subroutine ompi_scatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1203                           recvcount,recvtype,root,comm,ierror) &
1204    BIND(C, name="ompi_scatter_f")
1205    implicit none
1206    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1207    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1208    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1209    INTEGER, INTENT(IN) :: sendtype
1210    INTEGER, INTENT(IN) :: recvtype
1211    INTEGER, INTENT(IN) :: comm
1212    INTEGER, INTENT(OUT) :: ierror
1213 end subroutine ompi_scatter_f
1214 
1215 subroutine ompi_iscatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1216                           recvcount,recvtype,root,comm,request,ierror) &
1217    BIND(C, name="ompi_iscatter_f")
1218    implicit none
1219    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1220    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1221    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1222    INTEGER, INTENT(IN) :: sendtype
1223    INTEGER, INTENT(IN) :: recvtype
1224    INTEGER, INTENT(IN) :: comm
1225    INTEGER, INTENT(OUT) :: request
1226    INTEGER, INTENT(OUT) :: ierror
1227 end subroutine ompi_iscatter_f
1228 
1229 subroutine ompi_scatterv_f(sendbuf,sendcounts,displs,sendtype, &
1230                            recvbuf,recvcount,recvtype,root,comm,ierror) &
1231    BIND(C, name="ompi_scatterv_f")
1232    implicit none
1233    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
1234    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
1235    INTEGER, INTENT(IN) :: recvcount, root
1236    INTEGER, INTENT(IN) :: sendcounts(*), displs(*)
1237    INTEGER, INTENT(IN) :: sendtype
1238    INTEGER, INTENT(IN) :: recvtype
1239    INTEGER, INTENT(IN) :: comm
1240    INTEGER, INTENT(OUT) :: ierror
1241 end subroutine ompi_scatterv_f
1242 
1243 subroutine ompi_iscatterv_f(sendbuf,sendcounts,displs,sendtype, &
1244                            recvbuf,recvcount,recvtype,root,comm,request,ierror) &
1245    BIND(C, name="ompi_iscatterv_f")
1246    implicit none
1247    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN), ASYNCHRONOUS :: sendbuf
1248    OMPI_FORTRAN_IGNORE_TKR_TYPE, ASYNCHRONOUS :: recvbuf
1249    INTEGER, INTENT(IN) :: recvcount, root
1250    INTEGER, INTENT(IN), ASYNCHRONOUS :: sendcounts(*), displs(*)
1251    INTEGER, INTENT(IN) :: sendtype
1252    INTEGER, INTENT(IN) :: recvtype
1253    INTEGER, INTENT(IN) :: comm
1254    INTEGER, INTENT(OUT) :: request
1255    INTEGER, INTENT(OUT) :: ierror
1256 end subroutine ompi_iscatterv_f
1257 
1258 subroutine ompi_comm_compare_f(comm1,comm2,result,ierror) &
1259    BIND(C, name="ompi_comm_compare_f")
1260    implicit none
1261    INTEGER, INTENT(IN) :: comm1
1262    INTEGER, INTENT(IN) :: comm2
1263    INTEGER, INTENT(OUT) :: result
1264    INTEGER, INTENT(OUT) :: ierror
1265 end subroutine ompi_comm_compare_f
1266 
1267 subroutine ompi_comm_create_f(comm,group,newcomm,ierror) &
1268    BIND(C, name="ompi_comm_create_f")
1269    implicit none
1270    INTEGER, INTENT(IN) :: comm
1271    INTEGER, INTENT(IN) :: group
1272    INTEGER, INTENT(OUT) :: newcomm
1273    INTEGER, INTENT(OUT) :: ierror
1274 end subroutine ompi_comm_create_f
1275 
1276 subroutine ompi_comm_create_group_f(comm, group, tag, newcomm, ierror) &
1277    BIND(C, name="ompi_comm_create_group_f")
1278    implicit none
1279   integer, intent(in) :: comm
1280   integer, intent(in) :: group
1281   integer, intent(in) :: tag
1282   integer, intent(out) :: newcomm
1283   integer, intent(out) :: ierror
1284 end subroutine ompi_comm_create_group_f
1285 
1286 subroutine ompi_comm_create_keyval_f(comm_copy_attr_fn,comm_delete_attr_fn, &
1287                                      comm_keyval,extra_state,ierror) &
1288    BIND(C, name="ompi_comm_create_keyval_f")
1289    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1290    use, intrinsic :: iso_c_binding, only: c_funptr
1291    implicit none
1292    type(c_funptr), value :: comm_copy_attr_fn
1293    type(c_funptr), value :: comm_delete_attr_fn
1294    INTEGER, INTENT(OUT) :: comm_keyval
1295    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1296    INTEGER, INTENT(OUT) :: ierror
1297 end subroutine ompi_comm_create_keyval_f
1298 
1299 subroutine ompi_comm_delete_attr_f(comm,comm_keyval,ierror) &
1300    BIND(C, name="ompi_comm_delete_attr_f")
1301    implicit none
1302    INTEGER, INTENT(IN) :: comm
1303    INTEGER, INTENT(IN) :: comm_keyval
1304    INTEGER, INTENT(OUT) :: ierror
1305 end subroutine ompi_comm_delete_attr_f
1306 
1307 subroutine ompi_comm_dup_f(comm,newcomm,ierror) &
1308    BIND(C, name="ompi_comm_dup_f")
1309    implicit none
1310    INTEGER, INTENT(IN) :: comm
1311    INTEGER, INTENT(OUT) :: newcomm
1312    INTEGER, INTENT(OUT) :: ierror
1313 end subroutine ompi_comm_dup_f
1314 
1315 subroutine ompi_comm_dup_with_info_f(comm, info, newcomm, ierror) &
1316    BIND(C, name="ompi_comm_dup_with_info_f")
1317    implicit none
1318   integer, intent(in) :: comm
1319   integer, intent(in) :: info
1320   integer, intent(out) :: newcomm
1321   integer, intent(out) :: ierror
1322 end subroutine ompi_comm_dup_with_info_f
1323 
1324 subroutine ompi_comm_free_f(comm,ierror) &
1325    BIND(C, name="ompi_comm_free_f")
1326    implicit none
1327    INTEGER, INTENT(INOUT) :: comm
1328    INTEGER, INTENT(OUT) :: ierror
1329 end subroutine ompi_comm_free_f
1330 
1331 subroutine ompi_comm_free_keyval_f(comm_keyval,ierror) &
1332    BIND(C, name="ompi_comm_free_keyval_f")
1333    implicit none
1334    INTEGER, INTENT(INOUT) :: comm_keyval
1335    INTEGER, INTENT(OUT) :: ierror
1336 end subroutine ompi_comm_free_keyval_f
1337 
1338 subroutine ompi_comm_get_info_f(comm,info_used,ierror) &
1339    BIND(C, name="ompi_comm_get_info_f")
1340    implicit none
1341    INTEGER, INTENT(IN) :: comm
1342    INTEGER, INTENT(OUT) :: info_used
1343    INTEGER, INTENT(OUT) :: ierror
1344 end subroutine ompi_comm_get_info_f
1345 
1346 subroutine ompi_comm_get_name_f(comm,comm_name,resultlen,ierror,comm_name_len) &
1347    BIND(C, name="ompi_comm_get_name_f")
1348    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1349    implicit none
1350    INTEGER, INTENT(IN) :: comm
1351    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: comm_name
1352    INTEGER, INTENT(OUT) :: resultlen
1353    INTEGER, INTENT(OUT) :: ierror
1354    INTEGER, VALUE, INTENT(IN) :: comm_name_len
1355 end subroutine ompi_comm_get_name_f
1356 
1357 subroutine ompi_comm_group_f(comm,group,ierror) &
1358    BIND(C, name="ompi_comm_group_f")
1359    implicit none
1360    INTEGER, INTENT(IN) :: comm
1361    INTEGER, INTENT(OUT) :: group
1362    INTEGER, INTENT(OUT) :: ierror
1363 end subroutine ompi_comm_group_f
1364 
1365 subroutine ompi_comm_idup_f(comm, newcomm, request, ierror) &
1366    BIND(C, name="ompi_comm_idup_f")
1367    implicit none
1368   integer, intent(in) :: comm
1369   integer, intent(out) :: newcomm
1370   integer, intent(out) :: request
1371   integer, intent(out) :: ierror
1372 end subroutine ompi_comm_idup_f
1373 
1374 subroutine ompi_comm_rank_f(comm,rank,ierror) &
1375    BIND(C, name="ompi_comm_rank_f")
1376    implicit none
1377    INTEGER, INTENT(IN) :: comm
1378    INTEGER, INTENT(OUT) :: rank
1379    INTEGER, INTENT(OUT) :: ierror
1380 end subroutine ompi_comm_rank_f
1381 
1382 subroutine ompi_comm_remote_group_f(comm,group,ierror) &
1383    BIND(C, name="ompi_comm_remote_group_f")
1384    implicit none
1385    INTEGER, INTENT(IN) :: comm
1386    INTEGER, INTENT(OUT) :: group
1387    INTEGER, INTENT(OUT) :: ierror
1388 end subroutine ompi_comm_remote_group_f
1389 
1390 subroutine ompi_comm_remote_size_f(comm,size,ierror) &
1391    BIND(C, name="ompi_comm_remote_size_f")
1392    implicit none
1393    INTEGER, INTENT(IN) :: comm
1394    INTEGER, INTENT(OUT) :: size
1395    INTEGER, INTENT(OUT) :: ierror
1396 end subroutine ompi_comm_remote_size_f
1397 
1398 subroutine ompi_comm_set_attr_f(comm,comm_keyval,attribute_val,ierror) &
1399    BIND(C, name="ompi_comm_set_attr_f")
1400    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1401    implicit none
1402    INTEGER, INTENT(IN) :: comm
1403    INTEGER, INTENT(IN) :: comm_keyval
1404    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1405    INTEGER, INTENT(OUT) :: ierror
1406 end subroutine ompi_comm_set_attr_f
1407 
1408 subroutine ompi_comm_set_info_f(comm,info,ierror) &
1409    BIND(C, name="ompi_comm_set_info_f")
1410    implicit none
1411    INTEGER, INTENT(IN) :: comm
1412    INTEGER, INTENT(IN) :: info
1413    INTEGER, INTENT(OUT) :: ierror
1414 end subroutine ompi_comm_set_info_f
1415 
1416 subroutine ompi_comm_set_name_f(comm,comm_name,ierror,comm_name_len) &
1417    BIND(C, name="ompi_comm_set_name_f")
1418    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1419    implicit none
1420    INTEGER, INTENT(IN) :: comm
1421    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: comm_name
1422    INTEGER, INTENT(OUT) :: ierror
1423    INTEGER, VALUE, INTENT(IN) :: comm_name_len
1424 end subroutine ompi_comm_set_name_f
1425 
1426 subroutine ompi_comm_size_f(comm,size,ierror) &
1427    BIND(C, name="ompi_comm_size_f")
1428    implicit none
1429    INTEGER, INTENT(IN) :: comm
1430    INTEGER, INTENT(OUT) :: size
1431    INTEGER, INTENT(OUT) :: ierror
1432 end subroutine ompi_comm_size_f
1433 
1434 subroutine ompi_comm_split_f(comm,color,key,newcomm,ierror) &
1435    BIND(C, name="ompi_comm_split_f")
1436    implicit none
1437    INTEGER, INTENT(IN) :: comm
1438    INTEGER, INTENT(IN) :: color, key
1439    INTEGER, INTENT(OUT) :: newcomm
1440    INTEGER, INTENT(OUT) :: ierror
1441 end subroutine ompi_comm_split_f
1442 
1443 subroutine ompi_group_compare_f(group1,group2,result,ierror) &
1444    BIND(C, name="ompi_group_compare_f")
1445    implicit none
1446    INTEGER, INTENT(IN) :: group1
1447    INTEGER, INTENT(IN) :: group2
1448    INTEGER, INTENT(OUT) :: result
1449    INTEGER, INTENT(OUT) :: ierror
1450 end subroutine ompi_group_compare_f
1451 
1452 subroutine ompi_group_difference_f(group1,group2,newgroup,ierror) &
1453    BIND(C, name="ompi_group_difference_f")
1454    implicit none
1455    INTEGER, INTENT(IN) :: group1
1456    INTEGER, INTENT(IN) :: group2
1457    INTEGER, INTENT(OUT) :: newgroup
1458    INTEGER, INTENT(OUT) :: ierror
1459 end subroutine ompi_group_difference_f
1460 
1461 subroutine ompi_group_excl_f(group,n,ranks,newgroup,ierror) &
1462    BIND(C, name="ompi_group_excl_f")
1463    implicit none
1464    INTEGER, INTENT(IN) :: group
1465    INTEGER, INTENT(IN) :: n
1466    INTEGER, INTENT(IN) :: ranks(*)
1467    INTEGER, INTENT(OUT) :: newgroup
1468    INTEGER, INTENT(OUT) :: ierror
1469 end subroutine ompi_group_excl_f
1470 
1471 subroutine ompi_group_free_f(group,ierror) &
1472    BIND(C, name="ompi_group_free_f")
1473    implicit none
1474    INTEGER, INTENT(INOUT) :: group
1475    INTEGER, INTENT(OUT) :: ierror
1476 end subroutine ompi_group_free_f
1477 
1478 subroutine ompi_group_incl_f(group,n,ranks,newgroup,ierror) &
1479    BIND(C, name="ompi_group_incl_f")
1480    implicit none
1481    INTEGER, INTENT(IN) :: n
1482    INTEGER, INTENT(IN) :: ranks(*)
1483    INTEGER, INTENT(IN) :: group
1484    INTEGER, INTENT(OUT) :: newgroup
1485    INTEGER, INTENT(OUT) :: ierror
1486 end subroutine ompi_group_incl_f
1487 
1488 subroutine ompi_group_intersection_f(group1,group2,newgroup,ierror) &
1489    BIND(C, name="ompi_group_intersection_f")
1490    implicit none
1491    INTEGER, INTENT(IN) :: group1
1492    INTEGER, INTENT(IN) :: group2
1493    INTEGER, INTENT(OUT) :: newgroup
1494    INTEGER, INTENT(OUT) :: ierror
1495 end subroutine ompi_group_intersection_f
1496 
1497 subroutine ompi_group_range_excl_f(group,n,ranges,newgroup,ierror) &
1498    BIND(C, name="ompi_group_range_excl_f")
1499    implicit none
1500    INTEGER, INTENT(IN) :: group
1501    INTEGER, INTENT(IN) :: n
1502    INTEGER, INTENT(IN) :: ranges(*)
1503    INTEGER, INTENT(OUT) :: newgroup
1504    INTEGER, INTENT(OUT) :: ierror
1505 end subroutine ompi_group_range_excl_f
1506 
1507 subroutine ompi_group_range_incl_f(group,n,ranges,newgroup,ierror) &
1508    BIND(C, name="ompi_group_range_incl_f")
1509    implicit none
1510    INTEGER, INTENT(IN) :: group
1511    INTEGER, INTENT(IN) :: n
1512    INTEGER, INTENT(IN) :: ranges(*)
1513    INTEGER, INTENT(OUT) :: newgroup
1514    INTEGER, INTENT(OUT) :: ierror
1515 end subroutine ompi_group_range_incl_f
1516 
1517 subroutine ompi_group_rank_f(group,rank,ierror) &
1518    BIND(C, name="ompi_group_rank_f")
1519    implicit none
1520    INTEGER, INTENT(IN) :: group
1521    INTEGER, INTENT(OUT) :: rank
1522    INTEGER, INTENT(OUT) :: ierror
1523 end subroutine ompi_group_rank_f
1524 
1525 subroutine ompi_group_size_f(group,size,ierror) &
1526    BIND(C, name="ompi_group_size_f")
1527    implicit none
1528    INTEGER, INTENT(IN) :: group
1529    INTEGER, INTENT(OUT) :: size
1530    INTEGER, INTENT(OUT) :: ierror
1531 end subroutine ompi_group_size_f
1532 
1533 subroutine ompi_group_translate_ranks_f(group1,n,ranks1,group2,ranks2,ierror) &
1534    BIND(C, name="ompi_group_translate_ranks_f")
1535    implicit none
1536    INTEGER, INTENT(IN) :: group1, group2
1537    INTEGER, INTENT(IN) :: n
1538    INTEGER, INTENT(IN) :: ranks1(*)
1539    INTEGER, INTENT(OUT) :: ranks2(*)
1540    INTEGER, INTENT(OUT) :: ierror
1541 end subroutine ompi_group_translate_ranks_f
1542 
1543 subroutine ompi_group_union_f(group1,group2,newgroup,ierror) &
1544    BIND(C, name="ompi_group_union_f")
1545    implicit none
1546    INTEGER, INTENT(IN) :: group1, group2
1547    INTEGER, INTENT(OUT) :: newgroup
1548    INTEGER, INTENT(OUT) :: ierror
1549 end subroutine ompi_group_union_f
1550 
1551 subroutine ompi_intercomm_create_f(local_comm,local_leader,peer_comm, &
1552                                    remote_leader,tag,newintercomm,ierror) &
1553    BIND(C, name="ompi_intercomm_create_f")
1554    implicit none
1555    INTEGER, INTENT(IN) :: local_comm, peer_comm
1556    INTEGER, INTENT(IN) :: local_leader, remote_leader, tag
1557    INTEGER, INTENT(OUT) :: newintercomm
1558    INTEGER, INTENT(OUT) :: ierror
1559 end subroutine ompi_intercomm_create_f
1560 
1561 subroutine ompi_type_create_keyval_f(type_copy_attr_fn,type_delete_attr_fn, &
1562                                      type_keyval,extra_state,ierror) &
1563    BIND(C, name="ompi_type_create_keyval_f")
1564    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1565    use, intrinsic :: iso_c_binding, only: c_funptr
1566    implicit none
1567    type(c_funptr), value :: type_copy_attr_fn
1568    type(c_funptr), value :: type_delete_attr_fn
1569    INTEGER, INTENT(OUT) :: type_keyval
1570    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1571    INTEGER, INTENT(OUT) :: ierror
1572 end subroutine ompi_type_create_keyval_f
1573 
1574 subroutine ompi_type_delete_attr_f(datatype,type_keyval,ierror) &
1575    BIND(C, name="ompi_type_delete_attr_f")
1576    implicit none
1577    INTEGER, INTENT(IN) :: datatype
1578    INTEGER, INTENT(IN) :: type_keyval
1579    INTEGER, INTENT(OUT) :: ierror
1580 end subroutine ompi_type_delete_attr_f
1581 
1582 subroutine ompi_type_free_keyval_f(type_keyval,ierror) &
1583    BIND(C, name="ompi_type_free_keyval_f")
1584    implicit none
1585    INTEGER, INTENT(INOUT) :: type_keyval
1586    INTEGER, INTENT(OUT) :: ierror
1587 end subroutine ompi_type_free_keyval_f
1588 
1589 subroutine ompi_type_get_name_f(datatype,type_name,resultlen,ierror,type_name_len) &
1590    BIND(C, name="ompi_type_get_name_f")
1591    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1592    implicit none
1593    INTEGER, INTENT(IN) :: datatype
1594    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: type_name
1595    INTEGER, INTENT(OUT) :: resultlen
1596    INTEGER, INTENT(OUT) :: ierror
1597    INTEGER, VALUE, INTENT(IN) :: type_name_len
1598 end subroutine ompi_type_get_name_f
1599 
1600 subroutine ompi_type_set_attr_f(datatype,type_keyval,attribute_val,ierror) &
1601    BIND(C, name="ompi_type_set_attr_f")
1602    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1603    implicit none
1604    INTEGER, INTENT(IN) :: datatype
1605    INTEGER, INTENT(IN) :: type_keyval
1606    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1607    INTEGER, INTENT(OUT) :: ierror
1608 end subroutine ompi_type_set_attr_f
1609 
1610 subroutine ompi_type_set_name_f(datatype,type_name,ierror,type_name_len) &
1611    BIND(C, name="ompi_type_set_name_f")
1612    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1613    implicit none
1614    INTEGER, INTENT(IN) :: datatype
1615    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: type_name
1616    INTEGER, INTENT(OUT) :: ierror
1617    INTEGER, VALUE, INTENT(IN) :: type_name_len
1618 end subroutine ompi_type_set_name_f
1619 
1620 subroutine ompi_win_allocate_f(size, disp_unit, info, comm, &
1621       baseptr, win, ierror) BIND(C, name="ompi_win_allocate_f")
1622   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
1623   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1624   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) ::  size
1625   INTEGER, INTENT(IN) ::  disp_unit
1626   INTEGER, INTENT(IN) ::  info
1627   INTEGER, INTENT(IN) ::  comm
1628   TYPE(C_PTR), INTENT(OUT) ::  baseptr
1629   INTEGER, INTENT(OUT) ::  win
1630   INTEGER, INTENT(OUT) ::  ierror
1631 end subroutine ompi_win_allocate_f
1632 
1633 subroutine ompi_win_allocate_shared_f(size, disp_unit, info, comm, &
1634       baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
1635   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
1636   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1637   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) ::  size
1638   INTEGER, INTENT(IN) ::  disp_unit
1639   INTEGER, INTENT(IN) ::  info
1640   INTEGER, INTENT(IN) ::  comm
1641   TYPE(C_PTR), INTENT(OUT) ::  baseptr
1642   INTEGER, INTENT(OUT) ::  win
1643   INTEGER, INTENT(OUT) ::  ierror
1644 end subroutine ompi_win_allocate_shared_f
1645 
1646 subroutine ompi_win_create_keyval_f(win_copy_attr_fn,win_delete_attr_fn, &
1647                                     win_keyval,extra_state,ierror) &
1648    BIND(C, name="ompi_win_create_keyval_f")
1649    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1650    use, intrinsic :: iso_c_binding, only: c_funptr
1651    implicit none
1652    type(c_funptr), value :: win_copy_attr_fn
1653    type(c_funptr), value :: win_delete_attr_fn
1654    INTEGER, INTENT(OUT) :: win_keyval
1655    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1656    INTEGER, INTENT(OUT) :: ierror
1657 end subroutine ompi_win_create_keyval_f
1658 
1659 subroutine ompi_win_delete_attr_f(win,win_keyval,ierror) &
1660    BIND(C, name="ompi_win_delete_attr_f")
1661    implicit none
1662    INTEGER, INTENT(IN) :: win
1663    INTEGER, INTENT(IN) :: win_keyval
1664    INTEGER, INTENT(OUT) :: ierror
1665 end subroutine ompi_win_delete_attr_f
1666 
1667 subroutine ompi_win_free_keyval_f(win_keyval,ierror) &
1668    BIND(C, name="ompi_win_free_keyval_f")
1669    implicit none
1670    INTEGER, INTENT(INOUT) :: win_keyval
1671    INTEGER, INTENT(OUT) :: ierror
1672 end subroutine ompi_win_free_keyval_f
1673 
1674 subroutine ompi_win_get_name_f(win,win_name,resultlen,ierror,win_name_len) &
1675    BIND(C, name="ompi_win_get_name_f")
1676    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1677    implicit none
1678    INTEGER, INTENT(IN) :: win
1679    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: win_name
1680    INTEGER, INTENT(OUT) :: resultlen
1681    INTEGER, INTENT(OUT) :: ierror
1682    INTEGER, VALUE, INTENT(IN) :: win_name_len
1683 end subroutine ompi_win_get_name_f
1684 
1685 subroutine ompi_win_set_attr_f(win,win_keyval,attribute_val,ierror) &
1686    BIND(C, name="ompi_win_set_attr_f")
1687    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1688    implicit none
1689    INTEGER, INTENT(IN) :: win
1690    INTEGER, INTENT(IN) :: win_keyval
1691    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1692    INTEGER, INTENT(OUT) :: ierror
1693 end subroutine ompi_win_set_attr_f
1694 
1695 subroutine ompi_win_set_name_f(win,win_name,ierror,win_name_len) &
1696    BIND(C, name="ompi_win_set_name_f")
1697    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1698    implicit none
1699    INTEGER, INTENT(IN) :: win
1700    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: win_name
1701    INTEGER, INTENT(OUT) :: ierror
1702    INTEGER, VALUE, INTENT(IN) :: win_name_len
1703 end subroutine ompi_win_set_name_f
1704 
1705 subroutine ompi_cartdim_get_f(comm,ndims,ierror) &
1706    BIND(C, name="ompi_cartdim_get_f")
1707    implicit none
1708    INTEGER, INTENT(IN) :: comm
1709    INTEGER, INTENT(OUT) :: ndims
1710    INTEGER, INTENT(OUT) :: ierror
1711 end subroutine ompi_cartdim_get_f
1712 
1713 subroutine ompi_cart_coords_f(comm,rank,maxdims,coords,ierror) &
1714    BIND(C, name="ompi_cart_coords_f")
1715    implicit none
1716    INTEGER, INTENT(IN) :: comm
1717    INTEGER, INTENT(IN) :: rank, maxdims
1718    INTEGER, INTENT(OUT) :: coords(maxdims)
1719    INTEGER, INTENT(OUT) :: ierror
1720 end subroutine ompi_cart_coords_f
1721 
1722 subroutine ompi_cart_rank_f(comm,coords,rank,ierror) &
1723    BIND(C, name="ompi_cart_rank_f")
1724    implicit none
1725    INTEGER, INTENT(IN) :: comm
1726    INTEGER, INTENT(IN) :: coords(*)
1727    INTEGER, INTENT(OUT) :: rank
1728    INTEGER, INTENT(OUT) :: ierror
1729 end subroutine ompi_cart_rank_f
1730 
1731 subroutine ompi_cart_shift_f(comm,direction,disp,rank_source,rank_dest,ierror) &
1732    BIND(C, name="ompi_cart_shift_f")
1733    implicit none
1734    INTEGER, INTENT(IN) :: comm
1735    INTEGER, INTENT(IN) :: direction, disp
1736    INTEGER, INTENT(OUT) :: rank_source, rank_dest
1737    INTEGER, INTENT(OUT) :: ierror
1738 end subroutine ompi_cart_shift_f
1739 
1740 subroutine ompi_dims_create_f(nnodes,ndims,dims,ierror) &
1741    BIND(C, name="ompi_dims_create_f")
1742    implicit none
1743    INTEGER, INTENT(IN) :: nnodes, ndims
1744    INTEGER, INTENT(INOUT) :: dims(*)
1745    INTEGER, INTENT(OUT) :: ierror
1746 end subroutine ompi_dims_create_f
1747 
1748 subroutine ompi_dist_graph_neighbors_f(comm,maxindegree,sources,sourceweights, &
1749                                        maxoutdegree,destinations,destweights,ierror) &
1750    BIND(C, name="ompi_dist_graph_neighbors_f")
1751    implicit none
1752    INTEGER, INTENT(IN) :: comm
1753    INTEGER, INTENT(IN) :: maxindegree, maxoutdegree
1754    INTEGER, INTENT(OUT) :: sources(maxindegree), destinations(maxoutdegree)
1755    INTEGER, INTENT(OUT) :: sourceweights(maxindegree), destweights(maxoutdegree)
1756    INTEGER, INTENT(OUT) :: ierror
1757 end subroutine ompi_dist_graph_neighbors_f
1758 
1759 subroutine ompi_graphdims_get_f(comm,nnodes,nedges,ierror) &
1760    BIND(C, name="ompi_graphdims_get_f")
1761    implicit none
1762    INTEGER, INTENT(IN) :: comm
1763    INTEGER, INTENT(OUT) :: nnodes, nedges
1764    INTEGER, INTENT(OUT) :: ierror
1765 end subroutine ompi_graphdims_get_f
1766 
1767 subroutine ompi_graph_get_f(comm,maxindex,maxedges,index,edges,ierror) &
1768    BIND(C, name="ompi_graph_get_f")
1769    implicit none
1770    INTEGER, INTENT(IN) :: comm
1771    INTEGER, INTENT(IN) :: maxindex, maxedges
1772    INTEGER, INTENT(OUT) :: index(*), edges(*)
1773    INTEGER, INTENT(OUT) :: ierror
1774 end subroutine ompi_graph_get_f
1775 
1776 subroutine ompi_graph_map_f(comm,nnodes,index,edges,newrank,ierror) &
1777    BIND(C, name="ompi_graph_map_f")
1778    implicit none
1779    INTEGER, INTENT(IN) :: comm
1780    INTEGER, INTENT(IN) :: nnodes
1781    INTEGER, INTENT(IN) :: index(*), edges(*)
1782    INTEGER, INTENT(OUT) :: newrank
1783    INTEGER, INTENT(OUT) :: ierror
1784 end subroutine ompi_graph_map_f
1785 
1786 subroutine ompi_graph_neighbors_f(comm,rank,maxneighbors,neighbors,ierror) &
1787    BIND(C, name="ompi_graph_neighbors_f")
1788    implicit none
1789    INTEGER, INTENT(IN) :: comm
1790    INTEGER, INTENT(IN) :: rank, maxneighbors
1791    INTEGER, INTENT(OUT) :: neighbors(*)
1792    INTEGER, INTENT(OUT) :: ierror
1793 end subroutine ompi_graph_neighbors_f
1794 
1795 subroutine ompi_graph_neighbors_count_f(comm,rank,nneighbors,ierror) &
1796    BIND(C, name="ompi_graph_neighbors_count_f")
1797    implicit none
1798    INTEGER, INTENT(IN) :: comm
1799    INTEGER, INTENT(IN) :: rank
1800    INTEGER, INTENT(OUT) :: nneighbors
1801    INTEGER, INTENT(OUT) :: ierror
1802 end subroutine ompi_graph_neighbors_count_f
1803 
1804 subroutine ompi_topo_test_f(comm,status,ierror) &
1805    BIND(C, name="ompi_topo_test_f")
1806    use :: mpi_f08_types, only : MPI_Status
1807    implicit none
1808    INTEGER, INTENT(IN) :: comm
1809    INTEGER, INTENT(OUT) :: status
1810    INTEGER, INTENT(OUT) :: ierror
1811 end subroutine ompi_topo_test_f
1812 
1813 function  ompi_wtick_f() &
1814    BIND(C, name="ompi_wtick_f")
1815    implicit none
1816    DOUBLE PRECISION :: ompi_wtick_f
1817 end function  ompi_wtick_f
1818 
1819 function  ompi_wtime_f() &
1820    BIND(C, name="ompi_wtime_f")
1821    implicit none
1822    DOUBLE PRECISION :: ompi_wtime_f
1823 end function  ompi_wtime_f
1824 
1825 function ompi_aint_add_f(base,diff) &
1826    BIND(C, name="ompi_aint_add_f")
1827    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1828    implicit none
1829    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: base
1830    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: diff
1831    INTEGER(MPI_ADDRESS_KIND) :: ompi_aint_add_f
1832 end function ompi_aint_add_f
1833 
1834 function ompi_aint_diff_f(addr1,addr2) &
1835    BIND(C, name="ompi_aint_diff_f")
1836    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1837    implicit none
1838    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr1
1839    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr2
1840    INTEGER(MPI_ADDRESS_KIND) :: ompi_aint_diff_f
1841 end function ompi_aint_diff_f
1842 
1843 subroutine ompi_abort_f(comm,errorcode,ierror) &
1844    BIND(C, name="ompi_abort_f")
1845    implicit none
1846    INTEGER, INTENT(IN) :: comm
1847    INTEGER, INTENT(IN) :: errorcode
1848    INTEGER, INTENT(OUT) :: ierror
1849 end subroutine ompi_abort_f
1850 
1851 subroutine ompi_add_error_class_f(errorclass,ierror) &
1852    BIND(C, name="ompi_add_error_class_f")
1853    implicit none
1854    INTEGER, INTENT(OUT) :: errorclass
1855    INTEGER, INTENT(OUT) :: ierror
1856 end subroutine ompi_add_error_class_f
1857 
1858 subroutine ompi_add_error_code_f(errorclass,errorcode,ierror) &
1859    BIND(C, name="ompi_add_error_code_f")
1860    implicit none
1861    INTEGER, INTENT(IN) :: errorclass
1862    INTEGER, INTENT(OUT) :: errorcode
1863    INTEGER, INTENT(OUT) :: ierror
1864 end subroutine ompi_add_error_code_f
1865 
1866 subroutine ompi_add_error_string_f(errorcode,string,ierror,str_len) &
1867    BIND(C, name="ompi_add_error_string_f")
1868    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1869    implicit none
1870    INTEGER, INTENT(IN) :: errorcode
1871    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: string
1872    INTEGER, INTENT(OUT) :: ierror
1873    INTEGER, VALUE, INTENT(IN) :: str_len
1874 end subroutine ompi_add_error_string_f
1875 
1876 subroutine ompi_alloc_mem_f(size,info,baseptr,ierror) &
1877    BIND(C, name="ompi_alloc_mem_f")
1878    use, intrinsic :: ISO_C_BINDING, only : C_PTR
1879    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1880    implicit none
1881    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
1882    INTEGER, INTENT(IN) :: info
1883    TYPE(C_PTR), INTENT(OUT) :: baseptr
1884    INTEGER, INTENT(OUT) :: ierror
1885 end subroutine ompi_alloc_mem_f
1886 
1887 subroutine ompi_comm_call_errhandler_f(comm,errorcode,ierror) &
1888    BIND(C, name="ompi_comm_call_errhandler_f")
1889    implicit none
1890    INTEGER, INTENT(IN) :: comm
1891    INTEGER, INTENT(IN) :: errorcode
1892    INTEGER, INTENT(OUT) :: ierror
1893 end subroutine ompi_comm_call_errhandler_f
1894 
1895 subroutine ompi_comm_create_errhandler_f(comm_errhandler_fn,errhandler,ierror) &
1896    BIND(C, name="ompi_comm_create_errhandler_f")
1897    use, intrinsic :: iso_c_binding, only: c_funptr
1898    implicit none
1899    type(c_funptr), value :: comm_errhandler_fn
1900    INTEGER, INTENT(OUT) :: errhandler
1901    INTEGER, INTENT(OUT) :: ierror
1902 end subroutine ompi_comm_create_errhandler_f
1903 
1904 subroutine ompi_comm_get_errhandler_f(comm,errhandler,ierror) &
1905    BIND(C, name="ompi_comm_get_errhandler_f")
1906    implicit none
1907    INTEGER, INTENT(IN) :: comm
1908    INTEGER, INTENT(OUT) :: errhandler
1909    INTEGER, INTENT(OUT) :: ierror
1910 end subroutine ompi_comm_get_errhandler_f
1911 
1912 subroutine ompi_comm_set_errhandler_f(comm,errhandler,ierror) &
1913    BIND(C, name="ompi_comm_set_errhandler_f")
1914    implicit none
1915    INTEGER, INTENT(IN) :: comm
1916    INTEGER, INTENT(IN) :: errhandler
1917    INTEGER, INTENT(OUT) :: ierror
1918 end subroutine ompi_comm_set_errhandler_f
1919 
1920 subroutine ompi_errhandler_free_f(errhandler,ierror) &
1921    BIND(C, name="ompi_errhandler_free_f")
1922    implicit none
1923    INTEGER, INTENT(INOUT) :: errhandler
1924    INTEGER, INTENT(OUT) :: ierror
1925 end subroutine ompi_errhandler_free_f
1926 
1927 subroutine ompi_error_class_f(errorcode,errorclass,ierror) &
1928    BIND(C, name="ompi_error_class_f")
1929    implicit none
1930    INTEGER, INTENT(IN) :: errorcode
1931    INTEGER, INTENT(OUT) :: errorclass
1932    INTEGER, INTENT(OUT) :: ierror
1933 end subroutine ompi_error_class_f
1934 
1935 subroutine ompi_error_string_f(errorcode,string,resultlen,ierror,str_len) &
1936    BIND(C, name="ompi_error_string_f")
1937    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1938    implicit none
1939    INTEGER, INTENT(IN) :: errorcode
1940    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: string
1941    INTEGER, INTENT(OUT) :: resultlen
1942    INTEGER, INTENT(OUT) :: ierror
1943    INTEGER, VALUE, INTENT(IN) :: str_len
1944 end subroutine ompi_error_string_f
1945 
1946 subroutine ompi_file_call_errhandler_f(fh,errorcode,ierror) &
1947    BIND(C, name="ompi_file_call_errhandler_f")
1948    implicit none
1949    INTEGER, INTENT(IN) :: fh
1950    INTEGER, INTENT(IN) :: errorcode
1951    INTEGER, INTENT(OUT) :: ierror
1952 end subroutine ompi_file_call_errhandler_f
1953 
1954 subroutine ompi_file_create_errhandler_f(file_errhandler_fn,errhandler,ierror) &
1955    BIND(C, name="ompi_file_create_errhandler_f")
1956    use, intrinsic :: iso_c_binding, only: c_funptr
1957    implicit none
1958    type(c_funptr), value :: file_errhandler_fn
1959    INTEGER, INTENT(OUT) :: errhandler
1960    INTEGER, INTENT(OUT) :: ierror
1961 end subroutine ompi_file_create_errhandler_f
1962 
1963 subroutine ompi_file_get_errhandler_f(file,errhandler,ierror) &
1964    BIND(C, name="ompi_file_get_errhandler_f")
1965    implicit none
1966    INTEGER, INTENT(IN) :: file
1967    INTEGER, INTENT(OUT) :: errhandler
1968    INTEGER, INTENT(OUT) :: ierror
1969 end subroutine ompi_file_get_errhandler_f
1970 
1971 subroutine ompi_file_set_errhandler_f(file,errhandler,ierror) &
1972    BIND(C, name="ompi_file_set_errhandler_f")
1973    implicit none
1974    INTEGER, INTENT(IN) :: file
1975    INTEGER, INTENT(IN) :: errhandler
1976    INTEGER, INTENT(OUT) :: ierror
1977 end subroutine ompi_file_set_errhandler_f
1978 
1979 subroutine ompi_finalize_f(ierror) &
1980    BIND(C, name="ompi_finalize_f")
1981    implicit none
1982    INTEGER, INTENT(OUT) :: ierror
1983 end subroutine ompi_finalize_f
1984 
1985 subroutine ompi_free_mem_f(base,ierror) &
1986    BIND(C, name="ompi_free_mem_f")
1987    implicit none
1988    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
1989    INTEGER, INTENT(OUT) :: ierror
1990 end subroutine ompi_free_mem_f
1991 
1992 subroutine ompi_get_processor_name_f(name,resultlen,ierror,name_len) &
1993    BIND(C, name="ompi_get_processor_name_f")
1994    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1995    implicit none
1996    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
1997    INTEGER, INTENT(OUT) :: resultlen
1998    INTEGER, INTENT(OUT) :: ierror
1999    INTEGER, VALUE, INTENT(IN) :: name_len
2000 end subroutine ompi_get_processor_name_f
2001 
2002 subroutine ompi_get_version_f(version,subversion,ierror) &
2003    BIND(C, name="ompi_get_version_f")
2004    implicit none
2005    INTEGER, INTENT(OUT) :: version, subversion
2006    INTEGER, INTENT(OUT) :: ierror
2007 end subroutine ompi_get_version_f
2008 
2009 subroutine ompi_init_f(ierror) &
2010    BIND(C, name="ompi_init_f")
2011    implicit none
2012    INTEGER, INTENT(OUT) :: ierror
2013 end subroutine ompi_init_f
2014 
2015 subroutine ompi_win_call_errhandler_f(win,errorcode,ierror) &
2016    BIND(C, name="ompi_win_call_errhandler_f")
2017    implicit none
2018    INTEGER, INTENT(IN) :: win
2019    INTEGER, INTENT(IN) :: errorcode
2020    INTEGER, INTENT(OUT) :: ierror
2021 end subroutine ompi_win_call_errhandler_f
2022 
2023 subroutine ompi_win_create_errhandler_f(win_errhandler_fn,errhandler,ierror) &
2024    BIND(C, name="ompi_win_create_errhandler_f")
2025    use, intrinsic :: iso_c_binding, only: c_funptr
2026    implicit none
2027    type(c_funptr), value :: win_errhandler_fn
2028    INTEGER, INTENT(OUT) :: errhandler
2029    INTEGER, INTENT(OUT) :: ierror
2030 end subroutine ompi_win_create_errhandler_f
2031 
2032 subroutine ompi_win_get_errhandler_f(win,errhandler,ierror) &
2033    BIND(C, name="ompi_win_get_errhandler_f")
2034    implicit none
2035    INTEGER, INTENT(IN) :: win
2036    INTEGER, INTENT(OUT) :: errhandler
2037    INTEGER, INTENT(OUT) :: ierror
2038 end subroutine ompi_win_get_errhandler_f
2039 
2040 subroutine ompi_win_set_errhandler_f(win,errhandler,ierror) &
2041    BIND(C, name="ompi_win_set_errhandler_f")
2042    implicit none
2043    INTEGER, INTENT(IN) :: win
2044    INTEGER, INTENT(IN) :: errhandler
2045    INTEGER, INTENT(OUT) :: ierror
2046 end subroutine ompi_win_set_errhandler_f
2047 
2048 subroutine ompi_info_create_f(info,ierror) &
2049    BIND(C, name="ompi_info_create_f")
2050    implicit none
2051    INTEGER, INTENT(OUT) :: info
2052    INTEGER, INTENT(OUT) :: ierror
2053 end subroutine ompi_info_create_f
2054 
2055 subroutine ompi_info_delete_f(info,key,ierror,key_len) &
2056    BIND(C, name="ompi_info_delete_f")
2057    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2058    implicit none
2059    INTEGER, INTENT(IN) :: info
2060    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key
2061    INTEGER, INTENT(OUT) :: ierror
2062    INTEGER, VALUE, INTENT(IN) :: key_len
2063 end subroutine ompi_info_delete_f
2064 
2065 subroutine ompi_info_dup_f(info,newinfo,ierror) &
2066    BIND(C, name="ompi_info_dup_f")
2067    implicit none
2068    INTEGER, INTENT(IN) :: info
2069    INTEGER, INTENT(OUT) :: newinfo
2070    INTEGER, INTENT(OUT) :: ierror
2071 end subroutine ompi_info_dup_f
2072 
2073 subroutine ompi_info_free_f(info,ierror) &
2074    BIND(C, name="ompi_info_free_f")
2075    implicit none
2076    INTEGER, INTENT(INOUT) :: info
2077    INTEGER, INTENT(OUT) :: ierror
2078 end subroutine ompi_info_free_f
2079 
2080 subroutine ompi_info_get_nkeys_f(info,nkeys,ierror) &
2081    BIND(C, name="ompi_info_get_nkeys_f")
2082    implicit none
2083    INTEGER, INTENT(IN) :: info
2084    INTEGER, INTENT(OUT) :: nkeys
2085    INTEGER, INTENT(OUT) :: ierror
2086 end subroutine ompi_info_get_nkeys_f
2087 
2088 subroutine ompi_info_get_nthkey_f(info,n,key,ierror,key_len) &
2089    BIND(C, name="ompi_info_get_nthkey_f")
2090    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2091    implicit none
2092    INTEGER, INTENT(IN) :: info
2093    INTEGER, INTENT(IN) :: n
2094    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: key
2095    INTEGER, INTENT(OUT) :: ierror
2096    INTEGER, VALUE, INTENT(IN) :: key_len
2097 end subroutine ompi_info_get_nthkey_f
2098 
2099 subroutine ompi_info_set_f(info,key,value,ierror,key_len,value_len) &
2100    BIND(C, name="ompi_info_set_f")
2101    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2102    implicit none
2103    INTEGER, INTENT(IN) :: info
2104    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key, value
2105    INTEGER, INTENT(OUT) :: ierror
2106    INTEGER, VALUE, INTENT(IN) :: key_len, value_len
2107 end subroutine ompi_info_set_f
2108 
2109 subroutine ompi_close_port_f(port_name,ierror,port_name_len) &
2110    BIND(C, name="ompi_close_port_f")
2111    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2112    implicit none
2113    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2114    INTEGER, INTENT(OUT) :: ierror
2115    INTEGER, VALUE, INTENT(IN) :: port_name_len
2116 end subroutine ompi_close_port_f
2117 
2118 subroutine ompi_comm_accept_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
2119    BIND(C, name="ompi_comm_accept_f")
2120    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2121    implicit none
2122    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2123    INTEGER, INTENT(IN) :: info
2124    INTEGER, INTENT(IN) :: root
2125    INTEGER, INTENT(IN) :: comm
2126    INTEGER, INTENT(OUT) :: newcomm
2127    INTEGER, INTENT(OUT) :: ierror
2128    INTEGER, VALUE, INTENT(IN) :: port_name_len
2129 end subroutine ompi_comm_accept_f
2130 
2131 subroutine ompi_comm_connect_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
2132    BIND(C, name="ompi_comm_connect_f")
2133    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2134    implicit none
2135    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
2136    INTEGER, INTENT(IN) :: info
2137    INTEGER, INTENT(IN) :: root
2138    INTEGER, INTENT(IN) :: comm
2139    INTEGER, INTENT(OUT) :: newcomm
2140    INTEGER, INTENT(OUT) :: ierror
2141    INTEGER, VALUE, INTENT(IN) :: port_name_len
2142 end subroutine ompi_comm_connect_f
2143 
2144 subroutine ompi_comm_disconnect_f(comm,ierror) &
2145    BIND(C, name="ompi_comm_disconnect_f")
2146    implicit none
2147    INTEGER, INTENT(INOUT) :: comm
2148    INTEGER, INTENT(OUT) :: ierror
2149 end subroutine ompi_comm_disconnect_f
2150 
2151 subroutine ompi_comm_get_parent_f(parent,ierror) &
2152    BIND(C, name="ompi_comm_get_parent_f")
2153    implicit none
2154    INTEGER, INTENT(OUT) :: parent
2155    INTEGER, INTENT(OUT) :: ierror
2156 end subroutine ompi_comm_get_parent_f
2157 
2158 subroutine ompi_comm_join_f(fd,intercomm,ierror) &
2159    BIND(C, name="ompi_comm_join_f")
2160    implicit none
2161    INTEGER, INTENT(IN) :: fd
2162    INTEGER, INTENT(OUT) :: intercomm
2163    INTEGER, INTENT(OUT) :: ierror
2164 end subroutine ompi_comm_join_f
2165 
2166 subroutine ompi_comm_spawn_f(command,argv,maxprocs,info,root,comm, &
2167                              intercomm, array_of_errcodes,ierror,cmd_len,argv_len) &
2168    BIND(C, name="ompi_comm_spawn_f")
2169    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2170    implicit none
2171    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: command, argv
2172    INTEGER, INTENT(IN) :: maxprocs, root
2173    INTEGER, INTENT(IN) :: info
2174    INTEGER, INTENT(IN) :: comm
2175    INTEGER, INTENT(OUT) :: intercomm
2176    INTEGER, INTENT(OUT) :: array_of_errcodes(*)
2177    INTEGER, INTENT(OUT) :: ierror
2178    INTEGER, VALUE, INTENT(IN) :: cmd_len, argv_len
2179 end subroutine ompi_comm_spawn_f
2180 
2181 
2182 ! TODO - FIXME to use arrays of strings and pass strlen
2183 subroutine ompi_comm_spawn_multiple_f(count,array_of_commands, &
2184                                       array_of_argv, array_of_maxprocs,array_of_info,root, &
2185                                       comm,intercomm,array_of_errcodes,ierror, &
2186                                       cmd_len, argv_len) &
2187    BIND(C, name="ompi_comm_spawn_multiple_f")
2188    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2189    implicit none
2190    INTEGER, INTENT(IN) :: count, root
2191    INTEGER, INTENT(IN) :: array_of_maxprocs(count)
2192    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: array_of_commands(*), array_of_argv(*)
2193    INTEGER, INTENT(IN) :: array_of_info(count)
2194    INTEGER, INTENT(IN) :: comm
2195    INTEGER, INTENT(OUT) :: intercomm
2196    INTEGER, INTENT(OUT) :: array_of_errcodes(*)
2197    INTEGER, INTENT(OUT) :: ierror
2198    INTEGER, VALUE, INTENT(IN) :: cmd_len, argv_len
2199 end subroutine ompi_comm_spawn_multiple_f
2200 
2201 subroutine ompi_lookup_name_f(service_name,info,port_name,ierror, &
2202                               service_name_len,port_name_len) &
2203    BIND(C, name="ompi_lookup_name_f")
2204    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2205    implicit none
2206    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name
2207    INTEGER, INTENT(IN) :: info
2208    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2209    INTEGER, INTENT(OUT) :: ierror
2210    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2211 end subroutine ompi_lookup_name_f
2212 
2213 subroutine ompi_open_port_f(info,port_name,ierror,port_name_len) &
2214    BIND(C, name="ompi_open_port_f")
2215    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2216    implicit none
2217    INTEGER, INTENT(IN) :: info
2218    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2219    INTEGER, INTENT(OUT) :: ierror
2220    INTEGER, VALUE, INTENT(IN) :: port_name_len
2221 end subroutine ompi_open_port_f
2222 
2223 subroutine ompi_publish_name_f(service_name,info,port_name,ierror, &
2224                                service_name_len,port_name_len) &
2225    BIND(C, name="ompi_publish_name_f")
2226    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2227    implicit none
2228    INTEGER, INTENT(IN) :: info
2229    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2230    INTEGER, INTENT(OUT) :: ierror
2231    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2232 end subroutine ompi_publish_name_f
2233 
2234 subroutine ompi_unpublish_name_f(service_name,info,port_name, &
2235                                  ierror,service_name_len,port_name_len) &
2236    BIND(C, name="ompi_unpublish_name_f")
2237    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2238    implicit none
2239    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2240    INTEGER, INTENT(IN) :: info
2241    INTEGER, INTENT(OUT) :: ierror
2242    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2243 end subroutine ompi_unpublish_name_f
2244 
2245 subroutine ompi_accumulate_f(origin_addr,origin_count,origin_datatype, &
2246                              target_rank,target_disp, &
2247                              target_count,target_datatype,op,win,ierror) &
2248    BIND(C, name="ompi_accumulate_f")
2249    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2250    implicit none
2251    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2252    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2253    INTEGER, INTENT(IN) :: origin_datatype
2254    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2255    INTEGER, INTENT(IN) :: target_datatype
2256    INTEGER, INTENT(IN) :: op
2257    INTEGER, INTENT(IN) :: win
2258    INTEGER, INTENT(OUT) :: ierror
2259 end subroutine ompi_accumulate_f
2260 
2261 subroutine ompi_raccumulate_f(origin_addr,origin_count,origin_datatype, &
2262                               target_rank,target_disp, &
2263                               target_count,target_datatype,op,win, &
2264                               request,ierror) &
2265    BIND(C, name="ompi_raccumulate_f")
2266    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2267    implicit none
2268    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2269    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2270    INTEGER, INTENT(IN) :: origin_datatype
2271    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2272    INTEGER, INTENT(IN) :: target_datatype
2273    INTEGER, INTENT(IN) :: op
2274    INTEGER, INTENT(IN) :: win
2275    INTEGER, INTENT(OUT) :: request
2276    INTEGER, INTENT(OUT) :: ierror
2277 end subroutine ompi_raccumulate_f
2278 
2279 subroutine ompi_get_f(origin_addr,origin_count,origin_datatype,target_rank, &
2280                       target_disp,target_count,target_datatype,win,ierror) &
2281    BIND(C, name="ompi_get_f")
2282    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2283    implicit none
2284    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2285    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2286    INTEGER, INTENT(IN) :: origin_datatype
2287    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2288    INTEGER, INTENT(IN) :: target_datatype
2289    INTEGER, INTENT(IN) :: win
2290    INTEGER, INTENT(OUT) :: ierror
2291 end subroutine ompi_get_f
2292 
2293 subroutine ompi_rget_f(origin_addr,origin_count,origin_datatype,target_rank, &
2294                        target_disp,target_count,target_datatype,win,request, &
2295                        ierror) &
2296    BIND(C, name="ompi_rget_f")
2297    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2298    implicit none
2299    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2300    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2301    INTEGER, INTENT(IN) :: origin_datatype
2302    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2303    INTEGER, INTENT(IN) :: target_datatype
2304    INTEGER, INTENT(IN) :: win
2305    INTEGER, INTENT(OUT) :: request
2306    INTEGER, INTENT(OUT) :: ierror
2307 end subroutine ompi_rget_f
2308 
2309 subroutine ompi_get_accumulate_f(origin_addr,origin_count,origin_datatype, &
2310                                  result_addr,result_count,result_datatype, &
2311                                  target_rank,target_disp, &
2312                                  target_count,target_datatype,op,win, &
2313                                  ierror) &
2314    BIND(C, name="ompi_get_accumulate_f")
2315    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2316    implicit none
2317    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2318    INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2319    INTEGER, INTENT(IN) :: origin_datatype
2320    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2321    INTEGER, INTENT(IN) :: result_datatype
2322    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2323    INTEGER, INTENT(IN) :: target_datatype
2324    INTEGER, INTENT(IN) :: op
2325    INTEGER, INTENT(IN) :: win
2326    INTEGER, INTENT(OUT) :: ierror
2327 end subroutine ompi_get_accumulate_f
2328 
2329 subroutine ompi_rget_accumulate_f(origin_addr,origin_count,origin_datatype, &
2330                                   result_addr,result_count,result_datatype, &
2331                                   target_rank,target_disp, &
2332                                   target_count,target_datatype,op,win, &
2333                                   request,ierror) &
2334    BIND(C, name="ompi_rget_accumulate_f")
2335    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2336    implicit none
2337    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2338    INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2339    INTEGER, INTENT(IN) :: origin_datatype
2340    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2341    INTEGER, INTENT(IN) :: result_datatype
2342    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2343    INTEGER, INTENT(IN) :: target_datatype
2344    INTEGER, INTENT(IN) :: op
2345    INTEGER, INTENT(IN) :: win
2346    INTEGER, INTENT(OUT) :: request
2347    INTEGER, INTENT(OUT) :: ierror
2348 end subroutine ompi_rget_accumulate_f
2349 
2350 subroutine ompi_put_f(origin_addr,origin_count,origin_datatype,target_rank, &
2351                       target_disp,target_count,target_datatype,win,ierror) &
2352    BIND(C, name="ompi_put_f")
2353    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2354    implicit none
2355    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2356    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2357    INTEGER, INTENT(IN) :: origin_datatype
2358    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2359    INTEGER, INTENT(IN) :: target_datatype
2360    INTEGER, INTENT(IN) :: win
2361    INTEGER, INTENT(OUT) :: ierror
2362 end subroutine ompi_put_f
2363 
2364 subroutine ompi_rput_f(origin_addr,origin_count,origin_datatype,target_rank, &
2365                        target_disp,target_count,target_datatype,win,request, &
2366                        ierror) &
2367    BIND(C, name="ompi_rput_f")
2368    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2369    implicit none
2370    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2371    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2372    INTEGER, INTENT(IN) :: origin_datatype
2373    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2374    INTEGER, INTENT(IN) :: target_datatype
2375    INTEGER, INTENT(IN) :: win
2376    INTEGER, INTENT(OUT) :: request
2377    INTEGER, INTENT(OUT) :: ierror
2378 end subroutine ompi_rput_f
2379 
2380 subroutine ompi_win_complete_f(win,ierror) &
2381    BIND(C, name="ompi_win_complete_f")
2382    implicit none
2383    INTEGER, INTENT(IN) :: win
2384    INTEGER, INTENT(OUT) :: ierror
2385 end subroutine ompi_win_complete_f
2386 
2387 subroutine ompi_compare_and_swap_f(origin_addr,compare_addr,result_addr, &
2388                                    datatype,target_rank,target_disp, win, &
2389                                    ierror) &
2390    BIND(C, name="ompi_compare_and_swap_f")
2391    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2392    implicit none
2393    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr, compare_addr
2394    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2395    INTEGER, INTENT(IN) :: datatype
2396    INTEGER, INTENT(IN) :: target_rank
2397    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2398    INTEGER, INTENT(IN) :: win
2399    INTEGER, INTENT(OUT) :: ierror
2400 end subroutine ompi_compare_and_swap_f
2401 
2402 subroutine ompi_fetch_and_op_f(origin_addr,result_addr,datatype,target_rank, &
2403                                target_disp,op,win,ierror) &
2404    BIND(C, name="ompi_fetch_and_op_f")
2405    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2406    implicit none
2407    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2408    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2409    INTEGER, INTENT(IN) :: datatype
2410    INTEGER, INTENT(IN) :: target_rank
2411    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2412    INTEGER, INTENT(IN) :: op
2413    INTEGER, INTENT(IN) :: win
2414    INTEGER, INTENT(OUT) :: ierror
2415 end subroutine ompi_fetch_and_op_f
2416 
2417 subroutine ompi_win_create_f(base,size,disp_unit,info,comm,win,ierror) &
2418    BIND(C, name="ompi_win_create_f")
2419    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2420    implicit none
2421    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2422    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
2423    INTEGER, INTENT(IN) :: disp_unit
2424    INTEGER, INTENT(IN) :: info
2425    INTEGER, INTENT(IN) :: comm
2426    INTEGER, INTENT(OUT) :: win
2427    INTEGER, INTENT(OUT) :: ierror
2428 end subroutine ompi_win_create_f
2429 
2430 subroutine ompi_win_create_dynamic_f(info,comm,win,ierror) &
2431    BIND(C, name="ompi_win_create_dynamic_f")
2432    implicit none
2433    INTEGER, INTENT(IN) :: info
2434    INTEGER, INTENT(IN) :: comm
2435    INTEGER, INTENT(OUT) :: win
2436    INTEGER, INTENT(OUT) :: ierror
2437 end subroutine ompi_win_create_dynamic_f
2438 
2439 subroutine ompi_win_attach_f(win,base,size,ierror) &
2440    BIND(C, name="ompi_win_attach_f")
2441    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2442    implicit none
2443    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2444    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
2445    INTEGER, INTENT(IN) :: win
2446    INTEGER, INTENT(OUT) :: ierror
2447 end subroutine ompi_win_attach_f
2448 
2449 subroutine ompi_win_detach_f(win,base,ierror) &
2450    BIND(C, name="ompi_win_detach_f")
2451    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2452    implicit none
2453    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2454    INTEGER, INTENT(IN) :: win
2455    INTEGER, INTENT(OUT) :: ierror
2456 end subroutine ompi_win_detach_f
2457 
2458 subroutine ompi_win_flush_f(rank,win,ierror) &
2459    BIND(C, name="ompi_win_flush_f")
2460    implicit none
2461    INTEGER, INTENT(IN) :: rank
2462    INTEGER, INTENT(IN) :: win
2463    INTEGER, INTENT(OUT) :: ierror
2464 end subroutine ompi_win_flush_f
2465 
2466 subroutine ompi_win_flush_all_f(win,ierror) &
2467    BIND(C, name="ompi_win_flush_all_f")
2468    implicit none
2469    INTEGER, INTENT(IN) :: win
2470    INTEGER, INTENT(OUT) :: ierror
2471 end subroutine ompi_win_flush_all_f
2472 
2473 subroutine ompi_win_flush_local_f(rank,win,ierror) &
2474    BIND(C, name="ompi_win_flush_local_f")
2475    implicit none
2476    INTEGER, INTENT(IN) :: rank
2477    INTEGER, INTENT(IN) :: win
2478    INTEGER, INTENT(OUT) :: ierror
2479 end subroutine ompi_win_flush_local_f
2480 
2481 subroutine ompi_win_flush_local_all_f(win,ierror) &
2482    BIND(C, name="ompi_win_flush_local_all_f")
2483    implicit none
2484    INTEGER, INTENT(IN) :: win
2485    INTEGER, INTENT(OUT) :: ierror
2486 end subroutine ompi_win_flush_local_all_f
2487 
2488 subroutine ompi_win_fence_f(assert,win,ierror) &
2489    BIND(C, name="ompi_win_fence_f")
2490    implicit none
2491    INTEGER, INTENT(IN) :: assert
2492    INTEGER, INTENT(IN) :: win
2493    INTEGER, INTENT(OUT) :: ierror
2494 end subroutine ompi_win_fence_f
2495 
2496 subroutine ompi_win_free_f(win,ierror) &
2497    BIND(C, name="ompi_win_free_f")
2498    implicit none
2499    INTEGER, INTENT(INOUT) :: win
2500    INTEGER, INTENT(OUT) :: ierror
2501 end subroutine ompi_win_free_f
2502 
2503 subroutine ompi_win_get_group_f(win,group,ierror) &
2504    BIND(C, name="ompi_win_get_group_f")
2505    implicit none
2506    INTEGER, INTENT(IN) :: win
2507    INTEGER, INTENT(OUT) :: group
2508    INTEGER, INTENT(OUT) :: ierror
2509 end subroutine ompi_win_get_group_f
2510 
2511 subroutine ompi_win_get_info_f(comm,info,ierror) &
2512    BIND(C, name="ompi_win_get_info_f")
2513    implicit none
2514    INTEGER, INTENT(IN) :: comm
2515    INTEGER, INTENT(OUT) :: info
2516    INTEGER, INTENT(OUT) :: ierror
2517 end subroutine ompi_win_get_info_f
2518 
2519 subroutine ompi_win_lock_f(lock_type,rank,assert,win,ierror) &
2520    BIND(C, name="ompi_win_lock_f")
2521    implicit none
2522    INTEGER, INTENT(IN) :: lock_type, rank, assert
2523    INTEGER, INTENT(IN) :: win
2524    INTEGER, INTENT(OUT) :: ierror
2525 end subroutine ompi_win_lock_f
2526 
2527 subroutine ompi_win_lock_all_f(assert,win,ierror) &
2528    BIND(C, name="ompi_win_lock_all_f")
2529    implicit none
2530    INTEGER, INTENT(IN) :: assert
2531    INTEGER, INTENT(IN) :: win
2532    INTEGER, INTENT(OUT) :: ierror
2533 end subroutine ompi_win_lock_all_f
2534 
2535 subroutine ompi_win_post_f(group,assert,win,ierror) &
2536    BIND(C, name="ompi_win_post_f")
2537    implicit none
2538    INTEGER, INTENT(IN) :: group
2539    INTEGER, INTENT(IN) :: assert
2540    INTEGER, INTENT(IN) :: win
2541    INTEGER, INTENT(OUT) :: ierror
2542 end subroutine ompi_win_post_f
2543 
2544 subroutine ompi_win_set_info_f(comm,info,ierror) &
2545    BIND(C, name="ompi_win_set_info_f")
2546    implicit none
2547    INTEGER, INTENT(IN) :: comm
2548    INTEGER, INTENT(IN) :: info
2549    INTEGER, INTENT(OUT) :: ierror
2550 end subroutine ompi_win_set_info_f
2551 
2552 subroutine ompi_win_shared_query_f(win, rank, size, disp_unit, baseptr,&
2553       ierror) BIND(C, name="ompi_win_shared_query_f")
2554   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
2555   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2556   INTEGER, INTENT(IN) ::  win
2557   INTEGER, INTENT(IN) ::  rank
2558   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) ::  size
2559   INTEGER, INTENT(OUT) ::  disp_unit
2560   TYPE(C_PTR), INTENT(OUT) ::  baseptr
2561   INTEGER, INTENT(OUT) ::  ierror
2562 end subroutine ompi_win_shared_query_f
2563 
2564 subroutine ompi_win_start_f(group,assert,win,ierror) &
2565    BIND(C, name="ompi_win_start_f")
2566    implicit none
2567    INTEGER, INTENT(IN) :: group
2568    INTEGER, INTENT(IN) :: assert
2569    INTEGER, INTENT(IN) :: win
2570    INTEGER, INTENT(OUT) :: ierror
2571 end subroutine ompi_win_start_f
2572 
2573 subroutine ompi_win_sync_f(win,ierror) &
2574    BIND(C, name="ompi_win_sync_f")
2575    implicit none
2576    INTEGER, INTENT(IN) :: win
2577    INTEGER, INTENT(OUT) :: ierror
2578 end subroutine ompi_win_sync_f
2579 
2580 subroutine ompi_win_unlock_f(rank,win,ierror) &
2581    BIND(C, name="ompi_win_unlock_f")
2582    implicit none
2583    INTEGER, INTENT(IN) :: rank
2584    INTEGER, INTENT(IN) :: win
2585    INTEGER, INTENT(OUT) :: ierror
2586 end subroutine ompi_win_unlock_f
2587 
2588 subroutine ompi_win_unlock_all_f(win,ierror) &
2589    BIND(C, name="ompi_win_unlock_all_f")
2590    implicit none
2591    INTEGER, INTENT(IN) :: win
2592    INTEGER, INTENT(OUT) :: ierror
2593 end subroutine ompi_win_unlock_all_f
2594 
2595 subroutine ompi_win_wait_f(win,ierror) &
2596    BIND(C, name="ompi_win_wait_f")
2597    implicit none
2598    INTEGER, INTENT(IN) :: win
2599    INTEGER, INTENT(OUT) :: ierror
2600 end subroutine ompi_win_wait_f
2601 
2602 subroutine ompi_grequest_complete_f(request,ierror) &
2603    BIND(C, name="ompi_grequest_complete_f")
2604    implicit none
2605    INTEGER, INTENT(IN) :: request
2606    INTEGER, INTENT(OUT) :: ierror
2607 end subroutine ompi_grequest_complete_f
2608 
2609 subroutine ompi_grequest_start_f(query_fn,free_fn,cancel_fn, &
2610                                  extra_state,request,ierror) &
2611    BIND(C, name="ompi_grequest_start_f")
2612    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2613    use, intrinsic :: iso_c_binding, only: c_funptr
2614    implicit none
2615    type(c_funptr), value :: query_fn
2616    type(c_funptr), value :: free_fn
2617    type(c_funptr), value :: cancel_fn
2618    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
2619    INTEGER, INTENT(OUT) :: request
2620    INTEGER, INTENT(OUT) :: ierror
2621 end subroutine ompi_grequest_start_f
2622 
2623 subroutine ompi_init_thread_f(required,provided,ierror) &
2624    BIND(C, name="ompi_init_thread_f")
2625    implicit none
2626    INTEGER, INTENT(IN) :: required
2627    INTEGER, INTENT(OUT) :: provided
2628    INTEGER, INTENT(OUT) :: ierror
2629 end subroutine ompi_init_thread_f
2630 
2631 subroutine ompi_query_thread_f(provided,ierror) &
2632    BIND(C, name="ompi_query_thread_f")
2633    implicit none
2634    INTEGER, INTENT(OUT) :: provided
2635    INTEGER, INTENT(OUT) :: ierror
2636 end subroutine ompi_query_thread_f
2637 
2638 subroutine ompi_status_set_elements_f(status,datatype,count,ierror) &
2639    BIND(C, name="ompi_status_set_elements_f")
2640    use :: mpi_f08_types, only : MPI_Status
2641    implicit none
2642    TYPE(MPI_Status), INTENT(INOUT) :: status
2643    INTEGER, INTENT(IN) :: datatype
2644    INTEGER, INTENT(IN) :: count
2645    INTEGER, INTENT(OUT) :: ierror
2646 end subroutine ompi_status_set_elements_f
2647 
2648 subroutine ompi_status_set_elements_x_f(status,datatype,count,ierror) &
2649    BIND(C, name="ompi_status_set_elements_x_f")
2650    use :: mpi_f08_types, only : MPI_Status, MPI_COUNT_KIND
2651    implicit none
2652    TYPE(MPI_Status), INTENT(INOUT) :: status
2653    INTEGER, INTENT(IN) :: datatype
2654    INTEGER(MPI_COUNT_KIND), INTENT(IN) :: count
2655    INTEGER, INTENT(OUT) :: ierror
2656 end subroutine ompi_status_set_elements_x_f
2657 
2658 subroutine ompi_file_close_f(fh,ierror) &
2659    BIND(C, name="ompi_file_close_f")
2660    implicit none
2661    INTEGER, INTENT(INOUT) :: fh
2662    INTEGER, INTENT(OUT) :: ierror
2663 end subroutine ompi_file_close_f
2664 
2665 subroutine ompi_file_delete_f(filename,info,ierror,filename_len) &
2666    BIND(C, name="ompi_file_delete_f")
2667    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2668    implicit none
2669    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2670    INTEGER, INTENT(IN) :: info
2671    INTEGER, INTENT(OUT) :: ierror
2672    INTEGER, VALUE, INTENT(IN) :: filename_len
2673 end subroutine ompi_file_delete_f
2674 
2675 subroutine ompi_file_get_amode_f(fh,amode,ierror) &
2676    BIND(C, name="ompi_file_get_amode_f")
2677    implicit none
2678    INTEGER, INTENT(IN) :: fh
2679    INTEGER, INTENT(OUT) :: amode
2680    INTEGER, INTENT(OUT) :: ierror
2681 end subroutine ompi_file_get_amode_f
2682 
2683 subroutine ompi_file_get_byte_offset_f(fh,offset,disp,ierror) &
2684    BIND(C, name="ompi_file_get_byte_offset_f")
2685    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2686    implicit none
2687    INTEGER, INTENT(IN) :: fh
2688    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2689    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2690    INTEGER, INTENT(OUT) :: ierror
2691 end subroutine ompi_file_get_byte_offset_f
2692 
2693 subroutine ompi_file_get_group_f(fh,group,ierror) &
2694    BIND(C, name="ompi_file_get_group_f")
2695    implicit none
2696    INTEGER, INTENT(IN) :: fh
2697    INTEGER, INTENT(OUT) :: group
2698    INTEGER, INTENT(OUT) :: ierror
2699 end subroutine ompi_file_get_group_f
2700 
2701 subroutine ompi_file_get_info_f(fh,info_used,ierror) &
2702    BIND(C, name="ompi_file_get_info_f")
2703    implicit none
2704    INTEGER, INTENT(IN) :: fh
2705    INTEGER, INTENT(OUT) :: info_used
2706    INTEGER, INTENT(OUT) :: ierror
2707 end subroutine ompi_file_get_info_f
2708 
2709 subroutine ompi_file_get_position_f(fh,offset,ierror) &
2710    BIND(C, name="ompi_file_get_position_f")
2711    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2712    implicit none
2713    INTEGER, INTENT(IN) :: fh
2714    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2715    INTEGER, INTENT(OUT) :: ierror
2716 end subroutine ompi_file_get_position_f
2717 
2718 subroutine ompi_file_get_position_shared_f(fh,offset,ierror) &
2719    BIND(C, name="ompi_file_get_position_shared_f")
2720    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2721    implicit none
2722    INTEGER, INTENT(IN) :: fh
2723    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2724    INTEGER, INTENT(OUT) :: ierror
2725 end subroutine ompi_file_get_position_shared_f
2726 
2727 subroutine ompi_file_get_size_f(fh,size,ierror) &
2728    BIND(C, name="ompi_file_get_size_f")
2729    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2730    implicit none
2731    INTEGER, INTENT(IN) :: fh
2732    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: size
2733    INTEGER, INTENT(OUT) :: ierror
2734 end subroutine ompi_file_get_size_f
2735 
2736 subroutine ompi_file_get_type_extent_f(fh,datatype,extent,ierror) &
2737    BIND(C, name="ompi_file_get_type_extent_f")
2738    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2739    implicit none
2740    INTEGER, INTENT(IN) :: fh
2741    INTEGER, INTENT(IN) :: datatype
2742    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: extent
2743    INTEGER, INTENT(OUT) :: ierror
2744 end subroutine ompi_file_get_type_extent_f
2745 
2746 subroutine ompi_file_get_view_f(fh,disp,etype,filetype,datarep,ierror,datarep_len) &
2747    BIND(C, name="ompi_file_get_view_f")
2748    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2749    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2750    implicit none
2751    INTEGER, INTENT(IN) :: fh
2752    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2753    INTEGER, INTENT(OUT) :: etype
2754    INTEGER, INTENT(OUT) :: filetype
2755    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: datarep
2756    INTEGER, INTENT(OUT) :: ierror
2757    INTEGER, VALUE, INTENT(IN) :: datarep_len
2758 end subroutine ompi_file_get_view_f
2759 
2760 subroutine ompi_file_iread_f(fh,buf,count,datatype,request,ierror) &
2761    BIND(C, name="ompi_file_iread_f")
2762    implicit none
2763    INTEGER, INTENT(IN) :: fh
2764    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2765    INTEGER, INTENT(IN) :: count
2766    INTEGER, INTENT(IN) :: datatype
2767    INTEGER, INTENT(OUT) :: request
2768    INTEGER, INTENT(OUT) :: ierror
2769 end subroutine ompi_file_iread_f
2770 
2771 subroutine ompi_file_iread_at_f(fh,offset,buf,count,datatype,request,ierror) &
2772    BIND(C, name="ompi_file_iread_at_f")
2773    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2774    implicit none
2775    INTEGER, INTENT(IN) :: fh
2776    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2777    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2778    INTEGER, INTENT(IN) :: count
2779    INTEGER, INTENT(IN) :: datatype
2780    INTEGER, INTENT(OUT) :: request
2781    INTEGER, INTENT(OUT) :: ierror
2782 end subroutine ompi_file_iread_at_f
2783 
2784 subroutine ompi_file_iread_all_f(fh,buf,count,datatype,request,ierror) &
2785    BIND(C, name="ompi_file_iread_all_f")
2786    implicit none
2787    INTEGER, INTENT(IN) :: fh
2788    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2789    INTEGER, INTENT(IN) :: count
2790    INTEGER, INTENT(IN) :: datatype
2791    INTEGER, INTENT(OUT) :: request
2792    INTEGER, INTENT(OUT) :: ierror
2793 end subroutine ompi_file_iread_all_f
2794 
2795 subroutine ompi_file_iread_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2796    BIND(C, name="ompi_file_iread_at_all_f")
2797    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2798    implicit none
2799    INTEGER, INTENT(IN) :: fh
2800    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2801    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2802    INTEGER, INTENT(IN) :: count
2803    INTEGER, INTENT(IN) :: datatype
2804    INTEGER, INTENT(OUT) :: request
2805    INTEGER, INTENT(OUT) :: ierror
2806 end subroutine ompi_file_iread_at_all_f
2807 
2808 subroutine ompi_file_iread_shared_f(fh,buf,count,datatype,request,ierror) &
2809    BIND(C, name="ompi_file_iread_shared_f")
2810    implicit none
2811    INTEGER, INTENT(IN) :: fh
2812    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2813    INTEGER, INTENT(IN) :: count
2814    INTEGER, INTENT(IN) :: datatype
2815    INTEGER, INTENT(OUT) :: request
2816    INTEGER, INTENT(OUT) :: ierror
2817 end subroutine ompi_file_iread_shared_f
2818 
2819 subroutine ompi_file_iwrite_f(fh,buf,count,datatype,request,ierror) &
2820    BIND(C, name="ompi_file_iwrite_f")
2821    implicit none
2822    INTEGER, INTENT(IN) :: fh
2823    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2824    INTEGER, INTENT(IN) :: count
2825    INTEGER, INTENT(IN) :: datatype
2826    INTEGER, INTENT(OUT) :: request
2827    INTEGER, INTENT(OUT) :: ierror
2828 end subroutine ompi_file_iwrite_f
2829 
2830 subroutine ompi_file_iwrite_at_f(fh,offset,buf,count,datatype,request,ierror) &
2831    BIND(C, name="ompi_file_iwrite_at_f")
2832    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2833    implicit none
2834    INTEGER, INTENT(IN) :: fh
2835    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2836    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2837    INTEGER, INTENT(IN) :: count
2838    INTEGER, INTENT(IN) :: datatype
2839    INTEGER, INTENT(OUT) :: request
2840    INTEGER, INTENT(OUT) :: ierror
2841 end subroutine ompi_file_iwrite_at_f
2842 
2843 subroutine ompi_file_iwrite_all_f(fh,buf,count,datatype,request,ierror) &
2844    BIND(C, name="ompi_file_iwrite_all_f")
2845    implicit none
2846    INTEGER, INTENT(IN) :: fh
2847    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2848    INTEGER, INTENT(IN) :: count
2849    INTEGER, INTENT(IN) :: datatype
2850    INTEGER, INTENT(OUT) :: request
2851    INTEGER, INTENT(OUT) :: ierror
2852 end subroutine ompi_file_iwrite_all_f
2853 
2854 subroutine ompi_file_iwrite_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2855    BIND(C, name="ompi_file_iwrite_at_all_f")
2856    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2857    implicit none
2858    INTEGER, INTENT(IN) :: fh
2859    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2860    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2861    INTEGER, INTENT(IN) :: count
2862    INTEGER, INTENT(IN) :: datatype
2863    INTEGER, INTENT(OUT) :: request
2864    INTEGER, INTENT(OUT) :: ierror
2865 end subroutine ompi_file_iwrite_at_all_f
2866 
2867 subroutine ompi_file_iwrite_shared_f(fh,buf,count,datatype,request,ierror) &
2868    BIND(C, name="ompi_file_iwrite_shared_f")
2869    implicit none
2870    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2871    INTEGER, INTENT(IN) :: fh
2872    INTEGER, INTENT(IN) :: count
2873    INTEGER, INTENT(IN) :: datatype
2874    INTEGER, INTENT(OUT) :: request
2875    INTEGER, INTENT(OUT) :: ierror
2876 end subroutine ompi_file_iwrite_shared_f
2877 
2878 subroutine ompi_file_open_f(comm,filename,amode,info,fh,ierror,filename_len) &
2879    BIND(C, name="ompi_file_open_f")
2880    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2881    implicit none
2882    INTEGER, INTENT(IN) :: comm
2883    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2884    INTEGER, INTENT(IN) :: amode
2885    INTEGER, INTENT(IN) :: info
2886    INTEGER, INTENT(OUT) :: fh
2887    INTEGER, INTENT(OUT) :: ierror
2888    INTEGER, VALUE, INTENT(IN) :: filename_len
2889 end subroutine ompi_file_open_f
2890 
2891 subroutine ompi_file_preallocate_f(fh,size,ierror) &
2892    BIND(C, name="ompi_file_preallocate_f")
2893    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2894    implicit none
2895    INTEGER, INTENT(IN) :: fh
2896    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
2897    INTEGER, INTENT(OUT) :: ierror
2898 end subroutine ompi_file_preallocate_f
2899 
2900 subroutine ompi_file_read_f(fh,buf,count,datatype,status,ierror) &
2901    BIND(C, name="ompi_file_read_f")
2902    use :: mpi_f08_types, only : MPI_Status
2903    implicit none
2904    INTEGER, INTENT(IN) :: fh
2905    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2906    INTEGER, INTENT(IN) :: count
2907    INTEGER, INTENT(IN) :: datatype
2908    TYPE(MPI_Status), INTENT(OUT) :: status
2909    INTEGER, INTENT(OUT) :: ierror
2910 end subroutine ompi_file_read_f
2911 
2912 subroutine ompi_file_read_all_f(fh,buf,count,datatype,status,ierror) &
2913    BIND(C, name="ompi_file_read_all_f")
2914    use :: mpi_f08_types, only : MPI_Status
2915    implicit none
2916    INTEGER, INTENT(IN) :: fh
2917    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2918    INTEGER, INTENT(IN) :: count
2919    INTEGER, INTENT(IN) :: datatype
2920    TYPE(MPI_Status), INTENT(OUT) :: status
2921    INTEGER, INTENT(OUT) :: ierror
2922 end subroutine ompi_file_read_all_f
2923 
2924 subroutine ompi_file_read_all_begin_f(fh,buf,count,datatype,ierror) &
2925    BIND(C, name="ompi_file_read_all_begin_f")
2926    implicit none
2927    INTEGER, INTENT(IN) :: fh
2928    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2929    INTEGER, INTENT(IN) :: count
2930    INTEGER, INTENT(IN) :: datatype
2931    INTEGER, INTENT(OUT) :: ierror
2932 end subroutine ompi_file_read_all_begin_f
2933 
2934 subroutine ompi_file_read_all_end_f(fh,buf,status,ierror) &
2935    BIND(C, name="ompi_file_read_all_end_f")
2936    use :: mpi_f08_types, only : MPI_Status
2937    implicit none
2938    INTEGER, INTENT(IN) :: fh
2939    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2940    TYPE(MPI_Status), INTENT(OUT) :: status
2941    INTEGER, INTENT(OUT) :: ierror
2942 end subroutine ompi_file_read_all_end_f
2943 
2944 subroutine ompi_file_read_at_f(fh,offset,buf,count,datatype,status,ierror) &
2945    BIND(C, name="ompi_file_read_at_f")
2946    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2947    implicit none
2948    INTEGER, INTENT(IN) :: fh
2949    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2950    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2951    INTEGER, INTENT(IN) :: count
2952    INTEGER, INTENT(IN) :: datatype
2953    TYPE(MPI_Status), INTENT(OUT) :: status
2954    INTEGER, INTENT(OUT) :: ierror
2955 end subroutine ompi_file_read_at_f
2956 
2957 subroutine ompi_file_read_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
2958    BIND(C, name="ompi_file_read_at_all_f")
2959    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2960    implicit none
2961    INTEGER, INTENT(IN) :: fh
2962    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2963    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2964    INTEGER, INTENT(IN) :: count
2965    INTEGER, INTENT(IN) :: datatype
2966    TYPE(MPI_Status), INTENT(OUT) :: status
2967    INTEGER, INTENT(OUT) :: ierror
2968 end subroutine ompi_file_read_at_all_f
2969 
2970 subroutine ompi_file_read_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
2971    BIND(C, name="ompi_file_read_at_all_begin_f")
2972    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2973    implicit none
2974    INTEGER, INTENT(IN) :: fh
2975    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2976    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2977    INTEGER, INTENT(IN) :: count
2978    INTEGER, INTENT(IN) :: datatype
2979    INTEGER, INTENT(OUT) :: ierror
2980 end subroutine ompi_file_read_at_all_begin_f
2981 
2982 subroutine ompi_file_read_at_all_end_f(fh,buf,status,ierror) &
2983    BIND(C, name="ompi_file_read_at_all_end_f")
2984    use :: mpi_f08_types, only : MPI_Status
2985    implicit none
2986    INTEGER, INTENT(IN) :: fh
2987    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2988    TYPE(MPI_Status), INTENT(OUT) :: status
2989    INTEGER, INTENT(OUT) :: ierror
2990 end subroutine ompi_file_read_at_all_end_f
2991 
2992 subroutine ompi_file_read_ordered_f(fh,buf,count,datatype,status,ierror) &
2993    BIND(C, name="ompi_file_read_ordered_f")
2994    use :: mpi_f08_types, only : MPI_Status
2995    implicit none
2996    INTEGER, INTENT(IN) :: fh
2997    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2998    INTEGER, INTENT(IN) :: count
2999    INTEGER, INTENT(IN) :: datatype
3000    TYPE(MPI_Status), INTENT(OUT) :: status
3001    INTEGER, INTENT(OUT) :: ierror
3002 end subroutine ompi_file_read_ordered_f
3003 
3004 subroutine ompi_file_read_ordered_begin_f(fh,buf,count,datatype,ierror) &
3005    BIND(C, name="ompi_file_read_ordered_begin_f")
3006    implicit none
3007    INTEGER, INTENT(IN) :: fh
3008    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3009    INTEGER, INTENT(IN) :: count
3010    INTEGER, INTENT(IN) :: datatype
3011    INTEGER, INTENT(OUT) :: ierror
3012 end subroutine ompi_file_read_ordered_begin_f
3013 
3014 subroutine ompi_file_read_ordered_end_f(fh,buf,status,ierror) &
3015    BIND(C, name="ompi_file_read_ordered_end_f")
3016    use :: mpi_f08_types, only : MPI_Status
3017    implicit none
3018    INTEGER, INTENT(IN) :: fh
3019    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3020    TYPE(MPI_Status), INTENT(OUT) :: status
3021    INTEGER, INTENT(OUT) :: ierror
3022 end subroutine ompi_file_read_ordered_end_f
3023 
3024 subroutine ompi_file_read_shared_f(fh,buf,count,datatype,status,ierror) &
3025    BIND(C, name="ompi_file_read_shared_f")
3026    use :: mpi_f08_types, only : MPI_Status
3027    implicit none
3028    INTEGER, INTENT(IN) :: fh
3029    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3030    INTEGER, INTENT(IN) :: count
3031    INTEGER, INTENT(IN) :: datatype
3032    TYPE(MPI_Status), INTENT(OUT) :: status
3033    INTEGER, INTENT(OUT) :: ierror
3034 end subroutine ompi_file_read_shared_f
3035 
3036 subroutine ompi_file_seek_f(fh,offset,whence,ierror) &
3037    BIND(C, name="ompi_file_seek_f")
3038    use :: mpi_f08_types, only : MPI_OFFSET_KIND
3039    implicit none
3040    INTEGER, INTENT(IN) :: fh
3041    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3042    INTEGER, INTENT(IN) :: whence
3043    INTEGER, INTENT(OUT) :: ierror
3044 end subroutine ompi_file_seek_f
3045 
3046 subroutine ompi_file_seek_shared_f(fh,offset,whence,ierror) &
3047    BIND(C, name="ompi_file_seek_shared_f")
3048    use :: mpi_f08_types, only : MPI_OFFSET_KIND
3049    implicit none
3050    INTEGER, INTENT(IN) :: fh
3051    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3052    INTEGER, INTENT(IN) :: whence
3053    INTEGER, INTENT(OUT) :: ierror
3054 end subroutine ompi_file_seek_shared_f
3055 
3056 subroutine ompi_file_set_info_f(fh,info,ierror) &
3057    BIND(C, name="ompi_file_set_info_f")
3058    implicit none
3059    INTEGER, INTENT(IN) :: fh
3060    INTEGER, INTENT(IN) :: info
3061    INTEGER, INTENT(OUT) :: ierror
3062 end subroutine ompi_file_set_info_f
3063 
3064 subroutine ompi_file_set_size_f(fh,size,ierror) &
3065    BIND(C, name="ompi_file_set_size_f")
3066    use :: mpi_f08_types, only : MPI_OFFSET_KIND
3067    implicit none
3068    INTEGER, INTENT(IN) :: fh
3069    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
3070    INTEGER, INTENT(OUT) :: ierror
3071 end subroutine ompi_file_set_size_f
3072 
3073 subroutine ompi_file_set_view_f(fh,disp,etype,filetype,datarep,info,ierror,datarep_len) &
3074    BIND(C, name="ompi_file_set_view_f")
3075    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3076    use :: mpi_f08_types, only : MPI_OFFSET_KIND
3077    implicit none
3078    INTEGER, INTENT(IN) :: fh
3079    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: disp
3080    INTEGER, INTENT(IN) :: etype
3081    INTEGER, INTENT(IN) :: filetype
3082    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
3083    INTEGER, INTENT(IN) :: info
3084    INTEGER, INTENT(OUT) :: ierror
3085    INTEGER, VALUE, INTENT(IN) :: datarep_len
3086 end subroutine ompi_file_set_view_f
3087 
3088 subroutine ompi_file_sync_f(fh,ierror) &
3089    BIND(C, name="ompi_file_sync_f")
3090    implicit none
3091    INTEGER, INTENT(IN) :: fh
3092    INTEGER, INTENT(OUT) :: ierror
3093 end subroutine ompi_file_sync_f
3094 
3095 subroutine ompi_file_write_f(fh,buf,count,datatype,status,ierror) &
3096    BIND(C, name="ompi_file_write_f")
3097    use :: mpi_f08_types, only : MPI_Status
3098    implicit none
3099    INTEGER, INTENT(IN) :: fh
3100    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3101    INTEGER, INTENT(IN) :: count
3102    INTEGER, INTENT(IN) :: datatype
3103    TYPE(MPI_Status), INTENT(OUT) :: status
3104    INTEGER, INTENT(OUT) :: ierror
3105 end subroutine ompi_file_write_f
3106 
3107 subroutine ompi_file_write_all_f(fh,buf,count,datatype,status,ierror) &
3108    BIND(C, name="ompi_file_write_all_f")
3109    use :: mpi_f08_types, only : MPI_Status
3110    implicit none
3111    INTEGER, INTENT(IN) :: fh
3112    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3113    INTEGER, INTENT(IN) :: count
3114    INTEGER, INTENT(IN) :: datatype
3115    TYPE(MPI_Status), INTENT(OUT) :: status
3116    INTEGER, INTENT(OUT) :: ierror
3117 end subroutine ompi_file_write_all_f
3118 
3119 subroutine ompi_file_write_all_begin_f(fh,buf,count,datatype,ierror) &
3120    BIND(C, name="ompi_file_write_all_begin_f")
3121    implicit none
3122    INTEGER, INTENT(IN) :: fh
3123    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3124    INTEGER, INTENT(IN) :: count
3125    INTEGER, INTENT(IN) :: datatype
3126    INTEGER, INTENT(OUT) :: ierror
3127 end subroutine ompi_file_write_all_begin_f
3128 
3129 subroutine ompi_file_write_all_end_f(fh,buf,status,ierror) &
3130    BIND(C, name="ompi_file_write_all_end_f")
3131    use :: mpi_f08_types, only : MPI_Status
3132    implicit none
3133    INTEGER, INTENT(IN) :: fh
3134    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3135    TYPE(MPI_Status), INTENT(OUT) :: status
3136    INTEGER, INTENT(OUT) :: ierror
3137 end subroutine ompi_file_write_all_end_f
3138 
3139 subroutine ompi_file_write_at_f(fh,offset,buf,count,datatype,status,ierror) &
3140    BIND(C, name="ompi_file_write_at_f")
3141    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
3142    implicit none
3143    INTEGER, INTENT(IN) :: fh
3144    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3145    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3146    INTEGER, INTENT(IN) :: count
3147    INTEGER, INTENT(IN) :: datatype
3148    TYPE(MPI_Status), INTENT(OUT) :: status
3149    INTEGER, INTENT(OUT) :: ierror
3150 end subroutine ompi_file_write_at_f
3151 
3152 subroutine ompi_file_write_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
3153    BIND(C, name="ompi_file_write_at_all_f")
3154    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
3155    implicit none
3156    INTEGER, INTENT(IN) :: fh
3157    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3158    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3159    INTEGER, INTENT(IN) :: count
3160    INTEGER, INTENT(IN) :: datatype
3161    TYPE(MPI_Status), INTENT(OUT) :: status
3162    INTEGER, INTENT(OUT) :: ierror
3163 end subroutine ompi_file_write_at_all_f
3164 
3165 subroutine ompi_file_write_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
3166    BIND(C, name="ompi_file_write_at_all_begin_f")
3167    use :: mpi_f08_types, only : MPI_OFFSET_KIND
3168    implicit none
3169    INTEGER, INTENT(IN) :: fh
3170    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
3171    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3172    INTEGER, INTENT(IN) :: count
3173    INTEGER, INTENT(IN) :: datatype
3174    INTEGER, INTENT(OUT) :: ierror
3175 end subroutine ompi_file_write_at_all_begin_f
3176 
3177 subroutine ompi_file_write_at_all_end_f(fh,buf,status,ierror) &
3178    BIND(C, name="ompi_file_write_at_all_end_f")
3179    use :: mpi_f08_types, only : MPI_Status
3180    implicit none
3181    INTEGER, INTENT(IN) :: fh
3182    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3183    TYPE(MPI_Status), INTENT(OUT) :: status
3184    INTEGER, INTENT(OUT) :: ierror
3185 end subroutine ompi_file_write_at_all_end_f
3186 
3187 subroutine ompi_file_write_ordered_f(fh,buf,count,datatype,status,ierror) &
3188    BIND(C, name="ompi_file_write_ordered_f")
3189    use :: mpi_f08_types, only : MPI_Status
3190    implicit none
3191    INTEGER, INTENT(IN) :: fh
3192    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3193    INTEGER, INTENT(IN) :: count
3194    INTEGER, INTENT(IN) :: datatype
3195    TYPE(MPI_Status), INTENT(OUT) :: status
3196    INTEGER, INTENT(OUT) :: ierror
3197 end subroutine ompi_file_write_ordered_f
3198 
3199 subroutine ompi_file_write_ordered_begin_f(fh,buf,count,datatype,ierror) &
3200    BIND(C, name="ompi_file_write_ordered_begin_f")
3201    implicit none
3202    INTEGER, INTENT(IN) :: fh
3203    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3204    INTEGER, INTENT(IN) :: count
3205    INTEGER, INTENT(IN) :: datatype
3206    INTEGER, INTENT(OUT) :: ierror
3207 end subroutine ompi_file_write_ordered_begin_f
3208 
3209 subroutine ompi_file_write_ordered_end_f(fh,buf,status,ierror) &
3210    BIND(C, name="ompi_file_write_ordered_end_f")
3211    use :: mpi_f08_types, only : MPI_Status
3212    implicit none
3213    INTEGER, INTENT(IN) :: fh
3214    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3215    TYPE(MPI_Status), INTENT(OUT) :: status
3216    INTEGER, INTENT(OUT) :: ierror
3217 end subroutine ompi_file_write_ordered_end_f
3218 
3219 subroutine ompi_file_write_shared_f(fh,buf,count,datatype,status,ierror) &
3220    BIND(C, name="ompi_file_write_shared_f")
3221    use :: mpi_f08_types, only : MPI_Status
3222    implicit none
3223    INTEGER, INTENT(IN) :: fh
3224    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
3225    INTEGER, INTENT(IN) :: count
3226    INTEGER, INTENT(IN) :: datatype
3227    TYPE(MPI_Status), INTENT(OUT) :: status
3228    INTEGER, INTENT(OUT) :: ierror
3229 end subroutine ompi_file_write_shared_f
3230 
3231 subroutine ompi_register_datarep_f(datarep,read_conversion_fn, &
3232                                    write_conversion_fn,dtype_file_extent_fn, &
3233                                    extra_state,ierror,datarep_len) &
3234    BIND(C, name="ompi_register_datarep_f")
3235    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3236    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
3237    use, intrinsic :: iso_c_binding, only: c_funptr
3238    implicit none
3239    type(c_funptr), value :: read_conversion_fn
3240    type(c_funptr), value :: write_conversion_fn
3241    type(c_funptr), value :: dtype_file_extent_fn
3242    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
3243    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
3244    INTEGER, INTENT(OUT) :: ierror
3245    INTEGER, VALUE, INTENT(IN) :: datarep_len
3246 end subroutine ompi_register_datarep_f
3247 
3248 !
3249 ! MPI_Sizeof is generic for numeric types.  This ignore TKR interface
3250 ! is replaced by the specific generics.
3251 !
3252 !subroutine ompi_sizeof(x,size,ierror) &
3253 !   BIND(C, name="ompi_sizeof_f")
3254 !   implicit none
3255 !   OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: x
3256 !   INTEGER, INTENT(OUT) :: size
3257 !   INTEGER, INTENT(OUT) :: ierror
3258 !end subroutine ompi_sizeof
3259 
3260 subroutine ompi_type_create_f90_complex_f(p,r,newtype,ierror) &
3261    BIND(C, name="ompi_type_create_f90_complex_f")
3262    implicit none
3263    INTEGER, INTENT(IN) :: p, r
3264    INTEGER, INTENT(OUT) :: newtype
3265    INTEGER, INTENT(OUT) :: ierror
3266 end subroutine ompi_type_create_f90_complex_f
3267 
3268 subroutine ompi_type_create_f90_integer_f(r,newtype,ierror) &
3269    BIND(C, name="ompi_type_create_f90_integer_f")
3270    implicit none
3271    INTEGER, INTENT(IN) :: r
3272    INTEGER, INTENT(OUT) :: newtype
3273    INTEGER, INTENT(OUT) :: ierror
3274 end subroutine ompi_type_create_f90_integer_f
3275 
3276 subroutine ompi_type_create_f90_real_f(p,r,newtype,ierror) &
3277    BIND(C, name="ompi_type_create_f90_real_f")
3278    implicit none
3279    INTEGER, INTENT(IN) :: p, r
3280    INTEGER, INTENT(OUT) :: newtype
3281    INTEGER, INTENT(OUT) :: ierror
3282 end subroutine ompi_type_create_f90_real_f
3283 
3284 subroutine ompi_type_match_size_f(typeclass,size,datatype,ierror) &
3285    BIND(C, name="ompi_type_match_size_f")
3286    implicit none
3287    INTEGER, INTENT(IN) :: typeclass, size
3288    INTEGER, INTENT(OUT) :: datatype
3289    INTEGER, INTENT(OUT) :: ierror
3290 end subroutine ompi_type_match_size_f
3291 
3292 subroutine ompi_pcontrol_f(level) &
3293    BIND(C, name="ompi_pcontrol_f")
3294    implicit none
3295    INTEGER, INTENT(IN) :: level
3296 end subroutine ompi_pcontrol_f
3297 
3298 
3299 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3300 ! New routines to MPI-3
3301 !
3302 
3303 subroutine ompi_comm_split_type_f(comm,split_type,key,info,newcomm,ierror) &
3304    BIND(C, name="ompi_comm_split_type_f")
3305    implicit none
3306    INTEGER, INTENT(IN) :: comm
3307    INTEGER, INTENT(IN) :: split_type
3308    INTEGER, INTENT(IN) :: key
3309    INTEGER, INTENT(IN) :: info
3310    INTEGER, INTENT(OUT) :: newcomm
3311    INTEGER, INTENT(OUT) :: ierror
3312 end subroutine ompi_comm_split_type_f
3313 
3314 subroutine ompi_f_sync_reg_f(buf) &
3315    BIND(C, name="ompi_f_sync_reg_f")
3316    implicit none
3317    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3318 end subroutine ompi_f_sync_reg_f
3319 
3320 subroutine ompi_get_library_version_f(name,resultlen,ierror,name_len) &
3321    BIND(C, name="ompi_get_library_version_f")
3322    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3323    implicit none
3324    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
3325    INTEGER, INTENT(OUT) :: resultlen
3326    INTEGER, INTENT(OUT) :: ierror
3327    INTEGER, VALUE, INTENT(IN) :: name_len
3328 end subroutine ompi_get_library_version_f
3329 
3330 subroutine ompi_mprobe_f(source,tag,comm,message,status,ierror) &
3331    BIND(C, name="ompi_mprobe_f")
3332    use :: mpi_f08_types, only : MPI_Status
3333    implicit none
3334    INTEGER, INTENT(IN) :: source, tag
3335    INTEGER, INTENT(IN) :: comm
3336    INTEGER, INTENT(OUT) :: message
3337    TYPE(MPI_Status), INTENT(OUT) :: status
3338    INTEGER, INTENT(OUT) :: ierror
3339 end subroutine ompi_mprobe_f
3340 
3341 subroutine ompi_imrecv_f(buf,count,datatype,message,request,ierror) &
3342    BIND(C, name="ompi_imrecv_f")
3343    implicit none
3344    OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
3345    INTEGER, INTENT(IN) :: count
3346    INTEGER, INTENT(IN) :: datatype
3347    INTEGER, INTENT(INOUT) :: message
3348    INTEGER, INTENT(OUT) :: request
3349    INTEGER, INTENT(OUT) :: ierror
3350 end subroutine ompi_imrecv_f
3351 
3352 subroutine ompi_mrecv_f(buf,count,datatype,message,status,ierror) &
3353    BIND(C, name="ompi_mrecv_f")
3354    use :: mpi_f08_types, only : MPI_Status
3355    implicit none
3356    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3357    INTEGER, INTENT(IN) :: count
3358    INTEGER, INTENT(IN) :: datatype
3359    INTEGER, INTENT(INOUT) :: message
3360    TYPE(MPI_Status) :: status
3361    INTEGER, INTENT(OUT) :: ierror
3362 end subroutine ompi_mrecv_f
3363 
3364 subroutine ompi_neighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3365                              comm,ierror) &
3366                              BIND(C, name="ompi_neighbor_allgather_f")
3367    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3368    implicit none
3369    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3370    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3371    INTEGER, INTENT(IN) :: sendcount, recvcount
3372    INTEGER, INTENT(IN) :: sendtype, recvtype
3373    INTEGER, INTENT(IN) :: comm
3374    INTEGER, INTENT(OUT) :: ierror
3375 end subroutine ompi_neighbor_allgather_f
3376 
3377 subroutine ompi_ineighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3378                              comm,request,ierror) &
3379                              BIND(C, name="ompi_ineighbor_allgather_f")
3380    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3381    implicit none
3382    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3383    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3384    INTEGER, INTENT(IN) :: sendcount, recvcount
3385    INTEGER, INTENT(IN) :: sendtype, recvtype
3386    INTEGER, INTENT(IN) :: comm
3387    INTEGER, INTENT(OUT) :: request
3388    INTEGER, INTENT(OUT) :: ierror
3389 end subroutine ompi_ineighbor_allgather_f
3390 
3391 subroutine ompi_neighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3392                               recvtype,comm,ierror) &
3393                               BIND(C, name="ompi_neighbor_allgatherv_f")
3394    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3395    implicit none
3396    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3397    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3398    INTEGER, INTENT(IN) :: sendcount
3399    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3400    INTEGER, INTENT(IN) :: sendtype, recvtype
3401    INTEGER, INTENT(IN) :: comm
3402    INTEGER, INTENT(OUT) :: ierror
3403 end subroutine ompi_neighbor_allgatherv_f
3404 
3405 subroutine ompi_ineighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3406                               recvtype,comm,request,ierror) &
3407                               BIND(C, name="ompi_ineighbor_allgatherv_f")
3408    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3409    implicit none
3410    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3411    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3412    INTEGER, INTENT(IN) :: sendcount
3413    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3414    INTEGER, INTENT(IN) :: sendtype, recvtype
3415    INTEGER, INTENT(IN) :: comm
3416    INTEGER, INTENT(OUT) :: request
3417    INTEGER, INTENT(OUT) :: ierror
3418 end subroutine ompi_ineighbor_allgatherv_f
3419 
3420 subroutine ompi_neighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3421                             comm,ierror) &
3422                             BIND(C, name="ompi_neighbor_alltoall_f")
3423    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3424    implicit none
3425    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3426    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3427    INTEGER, INTENT(IN) :: sendcount, recvcount
3428    INTEGER, INTENT(IN) :: sendtype, recvtype
3429    INTEGER, INTENT(IN) :: comm
3430    INTEGER, INTENT(OUT) :: ierror
3431 end subroutine ompi_neighbor_alltoall_f
3432 
3433 subroutine ompi_ineighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3434                             comm,request,ierror) &
3435                             BIND(C, name="ompi_ineighbor_alltoall_f")
3436    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3437    implicit none
3438    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3439    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3440    INTEGER, INTENT(IN) :: sendcount, recvcount
3441    INTEGER, INTENT(IN) :: sendtype, recvtype
3442    INTEGER, INTENT(IN) :: comm
3443    INTEGER, INTENT(OUT) :: request
3444    INTEGER, INTENT(OUT) :: ierror
3445 end subroutine ompi_ineighbor_alltoall_f
3446 
3447 subroutine ompi_neighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3448                              rdispls,recvtype,comm,ierror) &
3449                              BIND(C, name="ompi_neighbor_alltoallv_f")
3450    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3451    implicit none
3452    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3453    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3454    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3455    INTEGER, INTENT(IN) :: sendtype, recvtype
3456    INTEGER, INTENT(IN) :: comm
3457    INTEGER, INTENT(OUT) :: ierror
3458 end subroutine ompi_neighbor_alltoallv_f
3459 
3460 subroutine ompi_ineighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3461                              rdispls,recvtype,comm,request,ierror) &
3462                              BIND(C, name="ompi_ineighbor_alltoallv_f")
3463    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3464    implicit none
3465    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3466    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3467    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3468    INTEGER, INTENT(IN) :: sendtype, recvtype
3469    INTEGER, INTENT(IN) :: comm
3470    INTEGER, INTENT(OUT) :: request
3471    INTEGER, INTENT(OUT) :: ierror
3472 end subroutine ompi_ineighbor_alltoallv_f
3473 
3474 subroutine ompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3475                              rdispls,recvtypes,comm,ierror) &
3476                              BIND(C, name="ompi_neighbor_alltoallw_f")
3477    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_ADDRESS_KIND
3478    implicit none
3479    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3480    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3481    INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3482    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3483    INTEGER, INTENT(IN) :: sendtypes, recvtypes
3484    INTEGER, INTENT(IN) :: comm
3485    INTEGER, INTENT(OUT) :: ierror
3486 end subroutine ompi_neighbor_alltoallw_f
3487 
3488 subroutine ompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3489                              rdispls,recvtypes,comm,request,ierror) &
3490                              BIND(C, name="ompi_ineighbor_alltoallw_f")
3491    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request, MPI_ADDRESS_KIND
3492    implicit none
3493    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3494    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3495    INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3496    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3497    INTEGER, INTENT(IN) :: sendtypes, recvtypes
3498    INTEGER, INTENT(IN) :: comm
3499    INTEGER, INTENT(OUT) :: request
3500    INTEGER, INTENT(OUT) :: ierror
3501 end subroutine ompi_ineighbor_alltoallw_f
3502 
3503 end interface

/* [<][>][^][v][top][bottom][index][help] */