diff --git a/etc/bashrc b/etc/bashrc
index e2e887ac646048ac52fa5f7ef0845474bc7f4bec..597d5494d6cb976512b6a8d1ed611c2f11ed8885 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -65,7 +65,7 @@ export WM_COMPILER_TYPE=system
 
 #- Compiler:
 #    WM_COMPILER = Gcc | Gcc4[8-9] | Gcc5[1-4] | Gcc6[1-3] | GccKNL
-#                  | Clang | Clang3[8-9] | Clang40 | Icc | IccKNL
+#                  | Clang | Clang3[8-9] | Clang40 | Icc | IccKNL | Cray
 export WM_COMPILER=Gcc
 unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
 
@@ -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 | USERMPI
+#               | MPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
 export WM_MPLIB=SYSTEMOPENMPI
 
 #- Operating System:
diff --git a/etc/config.csh/mpi b/etc/config.csh/mpi
index e2ec875e4f2abac26f047d2a9d69f374f3995a90..ae9a7c15a467a06e57000cdcc230930b3a8e70c6 100644
--- a/etc/config.csh/mpi
+++ b/etc/config.csh/mpi
@@ -141,6 +141,28 @@ case MPICH-GM:
     _foamAddLib     $GM_LIB_PATH
     breaksw
 
+case CRAY-MPICH:
+    if ( ! $?MPICH_DIR ) setenv MPICH_DIR /dev/null
+    setenv FOAM_MPI cray-mpich
+    setenv MPI_ARCH_PATH $MPICH_DIR
+
+    if ($?FOAM_VERBOSE && $?prompt) then
+        echo "Using $WM_MPLIB"
+        echo "    FOAM_MPI  : $FOAM_MPI"
+        echo "    MPICH_DIR : $MPI_ARCH_PATH"
+    endif
+
+    if ( ! -d "$MPI_ARCH_PATH" ) then
+        echo "Warning in $WM_PROJECT_DIR/etc/config.csh/mpi:"
+        echo "    Not a valid $WM_MPLIB installation directory."
+        echo "    Please set MPICH_DIR properly."
+        echo "    Currently using '$MPI_ARCH_PATH'"
+    endif
+
+    # _foamAddPath    $MPI_ARCH_PATH/bin
+    _foamAddLib     $MPI_ARCH_PATH/lib
+    breaksw
+
 case HPMPI:
     setenv FOAM_MPI hpmpi
     setenv MPI_HOME /opt/hpmpi
diff --git a/etc/config.csh/settings b/etc/config.csh/settings
index 98442b94a1e174f490edb62abddf7bd8df4877ed..40c3df898557536f4a10b424f488d4b2af8156a5 100644
--- a/etc/config.csh/settings
+++ b/etc/config.csh/settings
@@ -214,12 +214,17 @@ if (! $?WM_COMPILER_TYPE ) setenv WM_COMPILER_TYPE system
 # Adjustments for non-gcc compilers
 switch ("$WM_COMPILER")
 case Clang*:
-    # Using clang - not gcc
+    # Using clang compiler suite
     setenv WM_CC 'clang'
     setenv WM_CXX 'clang++'
     breaksw
+case Cray*:
+    # Using cray system compilers
+    setenv WM_CC 'cc'
+    setenv WM_CXX 'CC'
+    breaksw
 case Icc*:
-    # Using icc - not gcc
+    # Using intel compilers
     setenv WM_CC 'icc'
     setenv WM_CXX 'icpc'
     breaksw
diff --git a/etc/config.sh/mpi b/etc/config.sh/mpi
index a2d676d76b54c0fe4dc1ef4c74a2676754e7dea2..1a87bf238f91ea1bbb5a322acba22090d9cd1ba8 100644
--- a/etc/config.sh/mpi
+++ b/etc/config.sh/mpi
@@ -160,6 +160,28 @@ MPICH-GM)
     _foamAddLib     $GM_LIB_PATH
     ;;
 
