diff --git a/.gitignore b/.gitignore
index 3ef36692426268e7d3af68ea31d0c2f01ac45450..db2777cdc75679c3510d94aaa0d8f22ed69bde96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ doc/Doxygen/DTAGS
 /etc/prefs.sh
 /etc/config.csh/prefs.csh
 /etc/config.sh/prefs.sh
+/wmake/rules/General/mplibUSER*
 
 # Source packages - anywhere
 *.tar.bz2
diff --git a/etc/bashrc b/etc/bashrc
index 7d994701e3e683a5c33c06d54aa1f528edc4f210..a84c2508c5321a7d9698e6f50f79bbe4d36bc04b 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -89,7 +89,7 @@ export WM_COMPILE_OPTION=Opt
 
 #- MPI implementation:
 #    WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
-#               | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI
+#               | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
 export WM_MPLIB=SYSTEMOPENMPI
 
 #- Operating System:
diff --git a/etc/config.csh/mpi b/etc/config.csh/mpi
index 490a41f793b5a3fd5b3a2237ff22c1500539ba1d..1d3789ce381138386a9789bc4c449f7227342eec 100644
--- a/etc/config.csh/mpi
+++ b/etc/config.csh/mpi
@@ -3,7 +3,7 @@
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
 #   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  |
+#    \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 #------------------------------------------------------------------------------
 # License
 #     This file is part of OpenFOAM.
@@ -25,11 +25,13 @@
 #     etc/config.csh/mpi
 #
 # Description
-#     Startup file for communications library (MPI) for OpenFOAM
+#     Setup file for communications library (MPI) for OpenFOAM
 #     Sourced from OpenFOAM-<VERSION>/etc/cshrc
 #
+#     For USERMPI, the user is responsible for supplying an appropriate
+#     wmake/rules/General/mplibUSERMPI file and managing all settings
+#
 #------------------------------------------------------------------------------
-
 unsetenv MPI_ARCH_PATH MPI_HOME FOAM_MPI_LIBBIN
 
 switch ("$WM_MPLIB")
@@ -48,8 +50,7 @@ case SYSTEMOPENMPI:
 
 case OPENMPI:
     setenv FOAM_MPI openmpi-2.0.2
-    # Optional configuration tweaks:
-    _foamEtc config.csh/openmpi
+    _foamEtc config.csh/openmpi                 # <- Adjustments (optional)
 
     setenv MPI_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$FOAM_MPI
 
@@ -67,8 +68,15 @@ case OPENMPI:
     _foamAddMan     $MPI_ARCH_PATH/share/man
     breaksw
 
+case USERMPI:
+    # Use an arbitrary, user-specified mpi implementation
+    setenv FOAM_MPI mpi-user
+    _foamEtc config.csh/mpi-user                # <- Adjustments
+    breaksw
+
 case SYSTEMMPI:
     setenv FOAM_MPI mpi-system
+    _foamEtc config.csh/mpi-system              # <- Adjustments (optional)
 
     if ( ! $?MPI_ROOT ) then
         echo
diff --git a/etc/config.sh/mpi b/etc/config.sh/mpi
index 2061f63de13ebd3e8c8b5754cdf722cc5c8dda76..2aad0aab92170ae5dae164c9b738902f99ce3051 100644
--- a/etc/config.sh/mpi
+++ b/etc/config.sh/mpi
@@ -3,7 +3,7 @@
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
 #   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  |
+#    \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 #------------------------------------------------------------------------------
 # License
 #     This file is part of OpenFOAM.
@@ -25,11 +25,13 @@
 #     etc/config.sh/mpi
 #
 # Description
-#     Startup file for communications library (MPI) for OpenFOAM
+#     Setup file for communications library (MPI) for OpenFOAM
 #     Sourced from OpenFOAM-<VERSION>/etc/bashrc
 #
+#     For USERMPI, the user is responsible for supplying an appropriate
+#     wmake/rules/General/mplibUSERMPI file and managing all settings
+#
 #------------------------------------------------------------------------------
-
 unset MPI_ARCH_PATH MPI_HOME FOAM_MPI_LIBBIN
 
 case "$WM_MPLIB" in
@@ -54,8 +56,7 @@ SYSTEMOPENMPI)
 
 OPENMPI)
     export FOAM_MPI=openmpi-2.0.2
-    # Optional configuration tweaks:
-    _foamEtc config.sh/openmpi
+    _foamEtc config.sh/openmpi                  # <- Adjustments (optional)
 
     export MPI_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$FOAM_MPI
 
@@ -78,8 +79,15 @@ OPENMPI)
     fi
     ;;
 
+USERMPI)
+    # Use an arbitrary, user-specified mpi implementation
+    export FOAM_MPI=mpi-user
+    _foamEtc config.sh/mpi-user                 # <- Adjustments
+    ;;
+
 SYSTEMMPI)
     export FOAM_MPI=mpi-system
+    _foamEtc config.sh/mpi-system               # <- Adjustments (optional)
 
     if [ -z "$MPI_ROOT" ]
     then
diff --git a/etc/cshrc b/etc/cshrc
index 9d3fc7e38d6136319e19c7b89db63b18cbb7af94..5d79c0c8fde0ddf5737de71c1b78d2b60a6ad475 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -86,7 +86,7 @@ setenv WM_COMPILE_OPTION Opt
 
 #- MPI implementation:
 #    WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
-#               | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI
+#               | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
 setenv WM_MPLIB SYSTEMOPENMPI
 
 #- Operating System: