Index: /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.cpp	(revision 27371)
+++ /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.cpp	(revision 27372)
@@ -509,4 +509,46 @@
   return rc;
 }/*}}}*/
+int ISSM_MPI_Isend(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Request* req){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Isend(buf,
+	       count,
+	       datatype,
+	       dest,
+	       tag,
+			 #if !defined(_HAVE_ADJOINTMPI_) && !defined(_HAVE_MEDIPACK_)
+	       AMPI_TO_RECV, // as long as there are no other variants
+			 #endif
+	       comm,
+		   req);
+# else
+  rc=MPI_Isend(buf,
+	      count,
+	      datatype,
+	      dest,
+	      tag,
+	      comm,
+	      req);
+# endif
+#else
+// nothing to be done here
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Wait(ISSM_MPI_Request *req, ISSM_MPI_Status *status){/*{{{*/
+	int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+	rc=AMPI_Wait(req, status);
+# else
+	rc=MPI_Wait(req, status);
+# endif
+#else
+// nothing to be done here
+#endif
+	return rc;
+}/*}}}*/
 double ISSM_MPI_Wtime(void){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.h	(revision 27371)
+++ /issm/trunk-jpl/src/c/toolkits/mpi/issmmpi.h	(revision 27372)
@@ -72,4 +72,5 @@
 	typedef AMPI_Op               ISSM_MPI_Op;
 	typedef AMPI_Status           ISSM_MPI_Status;
+	typedef AMPI_Request          ISSM_MPI_Request;
 	#else
 	typedef MPI_Comm             ISSM_MPI_Comm;
@@ -77,4 +78,5 @@
 	typedef MPI_Op               ISSM_MPI_Op;
 	typedef MPI_Status           ISSM_MPI_Status;
+	typedef MPI_Request          ISSM_MPI_Request;
 	#endif
 
@@ -208,4 +210,6 @@
 int ISSM_MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
 int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm);
+int ISSM_MPI_Isend(void* buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Request* req);
+int ISSM_MPI_Wait(ISSM_MPI_Request* req, ISSM_MPI_Status* status);
 double ISSM_MPI_Wtime(void);
 int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm);
