From: Martin Kronbichler Date: Tue, 24 Nov 2020 16:45:46 +0000 (+0100) Subject: Update some comments in PreconditionChebyhsev::estimate_eigenvalues X-Git-Tag: v9.3.0-rc1~853^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39bf36124a510aee6ac37ee88863dedf24288145;p=dealii.git Update some comments in PreconditionChebyhsev::estimate_eigenvalues --- diff --git a/include/deal.II/lac/precondition.h b/include/deal.II/lac/precondition.h index 68fce93ae8..cebff5da61 100644 --- a/include/deal.II/lac/precondition.h +++ b/include/deal.II/lac/precondition.h @@ -2277,9 +2277,6 @@ PreconditionChebyshev:: solution_old.reinit(src); temp_vector1.reinit(src, true); - // calculate largest eigenvalue using a hand-tuned CG iteration on the - // matrix weighted by its diagonal. we start with a vector that consists of - // ones only, weighted by the length. if (data.eig_cg_n_iterations > 0) { Assert(data.eig_cg_n_iterations > 2, @@ -2303,8 +2300,9 @@ PreconditionChebyshev:: eigenvalue_tracker.slot(eigenvalues); }); - // set an initial guess which is close to the constant vector but where - // one entry is different to trigger high frequencies + // set an initial guess that contains some high-frequency parts (to the + // extent possible without knowing the discretization and the numbering) + // to trigger high eigenvalues according to the external function internal::PreconditionChebyshevImplementation::set_initial_guess( temp_vector1); data.constraints.set_zero(temp_vector1); @@ -2362,10 +2360,10 @@ PreconditionChebyshev:: 1 + static_cast( std::log(1. / eps + std::sqrt(1. / eps / eps - 1.)) / std::log(1. / sigma)); - - info.degree = data.degree; } + info.degree = data.degree; + const_cast< PreconditionChebyshev *>(this) ->delta = (info.max_eigenvalue_estimate - alpha) * 0.5;