| FEAT 3
    Finite Element Analysis Toolbox | 
Quadratic penalty iteration. More...
#include <qpenalty.hpp>
 
  
| Public Types | |
| typedef IterativeSolver< VectorType > | BaseClass | 
| Our base class.  More... | |
| typedef VectorType::DataType | DataType | 
| Underlying floating point type.  More... | |
| typedef Functional_ | FunctionalType | 
| The functional type.  More... | |
| typedef Functional_::VectorTypeR | VectorType | 
| The input vector type.  More... | |
| Public Member Functions | |
| QPenalty (const QPenalty &)=delete | |
| Explicitly delete the copy constructor. | |
| QPenalty (const String §ion_name, const PropertyMap *section, FunctionalType &functional, std::shared_ptr< IterativeSolver< VectorType > > inner_solver) | |
| Constructor using a PropertyMap.  More... | |
| QPenalty (FunctionalType &functional, std::shared_ptr< IterativeSolver< VectorType > > inner_solver, DataType initial_penalty_param=DataType(1)) | |
| Constructor.  More... | |
| virtual | ~QPenalty () | 
| Virtual destructor.  More... | |
| virtual Status | apply (Vector_ &vec_cor, const Vector_ &vec_def)=0 | 
| Solver application method.  More... | |
| virtual Status | apply (VectorType &vec_cor, const VectorType &vec_def) override | 
| Solver application method.   More... | |
| DataType | calc_convergence_rate () const | 
| Computes the overall convergence rate: (defect_final / defect_initial) ^ (1 / number of iterations)  More... | |
| DataType | calc_defect_reduction () const | 
| Computes the overall defect reduction factor: (defect_final / defect_inital)  More... | |
| virtual Status | correct (VectorType &vec_sol, const VectorType &vec_rhs) override | 
| Solver correction method.   More... | |
| virtual void | done () | 
| Finalization method.  More... | |
| virtual void | done_numeric () | 
| Numeric finalization method.  More... | |
| virtual void | done_symbolic () override | 
| Symbolic initialization method.   More... | |
| virtual void | force_defect_norm_calc (bool force) | 
| Forces the calculation of defect norms in every iteration.  More... | |
| DataType | get_def_final () const | 
| Returns the final defect.  More... | |
| DataType | get_def_initial () const | 
| Returns the initial defect.  More... | |
| DataType | get_div_abs () const | 
| Returns the absolute divergence.  More... | |
| DataType | get_div_rel () const | 
| Returns the relative divergence.  More... | |
| Index | get_max_iter () const | 
| Returns the maximum number of iterations.  More... | |
| Index | get_min_iter () const | 
| Returns the minimal number of iterations.  More... | |
| Index | get_min_stag_iter () const | 
| Returns the minimum stagnation iteration count.  More... | |
| Index | get_num_iter () const | 
| Returns number of performed iterations.  More... | |
| String | get_plot_name () const | 
| Returns the plot name of the solver.  More... | |
| DataType | get_stag_rate () const | 
| Returns the stagnation rate.  More... | |
| Status | get_status () const | 
| Returns the status.  More... | |
| virtual String | get_summary () const | 
| Returns a summary string.  More... | |
| DataType | get_tol_abs () const | 
| Returns the absolute tolerance.  More... | |
| DataType | get_tol_abs_low () const | 
| Returns the lower absolute tolerance.  More... | |
| DataType | get_tol_rel () const | 
| Returns the relative tolerance.  More... | |
| virtual void | init () | 
| Initialization method.  More... | |
| virtual void | init_numeric () | 
| Numeric initialization method.  More... | |
| virtual void | init_symbolic () override | 
| Symbolic initialization method.   More... | |
| bool | is_converged () const | 
| checks for convergence  More... | |
| bool | is_converged (const DataType def_cur) const | 
| checks for convergence  More... | |
| bool | is_diverged () const | 
| checks for divergence  More... | |
| bool | is_diverged (const DataType def_cur) const | 
| checks for divergence  More... | |
| virtual String | name () const override | 
| Returns a descriptive string.   More... | |
| virtual void | plot_summary () const | 
| Plot a summary of the last solver run.  More... | |
| void | set_div_abs (DataType div_abs) | 
| Sets the absolute divergence for the solver.  More... | |
| void | set_div_rel (DataType div_rel) | 
| Sets the relative divergence for the solver.  More... | |
| void | set_initial_penalty_param (DataType initial_penalty_param) | 
| Sets the initial penalty parameter.  More... | |
| void | set_max_iter (Index max_iter) | 
| Sets the maximum iteration count for the solver.  More... | |
| void | set_min_iter (Index min_iter) | 
| Sets the minimum iteration count for the solver.  More... | |
| void | set_min_stag_iter (Index min_iter) | 
| Sets the minimum stagnate iteration count for the solver.  More... | |
| void | set_plot_interval (const Index plot_interval) | 
| Sets the interval between two plot outputs, if any.  More... | |
| void | set_plot_mode (const PlotMode plot_mode) | 
| Sets the plot mode of the solver.  More... | |
| void | set_plot_name (const String &plot_name) | 
| Sets the plot name of the solver.  More... | |
| void | set_stag_rate (DataType rate) | 
| Sets the stagnation rate for the solver.  More... | |
| void | set_tol_abs (DataType tol_abs) | 
| Sets the absolute tolerance for the solver.  More... | |
| void | set_tol_abs_low (DataType tol_abs_low) | 
| Sets the lower absolute tolerance for the solver.  More... | |
| void | set_tol_penalty (DataType tol_penalty) | 
| Sets the initial penalty parameter.  More... | |
| void | set_tol_rel (DataType tol_rel) | 
| Sets the relative tolerance for the solver.  More... | |
| Protected Member Functions | |
| virtual Status | _analyze_defect (Index num_iter, DataType def_cur, DataType def_prev, bool check_stag) | 
| Internal function: analyze the current defect.  More... | |
| virtual Status | _apply_intern (VectorType &vec_sol, const VectorType &vec_rhs) | 
| Internal function, applies the solver.  More... | |
| virtual DataType | _calc_def_norm (const VectorType &vec_def, const VectorType &vec_sol) | 
| Computes the defect norm.  More... | |
| bool | _plot_iter (Status st=Status::progress) const | 
| Plot the current iteration?  More... | |
| virtual void | _plot_iter_line (Index num_iter, DataType def_cur, DataType def_prev) | 
| Plots an iteration line.  More... | |
| bool | _plot_summary () const | 
| Plot summary?  More... | |
| void | _print_line (const String &line) const | 
| Prints a line.  More... | |
| bool | _progress () const | 
| Progress iteration?  More... | |
| void | _set_comm (const Dist::Comm *comm) | 
| Sets the communicator for the solver directly.  More... | |
| void | _set_comm_by_matrix (const Matrix_ &matrix) | 
| Sets the communicator for the solver from a matrix.  More... | |
| void | _set_comm_by_vector (const Functional_::VectorTypeR &vector) | 
| Sets the communicator for the solver from a vector.  More... | |
| Status | _set_initial_defect (const DataType def_init_) | 
| Internal function: sets the initial defect.  More... | |
| virtual Status | _set_initial_defect (const VectorType &vec_def, const VectorType &vec_sol) | 
| Makes the BaseClass' routine available, which cannot be used but shuts up the overloaded virtual warning.  More... | |
| virtual Status | _set_new_defect (const VectorType &vec_def, const VectorType &vec_sol) | 
| Internal function: sets the new (next) defect vector.  More... | |
| virtual Status | _update_defect (const DataType def_cur_norm) | 
| Internal function: sets the new (next) defect norm.  More... | |
| Protected Attributes | |
| const Dist::Comm * | _comm | 
| Communicator of the solver.  More... | |
| DataType | _def_cur | 
| current defect  More... | |
| DataType | _def_init | 
| initial defect  More... | |
| DataType | _def_prev | 
| previous iteration defect  More... | |
| DataType | _div_abs | 
| absolute divergence parameter  More... | |
| DataType | _div_rel | 
| relative divergence parameter  More... | |
| bool | _force_def_norm_calc | 
| whether skipping of defect computation is allowed or not  More... | |
| Index | _iter_digits | 
| iteration count digits for plotting  More... | |
| Index | _max_iter | 
| maximum number of iterations  More... | |
| Index | _min_iter | 
| minimum number of iterations  More... | |
| Index | _min_stag_iter | 
| minimum number of stagnation iterations  More... | |
| Index | _num_iter | 
| number of performed iterations  More... | |
| Index | _num_stag_iter | 
| number of consecutive stagnated iterations  More... | |
| Index | _plot_interval | 
| plot output interval  More... | |
| PlotMode | _plot_mode | 
| whether to plot something  More... | |
| String | _plot_name | 
| name of the solver in plots  More... | |
| DataType | _stag_rate | 
| stagnation rate  More... | |
| Status | _status | 
| current status of the solver  More... | |
| DataType | _tol_abs | 
| absolute tolerance parameter  More... | |
| DataType | _tol_abs_low | 
| absolute low tolerance parameter  More... | |
| DataType | _tol_rel | 
| relative tolerance parameter  More... | |
| Private Attributes | |
| FunctionalType & | _functional | 
| The functional that takes the penalty parameters and is assembled in the inner solver.  More... | |
| DataType | _initial_penalty_param | 
| We start with this initial penalty parameter.  More... | |
| std::shared_ptr< IterativeSolver< VectorType > > | _inner_solver | 
| The inner solver for the penalized, unconstrained optimization problem.  More... | |
| DataType | _tol_penalty | 
| Maximum value the penalty parameter is allowed to take.  More... | |
Quadratic penalty iteration.
| Functional_ | The functional (or functional) for the constrained optimization problem. | 
This class implements an outer solver for a quadratic penalty iteration. Assume we have an optimization problem of the form
\[ x^* = \mathrm{argmin}_{x \in D} f(x) ~ \mathrm{subject~to~} \forall i \in E: c_i(x) = 0 \]
\( c_i \) are equality constraints turning the minimization of \( f \) into a constrained optimization problem. To solve this constrained problem, one can solve a series of unconstrained problems with the quadratic penalty iteration by defining the quadratic penalty function
\[ Q(x,\mu) := f(x) + \frac{\mu}{2} \sum_{i \in E} c_i^2(x) \]
and solving it for a series \( (\mu_k)_k \in \mathbb{N}, \mu_k \stackrel{k \to \infty}{\longrightarrow} \infty \). Because the penalty terms are smooth, tools from unconstrained optimization can be applied (see [NW06] Chapter 17.1). The greatest advantage of this is that this needs no constraint qualifications and is still applicable if \( \mathrm{dim}( \mathrm{ker} (\nabla c_{i_1}, \dots, \nabla c_{i_M}) ) > 0 \), which is required by all more sophisticated methods like augmented Lagragian etc.
All of this means that the Functional_ \( Q \) must be assembled anew in every iteration and the inner solver needs to take care of this.
One critical part is the choice of \(\mu_k\). It needs to start small (i.e. \(\mu_1 = 1\)) because the initial state might violate the constraints quite strongly. The rate of increase has to be fast enough that the number of penalty iterations remains small (i.e. \( \leq 10 \)), but the systematic ill-conditioning of the penalty function means that we cannot be too quick about this. If the increase is too quick, the previous iterate will be too far away of a minimizer of the new problem and the inner solver will fail to converge. So take care.
Definition at line 47 of file qpenalty.hpp.
| typedef IterativeSolver<VectorType> FEAT::Solver::QPenalty< Functional_ >::BaseClass | 
Our base class.
Definition at line 57 of file qpenalty.hpp.
| typedef VectorType::DataType FEAT::Solver::QPenalty< Functional_ >::DataType | 
Underlying floating point type.
Definition at line 55 of file qpenalty.hpp.
| typedef Functional_ FEAT::Solver::QPenalty< Functional_ >::FunctionalType | 
The functional type.
Definition at line 51 of file qpenalty.hpp.
| typedef Functional_::VectorTypeR FEAT::Solver::QPenalty< Functional_ >::VectorType | 
The input vector type.
Definition at line 53 of file qpenalty.hpp.
| 
 | inlineexplicit | 
