Skip to content
Snippets Groups Projects
Commit 66b3ebf1 authored by Oliver Sander's avatar Oliver Sander Committed by sander@PCPOOL.MI.FU-BERLIN.DE
Browse files

don't hardwire trust-region solver tolerance

[[Imported from SVN: r1510]]
parent b1bbcb7a
No related branches found
No related tags found
No related merge requests found
...@@ -49,6 +49,7 @@ template <class GridType> ...@@ -49,6 +49,7 @@ template <class GridType>
void RodSolver<GridType>::setup(const GridType& grid, void RodSolver<GridType>::setup(const GridType& grid,
const RodAssembler<GridType>* rodAssembler, const RodAssembler<GridType>* rodAssembler,
const SolutionType& x, const SolutionType& x,
double tolerance,
int maxTrustRegionSteps, int maxTrustRegionSteps,
double initialTrustRegionRadius, double initialTrustRegionRadius,
int multigridIterations, int multigridIterations,
...@@ -65,6 +66,7 @@ void RodSolver<GridType>::setup(const GridType& grid, ...@@ -65,6 +66,7 @@ void RodSolver<GridType>::setup(const GridType& grid,
grid_ = &grid; grid_ = &grid;
rodAssembler_ = rodAssembler; rodAssembler_ = rodAssembler;
x_ = x; x_ = x;
tolerance_ = tolerance;
maxTrustRegionSteps_ = maxTrustRegionSteps; maxTrustRegionSteps_ = maxTrustRegionSteps;
initialTrustRegionRadius_ = initialTrustRegionRadius; initialTrustRegionRadius_ = initialTrustRegionRadius;
multigridIterations_ = multigridIterations; multigridIterations_ = multigridIterations;
...@@ -322,7 +324,7 @@ void RodSolver<GridType>::solve() ...@@ -322,7 +324,7 @@ void RodSolver<GridType>::solve()
printf("infinity norm of the correction: %g\n", corr.infinity_norm()); printf("infinity norm of the correction: %g\n", corr.infinity_norm());
if (corr.infinity_norm() < 1e-5) { if (corr.infinity_norm() < tolerance_) {
std::cout << "CORRECTION IS SMALL ENOUGH" << std::endl; std::cout << "CORRECTION IS SMALL ENOUGH" << std::endl;
break; break;
} }
...@@ -344,12 +346,6 @@ void RodSolver<GridType>::solve() ...@@ -344,12 +346,6 @@ void RodSolver<GridType>::solve()
} }
#if 0
std::cout << "newIterate: \n";
for (int j=0; j<newIterate.size(); j++)
std::cout << newIterate[j] << std::endl;
#endif
/** \todo Don't always recompute oldEnergy */ /** \todo Don't always recompute oldEnergy */
double oldEnergy = rodAssembler_->computeEnergy(x_); double oldEnergy = rodAssembler_->computeEnergy(x_);
double energy = rodAssembler_->computeEnergy(newIterate); double energy = rodAssembler_->computeEnergy(newIterate);
......
...@@ -35,6 +35,7 @@ public: ...@@ -35,6 +35,7 @@ public:
void setup(const GridType& grid, void setup(const GridType& grid,
const RodAssembler<GridType>* rodAssembler, const RodAssembler<GridType>* rodAssembler,
const SolutionType& x, const SolutionType& x,
double tolerance,
int maxTrustRegionSteps, int maxTrustRegionSteps,
double initialTrustRegionRadius, double initialTrustRegionRadius,
int multigridIterations, int multigridIterations,
...@@ -65,6 +66,9 @@ protected: ...@@ -65,6 +66,9 @@ protected:
/** \brief The initial trust-region radius in the maximum-norm */ /** \brief The initial trust-region radius in the maximum-norm */
double initialTrustRegionRadius_; double initialTrustRegionRadius_;
/** \brief Tolerance of the trust-region solver */
double tolerance_;
/** \brief Maximum number of trust-region steps */ /** \brief Maximum number of trust-region steps */
int maxTrustRegionSteps_; int maxTrustRegionSteps_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment