diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C
index 26b80e1803d01a2e51fd293a110b6b44db27b63e..9cd0671d9da768d0a92579c32d66b673d23e6149 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/BFGS/BFGS.C
@@ -51,11 +51,7 @@ void Foam::BFGS::allocateMatrices()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(correction_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Set previous HessianInv to be a diagonal matrix
@@ -155,9 +151,14 @@ void Foam::BFGS::readFromDict()
         optMethodIODict_.readEntry("counter", counter_);
         optMethodIODict_.readEntry("eta", eta_);
 
-        label n = HessianInvOld_.n();
+        const label n(HessianInvOld_.n());
         HessianInv_ = SquareMatrix<scalar>(n, Zero);
         correction_ = scalarField(correctionOld_.size(), Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(n);
+        }
     }
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C
index 0e5f0fe06c889a84ce47f1dfa318f1803f7b5636..fb38d03d126c9effebba96e84621bfa25dc53a10 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/DBFGS/DBFGS.C
@@ -51,11 +51,7 @@ void Foam::DBFGS::allocateMatrices()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(correction_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Set previous Hessian to be a diagonal matrix
@@ -162,6 +158,11 @@ void Foam::DBFGS::readFromDict()
         label n = HessianOld_.n();
         Hessian_ = SquareMatrix<scalar>(n, Zero);
         correction_ = scalarField(correctionOld_.size(), Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(n);
+        }
     }
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C
index c60d094b9fb452ef9df5078028c7ad9a8e40268e..5478281842ab518ba7b10d5108bd6ebf193b7ee5 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/LBFGS/LBFGS.C
@@ -51,11 +51,7 @@ void Foam::LBFGS::allocateMatrices()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(objectiveDerivatives_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Allocate vectors
@@ -184,6 +180,11 @@ void Foam::LBFGS::readFromDict()
         optMethodIODict_.readEntry("correctionOld", correctionOld_);
 
         correction_ = scalarField(correctionOld_.size(), Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(derivativesOld_.size());
+        }
     }
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C
index 8f91c5e2272f8d71e2a3170935086e6858b825e7..9d988abe83c7f3fc6882c10ccec83be079304e30 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SQP/SQP.C
@@ -58,11 +58,7 @@ void Foam::SQP::allocateMatrices()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(correction_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Set previous Hessian to be a diagonal matrix
@@ -269,6 +265,11 @@ void Foam::SQP::readFromDict()
         optMethodIODict_.readEntry("eta", eta_);
 
         correction_ = scalarField(correctionOld_.size(), Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(correction_.size());
+        }
     }
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C
index 69c98a54cbc492092553b3c1e548bb15958e5a1d..b582b57a24924de2e464726f691ad41d542f0324 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/SR1/SR1.C
@@ -51,11 +51,7 @@ void Foam::SR1::allocateMatrices()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(correction_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Set previous HessianInv to be a diagonal matrix
@@ -146,9 +142,14 @@ void Foam::SR1::readFromDict()
         optMethodIODict_.readEntry("counter", counter_);
         optMethodIODict_.readEntry("eta", eta_);
 
-        label n = HessianInvOld_.n();
+        const label n(HessianInvOld_.n());
         HessianInv_ = SquareMatrix<scalar>(n, Zero);
         correction_ = scalarField(correctionOld_.size(), Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(n);
+        }
     }
 }
 
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C
index 629ba8221e5e182842bf883120eed3ddcb5cc2ff..3e8ca3747ad646a4a1a6b7c01d167b17e233cbdb 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/updateMethod/conjugateGradient/conjugateGradient.C
@@ -51,11 +51,7 @@ void Foam::conjugateGradient::allocateFields()
     // Set active design variables, if necessary
     if (activeDesignVars_.empty())
     {
-        activeDesignVars_.setSize(objectiveDerivatives_.size());
-        forAll(activeDesignVars_, dvI)
-        {
-            activeDesignVars_[dvI] = dvI;
-        }
+        activeDesignVars_ = identity(objectiveDerivatives_.size());
     }
 
     // Allocate old fields