Constructor.
| [in] | functional | The functional for the inner constrained optimization problem. | 
| [in] | inner_solver | The solver for the inner penalized unconstrained optimization problem. | 
| [in] | initial_penalty_param | The starting penalty parameter, defaults to 1. | 
Definition at line 82 of file qpenalty.hpp.
References FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_set_comm_by_matrix().
| 
 | inlineexplicit | 
Constructor using a PropertyMap.
| Functional_ | The type of the quadratic penalty function \( Q \). | 
| [in] | section_name | The name of the config section, which it does not know by itself. | 
| [in] | section | A pointer to the PropertyMap section configuring this solver. | 
| [in] | functional | The quadratic penalty function \( Q \). | 
| [in] | inner_solver | The inner solver for solving the penalized unconstrained optimization problem. | 
Definition at line 112 of file qpenalty.hpp.
References FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_set_comm_by_matrix(), FEAT::PropertyMap::query(), FEAT::Solver::QPenalty< Functional_ >::set_initial_penalty_param(), and FEAT::Solver::QPenalty< Functional_ >::set_tol_penalty().
| 
 | inlinevirtual | 
Virtual destructor.
Definition at line 142 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_inner_solver.
| 
 | inlineprotectedvirtualinherited | 
Internal function: analyze the current defect.
| [in] | num_iter | Current number of iterations; usually = this->_num_iter. | 
| [in] | def_cur | Current defect norm; usually = this->_def_cur. | 
| [in] | def_prev | Previous defect norm; usually = this->_def_prev. | 
| [in] | check_stag | Specifies whether to check (and update) the stagnation criterion. This is typically set to falseif one wants to check anything else than the 'true' next defect norm. | 
Definition at line 866 of file iterative.hpp.
| 
 | inlineprotectedvirtual | 
