12 linear_equation_solvers (release)
The linear_equation_solvers objects define parameters for linear equation solution strategies. For access to linear equation solvers that are not available through these parameters, expert power users may directly run the solver executable while passing command-line options for the PETSc library that will override the input parameters given here. For example, an iterative solver that we have found to be robust on a range of problem types while scaling better than direct solvers in parallel is the biconjugate gradient stabilized method using an additive Schwarz domain-decomposition preconditioner and a direct solver on subdomains. This particular choice can be activated by passing the command-line options -ksp_type bcgs -ksp_divtol 1e300 -pc_type asm -sub_ksp_type preonly -sub_pc_type lu -sub_pc_factor_mat_solver_type mumps to coreform_iga. However, specifying custom solver types this way is neither supported nor guaranteed to converge. Standard iterative solvers often encounter convergence difficulties with thin geometries subject to constraints via material interfaces or contact.
Name |
| Type |
| Description |
| Default |
label |
| STRING |
| The user defined identifier for this linear solver object. |
| |
| SUB OBJECT |
| See linked documentation |
|
Example Usage:linear_equation_solvers: [ { label: "multi_frontal", direct: { multi_frontal: { use_diagonal_scaling: true } } } ]
12.1 direct (release)
Specifies that a direct solver will be used in the linear solve.
Name |
| Type |
| Description |
| Default |
| SUB OBJECT | SUB OBJECT |
| User must define one of the given keywords that specify the type of direct solver to be used. |
|
Example Usage:direct: { multi_frontal: { use_diagonal_scaling: true } }
12.1.1 lu (release)
Specifies a direct linear solver that uses a Lower-Upper (LU) factorization.
Name |
| Type |
| Description |
| Default |
use_diagonal_scaling [optional] |
| true|false |
| If true, symmetric diagonal scaling is performed on the system before solving. For a linear system , this transforms the system into , where is unless is zero and then it is 1. This should NOT be used if the linear solver is being used by a nonlinear solver that utilizes a line-search. |
| false |
Example Usage:lu: { use_diagonal_scaling: false }
12.1.2 multi_frontal (release)
Specifies a direct linear solver that uses multifrontal factorization. This method performs LU or LDL factorizations (depending on symmetry of the linear system) on multiple subsets of the linear system. Each subset is a “front” and is essentially the transition region between the part of the system already finished and the part not touched yet. Because of this approach, the multifrontal solver typically uses considerably less memory than the LU method and, as a result, is typically faster than the LU approach. Internal testing at Coreform has found the multifrontal method to be slightly less robust than the LU method, sometimes resulting in inexplicable failures to converge.
Name |
| Type |
| Description |
| Default |
use_diagonal_scaling [optional] |
| true|false |
| If true, symmetric diagonal scaling is performed on the system before solving. For a linear system , this transforms the system into , where is unless is zero and then it is 1. This should NOT be used if the linear solver is being used by a nonlinear solver that utilizes a line-search. |
| false |
Example Usage:multi_frontal: { use_diagonal_scaling: true }