@@ -75,6 +71,11 @@ void Foam::conjugateGradient::readFromDict()
 
         label nDVs = optMethodIODict_.get<label>("nDVs");
         correction_ = scalarField(nDVs, Zero);
+
+        if (activeDesignVars_.empty())
+        {
+            activeDesignVars_ = identity(nDVs);
+        }
     }
 }
 
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..07d059bcacff8d226279db43918fdb5847109d2b
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/U
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 1 -1 0 0 0 0 ];
+
+internalField   uniform ( 3.95 0 0 );
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            fixedValue;
+        value           uniform ( 0 0 0 );
+    }
+    lower
+    {
+        type            fixedValue;
+        value           uniform ( 0 0 0 );
+    }
+    upper
+    {
+        type            fixedValue;
+        value           uniform ( 0 0 0 );
+    }
+    Inlet
+    {
+        type            fixedValue;
+        value           uniform ( 3.95 0 0 );
+    }
+    Outlet
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua
new file mode 100644
index 0000000000000000000000000000000000000000..465d3a935b64036c27b30823b986336a172c23b0
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/Ua
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      Ua;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 1 -1 0 0 0 0 ];
+
+internalField   uniform ( 0 0 0 );
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            adjointWallVelocity;
+        value           uniform ( 0 0 0 );
+    }
+    upper
+    {
+        type            adjointWallVelocity;
+        value           uniform ( 0 0 0 );
+    }
+    Inlet
+    {
+        type            adjointInletVelocity;
+        value           uniform ( 0 0 0 );
+    }
+    Outlet
+    {
+        type            adjointOutletVelocity;
+        value           uniform ( 0 0 0 );
+    }
+    lower
+    {
+        type            adjointWallVelocity;
+        value           uniform ( 0 0 0 );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda
new file mode 100644
index 0000000000000000000000000000000000000000..a7f8dfed2e494eefdf2459ff049f3c04cb494768
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuTilda
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nuTilda;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -1 0 0 0 0 ];
+
+internalField   uniform 4.5e-05;
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    upper
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    lower
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    Inlet
+    {
+        type            fixedValue;
+        value           uniform 4.5e-05;
+    }
+    Outlet
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda
new file mode 100644
index 0000000000000000000000000000000000000000..24b5f41f45be4e145f0081743274225df58dfa94
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nuaTilda
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nuaTilda;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 0 -1 0 0 0 0 ];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    upper
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    lower
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    Inlet
+    {
+        type            adjointInletNuaTilda;
+        value           uniform 0;
+    }
+    Outlet
+    {
+        type            adjointOutletNuaTilda;
+        value           uniform 0;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..206a8db7631a52be4f930c14695dd5b244e22a5e
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/nut
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -1 0 0 0 0 ];
+
+internalField   uniform 3.15e-06;
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            nutLowReWallFunction;
+        value           uniform 0;
+    }
+    upper
+    {
+        type            nutLowReWallFunction;
+        value           uniform 0;
+    }
+    lower
+    {
+        type            nutLowReWallFunction;
+        value           uniform 0;
+    }
+    Inlet
+    {
+        type            fixedValue;
+        value           uniform 3.15e-06;
+    }
+    Outlet
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..7c186dde34e43174fae60aa9dcb49846e3d8530a
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/p
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    lower
+    {
+        type            zeroGradient;
+    }
+    upper
+    {
+        type            zeroGradient;
+    }
+    sideWall
+    {
+        type            zeroGradient;
+    }
+    Inlet
+    {
+        type            zeroGradient;
+    }
+    Outlet
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa
new file mode 100644
index 0000000000000000000000000000000000000000..59938b12cd7971054952e0092b760fa44b919c2f
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/0/pa
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      pa;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    frontBack
+    {
+        type            empty;
+    }
+    sideWall
+    {
+        type            zeroGradient;
+    }
+    upper
+    {
+        type            zeroGradient;
+    }
+    Inlet
+    {
+        type            zeroGradient;
+    }
+    Outlet
+    {
+        type            adjointOutletPressure;
+        value           uniform 0;
+    }
+    lower
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..dbf18a2bf75c48ecce68d0dd7500eb55d7e792b7
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allclean
@@ -0,0 +1,10 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+cleanCase
+sed -i 's/endTime           10/endTime           5/g' system/controlDict
+sed -i 's/fromFile/axisAligned/g' constant/dynamicMeshDict
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..5fe5d93d73435e9038c5b1af9c8872e56913bd2d
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/Allrun
@@ -0,0 +1,17 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+#------------------------------------------------------------------------------
+
+resourcesDir=$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/resources
+
+\cp -r $resourcesDir/meshes/sbend/polyMesh constant
+runApplication decomposePar
+runParallel $(getApplication)
+mv log.adjointOptimisationFoam log.adjointOptimisationFoamFirstPhase
+sed -i 's/endTime           5/endTime           10/g' system/controlDict
+sed -i 's/axisAligned/fromFile/g' constant/dynamicMeshDict
+runParallel $(getApplication)
+runParallel cumulativeDisplacement
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..290360691b955b2d0160a3e869b683d51e7c5a08
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/adjointRASProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      adjointTurbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+adjointRASModel adjointSpalartAllmaras;
+
+adjointTurbulence on;
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..2fb565e7979d8671ac300768922a2ee64f4d4cb3
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/dynamicMeshDict
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      dynamicMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solver volumetricBSplinesMotionSolver;
+
+volumetricBSplinesMotionSolverCoeffs
+{
+    duct
+    {
+        type    cartesian;
+        nCPsU   9;
+        nCPsV   5;
+        nCPsW   3;
+        degreeU 3;
+        degreeV 3;
+        degreeW 2;
+
+        controlPointsDefinition axisAligned;
+        lowerCpBounds           (-1.1 -0.21 -0.05);
+        upperCpBounds           ( 1.1  0.39  0.15);
+
+        confineX1movement false;
+        confineX2movement false;
+        confineX3movement true;
+        confineBoundaryControlPoints false;
+
+        boundUMinCPs ( (true true true) (true true true) );
+        boundUMaxCPs ( (true true true) (true true true) );
+        boundWMinCPs ( (true true true) );
+        boundWMaxCPs ( (true true true) );
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..d0211f908ee1cb5850acfbc10c50a65e1de1ad25
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/transportProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel  Newtonian;
+
+nu              nu [0 2 -1 0 0 0 0] 1.5e-05;
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..2dfe5cd0e9b00a770c6651aaed1befbcfac0d378
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/constant/turbulenceProperties
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType RAS;
+
+RAS
+{
+    RASModel            SpalartAllmaras;
+
+    turbulence          on;
+
+    printCoeffs         on;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..d72b1e2f212da35ffd6927da933935e07c35c214
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/controlDict
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application       adjointOptimisationFoam;
+
+startFrom         latestTime; 
+
+startTime         0;
+
+stopAt            endTime;
+
+endTime           5;
+
+deltaT            1;
+
+writeControl      timeStep;
+
+writeInterval     1;
+
+purgeWrite        0;
+
+writeFormat       ascii;
+
+writePrecision    16;
+
+writeCompression  true;
+
+timeFormat        general;
+
+timePrecision     6;
+
+runTimeModifiable yes;
+
+functions
+{
+    yPlus
+    {   
+        type            yPlus;
+        libs            ("libfieldFunctionObjects.so");
+        writeControl    writeTime;
+    }   
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..614d8914884920a71739102b95ff691cfe7768dd
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/decomposeParDict
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          hierarchical;
+
+coeffs
+{
+    n               (4 1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..ed618ddb42612ba707e87283ee4f19fa0cfbd5aa
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSchemes
@@ -0,0 +1,71 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    gradDConv       cellLimited Gauss linear 1;
+}
+
+divSchemes
+{
+    default            Gauss linear;
+
+    div(phi,U)         bounded Gauss linearUpwind gradUConv;
+    div(phi,nuTilda)   bounded Gauss linearUpwind gradNuTildaConv;
+    div(yPhi,yWall)            Gauss linearUpwind gradDConv;
+    div(-phi,Ua)       bounded Gauss linearUpwind gradUaConv;
+    div(-phi,nuaTilda) bounded Gauss linearUpwind gradNuaTildaConv;
+    div(-yPhi,da)              Gauss linearUpwind gradDaConv;
+
+    div((nuEff*dev(grad(U).T()))) Gauss linear;
+    div((nuEff*dev(grad(Ua).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear limited 0.333;
+
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+wallDist
+{
+    method advectionDiffusion;
+    advectionDiffusionCoeffs
+    {
+        method    meshWave;
+        tolerance 3.e-6;
+        maxIter   1000;
+        epsilon   0.1;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..6e36a45a3444701bf99e7df57c37f58b47bd5129
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/fvSolution
@@ -0,0 +1,65 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+SIMPLE          
+{
+    nNonOrthogonalCorrectors 0;
+}    
+
+solvers
+{
+    "p|pa" 
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-9;
+        relTol           0.01;
+    };
+    "m|ma"
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-9;
+        relTol           0.01;
+    };
+    "U|Ua|nuTilda|nuaTilda|yWall|da" 
+    {
+        solver           PBiCGStab;
+        preconditioner   DILU;
+        tolerance        1e-9;
+        relTol           0.1;
+    };
+}
+
+relaxationFactors 
+{
+    fields
+    {
+        p               0.5;
+        pa              0.5;
+    }
+    equations
+    {
+        U               0.7;
+        Ua              0.7;
+        nuTilda         0.7;
+        nuaTilda        0.7;
+        yWall           0.7;
+        da              0.7;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict
new file mode 100644
index 0000000000000000000000000000000000000000..dd37fade2ad19f94dc233494da3674980fde524b
--- /dev/null
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/opt/BFGS-continuation/system/optimisationDict
@@ -0,0 +1,136 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1912                                  |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      optimisationDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+optimisationManager     steadyOptimisation;
+
+primalSolvers
+{
+    p1
+    {
+        active                 true;
+        type                   incompressible;
+        solver                 simple;
+        solutionControls
+        {
+            nIters 3000;
+            residualControl
+            {
+                "p.*"       1.e-7;
+                "U.*"       1.e-7;
+                "nuTilda.*" 1.e-7;
+            }
+        }
+    }
+}
+
+adjointManagers
+{
+    am1
+    {
+        primalSolver             p1;
+        adjointSolvers
+        {
+            as1
+            {
+                // choose adjoint solver
+                //----------------------
+                active                 true;
+                type                   incompressible;
+                solver                 adjointSimple;
+
+                // manage objectives
+                //------------------
+                objectives
+                {
+                    type                incompressible;
+                    objectiveNames
+                    {
+                        losses
+                        {
+                            weight              1;
+                            type                PtLosses;
+                            patches             (Inlet Outlet);
+                        }
+                    }
+                }
+
+                // ATC treatment
+                //--------------
+                ATCModel
+                {
+                    ATCModel        standard;
+                }
+
+                // solution control
+                //------------------
+                solutionControls
+                {
+                    nIters 3000;
+                    residualControl
+                    {
+                        "pa.*"       1.e-7;
+                        "Ua.*"       1.e-7;
+                    }
+                }
+            }
+        }
+    }
+}
+
+optimisation
+{
+    optimisationType
+    {
+        type             shapeOptimisation;
+        writeEachMesh    true;
+    }
+
+    sensitivities
+    {
+        type                volumetricBSplinesFI;
+        patches             (lower upper);
+    }
+    updateMethod
+    {
+        method BFGS;
+        BFGS
+        {
+            etaHessian        0.8;
+            scaleFirstHessian true;
+            /*
+            activeDesignVariables
+            (
+                141	142 144	145 147	148
+                150	151 153	154 168	169
+                171	172 174	175 177	178
+                180	181 195	196 198	199
+                201	202 204	205 207	208
+                222	223 225	226 228	229
+                231	232 234	235 249	250
+                252	253 255	256 258	259
+                261	262
+            );
+            */
+        }
+    }
+    meshMovement
+    {
+        type                   volumetricBSplines;
+        maxAllowedDisplacement 2.e-3;
+    }
+}
+
+// ************************************************************************* //