diff --git a/src/optimisation/adjointOptimisation/adjoint/Make/files b/src/optimisation/adjointOptimisation/adjoint/Make/files
index eb253511fbf7f61a466618f75973926bfe0762cc..f377ef4598f5eb21831baa2258c62d2d05efbd60 100644
--- a/src/optimisation/adjointOptimisation/adjoint/Make/files
+++ b/src/optimisation/adjointOptimisation/adjoint/Make/files
@@ -55,6 +55,7 @@ objectives/incompressible/objectiveMoment/objectiveMoment.C
 objectives/incompressible/objectivePtLosses/objectivePtLosses.C
 objectives/incompressible/objectiveForceTarget/objectiveForceTarget.C
 objectives/incompressible/objectivePartialVolume/objectivePartialVolume.C
+objectives/incompressible/objectiveNutSqr/objectiveNutSqr.C
 
 /* OBJECTIVE MANAGER*/
 objectiveManager/objectiveManager/objectiveManager.C
diff --git a/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.C b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.C
new file mode 100644
index 0000000000000000000000000000000000000000..c4e3edb94141691f5b087e04527183051ef32531
--- /dev/null
+++ b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.C
@@ -0,0 +1,169 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2007-2020 PCOpt/NTUA
+    Copyright (C) 2013-2020 FOSS GP
+-------------------------------------------------------------------------------
+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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "objectiveNutSqr.H"
+#include "createZeroField.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+namespace objectives
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(objectiveNutSqr, 1);
+addToRunTimeSelectionTable
+(
+    objectiveIncompressible,
+    objectiveNutSqr,
+    dictionary
+);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+objectiveNutSqr::objectiveNutSqr
+(
+    const fvMesh& mesh,
+    const dictionary& dict,
+    const word& adjointSolverName,
+    const word& primalSolverName
+)
+:
+    objectiveIncompressible(mesh, dict, adjointSolverName, primalSolverName),
+    zones_
+    (
+        mesh_.cellZones().indices(this->dict().get<wordRes>("zones"))
+    )
+{
+    //- Allocate source term for the adjoint turbulence model
+    dJdTMvar1Ptr_.reset
+    (
+        createZeroFieldPtr<scalar>
+        (
+            mesh_,
+            "ATMSource",
+            (dimless/dimTime/dimTime)
+        )
+    );
+    //- Allocate term to be added to volume-based sensitivity derivatives
+    divDxDbMultPtr_.reset
+    (
+        createZeroFieldPtr<scalar>
+        (
+            mesh_,
+            ("divDxdbMult"+type()) ,
+            //variable dimensions!!
+            //Dummy zeroes. Only the internalField will be used
+            dimensionSet(0,0,0,0,0,0,0)
+        )
+    );
+    //- set file pointer
+    //objFunctionFilePtr_ = new OFstream(objFunctionFolder_/type());
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+scalar objectiveNutSqr::J()
+{
+    J_ = Zero;
+
+    const autoPtr<incompressible::RASModelVariables>&
+       turbVars = vars_.RASModelVariables();
+    const volScalarField& nut = turbVars->nutRefInst();
+
+    //scalar zoneVol(Zero);
+    for (const label zI : zones_)
+    {
+        const cellZone& zoneI = mesh_.cellZones()[zI];
+        for (const label cellI : zoneI)
+        {
+            J_ += sqr(nut[cellI])*(mesh_.V()[cellI]);
+            //zoneVol += mesh_.V()[cellI];
+        }
+    }
+    reduce(J_, sumOp<scalar>());
+    //reduce(zoneVol, sumOp<scalar>());
+
+    return J_;
+}
+
+
+void objectiveNutSqr::update_dJdTMvar1()
+{
+    const autoPtr<incompressible::RASModelVariables>&
+       turbVars = vars_.RASModelVariables();
+    const singlePhaseTransportModel& lamTransp = vars_.laminarTransport();
+    const volScalarField& nut = turbVars->nutRef();
+
+    tmp<volScalarField> tnutJacobian = turbVars->nutJacobianVar1(lamTransp);
+    const volScalarField& nutJacobian = tnutJacobian();
+
+    volScalarField& dJdTMvar1 = dJdTMvar1Ptr_();
+
+    for (const label zI : zones_)
+    {
+        const cellZone& zoneI = mesh_.cellZones()[zI];
+        for (const label cellI : zoneI)
+        {
+            dJdTMvar1[cellI] = 2.*nut[cellI]*nutJacobian[cellI];
+        }
+    }
+}
+
+
+void objectiveNutSqr::update_divDxDbMultiplier()
+{
+    const autoPtr<incompressible::RASModelVariables>&
+       turbVars = vars_.RASModelVariables();
+    const volScalarField& nut = turbVars->nutRef();
+
+    volScalarField& divDxDbMult = divDxDbMultPtr_();
+
+    for (const label zI : zones_)
+    {
+        const cellZone& zoneI = mesh_.cellZones()[zI];
+        for (const label cellI : zoneI)
+        {
+            divDxDbMult[cellI] = sqr(nut[cellI]);
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace objectives
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.H b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.H
new file mode 100644
index 0000000000000000000000000000000000000000..977c7cc342b107888cb8506b5101d476b90cbf19
--- /dev/null
+++ b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr/objectiveNutSqr.H
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2007-2020 PCOpt/NTUA
+    Copyright (C) 2013-2020 FOSS GP
+-------------------------------------------------------------------------------
+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 <http://www.gnu.org/licenses/>.
+
+
+Class
+    Foam::objectives::objectiveNutSqr
+
+Description
+    Objective qualitatively quantifying noise through the integral of the
+    squared turbulent viscosity over specified cellZones. Requires the adjoint
+    to the turbulence model to be incorporated into the optimisation loop.
+
+    Reference:
+    \verbatim
+        Objective function initially presented in
+
+            Papoutsis-Kiachagias, E. M., Magoulas, N., Mueller, J., Othmer, C.,
+            & Giannakoglou, K. C. (2015).
+            Noise reduction in car aerodynamics using a surrogate objective
+            function and the continuous adjoint method with wall functions.
+            Computers & Fluids, 122(20), 223-232.
+            https://doi.org/10.1016/j.compfluid.2015.09.002
+    \endverbatim
+
+SourceFiles
+    objectiveNutSqrNoise.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef objectiveNutSqr_H
+#define objectiveNutSqr_H
+
+#include "objectiveIncompressible.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+namespace objectives
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class objectiveNutSqr Declaration
+\*---------------------------------------------------------------------------*/
+
+class objectiveNutSqr
+:
+    public objectiveIncompressible
+{
+    // Private data
+
+        //- Where to define the objective
+        labelList zones_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("nutSqr");
+
+
+    // Constructors
+
+        //- from components
+        objectiveNutSqr
+        (
+            const fvMesh& mesh,
+            const dictionary& dict,
+            const word& adjointSolverName,
+            const word& primalSolverName
+        );
+
+
+    //- Destructor
+    virtual ~objectiveNutSqr() = default;
+
+
+    // Member Functions
+
+        //- Return the objective function value
+        scalar J();
+
+        //- Update field to be added to the adjoint turbulence model PDE
+        //  The equivalent for the second turbulence model variable should
+        //  be implemented for turbulence models other than SA
+        void update_dJdTMvar1();
+
+        //- Update field to be added to be added to volume-based
+        //  sensitivity derivatives, emerging from delta ( dV ) / delta b
+        void update_divDxDbMultiplier();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace objectiveNutSqrNoise
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //