diff --git a/src/one-body-sample.org b/src/one-body-sample.org index ac3d65817d35363c9a3f3631fdb998748b60ac99..ab8164bf39528973208cae9143143c23af2639f9 100644 --- a/src/one-body-sample.org +++ b/src/one-body-sample.org @@ -176,6 +176,27 @@ std::cerr << std::endl; #+end_src +#+name: setupAndSolveProblem +#+begin_src c++ + { + auto myGlobalNonlinearity + = assemble_nonlinearity<MatrixType, VectorType> + (parset.sub("boundary.friction"), *nodalIntegrals, alpha, + surfaceNormalStress); + + MyConvexProblemType const myConvexProblem + (problem_A, *myGlobalNonlinearity, problem_rhs); + MyBlockProblemType myBlockProblem(parset, myConvexProblem); + auto multigridStep = mySolver.getSolver(); + multigridStep->setProblem(problem_iterate, myBlockProblem); + + LoopSolver<VectorType> overallSolver + (multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"), + solver_tolerance, &energyNorm, verbosity, false); // absolute error + overallSolver.solve(); + } +#+end_src + * Main #+begin_src c++ :tangle one-body-sample.cc :noweb yes #ifdef HAVE_CONFIG_H @@ -484,21 +505,7 @@ VectorType u_saved; for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) { - auto myGlobalNonlinearity - = assemble_nonlinearity<MatrixType, VectorType> - (parset.sub("boundary.friction"), *nodalIntegrals, alpha, - surfaceNormalStress); - - MyConvexProblemType const myConvexProblem - (problem_A, *myGlobalNonlinearity, problem_rhs); - MyBlockProblemType myBlockProblem(parset, myConvexProblem); - auto multigridStep = mySolver.getSolver(); - multigridStep->setProblem(problem_iterate, myBlockProblem); - - LoopSolver<VectorType> overallSolver - (multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"), - solver_tolerance, &energyNorm, verbosity, false); // absolute error - overallSolver.solve(); + <<setupAndSolveProblem>>; timeSteppingScheme->postProcess(problem_iterate); timeSteppingScheme->extractDisplacement(u);