diff --git a/etc/bashrc b/etc/bashrc
index eb282692a530e4aa1fda7a127caea459fa2cd8ed..f871d63c1022751bbade907dc8de0885bd036be5 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -91,7 +91,7 @@ export WM_COMPILER_LIB_ARCH=
 # WM_JAVAC_OPTION = Opt | Debug
 : ${WM_JAVAC_OPTION:=Opt}; export WM_JAVAC_OPTION
 
-# WM_MPLIB = | OPENMPI| LAM | MPICH | MPICH-GM | GAMMA | MPI
+# WM_MPLIB = | OPENMPI| LAM | MPICH | MPICH-GM | HPMPI | GAMMA | MPI
 : ${WM_MPLIB:=OPENMPI}; export WM_MPLIB
 
 
diff --git a/etc/cshrc b/etc/cshrc
index 078a2041a55c07a87ea20a99ff9a657c413a0cb2..4e039f600ac4ed992c71aa710387d3988d19bfb6 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -89,7 +89,7 @@ if ( ! $?WM_COMPILE_OPTION ) setenv WM_COMPILE_OPTION Opt
 # WM_JAVAC_OPTION = Opt | Debug
 if ( ! $?WM_JAVAC_OPTION ) setenv WM_JAVAC_OPTION Opt
 
-# WM_MPLIB = | OPENMPI | LAM | MPICH | MPICH-GM | GAMMA | MPI
+# WM_MPLIB = | OPENMPI | LAM | MPICH | MPICH-GM | HPMPI | GAMMA | MPI
 if ( ! $?WM_MPLIB ) setenv WM_MPLIB OPENMPI
 
 
diff --git a/etc/settings.csh b/etc/settings.csh
index 32034a72d53cb3f2eaca6e3a158c9b295c95e0a0..2c9a0eb656fccab2fb84d0de0004ca4ce24997d7 100644
--- a/etc/settings.csh
+++ b/etc/settings.csh
@@ -187,6 +187,31 @@ case MPICH-GM:
     setenv FOAM_MPI_LIBBIN $FOAM_LIBBIN/mpich-gm
     breaksw
 
+case MPICH-GM:
+    setenv MPI_HOME /opt/hpmpi
+    setenv MPI_ARCH_PATH $MPI_HOME
+    setenv MPICH_ROOT=$MPI_ARCH_PATH
+
+    _foamAddPath $MPI_ARCH_PATH/bin
+
+    switch (`uname -m`)
+    case i686:
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_ia32
+        breaksw
+    case x86_64:
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_amd64
+        breaksw
+    case ia64:
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_ia64
+        breaksw
+    default:
+        echo Unknown processor type `uname -m` for Linux
+        breaksw
+    endsw
+
+    setenv FOAM_MPI_LIBBIN $FOAM_LIBBIN/hpmpi
+    breaksw
+
 case GAMMA:
     setenv MPI_ARCH_PATH /usr
     setenv FOAM_MPI_LIBBIN $FOAM_LIBBIN/gamma
diff --git a/etc/settings.sh b/etc/settings.sh
index 71224114af94b9a4bd9c904a12a9722026f7554d..d0d54daf24f7a015751daf7f83ddf22e9dec8345 100644
--- a/etc/settings.sh
+++ b/etc/settings.sh
@@ -213,6 +213,32 @@ MPICH-GM)
     export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/mpich-gm
     ;;
 
+HPMPI)
+    export MPI_HOME=/opt/hpmpi
+    export MPI_ARCH_PATH=$MPI_HOME
+    export MPICH_ROOT=$MPI_ARCH_PATH
+
+    _foamAddPath $MPI_ARCH_PATH/bin
+
+    case `uname -m` in
+    i686)
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_ia32
+        ;;
+
+    x86_64)
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_amd64
+        ;;
+    ia64)
+        _foamAddLib $MPI_ARCH_PATH/lib/linux_ia64
+        ;;
+    *)
+        echo Unknown processor type `uname -m` for Linux
+        ;;
+    esac
+
+    export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/hpmpi
+    ;;
+
 GAMMA)
     export MPI_ARCH_PATH=/usr
     export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/gamma
diff --git a/src/Pstream/Allwmake b/src/Pstream/Allwmake
index 4398b810f9a40dad423ce3a7e341839c0b69cff0..3083370ad766706f4666510cfe47e1f6a0c4a85a 100755
--- a/src/Pstream/Allwmake
+++ b/src/Pstream/Allwmake
@@ -5,7 +5,7 @@ set -x
 wmake libso dummy
 
 case "$WM_MPLIB" in
-LAM | OPENMPI | MPI | MPICH | MPICH-GM | MPIGAMMA )
+LAM | OPENMPI | MPI | MPICH | MPICH-GM | HPMPI | MPIGAMMA )
    export WM_OPTIONS=${WM_OPTIONS}$WM_MPLIB
    set +x
    echo
diff --git a/wmake/rules/linux64Gcc/mplibHPMPI b/wmake/rules/linux64Gcc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..574492a236a32f7d87d00bf0e3507a5ac8e54f55
--- /dev/null
+++ b/wmake/rules/linux64Gcc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64Gcc42/mplibHPMPI b/wmake/rules/linux64Gcc42/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..574492a236a32f7d87d00bf0e3507a5ac8e54f55
--- /dev/null
+++ b/wmake/rules/linux64Gcc42/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64Icc/mplibHPMPI b/wmake/rules/linux64Icc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..574492a236a32f7d87d00bf0e3507a5ac8e54f55
--- /dev/null
+++ b/wmake/rules/linux64Icc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linuxGcc/mplibHPMPI b/wmake/rules/linuxGcc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..8aff40632bd23af9607d63c4eb675a8de0cd287c
--- /dev/null
+++ b/wmake/rules/linuxGcc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxGcc42/mplibHPMPI b/wmake/rules/linuxGcc42/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..8aff40632bd23af9607d63c4eb675a8de0cd287c
--- /dev/null
+++ b/wmake/rules/linuxGcc42/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
diff --git a/wmake/rules/linuxIA64Gcc/mplibHPMPI b/wmake/rules/linuxIA64Gcc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..4e4e54c8131499bec3eeb562f580a491307e1ad9
--- /dev/null
+++ b/wmake/rules/linuxIA64Gcc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia64 -lmpi
diff --git a/wmake/rules/linuxIA64Icc/mplibHPMPI b/wmake/rules/linuxIA64Icc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..4e4e54c8131499bec3eeb562f580a491307e1ad9
--- /dev/null
+++ b/wmake/rules/linuxIA64Icc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia64 -lmpi
diff --git a/wmake/rules/linuxIcc/mplibHPMPI b/wmake/rules/linuxIcc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..8aff40632bd23af9607d63c4eb675a8de0cd287c
--- /dev/null
+++ b/wmake/rules/linuxIcc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi