Skip to content
Snippets Groups Projects
Commit 39907dae authored by Dr. Felix Tobias Schindler's avatar Dr. Felix Tobias Schindler
Browse files

[eigen-solver] rename "ensure_" -> "assert_" in options

parent 39d83533
No related branches found
No related tags found
No related merge requests found
...@@ -53,13 +53,13 @@ static Common::Configuration default_eigen_solver_options() ...@@ -53,13 +53,13 @@ static Common::Configuration default_eigen_solver_options()
opts["compute_eigenvalues"] = "true"; opts["compute_eigenvalues"] = "true";
opts["compute_eigenvectors"] = "true"; opts["compute_eigenvectors"] = "true";
opts["check_for_inf_nan"] = "true"; opts["check_for_inf_nan"] = "true";
opts["real_tolerance"] = "1e-15"; // is only used if the respective ensure_... is negative opts["real_tolerance"] = "1e-15"; // is only used if the respective assert_... is negative
opts["ensure_real_eigenvalues"] = "-1"; // if positive, this is the check tolerance opts["assert_real_eigenvalues"] = "-1"; // if positive, this is the check tolerance
opts["ensure_positive_eigenvalues"] = "-1"; // if positive, this is the check tolerance opts["assert_positive_eigenvalues"] = "-1"; // if positive, this is the check tolerance
opts["ensure_negative_eigenvalues"] = "-1"; // if positive, this is the check tolerance opts["assert_negative_eigenvalues"] = "-1"; // if positive, this is the check tolerance
opts["ensure_real_eigenvectors"] = "-1"; // if positive, this is the check tolerance opts["assert_real_eigenvectors"] = "-1"; // if positive, this is the check tolerance
opts["ensure_eigendecomposition"] = "1e-10"; // disabled, if negative opts["assert_eigendecomposition"] = "1e-10"; // if positive, this is the check tolerance
opts["ensure_real_eigendecomposition"] = "-1"; // if positive, this is the check tolerance opts["assert_real_eigendecomposition"] = "-1"; // if positive, this is the check tolerance
return opts; return opts;
} // ... default_eigen_solver_options(...) } // ... default_eigen_solver_options(...)
...@@ -236,9 +236,10 @@ public: ...@@ -236,9 +236,10 @@ public:
} }
invert_eigenvectors(); invert_eigenvectors();
assert(eigenvectors_inverse_ && "This must not happen after calling invert_eigenvectors()!"); assert(eigenvectors_inverse_ && "This must not happen after calling invert_eigenvectors()!");
const double check_eigendecomposition = options_.get<double>("ensure_eigendecomposition"); const double check_eigendecomposition = options_.get<double>("assert_eigendecomposition");
complex_eigendecomposition_helper<>::check( if (check_eigendecomposition > 0)
*this, check_eigendecomposition > 0 ? check_eigendecomposition : options_.get<double>("real_tolerance")); complex_eigendecomposition_helper<>::check(
*this, check_eigendecomposition > 0 ? check_eigendecomposition : options_.get<double>("real_tolerance"));
return *eigenvectors_inverse_; return *eigenvectors_inverse_;
} // ... eigenvectors(...) } // ... eigenvectors(...)
...@@ -263,8 +264,8 @@ public: ...@@ -263,8 +264,8 @@ public:
{ {
compute_and_check(); compute_and_check();
if (!real_eigenvectors_) { if (!real_eigenvectors_) {
if (options_.get<double>("ensure_real_eigendecomposition") > 0 if (options_.get<double>("assert_real_eigendecomposition") > 0
|| options_.get<double>("ensure_real_eigenvectors") > 0) || options_.get<double>("assert_real_eigenvectors") > 0)
DUNE_THROW(Common::Exceptions::internal_error, DUNE_THROW(Common::Exceptions::internal_error,
"The real_eigenvectors_ member is not filled after calling compute()!"); "The real_eigenvectors_ member is not filled after calling compute()!");
else else
...@@ -274,7 +275,7 @@ public: ...@@ -274,7 +275,7 @@ public:
} }
invert_real_eigenvectors(); invert_real_eigenvectors();
assert(real_eigenvectors_inverse_ && "This must not happen after calling invert_real_eigenvectors()!"); assert(real_eigenvectors_inverse_ && "This must not happen after calling invert_real_eigenvectors()!");
const double check_eigendecomposition = options_.get<double>("ensure_real_eigendecomposition"); const double check_eigendecomposition = options_.get<double>("assert_real_eigendecomposition");
assert_eigendecomposition(matrix_, assert_eigendecomposition(matrix_,
*real_eigenvalues_, *real_eigenvalues_,
*real_eigenvectors_, *real_eigenvectors_,
...@@ -311,21 +312,21 @@ protected: ...@@ -311,21 +312,21 @@ protected:
if (options_.get<double>("real_tolerance") <= 0) if (options_.get<double>("real_tolerance") <= 0)
DUNE_THROW(Exceptions::eigen_solver_failed_bc_it_was_not_set_up_correctly, DUNE_THROW(Exceptions::eigen_solver_failed_bc_it_was_not_set_up_correctly,
"It does not make sense to enforce a non-positive tolerance!"); "It does not make sense to enforce a non-positive tolerance!");
if (options_.get<double>("ensure_positive_eigenvalues") > 0 if (options_.get<double>("assert_positive_eigenvalues") > 0
&& options_.get<double>("ensure_negative_eigenvalues") > 0) && options_.get<double>("assert_negative_eigenvalues") > 0)
DUNE_THROW(Exceptions::eigen_solver_failed_bc_it_was_not_set_up_correctly, DUNE_THROW(Exceptions::eigen_solver_failed_bc_it_was_not_set_up_correctly,
"It does not make sense to ensure positive and negative eigenvalues!"); "It does not make sense to assert positive and negative eigenvalues!");
if (!options_.get<bool>("compute_eigenvalues") && (options_.get<double>("ensure_real_eigenvalues") > 0 if (!options_.get<bool>("compute_eigenvalues") && (options_.get<double>("assert_real_eigenvalues") > 0
|| options_.get<double>("ensure_positive_eigenvalues") > 0 || options_.get<double>("assert_positive_eigenvalues") > 0
|| options_.get<double>("ensure_negative_eigenvalues") > 0 || options_.get<double>("assert_negative_eigenvalues") > 0
|| options_.get<double>("ensure_eigendecomposition") > 0 || options_.get<double>("assert_eigendecomposition") > 0
|| options_.get<double>("ensure_real_eigendecomposition") > 0)) || options_.get<double>("assert_real_eigendecomposition") > 0))
options_["compute_eigenvalues"] = "true"; options_["compute_eigenvalues"] = "true";
if (options_.get<double>("ensure_real_eigenvalues") <= 0 if (options_.get<double>("assert_real_eigenvalues") <= 0
&& (options_.get<double>("ensure_positive_eigenvalues") > 0 && (options_.get<double>("assert_positive_eigenvalues") > 0
|| options_.get<double>("ensure_negative_eigenvalues") > 0 || options_.get<double>("assert_negative_eigenvalues") > 0
|| options_.get<double>("ensure_real_eigendecomposition") > 0)) || options_.get<double>("assert_real_eigendecomposition") > 0))
options_["ensure_real_eigenvalues"] = options_["real_tolerance"]; options_["assert_real_eigenvalues"] = options_["real_tolerance"];
// check matrix // check matrix
check_size(matrix_); check_size(matrix_);
if (options_.get<bool>("check_for_inf_nan") && contains_inf_or_nan(matrix_)) { if (options_.get<bool>("check_for_inf_nan") && contains_inf_or_nan(matrix_)) {
...@@ -363,17 +364,17 @@ protected: ...@@ -363,17 +364,17 @@ protected:
<< "\nThese are the computed eigenvectors:\n\n" << "\nThese are the computed eigenvectors:\n\n"
<< *eigenvectors_); << *eigenvectors_);
} }
const double ensure_real_eigenvalues = options_.get<double>("ensure_real_eigenvalues"); const double assert_real_eigenvalues = options_.get<double>("assert_real_eigenvalues");
const double ensure_positive_eigenvalues = options_.get<double>("ensure_positive_eigenvalues"); const double assert_positive_eigenvalues = options_.get<double>("assert_positive_eigenvalues");
const double ensure_negative_eigenvalues = options_.get<double>("ensure_negative_eigenvalues"); const double assert_negative_eigenvalues = options_.get<double>("assert_negative_eigenvalues");
const double check_real_eigendecomposition = options_.get<double>("ensure_real_eigendecomposition"); const double check_real_eigendecomposition = options_.get<double>("assert_real_eigendecomposition");
if (ensure_real_eigenvalues > 0 || ensure_positive_eigenvalues > 0 || ensure_negative_eigenvalues > 0 if (assert_real_eigenvalues > 0 || assert_positive_eigenvalues > 0 || assert_negative_eigenvalues > 0
|| check_real_eigendecomposition > 0) || check_real_eigendecomposition > 0)
compute_real_eigenvalues(); compute_real_eigenvalues();
if (ensure_positive_eigenvalues > 0) { if (assert_positive_eigenvalues > 0) {
assert(real_eigenvalues_ && "This must not happen after compute_real_eigenvalues()!"); assert(real_eigenvalues_ && "This must not happen after compute_real_eigenvalues()!");
for (const auto& ev : *real_eigenvalues_) { for (const auto& ev : *real_eigenvalues_) {
if (ev < ensure_positive_eigenvalues) if (ev < assert_positive_eigenvalues)
DUNE_THROW(Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_positive_as_requested, DUNE_THROW(Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_positive_as_requested,
"These were the given options:\n\n" "These were the given options:\n\n"
<< options_ << options_
...@@ -381,10 +382,10 @@ protected: ...@@ -381,10 +382,10 @@ protected:
<< *eigenvectors_); << *eigenvectors_);
} }
} }
if (ensure_negative_eigenvalues > 0) { if (assert_negative_eigenvalues > 0) {
assert(real_eigenvalues_ && "This must not happen after compute_real_eigenvalues()!"); assert(real_eigenvalues_ && "This must not happen after compute_real_eigenvalues()!");
for (const auto& ev : *real_eigenvalues_) { for (const auto& ev : *real_eigenvalues_) {
if (ev > -1 * ensure_negative_eigenvalues) if (ev > -1 * assert_negative_eigenvalues)
DUNE_THROW(Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_negative_as_requested, DUNE_THROW(Exceptions::eigen_solver_failed_bc_eigenvalues_are_not_negative_as_requested,
"These were the given options:\n\n" "These were the given options:\n\n"
<< options_ << options_
...@@ -392,9 +393,9 @@ protected: ...@@ -392,9 +393,9 @@ protected:
<< *eigenvectors_); << *eigenvectors_);
} }
} }
if (options_.get<double>("ensure_real_eigenvectors") > 0 || check_real_eigendecomposition > 0) if (options_.get<double>("assert_real_eigenvectors") > 0 || check_real_eigendecomposition > 0)
compute_real_eigenvectors(); compute_real_eigenvectors();
const double check_eigendecomposition = options_.get<double>("ensure_eigendecomposition"); const double check_eigendecomposition = options_.get<double>("assert_eigendecomposition");
if (check_eigendecomposition > 0) if (check_eigendecomposition > 0)
complex_eigendecomposition_helper<>::check(*this, check_eigendecomposition); complex_eigendecomposition_helper<>::check(*this, check_eigendecomposition);
if (check_real_eigendecomposition > 0) { if (check_real_eigendecomposition > 0) {
...@@ -408,9 +409,9 @@ protected: ...@@ -408,9 +409,9 @@ protected:
{ {
assert(eigenvalues_ && "This should not happen!"); assert(eigenvalues_ && "This should not happen!");
if (!real_eigenvalues_) { if (!real_eigenvalues_) {
const double ensure_real_eigenvalues = options_.get<double>("ensure_real_eigenvalues"); const double assert_real_eigenvalues = options_.get<double>("assert_real_eigenvalues");
const double tolerance = const double tolerance =
(ensure_real_eigenvalues > 0) ? ensure_real_eigenvalues : options_.get<double>("real_tolerance"); (assert_real_eigenvalues > 0) ? assert_real_eigenvalues : options_.get<double>("real_tolerance");
real_eigenvalues_ = std::make_unique<std::vector<RealType>>(eigenvalues_->size()); real_eigenvalues_ = std::make_unique<std::vector<RealType>>(eigenvalues_->size());
for (size_t ii = 0; ii < eigenvalues_->size(); ++ii) { for (size_t ii = 0; ii < eigenvalues_->size(); ++ii) {
const auto& complex_ev = (*eigenvalues_)[ii]; const auto& complex_ev = (*eigenvalues_)[ii];
...@@ -504,9 +505,9 @@ protected: ...@@ -504,9 +505,9 @@ protected:
{ {
assert(eigenvectors_ && "This should not happen!"); assert(eigenvectors_ && "This should not happen!");
if (!real_eigenvectors_) { if (!real_eigenvectors_) {
const double ensure_real_eigenvectors = options_.get<double>("ensure_real_eigenvectors"); const double assert_real_eigenvectors = options_.get<double>("assert_real_eigenvectors");
const double tolerance = const double tolerance =
(ensure_real_eigenvectors > 0) ? ensure_real_eigenvectors : options_.get<double>("real_tolerance"); (assert_real_eigenvectors > 0) ? assert_real_eigenvectors : options_.get<double>("real_tolerance");
real_eigenvectors_helper<>::compute(*this, tolerance); real_eigenvectors_helper<>::compute(*this, tolerance);
} }
} }
......
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