Internal function, applies the solver.
| [in,out] | vec_sol | The initial guess, gets overwritten by the solution | 
| [in] | vec_rhs | The right-hand side. | 
Definition at line 226 of file qpenalty.hpp.
References FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_def_cur, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_def_init, FEAT::Solver::QPenalty< Functional_ >::_functional, FEAT::Solver::QPenalty< Functional_ >::_inner_solver, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_iter_digits, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_max_iter, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_min_iter, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_num_iter, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_plot_iter(), FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_plot_name, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_print_line(), FEAT::Solver::QPenalty< Functional_ >::_set_initial_defect(), FEAT::Solver::QPenalty< Functional_ >::_tol_penalty, FEAT::Solver::aborted, FEAT::Solver::diverged, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::get_num_iter(), FEAT::Math::ilog10(), FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::is_converged(), FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::is_diverged(), FEAT::Math::isfinite(), FEAT::Math::max(), FEAT::Solver::max_iter, FEAT::Solver::QPenalty< Functional_ >::name(), FEAT::String::pad_front(), FEAT::Solver::progress, FEAT::Math::sqr(), FEAT::Solver::stagnated, FEAT::stringify(), FEAT::stringify_fp_sci(), FEAT::Solver::success, and FEAT::Solver::undefined.
Referenced by FEAT::Solver::QPenalty< Functional_ >::apply(), and FEAT::Solver::QPenalty< Functional_ >::correct().
| 
 | inlineprotectedvirtualinherited | 
