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