From 3689cff2d9832f1e70caf56e50b194cb7a9af4e1 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Wed, 10 Feb 2010 21:22:16 +0000
Subject: [PATCH] run and don't crash

[[Imported from SVN: r5528]]
---
 src/targetspacertrsolver.cc |  5 ++---
 src/targetspacertrsolver.hh | 16 ++++++++++++----
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/targetspacertrsolver.cc b/src/targetspacertrsolver.cc
index b95edcee..bb747811 100644
--- a/src/targetspacertrsolver.cc
+++ b/src/targetspacertrsolver.cc
@@ -17,7 +17,7 @@ setup(const AverageDistanceAssembler<TargetSpace>* assembler,
         double innerTolerance)
 {
     x_                        = x;
-    this->tolerance_          = tolerance;
+    tolerance_                = tolerance;
     maxTrustRegionSteps_      = maxTrustRegionSteps;
     initialTrustRegionRadius_ = initialTrustRegionRadius;
     innerIterations_          = innerIterations;
@@ -42,8 +42,7 @@ setup(const AverageDistanceAssembler<TargetSpace>* assembler,
     //   Create obstacles
     // //////////////////////////////////////////////////////////
     
-    innerSolverStep->obstacle_->resize(1);
-    innerSolverStep->obstacle_->setAll();
+    //innerSolverStep->hasObstacle_ = &dummyObstacle_;
     
 }
 
diff --git a/src/targetspacertrsolver.hh b/src/targetspacertrsolver.hh
index cee788a9..59d110f1 100644
--- a/src/targetspacertrsolver.hh
+++ b/src/targetspacertrsolver.hh
@@ -18,8 +18,10 @@ class TargetSpaceRiemannianTRSolver
     typedef double field_type;
 
     // Some types that I need
-    typedef Dune::FieldMatrix<field_type, blocksize, blocksize> MatrixType;
-    typedef Dune::FieldVector<field_type, blocksize>           CorrectionType;
+    // The types have the dynamic outer type because the dune-solvers solvers expect
+    // this sort of type.
+    typedef Dune::Matrix<Dune::FieldMatrix<field_type, blocksize, blocksize> > MatrixType;
+    typedef Dune::BlockVector<Dune::FieldVector<field_type, blocksize> >       CorrectionType;
 
 public:
 
@@ -49,6 +51,9 @@ protected:
     /** \brief The solution vector */
     TargetSpace x_;
 
+    /** \brief Tolerance of the solver */
+    double tolerance_;
+
     /** \brief The initial trust-region radius in the maximum-norm */
     double initialTrustRegionRadius_;
 
@@ -61,11 +66,14 @@ protected:
     /** \brief Error tolerance of the multigrid QP solver */
     double innerTolerance_;
 
-    /** \brief The assembler for the material law */
+    /** \brief The assembler for the average-distance functional */
     const AverageDistanceAssembler<TargetSpace>* assembler_;
 
     /** \brief The solver for the quadratic inner problems */
-    ::LoopSolver<Dune::array<CorrectionType,1> >* innerSolver_;
+    ::LoopSolver<CorrectionType>* innerSolver_;
+
+//     /** \brief Dummy field for the trustregiongsstep */
+//     Dune::BitSetVector<blocksize> dummyObstacle_;
 
 };
 
-- 
GitLab