Computes the defect norm.
| [in] | vec_def | The current defect vector. | 
| [in] | vec_sol | The current solution vector approximation. | 
Definition at line 706 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Plot the current iteration?
| [in] | st | The status of the current iteration. | 
true if the plot mode is set to iter or all and the plot interval matches or the solver does not continue to the next iteration Definition at line 720 of file iterative.hpp.
| 
 | inlineprotectedvirtualinherited | 
Plots an iteration line.
| [in] | num_iter | Current number of iterations; usually = this->_num_iter. | 
| [in] | def_cur | Current defect norm; usually = this->_def_cur. | 
| [in] | def_prev | Previous defect norm; usually = this->_def_prev. | 
Definition at line 773 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Plot summary?
true if the plot mode is set to summary or all. Definition at line 731 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Prints a line.
| [in] | line | The line to be printed. | 
Definition at line 752 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Progress iteration?
true if the solver should process, otherwise false. Definition at line 741 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Sets the communicator for the solver directly.
| [in] | comm | A pointer to the communicator that is to be used by the solver. | 
Definition at line 667 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Sets the communicator for the solver from a matrix.
| [in] | matrix | A reference to a matrix. If 'Matrix_' is a 'Global::Matrix', then the communicator of the matrix gate is taken. | 
Definition at line 680 of file iterative.hpp.
| 
 | inlineprotectedinherited | 
Sets the communicator for the solver from a vector.
| [in] | vector | A reference to a vector. If 'Vector_' is a 'Global::Vector', then the communicator of the vector gate is taken. | 
Definition at line 692 of file iterative.hpp.
| 
 | inlineprotected | 
Internal function: sets the initial defect.
| [in] | def_init_ | The initial constraint violation. | 
Definition at line 331 of file qpenalty.hpp.
References FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_def_cur, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_def_init, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_iter_digits, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_num_iter, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_num_stag_iter, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_plot_iter(), FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_plot_name, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_print_line(), FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_tol_abs, FEAT::Solver::aborted, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::get_num_iter(), FEAT::Math::isfinite(), FEAT::Solver::QPenalty< Functional_ >::name(), FEAT::String::pad_front(), FEAT::Solver::progress, FEAT::stringify(), FEAT::stringify_fp_sci(), and FEAT::Solver::success.
Referenced by FEAT::Solver::QPenalty< Functional_ >::_apply_intern().
| 
 | inlineprotectedvirtual | 
