From 0d3ff1cc871815e85a886bc02638081207082df6 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Fri, 22 Aug 2014 12:49:19 +0000 Subject: [PATCH] Move mmgStep preprocess out of the solver iteration [[Imported from SVN: r9856]] --- dune/gfe/mixedriemanniantrsolver.cc | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/dune/gfe/mixedriemanniantrsolver.cc b/dune/gfe/mixedriemanniantrsolver.cc index 7a86d524..aaa7648d 100644 --- a/dune/gfe/mixedriemanniantrsolver.cc +++ b/dune/gfe/mixedriemanniantrsolver.cc @@ -428,29 +428,38 @@ void MixedRiemannianTrustRegionSolver<GridType,Basis0,TargetSpace0,Basis1,Target /////////////////////////////// // Solve ! /////////////////////////////// + CorrectionType0 residual0 = rhs_global0; + CorrectionType1 residual1 = rhs_global1; + + mmgStep0->setProblem(stiffnessMatrix00, corr_global0, residual0); + trustRegionObstacles0 = trustRegion0.obstacles(); + mmgStep0->obstacles_ = &trustRegionObstacles0; + + mmgStep0->preprocess(); + + mmgStep1->setProblem(stiffnessMatrix11, corr_global1, residual1); + trustRegionObstacles1 = trustRegion1.obstacles(); + mmgStep1->obstacles_ = &trustRegionObstacles1; + + mmgStep1->preprocess(); + std::cout << "Solve quadratic problem..." << std::endl; Dune::Timer solutionTimer; for (int ii=0; ii<200; ii++) { std::cout << "Iteration " << ii << std::endl; - CorrectionType0 residual0 = rhs_global0; - CorrectionType1 residual1 = rhs_global1; + residual0 = rhs_global0; + residual1 = rhs_global1; stiffnessMatrix01.mmv(corr_global1, residual0); mmgStep0->setProblem(stiffnessMatrix00, corr_global0, residual0); - trustRegionObstacles0 = trustRegion0.obstacles(); - mmgStep0->obstacles_ = &trustRegionObstacles0; - mmgStep0->preprocess(); mmgStep0->iterate(); stiffnessMatrix10.mmv(corr_global0, residual1); mmgStep1->setProblem(stiffnessMatrix11, corr_global1, residual1); - trustRegionObstacles1 = trustRegion1.obstacles(); - mmgStep1->obstacles_ = &trustRegionObstacles1; - mmgStep1->preprocess(); mmgStep1->iterate(); } -- GitLab