A preconditioner based on the Uzawa algorithm for saddle-point problems of the form \(\begin{pmatrix} A & B \\ C & D \end{pmatrix} \begin{pmatrix} u\\ p \end{pmatrix} = \begin{pmatrix} f\\ g \end{pmatrix} \). More...
#include <dumux/linear/preconditioners.hh>
This preconditioner is especially suited for solving the incompressible (Navier-)Stokes equations. Here, \(D = 0\) and \(B = C^T\) if \(\rho = 1\). We do not expect good convergence if energy or mass transport is considered.
See: Benzi, M., Golub, G. H., & Liesen, J. (2005). Numerical solution of saddle point problems. Acta numerica, 14, 1-137 [benzi2005] and 
 Ho, N., Olson, S. D., & Walker, H. F. (2017). Accelerating the Uzawa algorithm. SIAM Journal on Scientific Computing, 39(5), S461-S476 [ho2017]
| M | Type of the matrix. | 
| X | Type of the update. | 
| Y | Type of the defect. | 
| l | Preconditioner block level (for compatibility reasons, unused). | 
| Public Types | |
| using | matrix_type = M | 
| The matrix type the preconditioner is for. | |
| using | domain_type = X | 
| The domain type of the preconditioner. | |
| using | range_type = Y | 
| The range type of the preconditioner. | |
| using | field_type = typename X::field_type | 
| The field type of the preconditioner. | |
| using | scalar_field_type = Dune::Simd::Scalar<field_type> | 
| Scalar type underlying the field_type. | |
| Public Member Functions | |
| SeqUzawa (const std::shared_ptr< const Dune::AssembledLinearOperator< M, X, Y > > &op, const Dune::ParameterTree ¶ms) | |
| Constructor. | |
| virtual void | pre (X &x, Y &b) | 
| Prepare the preconditioner. | |
| virtual void | apply (X &update, const Y ¤tDefect) | 
| Apply the preconditioner. | |
| virtual void | post (X &x) | 
| Clean up. | |
| virtual Dune::SolverCategory::Category | category () const | 
| Category of the preconditioner (see SolverCategory::Category) | |
| using Dumux::SeqUzawa< M, X, Y, l >::domain_type = X | 
| using Dumux::SeqUzawa< M, X, Y, l >::field_type = typename X::field_type | 
| using Dumux::SeqUzawa< M, X, Y, l >::matrix_type = M | 
| using Dumux::SeqUzawa< M, X, Y, l >::range_type = Y | 
| using Dumux::SeqUzawa< M, X, Y, l >::scalar_field_type = Dune::Simd::Scalar<field_type> | 
| 
 | inline | 
| op | The linear operator. | 
| params | Collection of parameters. | 
| 
 | inlinevirtual | 
| update | The update to be computed. | 
| currentDefect | The current defect. | 
| 
 | inlinevirtual | 
| 
 | inlinevirtual | 
| 
 | inlinevirtual |