diff --git a/src/postProcessing/functionObjects/field/MachNo/MachNo.C b/src/postProcessing/functionObjects/field/MachNo/MachNo.C
new file mode 100644
index 0000000000..d252a45b30
--- /dev/null
+++ b/src/postProcessing/functionObjects/field/MachNo/MachNo.C
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "MachNo.H"
+#include "fluidThermo.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+ defineTypeNameAndDebug(MachNo, 0);
+
+ addToRunTimeSelectionTable
+ (
+ functionObject,
+ MachNo,
+ dictionary
+ );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::functionObjects::MachNo::MachNo
+(
+ const word& name,
+ const Time& runTime,
+ const dictionary& dict
+)
+:
+ fieldExpression(name, runTime, dict, "U", "Ma")
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::functionObjects::MachNo::~MachNo()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+bool Foam::functionObjects::MachNo::execute(const bool postProcess)
+{
+ if
+ (
+ foundField(fieldName_)
+ && mesh_.foundObject(fluidThermo::dictName)
+ )
+ {
+ const fluidThermo& thermo =
+ mesh_.lookupObject(fluidThermo::dictName);
+
+ const volVectorField& U = lookupField(fieldName_);
+
+ return store
+ (
+ resultName_,
+ mag(U)/sqrt(thermo.gamma()*thermo.p()/thermo.rho())
+ );
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/MachNo/MachNo.H b/src/postProcessing/functionObjects/field/MachNo/MachNo.H
new file mode 100644
index 0000000000..4d744f6219
--- /dev/null
+++ b/src/postProcessing/functionObjects/field/MachNo/MachNo.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Class
+ Foam::functionObjects::MachNo
+
+Group
+ grpFieldFunctionObjects
+
+Description
+ This function object calculates and writes the Mach number as a
+ volScalarField.
+
+SeeAlso
+ Foam::functionObjects::fieldExpression
+ Foam::functionObjects::fvMeshFunctionObject
+
+SourceFiles
+ MachNo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef functionObjects_MachNo_H
+#define functionObjects_MachNo_H
+
+#include "fieldExpression.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+
+/*---------------------------------------------------------------------------*\
+ Class MachNo Declaration
+\*---------------------------------------------------------------------------*/
+
+class MachNo
+:
+ public fieldExpression
+{
+
+public:
+
+ //- Runtime type information
+ TypeName("MachNo");
+
+
+ // Constructors
+
+ //- Construct for given objectRegistry and dictionary.
+ // Allow the possibility to load fields from files
+ MachNo
+ (
+ const word& name,
+ const Time& runTime,
+ const dictionary& dict
+ );
+
+
+ //- Destructor
+ virtual ~MachNo();
+
+
+ // Member Functions
+
+ //- Calculate the Mach number field
+ virtual bool execute(const bool postProcess = false);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace functionObjects
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/Make/files b/src/postProcessing/functionObjects/field/Make/files
index ee11ceecfb..934c931ac8 100644
--- a/src/postProcessing/functionObjects/field/Make/files
+++ b/src/postProcessing/functionObjects/field/Make/files
@@ -45,5 +45,6 @@ CourantNo/CourantNo.C
PecletNo/PecletNo.C
blendingFactor/blendingFactor.C
pressure/pressure.C
+MachNo/MachNo.C
LIB = $(FOAM_LIBBIN)/libfieldFunctionObjects
diff --git a/src/postProcessing/functionObjects/field/Make/options b/src/postProcessing/functionObjects/field/Make/options
index 8f45abcac0..5e97121147 100644
--- a/src/postProcessing/functionObjects/field/Make/options
+++ b/src/postProcessing/functionObjects/field/Make/options
@@ -5,10 +5,15 @@ EXE_INC = \
-I$(LIB_SRC)/fileFormats/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+ -I$(LIB_SRC)/transportModels \
+ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude
LIB_LIBS = \
-lfiniteVolume \
+ -lfluidThermophysicalModels \
+ -lcompressibleTransportModels \
-lturbulenceModels \
-lmeshTools \
-lsurfMesh \
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/controlDict b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/controlDict
index 3fc5df7bb9..caa6bae1ae 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/controlDict
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/controlDict
@@ -45,5 +45,17 @@ timePrecision 6;
runTimeModifiable true;
+functions
+{
+ libs ("libfieldFunctionObjects.so");
+
+ Ma
+ {
+ type MachNo;
+ executeControl writeTime;
+ writeControl writeTime;
+ }
+}
+
// ************************************************************************* //