MPI_COMM_C2F(3)

๐Ÿ“ฆ
version 5.0.10 ยท 4 versions
, in ubuntu stonking

๐Ÿซถ NAME ๐Ÿซถ

hiii bestie, you just opened MPI_COMM_C2F(3) โ€” that's the Open MPI manual page for the girlies who live in two languages at once ๐ŸŒˆโœจ

okay so this page is actually a whole squad, not just one function. everyone here does the exact same job, just for a different kind of handle, and their mission statement is literally: translates a C handle into a Fortran handle, or vice versa.

let me introduce you properly ๐Ÿ’…

  • MPI_Comm_f2c
  • MPI_Comm_c2f
  • MPI_File_f2c
  • MPI_File_c2f
  • MPI_Info_f2c
  • MPI_Info_c2f
  • MPI_Message_f2c
  • MPI_Message_c2f
  • MPI_Op_f2c
  • MPI_Op_c2f
  • MPI_Request_f2c
  • MPI_Request_c2f
  • MPI_Type_f2c
  • MPI_Type_c2f
  • MPI_Win_f2c
  • MPI_Win_c2f

the naming is giving main character energy and also, lowkey, the whole plot: _f2c = Fortran โฎ• C, _c2f = C โฎ• Fortran. see? iconic. no cap. ๐Ÿ”ฅ


๐ŸŽ€ SYNTAX ๐ŸŽ€

C Syntax

okay so in C you gotta bring the header first, always:

#include <mpi.h>

MPI_Comm MPI_Comm_f2c(MPI_Fint comm)
MPI_Fint MPI_Comm_c2f(MPI_Comm comm)

MPI_File MPI_File_f2c(MPI_Fint file)
MPI_Fint MPI_File_c2f(MPI_File file)

MPI_Group MPI_Group_f2c(MPI Fint group)
MPI_Fint MPI_Group_c2f(MPI Group group)

MPI_Info MPI_Info_f2c(MPI_Fint info)
MPI_Fint MPI_Info_c2f(MPI_Info info)

MPI_Message MPI_Message_f2c(MPI_Fint message)
MPI_Fint MPI_Message_c2f(MPI_Message message)

MPI_Op MPI_Op_f2c(MPI_Fint op)
MPI_Fint MPI_Op_c2f(MPI_Op op)

MPI_Request MPI_Request_f2c(MPI_Fint request)
MPI_Fint MPI_Request_c2f(MPI_Request request)

MPI_Datatype MPI_Type_f2c(MPI_Fint datatype)
MPI_Fint MPI_Type_c2f(MPI_Datatype datatype)

MPI_Win MPI_Win_f2c(MPI_Fint win)
MPI_Fint MPI_Win_c2f(MPI_Win win)

not me typing the MPI_Group ones exactly as the page has them, MPI Fint and MPI Group and all ๐Ÿ™ˆ โ€” bestie I do not edit source material, I just deliver it


โœจ DESCRIPTION โœจ

so here's the tea, and it's honestly kind of a cute little bridge situation ๐ŸŒธ

handles get passed between Fortran and C by using an explicit C wrapper to convert Fortran handles to C handles. that's the whole move. and there is no direct access to C handles in Fortran โ€” like, zero, none, that door does not open ๐Ÿ’€

the type definition MPI_Fint is provided in C for an integer of the size that matches a Fortran INTEGER; usually, MPI_Fint will be equivalent to int. cute, right? a little matching-set moment.

and the handle translation functions are provided in C to convert from a Fortran handle (which is an integer, bestie, it's just an integer) to a C handle, and vice versa. back and forth. crosstalk. bilingual queen behaviour ๐Ÿ‘‘


๐ŸŒŸ the example (yes it's inside DESCRIPTION, stay with me) ๐ŸŒŸ

say comm is a valid Fortran handle to a communicator. then MPI_Comm_f2c returns a valid C handle to that same communicator. same communicator!! she just changed outfits ๐Ÿ’–

if comm = MPI_COMM_NULL (Fortran value), then MPI_Comm_f2c returns a null C handle. fair, consistent, slay.

if comm is an invalid Fortran handle, then MPI_Comm_f2c returns an invalid C handle. garbage in, garbage out, no notes ๐Ÿซ 


โš ๏ธ NOTE โš ๏ธ

okay this is the serious part and I need you locked in, bestie:

this function does not return an error value. so if you call it before MPI_Init or after MPI_Finalize, the result is undefined. undefined!! not "probably fine", not "lol who cares" โ€” undefined. do not do it, do not test it, do not "just see what happens" ๐Ÿ™ˆ

๐Ÿšจ warning bestie: no error value comes back from this one. before MPI_Init, after MPI_Finalize โ€” undefined. periodt.

2003-2026, The Open MPI Community


and that's the whole page, angel ๐Ÿฆ‹ source and version for the record: this is the Open MPI manual, dated Sep 10, 2026, and it lives at MPI_COMM_C2F(3). go translate some handles, you're gonna eat ๐Ÿ’…๐Ÿ’–

๐Ÿ“ฆ where this page comes from