+CRAY-MPICH)
+    export FOAM_MPI=cray-mpich
+    export MPI_ARCH_PATH=$MPICH_DIR
+
+    if [ "$FOAM_VERBOSE" -a "$PS1" ]
+    then
+        echo "Using $WM_MPLIB" 1>&2
+        echo "    FOAM_MPI  : $FOAM_MPI" 1>&2
+        echo "    MPICH_DIR : $MPI_ARCH_PATH" 1>&2
+    fi
+
+    [ -d "$MPI_ARCH_PATH" ] || {
+        echo "Warning in $WM_PROJECT_DIR/etc/config.sh/mpi:" 1>&2
+        echo "    Not a valid $WM_MPLIB installation directory." 1>&2
+        echo "    Please set MPICH_DIR properly" 1>&2
+        echo "    Currently using '$MPI_ARCH_PATH'" 1>&2
+    }
+
+    # _foamAddPath    $MPI_ARCH_PATH/bin
+    _foamAddLib     $MPI_ARCH_PATH/lib
+    ;;
+
 HPMPI)
     export FOAM_MPI=hpmpi
     export MPI_HOME=/opt/hpmpi
diff --git a/etc/config.sh/settings b/etc/config.sh/settings
index ebc4bf435a71eb25df4c5702441b2913aba2a803..20821fae2e3dddfc028d5c98cb349c724fde3cd9 100644
--- a/etc/config.sh/settings
+++ b/etc/config.sh/settings
@@ -216,12 +216,17 @@ _foamAddLib  $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN
 # Adjust for non-gcc compilers
 case "$WM_COMPILER" in
 Clang*)
-    # Using clang - not gcc
+    # Using clang compiler suite
     export WM_CC='clang'
     export WM_CXX='clang++'
     ;;
+Cray*)
+    # Using cray system compilers
+    export WM_CC='cc'
+    export WM_CXX='CC'
+    ;;
 Icc*)
-    # Using icc - not gcc
+    # Using intel compilers
     export WM_CC='icc'
     export WM_CXX='icpc'
     ;;
diff --git a/etc/cshrc b/etc/cshrc
index 7b8da52c26df1b5c353a78e11628d0229187d17e..7cefb2f38306720229fd780d5b2f5948413fbf30 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -61,7 +61,7 @@ setenv WM_COMPILER_TYPE system
 
 #- Compiler:
 #    WM_COMPILER = Gcc | Gcc4[8-9] | Gcc5[1-4] | Gcc6[1-3] | GccKNL
-#                  | Clang | Clang3[8-9] | Clang40 | Icc | IccKNL
+#                  | Clang | Clang3[8-9] | Clang40 | Icc | IccKNL | Cray
 setenv WM_COMPILER Gcc
 setenv WM_COMPILER_ARCH # defined but empty
 unsetenv WM_COMPILER_LIB_ARCH
@@ -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 | USERMPI
+#               | MPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
 setenv WM_MPLIB SYSTEMOPENMPI
 
 #- Operating System:
diff --git a/wmake/rules/General/mplibCRAY-MPICH b/wmake/rules/General/mplibCRAY-MPICH
new file mode 100644
index 0000000000000000000000000000000000000000..fdb91c13794fcf6f7757f66ba1e6f88f1cd96a75
--- /dev/null
+++ b/wmake/rules/General/mplibCRAY-MPICH
@@ -0,0 +1 @@
+include $(GENERAL_RULES)/mplibMPICH
diff --git a/wmake/rules/linux64Cray/c b/wmake/rules/linux64Cray/c
new file mode 100644
index 0000000000000000000000000000000000000000..d08f44144037dd10701b5adfe4f357fc4c83054f
--- /dev/null
+++ b/wmake/rules/linux64Cray/c
@@ -0,0 +1,16 @@
+SUFFIXES += .c
+
+cWARN        = -Wall
+
+cc          = cc -m64
+
+include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
+
+cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
+
+ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $< -o $@
+
+LINK_LIBS   = $(cDBUG)
+
+LINKLIBSO   = $(cc) -shared
+LINKEXE     = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linux64Cray/c++ b/wmake/rules/linux64Cray/c++
new file mode 100644
index 0000000000000000000000000000000000000000..30c2bc762e23a9651ba54620c3c955ac31d38e28
--- /dev/null
+++ b/wmake/rules/linux64Cray/c++
@@ -0,0 +1,24 @@
+SUFFIXES += .C
+
+c++WARN     = -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof
+
+# Suppress some warnings for flex++ and CGAL
+c++LESSWARN = -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds
+
+CC          = CC -std=c++11 -m64
+
+include $(DEFAULT_RULES)/c++$(WM_COMPILE_OPTION)
+
+ptFLAGS     = -DNoRepository -ftemplate-depth-100
+
+c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
+
+Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $< -o $@
+cxxtoo      = $(Ctoo)
+cctoo       = $(Ctoo)
+cpptoo      = $(Ctoo)
+
+LINK_LIBS   = $(c++DBUG)
+
+LINKLIBSO   = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
+LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed
diff --git a/wmake/rules/linux64Cray/c++Debug b/wmake/rules/linux64Cray/c++Debug
new file mode 100644
index 0000000000000000000000000000000000000000..19bdb9c3346fc7a69380dfedd6e7911fe220a965
--- /dev/null
+++ b/wmake/rules/linux64Cray/c++Debug
@@ -0,0 +1,2 @@
+c++DBUG    = -ggdb3 -DFULLDEBUG
+c++OPT      = -O0 -fdefault-inline
diff --git a/wmake/rules/linux64Cray/c++Opt b/wmake/rules/linux64Cray/c++Opt
new file mode 100644
index 0000000000000000000000000000000000000000..599e6aba611dab95225e37204a5763288c546893
--- /dev/null
+++ b/wmake/rules/linux64Cray/c++Opt
@@ -0,0 +1,4 @@
+c++DBUG     =
+c++OPT      = -O3
+
+ROUNDING_MATH = -frounding-math
diff --git a/wmake/rules/linux64Cray/c++Prof b/wmake/rules/linux64Cray/c++Prof
new file mode 100644
index 0000000000000000000000000000000000000000..3bda4dad55e898a8198f6e8bfe21e8d829d7230a
--- /dev/null
+++ b/wmake/rules/linux64Cray/c++Prof
@@ -0,0 +1,2 @@
+c++DBUG    = -pg
+c++OPT     = -O2
diff --git a/wmake/rules/linux64Cray/cDebug b/wmake/rules/linux64Cray/cDebug
new file mode 100644
index 0000000000000000000000000000000000000000..72b638f458220e329d52b59e3566a3c807101f9d
--- /dev/null
+++ b/wmake/rules/linux64Cray/cDebug
@@ -0,0 +1,2 @@
+cDBUG       = -ggdb -DFULLDEBUG
+cOPT        = -O1 -fdefault-inline -finline-functions
diff --git a/wmake/rules/linux64Cray/cOpt b/wmake/rules/linux64Cray/cOpt
new file mode 100644
index 0000000000000000000000000000000000000000..17318709f1fa39e6bf89cbe87778bc6fa459de17
--- /dev/null
+++ b/wmake/rules/linux64Cray/cOpt
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -O3
diff --git a/wmake/rules/linux64Cray/cProf b/wmake/rules/linux64Cray/cProf
new file mode 100644
index 0000000000000000000000000000000000000000..ca3ac9bf5f0cd61fe99e0f05fa1bd4bdf9fa6cf7
--- /dev/null
+++ b/wmake/rules/linux64Cray/cProf
@@ -0,0 +1,2 @@
+cDBUG       = -pg
+cOPT        = -O2
diff --git a/wmake/rules/linux64Cray/general b/wmake/rules/linux64Cray/general
new file mode 100644
index 0000000000000000000000000000000000000000..a0c807e5d8a95848f20457716565c8debe747570
--- /dev/null
+++ b/wmake/rules/linux64Cray/general
@@ -0,0 +1,9 @@
+CPP        = cpp -traditional-cpp $(GFLAGS)
+
+PROJECT_LIBS = -l$(WM_PROJECT) -ldl
+
+include $(GENERAL_RULES)/standard
+
+# include $(DEFAULT_RULES)/openmp
+include $(DEFAULT_RULES)/c
+include $(DEFAULT_RULES)/c++
diff --git a/wmake/rules/linux64Cray/mplibINTELMPI b/wmake/rules/linux64Cray/mplibINTELMPI
new file mode 100644
index 0000000000000000000000000000000000000000..278e0b0f22c7c7d6fafc3334cddccb237afe232e
--- /dev/null
+++ b/wmake/rules/linux64Cray/mplibINTELMPI
@@ -0,0 +1,3 @@
+PFLAGS     = -DMPICH_SKIP_MPICXX
+PINC       = -isystem $(MPI_ARCH_PATH)/include64
+PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linux64Cray/openmp b/wmake/rules/linux64Cray/openmp
new file mode 100644
index 0000000000000000000000000000000000000000..bcb805f57c6240bc577b1f04208ac09706d0846a
--- /dev/null
+++ b/wmake/rules/linux64Cray/openmp
@@ -0,0 +1,4 @@
+# Flags for compiling/linking openmp
+
+COMP_OPENMP = -DUSE_OMP -fopenmp
+LINK_OPENMP = -lgomp