diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 564b7f5d0744435331c3dc5bd14b49c08a187fe6..c90898532b7c431b7b06355d5afc9ed3cbb3fcc5 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -327,7 +327,10 @@ int main(int argc, char *argv[]) {
         MultigridStep<OperatorType, VectorType> *linearIterationStep =
             new MultigridStep<OperatorType, VectorType>;
         linearIterationStep->setNumberOfLevels(levels);
-        linearIterationStep->setMGType(1, 3, 3); // 1/3/3 (mu/nu1/nu2)
+        linearIterationStep->setMGType(
+            parset.get<int>("solver.tnnmg.linear.mu"),
+            parset.get<int>("solver.tnnmg.linear.nu1"),
+            parset.get<int>("solver.tnnmg.linear.nu2"));
         linearIterationStep->basesolver_ = linearBaseSolver;
         linearIterationStep->setSmoother(linearPresmoother, linearPostsmoother);
 
@@ -353,7 +356,10 @@ int main(int argc, char *argv[]) {
         auto multigridStep =
             new TNNMGStepType(*linearIterationStep, *nonlinearSmoother);
         multigridStep->setProblem(u4_diff_new, *tnnmgProblem);
-        multigridStep->setSmoothingSteps(3, 1, 3); // 3/1/3 (pre/linear/post)
+        multigridStep->setSmoothingSteps(
+            parset.get<int>("solver.tnnmg.main.nu1"),
+            parset.get<int>("solver.tnnmg.main.mu"),
+            parset.get<int>("solver.tnnmg.main.nu2"));
         multigridStep->ignoreNodes_ = &ignoreNodes;
 
         auto energyNorm =
diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset
index 5f332639c961eec1fd55e01a26279f9053334ea5..323666675ae987ff304a175046e56dbe60c8531b 100644
--- a/src/one-body-sample.parset
+++ b/src/one-body-sample.parset
@@ -22,6 +22,16 @@ nu = 0.3
 maxiterations = 1000000
 tolerance = 1e-12
 
+[solver.tnnmg.linear]
+nu1 = 3
+mu = 1
+nu2 = 3
+
+[solver.tnnmg.main]
+nu1 = 3
+mu = 1
+nu2 = 3
+
 [localsolver]
 steps = 1