diff --git a/src/optimisation/adjointOptimisation/adjoint/Make/files b/src/optimisation/adjointOptimisation/adjoint/Make/files
index eb253511fb..f377ef4598 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 0000000000..c4e3edb941
--- /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 .
+
+\*---------------------------------------------------------------------------*/
+
+#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("zones"))
+ )
+{
+ //- Allocate source term for the adjoint turbulence model
+ dJdTMvar1Ptr_.reset
+ (
+ createZeroFieldPtr
+ (
+ mesh_,
+ "ATMSource",
+ (dimless/dimTime/dimTime)
+ )
+ );
+ //- Allocate term to be added to volume-based sensitivity derivatives
+ divDxDbMultPtr_.reset
+ (
+ createZeroFieldPtr
+ (
+ 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&
+ 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());
+ //reduce(zoneVol, sumOp());
+
+ return J_;
+}
+
+
+void objectiveNutSqr::update_dJdTMvar1()
+{
+ const autoPtr&
+ turbVars = vars_.RASModelVariables();
+ const singlePhaseTransportModel& lamTransp = vars_.laminarTransport();
+ const volScalarField& nut = turbVars->nutRef();
+
+ tmp 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&
+ 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 0000000000..977c7cc342
--- /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 .
+
+
+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
+
+// ************************************************************************* //