From 8de3b497233ff265b1f3291342a67c1f18c79f44 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Tue, 30 Oct 2012 14:32:08 +0100 Subject: [PATCH] Externalise some more --- src/one-body-sample.org | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/one-body-sample.org b/src/one-body-sample.org index ac3d6581..ab8164bf 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); -- GitLab