Skip to content
Snippets Groups Projects
Commit 9e957e89 authored by Oliver Sander's avatar Oliver Sander Committed by sander
Browse files

Use the TwoNorm to monitor convergence of the Gauss-Seidel base solver

Previously the energy norm was used, but as we are solving non-convex
problems the Hessians may be indefinite, and then the EnergyNorm is not
a norm.

[[Imported from SVN: r9835]]
parent 8d813458
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,7 @@
#include <dune/solvers/solvers/iterativesolver.hh>
#include "maxnormtrustregion.hh"
#include <dune/solvers/norms/energynorm.hh>
#include <dune/solvers/norms/twonorm.hh>
#include <dune/solvers/norms/h1seminorm.hh>
#include <dune/gfe/parallel/matrixcommunicator.hh>
......@@ -81,12 +81,13 @@ setup(const GridType& grid,
// First create a Gauss-seidel base solver
TrustRegionGSStep<MatrixType, CorrectionType>* baseSolverStep = new TrustRegionGSStep<MatrixType, CorrectionType>;
EnergyNorm<MatrixType, CorrectionType>* baseEnergyNorm = new EnergyNorm<MatrixType, CorrectionType>(*baseSolverStep,1e-3);
// Hack: the two-norm may not scale all that well, but it is fast!
TwoNorm<CorrectionType>* baseNorm = new TwoNorm<CorrectionType>;
::LoopSolver<CorrectionType>* baseSolver = new ::LoopSolver<CorrectionType>(baseSolverStep,
baseIterations,
baseTolerance,
baseEnergyNorm,
baseNorm,
Solver::QUIET);
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment