MPI_TYPE_GET_ENVELOPE(3)			     Open MPI				  MPI_TYPE_GET_ENVELOPE(3)

MPI_Type_get_envelope — Returns information about input arguments associated with a data type.

SYNTAX
   C Syntax
	  #include <mpi.h>

	  int MPI_Type_get_envelope(MPI_Datatype datatype, int *num_integers,
	       int *num_addresses, int *num_datatypes, int *combiner)

   Fortran Syntax
	  USE MPI
	  ! or the older form: INCLUDE 'mpif.h'
	  MPI_TYPE_GET_ENVELOPE(DATATYPE, NUM_INTEGERS, NUM_ADDRESSES,
		       NUM_DATATYPES, COMBINER, IERROR)
	       INTEGER DATATYPE, NUM_INTEGERS, NUM_ADDRESSES
	       INTEGER NUM_DATATYPES, COMBINER, IERROR

   Fortran 2008 Syntax
	  USE mpi_f08
	  MPI_Type_get_envelope(datatype, num_integers, num_addresses, num_datatypes,
		       combiner, ierror)
	       TYPE(MPI_Datatype), INTENT(IN) :: datatype
	       INTEGER, INTENT(OUT) :: num_integers, num_addresses, num_datatypes,
	       combiner
	       INTEGER, OPTIONAL, INTENT(OUT) :: ierror

INPUT PARAMETER
       • datatype: Data type to access (handle).

OUTPUT PARAMETERS
       • num_integers: Number of input integers used in the call constructing combiner (nonnegative integer).

       • num_addresses: Number of input addresses used in the call constructing combiner (nonnegative integer).

       • num_datatypes: Number of input data types used in the call constructing combiner (nonnegative integer).

       • combiner: Combiner (state).

       • ierror: Fortran only: Error status (integer).

DESCRIPTION
       For  the	 given	data  type,  MPI_Type_get_envelope  returns  information  on  the number and type of input
       arguments used in the call that created the data type. The number-of-arguments values returned can be  used
       to    provide	sufficiently   large   arrays	in   the   decoding   routine	MPI_Type_get_contents	<#
       mpi-type-get-contents>. This call and the meaning of the returned values is described below.  The  combiner
       reflects the MPI data type constructor call that was used in creating datatype.

NOTES
       These are the values that can be returned in combiner and their associated calls:

	  Values			  Associated Calls

	  MPI_COMBINER_NAMED		  a named predefined data type
	  MPI_COMBINER_DUP		  MPI_Type_dup
	  MPI_COMBINER_CONTIGUOUS	  MPI_Type_contiguous
	  MPI_COMBINER_VECTOR		  MPI_Type_vector
	  MPI_COMBINER_HVECTOR		  MPI_Type_hvector
					    and MPI_Type_create_hvector
	  MPI_COMBINER_INDEXED		  MPI_Type_indexed
	  MPI_COMBINER_HINDEXED		  MPI_Type_hindexed
					    and MPI_Type_create_hindexed
	  MPI_COMBINER_INDEXED_BLOCK	  MPI_Type_create_indexed_block
	  MPI_COMBINER_STRUCT		  MPI_Type_struct
					    and MPI_Type_create_struct
	  MPI_COMBINER_SUBARRAY		  MPI_Type_create_subarray
	  MPI_COMBINER_DARRAY		  MPI_Type_create_darray
	  MPI_COMBINER_F90_REAL		  MPI_Type_create_f90_real
	  MPI_COMBINER_F90_COMPLEX	  MPI_Type_create_f90_complex
	  MPI_COMBINER_F90_INTEGER	  MPI_Type_create_f90_integer
	  MPI_COMBINER_RESIZED		  MPI_Type_create_resized

       If combiner is MPI_COMBINER_NAMED, then datatype is a named predefined data type.

       The  actual  arguments  used  in	 the  creation	call  for  a  data  type  can  be  obtained  from the call
       MPI_Type_get_contents <#mpi-type-get-contents>.

ERRORS
       Almost all MPI routines return an error value; C routines as the return result of the function and  Fortran
       routines in the last argument.

       Before  the error value is returned, the current MPI error handler associated with the communication object
       (e.g., communicator, window, file) is called.  If no communication object is associated with the MPI  call,
       then  the call is considered attached to MPI_COMM_SELF and will call the associated MPI error handler. When
       MPI_COMM_SELF is not initialized (i.e.,	before	MPI_Init  <#mpi-init>/MPI_Init_thread  <#mpi-init-thread>,
       after  MPI_Finalize  <#mpi-finalize>,  or  when	using the Sessions Model exclusively) the error raises the
       initial error handler. The initial error handler can  be	 changed  by  calling  MPI_Comm_set_errhandler	<#
       mpi-comm-set-errhandler>	 on  MPI_COMM_SELF  when  using the World model, or the mpi_initial_errhandler CLI
       argument	 to  mpiexec  or  info	key   to   MPI_Comm_spawn   <#mpi-comm-spawn>/MPI_Comm_spawn_multiple	<#
       mpi-comm-spawn-multiple>.   If  no other appropriate error handler has been set, then the MPI_ERRORS_RETURN
       error handler is called for MPI I/O functions and the MPI_ERRORS_ABORT error  handler  is  called  for  all
       other MPI functions.

       Open MPI includes three predefined error handlers that can be used:

       • MPI_ERRORS_ARE_FATAL Causes the program to abort all connected MPI processes.

       • MPI_ERRORS_ABORT  An  error handler that can be invoked on a communicator, window, file, or session. When
	 called on a communicator, it acts as if MPI_Abort <#mpi-abort> was called on that communicator. If called
	 on a window or file, acts as if MPI_Abort <#mpi-abort> was called on a communicator containing the  group
	 of processes in the corresponding window or file. If called on a session, aborts only the local process.

       • MPI_ERRORS_RETURN Returns an error code to the application.

       MPI applications can also implement their own error handlers by calling:

       • MPI_Comm_create_errhandler	 <#mpi-comm-create-errhandler>	   then	    MPI_Comm_set_errhandler	<#
	 mpi-comm-set-errhandler>

       • MPI_File_create_errhandler	<#mpi-file-create-errhandler>	  then	   MPI_File_set_errhandler	<#
	 mpi-file-set-errhandler>

       • MPI_Session_create_errhandler	 <#mpi-session-create-errhandler>   then   MPI_Session_set_errhandler	<#
	 mpi-session-set-errhandler> or at MPI_Session_init <#mpi-session-init>

       • MPI_Win_create_errhandler	<#mpi-win-create-errhandler>	  then	    MPI_Win_set_errhandler	<#
	 mpi-win-set-errhandler>

       Note that MPI does not guarantee that an MPI program can continue past an error.

       See the MPI man page <#open-mpi> for a full list of MPI error codes <#open-mpi-errors>.

       See the Error Handling section of the MPI-3.1 standard for more information.

       See also:

	  • MPI_Type_get_contents <#mpi-type-get-contents>

Copyright
       2003-2026, The Open MPI Community

						   Mar 05, 2026				  MPI_TYPE_GET_ENVELOPE(3)