Makes the BaseClass' routine available, which cannot be used but shuts up the overloaded virtual warning.
Reimplemented from FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >.
Definition at line 802 of file iterative.hpp.
| 
 | inlineprotectedvirtualinherited | 
Internal function: sets the new (next) defect vector.
This function computes the defect vector's norm, increments the iteration count, plots an output line to std::cout and checks whether any of the stopping criterions is fulfilled.
| [in] | vec_def | The new defect vector. | 
| [in] | vec_sol | The current solution vector approximation. | 
Definition at line 924 of file iterative.hpp.
| 
 | inlineprotectedvirtualinherited | 
Internal function: sets the new (next) defect norm.
This function takes a pre-calculated defect vector norm, increments the iteration count, plots an output line to std::cout and checks whether any of the stopping criterions is fulfilled.
| [in] | def_cur_norm | The new defect norm. | 
Definition at line 970 of file iterative.hpp.
| 
 | pure virtualinherited | 
Solver application method.
This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.
correct() method which corrects an initial solution instead of starting with the null vector.| [out] | vec_cor | The vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method. | 
| [in] | vec_def | The vector that represents the right-hand-side of the linear system to be solved. | 
Implemented in FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::CuSolverLU, FEAT::Solver::CuSolverQR, FEAT::Solver::ScalePrecond< Vector_, Filter_ >, FEAT::Solver::DiagonalPrecond< Vector_, Filter_ >, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NLOptPrecond< VectorType_, FilterType_ >, FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, and FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >.
Referenced by FEAT::Solver::solve().
| 
 | inlineoverridevirtual | 
Solver application method.
This method applies the solver represented by this object onto a given defect vector and returns the corresponding correction vector.
correct() method which corrects an initial solution instead of starting with the null vector.| [out] | vec_cor | The vector that shall receive the solution of the linear system. It is assumed to be allocated, but its numerical contents may be undefined upon calling this method. | 
| [in] | vec_def | The vector that represents the right-hand-side of the linear system to be solved. | 
Definition at line 188 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), FEAT::Solver::QPenalty< Functional_ >::_functional, FEAT::Solver::QPenalty< Functional_ >::_initial_penalty_param, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_status, and FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::plot_summary().
| 
 | inlineinherited | 
Computes the overall convergence rate: (defect_final / defect_initial) ^ (1 / number of iterations)
Definition at line 582 of file iterative.hpp.
| 
 | inlineinherited | 
Computes the overall defect reduction factor: (defect_final / defect_inital)
Definition at line 597 of file iterative.hpp.
| 
 | inlineoverridevirtual | 
Solver correction method.
This method applies the solver represented by this object onto a given right-hand-side vector and updates the corresponding solution vector.
In contrast to the apply() method of the SolverBase base class, this method uses the vector vec_sol as the initial solution vector for the iterative solution process instead of ignoring its contents upon entry and starting with the null vector.
| [in,out] | vec_sol | The vector that contains the initial solution upon entry and receives the solution of the linear system upon exit. | 
| [in] | vec_rhs | The vector that represents the right-hand-side of the linear system to be solved. | 
Implements FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >.
Definition at line 202 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), FEAT::Solver::QPenalty< Functional_ >::_functional, FEAT::Solver::QPenalty< Functional_ >::_initial_penalty_param, FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::_status, and FEAT::Solver::IterativeSolver< Functional_::VectorTypeR >::plot_summary().
| 
 | inlinevirtualinherited | 
Finalization method.
This function performs both the symbolic and numeric finalization, i.e. it simply performs
this->done_numeric(); this->done_symbolic();
Definition at line 283 of file base.hpp.
References FEAT::Solver::SolverBase< Vector_ >::done_numeric(), and FEAT::Solver::SolverBase< Vector_ >::done_symbolic().
| 
 | inlinevirtualinherited | 
