# 7.3.1. Tpetra Solver Block

## 7.3.1.1. Tpetra Equation Solver

Scope

  Sierra

Summary

  Use a Tpetra-based linear solver.

Description

  If the linear solve fails it will report an error code. While these codes are not universally standardized across linear solvers, they can generally be interpreted with the following rules:

  - Error 1 (or -1): The linear solver reached the maximum number of linear solver iterations and did not reach a solution. Check the final linear solver residual to see if this is serious or not. Even if the error is not serious (residuals are small) this usually means the solve is much more expensive than necessary and a better solver/preconditioner combination should be used.

  - Error 2 (or -2, 4, -4, 5, -5): The linear solver encountered a fatal internal error. This is often because of a singular matrix or a NaN or Infinite term. This is almost always a serious error.

  - Error 3 (or -3): The linear solver had an internal loss of precision. This is often not a serious error, but may indicate the need for a better solver/preconditioner combination. As always, check the final linear solver residual reported in the log file to determine if it is serious or not.

    begin Tpetra Equation Solver Solver Name

       Bc Enforcement {=} {exact | exact_no_column_mod | remove | solver | solver_no_column_mod}

       Failed Solve Matrix Output {=} value

       Matrix Output {=} value

       Matrix Output Time Range {=} value1[ value2]

       Matrix Scaling {=} {diagonal | one_norm}

       begin Bicgstab Solver
       end

       begin Cg Solver
       end

       begin Expert Belos Solver
       end

       begin Flexible Gmres Solver
       end

       begin Gcrodr Solver
       end

       begin Gmres Solver
       end

       begin Klu2 Solver
       end

       begin Poly Solver
       end

       begin Preset Solver
       end

       begin Superlu Solver
       end

       begin Umfpack Solver
       end

    end Tpetra Equation Solver Solver Name

### 7.3.1.1.1. Line Commands

###### Bc Enforcement

Syntax

  Bc Enforcement {=} {exact | exact_no_column_mod | remove | solver | solver_no_column_mod}

Summary

  Control how Dirichlet BC’s are enforced. Fuego only.

Parameter | Value | Default
--- | --- | ---
{=} | {= | are | is} | –
value | {exact | exact_no_column_mod | remove | solver | solver_no_column_mod} | –

###### Failed Solve Matrix Output

Syntax

  Failed Solve Matrix Output {=} value

Summary

  On a failed linear solve, output the matrix to the specified file name.

Parameter | Value | Default
--- | --- | ---
{=} | {= | are | is} | –
value | string | –

###### Matrix Output

Syntax

  Matrix Output {=} value

Summary

  Output the matrix to the specified file name.

Parameter | Value | Default
--- | --- | ---
{=} | {= | are | is} | –
value | string | –

###### Matrix Output Time Range

Syntax

  Matrix Output Time Range {=} value1[ value2]

Summary

  Range of simulation time to output the matrix to file, default is dump out all matrices per step.

Parameter | Value | Default
--- | --- | ---
{=} | {= | are | is} | –
value | real1[ real2] | –

###### Matrix Scaling

Syntax

  Matrix Scaling {=} {diagonal | one_norm}

Summary

  Apply a pre-solve scaling to the matrix.

Description

  In some problems scaling the matrix prior to the linear solve can help reduce the condition number of the matrix. This should be used in addition to an appropriate preconditioner.

Parameter | Value | Default
--- | --- | ---
{=} | {= | are | is} | –
value | {diagonal | one_norm} | –