diff --git a/src/LIB/MPIvide/mpivide.c b/src/LIB/MPIvide/mpivide.c
index 06740a2087ac2b85c0998871d7ca098426adc037..121853b1af3102b2263aaafc7637371e8ba1c698 100644
--- a/src/LIB/MPIvide/mpivide.c
+++ b/src/LIB/MPIvide/mpivide.c
@@ -218,6 +218,44 @@ int              *__ierr;
     *__ierr = 0;
 }
 
+#pragma weak mpi_gatherv__  = mpi_gatherv
+#pragma weak mpi_gatherv_   = mpi_gatherv
+void mpi_gatherv
+( sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm, __ierr )
+
+void             *sendbuf;
+int              *sendcount;
+int              *sendtype;
+void             *recvbuf;
+int              *recvcounts;
+int              *displs;
+int              *recvtype;
+int              *root;
+int              *comm;
+int              *__ierr;
+{
+    int size = SIZE2PRECISION;
+    disppass("gatherv");
+    switch(*sendtype)
+    {
+      case MPI_INTEGER:
+        size = SIZEINTEGER;
+        break;
+      case MPI_PRECISION:
+        size = SIZEPRECISION;
+        break;
+      case MPI_2PRECISION:
+        size = SIZE2PRECISION;
+        break;
+      case MPI_DOUBLEDOUBLE:
+        size = SIZE_DOUBLEDOUBLE;
+        break;
+    }
+    memcpy(recvbuf, sendbuf, (*recvcounts)*size);
+
+    *__ierr = 0;
+}
+
 #pragma weak mpi_comm_get_parent__ =  mpi_comm_get_parent
 #pragma weak mpi_comm_get_parent_  =  mpi_comm_get_parent
 void mpi_comm_get_parent(int *parent , int *__ierr)