Numeric finalization method.
This method is called to release any data allocated in the numeric initialization step.
Reimplemented in FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, FEAT::Solver::CUDSS, FEAT::Solver::DirectStokesSolver< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, LAFEM::TupleFilter< FilterV_, FilterP_ > >, FEAT::Solver::DirectStokesSolver< Global::Matrix< LocalMatrix_, Mirror_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, FEAT::Solver::BoomerAMG< Matrix_, Filter_ >, FEAT::Solver::PreconditionedIterativeSolver< Vector_ >, FEAT::Solver::PreconditionedIterativeSolver< Matrix_::VectorTypeR >, FEAT::Solver::PreconditionedIterativeSolver< Functional_::VectorTypeR >, FEAT::Solver::MKLDSS, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::PCGNR< Matrix_, Filter_ >, FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::Umfpack, FEAT::Solver::UmfpackMean, FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >, FEAT::Solver::GenericUmfpack< Matrix_ >, FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >.
Definition at line 246 of file base.hpp.
Referenced by FEAT::Solver::SolverBase< Vector_ >::done(), FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric(), FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >::done_numeric(), FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >::done_numeric(), FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::PreconditionedIterativeSolver< Vector_ >::done_numeric(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::done_numeric(), FEAT::Solver::PCGNR< Matrix_, Filter_ >::done_numeric(), FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::done_numeric(), FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::done_numeric(), and FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::done_numeric().
| 
 | inlineoverridevirtual | 
Symbolic initialization method.
This method is called to perform symbolic initialization of the solver.
Reimplemented from FEAT::Solver::SolverBase< Vector_ >.
Definition at line 161 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_inner_solver, and FEAT::Solver::SolverBase< Vector_ >::done_symbolic().
| 
 | inlinevirtualinherited | 
Forces the calculation of defect norms in every iteration.
| [in] | force | Specifies whether defect norm computation is to be enforced in every iteration | 
Definition at line 490 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the final defect.
Definition at line 570 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the initial defect.
Definition at line 564 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the absolute divergence.
Definition at line 419 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the relative divergence.
Definition at line 413 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the maximum number of iterations.
Definition at line 474 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the minimal number of iterations.
Definition at line 468 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the minimum stagnation iteration count.
Definition at line 443 of file iterative.hpp.
| 
 | inlineinherited | 
Returns number of performed iterations.
Definition at line 462 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the plot name of the solver.
Definition at line 523 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the stagnation rate.
Definition at line 431 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the status.
Definition at line 576 of file iterative.hpp.
| 
 | inlinevirtualinherited | 
Returns a summary string.
Reimplemented in FEAT::Solver::Linesearch< Functional_, Filter_ >.
Definition at line 610 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the absolute tolerance.
Definition at line 389 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the lower absolute tolerance.
Definition at line 395 of file iterative.hpp.
| 
 | inlineinherited | 
Returns the relative tolerance.
Definition at line 383 of file iterative.hpp.
| 
 | inlinevirtualinherited | 
Initialization method.
This function performs both the symbolic and numeric initialization, i.e. it simply performs
this->init_symbolic(); this->init_numeric();
Definition at line 268 of file base.hpp.
References FEAT::Solver::SolverBase< Vector_ >::init_numeric(), and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().
| 
 | inlinevirtualinherited | 
Numeric initialization method.
This method is called to perform numeric initialization of the solver.
Before this function can be called, the symbolic initialization must be performed. 
Reimplemented in FEAT::Solver::AmaVanka< Matrix_, Filter_ >, FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::Chebyshev< Matrix_, Filter_ >, FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >, FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >, FEAT::Solver::CUDSS, FEAT::Solver::DirectStokesSolver< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, LAFEM::TupleFilter< FilterV_, FilterP_ > >, FEAT::Solver::DirectStokesSolver< Global::Matrix< LocalMatrix_, Mirror_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >, FEAT::Solver::ParaSailsPrecond< Matrix_, Filter_ >, FEAT::Solver::EuclidPrecond< Matrix_, Filter_ >, FEAT::Solver::BoomerAMG< Matrix_, Filter_ >, FEAT::Solver::ILUPrecond< Matrix_, Filter_ >, FEAT::Solver::PreconditionedIterativeSolver< Vector_ >, FEAT::Solver::PreconditionedIterativeSolver< Matrix_::VectorTypeR >, FEAT::Solver::PreconditionedIterativeSolver< Functional_::VectorTypeR >, FEAT::Solver::JacobiPrecond< Matrix_, Filter_ >, FEAT::Solver::MatrixPrecond< Matrix_, Filter_ >, FEAT::Solver::MKLDSS, FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >, FEAT::Solver::NonlinearOperatorPrecondWrapper< NonlinearOperator_ >, FEAT::Solver::PCGNR< Matrix_, Filter_ >, FEAT::Solver::PCGNRILU< Matrix_, Filter_ >, FEAT::Solver::PolynomialPrecond< Matrix_, Filter_ >, FEAT::Solver::SchwarzPrecond< Global::Vector< LocalVector_, Mirror_ >, Global::Filter< LocalFilter_, Mirror_ > >, FEAT::Solver::SuperLU< Matrix_, Filter_ >, FEAT::Solver::Umfpack, FEAT::Solver::UmfpackMean, FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >, FEAT::Solver::GenericUmfpack< Matrix_ >, FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >, FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >, FEAT::Solver::Vanka< LAFEM::SaddlePointMatrix< MatrixA_, MatrixB_, MatrixD_ >, Filter_ >, and FEAT::Solver::VoxelAmaVanka< Matrix_, Filter_, pol_threading_, macro_type_ >.
Definition at line 237 of file base.hpp.
Referenced by FEAT::Solver::SolverBase< Vector_ >::init(), FEAT::Solver::BFBT< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::init_numeric(), FEAT::Solver::BFBT< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::init_numeric(), FEAT::Solver::Chebyshev< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::ConvertPrecond< VectorOuter_, VectorInner_ >::init_numeric(), FEAT::Solver::ConvertPrecond< Global::Vector< LocalVectorOuter_, MirrorOuter_ >, Global::Vector< LocalVectorInner_, MirrorInner_ > >::init_numeric(), FEAT::Solver::HypreSolverBase< Matrix_, Filter_, SolverBase_ >::init_numeric(), FEAT::Solver::PreconditionedIterativeSolver< Vector_ >::init_numeric(), FEAT::Solver::MultiGrid< SystemMatrix_, SystemFilter_, TransferOperator_ >::init_numeric(), FEAT::Solver::PCGNR< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::PCGNRILU< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::SuperLU< Matrix_, Filter_ >::init_numeric(), FEAT::Solver::SaddleUmfpackMean< DT_, IT_, dim_ >::init_numeric(), FEAT::Solver::UzawaPrecond< MatrixA_, MatrixB_, MatrixD_, FilterV_, FilterP_ >::init_numeric(), FEAT::Solver::UzawaPrecond< Global::Matrix< MatrixA_, MirrorV_, MirrorV_ >, Global::Matrix< MatrixB_, MirrorV_, MirrorP_ >, Global::Matrix< MatrixD_, MirrorP_, MirrorV_ >, Global::Filter< FilterV_, MirrorV_ >, Global::Filter< FilterP_, MirrorP_ > >::init_numeric(), and FEAT::Solver::VoxelAmaVanka< Matrix_, Filter_, pol_threading_, macro_type_ >::init_numeric().
| 
 | inlineoverridevirtual | 
Symbolic initialization method.
This method is called to perform symbolic initialization of the solver.
Reimplemented from FEAT::Solver::SolverBase< Vector_ >.
Definition at line 154 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_inner_solver, and FEAT::Solver::SolverBase< Vector_ >::init_symbolic().
| 
 | inlineinherited | 
checks for convergence
true, if converged, else false Definition at line 533 of file iterative.hpp.
| 
 | inlineinherited | 
checks for convergence
| [in] | def_cur | The defect norm that is to be analyzed | 
true, if converged, else false Definition at line 546 of file iterative.hpp.
| 
 | inlineinherited | 
checks for divergence
Definition at line 552 of file iterative.hpp.
| 
 | inlineinherited | 
checks for divergence
Definition at line 558 of file iterative.hpp.
| 
 | inlineoverridevirtual | 
Returns a descriptive string.
Implements FEAT::Solver::SolverBase< Vector_ >.
Definition at line 148 of file qpenalty.hpp.
Referenced by FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), and FEAT::Solver::QPenalty< Functional_ >::_set_initial_defect().
| 
 | inlinevirtualinherited | 
Plot a summary of the last solver run.
Definition at line 627 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the absolute divergence for the solver.
Definition at line 407 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the relative divergence for the solver.
Definition at line 401 of file iterative.hpp.
| 
 | inline | 
Sets the initial penalty parameter.
Definition at line 170 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_initial_penalty_param, and XASSERT.
Referenced by FEAT::Solver::QPenalty< Functional_ >::QPenalty().
| 
 | inlineinherited | 
Sets the maximum iteration count for the solver.
Definition at line 455 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the minimum iteration count for the solver.
Definition at line 449 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the minimum stagnate iteration count for the solver.
Definition at line 437 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the interval between two plot outputs, if any.
| [in] | plot_interval | The desired interval of iteration plots | 
Definition at line 511 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the plot mode of the solver.
| [in] | plot_mode | The desired plot mode | 
Definition at line 501 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the plot name of the solver.
Definition at line 517 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the stagnation rate for the solver.
Definition at line 425 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the absolute tolerance for the solver.
Definition at line 371 of file iterative.hpp.
| 
 | inlineinherited | 
Sets the lower absolute tolerance for the solver.
Definition at line 377 of file iterative.hpp.
| 
 | inline | 
Sets the initial penalty parameter.
Definition at line 180 of file qpenalty.hpp.
References FEAT::Solver::QPenalty< Functional_ >::_tol_penalty, and XASSERT.
Referenced by FEAT::Solver::QPenalty< Functional_ >::QPenalty().
| 
 | inlineinherited | 
