diff --git a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
index 2b70f305685f60a509b88349497b35b4950ded1e..4729ac3bf34bac88c1d97c8367d5fb3f185dc765 100644
--- a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
+++ b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
@@ -45,33 +45,37 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
 
-    IOdictionary dict
+    const dictionary NURBSdict
     (
-        IOobject
+        IOdictionary
         (
-            "dynamicMeshDict",
-            mesh.time().constant(),
-            mesh,
-            IOobject::MUST_READ_IF_MODIFIED,
-            IOobject::NO_WRITE
-        )
+            IOobject
+            (
+                "dynamicMeshDict",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).subDict("volumetricBSplinesMotionSolverCoeffs")
     );
+    // Read box names and allocate size
+    wordList controlBoxes(NURBSdict.toc());
 
-    const dictionary& coeffDict =
-        dict.subDict("volumetricBSplinesMotionSolverCoeffs");
-
-    wordList controlBoxes(coeffDict.get<wordList>("controlBoxes"));
-
-    forAll(controlBoxes, iNURB)
+    for (const word& boxName : controlBoxes)
     {
-        // Creating an object writes the control points in the 
-        // constructor
-        NURBS3DVolume::New
-        (
-            coeffDict.subDict(controlBoxes[iNURB]),
-            mesh,
-            false // do not compute parametric coordinates
-        );
+        if (NURBSdict.isDict(boxName))
+        {
+            // Creating an object writes the control points in the
+            // constructor
+            NURBS3DVolume::New
+            (
+                NURBSdict.subDict(boxName),
+                mesh,
+                false // do not compute parametric coordinates
+            );
+        }
     }
 
     Info<< "End\n" << endl;
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C
index db9a4565312f194bb2c5d0a720789e00fd16868a..9ac5a2812c5fa73243e0ec374e929a64c984a0e9 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethod/displacementMethod.C
@@ -75,12 +75,11 @@ Foam::autoPtr<Foam::displacementMethod> Foam::displacementMethod::New
             false
         )
     );
-    word motionSolverName(dynamicMeshDict.get<word>("solver"));
-    word modelType("displacementMethod" + motionSolverName);
+    word solverType(dynamicMeshDict.get<word>("solver"));
 
-    Info<< "displacementMethod type : " << modelType << endl;
+    Info<< "displacementMethod type : " << solverType << endl;
 
-    auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
+    auto cstrIter = dictionaryConstructorTablePtr_->cfind(solverType);
 
     if (!cstrIter.found())
     {
@@ -88,9 +87,9 @@ Foam::autoPtr<Foam::displacementMethod> Foam::displacementMethod::New
         (
             dynamicMeshDict,
             "solver",
-            modelType,
+            solverType,
             *dictionaryConstructorTablePtr_
-        ) << exit(FatalError);
+        ) << exit(FatalIOError);
     }
     return autoPtr<displacementMethod>(cstrIter()(mesh, patchIDs));
 }
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H
index 2a4c30245b1640a5792c4a5d4208bd4dc5fb81a7..d9f2f3faef57f1b0d31810380e50bcd94beaca18 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethoddisplacementLaplacian/displacementMethoddisplacementLaplacian.H
@@ -82,7 +82,7 @@ private:
 public:
 
     //- Runtime type information
-    TypeName("displacementMethoddisplacementLaplacian");
+    TypeName("displacementLaplacian");
 
 
     // Constructors
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H
index a4123641601f7350fbf7438f6edf4bc8c94b8e62..50b8ec4df825bfab82c9f6b1a51075b49497b4e4 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodelasticityMotionSolver/displacementMethodelasticityMotionSolver.H
@@ -86,7 +86,7 @@ private:
 public:
 
     //- Runtime type information
-    TypeName("displacementMethodelasticityMotionSolver");
+    TypeName("elasticityMotionSolver");
 
 
     // Constructors
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H
index 294c0ddd2262b0a5fc3bbb2d0336cc66040bcfd0..083ab095893b01209457aa1b5733ac12c6e13b07 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodlaplacianMotionSolver/displacementMethodlaplacianMotionSolver.H
@@ -83,7 +83,7 @@ private:
 public:
 
     //- Runtime type information
-    TypeName("displacementMethodlaplacianMotionSolver");
+    TypeName("laplacianMotionSolver");
 
 
     // Constructors
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H
index 1f109009e08ecb594b37525add0d16250db72f2f..d2bea03b438f88f257712cd88b473f6d88d18c2a 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvelocityLaplacian/displacementMethodvelocityLaplacian.H
@@ -84,7 +84,7 @@ private:
 public:
 
     //- Runtime type information
-    TypeName("displacementMethodvelocityLaplacian");
+    TypeName("velocityLaplacian");
 
 
     // Constructors
diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H
index e82a17dd0f5d99d40aefb988b46d027aa6754bc5..283769544fa5e428534f8f0aef11c8108038fa9c 100644
--- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H
+++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.H
@@ -77,7 +77,7 @@ private:
 public:
 
     //- Runtime type information
-    TypeName("displacementMethodvolumetricBSplinesMotionSolver");
+    TypeName("volumetricBSplinesMotionSolver");
 
 
     // Constructors
diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C
index 794ad1b04e9a5f799e46694c27cd0ab9958d142e..e217065b30086f3eefd5eac1beec382b97a4d3eb 100644
--- a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C
+++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovement/optMeshMovement.C
@@ -110,7 +110,7 @@ Foam::autoPtr<Foam::optMeshMovement> Foam::optMeshMovement::New
             "type",
             modelType,
             *dictionaryConstructorTablePtr_
-        ) << exit(FatalError);
+        ) << exit(FatalIOError);
     }
 
     return autoPtr<optMeshMovement>(cstrIter()(mesh, dict, patchIDs));
@@ -156,9 +156,10 @@ void Foam::optMeshMovement::writeMeshQualityMetrics()
     if (writeMeshQualityMetrics_)
     {
         cellQuality cellQualityEngine(mesh_);
-        tmp<scalarField> cellNonOrtho = cellQualityEngine.nonOrthogonality();
-        tmp<scalarField> cellSkewness = cellQualityEngine.skewness();
-        Info<< "Average, Max cell non - orthogonality " << gAverage(cellNonOrtho())
+        tmp<scalarField> cellNonOrtho(cellQualityEngine.nonOrthogonality());
+        tmp<scalarField> cellSkewness(cellQualityEngine.skewness());
+        Info<< "Average, Max cell non - orthogonality "
+            << gAverage(cellNonOrtho())
             << " " << gMax(cellNonOrtho()) << endl;
         Info<< "Average, Max cell skewness " << gAverage(cellSkewness())
             << " " << gMax(cellSkewness()) << endl;
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;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
index 69abef2dca90fc3a6a3609090bf40641043b3d53..7c9b06005f0815e4c4bc9f4bae1045921a226851 100755
--- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
@@ -7,6 +7,7 @@ resourcesDir=$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/resources
 
 \cp $resourcesDir/param/sbend/* 0
 \cp -r $resourcesDir/meshes/sbend/polyMesh constant
+runApplication writeMorpherCPs
 runApplication decomposePar
 runParallel $(getApplication)