diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
index 08414687e0127bc23e57e45312be9e292e48a871..5a1edb952f204fa1ca4a20c5f7ec87d25629cc10 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.C
@@ -27,6 +27,8 @@ License
 
 #include "GAMGSolver.H"
 #include "GAMGInterface.H"
+#include "PCG.H"
+#include "PBiCGStab.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -249,11 +251,11 @@ Foam::GAMGSolver::GAMGSolver
 
     if (matrixLevels_.size())
     {
-        if (directSolveCoarsest_)
-        {
-            const label coarsestLevel = matrixLevels_.size() - 1;
+        const label coarsestLevel = matrixLevels_.size() - 1;
 
-            if (matrixLevels_.set(coarsestLevel))
+        if (matrixLevels_.set(coarsestLevel))
+        {
+            if (directSolveCoarsest_)
             {
                 coarsestLUMatrixPtr_.reset
                 (
@@ -265,6 +267,56 @@ Foam::GAMGSolver::GAMGSolver
                     )
                 );
             }
+            else
+            {
+                entry* coarseEntry = controlDict_.findEntry
+                (
+                    "coarsestLevelCorr",
+                    keyType::LITERAL_RECURSIVE
+                );
+                if (coarseEntry && coarseEntry->isDict())
+                {
+                    coarsestSolverPtr_ = lduMatrix::solver::New
+                    (
+                        "coarsestLevelCorr",
+                        matrixLevels_[coarsestLevel],
+                        interfaceLevelsBouCoeffs_[coarsestLevel],
+                        interfaceLevelsIntCoeffs_[coarsestLevel],
+                        interfaceLevels_[coarsestLevel],
+                        coarseEntry->dict()
+                    );
+                }
+                else if (matrixLevels_[coarsestLevel].asymmetric())
+                {
+                    coarsestSolverPtr_.set
+                    (
+                        new PBiCGStab
+                        (
+                            "coarsestLevelCorr",
+                            matrixLevels_[coarsestLevel],
+                            interfaceLevelsBouCoeffs_[coarsestLevel],
+                            interfaceLevelsIntCoeffs_[coarsestLevel],
+                            interfaceLevels_[coarsestLevel],
+                            PBiCGStabSolverDict(tolerance_, relTol_)
+                        )
+                    );
+                }
+                else
+                {
+                    coarsestSolverPtr_.set
+                    (
+                        new PCG
+                        (
+                            "coarsestLevelCorr",
+                            matrixLevels_[coarsestLevel],
+                            interfaceLevelsBouCoeffs_[coarsestLevel],
+                            interfaceLevelsIntCoeffs_[coarsestLevel],
+                            interfaceLevels_[coarsestLevel],
+                            PCGsolverDict(tolerance_, relTol_)
+                        )
+                    );
+                }
+            }
         }
     }
     else
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.H
index 3736926650aa077a59494f1a9334848ff15a29cc..19ca1d0f4d8c61947845764caef82c97e8c5333f 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.H
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolver.H
@@ -135,6 +135,9 @@ class GAMGSolver
         //- LU decomposed coarsest matrix
         autoPtr<LUscalarMatrix> coarsestLUMatrixPtr_;
 
+        //- Sparse coarsest matrix solver
+        autoPtr<lduMatrix::solver> coarsestSolverPtr_;
+
 
     // Private Member Functions
 
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C
index 25fc7a8481497e81c3a05630034bff17596b427d..644de4eef9a94fad2f978991fb83af796d83e03b 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverSolve.C
@@ -26,8 +26,6 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "GAMGSolver.H"
-#include "PCG.H"
-#include "PBiCGStab.H"
 #include "SubField.H"
 #include "PrecisionAdaptor.H"
 
@@ -695,42 +693,16 @@ void Foam::GAMGSolver::solveCoarsestLevel
     else
     {
         coarsestCorrField = 0;
-        solverPerformance coarseSolverPerf;
-
-        if (matrixLevels_[coarsestLevel].asymmetric())
-        {
-            coarseSolverPerf = PBiCGStab
-            (
-                "coarsestLevelCorr",
-                matrixLevels_[coarsestLevel],
-                interfaceLevelsBouCoeffs_[coarsestLevel],
-                interfaceLevelsIntCoeffs_[coarsestLevel],
-                interfaceLevels_[coarsestLevel],
-                PBiCGStabSolverDict(tolerance_, relTol_)
-            ).scalarSolve
-            (
-                coarsestCorrField,
-                coarsestSource
-            );
-        }
-        else
-        {
-            coarseSolverPerf = PCG
-            (
-                "coarsestLevelCorr",
-                matrixLevels_[coarsestLevel],
-                interfaceLevelsBouCoeffs_[coarsestLevel],
-                interfaceLevelsIntCoeffs_[coarsestLevel],
-                interfaceLevels_[coarsestLevel],
-                PCGsolverDict(tolerance_, relTol_)
-            ).scalarSolve
+        const solverPerformance coarseSolverPerf
+        (
+            coarsestSolverPtr_->solve
             (
                 coarsestCorrField,
                 coarsestSource
-            );
-        }
+            )
+        );
 
-        if (debug >= 2)
+        if (debug)
         {
             coarseSolverPerf.print(Info.masterStream(coarseComm));
         }
diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/lesFiles/fvSolution b/tutorials/incompressible/pisoFoam/LES/motorBike/lesFiles/fvSolution
index c94598b2732c0ecf9b21355402caa66bb96a19a4..a3f28e6951b7f1c5cc10abe1c68687565c121d28 100644
--- a/tutorials/incompressible/pisoFoam/LES/motorBike/lesFiles/fvSolution
+++ b/tutorials/incompressible/pisoFoam/LES/motorBike/lesFiles/fvSolution
@@ -33,6 +33,15 @@ solvers
     {
         $p;
         relTol          0;
+
+        // Explicit specify solver for coarse-level correction to override
+        // solution tolerance
+        coarsestLevelCorr
+        {
+            solver          PCG;
+            preconditioner  DIC;
+            relTol          0.05;
+        }
     }
 
     "(U|k|B|nuTilda)"