Sets the relative tolerance for the solver.
Definition at line 365 of file iterative.hpp.
| 
 | protectedinherited | 
Communicator of the solver.
Definition at line 209 of file iterative.hpp.
| 
 | protectedinherited | 
current defect
Definition at line 239 of file iterative.hpp.
| 
 | protectedinherited | 
initial defect
Definition at line 237 of file iterative.hpp.
| 
 | protectedinherited | 
previous iteration defect
Definition at line 241 of file iterative.hpp.
| 
 | protectedinherited | 
absolute divergence parameter
Definition at line 223 of file iterative.hpp.
| 
 | protectedinherited | 
relative divergence parameter
Definition at line 221 of file iterative.hpp.
| 
 | protectedinherited | 
whether skipping of defect computation is allowed or not
Definition at line 249 of file iterative.hpp.
| 
 | private | 
The functional that takes the penalty parameters and is assembled in the inner solver.
Definition at line 61 of file qpenalty.hpp.
Referenced by FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), FEAT::Solver::QPenalty< Functional_ >::apply(), and FEAT::Solver::QPenalty< Functional_ >::correct().
| 
 | private | 
We start with this initial penalty parameter.
Definition at line 65 of file qpenalty.hpp.
Referenced by FEAT::Solver::QPenalty< Functional_ >::apply(), FEAT::Solver::QPenalty< Functional_ >::correct(), and FEAT::Solver::QPenalty< Functional_ >::set_initial_penalty_param().
| 
 | private | 
The inner solver for the penalized, unconstrained optimization problem.
Definition at line 63 of file qpenalty.hpp.
Referenced by FEAT::Solver::QPenalty< Functional_ >::~QPenalty(), FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), FEAT::Solver::QPenalty< Functional_ >::done_symbolic(), and FEAT::Solver::QPenalty< Functional_ >::init_symbolic().
| 
 | protectedinherited | 
iteration count digits for plotting
Definition at line 243 of file iterative.hpp.
| 
 | protectedinherited | 
maximum number of iterations
Definition at line 229 of file iterative.hpp.
| 
 | protectedinherited | 
minimum number of iterations
Definition at line 227 of file iterative.hpp.
| 
 | protectedinherited | 
minimum number of stagnation iterations
Definition at line 233 of file iterative.hpp.
| 
 | protectedinherited | 
number of performed iterations
Definition at line 231 of file iterative.hpp.
| 
 | protectedinherited | 
number of consecutive stagnated iterations
Definition at line 235 of file iterative.hpp.
| 
 | protectedinherited | 
plot output interval
Definition at line 247 of file iterative.hpp.
| 
 | protectedinherited | 
whether to plot something
Definition at line 245 of file iterative.hpp.
| 
 | protectedinherited | 
name of the solver in plots
Definition at line 211 of file iterative.hpp.
| 
 | protectedinherited | 
stagnation rate
Definition at line 225 of file iterative.hpp.
| 
 | protectedinherited | 
current status of the solver
Definition at line 213 of file iterative.hpp.
| 
 | protectedinherited | 
absolute tolerance parameter
Definition at line 217 of file iterative.hpp.
| 
 | protectedinherited | 
absolute low tolerance parameter
Definition at line 219 of file iterative.hpp.
| 
 | private | 
Maximum value the penalty parameter is allowed to take.
Definition at line 67 of file qpenalty.hpp.
Referenced by FEAT::Solver::QPenalty< Functional_ >::_apply_intern(), and FEAT::Solver::QPenalty< Functional_ >::set_tol_penalty().
| 
 | protectedinherited | 
relative tolerance parameter
Definition at line 215 of file iterative.hpp.