diff --git a/tutorials/helmholtz/scattering3D/main.cpp b/tutorials/helmholtz/scattering3D/main.cpp
index 994c6dfda475ef1e5f949fdc7a7733bc227e8345..b23d6131cd6670f7f04bee95d719a06f652534b6 100644
--- a/tutorials/helmholtz/scattering3D/main.cpp
+++ b/tutorials/helmholtz/scattering3D/main.cpp
@@ -60,6 +60,9 @@ int main(int argc, char **argv)
   int nDom = 2;
   gmshDdm.userDefinedParameter(nDom, "nDom");
 
+  std::string solver = "gmres"; // try also "tfqmr"
+  gmshDdm.userDefinedParameter(solver, "solver");
+
   double lc = 0.1;
   gmshDdm.userDefinedParameter(lc, "lc");
 
@@ -226,7 +229,7 @@ int main(int argc, char **argv)
   double tolerence = 1e-6;
   int maxIter = 1000;
   formulation.pre();
-  formulation.solve("gmres", tolerence, maxIter, true);
+  formulation.solve(solver, tolerence, maxIter, true);
 
   if(u_exact) {
     // Compute analytic L2-error