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

look at relative decrease when trying to detect rounding problems

[[Imported from SVN: r1635]]
parent 6bb683ef
No related branches found
No related tags found
No related merge requests found
...@@ -367,10 +367,13 @@ void RodSolver<GridType>::solve() ...@@ -367,10 +367,13 @@ void RodSolver<GridType>::solve()
hessianMatrix_->umv(corr, tmp); hessianMatrix_->umv(corr, tmp);
double modelDecrease = (rhs*corr) - 0.5 * (corr*tmp); double modelDecrease = (rhs*corr) - 0.5 * (corr*tmp);
if (this->verbosity_ == FULL) if (this->verbosity_ == FULL) {
std::cout << "Model decrease: " << modelDecrease std::cout << "Absolute model decrease: " << modelDecrease
<< ", functional decrease: " << oldEnergy - energy << std::endl; << ", functional decrease: " << oldEnergy - energy << std::endl;
std::cout << "Relative model decrease: " << modelDecrease / energy
<< ", functional decrease: " << (oldEnergy - energy)/energy << std::endl;
}
assert(modelDecrease >= 0); assert(modelDecrease >= 0);
if (energy >= oldEnergy) { if (energy >= oldEnergy) {
...@@ -378,14 +381,16 @@ void RodSolver<GridType>::solve() ...@@ -378,14 +381,16 @@ void RodSolver<GridType>::solve()
printf("Richtung ist keine Abstiegsrichtung!\n"); printf("Richtung ist keine Abstiegsrichtung!\n");
} }
if (std::abs(oldEnergy-energy) < 1e-12 || modelDecrease < 1e-10) { #if 1
if (std::abs(oldEnergy-energy)/energy < 1e-9 || modelDecrease/energy < 1e-9) {
if (this->verbosity_ == FULL) if (this->verbosity_ == FULL)
std::cout << "Suspecting rounding problems" << std::endl; std::cout << "Suspecting rounding problems" << std::endl;
if (this->verbosity_ != QUIET) if (this->verbosity_ != QUIET)
std::cout << i+1 << " trust-region steps were taken." << std::endl; std::cout << i+1 << " trust-region steps were taken." << std::endl;
break; //break;
} }
#endif
// ////////////////////////////////////////////// // //////////////////////////////////////////////
// Check for acceptance of the step // Check for acceptance of the step
......
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