A question about solving a saddle point system with a direct solver
To whom it may concern, I am writing to ask about using PETSc with a direct solver to solve a linear system where a single zero-value eigenvalue exists. Currently, I am working on developing a finite-element solver for a linearized incompressible MHD equation. The code is based on an open-source library called MFEM which has its own wrapper for PETSc and is used in my code. From analysis, I already know that the linear system (Ax=b) to be solved is a saddle point system. By using the flags "solver_pc_type svd" and "solver_pc_svd_monitor", I indeed observe it. Here is an example of an output: SVD: condition number 3.271390119581e+18, 1 of 66 singular values are (nearly) zero SVD: smallest singular values: 3.236925932523e-17 3.108788619412e-04 3.840514506502e-04 4.599292003910e-04 4.909419974671e-04 SVD: largest singular values : 4.007319935079e+00 4.027759008411e+00 4.817755760754e+00 4.176127583956e+01 1.058924751347e+02 However, What surprises me is that the numerical solutions are still relatively accurate by comparing to the exact ones (i.e. manufactured solutions) when I perform convergence tests even if I am using a direct solver (i.e. -solver_ksp_type preonly -solver_pc_type lu -solver_pc_factor_mat_solver_type mumps). My question is: Why the direct solver won't break down in this context? I understand that it won't be an issue for iterative solvers such as GMRES [1][2] but not really sure why it won't cause trouble in direct solvers. Any comments or suggestions are greatly appreciated. Best Regards, Jau-Uei Chen Reference: [1] Benzi, Michele, et al. “Numerical Solution of Saddle Point Problems.” Acta Numerica, vol. 14, May 2005, pp. 1–137. DOI.org (Crossref), https://doi.org/10.1017/S0962492904000212. [2] Elman, Howard C., et al. Finite Elements and Fast Iterative Solvers: With Applications in Incompressible Fluid Dynamics. Second edition, Oxford University Press, 2014.
You can get lucky with null spaces even with factorization preconditioners, especially if the right hand side is orthogonal to the null space. But it's fragile and you shouldn't rely on that being true as you change the problem. You can either remove the null space in your problem formulation (maybe) or use iterative solvers/fieldsplit preconditioning (which can use a direct solver on nonsingular blocks). Jau-Uei Chen <[email protected]> writes:
To whom it may concern,
I am writing to ask about using PETSc with a direct solver to solve a linear system where a single zero-value eigenvalue exists.
Currently, I am working on developing a finite-element solver for a linearized incompressible MHD equation. The code is based on an open-source library called MFEM which has its own wrapper for PETSc and is used in my code. From analysis, I already know that the linear system (Ax=b) to be solved is a saddle point system. By using the flags "solver_pc_type svd" and "solver_pc_svd_monitor", I indeed observe it. Here is an example of an output:
SVD: condition number 3.271390119581e+18, 1 of 66 singular values are (nearly) zero SVD: smallest singular values: 3.236925932523e-17 3.108788619412e-04 3.840514506502e-04 4.599292003910e-04 4.909419974671e-04 SVD: largest singular values : 4.007319935079e+00 4.027759008411e+00 4.817755760754e+00 4.176127583956e+01 1.058924751347e+02
However, What surprises me is that the numerical solutions are still relatively accurate by comparing to the exact ones (i.e. manufactured solutions) when I perform convergence tests even if I am using a direct solver (i.e. -solver_ksp_type preonly -solver_pc_type lu -solver_pc_factor_mat_solver_type mumps). My question is: Why the direct solver won't break down in this context? I understand that it won't be an issue for iterative solvers such as GMRES [1][2] but not really sure why it won't cause trouble in direct solvers.
Any comments or suggestions are greatly appreciated.
Best Regards, Jau-Uei Chen
Reference: [1] Benzi, Michele, et al. “Numerical Solution of Saddle Point Problems.” Acta Numerica, vol. 14, May 2005, pp. 1–137. DOI.org (Crossref), https://doi.org/10.1017/S0962492904000212. [2] Elman, Howard C., et al. Finite Elements and Fast Iterative Solvers: With Applications in Incompressible Fluid Dynamics. Second edition, Oxford University Press, 2014.
I see. Thanks so much for the comment. On Mon, Oct 24, 2022 at 10:47 AM Jed Brown <[email protected]> wrote:
You can get lucky with null spaces even with factorization preconditioners, especially if the right hand side is orthogonal to the null space. But it's fragile and you shouldn't rely on that being true as you change the problem. You can either remove the null space in your problem formulation (maybe) or use iterative solvers/fieldsplit preconditioning (which can use a direct solver on nonsingular blocks).
Jau-Uei Chen <[email protected]> writes:
To whom it may concern,
I am writing to ask about using PETSc with a direct solver to solve a linear system where a single zero-value eigenvalue exists.
Currently, I am working on developing a finite-element solver for a linearized incompressible MHD equation. The code is based on an open-source library called MFEM which has its own wrapper for PETSc and is used in my code. From analysis, I already know that the linear system (Ax=b) to be solved is a saddle point system. By using the flags "solver_pc_type svd" and "solver_pc_svd_monitor", I indeed observe it. Here is an example of an output:
SVD: condition number 3.271390119581e+18, 1 of 66 singular values are (nearly) zero SVD: smallest singular values: 3.236925932523e-17 3.108788619412e-04 3.840514506502e-04 4.599292003910e-04 4.909419974671e-04 SVD: largest singular values : 4.007319935079e+00 4.027759008411e+00 4.817755760754e+00 4.176127583956e+01 1.058924751347e+02
However, What surprises me is that the numerical solutions are still relatively accurate by comparing to the exact ones (i.e. manufactured solutions) when I perform convergence tests even if I am using a direct solver (i.e. -solver_ksp_type preonly -solver_pc_type lu -solver_pc_factor_mat_solver_type mumps). My question is: Why the direct solver won't break down in this context? I understand that it won't be an issue for iterative solvers such as GMRES [1][2] but not really sure why it won't cause trouble in direct solvers.
Any comments or suggestions are greatly appreciated.
Best Regards, Jau-Uei Chen
Reference: [1] Benzi, Michele, et al. “Numerical Solution of Saddle Point Problems.” Acta Numerica, vol. 14, May 2005, pp. 1–137. DOI.org (Crossref), https://doi.org/10.1017/S0962492904000212. [2] Elman, Howard C., et al. Finite Elements and Fast Iterative Solvers: With Applications in Incompressible Fluid Dynamics. Second edition, Oxford University Press, 2014.
participants (2)
-
Jau-Uei Chen -
Jed Brown